@expofp/floorplan
Version:
Interactive floor plan library for expos and events
2 lines (1 loc) • 900 B
JavaScript
import{useDebugPanel as m,useViewport as v}from"@expofp/renderer";import{useCallback as l,useEffect as p,useEffectEvent as E}from"react";import L from"../../store";import{LayerMode as u}from"../../store/LayerStore";const a=2;export function MapCursorCoords(r){const{canvas:e}=r,o=v(),s=m(),i=l(()=>s("cursor",void 0),[s]),f=E(n=>{if(!n.isPrimary)return;const t=o.canvasToPlan({x:n.offsetX,y:n.offsetY});s("cursor",t?x(t,b()):void 0)});return p(()=>{const n=e.current;if(!n)return;const t=d=>f(d),c=()=>i();return n.addEventListener("pointermove",t),n.addEventListener("pointerleave",c),()=>{n.removeEventListener("pointermove",t),n.removeEventListener("pointerleave",c)}},[e,i]),null}function b(){return L.layerStore.layers.find(e=>e.visible&&(e.mode===u.TurnedOn||e.mode===u.TurnedOff))?.name||null}function x(r,e){const o=`[${r.x.toFixed(a)}, ${r.y.toFixed(a)}]`;return e?`${o} \xB7 layer ${e}`:o}