UNPKG

@expofp/floorplan

Version:

Interactive floor plan library for expos and events

2 lines (1 loc) • 2.06 kB
import{comparer as x,reaction as c}from"mobx";import{boothToEndpoint as T,CURRENT_LOCATION_NAME as h,CURRENT_POSITION_POINT_ID as m,positionInput as b,toArbitraryPoint as A}from"./adapters";const C=s=>"rect"in s?T(s):s;export function bindMobxReactions({wayfinding:s,kioskHandler:F,yahHandler:R,stores:{routeStore:n,uiState:i,layerStore:l}}){const f=[];function a(){const o=i.selectedRoute,t=o?.from?C(o.from):null,e=o?.to?C(o.to):null;if(!t||!e){s.clearRoute();return}s.setRoute({from:t,to:e,waypoints:o?.waypoints?.map(T),accessible:n.onlyAccessible})===!1&&console.error(new Error(`Route not found: (${t.x},${t.y}) \u2192 (${e.x},${e.y})`))}function u(){const o=n.currentPosition,t=n.iconType!==0,e=i.selectedRoute,p=!!(e?.from&&e?.to),y=t&&!p;if(!o){s.setPosition(null),R(null);return}const d=b(o);y?(s.setPosition(null),R({x:d.x,y:d.y,layer:d.layer})):(R(null),s.setPosition(d))}function I(){const o=n.currentPosition,t=i.selectedRoute;if(!o||!t?.to)return;const e=!t.from,y=t.from?.id===m&&s.shouldReroute(b(o));!e&&!y||n.rebuildRouteFromPosition(A(o,h,m))}function P(){const o=l.floors.find(t=>t.active)?.name;F(i.kioskData??null,o,l.mode)}function N(){const o=i.selectedRoute,t=n.currentPosition;if(!o?.to||!t||o.from?.id!==m||n.routeLines.length>0)return;const e=t.z!=null?String(t.z):"";o.from.x===t.x&&o.from.y===t.y&&o.from.layer===e||n.rebuildRouteFromPosition(A(t,h,m))}f.push(c(()=>l.layersLoaded,()=>{a(),u()}),c(()=>[i.selectedRoute,n.onlyAccessible],()=>{a(),u()}),c(()=>{const o=n.currentPosition;return o?{x:o.x,y:o.y,z:o.z,angle:o.angle,iconType:n.iconType}:null},()=>{u()},{equals:x.structural}),c(()=>{const o=n.currentPosition;return o?{x:o.x,y:o.y,z:o.z}:null},()=>{I(),N()},{equals:x.structural}),c(()=>[i.kioskData,l.floors.find(o=>o.active)],()=>P()));let r=null;const z=c(()=>[n.currentRouteLayer,i.getRouteNextFloor],()=>{l.layersLoaded&&(r!==null&&clearTimeout(r),r=setTimeout(()=>{s.notifyFloorChanged(),u(),r=null},0))});return f.push(()=>{r!==null&&clearTimeout(r),z()}),a(),u(),P(),()=>{for(const o of f)o();f.length=0}}