@expofp/floorplan 3.0.0-alpha.16 → 3.0.0-alpha.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/dist/browser/Debug-B9JNOBQc.js +40 -0
  2. package/dist/browser/{Demo-CXdISYQf.js → Demo-B_GkeZja.js} +7 -7
  3. package/dist/browser/{Free-CVgHQ8yt.js → Free-bQbjK74Z.js} +10 -10
  4. package/dist/browser/Gallery-E7LpQjiN.js +71 -0
  5. package/dist/browser/{GpsLoader-BiwFO3QG.js → GpsLoader-Du21Hm8x.js} +46 -46
  6. package/dist/browser/{KioskStore-NqUeUutQ.js → KioskStore-iQ67HJlZ.js} +9 -9
  7. package/dist/browser/{Mapbox-PHCrBnx5.js → Mapbox-Bx1tB7yN.js} +6 -6
  8. package/dist/browser/{SetKioskMode-DMQej1ec.js → SetKioskMode-ByetcQ27.js} +50 -50
  9. package/dist/browser/{ShowKiosk-BWlBMcI7.js → ShowKiosk-DqftG9PI.js} +6 -6
  10. package/dist/browser/{ThreeComponent-Dmt2HPyX.js → ThreeComponent-3tEmnbIR.js} +7 -7
  11. package/dist/browser/{ViewerMenuPanel-CuqRZ7m1.js → ViewerMenuPanel-BOkHor-R.js} +14 -14
  12. package/dist/browser/{boolean-editor-zsvPcNpX.js → boolean-editor-BuDAtfnK.js} +5 -5
  13. package/dist/browser/bundle.json +30 -30
  14. package/dist/browser/{client-B2kCMH8A.js → client-DgcsrMQp.js} +4 -4
  15. package/dist/browser/{data-BtD6blv7.js → data-Cs-XM1vn.js} +5 -5
  16. package/dist/browser/{debug-overlay-CF0imHRX.js → debug-overlay-bQ8hCza8.js} +9 -9
  17. package/dist/browser/{debug-ui-Zt7T7T-N.js → debug-ui-D8Y0PiT5.js} +5 -5
  18. package/dist/browser/{favicon-Dj8hNa7i.js → favicon-5YfyvVuW.js} +1 -1
  19. package/dist/browser/{fetch-retry.umd-B-swKpFA.js → fetch-retry.umd-Bn8pxzHz.js} +2 -2
  20. package/dist/browser/{flex-COa6XN1F.js → flex-DD4D5MDd.js} +5 -5
  21. package/dist/browser/{floorplan.ready-CNnM_Yyc.js → floorplan.ready-BFK4GJQI.js} +12360 -11974
  22. package/dist/browser/{index-B1P-x0sk.js → index-6P2K6zwe.js} +5 -5
  23. package/dist/browser/{index-CqICVJZO.js → index-BOv009xQ.js} +4 -4
  24. package/dist/browser/{index-BeS6l0j-.js → index-CFBl9CX9.js} +18 -18
  25. package/dist/browser/{index-atMSRNM1.js → index-CFBwSM0K.js} +12 -12
  26. package/dist/browser/{index-CgWDjED_.js → index-DXfV86G6.js} +6 -6
  27. package/dist/browser/{index-BEcZnTgd.js → index-HRCOcRH_.js} +3 -3
  28. package/dist/browser/{index-C04zJbbt.js → index-tVZou9A0.js} +2398 -2375
  29. package/dist/browser/index.html +1 -0
  30. package/dist/browser/index.js +4 -4
  31. package/dist/browser/{jsx-runtime-DAY7g56y.js → jsx-runtime-BPB0_kNt.js} +1 -1
  32. package/dist/browser/locales/ar.json +48 -4
  33. package/dist/browser/locales/de.json +48 -4
  34. package/dist/browser/locales/es.json +48 -4
  35. package/dist/browser/locales/fr.json +48 -4
  36. package/dist/browser/locales/he.json +48 -4
  37. package/dist/browser/locales/it.json +48 -4
  38. package/dist/browser/locales/kk.json +48 -4
  39. package/dist/browser/locales/ko.json +48 -4
  40. package/dist/browser/locales/mn.json +48 -4
  41. package/dist/browser/locales/nl.json +48 -4
  42. package/dist/browser/locales/pl.json +49 -5
  43. package/dist/browser/locales/pt.json +48 -4
  44. package/dist/browser/locales/ru.json +49 -5
  45. package/dist/browser/locales/sv.json +48 -4
  46. package/dist/browser/locales/th.json +48 -4
  47. package/dist/browser/locales/tr.json +48 -4
  48. package/dist/browser/locales/uk.json +48 -4
  49. package/dist/browser/locales/vi.json +48 -4
  50. package/dist/browser/locales/zh.json +48 -4
  51. package/dist/browser/{main-DZpmA53N.js → main-DxgBqquP.js} +1 -1
  52. package/dist/browser/{particles.min-DXab_WLN.js → particles.min-CvIca3EI.js} +2 -2
  53. package/dist/esm/RouteCutIn.d.ts +0 -1
  54. package/dist/esm/RouteCutIn.js +1 -1
  55. package/dist/esm/components/Booth/BoothOnHold.d.ts +2 -2
  56. package/dist/esm/components/Booth/BoothOnHold.js +1 -1
  57. package/dist/esm/components/Booth/BoothReserved.d.ts +2 -1
  58. package/dist/esm/components/Booth/BoothReserved.js +1 -1
  59. package/dist/esm/components/Booth/BoothWithoutExhibitor.d.ts +2 -2
  60. package/dist/esm/components/Booth/BoothWithoutExhibitor.js +1 -1
  61. package/dist/esm/components/Exhibitor.js +1 -1
  62. package/dist/esm/components/Gallery/GalleryControls/GalleryControls.d.ts +2 -2
  63. package/dist/esm/components/Gallery/GalleryControls/GalleryControls.js +1 -1
  64. package/dist/esm/components/Gallery/GalleryModal/GalleryModal.d.ts +2 -2
  65. package/dist/esm/components/Gallery/GalleryModal/GalleryModal.js +1 -1
  66. package/dist/esm/components/Kiosk/integrateKiosk.js +1 -1
  67. package/dist/esm/components/Language.js +1 -1
  68. package/dist/esm/components/LanguageRow.d.ts +0 -1
  69. package/dist/esm/components/LanguageRow.js +1 -1
  70. package/dist/esm/components/Layout.js +1 -1
  71. package/dist/esm/components/List.js +1 -1
  72. package/dist/esm/components/Map/drawing/config/config-markers.js +1 -1
  73. package/dist/esm/components/Map/drawing/config/config-wf.d.ts +0 -2
  74. package/dist/esm/components/Map/drawing/config/config-wf.js +1 -1
  75. package/dist/esm/components/Map/drawing/config/route-snapping/snapPositionToRoute.d.ts +1 -1
  76. package/dist/esm/components/Map/drawing/config/route-snapping/snapPositionToRoute.js +1 -1
  77. package/dist/esm/components/Map/drawing/config/route-snapping/splitRouteByPoint.d.ts +1 -1
  78. package/dist/esm/components/Map/drawing/config/route-snapping/splitRouteByPoint.js +1 -1
  79. package/dist/esm/components/Map/drawing/config/route-snapping/types.d.ts +1 -1
  80. package/dist/esm/components/Map/drawing/config/route-snapping/utils.d.ts +1 -1
  81. package/dist/esm/components/Map/traffic/useManageTraffic.js +1 -1
  82. package/dist/esm/components/MarketMaterialList.d.ts +3 -3
  83. package/dist/esm/components/MarketMaterialList.js +1 -1
  84. package/dist/esm/components/Menu.js +1 -1
  85. package/dist/esm/components/MobileToggleButton.js +1 -1
  86. package/dist/esm/components/MultiSelectGroups.d.ts +2 -2
  87. package/dist/esm/components/MultiSelectGroups.js +1 -1
  88. package/dist/esm/components/OverlayContainer.js +1 -1
  89. package/dist/esm/components/RebookingNotes.d.ts +2 -2
  90. package/dist/esm/components/RebookingNotes.js +1 -1
  91. package/dist/esm/components/RebookingRadioGroup.d.ts +2 -2
  92. package/dist/esm/components/RebookingRadioGroup.js +1 -1
  93. package/dist/esm/components/RouteQR.d.ts +2 -2
  94. package/dist/esm/components/RouteQR.js +1 -1
  95. package/dist/esm/components/Sessions.js +1 -1
  96. package/dist/esm/components/Share.d.ts +2 -2
  97. package/dist/esm/components/Share.js +1 -1
  98. package/dist/esm/components/SidebarActions.js +1 -1
  99. package/dist/esm/components/WayfindingTemplate.d.ts +2 -2
  100. package/dist/esm/components/WayfindingTemplate.js +1 -1
  101. package/dist/esm/components/gps/GpsPermissionRequest.d.ts +4 -2
  102. package/dist/esm/components/gps/GpsPermissionRequest.js +1 -1
  103. package/dist/esm/constants.d.ts +1 -0
  104. package/dist/esm/constants.js +1 -1
  105. package/dist/esm/floorplan.loader.js +1 -1
  106. package/dist/esm/floorplan.ready.js +1 -1
  107. package/dist/esm/load.js +3 -3
  108. package/dist/esm/services/routing.js +1 -1
  109. package/dist/esm/store/RootStore.d.ts +0 -2
  110. package/dist/esm/store/RootStore.js +1 -1
  111. package/dist/esm/store/RouteStore.d.ts +1 -1
  112. package/dist/esm/store/RouteStore.js +1 -1
  113. package/dist/esm/store/SearchStore.js +1 -1
  114. package/dist/esm/store/UIState.d.ts +1 -2
  115. package/dist/esm/store/UIState.js +1 -1
  116. package/dist/esm/store/init/index.js +1 -1
  117. package/dist/esm/store/search-buttons/SearchButtonsStore.d.ts +1 -1
  118. package/dist/esm/store/search-buttons/SearchButtonsStore.js +1 -1
  119. package/dist/esm/store/types.d.ts +0 -2
  120. package/dist/esm/tools/sentry.js +1 -1
  121. package/dist/esm/tools/telemetry.js +1 -1
  122. package/dist/esm/utils/i18n.d.ts +5 -3
  123. package/dist/esm/utils/i18n.js +1 -1
  124. package/dist/esm/utils/loadCustomCss.d.ts +1 -1
  125. package/dist/esm/utils/loadCustomCss.js +1 -1
  126. package/dist/esm/utils/mapEntity.js +1 -1
  127. package/dist/esm/utils/math.d.ts +7 -0
  128. package/dist/esm/utils/math.js +1 -0
  129. package/dist/esm/utils/use-shadow.d.ts +1 -1
  130. package/dist/esm/utils/use-shadow.js +1 -1
  131. package/dist/esm/wayfinding/_PLAN-public-api.d.ts +220 -0
  132. package/dist/esm/wayfinding/_PLAN-public-api.js +1 -0
  133. package/dist/esm/{utils/wayfinding.d.ts → wayfinding/__integration__/legacy/legacyWayfinding.d.ts} +5 -4
  134. package/dist/esm/wayfinding/__integration__/legacy/legacyWayfinding.js +1 -0
  135. package/dist/esm/wayfinding/__tests__/helpers.d.ts +21 -0
  136. package/dist/esm/wayfinding/__tests__/helpers.js +1 -0
  137. package/dist/esm/wayfinding/adapters/boothToWaypoint.d.ts +12 -0
  138. package/dist/esm/wayfinding/adapters/boothToWaypoint.js +1 -0
  139. package/dist/esm/wayfinding/adapters/graphDataSource.d.ts +3 -0
  140. package/dist/esm/wayfinding/adapters/graphDataSource.js +1 -0
  141. package/dist/esm/wayfinding/graph/buildGraph.d.ts +3 -0
  142. package/dist/esm/wayfinding/graph/buildGraph.js +1 -0
  143. package/dist/esm/wayfinding/graph/buildNGraph.d.ts +9 -0
  144. package/dist/esm/wayfinding/graph/buildNGraph.js +1 -0
  145. package/dist/esm/wayfinding/graph/constants.d.ts +3 -0
  146. package/dist/esm/wayfinding/graph/constants.js +1 -0
  147. package/dist/esm/wayfinding/graph/findShortestPath.d.ts +14 -0
  148. package/dist/esm/wayfinding/graph/findShortestPath.js +1 -0
  149. package/dist/esm/wayfinding/graph/graphCache.d.ts +6 -0
  150. package/dist/esm/wayfinding/graph/graphCache.js +1 -0
  151. package/dist/esm/wayfinding/graph/graphHelpers.d.ts +8 -0
  152. package/dist/esm/wayfinding/graph/graphHelpers.js +1 -0
  153. package/dist/esm/wayfinding/graph/linkCost.d.ts +4 -0
  154. package/dist/esm/wayfinding/graph/linkCost.js +1 -0
  155. package/dist/esm/wayfinding/graph/pathfinder/aStarPathFinder.d.ts +3 -0
  156. package/dist/esm/wayfinding/graph/pathfinder/aStarPathFinder.js +1 -0
  157. package/dist/esm/wayfinding/graph/pathfinder/parseNodeId.d.ts +9 -0
  158. package/dist/esm/wayfinding/graph/pathfinder/parseNodeId.js +1 -0
  159. package/dist/esm/wayfinding/index.d.ts +18 -0
  160. package/dist/esm/wayfinding/index.js +1 -0
  161. package/dist/esm/wayfinding/rendering/computeTransitionPoints.d.ts +31 -0
  162. package/dist/esm/wayfinding/rendering/computeTransitionPoints.js +1 -0
  163. package/dist/esm/wayfinding/rendering/normalizeRouteDirection.d.ts +19 -0
  164. package/dist/esm/wayfinding/rendering/normalizeRouteDirection.js +1 -0
  165. package/dist/esm/wayfinding/rendering/routeGeometry.d.ts +16 -0
  166. package/dist/esm/wayfinding/rendering/routeGeometry.js +1 -0
  167. package/dist/esm/wayfinding/routing/buildMultiPointRoute.d.ts +11 -0
  168. package/dist/esm/wayfinding/routing/buildMultiPointRoute.js +1 -0
  169. package/dist/esm/wayfinding/routing/buildRoute.d.ts +9 -0
  170. package/dist/esm/wayfinding/routing/buildRoute.js +1 -0
  171. package/dist/esm/wayfinding/routing/findNearestGraphPoint.d.ts +21 -0
  172. package/dist/esm/wayfinding/routing/findNearestGraphPoint.js +1 -0
  173. package/dist/esm/wayfinding/routing/getGraphLines.d.ts +14 -0
  174. package/dist/esm/wayfinding/routing/getGraphLines.js +1 -0
  175. package/dist/esm/wayfinding/routing/getRouteLength.d.ts +3 -0
  176. package/dist/esm/wayfinding/routing/getRouteLength.js +1 -0
  177. package/dist/esm/wayfinding/routing/routeResult.d.ts +4 -0
  178. package/dist/esm/wayfinding/routing/routeResult.js +1 -0
  179. package/dist/esm/wayfinding/types.d.ts +76 -0
  180. package/dist/esm/wayfinding/types.js +1 -0
  181. package/package.json +3 -3
  182. package/dist/browser/Debug-DazuGIJc.js +0 -40
  183. package/dist/browser/Gallery-BMcvPLO_.js +0 -288
  184. package/dist/esm/store/LanguageStore.d.ts +0 -19
  185. package/dist/esm/store/LanguageStore.js +0 -1
  186. package/dist/esm/store/init/init-language.d.ts +0 -3
  187. package/dist/esm/store/init/init-language.js +0 -1
  188. package/dist/esm/utils/toRadians.d.ts +0 -3
  189. package/dist/esm/utils/toRadians.js +0 -1
  190. package/dist/esm/utils/wayfinding.js +0 -1
@@ -1 +1 @@
1
- import dt from"color";import{observable as mt,reaction as it}from"mobx";import{lineLength as Pt}from"simple-geometry";import Yt from"../../../../core/Rect";import s,{layersStore as bt,uiState as g}from"../../../../store";import{LayersMode as St}from"../../../../store/LayerStore";import{getGraphLines as $t,getRouteLength as pt,RoutePoint as ft}from"../../../../utils/wayfinding";import{strEqual as O}from"../../../../utils/strEqual";import{createArrowCurrentCanvas as Ct,createCurrentCanvas as gt,createImageCanvas as Z,createTargetCanvas as Ot,createYahCanvas as kt}from"./canvases";import{toRadians as It}from"../../../../utils/toRadians";import{areLayersEnabled as Et}from"../../../../utils/areLayersEnabled";import{createImageDef as tt,createLineDef as xt,createCircleCanvas as Ht,getBounds as S,getRotation as qt}from"../../../../renderer";import{animateLineSegments as Ut}from"../../../../renderer/engine-core/animation";import{splitRouteByPoint as Wt,snapPositionToRoute as Xt,getThresholdSafe as Gt,getThresholdFromMetersToSvg as Kt,SNAP_THRESHOLD_METERS as jt}from"./route-snapping";import{fpGeo as Tt}from"../../../Mapbox/utils/fpGeo";const I=devicePixelRatio;let z=[],at=null,v=[],ht=dt("#00A2FF"),Jt=dt("#FF9F06"),At="#A4CCE2",Qt="#0794EA";const ct=34;let K,j,J,Q,et,Rt,_t,Dt,lt,A,_,k,H,V,Lt=[];function Vt(){z=[];const t=s.routeStore.currentRouteLayer?.name;at=ee();const n=at&&(Et()?O(t,at.destination?.layer):!0);if(at){const l=at?.routePoint;l&&O(t,l.layer)&&(z=ne(l,z))}let o=[],i=[];for(let l=0;l<v.length;l++){let x=v[l],d=s.layerStore.mode==St.Default?!0:s.layerStore.layers.find(r=>r.name==t&&t===x.p0.layer)?.visible||!1;!x.virtual&&d&&o.push(x),(x.virtual||!d||l===v.length-1)&&o.length&&(i=o.map(({p0:r,p1:u})=>(z.push({x:r.x,y:r.y},{x:u.x,y:u.y}),{p0:r,p1:u})))}z.length||(_.hidden=!0,A.hidden=!0);let h=1e6,c=1e6,y=0,m=0;z.forEach(l=>{l.x<h&&(h=l.x),l.y<c&&(c=l.y),l.x>y&&(y=l.x),l.y>m&&(m=l.y)});const p=Yt.fromX1y1x2y2(h,c,y,m);return{rect:z.length&&(p.w||p.h)?p.withPadding(p.w,p.h):null,lines:i,addTrailPoints:n}}export const WF_TRAIL_LAYER_NAME="wf-trail-points",WF_POINTS_LAYER_NAME="wf-points",WF_CURRENT_POSITION_NAME="wf-current-position",WF_LINES_LAYER_NAME="wf-lines",WF_LINES_ANIMATED_LAYER_NAME="wf-lines-animated";export default function Zt(t){let n=null;const o=[];let i=null,h=mt.box([]),c=mt.box([],{deep:!1}),y=mt.box([],{deep:!1});const m=t.scene.rootLayer.children,p=m.find(e=>e.name===WF_POINTS_LAYER_NAME),l=m.find(e=>e.name===WF_CURRENT_POSITION_NAME),x=m.find(e=>e.name===WF_LINES_LAYER_NAME),d=m.find(e=>e.name===WF_TRAIL_LAYER_NAME),r=m.find(e=>e.name===WF_LINES_ANIMATED_LAYER_NAME),u=Gt(Tt?.properties?.config?.snapThreshold)||jt,R=Kt({thresholdInMeters:u,gpsConfig:Tt?.properties?.config});let E=[];const D=s.fp.icons.get("destination");D?(D.id="destination",j=Z(D,ct,ct,I)):j=Ot(I,Jt.hex()),_=tt(j,S(0,0,j.width,j.height),{hidden:!0});const q=s.fp.icons.get("departure");q?(q.id="departure",K=Z(q,ct,ct,I)):K=gt(I,ht.hex()),A=tt(K,S(0,0,K.width,K.height),{hidden:!0}),J=gt(I,ht.hex()),J.id="current-location",k=tt(J,S(0,0,J.width,J.height),{hidden:!0,origin:[.5,.5]});const T=s.fp.icons.get("transition");T?(T.id="transition",Rt=Z(T,34,34,I)):Rt=gt(I,ht.hex());const L=s.fp.icons.get("transition_up");L&&(L.id="transition_up",_t=Z(L,56,34,I));const M=s.fp.icons.get("transition_down");M&&(M.id="transition_down",Dt=Z(M,56,34,I));const Y=s.fp.icons.get("direction");Y?(Y.id="direction",Q=Z(Y,ct,ct,I)):Q=Ct(I,ht.hex()),H=tt(Q,S(0,0,Q.width,Q.height),{hidden:!0});const nt=s.fp.icons.get("yah");nt?et=Z(nt,yt(64,32),yt(90,32),I):et=kt(I,"#ff4343"),et.id="current-location-2",V=tt(et,S(0,0,et.width,et.height),{hidden:!0,origin:[.5,1]}),lt=Ht(4,dt("#b5b7bc").hex());function B(e=null){const a=s.layerStore.visible.map(f=>f.name);if(z=[],h.set([]),e||(v=[]),a.length&&g.selectedRoute?.from?.rect&&g.selectedRoute?.to?.rect){let f=g.selectedRoute.from,w=g.selectedRoute.to;if(!v.length&&!e&&(v=$t(f,w,s.routeStore.onlyAccessible,g.selectedRoute.waypoints)),!v.length){if(s.routeStore.updateRoute(v),s.routeStore.updateRouteDistance(0),f.name!==w.name)throw new Error(`Route not found. From: ${f.name} to: ${w.name}`);return}const{rect:b,lines:$,addTrailPoints:P}=Vt();$.length?(te(t.scale),oe(t.scale,c),Nt(t,d,!P),t.ptScaleRegistry.unregisterByName(d.name),P&&t.onPtScale(d.name,()=>{const C=Nt(t,d)||[];return d.children=C,Lt=C,d})):t.ptScaleRegistry.unregisterByName(d.name),E=$,ot(),b&&(g.moveToRect=b)}else A.hidden=!0,_.hidden=!0;s.routeStore.updateRoute(v.filter(f=>!f.virtual)),h.get()||(A.hidden=!0,_.hidden=!0)}function N(){const e=s.routeStore.currentPosition,a=e?.angle?It(e.angle):null,f=s.routeStore.currentRouteLayer?.name,w=v.filter(F=>s.layerStore.mode==St.Default?!0:s.layerStore.layers.find(zt=>zt.name==f&&f===F.p0.layer)?.visible).filter(F=>!F.virtual);if(g.kioskData&&g.selectedRoute?.from){const F=s.routeStore.currentRouteLayer;A.hidden=g.selectedRoute?.from?.entity?.type==="route-cut-in"&&F?.name===g.selectedRoute?.from?.layer?.name,_.hidden=g.selectedRoute?.to?.entity?.type==="route-cut-in"&&F?.name===g.selectedRoute?.to?.layer?.name}if(e){const F=bt.findLayer(e.z)?.visible??!0;s.routeStore.iconType===0||g.selectedRoute?.from&&g.selectedRoute?.to?(V.hidden=!0,k.hidden=!F,k.dim=!F,k.bounds=S(e.x,e.y,J.width,J.height,t.scale),a!=null?(k.hidden=!0,H.hidden=!F,H.dim=!F,H.bounds=S(e.x,e.y,Q.width,Q.height,t.scale,a)):H.hidden=!0):(k.hidden=!0,H.hidden=!0,V.dim=!F,V.hidden=!F,V.bounds=S(e.x,e.y,et.width,et.height,t.scale))}else k.hidden=!0,V.hidden=!0,H.hidden=!0,W(),ot();if(!e||!z.length){t.update(H,k,V);return}const b=g.selectedRoute?.to,$=g.selectedRoute?.from,P=new ft($?.layer?.name,A.bounds.center.x,A.bounds.center.y),C=new ft(b?.layer?.name,_.bounds.center.x,_.bounds.center.y),X=Xt(e,w,{snapThreshold:R,fromPoint:P,toPoint:C,fromRect:$?.rect,toRect:b?.rect}),G=X.snapped?X.snappedPoint:e;ot(X,!0),H.bounds=S(G.x,G.y,Q.width,Q.height,t.scale,a),k.bounds=S(G.x,G.y,J.width,J.height,t.scale,a),t.update(H,k,V)}function rt(){const e=[{point:H,name:"wf-current-arrow"},{point:k,name:"wf-current-location"},{point:V,name:"wf-current-location-2"}];l.children=e.map(({point:a})=>a),e.forEach(({point:a,name:f})=>st(a,f)),t.update(l)}function U(e=!1){const a=[A,_,...c.get(),...y.get()];e&&(Ft(!0),d.children=[],a.forEach(f=>{f.source.id.includes("kiosk")||(f.hidden=!0)})),p.children=a,t.update(p,d)}function W(e,a){const f=v.filter(C=>!C.virtual),w=pt(f);if(!e?.snapped){s.routeStore.updateRouteDistance(w);return}const b=g.selectedRoute?.to,$=pt(a);let P;if(e.snappedPoint?.layer===b?.layer?.name||b?.layer?.name===s.routeStore.currentRouteLayer?.name)P=$;else if(e.snappedPoint?.layer!==b?.layer?.name&&e.snappedPoint?.layer===s.routeStore.currentRouteLayer?.name){const C=f.filter(G=>G.p0.layer!==e?.snappedPoint?.layer&&G.p1.layer!==e?.snappedPoint?.layer),X=pt(C);P=$+X}P&&s.routeStore.updateRouteDistance(P)}function ot(e,a=!1){const f=g.selectedRoute?.from,w=g.selectedRoute?.to;if(!f||!w)return;const b=re(v,E,new ft(f?.layer?.name,f?.rect.cx,f?.rect.cy),new ft(w?.layer?.name,w?.rect.cx,w?.rect.cy));if(!e?.snapped){const C=b.map(X=>xt(X,At));s.routeStore.currentPosition&&s.routeStore.currentRouteLayer&&s.routeStore.currentPosition?.z?.toString()===s.routeStore.currentRouteLayer?.name.toString()&&W(),wt([],C,a);return}const{passed:$,remaining:P}=Wt(b,e.snappedPoint);P.length&&(P[0]={...P[0],p0:e.snappedPoint}),W(e,P),wt($.map(C=>xt(C,"#B5B7BC")),P.map(C=>xt(C,At)),a)}const st=(e,a)=>t.onPtScale(a,f=>(e.hidden||(e.bounds=S(e.bounds.center.x,e.bounds.center.y,e.source.width,e.source.height,f,e.bounds.rotation)),e)),ut=(e,a)=>t.onRoll(a,f=>{const w=qt(f,e.bounds.rotation);return w!==void 0&&(e.bounds.rotation=e.bounds.rotation+w),e});function Ft(e){n&&(n.stop(),n=null),r.children=[],e&&(x.children=[]),t.update(r,x)}function wt(e=[],a=[],f=!1){let w=0;if(n&&(f&&(w=n.getProgress()),n.stop(),n=null),x.children=[...e,...a],!a.length){r.children=[],t.update(r,x);return}const b=a.map(P=>({...P,color:Qt}));n=Ut(b,(P,C,X)=>{if(X)r.children=[];else{const G=b.slice(0,C);r.children=[...G,P]}t.update(r)},()=>t.scale,w)??null,t.update(x)}o.push(it(()=>[s.layerStore.layersLoaded],()=>{B(),N(),U()}));const vt=it(()=>[s.routeStore.currentRouteLayer,g.getRouteNextFloor],()=>{s.layerStore.layersLoaded&&(i!==null&&clearTimeout(i),i=setTimeout(()=>{B(s.routeStore.currentRouteLayer),N(),U(),i=null},0))});o.push(()=>{i!==null&&(clearTimeout(i),i=null),vt()}),o.push(it(()=>[g.selectedRoute,s.routeStore.onlyAccessible],()=>{B(),N(),U(!g.selectedRoute)})),o.push(it(()=>s.routeStore.currentPosition,()=>{N(),U()})),o.push(it(()=>c.get(),e=>{const a="transitionPoints";t.ptScaleRegistry.unregisterByPrefix(a),t.rollRegistry.unregisterByPrefix(a),e.length&&e.forEach((f,w)=>{const b=`${a}-${w}`;st(f,b),ut(f,b)})})),o.push(it(()=>[y.get()],()=>{const e=y.get(),a="kioskArrows";t.ptScaleRegistry.unregisterByPrefix(a),e.length&&e.forEach((f,w)=>st(f,`${a}-${w}`))})),o.push(it(()=>[g.kioskData,bt.floors.find(e=>e.active),g.selectedRoute],([e,a])=>{y.set([]);const f=Et()?e?.z===a?.name:!0;e&&f&&ie(e,{skipdim:!0,visible:!0,pixelRatio:I},t.scale,y),U()})),[{point:A,name:"wf-source"},{point:_,name:"wf-destination"}].forEach(({point:e,name:a})=>{st(e,a),ut(e,a)}),U(),N(),rt();function Bt(){n&&(n.stop(),n=null),o.forEach(e=>e()),o.length=0}return Bt}function te(t){const n=s.routeStore.currentRouteLayer?.name,o=z;let i=g.selectedRoute?.from,h=g.selectedRoute?.to;const c=g.selectedRoute?.waypoints;if(i?.entity.type==="route-cut-in"&&(i=null),h?.entity.type==="route-cut-in"&&(h=null),!o.length)return;const y=[{key:"sourceLocation",rect:i?.rect,index:void 0},{key:"destinationLocation",rect:h?.rect,index:void 0}];c&&y.push(...c?.map((d,r)=>({key:`waypoint-${d.externalId}`,index:r,rect:d.rect})));const m=n?O(n,i?.layer?.name):!0,p=n?O(n,h?.layer?.name):!0;let l=!1,x=!1;o.forEach(({x:d,y:r})=>{for(const{key:u,rect:R,index:E}of y)if(R?.containsPoint(d,r)){u==="sourceLocation"&&(A.bounds=S(d,r,K.width,K.height,t),A.hidden=!m,A.dim=!m,l=m),u==="destinationLocation"&&(_.bounds=S(d,r,j.width,j.height,t),_.hidden=!p,_.dim=!p,x=p);break}}),l||(A.bounds=S(o[o.length-1].x,o[o.length-1].y,K.width,K.height,t),A.hidden=!1,A.dim=!1),x||(_.bounds=S(o[0].x,o[0].y,j.width,j.height,t),_.hidden=!p,_.dim=!p)}function ee(){const{from:t,to:n}=s.uiState.selectedRoute||{},o="route-cut-in";return t&&t?.entity.type===o||n&&n?.entity.type===o?s.routeStore.defaultFrom:null}function ne(t,n){if(!t||!n.length)return n;const o=n.reduce((i,h,c)=>Pt(t,h)<Pt(t,n[i])?c:i,0);return o<=n.length/2?n.slice(o):n.slice(0,o)}function oe(t,n){const o=s.routeStore.currentRouteLayer?.name,i=g.getRouteNextFloor,h=s.layerStore.floors.map(r=>r.name),c=(r,u)=>r.findIndex(R=>O(R,u)),y=c(h,o),m=c(h,i),p=m!==-1,l=v.filter(r=>o?r.virtual&&(O(r.p0.layer,o)||O(r.p1.layer,o))&&(O(r.p0.layer,i)||O(r.p1.layer,i)):r.virtual).flatMap(r=>[r.p0,r.p1]),x=[];let d;l.forEach(r=>{if(i&&!O(r.layer,i)&&(p&&m>y&&s.fp.icons.get("transition_up")?d=Dt:p&&m<y&&s.fp.icons.get("transition_down")?d=_t:d=Rt),d){const u=O(o,r.layer),R=S(r.x,r.y,d.width,d.height,t),E=tt(d,R,{hidden:!u,dim:!1});x.push(E)}}),n.set(x)}function ie(t,n,o=1,i){if(!t)return;const h=s.fp.icons.get("kiosk");h.id="kiosk";let c;if(h){const m=t?.iconSizePercent?t.iconSizePercent/100:1,p=55;c=Z(h,yt(199*m,p),yt(152*m,p),I)}else c=Ct(I,dt("#ee4422").hex());const y=tt(c,S(t.x,t.y,c.width,c.height,o,It(t.heading||0)),{hidden:!n.visible,dim:!n.skipdim});i.set([...i.get(),y])}function yt(t,n){return t*(1-n/100)}function Nt(t,n,o=!1){let i=z.length-1;if(g.selectedRoute?.to?.entity.type==="route-cut-in"&&(i=0),o){Lt=[],n.children=[],t.update(n);return}const h=t.scale,c=z[i],y=at?.destination;if(!c||!y)return;const m=lt.width,p=splitPolyLine([{p0:c,p1:y}],m*2*h);if(p.length<2)return;const l=y.x-c.x,x=y.y-c.y,d=Math.hypot(l,x),r={x:(c.x+y.x)/2,y:(c.y+y.y)/2-d*.2},u=[c,r,y],R=p.map((E,D,q)=>{const T=(D+1)/(q.length+1),L=Mt(u,T);return tt(lt,S(L.x,L.y,lt.width,lt.height,h),{hidden:!1,dim:!1})})||[];return n.children=R,Lt=R,R}function Mt(t,n){if(t.length===1)return t[0];const o=[];for(let i=0;i<t.length-1;i++){const h=(1-n)*t[i].x+n*t[i+1].x,c=(1-n)*t[i].y+n*t[i+1].y;o.push({x:h,y:c})}return Mt(o,n)}export function splitPolyLine(t,n){if(t.length===0)return[];const o=[];let i=0;for(let m=0;m<t.length;m++){const p=t[m],l=p.p0,x=p.p1,d=x.x-l.x,r=x.y-l.y,u=Math.sqrt(d*d+r*r);if(u===0)continue;const R=d/u,E=r/u;let D=0;for(;i+D*n<=u;){const L=i+D*n,M=l.x+R*L,Y=l.y+E*L;o.push({x:M,y:Y}),D++}const q=i+(D-1)*n;let T=u-q;if(T=Math.max(T,0),m<t.length-1){const L=t[m+1],M=L.p0,Y=L.p1,nt=Y.x-M.x,B=Y.y-M.y,N=Math.sqrt(nt*nt+B*B);if(N===0)i=0;else{const rt=nt/N,U=B/N,W=R*rt+E*U,ot=T*W;i=n-ot}}else i=n-T;i=Math.max(i,0)}const h=t[0].p0;(o.length===0||!o[0]||o[0].x!==h.x||o[0].y!==h.y)&&o.unshift(h);const c=t[t.length-1].p1,y=o[o.length-1];return(o.length===0||!y||y.x!==c.x||y.y!==c.y)&&o.push(c),o}function re(t,n,o,i){if(!n.length)return n;const h=new Array(t.length);let c=0;for(let u=0;u<t.length;u++){const R=t[u],E=Math.hypot(R.p1.x-R.p0.x,R.p1.y-R.p0.y);h[u]=E,c+=E}const y=u=>u?String(u):null;function m(u){let R=0,E=1/0,D=1/0;const q=y(u.layer);for(let T=0;T<t.length;T++){const L=t[T],M=h[T],Y=y(L.p0.layer);if(!(q===null||Y===null||Y===q)){R+=M;continue}const B=L.p1.x-L.p0.x,N=L.p1.y-L.p0.y,rt=B*B+N*N;if(rt===0){R+=M;continue}const U=((u.x-L.p0.x)*B+(u.y-L.p0.y)*N)/rt,W=Math.max(0,Math.min(1,U)),ot=L.p0.x+B*W,st=L.p0.y+N*W,ut=Math.hypot(u.x-ot,u.y-st);ut<E&&(E=ut,D=R+M*W),R+=M}return{found:D!==1/0,fromStart:D,total:c}}const p=m(o),l=p.found?p:m(i);if(!l.found)return n;const x=l.fromStart,d=l.total-l.fromStart;return(p.found?d<x:x<d)?n.slice().reverse().map(u=>({...u,p0:u.p1,p1:u.p0})):n}
1
+ import ne from"color";import{observable as he,reaction as q}from"mobx";import{lineLength as Se}from"simple-geometry";import He from"../../../../core/Rect";import o,{layersStore as Ae,uiState as c}from"../../../../store";import{LayersMode as _e}from"../../../../store/LayerStore";import{boothToWaypoint as me,getGraphLines as We,graphDataSource as Ye,computeTransitionPoints as Ue,normalizeRouteDirection as Ge,bezierCurve as qe,splitPolyLine as Ke}from"../../../../wayfinding";import{decreaseByPercentage as oe}from"../../../../utils/math";import{strEqual as ie}from"../../../../utils/strEqual";import{createArrowCurrentCanvas as De,createCurrentCanvas as re,createImageCanvas as z,createTargetCanvas as Ve,createYahCanvas as Xe}from"./canvases";import{toRadians as Ie}from"../../../../utils/math";import{areLayersEnabled as ve}from"../../../../utils/areLayersEnabled";import{createImageDef as H,createLineDef as ye,createCircleCanvas as je,getBounds as R,getRotation as Je}from"../../../../renderer";import{animateLineSegments as Qe}from"../../../../renderer/engine-core/animation";import{splitRouteByPoint as Ze,snapPositionToRoute as et,getThresholdSafe as tt,getThresholdFromMetersToSvg as nt,SNAP_THRESHOLD_METERS as ot}from"./route-snapping";import{fpGeo as Ne}from"../../../Mapbox/utils/fpGeo";import{getRouteLength as pe}from"../../../../wayfinding";const L=devicePixelRatio;let I=[],X=null,T=[],Q=ne("#00A2FF"),it=ne("#FF9F06"),Fe="#A4CCE2",rt="#0794EA";const W=34;let B,M,k,$,Y,ge,Re,Le,xe,Z,C,E,N,F,O,we=[];function at(){I=[];const t=o.routeStore.currentRouteLayer?.name;X=lt();const r=X&&(ve()?ie(t,X.destination?.layer):!0);if(X){const l=X?.routePoint;l&&ie(t,l.layer)&&(I=ct(l,I))}let a=[],f=[];for(let l=0;l<T.length;l++){let _=T[l],x=o.layerStore.mode==_e.Default?!0:o.layerStore.layers.find(h=>h.name==t&&t===_.p0.layer)?.visible||!1;!_.virtual&&x&&a.push(_),(_.virtual||!x||l===T.length-1)&&a.length&&(f=a.map(({p0:h,p1:w})=>(I.push({x:h.x,y:h.y},{x:w.x,y:w.y}),{p0:h,p1:w})))}I.length||(E.hidden=!0,C.hidden=!0);let m=1e6,s=1e6,y=0,u=0;I.forEach(l=>{l.x<m&&(m=l.x),l.y<s&&(s=l.y),l.x>y&&(y=l.x),l.y>u&&(u=l.y)});const d=He.fromX1y1x2y2(m,s,y,u);return{rect:I.length&&(d.w||d.h)?d.withPadding(d.w,d.h):null,lines:f,addTrailPoints:r}}export const WF_TRAIL_LAYER_NAME="wf-trail-points",WF_POINTS_LAYER_NAME="wf-points",WF_CURRENT_POSITION_NAME="wf-current-position",WF_LINES_LAYER_NAME="wf-lines",WF_LINES_ANIMATED_LAYER_NAME="wf-lines-animated";export default function st(t){let r=null;const a=[];let f=null,m=he.box([]),s=he.box([],{deep:!1}),y=[],u=he.box([],{deep:!1});const d=t.scene.rootLayer.children,l=d.find(e=>e.name===WF_POINTS_LAYER_NAME),_=d.find(e=>e.name===WF_CURRENT_POSITION_NAME),x=d.find(e=>e.name===WF_LINES_LAYER_NAME),h=d.find(e=>e.name===WF_TRAIL_LAYER_NAME),w=d.find(e=>e.name===WF_LINES_ANIMATED_LAYER_NAME),U=tt(Ne?.properties?.config?.snapThreshold)||ot,ae=nt({thresholdInMeters:U,gpsConfig:Ne?.properties?.config});let ee=[];const j=o.fp.icons.get("destination");j?(j.id="destination",M=z(j,W,W,L)):M=Ve(L,it.hex()),E=H(M,R(0,0,M.width,M.height),{hidden:!0});const G=o.fp.icons.get("departure");G?(G.id="departure",B=z(G,W,W,L)):B=re(L,Q.hex()),C=H(B,R(0,0,B.width,B.height),{hidden:!0}),k=re(L,Q.hex()),k.id="current-location",N=H(k,R(0,0,k.width,k.height),{hidden:!0,origin:[.5,.5]});const K=o.fp.icons.get("transition");K?(K.id="transition",ge=z(K,34,34,L)):ge=re(L,Q.hex());const se=o.fp.icons.get("transition_up");se&&(se.id="transition_up",Re=z(se,56,34,L));const ue=o.fp.icons.get("transition_down");ue&&(ue.id="transition_down",Le=z(ue,56,34,L)),G?xe=z(G,W,W,L):xe=re(L,Q.hex());const le=o.fp.icons.get("direction");le?(le.id="direction",$=z(le,W,W,L)):$=De(L,Q.hex()),F=H($,R(0,0,$.width,$.height),{hidden:!0});const Pe=o.fp.icons.get("yah");Pe?Y=z(Pe,oe(64,32),oe(90,32),L):Y=Xe(L,"#ff4343"),Y.id="current-location-2",O=H(Y,R(0,0,Y.width,Y.height),{hidden:!0,origin:[.5,1]}),Z=je(4,ne("#b5b7bc").hex());function ce(e=null){const n=o.layerStore.visible.map(i=>i.name);if(I=[],m.set([]),e||(T=[]),n.length&&c.selectedRoute?.from?.rect&&c.selectedRoute?.to?.rect){let i=c.selectedRoute.from,p=c.selectedRoute.to;if(!T.length&&!e&&(T=We(Ye,me(i),me(p),o.routeStore.onlyAccessible,c.selectedRoute.waypoints?.map(me))),!T.length){if(o.routeStore.updateRoute(T),o.routeStore.updateRouteDistance(0),i.name!==p.name)throw new Error(`Route not found. From: ${i.name} to: ${p.name}`);return}const{rect:g,lines:D,addTrailPoints:b}=at();D.length?(ut(t.scale),dt(t.scale,s,y),ze(t,h,!b),t.ptScaleRegistry.unregisterByName(h.name),b&&t.onPtScale(h.name,()=>{const P=ze(t,h)||[];return h.children=P,we=P,h})):t.ptScaleRegistry.unregisterByName(h.name),ee=D,fe(),g&&(c.moveToRect=g)}else C.hidden=!0,E.hidden=!0;o.routeStore.updateRoute(T.filter(i=>!i.virtual)),m.get()||(C.hidden=!0,E.hidden=!0)}function J(){const e=o.routeStore.currentPosition,n=e?.angle?Ie(e.angle):null,i=o.routeStore.currentRouteLayer?.name,p=T.filter(A=>o.layerStore.mode==_e.Default?!0:o.layerStore.layers.find(Oe=>Oe.name==i&&i===A.p0.layer)?.visible).filter(A=>!A.virtual);if(c.kioskData&&c.selectedRoute?.from){const A=o.routeStore.currentRouteLayer;C.hidden=c.selectedRoute?.from?.entity?.type==="route-cut-in"&&A?.name===c.selectedRoute?.from?.layer?.name,E.hidden=c.selectedRoute?.to?.entity?.type==="route-cut-in"&&A?.name===c.selectedRoute?.to?.layer?.name}if(e){const A=Ae.findLayer(e.z)?.visible??!0;o.routeStore.iconType===0||c.selectedRoute?.from&&c.selectedRoute?.to?(O.hidden=!0,N.hidden=!A,N.dim=!A,N.bounds=R(e.x,e.y,k.width,k.height,t.scale),n!=null?(N.hidden=!0,F.hidden=!A,F.dim=!A,F.bounds=R(e.x,e.y,$.width,$.height,t.scale,n)):F.hidden=!0):(N.hidden=!0,F.hidden=!0,O.dim=!A,O.hidden=!A,O.bounds=R(e.x,e.y,Y.width,Y.height,t.scale))}else N.hidden=!0,O.hidden=!0,F.hidden=!0,de(),fe();if(!e||!I.length){t.update(F,N,O);return}const g=c.selectedRoute?.to,D=c.selectedRoute?.from,b={layer:D?.layer?.name,x:C.bounds.center.x,y:C.bounds.center.y},P={layer:g?.layer?.name,x:E.bounds.center.x,y:E.bounds.center.y},S=et(e,p,{snapThreshold:ae,fromPoint:b,toPoint:P,fromRect:D?.rect,toRect:g?.rect}),v=S.snapped?S.snappedPoint:e;fe(S,!0),F.bounds=R(v.x,v.y,$.width,$.height,t.scale,n),N.bounds=R(v.x,v.y,k.width,k.height,t.scale,n),t.update(F,N,O)}function Be(){const e=[{point:F,name:"wf-current-arrow"},{point:N,name:"wf-current-location"},{point:O,name:"wf-current-location-2"}];_.children=e.map(({point:n})=>n),e.forEach(({point:n,name:i})=>te(n,i)),t.update(_)}function V(e=!1){const n=[C,E,...s.get(),...u.get()];e&&(Me(!0),h.children=[],n.forEach(i=>{i.source.id.includes("kiosk")||(i.hidden=!0)})),l.children=n,t.update(l,h)}function de(e,n){const i=T.filter(P=>!P.virtual),p=pe(i);if(!e?.snapped){o.routeStore.updateRouteDistance(p);return}const g=c.selectedRoute?.to,D=pe(n);let b;if(e.snappedPoint?.layer===g?.layer?.name||g?.layer?.name===o.routeStore.currentRouteLayer?.name)b=D;else if(e.snappedPoint?.layer!==g?.layer?.name&&e.snappedPoint?.layer===o.routeStore.currentRouteLayer?.name){const P=i.filter(v=>v.p0.layer!==e?.snappedPoint?.layer&&v.p1.layer!==e?.snappedPoint?.layer),S=pe(P);b=D+S}b&&o.routeStore.updateRouteDistance(b)}function fe(e,n=!1){const i=c.selectedRoute?.from,p=c.selectedRoute?.to;if(!i||!p)return;const g=T[0]?.p0.layer,D=Ge(T,ee,{layer:i.layer?.name??g,x:i.rect.cx,y:i.rect.cy},{layer:p.layer?.name??g,x:p.rect.cx,y:p.rect.cy});if(!e?.snapped){const S=D.map(v=>ye(v,Fe));o.routeStore.currentPosition&&o.routeStore.currentRouteLayer&&o.routeStore.currentPosition?.z?.toString()===o.routeStore.currentRouteLayer?.name.toString()&&de(),Ce([],S,n);return}const{passed:b,remaining:P}=Ze(D,e.snappedPoint);P.length&&(P[0]={...P[0],p0:e.snappedPoint}),de(e,P),Ce(b.map(S=>ye(S,"#B5B7BC")),P.map(S=>ye(S,Fe)),n)}const te=(e,n)=>t.onPtScale(n,i=>(e.hidden||(e.bounds=R(e.bounds.center.x,e.bounds.center.y,e.source.width,e.source.height,i,e.bounds.rotation)),e)),be=(e,n)=>t.onRoll(n,i=>{const p=Je(i,e.bounds.rotation);return p!==void 0&&(e.bounds.rotation=e.bounds.rotation+p),e});function Me(e){r&&(r.stop(),r=null),w.children=[],e&&(x.children=[]),t.update(w,x)}function Ce(e=[],n=[],i=!1){let p=0;if(r&&(i&&(p=r.getProgress()),r.stop(),r=null),x.children=[...e,...n],!n.length){w.children=[],t.update(w,x);return}const g=n.map(b=>({...b,color:rt}));r=Qe(g,(b,P,S)=>{if(S)w.children=[];else{const v=g.slice(0,P);w.children=[...v,b]}t.update(w)},()=>t.scale,p)??null,t.update(x)}a.push(q(()=>[o.layerStore.layersLoaded],()=>{ce(),J(),V()}));const ke=q(()=>[o.routeStore.currentRouteLayer,c.getRouteNextFloor],()=>{o.layerStore.layersLoaded&&(f!==null&&clearTimeout(f),f=setTimeout(()=>{ce(o.routeStore.currentRouteLayer),J(),V(),f=null},0))});a.push(()=>{f!==null&&(clearTimeout(f),f=null),ke()}),a.push(q(()=>[c.selectedRoute,o.routeStore.onlyAccessible],()=>{ce(),J(),V(!c.selectedRoute)})),a.push(q(()=>o.routeStore.currentPosition,()=>{J(),V()})),a.push(q(()=>s.get(),e=>{const n="transitionPoints";t.ptScaleRegistry.unregisterByPrefix(n),t.rollRegistry.unregisterByPrefix(n),e.length&&e.forEach((i,p)=>{const g=`${n}-${p}`;te(i,g),be(i,g)})})),a.push(q(()=>[u.get()],()=>{const e=u.get(),n="kioskArrows";t.ptScaleRegistry.unregisterByPrefix(n),e.length&&e.forEach((i,p)=>te(i,`${n}-${p}`))})),a.push(q(()=>[c.kioskData,Ae.floors.find(e=>e.active),c.selectedRoute],([e,n])=>{u.set([]);const i=ve()?e?.z===n?.name:!0;e&&i&&ft(e,{skipdim:!0,visible:!0,pixelRatio:L},t.scale,u),V()}));function Ee({defs:e}){const n=y.find(i=>e.includes(i.imageDef));n&&o.layerStore.updateVisibility(n.targetLayer,!0)}t.renderer.events.addEventListener("pointer:click",Ee),a.push(()=>t.renderer.events.removeEventListener("pointer:click",Ee));function Te({defs:e}){const n=y.some(i=>e.includes(i.imageDef));t.renderer.canvas.style.cursor=n?"pointer":""}t.renderer.events.addEventListener("pointer:move",Te),a.push(()=>t.renderer.events.removeEventListener("pointer:move",Te)),[{point:C,name:"wf-source"},{point:E,name:"wf-destination"}].forEach(({point:e,name:n})=>{te(e,n),be(e,n)}),V(),J(),Be();function $e(){r&&(r.stop(),r=null),a.forEach(e=>e()),a.length=0}return $e}function ut(t){const r=o.routeStore.currentRouteLayer?.name,a=I;let f=c.selectedRoute?.from,m=c.selectedRoute?.to;const s=c.selectedRoute?.waypoints;if(f?.entity.type==="route-cut-in"&&(f=null),m?.entity.type==="route-cut-in"&&(m=null),!a.length)return;const y=[{key:"sourceLocation",rect:f?.rect,index:void 0},{key:"destinationLocation",rect:m?.rect,index:void 0}];s&&y.push(...s?.map((x,h)=>({key:`waypoint-${x.externalId}`,index:h,rect:x.rect})));const u=r?ie(r,f?.layer?.name):!0,d=r?ie(r,m?.layer?.name):!0;let l=!1,_=!1;a.forEach(({x,y:h})=>{for(const{key:w,rect:U,index:ae}of y)if(U?.containsPoint(x,h)){w==="sourceLocation"&&(C.bounds=R(x,h,B.width,B.height,t),C.hidden=!u,C.dim=!u,l=u),w==="destinationLocation"&&(E.bounds=R(x,h,M.width,M.height,t),E.hidden=!d,E.dim=!d,_=d);break}}),l||(C.bounds=R(a[a.length-1].x,a[a.length-1].y,B.width,B.height,t),C.hidden=!1,C.dim=!1),_||(E.bounds=R(a[0].x,a[0].y,M.width,M.height,t),E.hidden=!d,E.dim=!d)}function lt(){const{from:t,to:r}=o.uiState.selectedRoute||{},a="route-cut-in";return t&&t?.entity.type===a||r&&r?.entity.type===a?o.routeStore.defaultFrom:null}function ct(t,r){if(!t||!r.length)return r;const a=r.reduce((f,m,s)=>Se(t,m)<Se(t,r[f])?s:f,0);return a<=r.length/2?r.slice(a):r.slice(0,a)}function dt(t,r,a){const f=o.routeStore.currentRouteLayer?.name,m=o.layerStore.floors.map(u=>u.name).reverse(),s=Ue({routeLines:T,currentLayerName:f,floorOrder:m});a.length=0;const y=s.map(u=>{const d=u.role==="entry"?xe:u.direction==="up"&&Re?Re:u.direction==="down"&&Le?Le:ge,l=H(d,R(u.x,u.y,d.width,d.height,t),{hidden:!1,dim:!1});return u.role==="exit"&&a.push({imageDef:l,targetLayer:u.targetLayer}),l});r.set(y)}function ft(t,r,a=1,f){if(!t)return;const m=o.fp.icons.get("kiosk");m.id="kiosk";let s;if(m){const u=t?.iconSizePercent?t.iconSizePercent/100:1,d=55;s=z(m,oe(199*u,d),oe(152*u,d),L)}else s=De(L,ne("#ee4422").hex());const y=H(s,R(t.x,t.y,s.width,s.height,a,Ie(t.heading||0)),{hidden:!r.visible,dim:!r.skipdim});f.set([...f.get(),y])}function ze(t,r,a=!1){let f=I.length-1;if(c.selectedRoute?.to?.entity.type==="route-cut-in"&&(f=0),a){we=[],r.children=[],t.update(r);return}const m=t.scale,s=I[f],y=X?.destination;if(!s||!y)return;const u=Z.width,d=Ke([{p0:s,p1:y}],u*2*m);if(d.length<2)return;const l=y.x-s.x,_=y.y-s.y,x=Math.hypot(l,_),h={x:(s.x+y.x)/2,y:(s.y+y.y)/2-x*.2},w=[s,h,y],U=d.map((ae,ee,j)=>{const G=(ee+1)/(j.length+1),K=qe(w,G);return H(Z,R(K.x,K.y,Z.width,Z.height,m),{hidden:!1,dim:!1})})||[];return r.children=U,we=U,U}
@@ -1,4 +1,4 @@
1
- import { RouteLine, RoutePoint } from "../../../../../utils/wayfinding";
1
+ import type { RouteLine, RoutePoint } from "../../../../../wayfinding/types";
2
2
  import { CurrentPosition } from "../../../../../store/RouteStore";
3
3
  import type { RouteSnapResult } from "./types";
4
4
  type Rect = {
@@ -1 +1 @@
1
- import{RoutePoint as E}from"../../../../../utils/wayfinding";export const SNAP_THRESHOLD_METERS=7.5;function O(t,n){return t.x>=n.x1&&t.x<=n.x2&&t.y>=n.y1&&t.y<=n.y2}function w(t,n){let p=0;for(const e of t){const a=Math.hypot(e.p1.x-e.p0.x,e.p1.y-e.p0.y);if(a!==0){if(p+a>=n){const d=(n-p)/a,f=e.p0.x+(e.p1.x-e.p0.x)*d,x=e.p0.y+(e.p1.y-e.p0.y)*d;return{point:new E(e.p0.layer,f,x),line:e}}p+=a}}const c=t[t.length-1];return{point:new E(c.p0.layer,c.p1.x,c.p1.y),line:c}}export function snapPositionToRoute(t,n,p){const c=n.length;if(!c)return{snapped:!1};const{snapThreshold:e,toPoint:a,minRemainingUnits:d=.5,fromPoint:f,fromRect:x,toRect:A}=p,i=t.z!=null?String(t.z):null;let M=1/0,u=null,m=0,I=i==null;for(let s=0;s<c;s++){const r=n[s],{p0:o,p1:y}=r,g=y.x-o.x,P=y.y-o.y,D=g*g+P*P;if(D===0)continue;const F=Math.sqrt(D);if(i!=null&&String(o.layer)!==i){m+=F;continue}I=!0;const U=((t.x-o.x)*g+(t.y-o.y)*P)/D,R=Math.max(0,Math.min(1,U)),j=o.x+g*R,k=o.y+P*R,H=Math.hypot(t.x-j,t.y-k);H<M&&(M=H,u={segmentIndex:s,t:R,distanceFromPolylineStart:m+F*R}),m+=F}if(i!=null&&!I)return{snapped:!1};const l=m,b=n[0].p0,q=n[c-1].p1,_=Math.hypot(a.x-b.x,a.y-b.y),L=Math.hypot(a.x-q.x,a.y-q.y),S=_<=L,T=Math.min(d,l),v=new E((i??n[0].p0.layer).toString(),t.x,t.y);if(x&&f&&(i==null||String(f.layer)===i)&&O(v,x)){const s=l,r=S?s:l-s,o=w(n,r);return{snapped:!0,snappedPoint:o.point,snappedLine:o.line}}if(A&&(i==null||String(a.layer)===i)&&O(v,A)){const s=T,r=l-s,y=w(n,S?s:r);return{snapped:!0,snappedPoint:y.point,snappedLine:y.line}}if(!u||M>e)return{snapped:!1};let h=S?u.distanceFromPolylineStart:l-u.distanceFromPolylineStart;h<T&&(h=T);const N=l-h,z=w(n,S?h:N);return{snapped:!0,snappedPoint:z.point,snappedLine:z.line}}
1
+ export const SNAP_THRESHOLD_METERS=7.5;function O(t,n){return t.x>=n.x1&&t.x<=n.x2&&t.y>=n.y1&&t.y<=n.y2}function E(t,n){let r=0;for(const e of t){const a=Math.hypot(e.p1.x-e.p0.x,e.p1.y-e.p0.y);if(a!==0){if(r+a>=n){const d=(n-r)/a,x=e.p0.x+(e.p1.x-e.p0.x)*d,f=e.p0.y+(e.p1.y-e.p0.y)*d;return{point:{layer:e.p0.layer,x,y:f},line:e}}r+=a}}const l=t[t.length-1];return{point:{layer:l.p0.layer,x:l.p1.x,y:l.p1.y},line:l}}export function snapPositionToRoute(t,n,r){const l=n.length;if(!l)return{snapped:!1};const{snapThreshold:e,toPoint:a,minRemainingUnits:d=.5,fromPoint:x,fromRect:f,toRect:A}=r,i=t.z!=null?String(t.z):null;let M=1/0,u=null,S=0,I=i==null;for(let s=0;s<l;s++){const p=n[s],{p0:o,p1:y}=p,g=y.x-o.x,P=y.y-o.y,D=g*g+P*P;if(D===0)continue;const F=Math.sqrt(D);if(i!=null&&String(o.layer)!==i){S+=F;continue}I=!0;const N=((t.x-o.x)*g+(t.y-o.y)*P)/D,R=Math.max(0,Math.min(1,N)),U=o.x+g*R,j=o.y+P*R,H=Math.hypot(t.x-U,t.y-j);H<M&&(M=H,u={segmentIndex:s,t:R,distanceFromPolylineStart:S+F*R}),S+=F}if(i!=null&&!I)return{snapped:!1};const c=S,b=n[0].p0,q=n[l-1].p1,_=Math.hypot(a.x-b.x,a.y-b.y),w=Math.hypot(a.x-q.x,a.y-q.y),m=_<=w,T=Math.min(d,c),v={layer:(i??n[0].p0.layer).toString(),x:t.x,y:t.y};if(f&&x&&(i==null||String(x.layer)===i)&&O(v,f)){const s=c,p=m?s:c-s,o=E(n,p);return{snapped:!0,snappedPoint:o.point,snappedLine:o.line}}if(A&&(i==null||String(a.layer)===i)&&O(v,A)){const s=T,p=c-s,y=E(n,m?s:p);return{snapped:!0,snappedPoint:y.point,snappedLine:y.line}}if(!u||M>e)return{snapped:!1};let h=m?u.distanceFromPolylineStart:c-u.distanceFromPolylineStart;h<T&&(h=T);const L=c-h,z=E(n,m?h:L);return{snapped:!0,snappedPoint:z.point,snappedLine:z.line}}
@@ -1,4 +1,4 @@
1
- import { RouteLine, RoutePoint } from "../../../../../utils/wayfinding";
1
+ import type { RouteLine, RoutePoint } from "../../../../../wayfinding/types";
2
2
  export declare function splitRouteByPoint(routeLines: RouteLine[], snapPoint: RoutePoint): {
3
3
  passed: RouteLine[];
4
4
  remaining: RouteLine[];
@@ -1 +1 @@
1
- import{RoutePoint as E}from"../../../../../utils/wayfinding";export function splitRouteByPoint(t,c){let n=-1,e=0,a=1/0;for(let l=0;l<t.length;l++){const p=t[l];if(p.p0.layer!==c.layer)continue;const s=p.p1.x-p.p0.x,y=p.p1.y-p.p0.y,r=s*s+y*y;if(r===0)continue;const x=((c.x-p.p0.x)*s+(c.y-p.p0.y)*y)/r;if(x<-1e-6||x>1+1e-6)continue;const o=Math.min(1,Math.max(0,x)),m=p.p0.x+o*s,g=p.p0.y+o*y,d=(c.x-m)**2+(c.y-g)**2;d<a&&(a=d,n=l,e=o)}if(n===-1)return{passed:[],remaining:t};if(e<1e-6)return{passed:t.slice(0,n),remaining:t.slice(n)};if(e>1-1e-6)return{passed:t.slice(0,n+1),remaining:t.slice(n+1)};const i=t[n],f=new E(i.p0.layer,i.p0.x+e*(i.p1.x-i.p0.x),i.p0.y+e*(i.p1.y-i.p0.y));return{passed:[...t.slice(0,n),{...i,p1:f}],remaining:[{...i,p0:f},...t.slice(n+1)]}}
1
+ export function splitRouteByPoint(t,i){let n=-1,e=0,f=1/0;for(let l=0;l<t.length;l++){const c=t[l];if(c.p0.layer!==i.layer)continue;const s=c.p1.x-c.p0.x,y=c.p1.y-c.p0.y,r=s*s+y*y;if(r===0)continue;const x=((i.x-c.p0.x)*s+(i.y-c.p0.y)*y)/r;if(x<-1e-6||x>1+1e-6)continue;const a=Math.min(1,Math.max(0,x)),m=c.p0.x+a*s,g=c.p0.y+a*y,o=(i.x-m)**2+(i.y-g)**2;o<f&&(f=o,n=l,e=a)}if(n===-1)return{passed:[],remaining:t};if(e<1e-6)return{passed:t.slice(0,n),remaining:t.slice(n)};if(e>1-1e-6)return{passed:t.slice(0,n+1),remaining:t.slice(n+1)};const p=t[n],d={layer:p.p0.layer,x:p.p0.x+e*(p.p1.x-p.p0.x),y:p.p0.y+e*(p.p1.y-p.p0.y)};return{passed:[...t.slice(0,n),{...p,p1:d}],remaining:[{...p,p0:d},...t.slice(n+1)]}}
@@ -1,4 +1,4 @@
1
- import { RouteLine, RoutePoint } from "../../../../../utils/wayfinding";
1
+ import type { RouteLine, RoutePoint } from "../../../../../wayfinding/types";
2
2
  export type RouteSnapResult = {
3
3
  snapped: false;
4
4
  } | {
@@ -1,4 +1,4 @@
1
- import { RouteLine, RoutePoint } from "../../../../../utils/wayfinding";
1
+ import type { RouteLine, RoutePoint } from "../../../../../wayfinding/types";
2
2
  import { Booth } from "../../../../../store/BoothStore";
3
3
  export declare function distancePointToRouteOnLayer(point: RoutePoint, lines: RouteLine[]): number;
4
4
  export declare function findBoothInRadius<T extends Booth>(position: {
@@ -1 +1 @@
1
- import{useEffect as yt,useRef as L}from"react";import{getBounds as k}from"../../../renderer";import{getRouteLayerRegex as pt,getRouteStopLayerRegex as wt,TRAFFIC_VEHICLES as xt}from"./trafficLayers";import{loadImage as Et}from"../../../utils/loadImage";import{createImageCanvas as It}from"../drawing/config/canvases";import{UpdateQueue as Mt}from"./UpdateQueue";import Lt from"../../../tools/base-runtime-url";import{toRadians as bt}from"../../../utils/toRadians";const tt=2,Rt=tt*3.5,G=tt*12,at=G*.7,Ft=8,At="transport_locations",Tt=150,et="#a4aab6",it=1e3,Pt=2e4,ut=500;export function useManageTraffic({permission:e,rendererService:n,dataJsonUrl:c,websocketUrl:a}){const t=L(window.devicePixelRatio),s=L(new Map),o=L(new Map),r=L(),d=L(),f=L(performance.now()),M=L(1),x=L(new Mt),A=L(new Map),I=L(),g=L(it),y=L(new Map),i=L();yt(()=>{async function O(){if(!(!e||!n.scene))try{let h;try{h=await(await fetch(c,{method:"GET",headers:{"Content-Type":"application/json"}})).json()}catch(u){console.warn("useManageTraffic failed to get JSON",u)}if(!h||h?.disabled||h?.error)return;t.current=lt(n.getCameraState().ptScale);const V=new Map(h.routes.map(({id:u,color:m})=>[u,m])),_=n.scene.rootLayer.children,W=new Map;V.forEach(u=>{W.set(u,Ct({radius:Rt,color:u,scale:window.devicePixelRatio}))});const z=pt(),Y=_.filter(u=>z.test(u.name)),B=wt(),U=_.filter(u=>B.test(u.name));h.routes.slice(0,Y.length).forEach(({id:u,color:m,path:T,stops:R,hiddenPoints:p},w)=>{A.current.set(u,T);const E=Y[w];if(E){const S=new Map(p?.map(l=>[ot(l),l])??[]);for(let l=1;l<T.length;l++){const D=T[l-1],H=T[l];S.has(ot(D))||S.has(ot(H))||E.children.push({points:[D,H],color:m,width:tt})}E.children.length&&x.current.add(()=>n.update(E))}const N=U[w];if(N&&R?.length){const S=W.get(m);R.forEach(l=>{N.children.push({source:S,bounds:k(l.x,l.y,S.width,S.height,t.current)})}),N.children.length&&x.current.add(()=>n.update(N))}});const $=_.find(u=>u.name===xt),X=new Map;I.current=u=>{try{t.current=lt(u);const m=[];for(let R=0;R<U.length;R++){const p=U[R].children;for(let w=0;w<p.length;w++){const E=p[w];E.bounds=k(E.bounds.center.x,E.bounds.center.y,E.source.width,E.source.height,t.current,E.bounds.rotation),m.push(E)}}const T=[...s.current.values()];for(let R=0;R<T.length;R++){const p=T[R];p.bounds=k(p.bounds.center.x,p.bounds.center.y,p.source.width,p.source.height,t.current,p.bounds.rotation)}x.current.add(()=>n.update(...m,...T))}catch(m){console.error("ptscale",m)}},n.renderer.events.addEventListener("viewport:ptscale",I.current),V.forEach((u,m)=>{X.set(m,ht({id:m,width:G,height:G,color:u,scale:window.devicePixelRatio}))}),X.set(et,ht({id:"orphan",width:G,height:G,color:et,scale:window.devicePixelRatio}));let j=null;try{const u=await Et(`${Lt}icons/bus-white.svg`);j=It(u,at,at,window.devicePixelRatio)}catch(u){console.error(u)}d.current=u=>{try{const m=JSON.parse(u.data);if(m.type!==At)return;const T=u.timeStamp||performance.now();M.current=Math.round(T-f.current),f.current=T;const R=Math.max(M.current??ut,ut),p=o.current,w=s.current,E=$.children,N=x.current;let S=!1;m.data.forEach(({id:l,x:D,y:H,route_id:ct,hidden:gt})=>{if(p.has(l)&&(p.get(l)?.(),p.delete(l)),gt&&w.has(l)&&w.has(Q(l))){const P=w.get(l);P.hidden=!0;const F=w.get(Q(l));F.hidden=!0,N.add(()=>n.update(P,F));return}if(y.current.set(l,performance.now()),!w.has(l)){const P=X.get(ct)||X.get(et),F={id:l,source:P,bounds:k(D,H,P.width,P.height,t.current,0)};if(w.set(l,F),j){const q=Q(l),rt={id:q,source:j,bounds:k(D,H,j.width,j.height,t.current,0)};j.setAttribute("id",q),w.set(q,rt),E.push(F,rt)}else E.push(F);S=!0;return}const Z=w.get(l),st=w.get(Q(l)),mt=Z.bounds.center,K=Nt(mt,{x:D,y:H},A.current.get(ct));if(K.reduce((P,F,q)=>q===0?P:P+nt(K[q-1],F),0)>=Tt||document.hidden)dt({rendererService:n,updateQueue:N,vehicle:Z,vehicleFinery:st,x:D,y:H,scale:t.current,angle:vt(Z.bounds.center,{x:D,y:H})});else{const P=St(K,R,F=>{dt({rendererService:n,updateQueue:N,vehicle:Z,vehicleFinery:st,x:F.x,y:F.y,scale:t.current,angle:F.angle})});p.set(l,P)}}),S&&N.add(()=>n.update($))}catch(m){console.error("handleSocketMessage",m)}},v(),C(h.config?(Number(h.config.vehicle_inactive_interval)||20)*1e3:Pt)}catch(h){console.warn(h)}}O();function v(){r.current?.readyState===WebSocket.OPEN||r.current?.readyState===WebSocket.CONNECTING||(r.current=new WebSocket(a),r.current.onmessage=d.current,r.current.onopen=()=>{g.current=it},r.current.onclose=()=>{if(!navigator.onLine)return;setTimeout(v,g.current);const h=3e4;g.current=Math.min(g.current*2,h)})}function b(){v()}window.addEventListener("online",b);function C(h){clearInterval(i.current),i.current=window.setInterval(()=>{const V=performance.now(),_=[],W=[];y.current.forEach((z,Y)=>{if(V-z<h)return;const B=s.current.get(Y);B&&(B.hidden=!0,W.push(B),_.push(Y));const U=Q(Y),$=s.current.get(U);$&&($.hidden=!0,W.push($),_.push(U))}),W.length&&x.current.add(()=>n.update(...W)),_.forEach(z=>y.current.delete(z))},h)}return()=>{I.current&&n.renderer&&n.renderer.events.removeEventListener("viewport:ptscale",I.current),o.current.forEach(h=>h?.()),o.current.clear(),s.current.clear(),x.current.destroy(),window.removeEventListener("online",b),clearInterval(i.current)}},[e,n,c,a])}function lt(e){return Math.min(e||window.devicePixelRatio,Ft)}function vt(e,n){return Math.atan2(n.y-e.y,n.x-e.x)}function Ct({radius:e,scale:n,color:c}){const a=document.createElement("canvas"),t=a.getContext("2d");t.imageSmoothingEnabled=!1;const s=Math.ceil(e*2*n),o=s/2,r=e*.78,d=e*.33;return a.width=s,a.height=s,t.translate(o,o),t.scale(n,n),t.beginPath(),t.arc(0,0,e,0,2*Math.PI),t.fillStyle="#FFFFFF",t.fill(),t.beginPath(),t.arc(0,0,r,0,2*Math.PI),t.fillStyle=c,t.fill(),t.beginPath(),t.arc(0,0,d,0,2*Math.PI),t.fillStyle="#FFFFFF",t.fill(),a}function ht({id:e,width:n,height:c,color:a,scale:t}){const s=2*t,o=n/2*t,r=c*t,d=.6,f=.01,M=r*d,x=r,A=8*t,I=x+s+M/2+A*2,g=o*2+M+s+A*2,y=document.createElement("canvas");y.setAttribute("id",e),y.width=I,y.height=g;const i=y.getContext("2d"),O=I/2,v=g/2;i.save(),i.translate(O,v),i.rotate(-Math.PI/2),i.translate(-O,-v);const b=O,C=v-x/2+o,h=C+M;return i.shadowColor="rgba(16, 24, 40, 0.2)",i.shadowBlur=A/2,i.beginPath(),i.arc(b,C,o,Math.PI,0,!1),i.bezierCurveTo(b+o,C+r*.3,b+f*o,h,b,h),i.bezierCurveTo(b-f*o,h,b-o,C+r*.3,b-o,C),i.closePath(),i.fillStyle=a,i.fill(),i.strokeStyle="#FFFFFF",i.lineWidth=s,i.stroke(),i.restore(),y}function nt(e,n){return Math.hypot(e.x-n.x,e.y-n.y)}function Q(e){return`${e}_finery`}function dt({rendererService:e,updateQueue:n,vehicle:c,vehicleFinery:a,x:t,y:s,scale:o,angle:r}){if(c.bounds=k(t,s,c.source.width,c.source.height,o,r),c.hidden=!1,a){const d=e.getCameraState();a.bounds=k(t,s,a.source.width,a.source.height,o,bt(d.roll||0)),a.hidden=!1,n.add(()=>e.update(a,c))}else n.add(()=>e.update(c))}function J(e,n,c){return{x:e.x+(n.x-e.x)*c,y:e.y+(n.y-e.y)*c}}function ft(e,n){let c=1/0,a={index:0,t:0};for(let t=0;t<n.length-1;t++){const s=n[t],o=n[t+1],r=o.x-s.x,d=o.y-s.y,f=r*r+d*d,M=f?((e.x-s.x)*r+(e.y-s.y)*d)/f:0,x=Math.max(0,Math.min(1,M)),A=J(s,o,x),I=nt(e,A);I<c&&(c=I,a={index:t,t:x})}return a}function _t(e,n,c){const a=nt(e,n),t=Math.max(2,Math.ceil(a/c)+1),s=[];for(let o=0;o<t;o++){const r=o/(t-1),d=J(e,n,r);s.push({x:d.x,y:d.y})}return s}function Nt(e,n,c){if(!c||!c.length)return _t(e,n,10);const a=ft(e,c),t=ft(n,c),s=[],o=r=>s.push({x:r.x,y:r.y});a.index+1<c.length?o(J(c[a.index],c[a.index+1],a.t)):o(c[a.index]);for(let r=a.index+1;r<=t.index&&r<c.length;r++)o(c[r]);return t.index+1<c.length?o(J(c[t.index],c[t.index+1],t.t)):o(c[t.index]),s}function St(e,n,c,a){if(e.length<2)return()=>{};let t=null,s;const o=[];let r=0;for(let f=0;f<e.length-1;f++){const M=Math.hypot(e[f+1].x-e[f].x,e[f+1].y-e[f].y);o.push(M),r+=M}const d=f=>{t||(t=f);const M=f-t,x=Math.min(M/n,1),A=x*r;let I=0,g=0;for(;g<o.length&&I+o[g]<A;)I+=o[g],g++;g>=o.length&&(g=o.length-1);const y=e[g],i=e[Math.min(g+1,e.length-1)],O=o[g]||0,v=O===0?0:(A-I)/O,b=y.x+(i.x-y.x)*v,C=y.y+(i.y-y.y)*v,h=i.x-y.x,V=i.y-y.y,_=h===0&&V===0?0:Math.atan2(V,h);c({x:b,y:C,angle:_}),x<1?s=requestAnimationFrame(d):a&&a()};return s=requestAnimationFrame(d),()=>{s&&cancelAnimationFrame(s)}}function ot(e){return`${e.x},${e.y}`}
1
+ import{useEffect as yt,useRef as L}from"react";import{getBounds as k}from"../../../renderer";import{getRouteLayerRegex as pt,getRouteStopLayerRegex as wt,TRAFFIC_VEHICLES as xt}from"./trafficLayers";import{loadImage as Et}from"../../../utils/loadImage";import{createImageCanvas as It}from"../drawing/config/canvases";import{UpdateQueue as Mt}from"./UpdateQueue";import Lt from"../../../tools/base-runtime-url";import{toRadians as bt}from"../../../utils/math";const tt=2,Rt=tt*3.5,G=tt*12,at=G*.7,Ft=8,At="transport_locations",Tt=150,et="#a4aab6",it=1e3,Pt=2e4,ut=500;export function useManageTraffic({permission:e,rendererService:n,dataJsonUrl:c,websocketUrl:a}){const t=L(window.devicePixelRatio),s=L(new Map),o=L(new Map),r=L(),d=L(),f=L(performance.now()),M=L(1),x=L(new Mt),A=L(new Map),I=L(),g=L(it),y=L(new Map),i=L();yt(()=>{async function O(){if(!(!e||!n.scene))try{let h;try{h=await(await fetch(c,{method:"GET",headers:{"Content-Type":"application/json"}})).json()}catch(u){console.warn("useManageTraffic failed to get JSON",u)}if(!h||h?.disabled||h?.error)return;t.current=lt(n.getCameraState().ptScale);const V=new Map(h.routes.map(({id:u,color:m})=>[u,m])),_=n.scene.rootLayer.children,W=new Map;V.forEach(u=>{W.set(u,Ct({radius:Rt,color:u,scale:window.devicePixelRatio}))});const z=pt(),Y=_.filter(u=>z.test(u.name)),B=wt(),U=_.filter(u=>B.test(u.name));h.routes.slice(0,Y.length).forEach(({id:u,color:m,path:T,stops:R,hiddenPoints:p},w)=>{A.current.set(u,T);const E=Y[w];if(E){const S=new Map(p?.map(l=>[ot(l),l])??[]);for(let l=1;l<T.length;l++){const D=T[l-1],H=T[l];S.has(ot(D))||S.has(ot(H))||E.children.push({points:[D,H],color:m,width:tt})}E.children.length&&x.current.add(()=>n.update(E))}const N=U[w];if(N&&R?.length){const S=W.get(m);R.forEach(l=>{N.children.push({source:S,bounds:k(l.x,l.y,S.width,S.height,t.current)})}),N.children.length&&x.current.add(()=>n.update(N))}});const $=_.find(u=>u.name===xt),X=new Map;I.current=u=>{try{t.current=lt(u);const m=[];for(let R=0;R<U.length;R++){const p=U[R].children;for(let w=0;w<p.length;w++){const E=p[w];E.bounds=k(E.bounds.center.x,E.bounds.center.y,E.source.width,E.source.height,t.current,E.bounds.rotation),m.push(E)}}const T=[...s.current.values()];for(let R=0;R<T.length;R++){const p=T[R];p.bounds=k(p.bounds.center.x,p.bounds.center.y,p.source.width,p.source.height,t.current,p.bounds.rotation)}x.current.add(()=>n.update(...m,...T))}catch(m){console.error("ptscale",m)}},n.renderer.events.addEventListener("viewport:ptscale",I.current),V.forEach((u,m)=>{X.set(m,ht({id:m,width:G,height:G,color:u,scale:window.devicePixelRatio}))}),X.set(et,ht({id:"orphan",width:G,height:G,color:et,scale:window.devicePixelRatio}));let j=null;try{const u=await Et(`${Lt}icons/bus-white.svg`);j=It(u,at,at,window.devicePixelRatio)}catch(u){console.error(u)}d.current=u=>{try{const m=JSON.parse(u.data);if(m.type!==At)return;const T=u.timeStamp||performance.now();M.current=Math.round(T-f.current),f.current=T;const R=Math.max(M.current??ut,ut),p=o.current,w=s.current,E=$.children,N=x.current;let S=!1;m.data.forEach(({id:l,x:D,y:H,route_id:ct,hidden:gt})=>{if(p.has(l)&&(p.get(l)?.(),p.delete(l)),gt&&w.has(l)&&w.has(Q(l))){const P=w.get(l);P.hidden=!0;const F=w.get(Q(l));F.hidden=!0,N.add(()=>n.update(P,F));return}if(y.current.set(l,performance.now()),!w.has(l)){const P=X.get(ct)||X.get(et),F={id:l,source:P,bounds:k(D,H,P.width,P.height,t.current,0)};if(w.set(l,F),j){const q=Q(l),rt={id:q,source:j,bounds:k(D,H,j.width,j.height,t.current,0)};j.setAttribute("id",q),w.set(q,rt),E.push(F,rt)}else E.push(F);S=!0;return}const Z=w.get(l),st=w.get(Q(l)),mt=Z.bounds.center,K=Nt(mt,{x:D,y:H},A.current.get(ct));if(K.reduce((P,F,q)=>q===0?P:P+nt(K[q-1],F),0)>=Tt||document.hidden)dt({rendererService:n,updateQueue:N,vehicle:Z,vehicleFinery:st,x:D,y:H,scale:t.current,angle:vt(Z.bounds.center,{x:D,y:H})});else{const P=St(K,R,F=>{dt({rendererService:n,updateQueue:N,vehicle:Z,vehicleFinery:st,x:F.x,y:F.y,scale:t.current,angle:F.angle})});p.set(l,P)}}),S&&N.add(()=>n.update($))}catch(m){console.error("handleSocketMessage",m)}},v(),C(h.config?(Number(h.config.vehicle_inactive_interval)||20)*1e3:Pt)}catch(h){console.warn(h)}}O();function v(){r.current?.readyState===WebSocket.OPEN||r.current?.readyState===WebSocket.CONNECTING||(r.current=new WebSocket(a),r.current.onmessage=d.current,r.current.onopen=()=>{g.current=it},r.current.onclose=()=>{if(!navigator.onLine)return;setTimeout(v,g.current);const h=3e4;g.current=Math.min(g.current*2,h)})}function b(){v()}window.addEventListener("online",b);function C(h){clearInterval(i.current),i.current=window.setInterval(()=>{const V=performance.now(),_=[],W=[];y.current.forEach((z,Y)=>{if(V-z<h)return;const B=s.current.get(Y);B&&(B.hidden=!0,W.push(B),_.push(Y));const U=Q(Y),$=s.current.get(U);$&&($.hidden=!0,W.push($),_.push(U))}),W.length&&x.current.add(()=>n.update(...W)),_.forEach(z=>y.current.delete(z))},h)}return()=>{I.current&&n.renderer&&n.renderer.events.removeEventListener("viewport:ptscale",I.current),o.current.forEach(h=>h?.()),o.current.clear(),s.current.clear(),x.current.destroy(),window.removeEventListener("online",b),clearInterval(i.current)}},[e,n,c,a])}function lt(e){return Math.min(e||window.devicePixelRatio,Ft)}function vt(e,n){return Math.atan2(n.y-e.y,n.x-e.x)}function Ct({radius:e,scale:n,color:c}){const a=document.createElement("canvas"),t=a.getContext("2d");t.imageSmoothingEnabled=!1;const s=Math.ceil(e*2*n),o=s/2,r=e*.78,d=e*.33;return a.width=s,a.height=s,t.translate(o,o),t.scale(n,n),t.beginPath(),t.arc(0,0,e,0,2*Math.PI),t.fillStyle="#FFFFFF",t.fill(),t.beginPath(),t.arc(0,0,r,0,2*Math.PI),t.fillStyle=c,t.fill(),t.beginPath(),t.arc(0,0,d,0,2*Math.PI),t.fillStyle="#FFFFFF",t.fill(),a}function ht({id:e,width:n,height:c,color:a,scale:t}){const s=2*t,o=n/2*t,r=c*t,d=.6,f=.01,M=r*d,x=r,A=8*t,I=x+s+M/2+A*2,g=o*2+M+s+A*2,y=document.createElement("canvas");y.setAttribute("id",e),y.width=I,y.height=g;const i=y.getContext("2d"),O=I/2,v=g/2;i.save(),i.translate(O,v),i.rotate(-Math.PI/2),i.translate(-O,-v);const b=O,C=v-x/2+o,h=C+M;return i.shadowColor="rgba(16, 24, 40, 0.2)",i.shadowBlur=A/2,i.beginPath(),i.arc(b,C,o,Math.PI,0,!1),i.bezierCurveTo(b+o,C+r*.3,b+f*o,h,b,h),i.bezierCurveTo(b-f*o,h,b-o,C+r*.3,b-o,C),i.closePath(),i.fillStyle=a,i.fill(),i.strokeStyle="#FFFFFF",i.lineWidth=s,i.stroke(),i.restore(),y}function nt(e,n){return Math.hypot(e.x-n.x,e.y-n.y)}function Q(e){return`${e}_finery`}function dt({rendererService:e,updateQueue:n,vehicle:c,vehicleFinery:a,x:t,y:s,scale:o,angle:r}){if(c.bounds=k(t,s,c.source.width,c.source.height,o,r),c.hidden=!1,a){const d=e.getCameraState();a.bounds=k(t,s,a.source.width,a.source.height,o,bt(d.roll||0)),a.hidden=!1,n.add(()=>e.update(a,c))}else n.add(()=>e.update(c))}function J(e,n,c){return{x:e.x+(n.x-e.x)*c,y:e.y+(n.y-e.y)*c}}function ft(e,n){let c=1/0,a={index:0,t:0};for(let t=0;t<n.length-1;t++){const s=n[t],o=n[t+1],r=o.x-s.x,d=o.y-s.y,f=r*r+d*d,M=f?((e.x-s.x)*r+(e.y-s.y)*d)/f:0,x=Math.max(0,Math.min(1,M)),A=J(s,o,x),I=nt(e,A);I<c&&(c=I,a={index:t,t:x})}return a}function _t(e,n,c){const a=nt(e,n),t=Math.max(2,Math.ceil(a/c)+1),s=[];for(let o=0;o<t;o++){const r=o/(t-1),d=J(e,n,r);s.push({x:d.x,y:d.y})}return s}function Nt(e,n,c){if(!c||!c.length)return _t(e,n,10);const a=ft(e,c),t=ft(n,c),s=[],o=r=>s.push({x:r.x,y:r.y});a.index+1<c.length?o(J(c[a.index],c[a.index+1],a.t)):o(c[a.index]);for(let r=a.index+1;r<=t.index&&r<c.length;r++)o(c[r]);return t.index+1<c.length?o(J(c[t.index],c[t.index+1],t.t)):o(c[t.index]),s}function St(e,n,c,a){if(e.length<2)return()=>{};let t=null,s;const o=[];let r=0;for(let f=0;f<e.length-1;f++){const M=Math.hypot(e[f+1].x-e[f].x,e[f+1].y-e[f].y);o.push(M),r+=M}const d=f=>{t||(t=f);const M=f-t,x=Math.min(M/n,1),A=x*r;let I=0,g=0;for(;g<o.length&&I+o[g]<A;)I+=o[g],g++;g>=o.length&&(g=o.length-1);const y=e[g],i=e[Math.min(g+1,e.length-1)],O=o[g]||0,v=O===0?0:(A-I)/O,b=y.x+(i.x-y.x)*v,C=y.y+(i.y-y.y)*v,h=i.x-y.x,V=i.y-y.y,_=h===0&&V===0?0:Math.atan2(V,h);c({x:b,y:C,angle:_}),x<1?s=requestAnimationFrame(d):a&&a()};return s=requestAnimationFrame(d),()=>{s&&cancelAnimationFrame(s)}}function ot(e){return`${e.x},${e.y}`}
@@ -1,9 +1,9 @@
1
1
  import React from "react";
2
- import type { MarketMaterial } from "../data/Data";
2
+ import { MarketMaterial } from "../data/Data";
3
3
  import "./MarketMaterialList.scss";
4
4
  export type MarketMaterialListProps = {
5
5
  list: MarketMaterial[];
6
6
  };
7
- declare const MarketMaterialList: React.FC<MarketMaterialListProps>;
8
- export default MarketMaterialList;
7
+ declare const _default: React.FunctionComponent<MarketMaterialListProps>;
8
+ export default _default;
9
9
  //# sourceMappingURL=MarketMaterialList.d.ts.map
@@ -1 +1 @@
1
- import{jsx as a,jsxs as t}from"react/jsx-runtime";import{t as i}from"../utils/i18n";import"./MarketMaterialList.scss";const s=({fileName:e,path:r})=>t("a",{className:"market-materials__item",href:r,download:!0,target:"_blank",rel:"noopener noreferrer","aria-label":`Download ${e}`,children:[a("div",{className:"market-materials__item-icon",children:a("i",{className:"icon-file-solid"})}),a("div",{className:"market-materials__item-name",children:a("span",{children:e})}),a("div",{className:"market-materials__item-download",children:a("i",{className:"icon-download"})})]}),l=({list:e})=>t("div",{className:"market-materials",children:[a("div",{className:"market-materials__title font-medium",children:i("Read More")}),a("div",{className:"market-materials__list",role:"list",children:e.map(r=>a(s,{...r},r.path))})]});export default l;
1
+ import{jsx as a,jsxs as t}from"react/jsx-runtime";import{observer as i}from"mobx-react-lite";import{t as s}from"../utils/i18n";import"./MarketMaterialList.scss";const l=({fileName:e,path:r})=>t("a",{className:"market-materials__item",href:r,download:!0,target:"_blank",rel:"noopener noreferrer","aria-label":`Download ${e}`,children:[a("div",{className:"market-materials__item-icon",children:a("i",{className:"icon-file-solid"})}),a("div",{className:"market-materials__item-name",children:a("span",{children:e})}),a("div",{className:"market-materials__item-download",children:a("i",{className:"icon-download"})})]}),m=({list:e})=>t("div",{className:"market-materials",children:[a("div",{className:"market-materials__title font-medium",children:s("Read More")}),a("div",{className:"market-materials__list",role:"list",children:e.map(r=>a(l,{...r},r.path))})]});export default i(m);
@@ -1 +1 @@
1
- import{jsx as e,jsxs as s,Fragment as y}from"react/jsx-runtime";import N,{Suspense as S}from"react";import{useLocalStore as L,useObserver as h}from"mobx-react-lite";import{autorun as C}from"mobx";import{t as m}from"../utils/i18n";import r from"../data";import u from"../utils/is-iframe";import i,{uiState as n}from"../store";import x from"./Badge";const D=N.lazy(()=>import("./ViewerMenuPanel"));import g from"../tools/logger";import f from"../tools/settings";import"./Menu.scss";import"./Menu_custom.scss";const d=/^https?:\/\//i.test(r.logo)?r.logo:window.__dataUrlBase+r.logo;g.log("Logo url: ",d),window.setTimeout(function(){const t=new Image;t.onload=()=>{g.log("Logo image loaded")},t.crossOrigin="anonymous",t.src=d},1500);function T({allowConsent:t,isGDPR:c}){const a=L(()=>({logoVisibility:"visible",shown:!1,shownTimeout:void 0,modalOpen:!1,selectedCategoryIds:(n.selectedCategoryFilters||[]).map(o=>Number(o.id)),pendingSelectedIds:(n.selectedCategoryFilters||[]).map(o=>Number(o.id))}));C(()=>{n.menu?(a.shownTimeout=window.setTimeout(()=>a.shown=!0,1),n.list.type==="sessions"&&i.searchStore.selectSearch()):(a.shown=!1,a.shownTimeout&&window.clearTimeout(a.shownTimeout))});function p(o){if(n.kiosk)return o.preventDefault()}function k(o){o.preventDefault(),w(),i.searchStore.selectSearch()}function v(o){o.preventDefault(),i.fp?.onLeaveEvent?.()}function _(o){o.preventDefault(),i.clickLanguage()}return h(()=>{if(!n.menu)return null;const o=i.boothStore.booths.filter(l=>l.bookmarked).map(l=>l.name),b=window.__fpSettings?.fpVer?`https://api-v2.expofp.com/export/v2/${f.EXPO}/pdf`:`https://api.expofp.com/service/convert/${f.EXPO}/pdf`;return s("div",{className:`menu ${a.shown?"shown":""}`,children:[u?e("div",{className:"menu__cover -empty"}):e("div",{className:"menu__cover",children:e("a",{href:r.homeUrl,target:"_blank",rel:"noopener noreferrer",onClick:p,children:e("img",{src:d,onError:()=>a.logoVisibility="hidden",style:{visibility:a.logoVisibility},alt:"",crossOrigin:"anonymous"})})}),s("div",{className:"menu__content",children:[n.viewerMode&&e(S,{fallback:null,children:e(D,{})}),!n.viewerMode&&e("a",{href:"/#",onClick:k,className:"menu__item",children:m("Search")}),!r.hideEventHomeLink&&!n.kiosk&&!u&&!!r.homeUrl&&s("a",{href:r.homeUrl,target:"_blank",className:"menu__item",rel:"noopener noreferrer",children:[m("Event Home").replace(/ /g,"\xA0"),"\xA0",e("i",{className:"icon-link-external"})]}),!r.hideRegisterToAttendLink&&!n.kiosk&&!u&&!!r.registerUrl&&s("a",{href:r.registerUrl,target:"_blank",className:"menu__item",rel:"noopener noreferrer",children:[m("Register to Attend").replace(/ /g,"\xA0"),"\xA0",e("i",{className:"icon-link-external"})]}),!n.hideLanguage&&!r.hideLanguage&&!r.hideLanguageLink&&s("a",{href:"?language",onClick:_,className:"menu__item -language",children:[s("span",{children:[m("Language")," "]}),s("span",{className:"menu__icons",children:[e(x,{variant:"gray",size:"md",noMargins:!0,children:i.languageStore.language?.name}),e("i",{className:"icon-chevron-right"})]})]}),!r.hideDownloadPdfLink&&!n.kiosk&&e("a",{className:"menu__item -pdf",target:"_blank",rel:"noopener noreferrer",href:`${b}/?exhibitors=true&bookmarks=${o.join(",")}&layers=${(i.layerStore.layers.length>=i.layerStore.visible.length?i.layerStore.visible.map(l=>l.name).join(","):"").replace(/&/g,"%26")}`,children:m("Download PDF")}),t===void 0&&c&&e("a",{href:"/#",className:"menu__item -cookie-consent",onClick:l=>{l.preventDefault(),n.hideCookieConsent=!1},children:m("Review Cookie Consent")}),n.viewerMode&&e("a",{href:"/#",className:"menu__item -leave-event menu__leave-link",onClick:v,children:m("Select another event")})]})]})});function w(){n.menu=!1}}export default({isGDPR:t,allowConsent:c})=>h(()=>e(y,{children:n.menu?e(T,{isGDPR:t,allowConsent:c}):null}));
1
+ import{jsx as e,jsxs as s,Fragment as y}from"react/jsx-runtime";import L,{Suspense as N}from"react";import{useLocalStore as S,useObserver as h}from"mobx-react-lite";import{autorun as C}from"mobx";import{t as m,getLocale as x,getLocales as D}from"../utils/i18n";import r from"../data";import d from"../utils/is-iframe";import a,{uiState as n}from"../store";import T from"./Badge";const U=L.lazy(()=>import("./ViewerMenuPanel"));import f from"../tools/logger";import g from"../tools/settings";import"./Menu.scss";import"./Menu_custom.scss";const u=/^https?:\/\//i.test(r.logo)?r.logo:window.__dataUrlBase+r.logo;f.log("Logo url: ",u),window.setTimeout(function(){const l=new Image;l.onload=()=>{f.log("Logo image loaded")},l.crossOrigin="anonymous",l.src=u},1500);function E({allowConsent:l,isGDPR:c}){const t=S(()=>({logoVisibility:"visible",shown:!1,shownTimeout:void 0,modalOpen:!1,selectedCategoryIds:(n.selectedCategoryFilters||[]).map(o=>Number(o.id)),pendingSelectedIds:(n.selectedCategoryFilters||[]).map(o=>Number(o.id))}));C(()=>{n.menu?(t.shownTimeout=window.setTimeout(()=>t.shown=!0,1),n.list.type==="sessions"&&a.searchStore.selectSearch()):(t.shown=!1,t.shownTimeout&&window.clearTimeout(t.shownTimeout))});function p(o){if(n.kiosk)return o.preventDefault()}function k(o){o.preventDefault(),w(),a.searchStore.selectSearch()}function v(o){o.preventDefault(),a.fp?.onLeaveEvent?.()}function _(o){o.preventDefault(),a.clickLanguage()}return h(()=>{if(!n.menu)return null;const o=a.boothStore.booths.filter(i=>i.bookmarked).map(i=>i.name),b=window.__fpSettings?.fpVer?`https://api-v2.expofp.com/export/v2/${g.EXPO}/pdf`:`https://api.expofp.com/service/convert/${g.EXPO}/pdf`;return s("div",{className:`menu ${t.shown?"shown":""}`,children:[d?e("div",{className:"menu__cover -empty"}):e("div",{className:"menu__cover",children:e("a",{href:r.homeUrl,target:"_blank",rel:"noopener noreferrer",onClick:p,children:e("img",{src:u,onError:()=>t.logoVisibility="hidden",style:{visibility:t.logoVisibility},alt:"",crossOrigin:"anonymous"})})}),s("div",{className:"menu__content",children:[n.viewerMode&&e(N,{fallback:null,children:e(U,{})}),!n.viewerMode&&e("a",{href:"/#",onClick:k,className:"menu__item",children:m("Search")}),!r.hideEventHomeLink&&!n.kiosk&&!d&&!!r.homeUrl&&s("a",{href:r.homeUrl,target:"_blank",className:"menu__item",rel:"noopener noreferrer",children:[m("Event Home").replace(/ /g,"\xA0"),"\xA0",e("i",{className:"icon-link-external"})]}),!r.hideRegisterToAttendLink&&!n.kiosk&&!d&&!!r.registerUrl&&s("a",{href:r.registerUrl,target:"_blank",className:"menu__item",rel:"noopener noreferrer",children:[m("Register to Attend").replace(/ /g,"\xA0"),"\xA0",e("i",{className:"icon-link-external"})]}),!n.hideLanguage&&!r.hideLanguage&&!r.hideLanguageLink&&s("a",{href:"?language",onClick:_,className:"menu__item -language",children:[s("span",{children:[m("Language")," "]}),s("span",{className:"menu__icons",children:[e(T,{variant:"gray",size:"md",noMargins:!0,children:D().find(i=>i.id===x())?.name}),e("i",{className:"icon-chevron-right"})]})]}),!r.hideDownloadPdfLink&&!n.kiosk&&e("a",{className:"menu__item -pdf",target:"_blank",rel:"noopener noreferrer",href:`${b}/?exhibitors=true&bookmarks=${o.join(",")}&layers=${(a.layerStore.layers.length>=a.layerStore.visible.length?a.layerStore.visible.map(i=>i.name).join(","):"").replace(/&/g,"%26")}`,children:m("Download PDF")}),l===void 0&&c&&e("a",{href:"/#",className:"menu__item -cookie-consent",onClick:i=>{i.preventDefault(),n.hideCookieConsent=!1},children:m("Review Cookie Consent")}),n.viewerMode&&e("a",{href:"/#",className:"menu__item -leave-event menu__leave-link",onClick:v,children:m("Select another event")})]})]})});function w(){n.menu=!1}}export default({isGDPR:l,allowConsent:c})=>h(()=>e(y,{children:n.menu?e(E,{isGDPR:l,allowConsent:c}):null}));
@@ -1 +1 @@
1
- import{jsx as i,jsxs as u}from"react/jsx-runtime";import{useObserver as m}from"mobx-react-lite";import{useCallback as p}from"react";import t,{searchStore as c}from"../store";import{t as s}from"../utils/i18n";import S from"classnames";import"./MobileToggleButton.scss";function b(){const o=p(()=>{t.uiState.isOverlayOpen&&t.uiState.overlaySize==="full"?t.uiState.desiredOverlaySize="small":c.openOverlayWithoutInputFocus()},[]);return m(()=>{const a=t.uiState.list.type==="route-planner";if(!(t.uiState.overlayPosition==="bottom"&&(a||!t.uiState.details&&!t.uiState.menu&&t.uiState.list.type!=="language"&&t.uiState.list.type!=="bookmarks"&&t.uiState.list.type!=="sessions")))return null;const e=!t.uiState.isOverlayOpen||t.uiState.overlaySize!=="full",l=e?s("List"):s("Map"),n=e?"is-list":"is-map",r=e?"icon-list":"icon-map";return u("button",{className:S("efp-mobile-toggle-button",{"is-with-banner":t.uiState.isBannerVisible},n),onClick:o,type:"button","aria-label":e?s("List"):s("Map"),children:[i("i",{className:r}),i("span",{className:"efp-mobile-toggle-button__text",children:l})]})})}export default b;
1
+ import{jsx as s,jsxs as u}from"react/jsx-runtime";import{useObserver as m}from"mobx-react-lite";import{useCallback as p}from"react";import t,{searchStore as c}from"../store";import{t as i}from"../utils/i18n";import{LANGUAGE_TYPE as S}from"../constants";import b from"classnames";import"./MobileToggleButton.scss";function f(){const o=p(()=>{t.uiState.isOverlayOpen&&t.uiState.overlaySize==="full"?t.uiState.desiredOverlaySize="small":c.openOverlayWithoutInputFocus()},[]);return m(()=>{const a=t.uiState.list.type==="route-planner";if(!(t.uiState.overlayPosition==="bottom"&&(a||!t.uiState.details&&!t.uiState.menu&&t.uiState.list.type!==S&&t.uiState.list.type!=="bookmarks"&&t.uiState.list.type!=="sessions")))return null;const e=!t.uiState.isOverlayOpen||t.uiState.overlaySize!=="full",l=e?i("List"):i("Map"),r=e?"is-list":"is-map",n=e?"icon-list":"icon-map";return u("button",{className:b("efp-mobile-toggle-button",{"is-with-banner":t.uiState.isBannerVisible},r),onClick:o,type:"button","aria-label":e?i("List"):i("Map"),children:[s("i",{className:n}),s("span",{className:"efp-mobile-toggle-button__text",children:l})]})})}export default f;
@@ -28,6 +28,6 @@ export interface MultiSelectGroupsProps {
28
28
  itemCountProvider?: (item: MultiSelectGroupItem) => number;
29
29
  customItemRenderer?: (item: MultiSelectGroupItem, isSelected: boolean) => React.ReactNode;
30
30
  }
31
- declare const MultiSelectGroups: React.FC<MultiSelectGroupsProps>;
32
- export default MultiSelectGroups;
31
+ declare const _default: React.FunctionComponent<MultiSelectGroupsProps>;
32
+ export default _default;
33
33
  //# sourceMappingURL=MultiSelectGroups.d.ts.map
@@ -1 +1 @@
1
- import{Fragment as F,jsx as o,jsxs as c}from"react/jsx-runtime";import I,{useCallback as g,useState as M,useMemo as P}from"react";import v from"classnames";import{t as m}from"../utils/i18n";import"./MultiSelectGroups.scss";const q=I.memo(({item:r,isSelected:s,variant:p,showCount:f,count:h,onClick:u,customRenderer:d})=>d?o(F,{children:d(r,s)}):c("button",{type:"button",className:v("multi-select-groups__item",{"is-selected":s,"is-disabled":r.disabled,[`multi-select-groups__item--${p}`]:p}),onClick:()=>!r.disabled&&u(r.id),disabled:r.disabled,"aria-pressed":s,children:[o("div",{className:"multi-select-groups__item-name",children:r.name}),f&&h>0&&o("span",{className:"multi-select-groups__item-count",children:h})]},r.id)),L=({groups:r=[],selectedIds:s=[],showItemCounts:p=!0,showGroupActions:f=!0,variant:h="default",maxItemsVisible:u=20,itemCountProvider:d,customItemRenderer:S,onChange:a})=>{const[G,y]=M(new Set),A=g(e=>{const t=s.includes(e)?s.filter(l=>l!==e):[...s,e];a(t)},[s,a]),C=g(e=>{const l=e.items.filter(n=>n.id&&!n.disabled).map(n=>n.id).filter(n=>!s.includes(n));l.length!==0&&a([...s,...l])},[s,a]),k=g(e=>{const t=new Set(e.items.map(n=>n.id)),l=s.filter(n=>!t.has(n));a(l)},[s,a]),x=g(e=>{y(t=>{const l=new Set(t);return l.has(e)?l.delete(e):l.add(e),l})},[]),j=e=>e.count!==void 0?e.count:e.countProvider?e.countProvider():d?d(e):0,N=P(()=>new Set(s),[s]);return!Array.isArray(r)||!r.length?null:o("div",{className:"multi-select-groups",children:o("div",{className:"multi-select-groups__list",children:r.map(e=>{if(!e?.groupName||!Array.isArray(e.items))return null;const t=e.items.filter(i=>i.id),l=t.filter(i=>N.has(i.id)),n=l.length===t.length&&t.length>0,E=l.length>0&&!n,_=G.has(e.groupName),b=_||t.length<=u?t:t.slice(0,u),w=t.length-b.length>0?t.slice(u).filter(i=>N.has(i.id)).length:0;return c("div",{className:v("multi-select-groups__group",{"multi-select-groups__group--full-width":e.fullWidth},e.customGroupClass),children:[c("div",{className:"multi-select-groups__group-header",children:[o("div",{className:"multi-select-groups__group-title",children:e.groupName}),f&&e.showGroupActions!==!1&&c("div",{className:"multi-select-groups__group-actions",children:[!n&&o("button",{type:"button",className:"multi-select-groups__action-btn",onClick:()=>C(e),children:m("Select all")}),(E||n)&&o("button",{type:"button",className:"multi-select-groups__action-btn",onClick:()=>k(e),children:m("Clear all")})]})]}),c("div",{className:"multi-select-groups__group-items",children:[b.map(i=>o(q,{item:i,isSelected:N.has(i.id),variant:h,showCount:p,count:j(i),onClick:A,customRenderer:S},i.id)),t.length>u&&c("button",{type:"button",className:"multi-select-groups__show-more-btn",onClick:()=>x(e.groupName),children:[o("i",{className:_?"icon-chevron-up":"icon-chevron-down","aria-hidden":"true"}),_?m("Show Less"):m("Show More"),!_&&w>0&&c("span",{className:"multi-select-groups__show-more-badge",children:[w," ",m("selected")]})]})]})]},e.groupName)})})})};export default L;
1
+ import{Fragment as F,jsx as o,jsxs as c}from"react/jsx-runtime";import I,{useCallback as g,useState as M,useMemo as P}from"react";import{observer as q}from"mobx-react-lite";import v from"classnames";import{t as m}from"../utils/i18n";import"./MultiSelectGroups.scss";const L=I.memo(({item:r,isSelected:s,variant:p,showCount:f,count:h,onClick:u,customRenderer:d})=>d?o(F,{children:d(r,s)}):c("button",{type:"button",className:v("multi-select-groups__item",{"is-selected":s,"is-disabled":r.disabled,[`multi-select-groups__item--${p}`]:p}),onClick:()=>!r.disabled&&u(r.id),disabled:r.disabled,"aria-pressed":s,children:[o("div",{className:"multi-select-groups__item-name",children:r.name}),f&&h>0&&o("span",{className:"multi-select-groups__item-count",children:h})]},r.id)),R=({groups:r=[],selectedIds:s=[],showItemCounts:p=!0,showGroupActions:f=!0,variant:h="default",maxItemsVisible:u=20,itemCountProvider:d,customItemRenderer:S,onChange:a})=>{const[G,y]=M(new Set),A=g(e=>{const t=s.includes(e)?s.filter(l=>l!==e):[...s,e];a(t)},[s,a]),C=g(e=>{const l=e.items.filter(n=>n.id&&!n.disabled).map(n=>n.id).filter(n=>!s.includes(n));l.length!==0&&a([...s,...l])},[s,a]),k=g(e=>{const t=new Set(e.items.map(n=>n.id)),l=s.filter(n=>!t.has(n));a(l)},[s,a]),x=g(e=>{y(t=>{const l=new Set(t);return l.has(e)?l.delete(e):l.add(e),l})},[]),j=e=>e.count!==void 0?e.count:e.countProvider?e.countProvider():d?d(e):0,N=P(()=>new Set(s),[s]);return!Array.isArray(r)||!r.length?null:o("div",{className:"multi-select-groups",children:o("div",{className:"multi-select-groups__list",children:r.map(e=>{if(!e?.groupName||!Array.isArray(e.items))return null;const t=e.items.filter(i=>i.id),l=t.filter(i=>N.has(i.id)),n=l.length===t.length&&t.length>0,E=l.length>0&&!n,_=G.has(e.groupName),b=_||t.length<=u?t:t.slice(0,u),w=t.length-b.length>0?t.slice(u).filter(i=>N.has(i.id)).length:0;return c("div",{className:v("multi-select-groups__group",{"multi-select-groups__group--full-width":e.fullWidth},e.customGroupClass),children:[c("div",{className:"multi-select-groups__group-header",children:[o("div",{className:"multi-select-groups__group-title",children:e.groupName}),f&&e.showGroupActions!==!1&&c("div",{className:"multi-select-groups__group-actions",children:[!n&&o("button",{type:"button",className:"multi-select-groups__action-btn",onClick:()=>C(e),children:m("Select all")}),(E||n)&&o("button",{type:"button",className:"multi-select-groups__action-btn",onClick:()=>k(e),children:m("Clear all")})]})]}),c("div",{className:"multi-select-groups__group-items",children:[b.map(i=>o(L,{item:i,isSelected:N.has(i.id),variant:h,showCount:p,count:j(i),onClick:A,customRenderer:S},i.id)),t.length>u&&c("button",{type:"button",className:"multi-select-groups__show-more-btn",onClick:()=>x(e.groupName),children:[o("i",{className:_?"icon-chevron-up":"icon-chevron-down","aria-hidden":"true"}),_?m("Show Less"):m("Show More"),!_&&w>0&&c("span",{className:"multi-select-groups__show-more-badge",children:[w," ",m("selected")]})]})]})]},e.groupName)})})})};export default q(R);
@@ -1 +1 @@
1
- import{jsx as o,jsxs as v}from"react/jsx-runtime";import{useMemo as S,useCallback as a}from"react";import{observer as y}from"mobx-react-lite";import g,{uiState as e}from"../store";import h from"./Overlay";import k from"./Menu";import C from"./Search";import z from"./Exhibitor";import O from"./Booth/Booth";import b from"./Bookmarks";import x from"./Visited";import M from"./Language";import A from"./Category";import P from"./Wayfinding";import E from"./Filter";import R from"./Sessions";import j from"./Speakers";import w from"./Tours";import F from"./TourPoints";import B from"./RoutePlanner/RoutePlanner";import I from"./Event";import _ from"./Speaker";import T from"classnames";const $={full:"full",medium:"medium",small:"medium"},D=t=>$[t],L=y(({isGDPR:t,allowConsent:l})=>{const m=a(r=>{e.desiredOverlaySize=r},[]),n=a(r=>{e.setOverlayScrolled(r)},[]),c=D(e.overlaySize),d=e.selectedRoute?.from&&e.selectedRoute?.to,f=e.list.type==="search"&&!e.details?9:d?7:3,u=e.fullSizeOffset,p=S(()=>{const r={"-backdrop":e.canvasStarted&&e.shouldUseBackdrop&&!e.dimmed&&!e.galleryActive,"-no-transition":e.dimmed,"-gallery-active":e.galleryActive,collapsed:e.overlayCollapsed,kiosk:e.kiosk,start:e.overlayPosition==="left",bottom:e.overlayPosition!=="left",[e.overlaySize]:!0},i=T(r),s=e.overlayInterfaceClasses.join(" ");return s?`${i} ${s}`:i},[e.canvasStarted,e.shouldUseBackdrop,e.dimmed,e.galleryActive,e.overlayCollapsed,e.kiosk,e.inIdle,e.setKioskModeEnabled,e.overlayPosition,e.overlaySize,e.overlayInterfaceClasses]);return v(h,{open:e.isOverlayOpen,size:c,particles:e.isFeaturedExhibitorActive,className:p,mediumSizeMultiplier:f,fullSizeOffset:u,disableDrag:e.viewerMode&&e.menu,forceFull:e.viewerMode&&e.menu,onChangeSize:m,onScrollStateChange:n,children:[o(k,{isGDPR:t,allowConsent:l}),o(C,{}),o(z,{}),o(O,{}),o(b,{}),o(x,{}),o(M,{}),o(A,{}),o(P,{}),o(E,{}),o(R,{showFilters:!0}),o(j,{showFilters:!0}),o(w,{}),o(F,{}),o(B,{}),o(I,{}),o(_,{})]},`overlay-container-language-${g.languageStore.language?.id}`)});export default L;
1
+ import{jsx as o,jsxs as v}from"react/jsx-runtime";import{useMemo as S,useCallback as l}from"react";import{observer as y}from"mobx-react-lite";import{uiState as e}from"../store";import h from"./Overlay";import k from"./Menu";import C from"./Search";import z from"./Exhibitor";import g from"./Booth/Booth";import O from"./Bookmarks";import b from"./Visited";import x from"./Language";import M from"./Category";import A from"./Wayfinding";import P from"./Filter";import E from"./Sessions";import R from"./Speakers";import j from"./Tours";import w from"./TourPoints";import F from"./RoutePlanner/RoutePlanner";import B from"./Event";import I from"./Speaker";import _ from"classnames";const T={full:"full",medium:"medium",small:"medium"},D=t=>T[t],L=y(({isGDPR:t,allowConsent:a})=>{const m=l(r=>{e.desiredOverlaySize=r},[]),n=l(r=>{e.setOverlayScrolled(r)},[]),c=D(e.overlaySize),d=e.selectedRoute?.from&&e.selectedRoute?.to,f=e.list.type==="search"&&!e.details?9:d?7:3,p=e.fullSizeOffset,u=S(()=>{const r={"-backdrop":e.canvasStarted&&e.shouldUseBackdrop&&!e.dimmed&&!e.galleryActive,"-no-transition":e.dimmed,"-gallery-active":e.galleryActive,collapsed:e.overlayCollapsed,kiosk:e.kiosk,start:e.overlayPosition==="left",bottom:e.overlayPosition!=="left",[e.overlaySize]:!0},i=_(r),s=e.overlayInterfaceClasses.join(" ");return s?`${i} ${s}`:i},[e.canvasStarted,e.shouldUseBackdrop,e.dimmed,e.galleryActive,e.overlayCollapsed,e.kiosk,e.inIdle,e.setKioskModeEnabled,e.overlayPosition,e.overlaySize,e.overlayInterfaceClasses]);return v(h,{open:e.isOverlayOpen,size:c,particles:e.isFeaturedExhibitorActive,className:u,mediumSizeMultiplier:f,fullSizeOffset:p,disableDrag:e.viewerMode&&e.menu,forceFull:e.viewerMode&&e.menu,onChangeSize:m,onScrollStateChange:n,children:[o(k,{isGDPR:t,allowConsent:a}),o(C,{}),o(z,{}),o(g,{}),o(O,{}),o(b,{}),o(x,{}),o(M,{}),o(A,{}),o(P,{}),o(E,{showFilters:!0}),o(R,{showFilters:!0}),o(j,{}),o(w,{}),o(F,{}),o(B,{}),o(I,{})]})});export default L;
@@ -7,6 +7,6 @@ export interface RebookingNotesProps {
7
7
  date?: string;
8
8
  onClickSave?: (val: string) => void;
9
9
  }
10
- declare const RebookingNotes: React.FC<RebookingNotesProps>;
11
- export default RebookingNotes;
10
+ declare const _default: React.FunctionComponent<RebookingNotesProps>;
11
+ export default _default;
12
12
  //# sourceMappingURL=RebookingNotes.d.ts.map
@@ -1 +1 @@
1
- import{jsx as e,jsxs as i}from"react/jsx-runtime";import{useEffect as c,useState as b}from"react";import m from"./Button";import{t as s}from"../utils/i18n";import"./RebookingNotes.scss";const g=({state:h="default",value:o,date:k,onClickSave:r})=>{const[a,n]=b(o);c(()=>{n(o)},[o]);const l=t=>n(t.target.value),_=()=>{n(o)},d=()=>{const t=a;r(t),n(t)};return i("div",{className:"rebooking-notes",children:[e("div",{className:"rebooking-notes__view-header",children:e("strong",{id:"note-label",children:s("Note")})}),i("div",{className:"rebooking-notes__edit",children:[e("div",{className:"rebooking-notes__val",children:e("textarea",{id:"rebooking-notes",name:"rebooking-notes",value:a,onChange:l,"aria-labelledby":"note-label"})}),e("div",{className:"rebooking-notes__buttons",children:e(m,{inline:!0,onClick:d,disabled:o===a,"aria-label":s("Save rebooking note"),children:s("Save note")})})]})]})};export default g;
1
+ import{jsx as e,jsxs as s}from"react/jsx-runtime";import{useEffect as c,useState as b}from"react";import{observer as m}from"mobx-react-lite";import g from"./Button";import{t as r}from"../utils/i18n";import"./RebookingNotes.scss";const h=({state:k="default",value:o,date:v,onClickSave:i})=>{const[a,n]=b(o);c(()=>{n(o)},[o]);const l=t=>n(t.target.value),_=()=>{n(o)},d=()=>{const t=a;i(t),n(t)};return s("div",{className:"rebooking-notes",children:[e("div",{className:"rebooking-notes__view-header",children:e("strong",{id:"note-label",children:r("Note")})}),s("div",{className:"rebooking-notes__edit",children:[e("div",{className:"rebooking-notes__val",children:e("textarea",{id:"rebooking-notes",name:"rebooking-notes",value:a,onChange:l,"aria-labelledby":"note-label"})}),e("div",{className:"rebooking-notes__buttons",children:e(g,{inline:!0,onClick:d,disabled:o===a,"aria-label":r("Save rebooking note"),children:r("Save note")})})]})]})};export default m(h);
@@ -19,6 +19,6 @@ export interface RebookingRadioGroupProps {
19
19
  onChange: (event: any) => void;
20
20
  }
21
21
  export declare const defaultRebookingOptions: RebookingOption[];
22
- declare const RebookingRadioGroup: React.FC<RebookingRadioGroupProps>;
23
- export default RebookingRadioGroup;
22
+ declare const _default: React.FunctionComponent<RebookingRadioGroupProps>;
23
+ export default _default;
24
24
  //# sourceMappingURL=RebookingRadioGroup.d.ts.map
@@ -1 +1 @@
1
- import{jsx as a,jsxs as o}from"react/jsx-runtime";import{t as r}from"../utils/i18n";import"./RebookingRadioGroup.scss";export const defaultRebookingOptions=[{name:"offer",value:"0",label:r("Unasked"),iconName:"icon-question-mark",disabled:!1,color:{primary:"#8E99AB",secondary:"#EAEFF9"}},{name:"offer",value:"1",label:r("Accepted"),iconName:"icon-checkmark",disabled:!1,color:{primary:"#32B175",secondary:"#E4FFF2"}},{name:"offer",value:"2",label:r("Rejected"),iconName:"icon-close",disabled:!1,color:{primary:"#E1463C",secondary:"#FFEDEB"}},{name:"offer",value:"3",label:r("Undecided"),iconName:"icon-switch-horizontal",disabled:!1,color:{primary:"#FABA27",secondary:"#FFF7E5"}}];const n=({options:l,checked:i,showTitle:d,onChange:c})=>{const s=()=>l.map((e,m)=>o("div",{className:"rebooking-radio",style:{"--rebooking-color-primary":`${e.color.primary}`,"--rebooking-color-secondary":`${e.color.secondary}`},children:[a("input",{type:"radio",name:e.name,value:e.value,id:e.value,checked:e.value===i,disabled:e.disabled,onChange:c}),o("label",{htmlFor:e.value,children:[a("div",{className:"rebooking-radio__label",children:e.label}),a("div",{className:"rebooking-radio__icon",children:a("i",{className:e.iconName,"aria-hidden":"true"})})]})]},e.value));return o("div",{className:"rebooking-radio-group",children:[d&&a("div",{className:"rebooking-radio-group__title",children:r("Choose Rebooking offer")}),a("div",{className:"rebooking-radio-group__options",children:s()})]})};export default n;
1
+ import{jsx as a,jsxs as o}from"react/jsx-runtime";import{observer as n}from"mobx-react-lite";import{t as r}from"../utils/i18n";import"./RebookingRadioGroup.scss";export const defaultRebookingOptions=[{name:"offer",value:"0",label:r("Unasked"),iconName:"icon-question-mark",disabled:!1,color:{primary:"#8E99AB",secondary:"#EAEFF9"}},{name:"offer",value:"1",label:r("Accepted"),iconName:"icon-checkmark",disabled:!1,color:{primary:"#32B175",secondary:"#E4FFF2"}},{name:"offer",value:"2",label:r("Rejected"),iconName:"icon-close",disabled:!1,color:{primary:"#E1463C",secondary:"#FFEDEB"}},{name:"offer",value:"3",label:r("Undecided"),iconName:"icon-switch-horizontal",disabled:!1,color:{primary:"#FABA27",secondary:"#FFF7E5"}}];const m=({options:l,checked:i,showTitle:d,onChange:c})=>{const s=()=>l.map((e,b)=>o("div",{className:"rebooking-radio",style:{"--rebooking-color-primary":`${e.color.primary}`,"--rebooking-color-secondary":`${e.color.secondary}`},children:[a("input",{type:"radio",name:e.name,value:e.value,id:e.value,checked:e.value===i,disabled:e.disabled,onChange:c}),o("label",{htmlFor:e.value,children:[a("div",{className:"rebooking-radio__label",children:e.label}),a("div",{className:"rebooking-radio__icon",children:a("i",{className:e.iconName,"aria-hidden":"true"})})]})]},e.value));return o("div",{className:"rebooking-radio-group",children:[d&&a("div",{className:"rebooking-radio-group__title",children:r("Choose Rebooking offer")}),a("div",{className:"rebooking-radio-group__options",children:s()})]})};export default n(m);
@@ -3,6 +3,6 @@ import "./RouteQR.scss";
3
3
  export interface RouteQRProps {
4
4
  url?: string;
5
5
  }
6
- declare const RouteQR: React.FC<RouteQRProps>;
7
- export default RouteQR;
6
+ declare const _default: React.FunctionComponent<RouteQRProps>;
7
+ export default _default;
8
8
  //# sourceMappingURL=RouteQR.d.ts.map
@@ -1 +1 @@
1
- import{jsx as e,jsxs as s}from"react/jsx-runtime";import{Suspense as l}from"react";import{t as o}from"../utils/i18n";import t from"./QrCode";import"./RouteQR.scss";const a=({url:r})=>e(l,{fallback:null,children:e("div",{className:"route-qr",children:s("div",{className:"route-qr__body",children:[e("div",{className:"route-qr__code",role:"img","aria-label":o("QR code to open the route on your phone"),children:e(t,{value:r,size:80})}),e("div",{className:"route-qr__label",children:o("Scan to see route on your phone")})]})})});export default a;
1
+ import{jsx as e,jsxs as s}from"react/jsx-runtime";import{Suspense as t}from"react";import{observer as l}from"mobx-react-lite";import{t as r}from"../utils/i18n";import a from"./QrCode";import"./RouteQR.scss";const i=({url:o})=>e(t,{fallback:null,children:e("div",{className:"route-qr",children:s("div",{className:"route-qr__body",children:[e("div",{className:"route-qr__code",role:"img","aria-label":r("QR code to open the route on your phone"),children:e(a,{value:o,size:80})}),e("div",{className:"route-qr__label",children:r("Scan to see route on your phone")})]})})});export default l(i);
@@ -1 +1 @@
1
- import{jsx as d,jsxs as b}from"react/jsx-runtime";import{useMemo as S}from"react";import{useObserver as E}from"mobx-react-lite";import{observer as O}from"mobx-react-lite";import n,{uiState as i}from"../store";import{Schedule as F}from"./";import{ShortcutsToolbar as j}from"./Shortcuts";import{t as w}from"../utils/i18n";import I from"fuse.js";import"./Sessions.scss";const N=O(({showFilters:m=!0})=>{const T=n.eventStore.eventItems,{filters:{date:{value:a},timeOfDay:{value:f},sortOrder:{value:p},showBookmarksOnly:{value:h},showLiveOnly:{value:k},selectedTracks:{value:v},selectedVenues:{value:D}}}=n.sessionsFilterStore.state,y=S(()=>{const o=new Date;o.setHours(0,0,0,0);const l=new Date(o);l.setDate(o.getDate()+1);let e=T;if(a!=="all"&&(e=e.filter(t=>{const s=new Date(t.startDate);if(s.setHours(0,0,0,0),a==="today")return s.getTime()===o.getTime();if(a==="tomorrow")return s.getTime()===l.getTime();if(a==="past"){const r=new Date;return new Date(t.endDate)<r}return!0})),f!=="all"&&a==="today"&&(e=e.filter(t=>{const r=new Date(t.startDate).getHours();switch(f){case"morning":return r>=6&&r<12;case"midday":return r>=12&&r<18;case"afternoon":return r>=18&&r<=23;default:return!0}})),i.selectedTrack&&(e=e.filter(t=>t.tracks.some(s=>s.id===i.selectedTrack.id))),h&&(e=e.filter(t=>t.bookmarked)),k){const t=new Date;e=e.filter(s=>{const r=new Date(s.startDate),u=new Date(s.endDate);return r<=t&&t<=u})}v.length>0&&(e=e.filter(t=>t.tracks.some(s=>v.includes(s.id)))),D.length>0&&(e=e.filter(t=>t.boothId&&D.includes(t.boothId)));const c=n.searchStore.searchText;if(c){const t={keys:["name"],threshold:.3,ignoreLocation:!0,includeScore:!0};e=new I(e,t).search(c).map(u=>u.item)}return e},[T,n.searchStore.searchText,a,f,i.selectedTrack,h,k,v,D,n.sessionsFilterStore.state]),g=S(()=>[...y].sort((o,l)=>{const e=new Date(o.startDate).getTime(),c=new Date(l.startDate).getTime();return p==="asc"?c-e:e-c}),[y,p]),x=o=>{n.selectEventItem(o,!0)};return E(()=>b("div",{className:"efp-sessions-content",children:[m&&d(j,{interfaceId:"sessions"}),g.length>0?d(F,{events:g,showBooths:!0,isSessions:!0,onEventClick:x}):d("div",{className:"efp-sessions-empty",children:n.sessionsFilterStore.activeFiltersCount>0||n.searchStore.searchText||i.selectedTrack?h?w("No bookmarked events found. Try adjusting your filters."):w("No events found. Try adjusting your filters."):w("No events found")})]}))}),B=O(m=>i.list.type!=="sessions"||i.details?null:d(N,{...m}));export default B;
1
+ import{jsx as d,jsxs as E}from"react/jsx-runtime";import{useMemo as S}from"react";import{observer as x}from"mobx-react-lite";import n,{uiState as i}from"../store";import{Schedule as F}from"./";import{ShortcutsToolbar as b}from"./Shortcuts";import{t as w}from"../utils/i18n";import j from"fuse.js";import"./Sessions.scss";const I=x(({showFilters:f=!0})=>{const T=n.eventStore.eventItems,{filters:{date:{value:a},timeOfDay:{value:m},sortOrder:{value:k},showBookmarksOnly:{value:h},showLiveOnly:{value:p},selectedTracks:{value:v},selectedVenues:{value:D}}}=n.sessionsFilterStore.state,y=S(()=>{const o=new Date;o.setHours(0,0,0,0);const l=new Date(o);l.setDate(o.getDate()+1);let e=T;if(a!=="all"&&(e=e.filter(t=>{const s=new Date(t.startDate);if(s.setHours(0,0,0,0),a==="today")return s.getTime()===o.getTime();if(a==="tomorrow")return s.getTime()===l.getTime();if(a==="past"){const r=new Date;return new Date(t.endDate)<r}return!0})),m!=="all"&&a==="today"&&(e=e.filter(t=>{const r=new Date(t.startDate).getHours();switch(m){case"morning":return r>=6&&r<12;case"midday":return r>=12&&r<18;case"afternoon":return r>=18&&r<=23;default:return!0}})),i.selectedTrack&&(e=e.filter(t=>t.tracks.some(s=>s.id===i.selectedTrack.id))),h&&(e=e.filter(t=>t.bookmarked)),p){const t=new Date;e=e.filter(s=>{const r=new Date(s.startDate),u=new Date(s.endDate);return r<=t&&t<=u})}v.length>0&&(e=e.filter(t=>t.tracks.some(s=>v.includes(s.id)))),D.length>0&&(e=e.filter(t=>t.boothId&&D.includes(t.boothId)));const c=n.searchStore.searchText;if(c){const t={keys:["name"],threshold:.3,ignoreLocation:!0,includeScore:!0};e=new j(e,t).search(c).map(u=>u.item)}return e},[T,n.searchStore.searchText,a,m,i.selectedTrack,h,p,v,D,n.sessionsFilterStore.state]),g=S(()=>[...y].sort((o,l)=>{const e=new Date(o.startDate).getTime(),c=new Date(l.startDate).getTime();return k==="asc"?c-e:e-c}),[y,k]),O=o=>{n.selectEventItem(o,!0)};return E("div",{className:"efp-sessions-content",children:[f&&d(b,{interfaceId:"sessions"}),g.length>0?d(F,{events:g,showBooths:!0,isSessions:!0,onEventClick:O}):d("div",{className:"efp-sessions-empty",children:n.sessionsFilterStore.activeFiltersCount>0||n.searchStore.searchText||i.selectedTrack?h?w("No bookmarked events found. Try adjusting your filters."):w("No events found. Try adjusting your filters."):w("No events found")})]})}),N=x(f=>i.list.type!=="sessions"||i.details?null:d(I,{...f}));export default N;
@@ -1,8 +1,8 @@
1
1
  import React from "react";
2
2
  import "./Share.scss";
3
3
  export interface ShareProps {
4
- title?: string;
5
- url?: string;
4
+ title: string;
5
+ url: string;
6
6
  }
7
7
  declare const Share: React.FC<ShareProps>;
8
8
  export default Share;
@@ -1 +1 @@
1
- import{jsxs as a,jsx as e}from"react/jsx-runtime";import{useState as d}from"react";import h from"classnames";import{t as l}from"../utils/i18n";import"./Share.scss";const m=({title:r,url:i})=>{const[c,n]=d(!1),s=encodeURI(i),o={facebook:`https://www.facebook.com/sharer/sharer.php?u=${s}`,xcom:`https://x.com/share?url=${s}`,linkedin:`https://linkedin.com/shareArticle?url=${s}`},t=()=>{navigator.clipboard.writeText(i),n(!0),setTimeout(()=>n(!1),2e3)};return a("div",{className:"share",children:[a("h3",{children:["Share ",r]}),a("div",{className:"share__socials",children:[a("a",{href:o.facebook,rel:"noopener noreferrer",target:"_blank",className:"share-social facebook","aria-label":`Share ${r} on Facebook`,children:[e("div",{className:"share-social__icon",children:e("i",{className:"icon-facebook","aria-hidden":"true"})}),e("div",{className:"share-social__title",children:"Facebook"})]}),a("a",{href:o.xcom,rel:"noopener noreferrer",target:"_blank",className:"share-social xcom","aria-label":`Share ${r} on X.com`,children:[e("div",{className:"share-social__icon",children:e("i",{className:"icon-twitter-x","aria-hidden":"true"})}),e("div",{className:"share-social__title",children:"X.COM"})]}),a("a",{href:o.linkedin,rel:"noopener noreferrer",target:"_blank",className:"share-social linkedin","aria-label":`Share ${r} on LinkedIn`,children:[e("div",{className:"share-social__icon",children:e("i",{className:"icon-linkedin","aria-hidden":"true"})}),e("div",{className:"share-social__title",children:"LinkedIn"})]})]}),a("div",{className:"share__copy",children:[e("span",{children:l("or copy link")}),a("div",{className:"share__copy-input",children:[e("input",{type:"text",defaultValue:i,readOnly:!0,"aria-label":`Direct link to ${r}`}),e("button",{type:"button",className:h({isCopied:c}),onClick:t,"aria-label":l("Copy link to clipboard"),children:c?a("span",{"aria-live":"polite",children:[l("Copied"),"!"]}):"Copy"})]})]})]})};export default m;
1
+ import{jsxs as a,jsx as e}from"react/jsx-runtime";import{useState as d}from"react";import h from"classnames";import{observer as m}from"mobx-react-lite";import{t as i}from"../utils/i18n";import"./Share.scss";const p=m(({title:r,url:s})=>{const[c,n]=d(!1),o=encodeURI(s),l={facebook:`https://www.facebook.com/sharer/sharer.php?u=${o}`,xcom:`https://x.com/share?url=${o}`,linkedin:`https://linkedin.com/shareArticle?url=${o}`},t=()=>{navigator.clipboard.writeText(s),n(!0),setTimeout(()=>n(!1),2e3)};return a("div",{className:"share",children:[a("h3",{children:[i("Share")," ",r]}),a("div",{className:"share__socials",children:[a("a",{href:l.facebook,rel:"noopener noreferrer",target:"_blank",className:"share-social facebook","aria-label":`Share ${r} on Facebook`,children:[e("div",{className:"share-social__icon",children:e("i",{className:"icon-facebook","aria-hidden":"true"})}),e("div",{className:"share-social__title",children:"Facebook"})]}),a("a",{href:l.xcom,rel:"noopener noreferrer",target:"_blank",className:"share-social xcom","aria-label":`Share ${r} on X.com`,children:[e("div",{className:"share-social__icon",children:e("i",{className:"icon-twitter-x","aria-hidden":"true"})}),e("div",{className:"share-social__title",children:"X.COM"})]}),a("a",{href:l.linkedin,rel:"noopener noreferrer",target:"_blank",className:"share-social linkedin","aria-label":`Share ${r} on LinkedIn`,children:[e("div",{className:"share-social__icon",children:e("i",{className:"icon-linkedin","aria-hidden":"true"})}),e("div",{className:"share-social__title",children:"LinkedIn"})]})]}),a("div",{className:"share__copy",children:[e("span",{children:i("or copy link")}),a("div",{className:"share__copy-input",children:[e("input",{type:"text",defaultValue:s,readOnly:!0,"aria-label":`Direct link to ${r}`}),e("button",{type:"button",className:h({isCopied:c}),onClick:t,"aria-label":i("Copy link to clipboard"),children:c?a("span",{"aria-live":"polite",children:[i("Copied"),"!"]}):i("Copy")})]})]})]})});export default p;
@@ -1 +1 @@
1
- import{jsx as t,jsxs as i}from"react/jsx-runtime";import{useState as C}from"react";import s from"classnames";import"./SidebarActions.scss";import{t as e}from"../utils/i18n";import r from"i18next";import S from"./CheckboxButton";const v=({className:l,inBookmark:a=!1,visited:o=!1,showVisited:c=!1,showBookmark:m=!0,showDirections:u=!0,showRoutePlanner:d=!1,showShare:p=!0,onClickBookmark:f,onClickVisited:b,onClickDirections:h,onClickRoutePlanner:k,onClickShare:N})=>{const[B,n]=C(!1),x=()=>{n(!0),f(),setTimeout(()=>{n(!1)},320)};return i("div",{className:s("efp-sidebarActions",l),role:"toolbar","aria-label":e("Sidebar Actions"),children:[u&&i("button",{type:"button",className:"efp-actionButton efp-actionButton--directions",onClick:h,title:e("Directions"),"aria-label":e("Directions"),children:[t("i",{className:"icon-directions","aria-hidden":"true"}),e("Directions")]}),c&&t(S,{className:"efp-visited-btn","aria-label":o?r.t("Visited"):r.t("Not visited"),"aria-pressed":o,checked:o,label:r.t("Visited"),onClick:b??(()=>{})}),m&&t("button",{type:"button",className:s("efp-actionButton","efp-actionButton--bookmark",{isActive:a,animate:B}),title:a?e("Remove from Bookmarks"):e("Save to Bookmarks"),"aria-label":a?e("Remove from Bookmarks"):e("Save to Bookmarks"),"aria-pressed":a,onClick:x,children:t("i",{className:a?"icon-bookmark-solid":"icon-bookmark","aria-hidden":"true"})}),d&&i("button",{type:"button",className:"efp-actionButton efp-actionButton--route-planner",title:e("Route planner"),"aria-label":e("Route planner"),onClick:k,children:[t("i",{className:"icon-route-solid","aria-hidden":"true"}),e("Route planner")]}),p&&t("button",{type:"button",className:"efp-actionButton efp-actionButton--share",title:e("Share"),"aria-label":e("Share"),onClick:N,children:t("i",{className:"icon-share","aria-hidden":"true"})})]})};export default v;
1
+ import{jsx as t,jsxs as i}from"react/jsx-runtime";import{useState as v}from"react";import s from"classnames";import{observer as C}from"mobx-react-lite";import"./SidebarActions.scss";import{t as e}from"../utils/i18n";import S from"./CheckboxButton";const x=C(({className:n,inBookmark:a=!1,visited:o=!1,showVisited:l=!1,showBookmark:c=!0,showDirections:m=!0,showRoutePlanner:u=!1,showShare:d=!0,onClickBookmark:p,onClickVisited:b,onClickDirections:f,onClickRoutePlanner:h,onClickShare:k})=>{const[N,r]=v(!1),B=()=>{r(!0),p(),setTimeout(()=>{r(!1)},320)};return i("div",{className:s("efp-sidebarActions",n),role:"toolbar","aria-label":e("Sidebar Actions"),children:[m&&i("button",{type:"button",className:"efp-actionButton efp-actionButton--directions",onClick:f,title:e("Directions"),"aria-label":e("Directions"),children:[t("i",{className:"icon-directions","aria-hidden":"true"}),e("Directions")]}),l&&t(S,{className:"efp-visited-btn","aria-label":o?e("Visited"):e("Not visited"),"aria-pressed":o,checked:o,label:e("Visited"),onClick:b??(()=>{})}),c&&t("button",{type:"button",className:s("efp-actionButton","efp-actionButton--bookmark",{isActive:a,animate:N}),title:a?e("Remove from Bookmarks"):e("Save to Bookmarks"),"aria-label":a?e("Remove from Bookmarks"):e("Save to Bookmarks"),"aria-pressed":a,onClick:B,children:t("i",{className:a?"icon-bookmark-solid":"icon-bookmark","aria-hidden":"true"})}),u&&i("button",{type:"button",className:"efp-actionButton efp-actionButton--route-planner",title:e("Route planner"),"aria-label":e("Route planner"),onClick:h,children:[t("i",{className:"icon-route-solid","aria-hidden":"true"}),e("Route planner")]}),d&&t("button",{type:"button",className:"efp-actionButton efp-actionButton--share",title:e("Share"),"aria-label":e("Share"),onClick:k,children:t("i",{className:"icon-share","aria-hidden":"true"})})]})});export default x;
@@ -35,6 +35,6 @@ export interface WayfindingTemplateProps {
35
35
  showDetailsIcon?: boolean;
36
36
  onDetailsIconClick?: () => void;
37
37
  }
38
- declare const WayfindingTemplate: React.FC<WayfindingTemplateProps>;
39
- export default WayfindingTemplate;
38
+ declare const _default: React.FunctionComponent<WayfindingTemplateProps>;
39
+ export default _default;
40
40
  //# sourceMappingURL=WayfindingTemplate.d.ts.map
@@ -1 +1 @@
1
- import{jsx as i,jsxs as e,Fragment as R}from"react/jsx-runtime";import M from"classnames";import{t as l}from"../utils/i18n";import r from"./Autocomplete";import Z from"./ToggleSwitch";import B from"./WayfindingFloorSelector";import"./WayfindingTemplate.scss";import E from"./WayInformation";import j from"./RouteQR";const k=({options:n=[],fromValue:s="",toValue:d="",showForm:o=!0,showAccessible:c=!1,showInfo:f=!1,routeFound:m=!1,infoItems:h=[],infoAccessible:a,floors:t,currentFloor:p,routeUrl:C,isKiosk:g,onChangeFrom:w,onChangeTo:v,onSwitch:y,onClickInfo:_,onClickFloor:u,onAccessibleCheck:F,showDetailsIcon:N,onDetailsIconClick:x})=>e("div",{className:M("efp-wayfinding",{isCollapsed:!o}),children:[o&&e("div",{className:"efp-wayfinding__top",children:[e("div",{className:"efp-wayfindingForm",children:[e("div",{className:"efp-wayfindingForm__icons",children:[i("div",{className:"efp-wayfindingForm__from",children:e("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[i("path",{d:"M18 9C18 13.9706 13.9706 18 9 18C4.02944 18 0 13.9706 0 9C0 4.02944 4.02944 0 9 0C13.9706 0 18 4.02944 18 9Z",fill:"white"}),i("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9 13.375C11.4162 13.375 13.375 11.4162 13.375 9C13.375 6.58375 11.4162 4.625 9 4.625C6.58375 4.625 4.625 6.58375 4.625 9C4.625 11.4162 6.58375 13.375 9 13.375ZM9 16C12.866 16 16 12.866 16 9C16 5.13401 12.866 2 9 2C5.13401 2 2 5.13401 2 9C2 12.866 5.13401 16 9 16Z",fill:"#30AFEB"})]})}),i("div",{className:"efp-wayfindingForm__to",children:e("svg",{width:"18",height:"25",viewBox:"0 0 18 25",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[i("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9 24.1571L10.5475 22.267C11.0023 21.7114 11.4571 21.1656 11.9041 20.6291C13.2939 18.9611 14.6088 17.3829 15.6182 15.8814C16.988 13.8436 18 11.668 18 9.125C18 4.09562 14.0267 0 9 0C3.97332 0 0 4.09562 0 9.125C0 11.668 1.01202 13.8436 2.38182 15.8814C3.39116 17.3829 4.70613 18.9611 6.09588 20.6291C6.54291 21.1656 6.99767 21.7114 7.45249 22.267L9 24.1571Z",fill:"white"}),i("path",{d:"M9 2C5.11111 2 2 5.16667 2 9.125C2 13.0833 5.11111 16.25 9 21C12.8889 16.25 16 13.0833 16 9.125C16 5.16667 12.8889 2 9 2ZM9 6.75C10.2911 6.75 11.3333 7.81083 11.3333 9.125C11.3333 10.4392 10.2911 11.5 9 11.5C7.70889 11.5 6.66667 10.4392 6.66667 9.125C6.66667 7.81083 7.70889 6.75 9 6.75Z",fill:"#FF9E2C"})]})}),i("div",{className:"efp-wayfindingForm__dots",children:e("svg",{width:"4",height:"18",viewBox:"0 0 4 18",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[i("circle",{cx:"2",cy:"2",r:"2",fill:"#DCDFE9"}),i("circle",{cx:"2",cy:"16",r:"2",fill:"#DCDFE9"})]})})]}),e("div",{className:"efp-wayfindingForm__controls",children:[i("div",{style:{marginBottom:10},children:i(r,{placeholder:l("Choose starting point"),options:n,value:s,onChange:w})}),i("div",{children:i(r,{placeholder:l("Choose destination point"),options:n,value:d,onChange:v})})]}),e("div",{className:"efp-wayfindingForm__actions",children:[i("button",{type:"button",className:"efp-wayfindingForm__switch",onClick:y}),N&&i("button",{type:"button",className:"efp-wayfindingForm__details",onClick:x})]})]}),c&&i("div",{className:"efp-wayfindingForm__accessible",children:i(Z,{name:"onlyAccessible",label:"Accessible",value:a,onChange:b=>F(b)})})]}),t.length>1&&i(B,{floors:t,current:p,onClickFloor:u}),f&&i("div",{className:"efp-wayfindingInfo",children:m?e(R,{children:[i(E,{items:h,accessible:a,onClick:_}),g&&i(j,{url:C})]}):i("div",{className:"efp-wayfindingError",children:l("Route not found")})})]});export default k;
1
+ import{jsx as e,jsxs as i,Fragment as R}from"react/jsx-runtime";import{observer as M}from"mobx-react-lite";import Z from"classnames";import{t as l}from"../utils/i18n";import t from"./Autocomplete";import B from"./ToggleSwitch";import E from"./WayfindingFloorSelector";import"./WayfindingTemplate.scss";import j from"./WayInformation";import k from"./RouteQR";const D=({options:n=[],fromValue:s="",toValue:d="",showForm:o=!0,showAccessible:c=!1,showInfo:f=!1,routeFound:m=!1,infoItems:h=[],infoAccessible:a,floors:r,currentFloor:p,routeUrl:C,isKiosk:g,onChangeFrom:w,onChangeTo:v,onSwitch:y,onClickInfo:_,onClickFloor:u,onAccessibleCheck:F,showDetailsIcon:N,onDetailsIconClick:x})=>i("div",{className:Z("efp-wayfinding",{isCollapsed:!o}),children:[o&&i("div",{className:"efp-wayfinding__top",children:[i("div",{className:"efp-wayfindingForm",children:[i("div",{className:"efp-wayfindingForm__icons",children:[e("div",{className:"efp-wayfindingForm__from",children:i("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e("path",{d:"M18 9C18 13.9706 13.9706 18 9 18C4.02944 18 0 13.9706 0 9C0 4.02944 4.02944 0 9 0C13.9706 0 18 4.02944 18 9Z",fill:"white"}),e("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9 13.375C11.4162 13.375 13.375 11.4162 13.375 9C13.375 6.58375 11.4162 4.625 9 4.625C6.58375 4.625 4.625 6.58375 4.625 9C4.625 11.4162 6.58375 13.375 9 13.375ZM9 16C12.866 16 16 12.866 16 9C16 5.13401 12.866 2 9 2C5.13401 2 2 5.13401 2 9C2 12.866 5.13401 16 9 16Z",fill:"#30AFEB"})]})}),e("div",{className:"efp-wayfindingForm__to",children:i("svg",{width:"18",height:"25",viewBox:"0 0 18 25",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9 24.1571L10.5475 22.267C11.0023 21.7114 11.4571 21.1656 11.9041 20.6291C13.2939 18.9611 14.6088 17.3829 15.6182 15.8814C16.988 13.8436 18 11.668 18 9.125C18 4.09562 14.0267 0 9 0C3.97332 0 0 4.09562 0 9.125C0 11.668 1.01202 13.8436 2.38182 15.8814C3.39116 17.3829 4.70613 18.9611 6.09588 20.6291C6.54291 21.1656 6.99767 21.7114 7.45249 22.267L9 24.1571Z",fill:"white"}),e("path",{d:"M9 2C5.11111 2 2 5.16667 2 9.125C2 13.0833 5.11111 16.25 9 21C12.8889 16.25 16 13.0833 16 9.125C16 5.16667 12.8889 2 9 2ZM9 6.75C10.2911 6.75 11.3333 7.81083 11.3333 9.125C11.3333 10.4392 10.2911 11.5 9 11.5C7.70889 11.5 6.66667 10.4392 6.66667 9.125C6.66667 7.81083 7.70889 6.75 9 6.75Z",fill:"#FF9E2C"})]})}),e("div",{className:"efp-wayfindingForm__dots",children:i("svg",{width:"4",height:"18",viewBox:"0 0 4 18",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e("circle",{cx:"2",cy:"2",r:"2",fill:"#DCDFE9"}),e("circle",{cx:"2",cy:"16",r:"2",fill:"#DCDFE9"})]})})]}),i("div",{className:"efp-wayfindingForm__controls",children:[e("div",{style:{marginBottom:10},children:e(t,{placeholder:l("Choose starting point"),options:n,value:s,onChange:w})}),e("div",{children:e(t,{placeholder:l("Choose destination point"),options:n,value:d,onChange:v})})]}),i("div",{className:"efp-wayfindingForm__actions",children:[e("button",{type:"button",className:"efp-wayfindingForm__switch",onClick:y}),N&&e("button",{type:"button",className:"efp-wayfindingForm__details",onClick:x})]})]}),c&&e("div",{className:"efp-wayfindingForm__accessible",children:e(B,{name:"onlyAccessible",label:l("Accessible"),value:a,onChange:b=>F(b)})})]}),r.length>1&&e(E,{floors:r,current:p,onClickFloor:u}),f&&e("div",{className:"efp-wayfindingInfo",children:m?i(R,{children:[e(j,{items:h,accessible:a,onClick:_}),g&&e(k,{url:C})]}):e("div",{className:"efp-wayfindingError",children:l("Route not found")})})]});export default M(D);
@@ -1,6 +1,8 @@
1
- export default function GpsPermissionRequest({ isOpen, onAllow, onCancel, }: {
1
+ import React from "react";
2
+ declare const _default: React.FunctionComponent<{
2
3
  isOpen: boolean;
3
4
  onAllow?: () => void;
4
5
  onCancel?: () => void;
5
- }): import("react/jsx-runtime").JSX.Element | null;
6
+ }>;
7
+ export default _default;
6
8
  //# sourceMappingURL=GpsPermissionRequest.d.ts.map
@@ -1 +1 @@
1
- import{jsx as r}from"react/jsx-runtime";import{t as o}from"../../utils/i18n";import{PermissionNotice as n}from"../index";export default function s({isOpen:e,onAllow:t,onCancel:i}){return e?r(n,{title:o("Show your position on the map"),acceptText:o("Allow compass access"),rejectText:o("Not now"),onClickAccept:t,onClickReject:i,children:o("To display your current position and orient the map around you, we\u2019ll ask for permission to access your device orientation")}):null}
1
+ import{jsx as i}from"react/jsx-runtime";import{observer as s}from"mobx-react-lite";import{t as o}from"../../utils/i18n";import{PermissionNotice as n}from"../index";export default s(function({isOpen:e,onAllow:t,onCancel:r}){return e?i(n,{title:o("Show your position on the map"),acceptText:o("Allow compass access"),rejectText:o("Not now"),onClickAccept:t,onClickReject:r,children:o("To display your current position and orient the map around you, we\u2019ll ask for permission to access your device orientation")}):null});
@@ -21,6 +21,7 @@ export declare const PATHWAY_KEY = "pathway";
21
21
  export declare const CACHE_DURATION = 1000;
22
22
  export declare const MOBILE_BREAKPOINT = 768;
23
23
  export declare const LANG_KEY = "lang";
24
+ export declare const LANGUAGE_TYPE = "language";
24
25
  export declare const UI_SCALE_PARAM_KEY = "uiscale";
25
26
  export declare const UI_SCALE_RESET_PARAM_KEY = "resetuiscale";
26
27
  export declare const UI_SCALE_STORAGE_KEY = "___ui-scale";
@@ -1 +1 @@
1
- export const VISIBILITY_STORAGE_KEY="___visibility",PREVIEW_MODE_QUERY="previewMode",PREVIEW_MODE_STORAGE_KEY="___preview_mode",PREVIEW_MODE_ATTRIBUTE="data-preview-mode",BOOTHS_PAINTER_MARKER="booths",SEPARATOR=":",LAYER_LOGOS_MARKER="logos",LAYER_ICONS_MARKER="icons",STRING_META_DELIMITER="$$",KIOSK_ENABLE_KEY="kiosk",SET_KIOSK_KEY="setkiosk",BOOKMARK_PAINTER_MARKER="booth-bookmark",MAP_SETTINGS_KEY="expofp-map-settings",DEBUG_KEY="debug",DEFAULT_UNITS="ft",BUILD_ROUTE_KEY="build-route",PLANNER_KEY="planner",PLANNER_SOURCE_KEY="source",PLANNER_FROM_KEY="from",PATHWAY_KEY="pathway",CACHE_DURATION=1e3,MOBILE_BREAKPOINT=768,LANG_KEY="lang",UI_SCALE_PARAM_KEY="uiscale",UI_SCALE_RESET_PARAM_KEY="resetuiscale",UI_SCALE_STORAGE_KEY="___ui-scale",MAX_ROUTE_WAYPOINTS=8,FONT_FACE="--expofp-font-face",FONT_WEIGHT_PRIMARY_BOOTH="--expofp-booth-main-weight",FONT_WEIGHT_SECONDARY_BOOTH="--expofp-booth-details-weight",FONT_WEIGHT_PRIMARY_EXHIBITOR="--expofp-exhibitor-main-weight",FONT_WEIGHT_SECONDARY_EXHIBITOR="--expofp-exhibitor-details-weight",FONT_WEIGHT_PRIMARY_SPECIAL="--expofp-booth-special-weight",ORIENTATION_GRANTED_KEY="efp-compass-permission-granted",VIEWER_MODE_QUERY="viewermode",VIEWER_MODE_STORAGE_KEY="___viewer_mode";
1
+ export const VISIBILITY_STORAGE_KEY="___visibility",PREVIEW_MODE_QUERY="previewMode",PREVIEW_MODE_STORAGE_KEY="___preview_mode",PREVIEW_MODE_ATTRIBUTE="data-preview-mode",BOOTHS_PAINTER_MARKER="booths",SEPARATOR=":",LAYER_LOGOS_MARKER="logos",LAYER_ICONS_MARKER="icons",STRING_META_DELIMITER="$$",KIOSK_ENABLE_KEY="kiosk",SET_KIOSK_KEY="setkiosk",BOOKMARK_PAINTER_MARKER="booth-bookmark",MAP_SETTINGS_KEY="expofp-map-settings",DEBUG_KEY="debug",DEFAULT_UNITS="ft",BUILD_ROUTE_KEY="build-route",PLANNER_KEY="planner",PLANNER_SOURCE_KEY="source",PLANNER_FROM_KEY="from",PATHWAY_KEY="pathway",CACHE_DURATION=1e3,MOBILE_BREAKPOINT=768,LANG_KEY="lang",LANGUAGE_TYPE="language",UI_SCALE_PARAM_KEY="uiscale",UI_SCALE_RESET_PARAM_KEY="resetuiscale",UI_SCALE_STORAGE_KEY="___ui-scale",MAX_ROUTE_WAYPOINTS=8,FONT_FACE="--expofp-font-face",FONT_WEIGHT_PRIMARY_BOOTH="--expofp-booth-main-weight",FONT_WEIGHT_SECONDARY_BOOTH="--expofp-booth-details-weight",FONT_WEIGHT_PRIMARY_EXHIBITOR="--expofp-exhibitor-main-weight",FONT_WEIGHT_SECONDARY_EXHIBITOR="--expofp-exhibitor-details-weight",FONT_WEIGHT_PRIMARY_SPECIAL="--expofp-booth-special-weight",ORIENTATION_GRANTED_KEY="efp-compass-permission-granted",VIEWER_MODE_QUERY="viewermode",VIEWER_MODE_STORAGE_KEY="___viewer_mode";
@@ -1 +1 @@
1
- import{PREVIEW_MODE_ATTRIBUTE as A}from"./constants";import l from"./tools/base-runtime-url";import{buildRebookingUrl as V,getRebookingToken as H,retainRebookingToken as z}from"./tools/rebookingUrl";import{loadCss as x,loadFont as g,loadJs as b}from"./tools/loaders";import U from"./tools/logger";import{sleep as G}from"./utils";import{initI18n as N}from"./utils/i18n";import S from"./utils/is-webview";import{loadCustomCss as Q}from"./utils/loadCustomCss";import{loadIcons as q}from"./utils/loadIcons";import W from"./utils/mergeExhibitors";import L from"./utils/use-shadow";import $ from"./utils/is-debug";import J from"./utils/is-localhost";import{initSentry as K}from"./tools/sentry";function t(){throw new Error("FloorPlan not ready")}export default class Y{options;renderTarget;_ready;element;eventId;dataUrl;noOverlay;offHistory;ignoreQuery;allowConsent;onInit;disableRuntimeAlerts;viewerMode;efpStyleLoadHandler;resolveReady;icons=new Map;enableRotation=!0;alwaysShowSidebar=!1;get ready(){return this._ready}get previewMode(){return this.options.previewMode||this.element.hasAttribute(A)}onBoothClick;onBookmarkClick;onVisitedClick;onCategoryClick;onFpConfigured;onDirection;onDetails;onExhibitorCustomButtonClick;onGetCoordsClick;onMarkerClick;onLeaveEvent;selectBooth(e){t()}selectExhibitor(e){t()}selectRoute(e,a){t()}getOptimizedRoutes(e){t()}selectCurrentPosition(e,a,h){t()}setBookmarks(e){t()}setEntitiesBookmarks(e){t()}setEntitiesVisited(e){t()}setMarkers(e){t()}updateLayerVisibility(e,a){t()}getCenterCoordinates(){t()}applyParameters(e){t()}exhibitorsList(){t()}boothsList(){t()}categoriesList(){t()}selectCategory(e){t()}getVisibility(){t()}setVisibility(e){t()}findLocation(){t()}zoomIn(){t()}zoomOut(){t()}zoomTo(e,a){t()}switchView(){t()}fitBounds(){t()}getBounds(e){t()}getBoothRect(e){t()}convertToGeo(e,a){t()}unstable_destroy(){t()}highlightExhibitors(e){t()}highlightBooths(e){t()}onCurrentPositionChanged(e){t()}search(e){t()}getFloors(){t()}onFloorActivated(e){t()}activateFloor(e){t()}showPathway(e,a){t()}showPathwayOnly(e,a){t()}hidePathways(){t()}showSearch(){t()}changeLanguage(e){t()}isGpsTrackingEnabled(){t()}setGpsTrackingEnabled(e){t()}deselectCurrentPosition(){t()}deselectRoute(){t()}reset(){t()}constructor(e){this.options=e,this.noOverlay=!!e.noOverlay,this.offHistory=!!e.offHistory,this.ignoreQuery=e.ignoreQuery,this.allowConsent=J&&!$?!1:e.allowConsent,this.onBoothClick=e.onBoothClick,this.onBookmarkClick=e.onBookmarkClick,this.onVisitedClick=e.onVisitedClick,this.onCategoryClick=e.onCategoryClick,this.onDetails=e.onDetails,this.onExhibitorCustomButtonClick=e.onExhibitorCustomButtonClick,this.onGetCoordsClick=e.onGetCoordsClick,this.onMarkerClick=e.onMarkerClick,this.onFpConfigured=e.onFpConfigured,this.onDirection=e.onDirection,this.onInit=e.onInit,this.onCurrentPositionChanged=e.onCurrentPositionChanged,this.onFloorActivated=e.onFloorActivated,this.onLeaveEvent=e.onLeaveEvent,this.viewerMode=!!e.viewerMode,this.disableRuntimeAlerts=e.disableRuntimeAlerts??!0,this._ready=new Promise((d,i)=>{this.resolveReady=d});const a=e.element;if(this.element=a,a.__expofp)throw new Error("Element already in use");if(a.__expofp=this,a.getAttribute("data-event-id")||a.getAttribute("data-event"))throw new Error("data-xxx attributes are removed, use options instead");const h=e.expo||e.event;if(!h)throw new Error("`expo` option is required");K({eventId:h||"",isWebview:S}),this.eventId=h,window.__efpEvent=h,window.__efpElement=a;const E=[...a.classList];a.classList.remove(...E),a.classList.add("expofp-floorplan-default",...E);const B=document.head||document.getElementsByTagName("head")[0],P=document.createElement("style");B.prepend(P),P.textContent=".expofp-floorplan-default { width: 100%; height: 100%;}";const m=document.createElement("div");m.style.height="100%",m.style.width="100%",a.appendChild(m);let s;if(S&&(this.allowConsent=!0),e.allowConsent===void 0){const i=new URL(window.location.href).searchParams.get("allowConsent");i&&(this.allowConsent=i==="true")}if(L){s=m.attachShadow({mode:"open"});const d=s,i=document;d.createElement=(...r)=>i.createElement(...r),d.createElementNS=(...r)=>i.createElementNS(...r),d.createTextNode=(...r)=>i.createTextNode(...r)}else s=m;const y=document.createElement("div");if(y.style.height="100%",y.style.width="100%",s.appendChild(y),L&&Object.defineProperty(y,"ownerDocument",{value:s}),this.renderTarget=y,a.getAttribute("data-data-url"))throw new Error("data-xxx attributes are removed, use options instead");const u=e.legacyDataUrlBase;window.__dataUrlBase=u,this.dataUrl=u,U.log("Instantiating ExpoFP floorplan",e.element,h);const O=u+"data.js",j=u+"wf.data.js",R=u+"fp.svg.js",D=[b(j),b(O),b(R)];let v=0;this.efpStyleLoadHandler=function(d){const i=window.__efpStyleElements;for(;v<i.length;){const r=i[v];s.appendChild(r),v++}},window.addEventListener("__efpStyleLoad",this.efpStyleLoadHandler);const k=this;(async function(){await Promise.all(D);let i=0;for(;window.__fpPending&&!window.__fp;)await G(2e3),await b(R+`?v=${++i}`);const r=window.__data;await N();const f=new URLSearchParams(window.location.search);let w,C;if(r?.trackerUrl)try{w=new URL(r.trackerUrl),C=w.searchParams.get("expoId")}catch(o){console.error(o)}const I=async o=>{if(!w||!C)return Promise.reject(new Error("trackerUrl or expoId is missing"));const n=new URL(o.dataUrl,w.origin),c=await fetch(n.toString(),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({expoId:C,token:decodeURIComponent(f.get("t"))})});let p=[];c.ok&&(p=(await c.json()).map(o.dataMapper)),window.__heatmapDataYah={yah:p}};if(f.get("heatmap")==="true")try{if(f.get("type")==="yah")f.get("subtype")==="kiosk"?await I({dataUrl:"/api/kiosks/list/viewer",dataMapper:o=>({...o,id:o.key,name:`Kiosk ${o.key}`})}):await I({dataUrl:"/api/v1/you-are-here/qr-code/list/viewer",dataMapper:(o,n)=>({...o,name:`QR Code #${n+1}`})});else{const o=new URL("/api/fp-stats/get",w.origin);o.searchParams.set("expoId",C),o.searchParams.set("type","booview"),o.searchParams.set("t",decodeURIComponent(f.get("t")));const n=new URL("api/fp-stats/get",w.origin);n.searchParams.set("expoId",C),n.searchParams.set("type","exview"),n.searchParams.set("t",decodeURIComponent(f.get("t")));const[c,p]=await Promise.all([fetch(o.toString()),fetch(n.toString())]),[_,F]=await Promise.all([c.json(),p.json()]);window.__heatmapData={booths:_,exhibitors:F}}}catch(o){console.error("Heatmap: Initialization error",o)}try{const o=H();if(o){z(o);const n=V("api/rebooking-data",{rt:o,expoKey:h}),c=await fetch(n);if(c.ok){const p=await c.json();W(r,p)}r.isRebooking=c.ok}else r.isRebooking=!1}catch(o){console.error(o)}const T=[x(l+"vendor/sanitize-css/sanitize.css",s),x(l+"vendor/perfect-scrollbar/css/perfect-scrollbar.css",s),x(l+"vendor/mapbox/mapbox-gl.css",s),g("Oswald",l+"fonts/oswald-v17-cyrillic_latin-300.woff",{weight:300}),g("Oswald",l+"fonts/oswald-v17-cyrillic_latin-500.woff",{weight:500}),g("Inter",l+"fonts/inter-400.woff2",{weight:400}),g("Inter",l+"fonts/inter-500.woff2",{weight:500}),g("Inter",l+"fonts/inter-600.woff2",{weight:600}),g("efp-symbols",l+"fonts/efp-symbols.woff",{weight:400}),Q(r),q(k.icons)];await Promise.all(T),k.enableRotation=r?.enableRotation??!1,k.alwaysShowSidebar=r?.alwaysShowSidebar??!1,U.log("Data loaded");const{default:M}=await import("./floorplan.ready");for(document.querySelectorAll(".expofp-floorplan-loader").forEach(o=>o.remove());a.firstChild&&a.firstChild!==m;)a.removeChild(a.firstChild);Object.setPrototypeOf(k,M.prototype).init()})()}}
1
+ import{PREVIEW_MODE_ATTRIBUTE as A}from"./constants";import l from"./tools/base-runtime-url";import{buildRebookingUrl as V,getRebookingToken as H,retainRebookingToken as z}from"./tools/rebookingUrl";import{loadCss as x,loadFont as g,loadJs as b}from"./tools/loaders";import S from"./tools/logger";import{sleep as G}from"./utils";import{initI18n as N}from"./utils/i18n";import L from"./utils/is-webview";import{loadCustomCss as Q}from"./utils/loadCustomCss";import{loadIcons as q}from"./utils/loadIcons";import W from"./utils/mergeExhibitors";import E from"./utils/use-shadow";import $ from"./utils/is-debug";import J from"./utils/is-localhost";import{initSentry as K}from"./tools/sentry";function t(){throw new Error("FloorPlan not ready")}export default class Y{options;renderTarget;_ready;element;eventId;dataUrl;noOverlay;offHistory;ignoreQuery;allowConsent;onInit;disableRuntimeAlerts;viewerMode;efpStyleLoadHandler;resolveReady;icons=new Map;enableRotation=!0;alwaysShowSidebar=!1;get ready(){return this._ready}get previewMode(){return this.options.previewMode||this.element.hasAttribute(A)}onBoothClick;onBookmarkClick;onVisitedClick;onCategoryClick;onFpConfigured;onDirection;onDetails;onExhibitorCustomButtonClick;onGetCoordsClick;onMarkerClick;onLeaveEvent;selectBooth(e){t()}selectExhibitor(e){t()}selectRoute(e,a){t()}getOptimizedRoutes(e){t()}selectCurrentPosition(e,a,h){t()}setBookmarks(e){t()}setEntitiesBookmarks(e){t()}setEntitiesVisited(e){t()}setMarkers(e){t()}updateLayerVisibility(e,a){t()}getCenterCoordinates(){t()}applyParameters(e){t()}exhibitorsList(){t()}boothsList(){t()}categoriesList(){t()}selectCategory(e){t()}getVisibility(){t()}setVisibility(e){t()}findLocation(){t()}zoomIn(){t()}zoomOut(){t()}zoomTo(e,a){t()}switchView(){t()}fitBounds(){t()}getBounds(e){t()}getBoothRect(e){t()}convertToGeo(e,a){t()}unstable_destroy(){t()}highlightExhibitors(e){t()}highlightBooths(e){t()}onCurrentPositionChanged(e){t()}search(e){t()}getFloors(){t()}onFloorActivated(e){t()}activateFloor(e){t()}showPathway(e,a){t()}showPathwayOnly(e,a){t()}hidePathways(){t()}showSearch(){t()}changeLanguage(e){t()}isGpsTrackingEnabled(){t()}setGpsTrackingEnabled(e){t()}deselectCurrentPosition(){t()}deselectRoute(){t()}reset(){t()}constructor(e){this.options=e,this.noOverlay=!!e.noOverlay,this.offHistory=!!e.offHistory,this.ignoreQuery=e.ignoreQuery,this.allowConsent=J&&!$?!1:e.allowConsent,this.onBoothClick=e.onBoothClick,this.onBookmarkClick=e.onBookmarkClick,this.onVisitedClick=e.onVisitedClick,this.onCategoryClick=e.onCategoryClick,this.onDetails=e.onDetails,this.onExhibitorCustomButtonClick=e.onExhibitorCustomButtonClick,this.onGetCoordsClick=e.onGetCoordsClick,this.onMarkerClick=e.onMarkerClick,this.onFpConfigured=e.onFpConfigured,this.onDirection=e.onDirection,this.onInit=e.onInit,this.onCurrentPositionChanged=e.onCurrentPositionChanged,this.onFloorActivated=e.onFloorActivated,this.onLeaveEvent=e.onLeaveEvent,this.viewerMode=!!e.viewerMode,this.disableRuntimeAlerts=e.disableRuntimeAlerts??!0,this._ready=new Promise((d,i)=>{this.resolveReady=d});const a=e.element;if(this.element=a,a.__expofp)throw new Error("Element already in use");if(a.__expofp=this,a.getAttribute("data-event-id")||a.getAttribute("data-event"))throw new Error("data-xxx attributes are removed, use options instead");const h=e.expo||e.event;if(!h)throw new Error("`expo` option is required");K({eventId:h||"",isWebview:L}),this.eventId=h,window.__efpEvent=h,window.__efpElement=a;const P=[...a.classList];a.classList.remove(...P),a.classList.add("expofp-floorplan-default",...P);const B=document.head||document.getElementsByTagName("head")[0],R=document.createElement("style");B.prepend(R),R.textContent=".expofp-floorplan-default { width: 100%; height: 100%;}";const m=document.createElement("div");m.style.height="100%",m.style.width="100%",a.appendChild(m);let n;if(L&&(this.allowConsent=!0),e.allowConsent===void 0){const i=new URL(window.location.href).searchParams.get("allowConsent");i&&(this.allowConsent=i==="true")}if(E){n=m.attachShadow({mode:"open"});const d=n,i=document;d.createElement=(...r)=>i.createElement(...r),d.createElementNS=(...r)=>i.createElementNS(...r),d.createTextNode=(...r)=>i.createTextNode(...r)}else n=m;const y=document.createElement("div");if(y.style.height="100%",y.style.width="100%",n.appendChild(y),E&&Object.defineProperty(y,"ownerDocument",{value:n}),window.__efpShadowDOMStyleParent=E?n:void 0,this.renderTarget=y,a.getAttribute("data-data-url"))throw new Error("data-xxx attributes are removed, use options instead");const u=e.legacyDataUrlBase;window.__dataUrlBase=u,this.dataUrl=u,S.log("Instantiating ExpoFP floorplan",e.element,h);const O=u+"data.js",D=u+"wf.data.js",I=u+"fp.svg.js",j=[b(D),b(O),b(I)];let v=0;this.efpStyleLoadHandler=function(d){const i=window.__efpStyleElements;for(;v<i.length;){const r=i[v];n.appendChild(r),v++}},window.addEventListener("__efpStyleLoad",this.efpStyleLoadHandler);const k=this;(async function(){await Promise.all(j);let i=0;for(;window.__fpPending&&!window.__fp;)await G(2e3),await b(I+`?v=${++i}`);const r=window.__data;await N();const f=new URLSearchParams(window.location.search);let w,C;if(r?.trackerUrl)try{w=new URL(r.trackerUrl),C=w.searchParams.get("expoId")}catch(o){console.error(o)}const _=async o=>{if(!w||!C)return Promise.reject(new Error("trackerUrl or expoId is missing"));const s=new URL(o.dataUrl,w.origin),c=await fetch(s.toString(),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({expoId:C,token:decodeURIComponent(f.get("t"))})});let p=[];c.ok&&(p=(await c.json()).map(o.dataMapper)),window.__heatmapDataYah={yah:p}};if(f.get("heatmap")==="true")try{if(f.get("type")==="yah")f.get("subtype")==="kiosk"?await _({dataUrl:"/api/kiosks/list/viewer",dataMapper:o=>({...o,id:o.key,name:`Kiosk ${o.key}`})}):await _({dataUrl:"/api/v1/you-are-here/qr-code/list/viewer",dataMapper:(o,s)=>({...o,name:`QR Code #${s+1}`})});else{const o=new URL("/api/fp-stats/get",w.origin);o.searchParams.set("expoId",C),o.searchParams.set("type","booview"),o.searchParams.set("t",decodeURIComponent(f.get("t")));const s=new URL("api/fp-stats/get",w.origin);s.searchParams.set("expoId",C),s.searchParams.set("type","exview"),s.searchParams.set("t",decodeURIComponent(f.get("t")));const[c,p]=await Promise.all([fetch(o.toString()),fetch(s.toString())]),[U,F]=await Promise.all([c.json(),p.json()]);window.__heatmapData={booths:U,exhibitors:F}}}catch(o){console.error("Heatmap: Initialization error",o)}try{const o=H();if(o){z(o);const s=V("api/rebooking-data",{rt:o,expoKey:h}),c=await fetch(s);if(c.ok){const p=await c.json();W(r,p)}r.isRebooking=c.ok}else r.isRebooking=!1}catch(o){console.error(o)}const T=[x(l+"vendor/sanitize-css/sanitize.css",n),x(l+"vendor/perfect-scrollbar/css/perfect-scrollbar.css",n),x(l+"vendor/mapbox/mapbox-gl.css",n),g("Oswald",l+"fonts/oswald-v17-cyrillic_latin-300.woff",{weight:300}),g("Oswald",l+"fonts/oswald-v17-cyrillic_latin-500.woff",{weight:500}),g("Inter",l+"fonts/inter-400.woff2",{weight:400}),g("Inter",l+"fonts/inter-500.woff2",{weight:500}),g("Inter",l+"fonts/inter-600.woff2",{weight:600}),g("efp-symbols",l+"fonts/efp-symbols.woff",{weight:400}),Q(r,n),q(k.icons)];await Promise.all(T),k.enableRotation=r?.enableRotation??!1,k.alwaysShowSidebar=r?.alwaysShowSidebar??!1,S.log("Data loaded");const{default:M}=await import("./floorplan.ready");for(document.querySelectorAll(".expofp-floorplan-loader").forEach(o=>o.remove());a.firstChild&&a.firstChild!==m;)a.removeChild(a.firstChild);Object.setPrototypeOf(k,M.prototype).init()})()}}