@expofp/floorplan
Version:
Interactive floor plan library for expos and events
2 lines (1 loc) • 1.42 kB
JavaScript
import n,{uiState as e}from"../../store";import{LayerMode as f}from"../../store/LayerStore";import{poiMarkerHitTest as p}from"../Maplibre/utils/poi-marker-hit-test";import d from"./booth-by-xy";export function setPlanClickListener(o){u=o}export function setMarkerResolver(o){c=o}export function rememberBoothShapes(o,r){for(const t of r)a.set(t,o)}export function boothOfShape(o){return a.get(o)??null}export function hoverBooth(o){e.setKioskModeEnabled||(o.stopPropagation(),e.hoveredBooth=l(o.point,o.def))}export function clearHoveredBooth(){e.setKioskModeEnabled||(e.hoveredBooth=null)}export function selectBooth(o){o.stopPropagation(),s(o.point,o.nativeEvent)&&n.clickBooth(l(o.point,o.def))}export function clearSelection(o){s(o.point,o.nativeEvent)&&n.clickBooth(l(o.point))}function l(o,r){const t=r?boothOfShape(r):null;return t||d(o.x,o.y)}function s(o,r){if(!e.rootElement)return!1;if(resetExternalOverlay(),u?.(o),e.overlayPosition==="bottom"&&e.overlaySize==="full"&&n.showMap(),e.onGetCoordsClick){const t=n.layerStore.layers.find(i=>i.visible&&(i.mode===f.TurnedOn||i.mode===f.TurnedOff));e.onGetCoordsClick({x:o.x,y:o.y,z:t?.name||null})}if(e.setKioskModeEnabled||p.test(r.clientX,r.clientY))return!1;if(e.onMarkerClick){const t=c?.(o.x,o.y)??null;e.onMarkerClick(t)}return!0}export function resetExternalOverlay(){if(typeof window>"u")return;const o=window.__resett;o?.()}const a=new WeakMap;let c,u;