@expofp/floorplan
Version:
Interactive floor plan library for expos and events
2 lines (1 loc) • 1.57 kB
JavaScript
import{useEffect as g}from"react";import{pickDefaultScene as p}from"../../renderer/engine-core/defs";import c,{uiState as t}from"../../store";import{LayerMode as h}from"../../store/LayerStore";import k from"../Map/booth-by-xy";import{getMarkerFromClick as y}from"../Map/drawing/config/config-markers";import{getBooth as E}from"./utils/layer-defs";import{poiMarkerHitTest as L}from"./utils/poi-marker-hit-test";const C=t;export function useRendererEvents(e,m){g(()=>{if(!e)return;const v=({data:r})=>{if(t.setKioskModeEnabled)return;const{point:o,defs:s}=p(r),n=k(o.x,o.y),i=E(s[0]);C.hoveredBooth=n||i||null},f=()=>{t.setKioskModeEnabled||(C.hoveredBooth=null)},d=({data:r})=>{if(!t?.rootElement)return;window.__resett?.(),t.overlayPosition==="bottom"&&t.overlaySize==="full"&&c.showMap();const{point:o,defs:s}=p(r),{x:n,y:i}=o;if(t.onGetCoordsClick){const l=c.layerStore.layers.find(a=>a.visible&&(a.mode===h.TurnedOn||a.mode===h.TurnedOff));t.onGetCoordsClick({x:n,y:i,z:l?.name||null})}if(t.setKioskModeEnabled||L.test(n,i))return;const M=k(o.x,o.y)||E(s[0]);if(t.onMarkerClick){const l=y(n,i,m.scale);t.onMarkerClick(l)}c.clickBooth(M||null)},u=()=>window.__resett?.();return e.events.addEventListener("pointer:move",v),e.events.addEventListener("pointer:out",f),e.events.addEventListener("pointer:click",d),e.events.addEventListener("navigation:change",u),()=>{e.events.removeEventListener("pointer:move",v),e.events.removeEventListener("pointer:out",f),e.events.removeEventListener("pointer:click",d),e.events.removeEventListener("navigation:change",u)}},[e,m])}