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