@expofp/floorplan
Version:
Interactive floor plan library for expos and events
2 lines (1 loc) • 1 kB
JavaScript
import{update as g}from"@expofp/renderer";import{useCallback as c,useEffect as T,useRef as p}from"react";import d,{uiState as y}from"../../store";import{applyVenueDim as I,createDimmingAnimator as s,DIM_INTENSITY as l,VENUE_DIM_INTENSITY as M}from"../../utils/dimming";import{useReaction as A}from"../../utils/mobx";import{applyMapDimValue as D}from"./utils/map-helpers";export function getMapDimTarget(){return y.dimmed&&!d.poiMarkerStore.dimSuppressed}export function useDimming(i,u){const e=p(null),n=p(null),a=c(r=>{const t=getMapDimTarget();e.current?.setTarget(t,r),n.current?.setTarget(t,r)},[]);T(()=>{const r=s(m=>{D(i.current,m*l)}),t=s(m=>{const o=u.current;o&&I(o,m*M)&&g(o.rootLayer)});return e.current=r,n.current=t,()=>{r.stop(),t.stop(),e.current=null,n.current=null}},[i,u]),A(()=>getMapDimTarget(),()=>a());const f=c(r=>{const t=e.current?.getValue()??(getMapDimTarget()?1:0);D(r,t*l)},[]);return{mapDimAnimatorRef:e,venueDimAnimatorRef:n,applyDimmingTarget:a,handleMapDimLayerReady:f}}