mapview_popup.mjs

/**
## Mapview.popup()

@module /mapview/popup

@param {Object} params
The params object argument.
*/

const popup = {};

export default function (params) {
  if (typeof params === 'undefined') {
    // Returns undefined / falsy if popup.node has been removed.
    return popup.node?.parentNode;
  }

  const mapview = this;

  // Remove a current tooltip.
  mapview.infotip(null);

  // Remove infotip node element
  popup.node?.remove();

  // Just clears the infotip.
  if (!params) return;

  popup.node = mapp.utils.html.node`<div class="popup box-shadow">`;

  popup.node.appendChild(params.content);

  popup.overlay && mapview.Map.removeOverlay(popup.overlay);

  popup.overlay = new ol.Overlay({
    element: popup.node,
    position: params.coords || mapview.position,
    positioning: 'bottom-center',
    autoPan: params.autoPan,
    insertFirst: true,
    autoPanAnimation: {
      duration: 250,
    },
  });

  mapview.Map.addOverlay(popup.overlay);
}