@expofp/floorplan 3.3.7 → 3.4.0

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 (249) hide show
  1. package/dist/browser/CookieConsent-BgzFI0o5.js +38 -0
  2. package/dist/browser/{Debug-A2TjoZQK.js → Debug-DwwZ0jVT.js} +9 -9
  3. package/dist/browser/{Demo-iK72mOgP.js → Demo-Bhv7muKd.js} +11 -11
  4. package/dist/browser/{Free-BcbAZA3y.js → Free-EaDzP7U5.js} +12 -12
  5. package/dist/browser/{Gallery-U-ldyITy.js → Gallery-BFio06PY.js} +10 -10
  6. package/dist/browser/{GpsLoader-DqPTky-0.js → GpsLoader-BhYirpWa.js} +46 -47
  7. package/dist/browser/{KioskStore-DIKp1HfX.js → KioskStore-DiTPaFb2.js} +17 -17
  8. package/dist/browser/MaplibreAdapter-BKj3sK8A.js +35131 -0
  9. package/dist/browser/{Modal-BLjdiYfi.js → Modal-DVY124d5.js} +10 -10
  10. package/dist/browser/PermissionNotice-CrAxf_da.js +54 -0
  11. package/dist/browser/{SetKioskMode-CIDQnVVK.js → SetKioskMode-Cj1IbMbn.js} +11 -11
  12. package/dist/browser/ShowKiosk-CqmJT8yJ.js +26 -0
  13. package/dist/browser/{TouchHand-4OAXEmLA.js → TouchHand-BdZWU_I1.js} +4 -4
  14. package/dist/browser/{ViewerMenuPanel-BFEwT9oC.js → ViewerMenuPanel-DbVIwrJO.js} +19 -19
  15. package/dist/browser/{add-debug-secret-listener-B2ugeAcj.js → add-debug-secret-listener-B8gxDWmn.js} +1 -1
  16. package/dist/browser/{boolean-editor-Cc1GCvQj.js → boolean-editor-CIT7g6C5.js} +10 -10
  17. package/dist/browser/{bootIntercom-BVGw_SpO.js → bootIntercom-CcgHFRAw.js} +2 -2
  18. package/dist/browser/{box-CaErtqkj.js → box-CydZk4HJ.js} +5 -5
  19. package/dist/browser/{browser-_paBhqQW.js → browser-DlMYMMvJ.js} +2 -2
  20. package/dist/browser/bundle.json +61 -61
  21. package/dist/browser/{classnames-CVk0A91C.js → classnames-DmdaKMoa.js} +2 -2
  22. package/dist/browser/{client-B70Nbh5h.js → client-8ygU_jvu.js} +4 -4
  23. package/dist/browser/components-BgwIl1Lu.js +6289 -0
  24. package/dist/browser/createWayfinding-D9tuHHx5.js +1889 -0
  25. package/dist/browser/{debug-overlay-CyYqgTdj.js → debug-overlay-Dos3Ate2.js} +11 -11
  26. package/dist/browser/{debug-ui-D9A6yzed.js → debug-ui-BjmKfkgV.js} +6 -6
  27. package/dist/browser/{dist-BUD3zJ9Z.js → dist-B3Y58WKJ.js} +6 -6
  28. package/dist/browser/{dist-BPljQLT7.js → dist-Bm6VKnC2.js} +3 -3
  29. package/dist/browser/{dist-BrWnw-Ri.js → dist-_wJOZ0rm.js} +5 -5
  30. package/dist/browser/{efp-debug-init-CL7ckXKd.js → efp-debug-init-yyCWZRTx.js} +5 -4
  31. package/dist/browser/{enum-editor-Djt6vsG1.js → enum-editor-D8X_uabc.js} +11 -11
  32. package/dist/browser/{event-not-found-CAUywrB2.js → event-not-found-Bm_W5xxA.js} +1 -1
  33. package/dist/browser/{exports-D5aj-cpr.js → exports-DnHrfjiU.js} +1 -1
  34. package/dist/browser/{favicon-B3ilFIzN.js → favicon-Bnz633J6.js} +1 -1
  35. package/dist/browser/{fetch-retry.umd-CC6nRZde.js → fetch-retry.umd-BunUcQza.js} +2 -2
  36. package/dist/browser/{flex-SCSgjwpS.js → flex-DwDJlblp.js} +6 -6
  37. package/dist/browser/{flex.props-DM7y21yG.js → flex.props-BAGkFvkN.js} +2 -2
  38. package/dist/browser/{floorplan.loader-BmVUKCxN.js → floorplan.loader-B3PUqtqn.js} +30 -31
  39. package/dist/browser/{floorplan.ready-da1pQZ1-.js → floorplan.ready-BAnq_GdS.js} +196 -196
  40. package/dist/browser/{fuse-DY6Kjf36.js → fuse-Bhsd7fBU.js} +2 -2
  41. package/dist/browser/{i18n-1-u98ly9.js → i18n-C5BBGKZk.js} +5 -5
  42. package/dist/browser/index.js +13 -13
  43. package/dist/browser/{jsx-runtime-BESB6cP1.js → jsx-runtime-Dk2--jeN.js} +2 -2
  44. package/dist/browser/{lib-BhhCH6-T.js → lib-Brd2BCh_.js} +4 -4
  45. package/dist/browser/locales/ar.json +0 -1
  46. package/dist/browser/locales/de.json +0 -1
  47. package/dist/browser/locales/es.json +0 -1
  48. package/dist/browser/locales/fr.json +0 -1
  49. package/dist/browser/locales/he.json +0 -1
  50. package/dist/browser/locales/it.json +0 -1
  51. package/dist/browser/locales/kk.json +0 -1
  52. package/dist/browser/locales/ko.json +0 -1
  53. package/dist/browser/locales/mn.json +0 -1
  54. package/dist/browser/locales/nl.json +0 -1
  55. package/dist/browser/locales/pl.json +0 -1
  56. package/dist/browser/locales/pt.json +0 -1
  57. package/dist/browser/locales/ru.json +0 -1
  58. package/dist/browser/locales/sv.json +0 -1
  59. package/dist/browser/locales/th.json +0 -1
  60. package/dist/browser/locales/tr.json +0 -1
  61. package/dist/browser/locales/uk.json +0 -1
  62. package/dist/browser/locales/vi.json +0 -1
  63. package/dist/browser/locales/zh.json +0 -1
  64. package/dist/browser/{main-D2NmCv2H.js → main-pIcuVUIg.js} +1 -1
  65. package/dist/browser/{mobx-Cfh5Vfk6.js → mobx-BfCD0EQ-.js} +4 -4
  66. package/dist/browser/{particles.min-B5qlVBuL.js → particles.min-ChGMv-bm.js} +2 -2
  67. package/dist/browser/{prop-types-DZ8VfWUb.js → prop-types-xdXFFTmm.js} +2 -2
  68. package/dist/browser/{react-cXsgFw41.js → react-BbZc5Oeq.js} +2 -2
  69. package/dist/browser/{react-dom-l5Q31Wma.js → react-dom-BBDOhlbP.js} +3 -3
  70. package/dist/browser/{reset-all-settings-B6K1EwXP.js → reset-all-settings-BQC7zljW.js} +7 -7
  71. package/dist/browser/{rolldown-runtime-hPqAdzN2.js → rolldown-runtime-DS4W77DU.js} +1 -1
  72. package/dist/browser/{settings-BZyvLLph.js → settings-CK-qRFM8.js} +2 -2
  73. package/dist/browser/{settings-item-zDeA5cv4.js → settings-item-CUnGC7xO.js} +6 -6
  74. package/dist/browser/{storage-CneO9F9t.js → storage-0QGL3b8S.js} +3 -3
  75. package/dist/browser/{store-CQphSXxk.js → store-Bm4aFC2V.js} +4543 -4998
  76. package/dist/browser/{string-editor-BJn1AFSw.js → string-editor-BNry84Oh.js} +8 -8
  77. package/dist/browser/{theme-DoAOOaRE.js → theme-BIXywNMw.js} +8 -8
  78. package/dist/browser/{ui-DNF4wGZh.js → ui-AzubEvGd.js} +8 -8
  79. package/dist/browser/{useRenderTarget-BYpCY_A9.js → useRenderTarget-Bf7cQRFi.js} +4 -4
  80. package/dist/esm/_misc_to_move/manifest.d.ts +1 -0
  81. package/dist/esm/components/AlertContainer.d.ts +1 -1
  82. package/dist/esm/components/Controls.js +1 -1
  83. package/dist/esm/components/CookieConsent.d.ts +3 -3
  84. package/dist/esm/components/CookieConsent.js +1 -1
  85. package/dist/esm/components/EntityItemContainer.d.ts +1 -1
  86. package/dist/esm/components/Exhibitor.js +1 -1
  87. package/dist/esm/components/HeatmapLegendContainer.d.ts +6 -0
  88. package/dist/esm/components/HeatmapLegendContainer.js +1 -0
  89. package/dist/esm/components/HighlightTextContainer.d.ts +1 -1
  90. package/dist/esm/components/Kiosk/SetKiosk/SetKioskComponent.js +1 -1
  91. package/dist/esm/components/Layout.js +1 -1
  92. package/dist/esm/components/LevelBadgeContainer.d.ts +6 -0
  93. package/dist/esm/components/LevelBadgeContainer.js +1 -0
  94. package/dist/esm/components/LevelSelector.js +1 -1
  95. package/dist/esm/components/LogoOverlay.js +1 -1
  96. package/dist/esm/components/Map/Map.js +1 -1
  97. package/dist/esm/components/Map/drawing/config/config-booth-bg.d.ts +3 -2
  98. package/dist/esm/components/Map/drawing/config/config-booth-bg.js +1 -1
  99. package/dist/esm/components/Map/drawing/config/config-booth-border.js +1 -1
  100. package/dist/esm/components/Map/drawing/config/config-booths.js +1 -1
  101. package/dist/esm/components/Map/drawing/config/config-load-layer.js +1 -1
  102. package/dist/esm/components/Map/traffic/useManageTraffic.js +1 -1
  103. package/dist/esm/components/Maplibre/MaplibreAdapter.d.ts +14 -0
  104. package/dist/esm/components/Maplibre/MaplibreAdapter.js +1 -0
  105. package/dist/esm/components/Maplibre/MaplibreWrapper.d.ts +69 -0
  106. package/dist/esm/components/Maplibre/MaplibreWrapper.js +1 -0
  107. package/dist/esm/components/Maplibre/useCameraReactions.d.ts +10 -0
  108. package/dist/esm/components/Maplibre/useCameraReactions.js +1 -0
  109. package/dist/esm/components/Maplibre/useDimming.d.ts +16 -0
  110. package/dist/esm/components/Maplibre/useDimming.js +1 -0
  111. package/dist/esm/components/Maplibre/useLayerVisibilitySync.d.ts +11 -0
  112. package/dist/esm/components/Maplibre/useLayerVisibilitySync.js +1 -0
  113. package/dist/esm/components/Maplibre/useRendererEvents.d.ts +9 -0
  114. package/dist/esm/components/Maplibre/useRendererEvents.js +1 -0
  115. package/dist/esm/components/Maplibre/useWayfindingAndMarkers.d.ts +8 -0
  116. package/dist/esm/components/Maplibre/useWayfindingAndMarkers.js +1 -0
  117. package/dist/esm/components/Maplibre/utils/geo-config.d.ts +30 -0
  118. package/dist/esm/components/Maplibre/utils/geo-config.js +1 -0
  119. package/dist/esm/components/Maplibre/utils/layer-defs.d.ts +4 -0
  120. package/dist/esm/components/Maplibre/utils/layer-defs.js +1 -0
  121. package/dist/esm/components/Maplibre/utils/map-helpers.d.ts +9 -0
  122. package/dist/esm/components/Maplibre/utils/map-helpers.js +1 -0
  123. package/dist/esm/components/Maplibre/utils/solver.d.ts +24 -0
  124. package/dist/esm/components/Maplibre/utils/solver.js +1 -0
  125. package/dist/esm/components/OverlayContainer.d.ts +1 -1
  126. package/dist/esm/components/OverlayGripContainer.d.ts +4 -0
  127. package/dist/esm/components/OverlayGripContainer.js +1 -0
  128. package/dist/esm/components/ScrollableRowContainer.d.ts +6 -0
  129. package/dist/esm/components/ScrollableRowContainer.js +1 -0
  130. package/dist/esm/components/SearchButtons/SearchButtons.d.ts +1 -1
  131. package/dist/esm/components/SearchButtons/SearchButtons.js +1 -1
  132. package/dist/esm/components/Shortcuts/ShortcutsToolbar.d.ts +1 -1
  133. package/dist/esm/components/Shortcuts/ShortcutsToolbar.js +1 -1
  134. package/dist/esm/components/WayfindingFloorSelectorContainer.d.ts +1 -1
  135. package/dist/esm/components/gps/GpsPermissionRequest.js +1 -1
  136. package/dist/esm/components/index.d.ts +9 -8
  137. package/dist/esm/components/index.js +1 -1
  138. package/dist/esm/data/Flags.d.ts +1 -0
  139. package/dist/esm/data/fpGeo.d.ts +20 -1
  140. package/dist/esm/floorplan.loader.d.ts +1 -0
  141. package/dist/esm/floorplan.loader.js +1 -1
  142. package/dist/esm/floorplan.ready.js +1 -1
  143. package/dist/esm/renderer/RendererService.d.ts +5 -0
  144. package/dist/esm/renderer/RendererService.js +1 -1
  145. package/dist/esm/services/routing.js +1 -1
  146. package/dist/esm/store/HeatmapStore.js +1 -1
  147. package/dist/esm/store/MaplibreStore.d.ts +22 -0
  148. package/dist/esm/store/MaplibreStore.js +1 -0
  149. package/dist/esm/store/RootStore.d.ts +2 -2
  150. package/dist/esm/store/RootStore.js +1 -1
  151. package/dist/esm/store/RouteStore.js +1 -1
  152. package/dist/esm/store/init/init-booths.js +1 -1
  153. package/dist/esm/types.d.ts +9 -0
  154. package/dist/esm/ui/Draggable/Draggable.d.ts +9 -0
  155. package/dist/esm/ui/Draggable/Draggable.js +1 -0
  156. package/dist/esm/ui/Draggable/index.d.ts +3 -0
  157. package/dist/esm/ui/Draggable/index.js +1 -0
  158. package/dist/esm/ui/HeatmapLegend/HeatmapLegend.d.ts +13 -0
  159. package/dist/esm/ui/HeatmapLegend/HeatmapLegend.js +1 -0
  160. package/dist/esm/ui/HeatmapLegend/index.d.ts +3 -0
  161. package/dist/esm/ui/HeatmapLegend/index.js +1 -0
  162. package/dist/esm/ui/LevelBadge/LevelBadge.d.ts +9 -0
  163. package/dist/esm/ui/LevelBadge/LevelBadge.js +1 -0
  164. package/dist/esm/ui/LevelBadge/index.d.ts +3 -0
  165. package/dist/esm/ui/LevelBadge/index.js +1 -0
  166. package/dist/esm/ui/OverlayGrip/OverlayGrip.d.ts +11 -0
  167. package/dist/esm/ui/OverlayGrip/OverlayGrip.js +1 -0
  168. package/dist/esm/ui/OverlayGrip/index.d.ts +3 -0
  169. package/dist/esm/ui/OverlayGrip/index.js +1 -0
  170. package/dist/esm/ui/PermissionNotice/PermissionNotice.d.ts +16 -0
  171. package/dist/esm/ui/PermissionNotice/PermissionNotice.js +1 -0
  172. package/dist/esm/ui/PermissionNotice/index.d.ts +3 -0
  173. package/dist/esm/ui/PermissionNotice/index.js +1 -0
  174. package/dist/esm/{components → ui/ScrollableRow}/ScrollableRow.d.ts +5 -4
  175. package/dist/esm/ui/ScrollableRow/ScrollableRow.js +1 -0
  176. package/dist/esm/ui/ScrollableRow/index.d.ts +3 -0
  177. package/dist/esm/ui/ScrollableRow/index.js +1 -0
  178. package/dist/esm/ui/ToggleSwitch/ToggleSwitch.d.ts +4 -10
  179. package/dist/esm/ui/ToggleSwitch/ToggleSwitch.js +1 -1
  180. package/dist/esm/ui/shared/interactive.d.ts +2 -0
  181. package/dist/esm/ui/shared/interactive.js +1 -0
  182. package/dist/esm/utils/color-gradient.d.ts +2 -0
  183. package/dist/esm/utils/color-gradient.js +1 -0
  184. package/dist/esm/utils/dimming.d.ts +16 -0
  185. package/dist/esm/utils/dimming.js +1 -0
  186. package/dist/esm/wayfinding/core/position/gpsThreshold.d.ts +1 -1
  187. package/package.json +5 -9
  188. package/dist/browser/CookieConsent-DeA-DR4A.js +0 -71
  189. package/dist/browser/Mapbox-ChPNLhVw.js +0 -120
  190. package/dist/browser/ShowKiosk-CprbVv29.js +0 -26
  191. package/dist/browser/ThreeComponent-CtqPjAlQ.js +0 -1494
  192. package/dist/browser/components-XkvqySvZ.js +0 -8143
  193. package/dist/browser/data-DshpY4Eh.js +0 -27967
  194. package/dist/browser/vendor/mapbox/mapbox-gl.css +0 -1
  195. package/dist/esm/components/BookmarkSvg.d.ts +0 -4
  196. package/dist/esm/components/BookmarkSvg.js +0 -1
  197. package/dist/esm/components/Draggable.d.ts +0 -10
  198. package/dist/esm/components/Draggable.js +0 -1
  199. package/dist/esm/components/HeatmapLegend.d.ts +0 -12
  200. package/dist/esm/components/HeatmapLegend.js +0 -1
  201. package/dist/esm/components/LevelBadge.d.ts +0 -8
  202. package/dist/esm/components/LevelBadge.js +0 -1
  203. package/dist/esm/components/Mapbox/Button.d.ts +0 -10
  204. package/dist/esm/components/Mapbox/Button.js +0 -1
  205. package/dist/esm/components/Mapbox/Dot.d.ts +0 -10
  206. package/dist/esm/components/Mapbox/Dot.js +0 -1
  207. package/dist/esm/components/Mapbox/MapLoader.d.ts +0 -4
  208. package/dist/esm/components/Mapbox/MapLoader.js +0 -1
  209. package/dist/esm/components/Mapbox/Mapbox.d.ts +0 -4
  210. package/dist/esm/components/Mapbox/Mapbox.js +0 -1
  211. package/dist/esm/components/Mapbox/utils/data.d.ts +0 -38
  212. package/dist/esm/components/Mapbox/utils/data.js +0 -1
  213. package/dist/esm/components/OverlayGrip.d.ts +0 -5
  214. package/dist/esm/components/OverlayGrip.js +0 -1
  215. package/dist/esm/components/PermissionNotice/PermissionNotice.d.ts +0 -14
  216. package/dist/esm/components/PermissionNotice/PermissionNotice.js +0 -1
  217. package/dist/esm/components/ScrollableRow.js +0 -1
  218. package/dist/esm/components/Threejs/ThreeComponent.d.ts +0 -7
  219. package/dist/esm/components/Threejs/ThreeComponent.js +0 -1
  220. package/dist/esm/components/Threejs/UIManager.d.ts +0 -28
  221. package/dist/esm/components/Threejs/UIManager.js +0 -1
  222. package/dist/esm/components/Threejs/common/BoothMesh.d.ts +0 -20
  223. package/dist/esm/components/Threejs/common/BoothMesh.js +0 -1
  224. package/dist/esm/components/Threejs/common/Scene.d.ts +0 -13
  225. package/dist/esm/components/Threejs/common/Scene.js +0 -1
  226. package/dist/esm/components/Threejs/common/SpriteMesh.d.ts +0 -5
  227. package/dist/esm/components/Threejs/common/SpriteMesh.js +0 -1
  228. package/dist/esm/components/Threejs/common/dataLoader.d.ts +0 -31
  229. package/dist/esm/components/Threejs/common/dataLoader.js +0 -1
  230. package/dist/esm/components/Threejs/common/modelLoader.d.ts +0 -3
  231. package/dist/esm/components/Threejs/common/modelLoader.js +0 -1
  232. package/dist/esm/components/Threejs/common/sceneLoader.d.ts +0 -7
  233. package/dist/esm/components/Threejs/common/sceneLoader.js +0 -1
  234. package/dist/esm/components/Threejs/index.d.ts +0 -4
  235. package/dist/esm/components/Threejs/index.js +0 -1
  236. package/dist/esm/components/Threejs/mapbox/configureWebGLForMapbox.d.ts +0 -2
  237. package/dist/esm/components/Threejs/mapbox/configureWebGLForMapbox.js +0 -1
  238. package/dist/esm/components/Threejs/mapbox/index_mapbox.d.ts +0 -4
  239. package/dist/esm/components/Threejs/mapbox/index_mapbox.js +0 -1
  240. package/dist/esm/components/Threejs/mapbox/init-mapbox.d.ts +0 -3
  241. package/dist/esm/components/Threejs/mapbox/init-mapbox.js +0 -1
  242. package/dist/esm/components/Threejs/utils/canvasFromText.d.ts +0 -2
  243. package/dist/esm/components/Threejs/utils/canvasFromText.js +0 -1
  244. package/dist/esm/components/Threejs/utils/textureMerger.d.ts +0 -60
  245. package/dist/esm/components/Threejs/utils/textureMerger.js +0 -1
  246. package/dist/esm/store/MapboxStore.d.ts +0 -13
  247. package/dist/esm/store/MapboxStore.js +0 -1
  248. package/dist/esm/tools/Color.d.ts +0 -2
  249. package/dist/esm/tools/Color.js +0 -1
@@ -1 +1 @@
1
- import{PREVIEW_MODE_ATTRIBUTE as T}from"./constants";import l from"./tools/base-runtime-url";import{buildRebookingUrl as F,getRebookingToken as A,retainRebookingToken as V}from"./tools/rebookingUrl";import{loadCss as x,loadFont as g,loadJs as b}from"./tools/loaders";import U from"./tools/logger";import{sleep as H}from"./utils";import{initI18n as z}from"./utils/i18n";import S from"./utils/is-webview";import{loadCustomCss as G}from"./utils/loadCustomCss";import{loadIcons as N}from"./utils/loadIcons";import Q from"./utils/mergeExhibitors";import E from"./utils/use-shadow";import q from"./utils/is-debug";import W from"./utils/is-localhost";import{initSentry as $}from"./tools/sentry";import{shouldLoadIntercom as J}from"./intercom";function t(){throw new Error("FloorPlan not ready")}export default class K{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(T)}onBoothClick;onBookmarkClick;onVisitedClick;onCategoryClick;onFpConfigured;onDirection;onDetails;onExhibitorCustomButtonClick;onGetCoordsClick;onMarkerClick;onLeaveEvent;selectBooth(e){t()}selectExhibitor(e){t()}selectRoute(e,r){t()}getOptimizedRoutes(e){t()}selectCurrentPosition(e,r,h){t()}setBookmarks(e){t()}setEntitiesBookmarks(e){t()}setEntitiesVisited(e){t()}setMarkers(e){t()}updateLayerVisibility(e,r){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,r){t()}switchView(){t()}fitBounds(){t()}getBounds(e){t()}getBoothRect(e){t()}convertToGeo(e,r){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,r){t()}showPathwayOnly(e,r){t()}hidePathways(){t()}showSearch(){t()}changeLanguage(e){t()}isGpsTrackingEnabled(){t()}setGpsTrackingEnabled(e){t()}deselectCurrentPosition(){t()}deselectRoute(){t()}reset(){t()}selectAccessibleRoute(e){t()}constructor(e){this.options=e,this.noOverlay=!!e.noOverlay,this.offHistory=!!e.offHistory,this.ignoreQuery=e.ignoreQuery,this.allowConsent=W&&!q?!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,a)=>{this.resolveReady=d});const r=e.element;if(this.element=r,r.__expofp)throw new Error("Element already in use");if(r.__expofp=this,r.getAttribute("data-event-id")||r.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");$({eventId:h||"",isWebview:S}),this.eventId=h,window.__efpEvent=h,window.__efpElement=r;const m=document.createElement("div");m.style.height="100%",m.style.width="100%",r.appendChild(m);let n;if(S&&(this.allowConsent=!0),e.allowConsent===void 0){const a=new URL(window.location.href).searchParams.get("allowConsent");a&&(this.allowConsent=a==="true")}if(E){n=m.attachShadow({mode:"open"});const d=n,a=document;d.createElement=(...i)=>a.createElement(...i),d.createElementNS=(...i)=>a.createElementNS(...i),d.createTextNode=(...i)=>a.createTextNode(...i)}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,r.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 L=u+"data.js",O=u+"wf.data.js",P=u+"fp.svg.js",B=[b(O),b(L),b(P)];let v=0;this.efpStyleLoadHandler=function(d){const a=window.__efpStyleElements;for(;v<a.length;){const i=a[v];n.appendChild(i),v++}},window.addEventListener("__efpStyleLoad",this.efpStyleLoadHandler);const k=this;(async function(){await Promise.all(B);let a=0;for(;window.__fpPending&&!window.__fp;)await H(2e3),await b(P+`?v=${++a}`);const i=window.__data;if(!i){const{showEventNotFound:o}=await import("./tools/event-not-found");o(r);return}const R=J(i);R&&import("./intercom/bootIntercom").then(({bootIntercom:o})=>o(R)).catch(()=>{}),await z();const w=new URLSearchParams(window.location.search);let f,C;if(i?.trackerUrl)try{f=new URL(i.trackerUrl),C=f.searchParams.get("expoId")}catch(o){console.error(o)}const I=async o=>{if(!f||!C)return Promise.reject(new Error("trackerUrl or expoId is missing"));const s=new URL(o.dataUrl,f.origin),c=await fetch(s.toString(),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({expoId:C,token:decodeURIComponent(w.get("t"))})});let p=[];c.ok&&(p=(await c.json()).map(o.dataMapper)),window.__heatmapDataYah={yah:p}};if(w.get("heatmap")==="true")try{if(w.get("type")==="yah")w.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,s)=>({...o,name:`QR Code #${s+1}`})});else{const o=new URL("/api/fp-stats/get",f.origin);o.searchParams.set("expoId",C),o.searchParams.set("type","booview"),o.searchParams.set("t",decodeURIComponent(w.get("t")));const s=new URL("api/fp-stats/get",f.origin);s.searchParams.set("expoId",C),s.searchParams.set("type","exview"),s.searchParams.set("t",decodeURIComponent(w.get("t")));const[c,p]=await Promise.all([fetch(o.toString()),fetch(s.toString())]),[_,M]=await Promise.all([c.json(),p.json()]);window.__heatmapData={booths:_,exhibitors:M}}}catch(o){console.error("Heatmap: Initialization error",o)}try{const o=A();if(o){V(o);const s=F("api/rebooking-data",{rt:o,expoKey:h}),c=await fetch(s);if(c.ok){const p=await c.json();Q(i,p)}i.isRebooking=c.ok}else i.isRebooking=!1}catch(o){console.error(o)}const D=[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}),G(i,n),N(k.icons)];await Promise.all(D),k.enableRotation=i?.enableRotation??!1,k.alwaysShowSidebar=i?.alwaysShowSidebar??!1,U.log("Data loaded");const{default:j}=await import("./floorplan.ready");for(document.querySelectorAll(".expofp-floorplan-loader").forEach(o=>o.remove());r.firstChild&&r.firstChild!==m;)r.removeChild(r.firstChild);Object.setPrototypeOf(k,j.prototype).init()})()}}
1
+ import{PREVIEW_MODE_ATTRIBUTE as T}from"./constants";import c from"./tools/base-runtime-url";import{buildRebookingUrl as F,getRebookingToken as A,retainRebookingToken as V}from"./tools/rebookingUrl";import{loadCss as I,loadFont as g,loadJs as k}from"./tools/loaders";import U from"./tools/logger";import{sleep as H}from"./utils";import{initI18n as z}from"./utils/i18n";import S from"./utils/is-webview";import{loadCustomCss as G}from"./utils/loadCustomCss";import{loadIcons as N}from"./utils/loadIcons";import Q from"./utils/mergeExhibitors";import E from"./utils/use-shadow";import q from"./utils/is-debug";import W from"./utils/is-localhost";import{initSentry as $}from"./tools/sentry";import{shouldLoadIntercom as J}from"./intercom";function t(){throw new Error("FloorPlan not ready")}export default class K{options;renderTarget;_ready;element;eventId;dataUrl;noOverlay;offHistory;ignoreQuery;allowConsent;onInit;disableRuntimeAlerts;viewerMode;maplibre;efpStyleLoadHandler;resolveReady;icons=new Map;enableRotation=!0;alwaysShowSidebar=!1;get ready(){return this._ready}get previewMode(){return this.options.previewMode||this.element.hasAttribute(T)}onBoothClick;onBookmarkClick;onVisitedClick;onCategoryClick;onFpConfigured;onDirection;onDetails;onExhibitorCustomButtonClick;onGetCoordsClick;onMarkerClick;onLeaveEvent;selectBooth(e){t()}selectExhibitor(e){t()}selectRoute(e,r){t()}getOptimizedRoutes(e){t()}selectCurrentPosition(e,r,h){t()}setBookmarks(e){t()}setEntitiesBookmarks(e){t()}setEntitiesVisited(e){t()}setMarkers(e){t()}updateLayerVisibility(e,r){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,r){t()}switchView(){t()}fitBounds(){t()}getBounds(e){t()}getBoothRect(e){t()}convertToGeo(e,r){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,r){t()}showPathwayOnly(e,r){t()}hidePathways(){t()}showSearch(){t()}changeLanguage(e){t()}isGpsTrackingEnabled(){t()}setGpsTrackingEnabled(e){t()}deselectCurrentPosition(){t()}deselectRoute(){t()}reset(){t()}selectAccessibleRoute(e){t()}constructor(e){this.options=e,this.noOverlay=!!e.noOverlay,this.offHistory=!!e.offHistory,this.ignoreQuery=e.ignoreQuery,this.allowConsent=W&&!q?!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.maplibre=e.maplibre,window.__efpMaplibre=e.maplibre,this._ready=new Promise((l,a)=>{this.resolveReady=l});const r=e.element;if(this.element=r,r.__expofp)throw new Error("Element already in use");if(r.__expofp=this,r.getAttribute("data-event-id")||r.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");$({eventId:h||"",isWebview:S}),this.eventId=h,window.__efpEvent=h,window.__efpElement=r;const m=document.createElement("div");m.style.height="100%",m.style.width="100%",r.appendChild(m);let n;if(S&&(this.allowConsent=!0),e.allowConsent===void 0){const a=new URL(window.location.href).searchParams.get("allowConsent");a&&(this.allowConsent=a==="true")}if(E){n=m.attachShadow({mode:"open"});const l=n,a=document;l.createElement=(...i)=>a.createElement(...i),l.createElementNS=(...i)=>a.createElementNS(...i),l.createTextNode=(...i)=>a.createTextNode(...i)}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,r.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 L=u+"data.js",O=u+"wf.data.js",x=u+"fp.svg.js",B=[k(O),k(L),k(x)];let v=0;this.efpStyleLoadHandler=function(l){const a=window.__efpStyleElements;for(;v<a.length;){const i=a[v];n.appendChild(i),v++}},window.addEventListener("__efpStyleLoad",this.efpStyleLoadHandler);const b=this;(async function(){await Promise.all(B);let a=0;for(;window.__fpPending&&!window.__fp;)await H(2e3),await k(x+`?v=${++a}`);const i=window.__data;if(!i){const{showEventNotFound:o}=await import("./tools/event-not-found");o(r);return}const P=J(i);P&&import("./intercom/bootIntercom").then(({bootIntercom:o})=>o(P)).catch(()=>{}),await z();const w=new URLSearchParams(window.location.search);let f,C;if(i?.trackerUrl)try{f=new URL(i.trackerUrl),C=f.searchParams.get("expoId")}catch(o){console.error(o)}const R=async o=>{if(!f||!C)return Promise.reject(new Error("trackerUrl or expoId is missing"));const s=new URL(o.dataUrl,f.origin),d=await fetch(s.toString(),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({expoId:C,token:decodeURIComponent(w.get("t"))})});let p=[];d.ok&&(p=(await d.json()).map(o.dataMapper)),window.__heatmapDataYah={yah:p}};if(w.get("heatmap")==="true")try{if(w.get("type")==="yah")w.get("subtype")==="kiosk"?await R({dataUrl:"/api/kiosks/list/viewer",dataMapper:o=>({...o,id:o.key,name:`Kiosk ${o.key}`})}):await R({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",f.origin);o.searchParams.set("expoId",C),o.searchParams.set("type","booview"),o.searchParams.set("t",decodeURIComponent(w.get("t")));const s=new URL("api/fp-stats/get",f.origin);s.searchParams.set("expoId",C),s.searchParams.set("type","exview"),s.searchParams.set("t",decodeURIComponent(w.get("t")));const[d,p]=await Promise.all([fetch(o.toString()),fetch(s.toString())]),[_,M]=await Promise.all([d.json(),p.json()]);window.__heatmapData={booths:_,exhibitors:M}}}catch(o){console.error("Heatmap: Initialization error",o)}try{const o=A();if(o){V(o);const s=F("api/rebooking-data",{rt:o,expoKey:h}),d=await fetch(s);if(d.ok){const p=await d.json();Q(i,p)}i.isRebooking=d.ok}else i.isRebooking=!1}catch(o){console.error(o)}const D=[I(c+"vendor/sanitize-css/sanitize.css",n),I(c+"vendor/perfect-scrollbar/css/perfect-scrollbar.css",n),g("Oswald",c+"fonts/oswald-v17-cyrillic_latin-300.woff",{weight:300}),g("Oswald",c+"fonts/oswald-v17-cyrillic_latin-500.woff",{weight:500}),g("Inter",c+"fonts/inter-400.woff2",{weight:400}),g("Inter",c+"fonts/inter-500.woff2",{weight:500}),g("Inter",c+"fonts/inter-600.woff2",{weight:600}),g("efp-symbols",c+"fonts/efp-symbols.woff",{weight:400}),G(i,n),N(b.icons)];await Promise.all(D),b.enableRotation=i?.enableRotation??!1,b.alwaysShowSidebar=i?.alwaysShowSidebar??!1,U.log("Data loaded");const{default:j}=await import("./floorplan.ready");for(document.querySelectorAll(".expofp-floorplan-loader").forEach(o=>o.remove());r.firstChild&&r.firstChild!==m;)r.removeChild(r.firstChild);Object.setPrototypeOf(b,j.prototype).init()})()}}
@@ -1 +1 @@
1
- import{jsx as g,Fragment as L,jsxs as C}from"react/jsx-runtime";import{reaction as T}from"mobx";import{createRoot as R}from"react-dom/client";import{install as I}from"resize-observer";import V from"./components/Layout";import $ from"./floorplan.loader";import{applyParameters as M,destroyHistory as j,initRouting as z}from"./services/routing";import t from"./store";import{Route as S,findBooth as x,separateExternalIds as E}from"./store/RouteStore";import{destroyUiHandlers as G}from"./store/init/init-ui";import{GaEventActions as P,destroyGtag as _,sendEventToGa as w,setConsentSettings as q}from"./tools/gtag";import N from"./tools/report-error";import{resetGlobalVariables as Y}from"./tools/reset";import H from"./tools/track-event";import{fpGeo as B}from"./data/fpGeo";import{convertLocalToGps as O,isValidPointCoords as d}from"./utils/gps";import m from"./core/Rect";import{mapEntity as y}from"./utils/mapEntity";import{LANG_KEY as X,MAX_ROUTE_WAYPOINTS as p,PATHWAY_KEY as U}from"./constants";import{getStorage as v}from"./utils/entity-storage";import{ErrorBoundary as D}from"@sentry/react";import{POISelectorsSchema as F,BoundsSchema as K,ZoomToOptionsSchema as A}from"./schemas/sdk.schemas";import W from"debug";import{optimizeWaypointOrder as Q}from"./wayfinding/core/routing/optimizeWaypointOrder";import{hasLocale as Z,getLocales as J}from"./utils/i18n";const b=W("efp:api");I();export default class ee extends ${root;init(){this.ignoreQuery||z(this.offHistory),H("load"),t.fp=this,q(this.allowConsent),w(P.Load,""),this.root=R(this.renderTarget),this.root.render(g(D,{children:g(V,{offHistory:this.offHistory,allowConsent:this.allowConsent})})),w(P.Rendered,""),T(()=>t.layerStore.layersLoaded,()=>{this.resolveReady(),t.initialized||this.onInit?.(this),t.initialized=!0})}selectBooth(e){if(typeof e!="string"&&!Array.isArray(e)){a("selectBooth","Parameter must be a string or an array of strings.","EFP000000");return}const i=t.boothStore.booths.filter(o=>typeof e=="string"?o.name===e||o.externalId===e:e.includes(o.name)||e.includes(o.externalId));t.selectBooth(i)}selectExhibitor(e){if(typeof e!="string"&&!Array.isArray(e)){a("selectExhibitor","Parameter must be a string or an array of strings.","EFP000100");return}if(!e?.length){t.uiState.menu=!1,t.searchStore.resetSearchBox(),t.uiState.details=null;return}const i=t.exhibitorStore.exhibitors.filter(s=>typeof e=="string"?s.name===e||s.externalId===e:e.includes(s.name)||e.includes(s.externalId));if(!i?.length)return;if(typeof e=="string"){t.selectExhibitor(i[0]),t.moveToList([i[0]]);return}const o=i.flatMap(s=>s.booths.map(r=>r.layer)),{description:n}=o.reduce((s,r)=>(s.freq[r.description]=(s.freq[r.description]||0)+1,s.freq[r.description]>s.maxCount&&(s.maxCount=s.freq[r.description],s.mostFrequent=r),s),{freq:{},mostFrequent:o[0],maxCount:0}).mostFrequent;t.layerStore.updateVisibility(n,!0),t.uiState.menu=!1,t.searchStore.resetSearchBox(),t.uiState.details=null,t.uiState.list={type:"filter",items:i,query:{key:"exhibitors",value:i.map(s=>s.externalId).join(",")}},t.moveToList()}highlightExhibitors(e){Array.isArray(e)||a("highlightExhibitors","Parameter must be an array of strings.","EFP000200"),t.boothStore.highlightedByExternalIds=[],t.exhibitorStore.highlightedByExternalIds=[...e]}highlightBooths(e){Array.isArray(e)||a("highlightBooths","Parameter must be an array of strings.","EFP000300"),t.exhibitorStore.highlightedByExternalIds=[],t.boothStore.highlightedByExternalIds=[...e]}highlightEntities(e){Array.isArray(e)||a("highlightEntities","Parameter must be an array of strings.","EFP000400");const{boothExternalIds:i,exhibitorExternalIds:o}=E(e);t.boothStore.highlightedByExternalIds=[...i],t.exhibitorStore.highlightedByExternalIds=[...o]}selectRoute(e,i){if(Array.isArray(e)){let o=[...e];const n=o.shift(),s=o.pop();if(o.length>p)throw new Error(`The maximum number of waypoints is ${p}.`);if(!n||!s){a("selectRoute","Invalid route format: When providing an array, it must include at least two points: a start and a destination.","EFP000401");return}t.routeStore.selectRoute(new S(f(n),f(s),o.map(f)));return}e||a("selectRoute","At a minimum, the starting point must be passed.","EFP000402"),t.routeStore.selectRoute(new S(f(e),f(i)))}getOptimizedRoutes(e){if(!Array.isArray(e))return a("getOptimizedRoutes","Parameter must be an array.","EFP000500"),[];if(e.length>p)throw new Error(`The maximum number of waypoints is ${p}.`);const i=e.map(f).filter(n=>!!n);if(!i.length)throw new Error("No booths found for the provided waypoints.");const o=new Map;for(const n of i){const s=n.layer?.name??"",r=o.get(s);r?r.push(n):o.set(s,[n])}return Array.from(o.values()).map(n=>({waypoints:Q(n.map(s=>[s.name,{cx:s.rect.cx,cy:s.rect.cy}]))}))}selectCurrentPosition(e,i,o){const n=d(e.x)&&d(e.y),s=d(e.lng)&&d(e.lat);!n&&!s&&a("selectCurrentPosition","A point must be passed. Either (x,y) or (lat,lng) are required.","EFP000600"),t.routeStore.selectCurrentPosition(e,i,o),this.onCurrentPositionChanged?.(e)}setBookmarks(e){(!Array.isArray(e)||!e.length)&&a("setBookmarks","Parameter must be an array.","EFP000700"),e.forEach(i=>{const o=t.exhibitorStore.exhibitors.find(n=>n.name===i.name||n.externalId===i.externalId);o&&(o.bookmarked=i.bookmarked)})}setEntitiesBookmarks(e){if(!Array.isArray(e)||!e.length){a("setEntitiesBookmarks","Parameter must be an array.","EFP000701");return}const i=["exhibitor","event","speaker","booth"],o=e.find(r=>!r.type||!i.includes(r.type));if(o){a("setEntitiesBookmarks",`Invalid entity type: ${o.type}. Must be one of: ${i.join(", ")}.`,"EFP000702");return}const n=v("bookmarked"),s={exhibitor:{existingIds:new Set(n.exhibitors||[]),finder:r=>t.exhibitorStore.findExhibitor(r),replacer:r=>t.exhibitorStore.replaceBookmarked(r)},event:{existingIds:new Set(n.events||[]),finder:r=>t.eventStore.findByNameOrSlug(r),replacer:r=>t.eventStore.replaceBookmarked(r)},speaker:{existingIds:new Set(n.speakers||[]),finder:r=>t.speakerStore.speakers.find(l=>l.name===r||l.externalId===r||l.slug===r),replacer:r=>t.speakerStore.replaceBookmarked(r)},booth:{existingIds:new Set(n.booths||[]),finder:r=>{const l=t.boothStore.findBooth(r);return l?.exhibitors.length===0?l:void 0},replacer:r=>t.boothStore.replaceBookmarked(r)}};e.forEach(r=>{const l=s[r.type],h=r.name||r.externalId||"",c=l.finder(h);c?r.bookmarked?l.existingIds.add(c.id):l.existingIds.delete(c.id):console.warn(`Entity not found: ${r.type} with query "${h}"`)}),Object.values(s).forEach(r=>{r.replacer(Array.from(r.existingIds))})}setEntitiesVisited(e){if(!Array.isArray(e)||!e.length){a("setEntitiesVisited","Parameter must be an array.","EFP000703");return}const i=["exhibitor","event"],o=e.find(r=>!r.type||!i.includes(r.type));if(o){a("setEntitiesVisited",`Invalid entity type: ${o.type}. Must be one of: ${i.join(", ")}.`,"EFP000704");return}const n=v("visited"),s={exhibitor:{existingIds:new Set(n.exhibitors||[]),finder:r=>t.exhibitorStore.findExhibitor(r),replacer:r=>t.exhibitorStore.replaceVisited(r)},event:{existingIds:new Set(n.events||[]),finder:r=>t.eventStore.findByNameOrSlug(r),replacer:r=>t.eventStore.replaceVisited(r)}};e.forEach(r=>{const l=s[r.type],h=r.name||r.externalId||"",c=l.finder(h);c?r.visited?l.existingIds.add(c.id):l.existingIds.delete(c.id):console.warn(`Entity not found: ${r.type} with query "${h}"`)}),Object.values(s).forEach(r=>{r.replacer(Array.from(r.existingIds))})}setMarkers(e){if(!e||!Array.isArray(e.icons)||!Array.isArray(e.markers)){a("setMarkers","Invalid input.","EFP000800");return}t.routeStore.setMarkers(e)}selectMarker(e,i=!0){return typeof e!="string"&&a("selectMarker","The identifier must be passed.","EFP000900"),t.routeStore.selectMarker(e,i)}drawCircles(e){Array.isArray(e)||a("drawCircles","Invalid input.","EFP000A00"),t.uiState.debugCircles=e}checkRoutes(){t.routeStore.checkRoutes()}updateLayerVisibility(e,i){typeof e!="string"&&a("updateLayerVisibility","The layer name (string) must be passed.","EFP000B00"),i||a("updateLayerVisibility","Passing a false value to visible will have no effect.","EFP000B01"),t.layerStore.updateVisibility(e,i)}getCenterCoordinates(){return t.fp.getCenterCoordinates()}exhibitorsList(){return t.exhibitorStore.exhibitors.map(e=>y(e))}boothsList(){return t.boothStore.booths.map(e=>y(e))}categoriesList(){return t.categoryStore.categories.map(e=>y(e))}selectCategory(e){if(e==null||typeof e!="string"){t.searchStore.selectSearch();return}const i=e?.toLowerCase(),o=t.categoryStore.categories.find(({name:n,slug:s})=>n?.toLowerCase()===i||s?.toLowerCase()===i);if(!o){a("selectCategory",`Category ${e} not found.`,"EFP000C01");return}t.selectCategory(o)}applyParameters(e){typeof e!="string"&&a("applyParameters","A query string must be passed.","EFP000D00"),M(e)}getVisibility(){return t.uiState.visibility}setVisibility(e){(typeof e!="object"||!Object.keys(e).length)&&a("setVisibility","The parameter must be passed.","EFP000E00"),t.uiState.setVisibility(e)}findLocation(){t.routeStore.findLocation()}zoomIn(){t.uiState.zoomIn()}zoomOut(){t.uiState.zoomOut()}switchView(){t.mapboxStore.activateMapbox()}zoomTo(e,i){b("zoomTo called with selectors=%O options=%O",e,i);const o=F.safeParse(e);if(!o.success){a("zoomTo",o.error.message,"EFP001600");return}const n=A.safeParse(i);if(!n.success){a("zoomTo",n.error.message,"EFP001601");return}const s=this.getBounds(e);s&&this.fitBounds(s,i)}getBounds(e){b("getBounds called with selectors=%O",e);const i=F.safeParse(e);if(!i.success){a("getBounds",i.error.message,"EFP001400");return}const o=[];if(e.booths?.forEach(s=>{let r;s.externalId?r=t.boothStore.boothByExternalId.get(s.externalId):s.name&&(r=t.boothStore.boothByName.get(s.name.toLowerCase())),r?.rect&&o.push(r.rect)}),e.exhibitors?.forEach(s=>{let r;s.externalId?r=t.exhibitorStore.exhibitorByExternalId.get(s.externalId):s.name&&(r=t.exhibitorStore.exhibitorByName.get(s.name.toLowerCase())),r?.booths?.forEach(l=>{l.rect&&o.push(l.rect)})}),o.length===0)return;const n=m.fromMultiple(o);return{leftTop:{x:n.x1,y:n.y1},rightBottom:{x:n.x2,y:n.y2}}}fitBounds(e,i){if(b("fitBounds called with bounds=%O options=%O",e,i),!e){t.uiState.fitBounds();return}const o=K.safeParse(e);if(!o.success){a("fitBounds",o.error.message,"EFP001500");return}const n=A.safeParse(i);if(!n.success){a("fitBounds",n.error.message,"EFP001501");return}let s;if(i?.padding){const r=i.padding;s=m.fromX1y1x2y2(e.leftTop.x-r,e.leftTop.y-r,e.rightBottom.x+r,e.rightBottom.y+r)}else s=m.fromX1y1x2y2(e.leftTop.x,e.leftTop.y,e.rightBottom.x,e.rightBottom.y);t.uiState.moveToRect=s}getBoothRect(e){return typeof e!="string"&&a("getBoothRect","A booth name must be passed.","EFP000F00"),x(e)?.rect}convertToGeo(e,i){if(!B?.properties?.config){a("convertToGeo","The coordinates cannot be converted because the GPS configuration is not defined.","EFP001000");return}if(!e||!i){a("convertToGeo","Both coordinates must be passed.","EFP001001");return}return O(e,i,B.properties.config)}unstable_destroy(){let e=window.__efpElement.firstChild;Y(),window.removeEventListener("__efpStyleLoad",this.efpStyleLoadHandler),window.removeEventListener("error",N),j(),G(),_(),[...document.getElementsByTagName("script")].filter(o=>o.src.indexOf("/fp.svg")>-1||o.src.indexOf("/wf.data.js")>-1||o.src.indexOf("/data.js")>-1).forEach(o=>o.remove()),this.root.unmount(),e.remove()}search(e){return typeof e!="string"&&a("search","A search string must be passed.","EFP001100"),t.fuzzySearchEngineStore.loadEngine().then(()=>(t.searchStore.selectSearch(e),t.uiState.fuzzySearchItems.map(i=>({item:y(i.item),score:i.score}))))}getFloors(){return t.layerStore.floors.map(e=>({name:e.name,shortName:e.shortName,description:e.description,active:e.active,disabled:e.disabled,index:e.index}))}activateFloor(e){if(!e?.name&&e?.index==null){a("activateFloor","Invalid floorId. It must contain either a name or an index.","EFP001200");return}const i=this.getFloors();if(e.name){const o=i.find(n=>n.name===e.name||n.shortName===e.name);if(!o){a("activateFloor",`Floor with name "${e.name}" not found.`,"EFP001201");return}if(o.active)return;this.updateLayerVisibility(o.name,!0);return}if(e.index!==null){const o=i.find(s=>s.index===e.index),n=o?.name;if(!n){a("activateFloor",`Floor at index ${e.index} does not exist.`,"EFP001203");return}if(o.active)return;this.updateLayerVisibility(n,!0);return}}showPathway(e,i){const o=new URLSearchParams;if(o.set(U,e),i?.length){const{boothExternalIds:n,exhibitorExternalIds:s}=E(i);n.length>0&&o.set("booths",n.join(",")),s.length>0&&o.set("exhibitors",s.join(","))}this.applyParameters(o.toString())}showPathwayOnly(e,i){this.activateFloor({name:i}),t.layerStore.showPathWay(e),t.uiState.setPathwayOnlyMode(!0);const o=t.layerStore.findLayer(e),n=t.layerStore.findLayer(i),s=o?.rect||o?.viewbox?o:n;if(s?.rect||s?.viewbox){const r=s.viewbox??s.rect;t.uiState.moveToRect=m.fromX1y1x2y2(r.x1,r.y1,r.x2,r.y2)}}hidePathways(){this.highlightBooths([]),t.layerStore.hidePathways(),t.uiState.setPathwayOnlyMode(!1)}showSearch(){t.selectSearch("")}changeLanguage(e){const i=e?.toLowerCase?.();if(!Z(i)){a("changeLanguage",`Language "${e}" was not found. Available languages: ${J().map(n=>n.id).join(",")}`,"EFP001300");return}const o=new URLSearchParams;o.set(X,i),this.applyParameters(o.toString())}isGpsTrackingEnabled(){return t.routeStore.gpsEnabled}setGpsTrackingEnabled(e){t.routeStore.setGpsTrackingEnabled(e)}deselectCurrentPosition(){t.routeStore.selectCurrentPosition(null,!1)}deselectRoute(){t.routeStore.selectRoute(null),t.routeStore.setOnlyAccessible(!1)}reset(){this.selectBooth(""),this.selectExhibitor(""),this.selectCategory(),this.deselectCurrentPosition(),this.deselectRoute(),this.highlightEntities([]),t.uiState.kioskData&&t.resetCameraFn?t.resetCameraFn?.():this.fitBounds()}selectAccessibleRoute(e){t.routeStore.setOnlyAccessible(!0),this.selectRoute(e)}}function f(u){return typeof u=="string"?x(u):t.routeStore.getNearestBooth(u)}let k=0;function a(u,e,i){const o=`Error calling "${u}" SDK method.`,n=`${e.endsWith(".")?e:e+"."} More information at`;let s="https://js-sdk.expofp.com/api/packages";if(i&&(s+=`#error-${i}`),console.error(`${o} ${n} ${s}`),t.fp.disableRuntimeAlerts)return;t.uiState.setGlobalErrorMessage({title:o,body:C(L,{children:[n," ",g("a",{href:s,target:"_blank",rel:"noreferrer",children:s})]})}),clearTimeout(k);const r=8e3;k=window.setTimeout(()=>{const l=async()=>{t.uiState.globalErrorMessages.length>0&&(t.uiState.popGlobalErrorMessage(),await new Promise(h=>setTimeout(h,r/2)),l())};l()},r)}
1
+ import{jsx as g,Fragment as L,jsxs as C}from"react/jsx-runtime";import{reaction as T}from"mobx";import{createRoot as R}from"react-dom/client";import{install as I}from"resize-observer";import V from"./components/Layout";import $ from"./floorplan.loader";import{applyParameters as M,destroyHistory as j,initRouting as z}from"./services/routing";import t from"./store";import{Route as S,findBooth as x,separateExternalIds as E}from"./store/RouteStore";import{destroyUiHandlers as G}from"./store/init/init-ui";import{GaEventActions as P,destroyGtag as _,sendEventToGa as w,setConsentSettings as q}from"./tools/gtag";import N from"./tools/report-error";import{resetGlobalVariables as Y}from"./tools/reset";import H from"./tools/track-event";import{fpGeo as B}from"./data/fpGeo";import{convertLocalToGps as O,isValidPointCoords as d}from"./utils/gps";import m from"./core/Rect";import{mapEntity as y}from"./utils/mapEntity";import{LANG_KEY as X,MAX_ROUTE_WAYPOINTS as p,PATHWAY_KEY as U}from"./constants";import{getStorage as v}from"./utils/entity-storage";import{ErrorBoundary as D}from"@sentry/react";import{POISelectorsSchema as F,BoundsSchema as K,ZoomToOptionsSchema as A}from"./schemas/sdk.schemas";import W from"debug";import{optimizeWaypointOrder as Q}from"./wayfinding/core/routing/optimizeWaypointOrder";import{hasLocale as Z,getLocales as J}from"./utils/i18n";const b=W("efp:api");I();export default class ee extends ${root;init(){this.ignoreQuery||z(this.offHistory),H("load"),t.fp=this,q(this.allowConsent),w(P.Load,""),this.root=R(this.renderTarget),this.root.render(g(D,{children:g(V,{offHistory:this.offHistory,allowConsent:this.allowConsent})})),w(P.Rendered,""),T(()=>t.layerStore.layersLoaded,()=>{this.resolveReady(),t.initialized||this.onInit?.(this),t.initialized=!0})}selectBooth(e){if(typeof e!="string"&&!Array.isArray(e)){a("selectBooth","Parameter must be a string or an array of strings.","EFP000000");return}const i=t.boothStore.booths.filter(o=>typeof e=="string"?o.name===e||o.externalId===e:e.includes(o.name)||e.includes(o.externalId));t.selectBooth(i)}selectExhibitor(e){if(typeof e!="string"&&!Array.isArray(e)){a("selectExhibitor","Parameter must be a string or an array of strings.","EFP000100");return}if(!e?.length){t.uiState.menu=!1,t.searchStore.resetSearchBox(),t.uiState.details=null;return}const i=t.exhibitorStore.exhibitors.filter(s=>typeof e=="string"?s.name===e||s.externalId===e:e.includes(s.name)||e.includes(s.externalId));if(!i?.length)return;if(typeof e=="string"){t.selectExhibitor(i[0]),t.moveToList([i[0]]);return}const o=i.flatMap(s=>s.booths.map(r=>r.layer)),{description:n}=o.reduce((s,r)=>(s.freq[r.description]=(s.freq[r.description]||0)+1,s.freq[r.description]>s.maxCount&&(s.maxCount=s.freq[r.description],s.mostFrequent=r),s),{freq:{},mostFrequent:o[0],maxCount:0}).mostFrequent;t.layerStore.updateVisibility(n,!0),t.uiState.menu=!1,t.searchStore.resetSearchBox(),t.uiState.details=null,t.uiState.list={type:"filter",items:i,query:{key:"exhibitors",value:i.map(s=>s.externalId).join(",")}},t.moveToList()}highlightExhibitors(e){Array.isArray(e)||a("highlightExhibitors","Parameter must be an array of strings.","EFP000200"),t.boothStore.highlightedByExternalIds=[],t.exhibitorStore.highlightedByExternalIds=[...e]}highlightBooths(e){Array.isArray(e)||a("highlightBooths","Parameter must be an array of strings.","EFP000300"),t.exhibitorStore.highlightedByExternalIds=[],t.boothStore.highlightedByExternalIds=[...e]}highlightEntities(e){Array.isArray(e)||a("highlightEntities","Parameter must be an array of strings.","EFP000400");const{boothExternalIds:i,exhibitorExternalIds:o}=E(e);t.boothStore.highlightedByExternalIds=[...i],t.exhibitorStore.highlightedByExternalIds=[...o]}selectRoute(e,i){if(Array.isArray(e)){let o=[...e];const n=o.shift(),s=o.pop();if(o.length>p)throw new Error(`The maximum number of waypoints is ${p}.`);if(!n||!s){a("selectRoute","Invalid route format: When providing an array, it must include at least two points: a start and a destination.","EFP000401");return}t.routeStore.selectRoute(new S(f(n),f(s),o.map(f)));return}e||a("selectRoute","At a minimum, the starting point must be passed.","EFP000402"),t.routeStore.selectRoute(new S(f(e),f(i)))}getOptimizedRoutes(e){if(!Array.isArray(e))return a("getOptimizedRoutes","Parameter must be an array.","EFP000500"),[];if(e.length>p)throw new Error(`The maximum number of waypoints is ${p}.`);const i=e.map(f).filter(n=>!!n);if(!i.length)throw new Error("No booths found for the provided waypoints.");const o=new Map;for(const n of i){const s=n.layer?.name??"",r=o.get(s);r?r.push(n):o.set(s,[n])}return Array.from(o.values()).map(n=>({waypoints:Q(n.map(s=>[s.name,{cx:s.rect.cx,cy:s.rect.cy}]))}))}selectCurrentPosition(e,i,o){const n=d(e.x)&&d(e.y),s=d(e.lng)&&d(e.lat);!n&&!s&&a("selectCurrentPosition","A point must be passed. Either (x,y) or (lat,lng) are required.","EFP000600"),t.routeStore.selectCurrentPosition(e,i,o),this.onCurrentPositionChanged?.(e)}setBookmarks(e){(!Array.isArray(e)||!e.length)&&a("setBookmarks","Parameter must be an array.","EFP000700"),e.forEach(i=>{const o=t.exhibitorStore.exhibitors.find(n=>n.name===i.name||n.externalId===i.externalId);o&&(o.bookmarked=i.bookmarked)})}setEntitiesBookmarks(e){if(!Array.isArray(e)||!e.length){a("setEntitiesBookmarks","Parameter must be an array.","EFP000701");return}const i=["exhibitor","event","speaker","booth"],o=e.find(r=>!r.type||!i.includes(r.type));if(o){a("setEntitiesBookmarks",`Invalid entity type: ${o.type}. Must be one of: ${i.join(", ")}.`,"EFP000702");return}const n=v("bookmarked"),s={exhibitor:{existingIds:new Set(n.exhibitors||[]),finder:r=>t.exhibitorStore.findExhibitor(r),replacer:r=>t.exhibitorStore.replaceBookmarked(r)},event:{existingIds:new Set(n.events||[]),finder:r=>t.eventStore.findByNameOrSlug(r),replacer:r=>t.eventStore.replaceBookmarked(r)},speaker:{existingIds:new Set(n.speakers||[]),finder:r=>t.speakerStore.speakers.find(l=>l.name===r||l.externalId===r||l.slug===r),replacer:r=>t.speakerStore.replaceBookmarked(r)},booth:{existingIds:new Set(n.booths||[]),finder:r=>{const l=t.boothStore.findBooth(r);return l?.exhibitors.length===0?l:void 0},replacer:r=>t.boothStore.replaceBookmarked(r)}};e.forEach(r=>{const l=s[r.type],h=r.name||r.externalId||"",c=l.finder(h);c?r.bookmarked?l.existingIds.add(c.id):l.existingIds.delete(c.id):console.warn(`Entity not found: ${r.type} with query "${h}"`)}),Object.values(s).forEach(r=>{r.replacer(Array.from(r.existingIds))})}setEntitiesVisited(e){if(!Array.isArray(e)||!e.length){a("setEntitiesVisited","Parameter must be an array.","EFP000703");return}const i=["exhibitor","event"],o=e.find(r=>!r.type||!i.includes(r.type));if(o){a("setEntitiesVisited",`Invalid entity type: ${o.type}. Must be one of: ${i.join(", ")}.`,"EFP000704");return}const n=v("visited"),s={exhibitor:{existingIds:new Set(n.exhibitors||[]),finder:r=>t.exhibitorStore.findExhibitor(r),replacer:r=>t.exhibitorStore.replaceVisited(r)},event:{existingIds:new Set(n.events||[]),finder:r=>t.eventStore.findByNameOrSlug(r),replacer:r=>t.eventStore.replaceVisited(r)}};e.forEach(r=>{const l=s[r.type],h=r.name||r.externalId||"",c=l.finder(h);c?r.visited?l.existingIds.add(c.id):l.existingIds.delete(c.id):console.warn(`Entity not found: ${r.type} with query "${h}"`)}),Object.values(s).forEach(r=>{r.replacer(Array.from(r.existingIds))})}setMarkers(e){if(!e||!Array.isArray(e.icons)||!Array.isArray(e.markers)){a("setMarkers","Invalid input.","EFP000800");return}t.routeStore.setMarkers(e)}selectMarker(e,i=!0){return typeof e!="string"&&a("selectMarker","The identifier must be passed.","EFP000900"),t.routeStore.selectMarker(e,i)}drawCircles(e){Array.isArray(e)||a("drawCircles","Invalid input.","EFP000A00"),t.uiState.debugCircles=e}checkRoutes(){t.routeStore.checkRoutes()}updateLayerVisibility(e,i){typeof e!="string"&&a("updateLayerVisibility","The layer name (string) must be passed.","EFP000B00"),i||a("updateLayerVisibility","Passing a false value to visible will have no effect.","EFP000B01"),t.layerStore.updateVisibility(e,i)}getCenterCoordinates(){return t.fp.getCenterCoordinates()}exhibitorsList(){return t.exhibitorStore.exhibitors.map(e=>y(e))}boothsList(){return t.boothStore.booths.map(e=>y(e))}categoriesList(){return t.categoryStore.categories.map(e=>y(e))}selectCategory(e){if(e==null||typeof e!="string"){t.searchStore.selectSearch();return}const i=e?.toLowerCase(),o=t.categoryStore.categories.find(({name:n,slug:s})=>n?.toLowerCase()===i||s?.toLowerCase()===i);if(!o){a("selectCategory",`Category ${e} not found.`,"EFP000C01");return}t.selectCategory(o)}applyParameters(e){typeof e!="string"&&a("applyParameters","A query string must be passed.","EFP000D00"),M(e)}getVisibility(){return t.uiState.visibility}setVisibility(e){(typeof e!="object"||!Object.keys(e).length)&&a("setVisibility","The parameter must be passed.","EFP000E00"),t.uiState.setVisibility(e)}findLocation(){t.routeStore.findLocation()}zoomIn(){t.uiState.zoomIn()}zoomOut(){t.uiState.zoomOut()}switchView(){t.maplibreStore.activateMaplibre()}zoomTo(e,i){b("zoomTo called with selectors=%O options=%O",e,i);const o=F.safeParse(e);if(!o.success){a("zoomTo",o.error.message,"EFP001600");return}const n=A.safeParse(i);if(!n.success){a("zoomTo",n.error.message,"EFP001601");return}const s=this.getBounds(e);s&&this.fitBounds(s,i)}getBounds(e){b("getBounds called with selectors=%O",e);const i=F.safeParse(e);if(!i.success){a("getBounds",i.error.message,"EFP001400");return}const o=[];if(e.booths?.forEach(s=>{let r;s.externalId?r=t.boothStore.boothByExternalId.get(s.externalId):s.name&&(r=t.boothStore.boothByName.get(s.name.toLowerCase())),r?.rect&&o.push(r.rect)}),e.exhibitors?.forEach(s=>{let r;s.externalId?r=t.exhibitorStore.exhibitorByExternalId.get(s.externalId):s.name&&(r=t.exhibitorStore.exhibitorByName.get(s.name.toLowerCase())),r?.booths?.forEach(l=>{l.rect&&o.push(l.rect)})}),o.length===0)return;const n=m.fromMultiple(o);return{leftTop:{x:n.x1,y:n.y1},rightBottom:{x:n.x2,y:n.y2}}}fitBounds(e,i){if(b("fitBounds called with bounds=%O options=%O",e,i),!e){t.uiState.fitBounds();return}const o=K.safeParse(e);if(!o.success){a("fitBounds",o.error.message,"EFP001500");return}const n=A.safeParse(i);if(!n.success){a("fitBounds",n.error.message,"EFP001501");return}let s;if(i?.padding){const r=i.padding;s=m.fromX1y1x2y2(e.leftTop.x-r,e.leftTop.y-r,e.rightBottom.x+r,e.rightBottom.y+r)}else s=m.fromX1y1x2y2(e.leftTop.x,e.leftTop.y,e.rightBottom.x,e.rightBottom.y);t.uiState.moveToRect=s}getBoothRect(e){return typeof e!="string"&&a("getBoothRect","A booth name must be passed.","EFP000F00"),x(e)?.rect}convertToGeo(e,i){if(!B?.properties?.config){a("convertToGeo","The coordinates cannot be converted because the GPS configuration is not defined.","EFP001000");return}if(!e||!i){a("convertToGeo","Both coordinates must be passed.","EFP001001");return}return O(e,i,B.properties.config)}unstable_destroy(){let e=window.__efpElement.firstChild;Y(),window.removeEventListener("__efpStyleLoad",this.efpStyleLoadHandler),window.removeEventListener("error",N),t.maplibreStore.dispose(),j(),G(),_(),[...document.getElementsByTagName("script")].filter(o=>o.src.indexOf("/fp.svg")>-1||o.src.indexOf("/wf.data.js")>-1||o.src.indexOf("/data.js")>-1).forEach(o=>o.remove()),this.root.unmount(),e.remove()}search(e){return typeof e!="string"&&a("search","A search string must be passed.","EFP001100"),t.fuzzySearchEngineStore.loadEngine().then(()=>(t.searchStore.selectSearch(e),t.uiState.fuzzySearchItems.map(i=>({item:y(i.item),score:i.score}))))}getFloors(){return t.layerStore.floors.map(e=>({name:e.name,shortName:e.shortName,description:e.description,active:e.active,disabled:e.disabled,index:e.index}))}activateFloor(e){if(!e?.name&&e?.index==null){a("activateFloor","Invalid floorId. It must contain either a name or an index.","EFP001200");return}const i=this.getFloors();if(e.name){const o=i.find(n=>n.name===e.name||n.shortName===e.name);if(!o){a("activateFloor",`Floor with name "${e.name}" not found.`,"EFP001201");return}if(o.active)return;this.updateLayerVisibility(o.name,!0);return}if(e.index!==null){const o=i.find(s=>s.index===e.index),n=o?.name;if(!n){a("activateFloor",`Floor at index ${e.index} does not exist.`,"EFP001203");return}if(o.active)return;this.updateLayerVisibility(n,!0);return}}showPathway(e,i){const o=new URLSearchParams;if(o.set(U,e),i?.length){const{boothExternalIds:n,exhibitorExternalIds:s}=E(i);n.length>0&&o.set("booths",n.join(",")),s.length>0&&o.set("exhibitors",s.join(","))}this.applyParameters(o.toString())}showPathwayOnly(e,i){this.activateFloor({name:i}),t.layerStore.showPathWay(e),t.uiState.setPathwayOnlyMode(!0);const o=t.layerStore.findLayer(e),n=t.layerStore.findLayer(i),s=o?.rect||o?.viewbox?o:n;if(s?.rect||s?.viewbox){const r=s.viewbox??s.rect;t.uiState.moveToRect=m.fromX1y1x2y2(r.x1,r.y1,r.x2,r.y2)}}hidePathways(){this.highlightBooths([]),t.layerStore.hidePathways(),t.uiState.setPathwayOnlyMode(!1)}showSearch(){t.selectSearch("")}changeLanguage(e){const i=e?.toLowerCase?.();if(!Z(i)){a("changeLanguage",`Language "${e}" was not found. Available languages: ${J().map(n=>n.id).join(",")}`,"EFP001300");return}const o=new URLSearchParams;o.set(X,i),this.applyParameters(o.toString())}isGpsTrackingEnabled(){return t.routeStore.gpsEnabled}setGpsTrackingEnabled(e){t.routeStore.setGpsTrackingEnabled(e)}deselectCurrentPosition(){t.routeStore.selectCurrentPosition(null,!1)}deselectRoute(){t.routeStore.selectRoute(null),t.routeStore.setOnlyAccessible(!1)}reset(){this.selectBooth(""),this.selectExhibitor(""),this.selectCategory(),this.deselectCurrentPosition(),this.deselectRoute(),this.highlightEntities([]),t.uiState.kioskData&&t.resetCameraFn?t.resetCameraFn?.():this.fitBounds()}selectAccessibleRoute(e){t.routeStore.setOnlyAccessible(!0),this.selectRoute(e)}}function f(u){return typeof u=="string"?x(u):t.routeStore.getNearestBooth(u)}let k=0;function a(u,e,i){const o=`Error calling "${u}" SDK method.`,n=`${e.endsWith(".")?e:e+"."} More information at`;let s="https://js-sdk.expofp.com/api/packages";if(i&&(s+=`#error-${i}`),console.error(`${o} ${n} ${s}`),t.fp.disableRuntimeAlerts)return;t.uiState.setGlobalErrorMessage({title:o,body:C(L,{children:[n," ",g("a",{href:s,target:"_blank",rel:"noreferrer",children:s})]})}),clearTimeout(k);const r=8e3;k=window.setTimeout(()=>{const l=async()=>{t.uiState.globalErrorMessages.length>0&&(t.uiState.popGlobalErrorMessage(),await new Promise(h=>setTimeout(h,r/2)),l())};l()},r)}
@@ -5,6 +5,9 @@ export declare class RendererService {
5
5
  private _renderer;
6
6
  private _scene;
7
7
  private _fontUrls;
8
+ private requestRepaint;
9
+ private currentPtScale;
10
+ private rendererEventsCleanup;
8
11
  readonly ptScaleRegistry: HandlerRegistry<PtScaleHandler>;
9
12
  readonly rollRegistry: HandlerRegistry<RollHandler>;
10
13
  readonly layerImagesRegistry: HandlerRegistry<LayerImagesHandler>;
@@ -16,7 +19,9 @@ export declare class RendererService {
16
19
  get angle(): number;
17
20
  create(options: RendererOptions): Renderer;
18
21
  start(scene: SceneDef): void;
22
+ attach(renderer: Renderer, scene: SceneDef, requestRepaint?: () => void): void;
19
23
  dispose(): void;
24
+ disposeIfCurrent(renderer: Renderer | null): void;
20
25
  onPtScale(name: string, handler: PtScaleHandler): Disposer;
21
26
  onRoll(name: string, handler: RollHandler): Disposer;
22
27
  onLayerImages(name: string, handler: LayerImagesHandler): Disposer;
@@ -1 +1 @@
1
- import{Renderer as a}from"@expofp/renderer";import{HandlerRegistry as n}from"./HandlerRegistry";import{loadCustomFontsUrls as l}from"./index";import s from"../tools/logger";import{isDefaultScene as o}from"./engine-core/defs";export class RendererService{_renderer=null;_scene=null;_fontUrls=[];ptScaleRegistry=new n;rollRegistry=new n;layerImagesRegistry=new n;get renderer(){return this._renderer?.isInitialized?this._renderer:null}get scene(){return this._scene}get fontUrls(){return this._fontUrls}getCameraState(){if(!this._renderer?.isInitialized){s.warn("Renderer is not initialized. Cannot get camera state.");return}return this._renderer.controls.getCameraState()}get scale(){return this.getCameraState()?.ptScale??1}get angle(){return this.getCameraState()?.roll??0}create(e){return this._renderer=new a(e),this._fontUrls=l(),this.setupEventListeners(),this._renderer}start(e){if(this._scene=e,!this._renderer)throw new Error("RendererService: renderer is not created.");this._renderer.init(e),this._renderer.start()}dispose(){this.ptScaleRegistry.clear(),this.rollRegistry.clear(),this.layerImagesRegistry.clear(),this._renderer?.dispose(),this._renderer=null,this._scene=null,this._fontUrls=[]}onPtScale(e,r){return this.ptScaleRegistry.register(e,r)}onRoll(e,r){return this.rollRegistry.register(e,r)}onLayerImages(e,r){return this.layerImagesRegistry.register(e,r)}update(...e){if(!this._renderer?.isInitialized){s.warn("Renderer is not initialized. Cannot update.");return}this._renderer.update(...e)}setupEventListeners(){const e=this._renderer;e.events.addEventListener("viewport:ptscale",({ptScale:r,sceneId:t})=>{if(!o(t)||!Number.isFinite(r))return;const i=[...this.ptScaleRegistry.invoke(r)];i.length&&e.update(...i)}),e.events.addEventListener("navigation:roll",r=>{if(!Number.isFinite(r))return;const t=[];for(const i of this.rollRegistry.invoke(r))Array.isArray(i)?t.push(...i):t.push(i);t.length&&e.update(...t)})}}
1
+ import{Renderer as h}from"@expofp/renderer";import{HandlerRegistry as a}from"./HandlerRegistry";import{loadCustomFontsUrls as o}from"./index";import d from"../tools/logger";import{isDefaultScene as c}from"./engine-core/defs";export class RendererService{_renderer=null;_scene=null;_fontUrls=[];requestRepaint=null;currentPtScale=null;rendererEventsCleanup=null;ptScaleRegistry=new a;rollRegistry=new a;layerImagesRegistry=new a;get renderer(){return this._renderer?.isInitialized?this._renderer:null}get scene(){return this._scene}get fontUrls(){return this._fontUrls}getCameraState(){if(!this._renderer?.isInitialized){d.warn("Renderer is not initialized. Cannot get camera state.");return}return this._renderer.controls.getCameraState()}get scale(){return this.currentPtScale!==null?this.currentPtScale:this._renderer?.isInitialized?this._renderer.controls.getCameraState()?.ptScale??1:1}get angle(){return this._renderer?.isInitialized?this._renderer.controls.getCameraState()?.roll??0:0}create(e){return this._renderer=new h(e),this._fontUrls=o(),this.setupEventListeners(),this._renderer}start(e){if(this._scene=e,this.requestRepaint=null,!this._renderer)throw new Error("RendererService: renderer is not created.");this._renderer.init(e),this._renderer.start()}attach(e,r,s){this._renderer=e,this._scene=r,this._fontUrls=o(),this.requestRepaint=s??null,this.setupEventListeners()}dispose(){this.rendererEventsCleanup?.(),this.rendererEventsCleanup=null,this.ptScaleRegistry.clear(),this.rollRegistry.clear(),this.layerImagesRegistry.clear(),this._renderer?.dispose(),this._renderer=null,this._scene=null,this._fontUrls=[],this.requestRepaint=null,this.currentPtScale=null}disposeIfCurrent(e){if(!e||this._renderer!==e){e?.dispose();return}this.dispose()}onPtScale(e,r){return this.ptScaleRegistry.register(e,r)}onRoll(e,r){return this.rollRegistry.register(e,r)}onLayerImages(e,r){return this.layerImagesRegistry.register(e,r)}update(...e){if(this._renderer){if(!this._renderer.isInitialized){d.warn("Renderer is not initialized. Cannot update.");return}this._renderer.update(...e),this.requestRepaint?.()}}setupEventListeners(){this.rendererEventsCleanup?.(),this.rendererEventsCleanup=null;const e=this._renderer;if(!e)return;const r=l=>{const{ptScale:t,sceneId:n}=p(l);if(!c(n)||!Number.isFinite(t))return;this.currentPtScale=t;const u=[...this.ptScaleRegistry.invoke(t)];u.length&&this.update(...u)},s=l=>{if(!Number.isFinite(l))return;const t=[];for(const n of this.rollRegistry.invoke(l))Array.isArray(n)?t.push(...n):t.push(n);t.length&&this.update(...t)};e.events.addEventListener("viewport:ptscale",r),e.events.addEventListener("navigation:roll",s),this.rendererEventsCleanup=()=>{e.events.removeEventListener("viewport:ptscale",r),e.events.removeEventListener("navigation:roll",s)}}}function p(i){return typeof i=="number"?{ptScale:i}:i}
@@ -1 +1 @@
1
- import{createBrowserHistory as te}from"history";import{autorun as O,reaction as k}from"mobx";import{handleCustomCommand as oe}from"../utils/customCommands";import{BUILD_ROUTE_KEY as se,KIOSK_ENABLE_KEY as A,MAP_SETTINGS_KEY as re,PREVIEW_MODE_QUERY as E,PREVIEW_MODE_STORAGE_KEY as F,SEPARATOR as R,PATHWAY_KEY as N,PLANNER_KEY as P,PLANNER_SOURCE_KEY as W,PLANNER_FROM_KEY as $,LANG_KEY as K,UI_SCALE_PARAM_KEY as Y,UI_SCALE_RESET_PARAM_KEY as V,VIEWER_MODE_QUERY as I,VIEWER_MODE_STORAGE_KEY as H,LANGUAGE_TYPE as x}from"../constants";import v from"../data";import s,{uiState as i}from"../store";import{CurrentPosition as ae,extractRoute as ie,findBooth as ne}from"../store/RouteStore";import{setConsentSettings as G}from"../tools/gtag";import U from"../tools/logger";import{isLocalStorageAvailable as L}from"../utils/localStorage";import{areLayersEnabled as le}from"../utils/areLayersEnabled";import ce from"../core/Rect";import{getMostFrequent as ue}from"../utils/getMostFrequent";import{runInAction as D}from"mobx";import{recoverKioskFromUrlPrams as he}from"../components/Kiosk/recoverKioskFromUrlPrams";import{hasLocale as fe,setLocale as de}from"../utils/i18n";let m=!1,C=!1,z=null,j=null,q=null,Q;const h=te(),_=window.location.pathname,S=[];export function getLocationHistory(){return S}function b(t){return _+t}function me(t){m||h.push(b(t))}export function historyReplace(t){m||h.push(b(t))}function f(t){return t.replace(/=&/g,"&").replace(/=$/,"")}function J(){let t="";const n=i.selectedExhibitor,a=i.selectedBooth,e=i.selectedEventItem,o=i.selectedRoute,r=i.selectedSpeaker,l=i.setKioskModeEnabled;if(i.list.type==="route-planner"&&!n&&!a&&!e){const d=s.routePlannerStore;if(d.source==="bookmarks")t=`${P}&${W}=bookmarks`;else{const w=d.items.map(g=>g.entity.slug).filter(Boolean).join(R);t=`${P}=${w}`}const p=d.startPoint?.slug;p&&(t+=`&${$}=${p}`)}else if(o&&!i.isMultiPointRoute){const d=o.from?`:${o.from.slug}`:"",p=o.to?`:${o.to.slug}`:"",w=s.routeStore.onlyAccessible?":true":":false",g=o.waypoints?.map(u=>`:${u.slug}`).join("");t=`route${p}${d}${w}${g||""}`}else if(n)t=n.slug;else if(a)t=a.slug;else if(e)t=e.slug;else if(r)t=r.slug;else if(l)t="";else switch(i.list.type){case"bookmarks":t="bookmarks";break;case"visited":t="visited";break;case"category":t=i.selectedCategory.slug;break;case"search":t=i.list.text||"";break;case x:t=x;break;case"filter":t=`${i.list.query.key}=${i.list.query.value}`;break;case"sessions":t="sessions";break;case"exhibitors":t="exhibitors";break;case"speakers":t="speakers";break;case"tours":t="tours";break;case"multi-point-tour":t=`tour=${i.list.tourId}`;break;default:throw new Error("Unkown list.type")}if(C)return;const c=t?"?"+encodeURIComponent(t):"";h.location.search!==c&&(n!==z||a!==j||e!==q?me(c):historyReplace(c),z=n,j=a,q=e)}function X(){const t=i.selectedExhibitor,n=i.selectedEventItem,a=i.selectedSpeaker;let e="";t?e=t.name:n?e=n.name:a?e=a.name:i.list.type==="search"&&i.list.text?e="`"+(i.list.text||"")+"`":i.list.type==="multi-point-tour"&&i.tourTitle&&(e=i.tourTitle),e.length&&(e+=" \u2013 "),e+=v.title,v.subtitle&&(e+=" \u2013 "+v.subtitle),e+=" \u2013 Expo Floor Plan by ExpoFP",document.title=e}function B(){const t=h.location.search.length>1?decodeURIComponent(h.location.search.substring(1)):"";return oe(t)}function y(){const t=h.location.search.length>1?decodeURIComponent(h.location.search.substring(1)):"";C=!0;const n=s.boothStore.booths.find(e=>e.slug?.toLowerCase()===t?.toLowerCase()||e.externalId?.toLowerCase()===t?.toLowerCase()||e.externalId?.toLowerCase()?.replace(/\s+/g,"")===t?.toLowerCase()),a=new URLSearchParams(decodeURIComponent(window.location.search));if(he(a),pe(a),!B())if(a.has(A)){const e=a.get(A);e==="1"?i.kiosk=!0:e==="0"&&(i.kiosk=!1,i.resetUIScale())}else if(t==="tours")s.selectTours();else if(t.startsWith("tour=")){const e=t.split("=")[1],o=s.toursStore.getTourById(e);o?s.toursStore.launchTour(o,o.name,o.description):(console.warn(`Route with id "${e}" not found`),s.selectTours())}else if(a.has(P)){const e=a.get(W),o=a.get($),r=o?ne(o):null;if(e==="bookmarks")s.routePlannerStore.launchFromBookmarks(r??void 0);else{const l=(a.get(P)||"").split(R).filter(Boolean);s.routePlannerStore.launchFromSlugs(l,r??void 0)}}else if(t.startsWith("route")){const e=t.split(R);s.routeStore.setOnlyAccessible(e[3]==="true");const o=ie(e[2],e[1],e.slice(4));s.routeStore.selectRoute(o);const l=e.slice(4).length>0;s.uiState.setIsMultiPointRoute(l);const d=new URLSearchParams(window.location.search).get("title");d&&s.uiState.setRouteTitle(d)}else if(t==="bookmarks")s.selectBookmarks();else if(t==="visited")s.selectVisited();else if(t===x)s.selectLanguage();else if(a.has(K)){const e=a.get(K)?.toLowerCase();fe(e)&&de(e)}else if(t==="sessions")s.selectSessions();else if(t==="exhibitors")s.selectExhibitors();else if(t==="speakers")s.selectSpeakers();else if(t==="-pdf")s.uiState.printingPdf=!0;else if(t.startsWith("hide"))s.uiState.setVisibility(new URLSearchParams(t).get("hide").split(",").filter(Boolean).reduce((e,o)=>({...e,[o]:!1}),{}));else if(n)setTimeout(()=>s.selectBooth(n),250);else if(t===se)s.uiState.startBuildRoute();else if(a.get(N)){const e=a.get(N),o=a.get("booths")?.split(",")||[],r=a.get("exhibitors")?.split(",")||[],l=a.get("tour");if(l){const u=s.toursStore.getTourById(l);u&&D(()=>{s.uiState.setTourTitle(u.name),s.uiState.setTourDescription(u.description),s.uiState.setIsMultiPointTour(!0),s.uiState.setMultiPointTourList(u.id)})}const c=s.boothStore.booths,d=s.exhibitorStore.exhibitors,p=c.filter(u=>o.includes(u.externalId)),w=d.filter(u=>r.includes(u.externalId)).flatMap(u=>u.booths),g=[...p,...w];if(le()){const u=g.map(ee=>ee.layer.name),M=ue(u);M&&s.fp.activateFloor({name:M})}(o.length>0||r.length>0)&&s.fp.highlightEntities([...o,...r]),s.layerStore.showPathWay(e),g.length>0&&D(()=>{s.uiState.moveToRect=ce.fromMultiple(g.map(u=>u.rect).filter(Boolean)),s.uiState.rollReset=!0})}else{const e=s.eventStore.eventItems.find(o=>o.slug?.toLowerCase()===t?.toLowerCase()||o.externalId?.toLowerCase()===t?.toLowerCase());if(e)s.selectEventItem(e,!0);else{const o=s.exhibitorStore.exhibitors.find(r=>r.slug?.toLowerCase()===t?.toLowerCase()||r.externalId?.toLowerCase()===t?.toLowerCase());if(t.startsWith("exhibitors")){const r=t.split("=")[1].split(",");setTimeout(()=>s.fp.selectExhibitor(r),250)}else if(o)setTimeout(()=>s.clickExhibitor(o),250);else if(t.includes("=")&&(t.startsWith("categories=")||t.startsWith("poiType=")))U.log("Skipping filter parameter in dispatchFromUrl:",t);else{const l=s.categoryStore.categories.find(c=>c.slug===t);if(l)s.selectCategory(l);else{const c=s.speakerStore.findBySlug(t);c?s.selectSpeaker(c,!0):t.includes("heatmap=true")||s.searchStore.selectSearch(t)}}}}C=!1,J(),X()}function T(){const t=h.location.search;if(t.includes("heatmap")){const e=new URL(window.location.href);if(e.searchParams.get("heatmap")==="true")if(e.searchParams.get("type")==="yah"){let r=f(e.search);m=!0,historyReplace(r),s.uiState.heatmapYah=!0,s.uiState.monochrome=!0,s.uiState.hideLogoInBooth=!0,s.uiState.hideHeaderLogo=!0,s.uiState.disableBookmarked=!0}else{e.searchParams.delete("heatmap");let r=f(e.search);m=!0,historyReplace(r),s.uiState.heatmap=!0}}if(t.startsWith("?preview="))historyReplace("?");else if(t.startsWith("?b="))historyReplace("?bookmarks");else if(t.startsWith("?ba=")){const e=new URL(window.location.href),o=parseInt(e.searchParams.get("ba")),r=s.exhibitorStore.exhibitorById.get(o);historyReplace(r?"?"+r.slug:"?bookmarks")}else t.startsWith("?mapbox=false")&&(s.mapboxStore.isMapbox=!1,historyReplace("?"));if(t.includes("blue-dot")){const e=new URL(window.location.href),o=e.searchParams.get("blue-dot").split(",");if(e.searchParams.delete("blue-dot"),o.length>1){const l=s.layerStore.findLayer(o[2])?.name,c=new ae(Number(o[0])||void 0,Number(o[1])||void 0,l,void 0,Number(o[3])||void 0,Number(o[4])||void 0);s.layerStore.layersLoaded?s.routeStore.selectCurrentPosition(c,!0,1):k(()=>s.layerStore.layersLoaded,()=>{s.routeStore.selectCurrentPosition(c,!0,1)})}let r=f(e.search);historyReplace(r)}if(t.includes("copy_exh")){const e=new URL(window.location.href),o=e.searchParams.get("copy_exh");e.searchParams.delete("copy_exh"),historyReplace("?")}if(t.includes("noOverlay")){const e=new URL(window.location.href),o=e.searchParams.get("noOverlay");e.searchParams.delete("noOverlay");let r=f(e.search);o==="true"?s.uiState.hideOverlay=!0:o==="false"&&(s.uiState.hideOverlay=!1),historyReplace(r)}if(t.includes("allowConsent")){const e=new URL(window.location.href),o=e.searchParams.get("allowConsent");e.searchParams.delete("allowConsent");const r=f(e.search);o==="true"?G(!0):o==="false"&&G(!1),historyReplace(r)}if(t.includes("hideHeaderLogo")){const e=new URL(window.location.href),o=e.searchParams.get("hideHeaderLogo");e.searchParams.delete("hideHeaderLogo");const r=f(e.search);o==="true"&&(i.hideHeaderLogo=!0),historyReplace(r)}if(t.includes("hideLogoInBooth")){const e=new URL(window.location.href),o=e.searchParams.get("hideLogoInBooth");e.searchParams.delete("hideLogoInBooth");const r=f(e.search);o==="true"&&(i.hideLogoInBooth=!0),historyReplace(r)}if(t.includes("disableFeatured")){const e=new URL(window.location.href),o=e.searchParams.get("disableFeatured");e.searchParams.delete("disableFeatured");const r=f(e.search);o==="true"&&s.exhibitorStore.exhibitors.forEach(l=>l.featured=!1),historyReplace(r)}if(t.includes("disableBookmarked")){const e=new URL(window.location.href),o=e.searchParams.get("disableBookmarked");e.searchParams.delete("disableBookmarked");const r=f(e.search);o==="true"&&(i.disableBookmarked=!0),historyReplace(r)}if(t.includes("disableGps")){const e=new URL(window.location.href),o=e.searchParams.get("disableGps");e.searchParams.delete("disableGps");const r=f(e.search);o==="true"&&s.routeStore.setGpsTrackingEnabled(!1),historyReplace(r)}if(t.includes("monochrome")){const e=new URL(window.location.href),o=e.searchParams.get("monochrome");e.searchParams.delete("monochrome");const r=f(e.search);o==="true"&&(i.monochrome=!0),historyReplace(r)}if((t.startsWith("?fbclid")||t.startsWith("?_ga"))&&historyReplace("?"),t.includes(I)){const e=new URL(window.location.href),o=e.searchParams.get(I);o==="1"||o==="true"?L&&localStorage.setItem(H,"1"):(o==="0"||o==="false")&&L&&localStorage.removeItem(H),e.searchParams.delete(I),historyReplace(f(e.search))}if(t.includes(E)){const e=new URL(window.location.href),o=e.searchParams.get(E);o==="true"?L&&localStorage.setItem(F,"1"):o==="false"&&L&&localStorage.removeItem(F),e.searchParams.delete(E),historyReplace(f(e.search))}if(i.previewExhibitor&&historyReplace("?"+i.previewExhibitor.slug),h.location.search.includes("&")||h.location.search.includes("%26")){let e=h.location.search;e=e.startsWith("?")?e.slice(1):e;const o=e.includes("&")?"&":"%26",l=e.split(o).map(c=>{const d=s.exhibitorStore.exhibitors.find(p=>p.slug===c||p.externalId===c);return d?d.name:c}).join("&");historyReplace("?"+l)}const n=new URLSearchParams(window.location.search);if(n.has(V)){s.uiState.resetUIScale();const e=new URL(window.location.href);e.searchParams.delete(V);let o=f(e.search);m=!0,historyReplace(o),m=!1}const a=n.get(Y);if(a){const e=a.replace(",","."),o=parseFloat(e);!isNaN(o)&&o>=.8&&o<=1.4?s.uiState.setUIScale(o,!0):U.warn(`Invalid ui-scale parameter: ${a}. Must be a number between 0.8 and 1.4.`);const r=new URL(window.location.href);r.searchParams.delete(Y);let l=f(r.search);m=!0,historyReplace(l),m=!1}}export function initRouting(t=!1){m=t,!m&&b(h.location.search)===_&&S.push(b(h.location.search)),Q=h.listen((n,a)=>{m||(S.push(b(n.search)),U.log("history",a,n),a==="POP"&&y())}),T(),B(),k(()=>s.layerStore.layersLoaded,()=>{s.urlFilterManager&&!s.urlFilterManager.isInitialized&&s.urlFilterManager.initialize(),y(),O(X),O(J),i.viewerMode&&(i.menu=!0)})}export function applyParameters(t=""){historyReplace("?"+decodeURIComponent(t.toString())),s.layerStore.layersLoaded?(T(),y()):(B(),k(()=>s.layerStore.layersLoaded,()=>{T(),y()}))}export function destroyHistory(){Q()}export function goBack(){if(console.log("goBack"),S.length>1){S.pop();const n=S[S.length-1].replace(_,"");return m=!0,h.replace(n),m=!1,y(),!0}else return h.go(-1),!1}function pe(t){try{let n={};const a=i.defaultMapSettings;if(new Set(t.keys()).size)n=Z(Object.fromEntries(t.entries()),a);else{const e=sessionStorage.getItem(re);e&&(n=Z(JSON.parse(e),a))}if(i.setMapSettings(n),n.z){const e=s.layerStore.layers.find(o=>o.name===n.z);e&&s.layerStore.updateVisibility(e,!0)}}catch(n){console.error("Failed to process or save map settings.",n)}}function Z(t,n){const a={};for(const e in t){if(!Object.prototype.hasOwnProperty.call(n,e)||!Object.prototype.hasOwnProperty.call(t,e))continue;const o=t[e];typeof n[e]=="number"&&typeof o=="string"?a[e]=parseFloat(o):a[e]=o}return a}
1
+ import{createBrowserHistory as te}from"history";import{autorun as O,reaction as k}from"mobx";import{handleCustomCommand as oe}from"../utils/customCommands";import{BUILD_ROUTE_KEY as se,KIOSK_ENABLE_KEY as A,MAP_SETTINGS_KEY as re,PREVIEW_MODE_QUERY as E,PREVIEW_MODE_STORAGE_KEY as F,SEPARATOR as R,PATHWAY_KEY as N,PLANNER_KEY as P,PLANNER_SOURCE_KEY as $,PLANNER_FROM_KEY as W,LANG_KEY as K,UI_SCALE_PARAM_KEY as Y,UI_SCALE_RESET_PARAM_KEY as V,VIEWER_MODE_QUERY as I,VIEWER_MODE_STORAGE_KEY as H,LANGUAGE_TYPE as x}from"../constants";import v from"../data";import s,{uiState as i}from"../store";import{CurrentPosition as ae,extractRoute as ie,findBooth as ne}from"../store/RouteStore";import{setConsentSettings as G}from"../tools/gtag";import U from"../tools/logger";import{isLocalStorageAvailable as L}from"../utils/localStorage";import{areLayersEnabled as le}from"../utils/areLayersEnabled";import ce from"../core/Rect";import{getMostFrequent as ue}from"../utils/getMostFrequent";import{runInAction as D}from"mobx";import{recoverKioskFromUrlPrams as he}from"../components/Kiosk/recoverKioskFromUrlPrams";import{hasLocale as fe,setLocale as de}from"../utils/i18n";let m=!1,C=!1,z=null,j=null,q=null,Q;const h=te(),_=window.location.pathname,S=[];export function getLocationHistory(){return S}function b(t){return _+t}function me(t){m||h.push(b(t))}export function historyReplace(t){m||h.push(b(t))}function f(t){return t.replace(/=&/g,"&").replace(/=$/,"")}function J(){let t="";const n=i.selectedExhibitor,a=i.selectedBooth,e=i.selectedEventItem,o=i.selectedRoute,r=i.selectedSpeaker,l=i.setKioskModeEnabled;if(i.list.type==="route-planner"&&!n&&!a&&!e){const d=s.routePlannerStore;if(d.source==="bookmarks")t=`${P}&${$}=bookmarks`;else{const w=d.items.map(g=>g.entity.slug).filter(Boolean).join(R);t=`${P}=${w}`}const p=d.startPoint?.slug;p&&(t+=`&${W}=${p}`)}else if(o&&!i.isMultiPointRoute){const d=o.from?`:${o.from.slug}`:"",p=o.to?`:${o.to.slug}`:"",w=s.routeStore.onlyAccessible?":true":":false",g=o.waypoints?.map(u=>`:${u.slug}`).join("");t=`route${p}${d}${w}${g||""}`}else if(n)t=n.slug;else if(a)t=a.slug;else if(e)t=e.slug;else if(r)t=r.slug;else if(l)t="";else switch(i.list.type){case"bookmarks":t="bookmarks";break;case"visited":t="visited";break;case"category":t=i.selectedCategory.slug;break;case"search":t=i.list.text||"";break;case x:t=x;break;case"filter":t=`${i.list.query.key}=${i.list.query.value}`;break;case"sessions":t="sessions";break;case"exhibitors":t="exhibitors";break;case"speakers":t="speakers";break;case"tours":t="tours";break;case"multi-point-tour":t=`tour=${i.list.tourId}`;break;default:throw new Error("Unkown list.type")}if(C)return;const c=t?"?"+encodeURIComponent(t):"";h.location.search!==c&&(n!==z||a!==j||e!==q?me(c):historyReplace(c),z=n,j=a,q=e)}function X(){const t=i.selectedExhibitor,n=i.selectedEventItem,a=i.selectedSpeaker;let e="";t?e=t.name:n?e=n.name:a?e=a.name:i.list.type==="search"&&i.list.text?e="`"+(i.list.text||"")+"`":i.list.type==="multi-point-tour"&&i.tourTitle&&(e=i.tourTitle),e.length&&(e+=" \u2013 "),e+=v.title,v.subtitle&&(e+=" \u2013 "+v.subtitle),e+=" \u2013 Expo Floor Plan by ExpoFP",document.title=e}function B(){const t=h.location.search.length>1?decodeURIComponent(h.location.search.substring(1)):"";return oe(t)}function y(){const t=h.location.search.length>1?decodeURIComponent(h.location.search.substring(1)):"";C=!0;const n=s.boothStore.booths.find(e=>e.slug?.toLowerCase()===t?.toLowerCase()||e.externalId?.toLowerCase()===t?.toLowerCase()||e.externalId?.toLowerCase()?.replace(/\s+/g,"")===t?.toLowerCase()),a=new URLSearchParams(decodeURIComponent(window.location.search));if(he(a),pe(a),!B())if(a.has(A)){const e=a.get(A);e==="1"?i.kiosk=!0:e==="0"&&(i.kiosk=!1,i.resetUIScale())}else if(t==="tours")s.selectTours();else if(t.startsWith("tour=")){const e=t.split("=")[1],o=s.toursStore.getTourById(e);o?s.toursStore.launchTour(o,o.name,o.description):(console.warn(`Route with id "${e}" not found`),s.selectTours())}else if(a.has(P)){const e=a.get($),o=a.get(W),r=o?ne(o):null;if(e==="bookmarks")s.routePlannerStore.launchFromBookmarks(r??void 0);else{const l=(a.get(P)||"").split(R).filter(Boolean);s.routePlannerStore.launchFromSlugs(l,r??void 0)}}else if(t.startsWith("route")){const e=t.split(R);s.routeStore.setOnlyAccessible(e[3]==="true");const o=ie(e[2],e[1],e.slice(4));s.routeStore.selectRoute(o);const l=e.slice(4).length>0;s.uiState.setIsMultiPointRoute(l);const d=new URLSearchParams(window.location.search).get("title");d&&s.uiState.setRouteTitle(d)}else if(t==="bookmarks")s.selectBookmarks();else if(t==="visited")s.selectVisited();else if(t===x)s.selectLanguage();else if(a.has(K)){const e=a.get(K)?.toLowerCase();fe(e)&&de(e)}else if(t==="sessions")s.selectSessions();else if(t==="exhibitors")s.selectExhibitors();else if(t==="speakers")s.selectSpeakers();else if(t==="-pdf")s.uiState.printingPdf=!0;else if(t.startsWith("hide"))s.uiState.setVisibility(new URLSearchParams(t).get("hide").split(",").filter(Boolean).reduce((e,o)=>({...e,[o]:!1}),{}));else if(n)setTimeout(()=>s.selectBooth(n),250);else if(t===se)s.uiState.startBuildRoute();else if(a.get(N)){const e=a.get(N),o=a.get("booths")?.split(",")||[],r=a.get("exhibitors")?.split(",")||[],l=a.get("tour");if(l){const u=s.toursStore.getTourById(l);u&&D(()=>{s.uiState.setTourTitle(u.name),s.uiState.setTourDescription(u.description),s.uiState.setIsMultiPointTour(!0),s.uiState.setMultiPointTourList(u.id)})}const c=s.boothStore.booths,d=s.exhibitorStore.exhibitors,p=c.filter(u=>o.includes(u.externalId)),w=d.filter(u=>r.includes(u.externalId)).flatMap(u=>u.booths),g=[...p,...w];if(le()){const u=g.map(ee=>ee.layer.name),M=ue(u);M&&s.fp.activateFloor({name:M})}(o.length>0||r.length>0)&&s.fp.highlightEntities([...o,...r]),s.layerStore.showPathWay(e),g.length>0&&D(()=>{s.uiState.moveToRect=ce.fromMultiple(g.map(u=>u.rect).filter(Boolean)),s.uiState.rollReset=!0})}else{const e=s.eventStore.eventItems.find(o=>o.slug?.toLowerCase()===t?.toLowerCase()||o.externalId?.toLowerCase()===t?.toLowerCase());if(e)s.selectEventItem(e,!0);else{const o=s.exhibitorStore.exhibitors.find(r=>r.slug?.toLowerCase()===t?.toLowerCase()||r.externalId?.toLowerCase()===t?.toLowerCase());if(t.startsWith("exhibitors")){const r=t.split("=")[1].split(",");setTimeout(()=>s.fp.selectExhibitor(r),250)}else if(o)setTimeout(()=>s.clickExhibitor(o),250);else if(t.includes("=")&&(t.startsWith("categories=")||t.startsWith("poiType=")))U.log("Skipping filter parameter in dispatchFromUrl:",t);else{const l=s.categoryStore.categories.find(c=>c.slug===t);if(l)s.selectCategory(l);else{const c=s.speakerStore.findBySlug(t);c?s.selectSpeaker(c,!0):t.includes("heatmap=true")||s.searchStore.selectSearch(t)}}}}C=!1,J(),X()}function T(){const t=h.location.search;if(t.includes("heatmap")){const e=new URL(window.location.href);if(e.searchParams.get("heatmap")==="true")if(e.searchParams.get("type")==="yah"){let r=f(e.search);m=!0,historyReplace(r),s.uiState.heatmapYah=!0,s.uiState.monochrome=!0,s.uiState.hideLogoInBooth=!0,s.uiState.hideHeaderLogo=!0,s.uiState.disableBookmarked=!0}else{e.searchParams.delete("heatmap");let r=f(e.search);m=!0,historyReplace(r),s.uiState.heatmap=!0}}if(t.startsWith("?preview="))historyReplace("?");else if(t.startsWith("?b="))historyReplace("?bookmarks");else if(t.startsWith("?ba=")){const e=new URL(window.location.href),o=parseInt(e.searchParams.get("ba")),r=s.exhibitorStore.exhibitorById.get(o);historyReplace(r?"?"+r.slug:"?bookmarks")}if(t.includes("blue-dot")){const e=new URL(window.location.href),o=e.searchParams.get("blue-dot").split(",");if(e.searchParams.delete("blue-dot"),o.length>1){const l=s.layerStore.findLayer(o[2])?.name,c=new ae(Number(o[0])||void 0,Number(o[1])||void 0,l,void 0,Number(o[3])||void 0,Number(o[4])||void 0);s.layerStore.layersLoaded?s.routeStore.selectCurrentPosition(c,!0,1):k(()=>s.layerStore.layersLoaded,()=>{s.routeStore.selectCurrentPosition(c,!0,1)})}let r=f(e.search);historyReplace(r)}if(t.includes("copy_exh")){const e=new URL(window.location.href),o=e.searchParams.get("copy_exh");e.searchParams.delete("copy_exh"),historyReplace("?")}if(t.includes("noOverlay")){const e=new URL(window.location.href),o=e.searchParams.get("noOverlay");e.searchParams.delete("noOverlay");let r=f(e.search);o==="true"?s.uiState.hideOverlay=!0:o==="false"&&(s.uiState.hideOverlay=!1),historyReplace(r)}if(t.includes("allowConsent")){const e=new URL(window.location.href),o=e.searchParams.get("allowConsent");e.searchParams.delete("allowConsent");const r=f(e.search);o==="true"?G(!0):o==="false"&&G(!1),historyReplace(r)}if(t.includes("hideHeaderLogo")){const e=new URL(window.location.href),o=e.searchParams.get("hideHeaderLogo");e.searchParams.delete("hideHeaderLogo");const r=f(e.search);o==="true"&&(i.hideHeaderLogo=!0),historyReplace(r)}if(t.includes("hideLogoInBooth")){const e=new URL(window.location.href),o=e.searchParams.get("hideLogoInBooth");e.searchParams.delete("hideLogoInBooth");const r=f(e.search);o==="true"&&(i.hideLogoInBooth=!0),historyReplace(r)}if(t.includes("disableFeatured")){const e=new URL(window.location.href),o=e.searchParams.get("disableFeatured");e.searchParams.delete("disableFeatured");const r=f(e.search);o==="true"&&s.exhibitorStore.exhibitors.forEach(l=>l.featured=!1),historyReplace(r)}if(t.includes("disableBookmarked")){const e=new URL(window.location.href),o=e.searchParams.get("disableBookmarked");e.searchParams.delete("disableBookmarked");const r=f(e.search);o==="true"&&(i.disableBookmarked=!0),historyReplace(r)}if(t.includes("disableGps")){const e=new URL(window.location.href),o=e.searchParams.get("disableGps");e.searchParams.delete("disableGps");const r=f(e.search);o==="true"&&s.routeStore.setGpsTrackingEnabled(!1),historyReplace(r)}if(t.includes("monochrome")){const e=new URL(window.location.href),o=e.searchParams.get("monochrome");e.searchParams.delete("monochrome");const r=f(e.search);o==="true"&&(i.monochrome=!0),historyReplace(r)}if((t.startsWith("?fbclid")||t.startsWith("?_ga"))&&historyReplace("?"),t.includes(I)){const e=new URL(window.location.href),o=e.searchParams.get(I);o==="1"||o==="true"?L&&localStorage.setItem(H,"1"):(o==="0"||o==="false")&&L&&localStorage.removeItem(H),e.searchParams.delete(I),historyReplace(f(e.search))}if(t.includes(E)){const e=new URL(window.location.href),o=e.searchParams.get(E);o==="true"?L&&localStorage.setItem(F,"1"):o==="false"&&L&&localStorage.removeItem(F),e.searchParams.delete(E),historyReplace(f(e.search))}if(i.previewExhibitor&&historyReplace("?"+i.previewExhibitor.slug),h.location.search.includes("&")||h.location.search.includes("%26")){let e=h.location.search;e=e.startsWith("?")?e.slice(1):e;const o=e.includes("&")?"&":"%26",l=e.split(o).map(c=>{const d=s.exhibitorStore.exhibitors.find(p=>p.slug===c||p.externalId===c);return d?d.name:c}).join("&");historyReplace("?"+l)}const n=new URLSearchParams(window.location.search);if(n.has(V)){s.uiState.resetUIScale();const e=new URL(window.location.href);e.searchParams.delete(V);let o=f(e.search);m=!0,historyReplace(o),m=!1}const a=n.get(Y);if(a){const e=a.replace(",","."),o=parseFloat(e);!isNaN(o)&&o>=.8&&o<=1.4?s.uiState.setUIScale(o,!0):U.warn(`Invalid ui-scale parameter: ${a}. Must be a number between 0.8 and 1.4.`);const r=new URL(window.location.href);r.searchParams.delete(Y);let l=f(r.search);m=!0,historyReplace(l),m=!1}}export function initRouting(t=!1){m=t,!m&&b(h.location.search)===_&&S.push(b(h.location.search)),Q=h.listen((n,a)=>{m||(S.push(b(n.search)),U.log("history",a,n),a==="POP"&&y())}),T(),B(),k(()=>s.layerStore.layersLoaded,()=>{s.urlFilterManager&&!s.urlFilterManager.isInitialized&&s.urlFilterManager.initialize(),y(),O(X),O(J),i.viewerMode&&(i.menu=!0)})}export function applyParameters(t=""){historyReplace("?"+decodeURIComponent(t.toString())),s.layerStore.layersLoaded?(T(),y()):(B(),k(()=>s.layerStore.layersLoaded,()=>{T(),y()}))}export function destroyHistory(){Q()}export function goBack(){if(console.log("goBack"),S.length>1){S.pop();const n=S[S.length-1].replace(_,"");return m=!0,h.replace(n),m=!1,y(),!0}else return h.go(-1),!1}function pe(t){try{let n={};const a=i.defaultMapSettings;if(new Set(t.keys()).size)n=Z(Object.fromEntries(t.entries()),a);else{const e=sessionStorage.getItem(re);e&&(n=Z(JSON.parse(e),a))}if(i.setMapSettings(n),n.z){const e=s.layerStore.layers.find(o=>o.name===n.z);e&&s.layerStore.updateVisibility(e,!0)}}catch(n){console.error("Failed to process or save map settings.",n)}}function Z(t,n){const a={};for(const e in t){if(!Object.prototype.hasOwnProperty.call(n,e)||!Object.prototype.hasOwnProperty.call(t,e))continue;const o=t[e];typeof n[e]=="number"&&typeof o=="string"?a[e]=parseFloat(o):a[e]=o}return a}
@@ -1 +1 @@
1
- import{__esDecorate as h,__runInitializers as C}from"tslib";import{Exhibitor as m}from"./ExhibitorStore";import{BoothBase as d}from"./BoothStore";import{Category as p}from"./CategoryStore";import{getColorFromGradient as x}from"../tools/Color";import{EventItem as y}from"./EventStore";import{computed as k}from"mobx";let g=(()=>{let a=[],l;return class{static{const t=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;l=[k({keepAlive:!0})],h(this,null,l,{kind:"getter",name:"minAndMaxClicks",static:!1,private:!1,access:{has:e=>"minAndMaxClicks"in e,get:e=>e.minAndMaxClicks},metadata:t},null,a),t&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:t})}rootStore=C(this,a);heatmapData={};constructor(t){this.rootStore=t}forceTrack=null;get minAndMaxClicks(){const{booths:t=[],exhibitors:e=[],yah:i=[]}=this.heatmapData,r=[...t,...e,...i];if(r.length===0)return{min:0,max:0};const c=s=>s.reduce((n,o)=>(o.viewCount>n.max&&(n.max=o.viewCount),o.viewCount<n.min&&(n.min=o.viewCount),n),{min:s[0].viewCount,max:s[0].viewCount}),{min:u,max:f}=c(r);return{min:u,max:f}}getClicksByType(t){return t instanceof p?-1:t instanceof m?this.getClicksByItem(t):t instanceof HeatmapYah?this.getClicksByItem(t):t instanceof y?0:this.getClicksByItem(t)}getClicksByItem(t){return t instanceof m?this.heatmapData?.exhibitors?.find(e=>e.id===t.id)?.viewCount||0:t instanceof d?this.heatmapData?.booths?.find(e=>e.id===t.id)?.viewCount||0:t instanceof HeatmapYah&&this.heatmapData?.yah?.find(e=>e.id===t.id)?.viewCount||0}getTotalClicksByBooth(t){let e=this.getClicksByItem(t);for(const i of t.exhibitors){const r=this.getClicksByItem(i);e+=r}return e}getColorByClicks(t){const{min:e,max:i}=this.minAndMaxClicks;return x(t,e,i)}}})();export default g;export class HeatmapYah{id;name;viewCount;x;y;z;entity={type:"heatmap-yah"}}
1
+ import{__esDecorate as h,__runInitializers as C}from"tslib";import{Exhibitor as m}from"./ExhibitorStore";import{BoothBase as p}from"./BoothStore";import{Category as d}from"./CategoryStore";import{getColorFromGradient as x}from"../utils/color-gradient";import y from"../tools/settings";import{EventItem as k}from"./EventStore";import{computed as g}from"mobx";let v=(()=>{let a=[],l;return class{static{const t=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;l=[g({keepAlive:!0})],h(this,null,l,{kind:"getter",name:"minAndMaxClicks",static:!1,private:!1,access:{has:e=>"minAndMaxClicks"in e,get:e=>e.minAndMaxClicks},metadata:t},null,a),t&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:t})}rootStore=C(this,a);heatmapData={};constructor(t){this.rootStore=t}forceTrack=null;get minAndMaxClicks(){const{booths:t=[],exhibitors:e=[],yah:i=[]}=this.heatmapData,r=[...t,...e,...i];if(r.length===0)return{min:0,max:0};const c=s=>s.reduce((n,o)=>(o.viewCount>n.max&&(n.max=o.viewCount),o.viewCount<n.min&&(n.min=o.viewCount),n),{min:s[0].viewCount,max:s[0].viewCount}),{min:u,max:f}=c(r);return{min:u,max:f}}getClicksByType(t){return t instanceof d?-1:t instanceof m?this.getClicksByItem(t):t instanceof HeatmapYah?this.getClicksByItem(t):t instanceof k?0:this.getClicksByItem(t)}getClicksByItem(t){return t instanceof m?this.heatmapData?.exhibitors?.find(e=>e.id===t.id)?.viewCount||0:t instanceof p?this.heatmapData?.booths?.find(e=>e.id===t.id)?.viewCount||0:t instanceof HeatmapYah&&this.heatmapData?.yah?.find(e=>e.id===t.id)?.viewCount||0}getTotalClicksByBooth(t){let e=this.getClicksByItem(t);for(const i of t.exhibitors){const r=this.getClicksByItem(i);e+=r}return e}getColorByClicks(t){const{min:e,max:i}=this.minAndMaxClicks;return x(t,e,i,y.heatmapColors)}}})();export default v;export class HeatmapYah{id;name;viewCount;x;y;z;entity={type:"heatmap-yah"}}
@@ -0,0 +1,22 @@
1
+ import type RootStore from "./RootStore";
2
+ export type MaplibreViewMode = "floorplan" | "map2d" | "map3d";
3
+ export default class MaplibreStore {
4
+ rootStore: RootStore;
5
+ mapViewMode: MaplibreViewMode;
6
+ maplibreSelected: boolean;
7
+ isOnline: boolean;
8
+ private readonly handleOnline;
9
+ private readonly handleOffline;
10
+ constructor(rootStore: RootStore);
11
+ dispose(): void;
12
+ setOnline(isOnline: boolean): void;
13
+ activateMaplibre(): void;
14
+ deactivateMaplibre(): void;
15
+ get hideModeSwitchButton(): boolean;
16
+ get maplibreEnabled(): boolean;
17
+ get useMaplibreMap(): boolean;
18
+ get showMaplibre(): boolean;
19
+ get isMap3d(): boolean;
20
+ private getInitialViewMode;
21
+ }
22
+ //# sourceMappingURL=MaplibreStore.d.ts.map
@@ -0,0 +1 @@
1
+ import{__esDecorate as i,__runInitializers as l}from"tslib";import{action as d,computed as r,observable as o}from"mobx";import{fpGeo as y}from"../data/fpGeo";import n from"../data";const I=import.meta.env?.VITE_EXPOFP_USE_MAPLIBRE_MAP==="true",z=import.meta.env?.VITE_EXPOFP_DISABLE_3D_TOGGLE!=="false";function A(){return typeof window>"u"||window.navigator.onLine}let B=(()=>{let a=[],p,m=[],c=[],h,f=[],b=[],u,M=[],_=[],w,v,g,O,S,E,V,k;return class{static{const t=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;p=[o],h=[o],u=[o],w=[d],v=[d],g=[d],O=[r({keepAlive:!0})],S=[r({keepAlive:!0})],E=[r({keepAlive:!0})],V=[r({keepAlive:!0})],k=[r({keepAlive:!0})],i(this,null,w,{kind:"method",name:"setOnline",static:!1,private:!1,access:{has:e=>"setOnline"in e,get:e=>e.setOnline},metadata:t},null,a),i(this,null,v,{kind:"method",name:"activateMaplibre",static:!1,private:!1,access:{has:e=>"activateMaplibre"in e,get:e=>e.activateMaplibre},metadata:t},null,a),i(this,null,g,{kind:"method",name:"deactivateMaplibre",static:!1,private:!1,access:{has:e=>"deactivateMaplibre"in e,get:e=>e.deactivateMaplibre},metadata:t},null,a),i(this,null,O,{kind:"getter",name:"hideModeSwitchButton",static:!1,private:!1,access:{has:e=>"hideModeSwitchButton"in e,get:e=>e.hideModeSwitchButton},metadata:t},null,a),i(this,null,S,{kind:"getter",name:"maplibreEnabled",static:!1,private:!1,access:{has:e=>"maplibreEnabled"in e,get:e=>e.maplibreEnabled},metadata:t},null,a),i(this,null,E,{kind:"getter",name:"useMaplibreMap",static:!1,private:!1,access:{has:e=>"useMaplibreMap"in e,get:e=>e.useMaplibreMap},metadata:t},null,a),i(this,null,V,{kind:"getter",name:"showMaplibre",static:!1,private:!1,access:{has:e=>"showMaplibre"in e,get:e=>e.showMaplibre},metadata:t},null,a),i(this,null,k,{kind:"getter",name:"isMap3d",static:!1,private:!1,access:{has:e=>"isMap3d"in e,get:e=>e.isMap3d},metadata:t},null,a),i(null,null,p,{kind:"field",name:"mapViewMode",static:!1,private:!1,access:{has:e=>"mapViewMode"in e,get:e=>e.mapViewMode,set:(e,s)=>{e.mapViewMode=s}},metadata:t},m,c),i(null,null,h,{kind:"field",name:"maplibreSelected",static:!1,private:!1,access:{has:e=>"maplibreSelected"in e,get:e=>e.maplibreSelected,set:(e,s)=>{e.maplibreSelected=s}},metadata:t},f,b),i(null,null,u,{kind:"field",name:"isOnline",static:!1,private:!1,access:{has:e=>"isOnline"in e,get:e=>e.isOnline,set:(e,s)=>{e.isOnline=s}},metadata:t},M,_),t&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:t})}rootStore=l(this,a);mapViewMode=l(this,m,"floorplan");maplibreSelected=(l(this,c),l(this,f,!1));isOnline=(l(this,b),l(this,M,A()));handleOnline=(l(this,_),()=>this.setOnline(!0));handleOffline=()=>this.setOnline(!1);constructor(t){this.rootStore=t,this.mapViewMode=this.getInitialViewMode(),this.maplibreSelected=this.mapViewMode!=="floorplan",typeof window<"u"&&(window.addEventListener("online",this.handleOnline),window.addEventListener("offline",this.handleOffline))}dispose(){typeof window>"u"||(window.removeEventListener("online",this.handleOnline),window.removeEventListener("offline",this.handleOffline))}setOnline(t){this.isOnline=t}activateMaplibre(){this.maplibreEnabled&&(this.mapViewMode=n.allow3dView&&this.mapViewMode!=="map3d"?"map3d":"map2d",this.maplibreSelected=!0)}deactivateMaplibre(){this.mapViewMode="floorplan",this.maplibreSelected=!1}get hideModeSwitchButton(){return!this.maplibreEnabled||!n.allow3dView||z||n.hideModeSwitchButton}get maplibreEnabled(){const t=this.rootStore.fp?.maplibre??window.__efpMaplibre,e=!!t?.offline&&(!!t.style||!!t.styleUrl);return this.useMaplibreMap&&!!y?.properties?.config&&!this.rootStore.uiState.kiosk&&(this.isOnline||e)}get useMaplibreMap(){const t=n.flags?.enableExperimentalMaplibre;return typeof t=="boolean"?t:I}get showMaplibre(){return this.maplibreEnabled&&(this.mapViewMode==="map2d"||this.mapViewMode==="map3d")}get isMap3d(){return this.maplibreEnabled&&this.mapViewMode==="map3d"}getInitialViewMode(){return this.maplibreEnabled?n.allow3dView&&!n.hide3dMapDefault?"map3d":"map2d":"floorplan"}}})();export default B;
@@ -8,7 +8,7 @@ import { Speaker } from "./SpeakerStore";
8
8
  import HeatmapStore from "./HeatmapStore";
9
9
  import IntercomStore from "./IntercomStore";
10
10
  import LayerStore from "./LayerStore";
11
- import MapboxStore from "./MapboxStore";
11
+ import MaplibreStore from "./MaplibreStore";
12
12
  import RouteStore from "./RouteStore";
13
13
  import RoutePlannerStore from "./RoutePlannerStore";
14
14
  import ToursStore from "./ToursStore";
@@ -33,7 +33,7 @@ export default class RootStore {
33
33
  readonly routeStore: RouteStore;
34
34
  readonly routePlannerStore: RoutePlannerStore;
35
35
  readonly toursStore: ToursStore;
36
- readonly mapboxStore: MapboxStore;
36
+ readonly maplibreStore: MaplibreStore;
37
37
  readonly layerStore: LayerStore;
38
38
  readonly intercomStore: IntercomStore;
39
39
  readonly eventStore: EventStore;
@@ -1 +1 @@
1
- import{__esDecorate as s,__runInitializers as n}from"tslib";import{action as o,observable as se,computed as he,runInAction as ae}from"mobx";import ne from"../tools/logger";import{isWebGlSupported as ce}from"../utils";import ue,{BoothBase as oe,RegularBooth as de}from"./BoothStore";import me,{Category as Se}from"./CategoryStore";import fe,{Exhibitor as re}from"./ExhibitorStore";import pe from"./CategoryFilterStore";import ge,{EventItem as ke}from"./EventStore";import{SpeakerItem as ve}from"./SpeakerStore";import{GaEventActions as ye}from"../tools/gtag";import h from"../utils/is-mobile";import c from"../utils/is-webview";import _e from"./HeatmapStore";import{resetLocale as be}from"../utils/i18n";import{LANGUAGE_TYPE as we}from"../constants";import xe from"./IntercomStore";import Be,{LayersMode as le}from"./LayerStore";import Ee from"./MapboxStore";import Le from"./RouteStore";import Ce from"./RoutePlannerStore";import Fe from"./ToursStore";import Ie from"./UIState";import Te from"./PoiTypeStore";import{sanitizeSearch as ze}from"../utils/sanitizeText";import Me from"./FuzzySearchEngineStore";import Oe from"./SessionsFilterStore";import Ae from"./SearchStore";import Re from"./SearchButtonsStore";import Pe from"./BookmarksStore";import{URLFilterManager as Ve}from"../services/URLFilterManager";import{ShortcutRegistry as Ge}from"./ShortcutRegistry";import{SessionsShortcutProvider as Ne}from"./providers/SessionsShortcutProvider";import qe from"./SpeakerStore";import je from"./SpeakerFilterStore";import{SpeakerShortcutProvider as Ue}from"./providers/SpeakerShortcutProvider";import{SearchShortcutProvider as We}from"./providers/SearchShortcutProvider";import{RendererService as De}from"../renderer";let He=(()=>{let a=[],u,d=[],m=[],S,f=[],p=[],g,k,v,y,_,b,w,x,B,E,L,C,F,I,T,z,M,O,A,R,P,V,G,N,q,j,U,W,D,H,K,Y,$,J,Q,X,Z,ee,te,ie;return class{static{const t=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;u=[se],S=[se],g=[o],k=[o],v=[o],y=[o],_=[o],b=[o],w=[o],x=[o],B=[o],E=[o],L=[o],C=[o],F=[o],I=[o],T=[o],z=[o],M=[o],O=[o],A=[o],R=[o],P=[o],V=[o],G=[o],N=[o],q=[o],j=[o],U=[o],W=[o],D=[o],H=[o],K=[o],Y=[o],$=[o],J=[he],Q=[o],X=[o],Z=[o],ee=[o],te=[o],ie=[o],s(this,null,g,{kind:"method",name:"setResetCameraFn",static:!1,private:!1,access:{has:e=>"setResetCameraFn"in e,get:e=>e.setResetCameraFn},metadata:t},null,a),s(this,null,k,{kind:"method",name:"selectExhibitor",static:!1,private:!1,access:{has:e=>"selectExhibitor"in e,get:e=>e.selectExhibitor},metadata:t},null,a),s(this,null,v,{kind:"method",name:"selectBooth",static:!1,private:!1,access:{has:e=>"selectBooth"in e,get:e=>e.selectBooth},metadata:t},null,a),s(this,null,y,{kind:"method",name:"reset",static:!1,private:!1,access:{has:e=>"reset"in e,get:e=>e.reset},metadata:t},null,a),s(this,null,_,{kind:"method",name:"selectNone",static:!1,private:!1,access:{has:e=>"selectNone"in e,get:e=>e.selectNone},metadata:t},null,a),s(this,null,b,{kind:"method",name:"selectBookmarks",static:!1,private:!1,access:{has:e=>"selectBookmarks"in e,get:e=>e.selectBookmarks},metadata:t},null,a),s(this,null,w,{kind:"method",name:"selectVisited",static:!1,private:!1,access:{has:e=>"selectVisited"in e,get:e=>e.selectVisited},metadata:t},null,a),s(this,null,x,{kind:"method",name:"selectLanguage",static:!1,private:!1,access:{has:e=>"selectLanguage"in e,get:e=>e.selectLanguage},metadata:t},null,a),s(this,null,B,{kind:"method",name:"selectCategory",static:!1,private:!1,access:{has:e=>"selectCategory"in e,get:e=>e.selectCategory},metadata:t},null,a),s(this,null,E,{kind:"method",name:"selectEventItem",static:!1,private:!1,access:{has:e=>"selectEventItem"in e,get:e=>e.selectEventItem},metadata:t},null,a),s(this,null,L,{kind:"method",name:"selectSearch",static:!1,private:!1,access:{has:e=>"selectSearch"in e,get:e=>e.selectSearch},metadata:t},null,a),s(this,null,C,{kind:"method",name:"clickBookmarks",static:!1,private:!1,access:{has:e=>"clickBookmarks"in e,get:e=>e.clickBookmarks},metadata:t},null,a),s(this,null,F,{kind:"method",name:"clickVisited",static:!1,private:!1,access:{has:e=>"clickVisited"in e,get:e=>e.clickVisited},metadata:t},null,a),s(this,null,I,{kind:"method",name:"clickLanguage",static:!1,private:!1,access:{has:e=>"clickLanguage"in e,get:e=>e.clickLanguage},metadata:t},null,a),s(this,null,T,{kind:"method",name:"clickCategory",static:!1,private:!1,access:{has:e=>"clickCategory"in e,get:e=>e.clickCategory},metadata:t},null,a),s(this,null,z,{kind:"method",name:"clickSeminars",static:!1,private:!1,access:{has:e=>"clickSeminars"in e,get:e=>e.clickSeminars},metadata:t},null,a),s(this,null,M,{kind:"method",name:"clickBoothInList",static:!1,private:!1,access:{has:e=>"clickBoothInList"in e,get:e=>e.clickBoothInList},metadata:t},null,a),s(this,null,O,{kind:"method",name:"clickBoothInList2",static:!1,private:!1,access:{has:e=>"clickBoothInList2"in e,get:e=>e.clickBoothInList2},metadata:t},null,a),s(this,null,A,{kind:"method",name:"clickBooth",static:!1,private:!1,access:{has:e=>"clickBooth"in e,get:e=>e.clickBooth},metadata:t},null,a),s(this,null,R,{kind:"method",name:"clickExhibitor2",static:!1,private:!1,access:{has:e=>"clickExhibitor2"in e,get:e=>e.clickExhibitor2},metadata:t},null,a),s(this,null,P,{kind:"method",name:"clickExhibitor",static:!1,private:!1,access:{has:e=>"clickExhibitor"in e,get:e=>e.clickExhibitor},metadata:t},null,a),s(this,null,V,{kind:"method",name:"showMap",static:!1,private:!1,access:{has:e=>"showMap"in e,get:e=>e.showMap},metadata:t},null,a),s(this,null,G,{kind:"method",name:"showOverlay",static:!1,private:!1,access:{has:e=>"showOverlay"in e,get:e=>e.showOverlay},metadata:t},null,a),s(this,null,N,{kind:"method",name:"toggleMapOverlay",static:!1,private:!1,access:{has:e=>"toggleMapOverlay"in e,get:e=>e.toggleMapOverlay},metadata:t},null,a),s(this,null,q,{kind:"method",name:"moveToList",static:!1,private:!1,access:{has:e=>"moveToList"in e,get:e=>e.moveToList},metadata:t},null,a),s(this,null,j,{kind:"method",name:"moveToExhibitor",static:!1,private:!1,access:{has:e=>"moveToExhibitor"in e,get:e=>e.moveToExhibitor},metadata:t},null,a),s(this,null,U,{kind:"method",name:"changeActiveListIndex",static:!1,private:!1,access:{has:e=>"changeActiveListIndex"in e,get:e=>e.changeActiveListIndex},metadata:t},null,a),s(this,null,W,{kind:"method",name:"toggleModal",static:!1,private:!1,access:{has:e=>"toggleModal"in e,get:e=>e.toggleModal},metadata:t},null,a),s(this,null,D,{kind:"method",name:"openGallery",static:!1,private:!1,access:{has:e=>"openGallery"in e,get:e=>e.openGallery},metadata:t},null,a),s(this,null,H,{kind:"method",name:"closeGallery",static:!1,private:!1,access:{has:e=>"closeGallery"in e,get:e=>e.closeGallery},metadata:t},null,a),s(this,null,K,{kind:"method",name:"openActiveListItem",static:!1,private:!1,access:{has:e=>"openActiveListItem"in e,get:e=>e.openActiveListItem},metadata:t},null,a),s(this,null,Y,{kind:"method",name:"toggleCategoryFilter",static:!1,private:!1,access:{has:e=>"toggleCategoryFilter"in e,get:e=>e.toggleCategoryFilter},metadata:t},null,a),s(this,null,$,{kind:"method",name:"applyCategoryFilters",static:!1,private:!1,access:{has:e=>"applyCategoryFilters"in e,get:e=>e.applyCategoryFilters},metadata:t},null,a),s(this,null,J,{kind:"getter",name:"filteredExhibitors",static:!1,private:!1,access:{has:e=>"filteredExhibitors"in e,get:e=>e.filteredExhibitors},metadata:t},null,a),s(this,null,Q,{kind:"method",name:"selectSessions",static:!1,private:!1,access:{has:e=>"selectSessions"in e,get:e=>e.selectSessions},metadata:t},null,a),s(this,null,X,{kind:"method",name:"selectExhibitors",static:!1,private:!1,access:{has:e=>"selectExhibitors"in e,get:e=>e.selectExhibitors},metadata:t},null,a),s(this,null,Z,{kind:"method",name:"selectTours",static:!1,private:!1,access:{has:e=>"selectTours"in e,get:e=>e.selectTours},metadata:t},null,a),s(this,null,ee,{kind:"method",name:"selectSpeakers",static:!1,private:!1,access:{has:e=>"selectSpeakers"in e,get:e=>e.selectSpeakers},metadata:t},null,a),s(this,null,te,{kind:"method",name:"selectSpeaker",static:!1,private:!1,access:{has:e=>"selectSpeaker"in e,get:e=>e.selectSpeaker},metadata:t},null,a),s(this,null,ie,{kind:"method",name:"resetFilters",static:!1,private:!1,access:{has:e=>"resetFilters"in e,get:e=>e.resetFilters},metadata:t},null,a),s(null,null,u,{kind:"field",name:"initialized",static:!1,private:!1,access:{has:e=>"initialized"in e,get:e=>e.initialized,set:(e,i)=>{e.initialized=i}},metadata:t},d,m),s(null,null,S,{kind:"field",name:"resetCameraFn",static:!1,private:!1,access:{has:e=>"resetCameraFn"in e,get:e=>e.resetCameraFn,set:(e,i)=>{e.resetCameraFn=i}},metadata:t},f,p),t&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:t})}categoryStore=n(this,a);exhibitorStore;boothStore;uiState;routeStore;routePlannerStore;toursStore;mapboxStore;layerStore;intercomStore;eventStore;poiTypeStore;heatmapStore;fuzzySearchEngineStore;categoryFilterStore;sessionsFilterStore;speakerStore;speakerFilterStore;searchStore;searchButtonsStore;bookmarksStore;urlFilterManager;shortcutRegistry;rendererService=new De;fp;initialized=n(this,d,!1);resetCameraFn=(n(this,m),n(this,f,void 0));setResetCameraFn(t){this.resetCameraFn=t}constructor(){n(this,p),this.categoryStore=new me(this),this.exhibitorStore=new fe(this),this.boothStore=new ue(this),this.routeStore=new Le(this),this.routePlannerStore=new Ce(this),this.toursStore=new Fe(this),this.uiState=new Ie(this),this.mapboxStore=new Ee(this),this.layerStore=new Be,this.intercomStore=new xe,this.eventStore=new ge(this),this.heatmapStore=new _e(this),this.poiTypeStore=new Te(this),this.fuzzySearchEngineStore=new Me(["name","title","fullName","booths.name"]),this.categoryFilterStore=new pe(this),this.sessionsFilterStore=new Oe(this),this.speakerStore=new qe(this),this.speakerFilterStore=new je(this),this.searchStore=new Ae(this),this.searchButtonsStore=new Re(this),this.bookmarksStore=new Pe(this),this.urlFilterManager=new Ve(this),this.shortcutRegistry=new Ge,this.registerShortcutProviders()}selectExhibitor(t,e=!0){this.uiState.hoveredExhibitor=null,this.uiState.details=t;var i=t.booths.filter(l=>l.visible),r=t.booths.filter(l=>!l.visible);!i.length&&r.length&&this.layerStore.updateVisibility(r[0].layer,!0),e&&setTimeout(()=>this.moveToList(t.booths.filter(l=>l.visible)),c||h?500:50)}selectBooth(t,e=!0){let i=Array.isArray(t)?t:[t];this.uiState.details=i[0],i.length===1&&i[0].schedule?.length&&(this.uiState.desiredOverlaySize="medium"),i.length===1&&i[0].layer&&!i[0].visible&&this.layerStore.mode===le.Radio&&this.layerStore.updateVisibility(i[0].layer,!0),e&&setTimeout(()=>this.moveToList(i),c||h?500:50)}reset(){const t=window.__searchi;t&&t.querySelector&&t.querySelector("input[type=search]")&&t.querySelector("input[type=search]").blur&&t.querySelector("input[type=search]").blur(),window.setTimeout(()=>{this.uiState.setKioskModeEnabled||be().then(()=>{ae(()=>{this.selectSearch(""),this.routeStore.defaultFrom&&!this.routeStore.defaultFrom?.visible?this.selectBooth(this.routeStore.defaultFrom):this.uiState.details=null,this.resetCameraFn?.(),this.uiState.menu=!1,this.searchStore.resetSearchBox(),this.searchButtonsStore.clearAllFilters()}),setTimeout(()=>{ae(()=>{this.uiState.inIdle=!0})},100)})},1e3)}selectNone(){window.__resett&&window.__resett(),this.uiState.details=this.uiState.selectedCategory}selectBookmarks(){this.uiState.details=null,this.uiState.list={type:"bookmarks"}}selectVisited(){this.uiState.details=null,this.uiState.list={type:"visited"}}selectLanguage(){this.uiState.details=null,this.uiState.list={type:we}}selectCategory(t){window.__resett&&window.__resett(),this.uiState.details=t,this.uiState.list={type:"category",category:t},this.uiState.desiredOverlaySize="full",t.exhibitors.find(i=>i.booths.find(r=>r.visible))||this.layerStore.updateVisibility(t.exhibitors[0]?.booths[0]?.layer,!0),setTimeout(()=>{this.uiState.moveToBooths=t.exhibitors.filter(i=>i.booths.find(r=>r.visible)).flatMap(i=>i.booths)},200)}selectEventItem(t,e=!0){if(this.uiState.hoveredExhibitor=null,this.uiState.details=t,this.uiState.desiredOverlaySize="medium",t.boothId){const i=this.boothStore.booths.find(r=>r.id===t.boothId);i&&i.layer&&!i.visible&&this.layerStore.mode===le.Radio&&this.layerStore.updateVisibility(i.layer,!0)}e&&setTimeout(()=>{if(t.boothId){const i=this.boothStore.booths.find(r=>r.id===t.boothId);i&&this.moveToList([i])}},c||h?500:50)}selectSearch(t){window.__resett&&window.__resett(),this.uiState.details=null,this.speakerStore.clearSelectedSpeaker(),this.uiState.list={type:"search",text:ze(t,Object.keys(this.uiState.mapSettings).map(e=>`${e}=`)),focused:!1},this.uiState.activeListIndex=-1}clickBookmarks(){window.__resett&&window.__resett(),this.uiState.menu=!1,this.selectBookmarks(),this.moveToList(),this.showMap()}clickVisited(){window.__resett&&window.__resett(),this.uiState.menu=!1,this.selectVisited(),this.moveToList(),this.showMap()}clickLanguage(){window.__resett&&window.__resett(),this.uiState.menu=!1,this.selectLanguage()}clickCategory(t){window.__resett&&window.__resett(),this.uiState.menu=!1,this.selectCategory(t),this.uiState.onCategoryClick&&this.uiState.onCategoryClick({id:t.id,name:t.name,exhibitors:t.exhibitors.map(e=>e.id)}),setTimeout(()=>{this.moveToList(),this.showMap()},100)}clickSeminars(){this.clickCategory(this.categoryStore.seminarsCategory)}clickBoothInList(t){window.__resett&&window.__resett(),this.uiState.hoveredBooth=null,this.selectBooth(t),this.moveToList([t]),this.showMap()}clickBoothInList2(t){window.__resett&&window.__resett(),this.uiState.hoveredBooth=null,this.selectBooth(t,!1),window.setTimeout(()=>{this.moveToList([t]),this.showMap()},navigator.userAgent.toLowerCase().indexOf("android")>-1?400:50)}clickBooth(t){if(this.uiState.menu=!1,this.uiState.list.type==="sessions"&&this.searchStore.selectSearch(),this.uiState.list.type==="speakers"&&this.searchStore.selectSearch(),this.uiState.list.type==="tours"&&this.searchStore.selectSearch(),this.uiState.list.type==="multi-point-tour"&&this.searchStore.selectSearch(),!(this.uiState.selectedRoute?.from&&this.uiState.selectedRoute?.to)){if(this.uiState.selectedRoute?.to&&!this.uiState.selectedRoute?.from&&t){this.routeStore.setStartPoint(t);return}if(t)this.routeStore.tempToBooth=t;else{this.uiState.details=null,this.fp.hidePathways(),this.uiState.list={type:"search",text:"",focused:!1},this.uiState.onBoothClick&&this.uiState.onBoothClick({target:null});return}if(this.uiState.onBoothClick){const e={name:"",description:""},i={target:{...t,layer:t.layer||e}};this.uiState.onBoothClick(i)}t.exhibitors.length===1&&t instanceof de?(this.heatmapStore.forceTrack={action:ye.ViewBooth,label:t.name},this.selectExhibitor(t.exhibitors[0],!1)):this.selectBooth(t,!1),this.showMap()}}clickExhibitor2(t){this.selectExhibitor(t,!0),this.showMap()}clickExhibitor(t){window.setTimeout(()=>{this.clickExhibitor2(t)},navigator.userAgent.toLowerCase().indexOf("android")>-1?400:50)}showMap(){this.uiState.overlayPosition==="bottom"&&ce&&(this.uiState.desiredOverlaySize="medium")}showOverlay(){this.uiState.overlayPosition==="bottom"&&(this.uiState.desiredOverlaySize="full")}toggleMapOverlay(){this.uiState.overlayPosition==="bottom"&&this.uiState.overlaySize==="full"?this.uiState.desiredOverlaySize="medium":this.uiState.overlayPosition==="bottom"&&this.uiState.overlaySize!=="full"&&(this.uiState.desiredOverlaySize="full")}moveToList(t){t=t||this.uiState.listItems;const e=[];t.forEach(i=>{if(i instanceof re)e.push(...i.booths.filter(r=>r.visible));else if(i instanceof oe)i.visible&&e.push(i);else if(i instanceof ke&&i.boothId){const r=this.boothStore.boothById.get(i.boothId);r?.visible&&e.push(r)}else i instanceof ve&&this.speakerStore.getEventsBySpeaker(i.id).forEach(r=>{if(!r.boothId)return;const l=this.boothStore.boothById.get(r.boothId);l?.visible&&e.push(l)})}),this.uiState.moveToBooths=e}moveToExhibitor(t){this.moveToList([t])}changeActiveListIndex(t){let e=this.uiState.activeListIndex+t;e=Math.max(0,Math.min(this.uiState.listItems.length-1,e)),this.uiState.activeListIndex=e}toggleModal(t){this.uiState.modalActive[t]=!this.uiState.modalActive[t]}openGallery(){this.uiState.galleryActive=!0}closeGallery(){this.uiState.galleryActive=!1}openActiveListItem(){const t=this.uiState.listItems[this.uiState.activeListIndex];t&&(ne.log("Opening",t),t instanceof re?this.clickExhibitor(t):t instanceof Se?this.clickCategory(t):t instanceof oe&&this.clickBoothInList2(t))}toggleCategoryFilter(){this.uiState.categoryFilterOpen=!this.uiState.categoryFilterOpen}applyCategoryFilters(t){this.uiState.selectedCategoryFilters=t,this.uiState.categoryFilterOpen=!1}get filteredExhibitors(){return this.uiState.selectedCategoryFilters.length===0?this.exhibitorStore.exhibitors:this.exhibitorStore.exhibitors.filter(t=>this.uiState.selectedCategoryFilters.some(e=>t.categories.some(i=>i.id===e.id)))}selectSessions(){this.uiState.list={type:"sessions",text:"",focused:!1},this.uiState.menu=!1,this.uiState.selectedTrack=null,this.searchButtonsStore.setSubButtonId(null),this.searchButtonsStore.subButtonsEnabled&&this.searchButtonsStore.showSubButtons("sessions"),h&&(this.uiState.desiredOverlaySize="full")}selectExhibitors(){this.uiState.list={type:"exhibitors",text:"",focused:!1},this.uiState.menu=!1,h&&(this.uiState.desiredOverlaySize="full")}selectTours(){this.uiState.list={type:"tours",text:"",focused:!1},this.uiState.menu=!1,h&&(this.uiState.desiredOverlaySize="full")}selectSpeakers(){this.uiState.list={type:"speakers",text:"",focused:!1},this.uiState.menu=!1,h&&(this.uiState.desiredOverlaySize="full")}selectSpeaker(t,e=!0){this.speakerStore.selectSpeaker(t,e)}resetFilters(){this.searchButtonsStore.clearAllFilters()}registerShortcutProviders(){this.shortcutRegistry.register(new Ne(this)),this.shortcutRegistry.register(new Ue(this)),this.shortcutRegistry.register(new We(this))}}})();export default He;
1
+ import{__esDecorate as s,__runInitializers as n}from"tslib";import{action as o,observable as se,computed as he,runInAction as ae}from"mobx";import ne from"../tools/logger";import{isWebGlSupported as ce}from"../utils";import ue,{BoothBase as oe,RegularBooth as de}from"./BoothStore";import me,{Category as Se}from"./CategoryStore";import fe,{Exhibitor as re}from"./ExhibitorStore";import pe from"./CategoryFilterStore";import ge,{EventItem as ke}from"./EventStore";import{SpeakerItem as ve}from"./SpeakerStore";import{GaEventActions as ye}from"../tools/gtag";import h from"../utils/is-mobile";import c from"../utils/is-webview";import _e from"./HeatmapStore";import{resetLocale as be}from"../utils/i18n";import{LANGUAGE_TYPE as we}from"../constants";import xe from"./IntercomStore";import Be,{LayersMode as le}from"./LayerStore";import Ee from"./MaplibreStore";import Le from"./RouteStore";import Ce from"./RoutePlannerStore";import Fe from"./ToursStore";import Ie from"./UIState";import Te from"./PoiTypeStore";import{sanitizeSearch as ze}from"../utils/sanitizeText";import Me from"./FuzzySearchEngineStore";import Oe from"./SessionsFilterStore";import Ae from"./SearchStore";import Re from"./SearchButtonsStore";import Pe from"./BookmarksStore";import{URLFilterManager as Ve}from"../services/URLFilterManager";import{ShortcutRegistry as Ge}from"./ShortcutRegistry";import{SessionsShortcutProvider as Ne}from"./providers/SessionsShortcutProvider";import qe from"./SpeakerStore";import je from"./SpeakerFilterStore";import{SpeakerShortcutProvider as Ue}from"./providers/SpeakerShortcutProvider";import{SearchShortcutProvider as We}from"./providers/SearchShortcutProvider";import{RendererService as De}from"../renderer";let He=(()=>{let a=[],u,d=[],m=[],S,f=[],p=[],g,k,v,y,_,b,w,x,B,E,L,C,F,I,T,z,M,O,A,R,P,V,G,N,q,j,U,W,D,H,K,Y,$,J,Q,X,Z,ee,te,ie;return class{static{const t=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;u=[se],S=[se],g=[o],k=[o],v=[o],y=[o],_=[o],b=[o],w=[o],x=[o],B=[o],E=[o],L=[o],C=[o],F=[o],I=[o],T=[o],z=[o],M=[o],O=[o],A=[o],R=[o],P=[o],V=[o],G=[o],N=[o],q=[o],j=[o],U=[o],W=[o],D=[o],H=[o],K=[o],Y=[o],$=[o],J=[he],Q=[o],X=[o],Z=[o],ee=[o],te=[o],ie=[o],s(this,null,g,{kind:"method",name:"setResetCameraFn",static:!1,private:!1,access:{has:e=>"setResetCameraFn"in e,get:e=>e.setResetCameraFn},metadata:t},null,a),s(this,null,k,{kind:"method",name:"selectExhibitor",static:!1,private:!1,access:{has:e=>"selectExhibitor"in e,get:e=>e.selectExhibitor},metadata:t},null,a),s(this,null,v,{kind:"method",name:"selectBooth",static:!1,private:!1,access:{has:e=>"selectBooth"in e,get:e=>e.selectBooth},metadata:t},null,a),s(this,null,y,{kind:"method",name:"reset",static:!1,private:!1,access:{has:e=>"reset"in e,get:e=>e.reset},metadata:t},null,a),s(this,null,_,{kind:"method",name:"selectNone",static:!1,private:!1,access:{has:e=>"selectNone"in e,get:e=>e.selectNone},metadata:t},null,a),s(this,null,b,{kind:"method",name:"selectBookmarks",static:!1,private:!1,access:{has:e=>"selectBookmarks"in e,get:e=>e.selectBookmarks},metadata:t},null,a),s(this,null,w,{kind:"method",name:"selectVisited",static:!1,private:!1,access:{has:e=>"selectVisited"in e,get:e=>e.selectVisited},metadata:t},null,a),s(this,null,x,{kind:"method",name:"selectLanguage",static:!1,private:!1,access:{has:e=>"selectLanguage"in e,get:e=>e.selectLanguage},metadata:t},null,a),s(this,null,B,{kind:"method",name:"selectCategory",static:!1,private:!1,access:{has:e=>"selectCategory"in e,get:e=>e.selectCategory},metadata:t},null,a),s(this,null,E,{kind:"method",name:"selectEventItem",static:!1,private:!1,access:{has:e=>"selectEventItem"in e,get:e=>e.selectEventItem},metadata:t},null,a),s(this,null,L,{kind:"method",name:"selectSearch",static:!1,private:!1,access:{has:e=>"selectSearch"in e,get:e=>e.selectSearch},metadata:t},null,a),s(this,null,C,{kind:"method",name:"clickBookmarks",static:!1,private:!1,access:{has:e=>"clickBookmarks"in e,get:e=>e.clickBookmarks},metadata:t},null,a),s(this,null,F,{kind:"method",name:"clickVisited",static:!1,private:!1,access:{has:e=>"clickVisited"in e,get:e=>e.clickVisited},metadata:t},null,a),s(this,null,I,{kind:"method",name:"clickLanguage",static:!1,private:!1,access:{has:e=>"clickLanguage"in e,get:e=>e.clickLanguage},metadata:t},null,a),s(this,null,T,{kind:"method",name:"clickCategory",static:!1,private:!1,access:{has:e=>"clickCategory"in e,get:e=>e.clickCategory},metadata:t},null,a),s(this,null,z,{kind:"method",name:"clickSeminars",static:!1,private:!1,access:{has:e=>"clickSeminars"in e,get:e=>e.clickSeminars},metadata:t},null,a),s(this,null,M,{kind:"method",name:"clickBoothInList",static:!1,private:!1,access:{has:e=>"clickBoothInList"in e,get:e=>e.clickBoothInList},metadata:t},null,a),s(this,null,O,{kind:"method",name:"clickBoothInList2",static:!1,private:!1,access:{has:e=>"clickBoothInList2"in e,get:e=>e.clickBoothInList2},metadata:t},null,a),s(this,null,A,{kind:"method",name:"clickBooth",static:!1,private:!1,access:{has:e=>"clickBooth"in e,get:e=>e.clickBooth},metadata:t},null,a),s(this,null,R,{kind:"method",name:"clickExhibitor2",static:!1,private:!1,access:{has:e=>"clickExhibitor2"in e,get:e=>e.clickExhibitor2},metadata:t},null,a),s(this,null,P,{kind:"method",name:"clickExhibitor",static:!1,private:!1,access:{has:e=>"clickExhibitor"in e,get:e=>e.clickExhibitor},metadata:t},null,a),s(this,null,V,{kind:"method",name:"showMap",static:!1,private:!1,access:{has:e=>"showMap"in e,get:e=>e.showMap},metadata:t},null,a),s(this,null,G,{kind:"method",name:"showOverlay",static:!1,private:!1,access:{has:e=>"showOverlay"in e,get:e=>e.showOverlay},metadata:t},null,a),s(this,null,N,{kind:"method",name:"toggleMapOverlay",static:!1,private:!1,access:{has:e=>"toggleMapOverlay"in e,get:e=>e.toggleMapOverlay},metadata:t},null,a),s(this,null,q,{kind:"method",name:"moveToList",static:!1,private:!1,access:{has:e=>"moveToList"in e,get:e=>e.moveToList},metadata:t},null,a),s(this,null,j,{kind:"method",name:"moveToExhibitor",static:!1,private:!1,access:{has:e=>"moveToExhibitor"in e,get:e=>e.moveToExhibitor},metadata:t},null,a),s(this,null,U,{kind:"method",name:"changeActiveListIndex",static:!1,private:!1,access:{has:e=>"changeActiveListIndex"in e,get:e=>e.changeActiveListIndex},metadata:t},null,a),s(this,null,W,{kind:"method",name:"toggleModal",static:!1,private:!1,access:{has:e=>"toggleModal"in e,get:e=>e.toggleModal},metadata:t},null,a),s(this,null,D,{kind:"method",name:"openGallery",static:!1,private:!1,access:{has:e=>"openGallery"in e,get:e=>e.openGallery},metadata:t},null,a),s(this,null,H,{kind:"method",name:"closeGallery",static:!1,private:!1,access:{has:e=>"closeGallery"in e,get:e=>e.closeGallery},metadata:t},null,a),s(this,null,K,{kind:"method",name:"openActiveListItem",static:!1,private:!1,access:{has:e=>"openActiveListItem"in e,get:e=>e.openActiveListItem},metadata:t},null,a),s(this,null,Y,{kind:"method",name:"toggleCategoryFilter",static:!1,private:!1,access:{has:e=>"toggleCategoryFilter"in e,get:e=>e.toggleCategoryFilter},metadata:t},null,a),s(this,null,$,{kind:"method",name:"applyCategoryFilters",static:!1,private:!1,access:{has:e=>"applyCategoryFilters"in e,get:e=>e.applyCategoryFilters},metadata:t},null,a),s(this,null,J,{kind:"getter",name:"filteredExhibitors",static:!1,private:!1,access:{has:e=>"filteredExhibitors"in e,get:e=>e.filteredExhibitors},metadata:t},null,a),s(this,null,Q,{kind:"method",name:"selectSessions",static:!1,private:!1,access:{has:e=>"selectSessions"in e,get:e=>e.selectSessions},metadata:t},null,a),s(this,null,X,{kind:"method",name:"selectExhibitors",static:!1,private:!1,access:{has:e=>"selectExhibitors"in e,get:e=>e.selectExhibitors},metadata:t},null,a),s(this,null,Z,{kind:"method",name:"selectTours",static:!1,private:!1,access:{has:e=>"selectTours"in e,get:e=>e.selectTours},metadata:t},null,a),s(this,null,ee,{kind:"method",name:"selectSpeakers",static:!1,private:!1,access:{has:e=>"selectSpeakers"in e,get:e=>e.selectSpeakers},metadata:t},null,a),s(this,null,te,{kind:"method",name:"selectSpeaker",static:!1,private:!1,access:{has:e=>"selectSpeaker"in e,get:e=>e.selectSpeaker},metadata:t},null,a),s(this,null,ie,{kind:"method",name:"resetFilters",static:!1,private:!1,access:{has:e=>"resetFilters"in e,get:e=>e.resetFilters},metadata:t},null,a),s(null,null,u,{kind:"field",name:"initialized",static:!1,private:!1,access:{has:e=>"initialized"in e,get:e=>e.initialized,set:(e,i)=>{e.initialized=i}},metadata:t},d,m),s(null,null,S,{kind:"field",name:"resetCameraFn",static:!1,private:!1,access:{has:e=>"resetCameraFn"in e,get:e=>e.resetCameraFn,set:(e,i)=>{e.resetCameraFn=i}},metadata:t},f,p),t&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:t})}categoryStore=n(this,a);exhibitorStore;boothStore;uiState;routeStore;routePlannerStore;toursStore;maplibreStore;layerStore;intercomStore;eventStore;poiTypeStore;heatmapStore;fuzzySearchEngineStore;categoryFilterStore;sessionsFilterStore;speakerStore;speakerFilterStore;searchStore;searchButtonsStore;bookmarksStore;urlFilterManager;shortcutRegistry;rendererService=new De;fp;initialized=n(this,d,!1);resetCameraFn=(n(this,m),n(this,f,void 0));setResetCameraFn(t){this.resetCameraFn=t}constructor(){n(this,p),this.categoryStore=new me(this),this.exhibitorStore=new fe(this),this.boothStore=new ue(this),this.routeStore=new Le(this),this.routePlannerStore=new Ce(this),this.toursStore=new Fe(this),this.uiState=new Ie(this),this.maplibreStore=new Ee(this),this.layerStore=new Be,this.intercomStore=new xe,this.eventStore=new ge(this),this.heatmapStore=new _e(this),this.poiTypeStore=new Te(this),this.fuzzySearchEngineStore=new Me(["name","title","fullName","booths.name"]),this.categoryFilterStore=new pe(this),this.sessionsFilterStore=new Oe(this),this.speakerStore=new qe(this),this.speakerFilterStore=new je(this),this.searchStore=new Ae(this),this.searchButtonsStore=new Re(this),this.bookmarksStore=new Pe(this),this.urlFilterManager=new Ve(this),this.shortcutRegistry=new Ge,this.registerShortcutProviders()}selectExhibitor(t,e=!0){this.uiState.hoveredExhibitor=null,this.uiState.details=t;var i=t.booths.filter(l=>l.visible),r=t.booths.filter(l=>!l.visible);!i.length&&r.length&&this.layerStore.updateVisibility(r[0].layer,!0),e&&setTimeout(()=>this.moveToList(t.booths.filter(l=>l.visible)),c||h?500:50)}selectBooth(t,e=!0){let i=Array.isArray(t)?t:[t];this.uiState.details=i[0],i.length===1&&i[0].schedule?.length&&(this.uiState.desiredOverlaySize="medium"),i.length===1&&i[0].layer&&!i[0].visible&&this.layerStore.mode===le.Radio&&this.layerStore.updateVisibility(i[0].layer,!0),e&&setTimeout(()=>this.moveToList(i),c||h?500:50)}reset(){const t=window.__searchi;t&&t.querySelector&&t.querySelector("input[type=search]")&&t.querySelector("input[type=search]").blur&&t.querySelector("input[type=search]").blur(),window.setTimeout(()=>{this.uiState.setKioskModeEnabled||be().then(()=>{ae(()=>{this.selectSearch(""),this.routeStore.defaultFrom&&!this.routeStore.defaultFrom?.visible?this.selectBooth(this.routeStore.defaultFrom):this.uiState.details=null,this.resetCameraFn?.(),this.uiState.menu=!1,this.searchStore.resetSearchBox(),this.searchButtonsStore.clearAllFilters()}),setTimeout(()=>{ae(()=>{this.uiState.inIdle=!0})},100)})},1e3)}selectNone(){window.__resett&&window.__resett(),this.uiState.details=this.uiState.selectedCategory}selectBookmarks(){this.uiState.details=null,this.uiState.list={type:"bookmarks"}}selectVisited(){this.uiState.details=null,this.uiState.list={type:"visited"}}selectLanguage(){this.uiState.details=null,this.uiState.list={type:we}}selectCategory(t){window.__resett&&window.__resett(),this.uiState.details=t,this.uiState.list={type:"category",category:t},this.uiState.desiredOverlaySize="full",t.exhibitors.find(i=>i.booths.find(r=>r.visible))||this.layerStore.updateVisibility(t.exhibitors[0]?.booths[0]?.layer,!0),setTimeout(()=>{this.uiState.moveToBooths=t.exhibitors.filter(i=>i.booths.find(r=>r.visible)).flatMap(i=>i.booths)},200)}selectEventItem(t,e=!0){if(this.uiState.hoveredExhibitor=null,this.uiState.details=t,this.uiState.desiredOverlaySize="medium",t.boothId){const i=this.boothStore.booths.find(r=>r.id===t.boothId);i&&i.layer&&!i.visible&&this.layerStore.mode===le.Radio&&this.layerStore.updateVisibility(i.layer,!0)}e&&setTimeout(()=>{if(t.boothId){const i=this.boothStore.booths.find(r=>r.id===t.boothId);i&&this.moveToList([i])}},c||h?500:50)}selectSearch(t){window.__resett&&window.__resett(),this.uiState.details=null,this.speakerStore.clearSelectedSpeaker(),this.uiState.list={type:"search",text:ze(t,Object.keys(this.uiState.mapSettings).map(e=>`${e}=`)),focused:!1},this.uiState.activeListIndex=-1}clickBookmarks(){window.__resett&&window.__resett(),this.uiState.menu=!1,this.selectBookmarks(),this.moveToList(),this.showMap()}clickVisited(){window.__resett&&window.__resett(),this.uiState.menu=!1,this.selectVisited(),this.moveToList(),this.showMap()}clickLanguage(){window.__resett&&window.__resett(),this.uiState.menu=!1,this.selectLanguage()}clickCategory(t){window.__resett&&window.__resett(),this.uiState.menu=!1,this.selectCategory(t),this.uiState.onCategoryClick&&this.uiState.onCategoryClick({id:t.id,name:t.name,exhibitors:t.exhibitors.map(e=>e.id)}),setTimeout(()=>{this.moveToList(),this.showMap()},100)}clickSeminars(){this.clickCategory(this.categoryStore.seminarsCategory)}clickBoothInList(t){window.__resett&&window.__resett(),this.uiState.hoveredBooth=null,this.selectBooth(t),this.moveToList([t]),this.showMap()}clickBoothInList2(t){window.__resett&&window.__resett(),this.uiState.hoveredBooth=null,this.selectBooth(t,!1),window.setTimeout(()=>{this.moveToList([t]),this.showMap()},navigator.userAgent.toLowerCase().indexOf("android")>-1?400:50)}clickBooth(t){if(this.uiState.menu=!1,this.uiState.list.type==="sessions"&&this.searchStore.selectSearch(),this.uiState.list.type==="speakers"&&this.searchStore.selectSearch(),this.uiState.list.type==="tours"&&this.searchStore.selectSearch(),this.uiState.list.type==="multi-point-tour"&&this.searchStore.selectSearch(),!(this.uiState.selectedRoute?.from&&this.uiState.selectedRoute?.to)){if(this.uiState.selectedRoute?.to&&!this.uiState.selectedRoute?.from&&t){this.routeStore.setStartPoint(t);return}if(t)this.routeStore.tempToBooth=t;else{this.uiState.details=null,this.fp.hidePathways(),this.uiState.list={type:"search",text:"",focused:!1},this.uiState.onBoothClick&&this.uiState.onBoothClick({target:null});return}if(this.uiState.onBoothClick){const e={name:"",description:""},i={target:{...t,layer:t.layer||e}};this.uiState.onBoothClick(i)}t.exhibitors.length===1&&t instanceof de?(this.heatmapStore.forceTrack={action:ye.ViewBooth,label:t.name},this.selectExhibitor(t.exhibitors[0],!1)):this.selectBooth(t,!1),this.showMap()}}clickExhibitor2(t){this.selectExhibitor(t,!0),this.showMap()}clickExhibitor(t){window.setTimeout(()=>{this.clickExhibitor2(t)},navigator.userAgent.toLowerCase().indexOf("android")>-1?400:50)}showMap(){this.uiState.overlayPosition==="bottom"&&ce&&(this.uiState.desiredOverlaySize="medium")}showOverlay(){this.uiState.overlayPosition==="bottom"&&(this.uiState.desiredOverlaySize="full")}toggleMapOverlay(){this.uiState.overlayPosition==="bottom"&&this.uiState.overlaySize==="full"?this.uiState.desiredOverlaySize="medium":this.uiState.overlayPosition==="bottom"&&this.uiState.overlaySize!=="full"&&(this.uiState.desiredOverlaySize="full")}moveToList(t){t=t||this.uiState.listItems;const e=[];t.forEach(i=>{if(i instanceof re)e.push(...i.booths.filter(r=>r.visible));else if(i instanceof oe)i.visible&&e.push(i);else if(i instanceof ke&&i.boothId){const r=this.boothStore.boothById.get(i.boothId);r?.visible&&e.push(r)}else i instanceof ve&&this.speakerStore.getEventsBySpeaker(i.id).forEach(r=>{if(!r.boothId)return;const l=this.boothStore.boothById.get(r.boothId);l?.visible&&e.push(l)})}),this.uiState.moveToBooths=e}moveToExhibitor(t){this.moveToList([t])}changeActiveListIndex(t){let e=this.uiState.activeListIndex+t;e=Math.max(0,Math.min(this.uiState.listItems.length-1,e)),this.uiState.activeListIndex=e}toggleModal(t){this.uiState.modalActive[t]=!this.uiState.modalActive[t]}openGallery(){this.uiState.galleryActive=!0}closeGallery(){this.uiState.galleryActive=!1}openActiveListItem(){const t=this.uiState.listItems[this.uiState.activeListIndex];t&&(ne.log("Opening",t),t instanceof re?this.clickExhibitor(t):t instanceof Se?this.clickCategory(t):t instanceof oe&&this.clickBoothInList2(t))}toggleCategoryFilter(){this.uiState.categoryFilterOpen=!this.uiState.categoryFilterOpen}applyCategoryFilters(t){this.uiState.selectedCategoryFilters=t,this.uiState.categoryFilterOpen=!1}get filteredExhibitors(){return this.uiState.selectedCategoryFilters.length===0?this.exhibitorStore.exhibitors:this.exhibitorStore.exhibitors.filter(t=>this.uiState.selectedCategoryFilters.some(e=>t.categories.some(i=>i.id===e.id)))}selectSessions(){this.uiState.list={type:"sessions",text:"",focused:!1},this.uiState.menu=!1,this.uiState.selectedTrack=null,this.searchButtonsStore.setSubButtonId(null),this.searchButtonsStore.subButtonsEnabled&&this.searchButtonsStore.showSubButtons("sessions"),h&&(this.uiState.desiredOverlaySize="full")}selectExhibitors(){this.uiState.list={type:"exhibitors",text:"",focused:!1},this.uiState.menu=!1,h&&(this.uiState.desiredOverlaySize="full")}selectTours(){this.uiState.list={type:"tours",text:"",focused:!1},this.uiState.menu=!1,h&&(this.uiState.desiredOverlaySize="full")}selectSpeakers(){this.uiState.list={type:"speakers",text:"",focused:!1},this.uiState.menu=!1,h&&(this.uiState.desiredOverlaySize="full")}selectSpeaker(t,e=!0){this.speakerStore.selectSpeaker(t,e)}resetFilters(){this.searchButtonsStore.clearAllFilters()}registerShortcutProviders(){this.shortcutRegistry.register(new Ne(this)),this.shortcutRegistry.register(new Ue(this)),this.shortcutRegistry.register(new We(this))}}})();export default He;
@@ -1 +1 @@
1
- import{__esDecorate as i,__runInitializers as r}from"tslib";import{action as m,computed as x,observable as d}from"mobx";import{Point as Ke,lineLength as Oe}from"simple-geometry";import n,{boothStore as Xe,layersStore as T}from".";import{fpGeo as E}from"../data/fpGeo";import z from"../core/Rect";import{GaEventActions as He,sendEventToGa as Je}from"../tools/gtag";import{convertGpsToLocal as Ue,isValidPointCoords as Ne,calculateRelativeBearing as Qe}from"../utils/gps";import{getLayerSvg as et,svgArea as k}from"../data/svg";import{createWayfindingEngine as tt}from"../wayfinding/core";import{boothToEndpoint as Ze,graphDataSource as qe}from"../wayfinding/adapters";import{LayersMode as st}from"./LayerStore";import{uiState as y}from"./index";import{calcSpeed as $e}from"../utils/calcSpeed";import{calcTravelTime as Ve}from"../utils/calcTravelTime";import{DEFAULT_UNITS as je,ORIENTATION_GRANTED_KEY as at}from"../constants";import{areLayersEnabled as it}from"../utils/areLayersEnabled";import{shouldReroute as rt}from"../wayfinding/core";import{findBoothInRadius as nt}from"../wayfinding/utils/findBoothInRadius";import P from"../data";import We from"../tools/logger";const b=a=>typeof a=="string"?Number(a.replace(",",".")):a;let ot=(()=>{let a=[],o,l=[],f=[],h,S=[],L=[],D,I=[],w=[],A,M=[],C=[],B,F=[],G=[],O,U=[],N=[],Z,q=[],$=[],V,j=[],W=[],Y,K=[],X=[],H,J=[],Q=[],ee,te=[],se=[],ae,ie=[],re=[],ne,oe=[],le=[],ce,ue=[],de=[],fe,me,he,pe,_e,ge,ye,ke,be,ve,xe,Re,Se,Le=[],Te=[],Ee,ze,Pe,De,Ie,we,Ae=[],Me=[],Ce,Be,Fe;return class{static{const t=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;o=[d],h=[d],D=[d],A=[d],B=[d],O=[d],Z=[d],V=[d],Y=[d],H=[d],ee=[d],ae=[d],ne=[d],ce=[d],fe=[x],me=[m],he=[m],pe=[x({keepAlive:!0})],_e=[x({keepAlive:!0})],ge=[m],ye=[m],ke=[x({keepAlive:!0})],be=[x({keepAlive:!0})],ve=[m],xe=[m],Re=[m],Se=[d],Ee=[x],ze=[m],Pe=[m],De=[m],Ie=[m],we=[d],Ce=[m],Be=[x({keepAlive:!0})],Fe=[m],i(this,null,fe,{kind:"getter",name:"canFindLocation",static:!1,private:!1,access:{has:e=>"canFindLocation"in e,get:e=>e.canFindLocation},metadata:t},null,a),i(this,null,me,{kind:"method",name:"selectRoute",static:!1,private:!1,access:{has:e=>"selectRoute"in e,get:e=>e.selectRoute},metadata:t},null,a),i(this,null,he,{kind:"method",name:"setStartPoint",static:!1,private:!1,access:{has:e=>"setStartPoint"in e,get:e=>e.setStartPoint},metadata:t},null,a),i(this,null,pe,{kind:"getter",name:"pathLayers",static:!1,private:!1,access:{has:e=>"pathLayers"in e,get:e=>e.pathLayers},metadata:t},null,a),i(this,null,_e,{kind:"getter",name:"nearestBooth",static:!1,private:!1,access:{has:e=>"nearestBooth"in e,get:e=>e.nearestBooth},metadata:t},null,a),i(this,null,ge,{kind:"method",name:"setMarkers",static:!1,private:!1,access:{has:e=>"setMarkers"in e,get:e=>e.setMarkers},metadata:t},null,a),i(this,null,ye,{kind:"method",name:"selectMarker",static:!1,private:!1,access:{has:e=>"selectMarker"in e,get:e=>e.selectMarker},metadata:t},null,a),i(this,null,ke,{kind:"getter",name:"selectedMarkers",static:!1,private:!1,access:{has:e=>"selectedMarkers"in e,get:e=>e.selectedMarkers},metadata:t},null,a),i(this,null,be,{kind:"getter",name:"layers",static:!1,private:!1,access:{has:e=>"layers"in e,get:e=>e.layers},metadata:t},null,a),i(this,null,ve,{kind:"method",name:"clickRoute",static:!1,private:!1,access:{has:e=>"clickRoute"in e,get:e=>e.clickRoute},metadata:t},null,a),i(this,null,xe,{kind:"method",name:"selectCurrentPosition",static:!1,private:!1,access:{has:e=>"selectCurrentPosition"in e,get:e=>e.selectCurrentPosition},metadata:t},null,a),i(this,null,Re,{kind:"method",name:"findLocation",static:!1,private:!1,access:{has:e=>"findLocation"in e,get:e=>e.findLocation},metadata:t},null,a),i(this,null,Ee,{kind:"getter",name:"routeInfo",static:!1,private:!1,access:{has:e=>"routeInfo"in e,get:e=>e.routeInfo},metadata:t},null,a),i(this,null,ze,{kind:"method",name:"updateRoute",static:!1,private:!1,access:{has:e=>"updateRoute"in e,get:e=>e.updateRoute},metadata:t},null,a),i(this,null,Pe,{kind:"method",name:"updateRouteDistance",static:!1,private:!1,access:{has:e=>"updateRouteDistance"in e,get:e=>e.updateRouteDistance},metadata:t},null,a),i(this,null,De,{kind:"method",name:"updateRoutePoints",static:!1,private:!1,access:{has:e=>"updateRoutePoints"in e,get:e=>e.updateRoutePoints},metadata:t},null,a),i(this,null,Ie,{kind:"method",name:"checkRoutes",static:!1,private:!1,access:{has:e=>"checkRoutes"in e,get:e=>e.checkRoutes},metadata:t},null,a),i(this,null,Ce,{kind:"method",name:"setGpsTrackingEnabled",static:!1,private:!1,access:{has:e=>"setGpsTrackingEnabled"in e,get:e=>e.setGpsTrackingEnabled},metadata:t},null,a),i(this,null,Be,{kind:"getter",name:"gpsEnabled",static:!1,private:!1,access:{has:e=>"gpsEnabled"in e,get:e=>e.gpsEnabled},metadata:t},null,a),i(this,null,Fe,{kind:"method",name:"setOnlyAccessible",static:!1,private:!1,access:{has:e=>"setOnlyAccessible"in e,get:e=>e.setOnlyAccessible},metadata:t},null,a),i(null,null,o,{kind:"field",name:"routeLines",static:!1,private:!1,access:{has:e=>"routeLines"in e,get:e=>e.routeLines,set:(e,s)=>{e.routeLines=s}},metadata:t},l,f),i(null,null,h,{kind:"field",name:"routeDistance",static:!1,private:!1,access:{has:e=>"routeDistance"in e,get:e=>e.routeDistance,set:(e,s)=>{e.routeDistance=s}},metadata:t},S,L),i(null,null,D,{kind:"field",name:"currentPosition",static:!1,private:!1,access:{has:e=>"currentPosition"in e,get:e=>e.currentPosition,set:(e,s)=>{e.currentPosition=s}},metadata:t},I,w),i(null,null,A,{kind:"field",name:"requestCompass",static:!1,private:!1,access:{has:e=>"requestCompass"in e,get:e=>e.requestCompass,set:(e,s)=>{e.requestCompass=s}},metadata:t},M,C),i(null,null,B,{kind:"field",name:"iconType",static:!1,private:!1,access:{has:e=>"iconType"in e,get:e=>e.iconType,set:(e,s)=>{e.iconType=s}},metadata:t},F,G),i(null,null,O,{kind:"field",name:"tempToBooth",static:!1,private:!1,access:{has:e=>"tempToBooth"in e,get:e=>e.tempToBooth,set:(e,s)=>{e.tempToBooth=s}},metadata:t},U,N),i(null,null,Z,{kind:"field",name:"defaultFrom",static:!1,private:!1,access:{has:e=>"defaultFrom"in e,get:e=>e.defaultFrom,set:(e,s)=>{e.defaultFrom=s}},metadata:t},q,$),i(null,null,V,{kind:"field",name:"focusEnabled",static:!1,private:!1,access:{has:e=>"focusEnabled"in e,get:e=>e.focusEnabled,set:(e,s)=>{e.focusEnabled=s}},metadata:t},j,W),i(null,null,Y,{kind:"field",name:"prevZ",static:!1,private:!1,access:{has:e=>"prevZ"in e,get:e=>e.prevZ,set:(e,s)=>{e.prevZ=s}},metadata:t},K,X),i(null,null,H,{kind:"field",name:"markersData",static:!1,private:!1,access:{has:e=>"markersData"in e,get:e=>e.markersData,set:(e,s)=>{e.markersData=s}},metadata:t},J,Q),i(null,null,ee,{kind:"field",name:"prevMarkers",static:!1,private:!1,access:{has:e=>"prevMarkers"in e,get:e=>e.prevMarkers,set:(e,s)=>{e.prevMarkers=s}},metadata:t},te,se),i(null,null,ae,{kind:"field",name:"showAccessible",static:!1,private:!1,access:{has:e=>"showAccessible"in e,get:e=>e.showAccessible,set:(e,s)=>{e.showAccessible=s}},metadata:t},ie,re),i(null,null,ne,{kind:"field",name:"onlyAccessible",static:!1,private:!1,access:{has:e=>"onlyAccessible"in e,get:e=>e.onlyAccessible,set:(e,s)=>{e.onlyAccessible=s}},metadata:t},oe,le),i(null,null,ce,{kind:"field",name:"currentRouteLayer",static:!1,private:!1,access:{has:e=>"currentRouteLayer"in e,get:e=>e.currentRouteLayer,set:(e,s)=>{e.currentRouteLayer=s}},metadata:t},ue,de),i(null,null,Se,{kind:"field",name:"routeUnits",static:!1,private:!1,access:{has:e=>"routeUnits"in e,get:e=>e.routeUnits,set:(e,s)=>{e.routeUnits=s}},metadata:t},Le,Te),i(null,null,we,{kind:"field",name:"isGpsTrackingEnabled",static:!1,private:!1,access:{has:e=>"isGpsTrackingEnabled"in e,get:e=>e.isGpsTrackingEnabled,set:(e,s)=>{e.isGpsTrackingEnabled=s}},metadata:t},Ae,Me),t&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:t})}rootStore=r(this,a);cpTimeout;routeLines=r(this,l,[]);routeDistance=(r(this,f),r(this,S,null));currentPosition=(r(this,L),r(this,I,null));requestCompass=(r(this,w),r(this,M,!1));iconType=(r(this,C),r(this,F,0));tempToBooth=(r(this,G),r(this,U,null));defaultFrom=(r(this,N),r(this,q,null));focusEnabled=(r(this,$),r(this,j,!0));prevZ=(r(this,W),r(this,K,null));markersData=(r(this,X),r(this,J,{icons:[],markers:[]}));prevMarkers=(r(this,Q),r(this,te,[]));showAccessible=(r(this,se),r(this,ie,!!qe.getLines().find(t=>t.unaccessible)));onlyAccessible=(r(this,re),r(this,oe,!1));currentRouteLayer=(r(this,le),r(this,ue,null));constructor(t){r(this,Me),this.rootStore=t,this.focusEnabled=!window.location.search}get canFindLocation(){return!!this.defaultFrom||!!this.currentPosition}selectRoute(t,e=!0){e&&(y.list={type:"search",text:"",focused:!1}),!t?.from&&t?.to&&this.currentPosition&&(t.from=this.nearestBooth),t?.from&&t?.to&&t.from===t.to&&(t=null);let s=[];t?.from&&t?.to&&window.setTimeout(()=>{this.rootStore.showMap()},navigator.userAgent.toLowerCase().indexOf("android")>-1?400:50),t?.from?.visible&&s.push(t.from),t?.to?.visible&&(this.tempToBooth=null,s.push(t.to)),!t&&n.fp.onDirection&&n.fp.onDirection(null),setTimeout(()=>{this.rootStore.moveToList(s),y.details=t,t&&(!t.from||!t.to)&&n.showOverlay(),t?.to&&t?.from?.layer&&this.rootStore.layerStore.updateVisibility(t.from.layer,!0),!this.currentRouteLayer&&t?.from?.layer&&(this.currentRouteLayer=t?.from?.layer),e&&t?.from&&t?.to&&Je(He.ClickDirections,`${t?.from?"From "+t.from.name:""} ${t?.to?"To "+t.to.name:""}`)},200)}setStartPoint(t){const e=y.selectedRoute;if(e?.to&&!e?.from&&t){const s=new Route(t,e.to,e.waypoints);this.selectRoute(s)}}get pathLayers(){return n.routeStore.routeLines?.map(t=>t.p0.layer)?.filter((t,e,s)=>s.indexOf(t)===e).reverse().map((t,e)=>({id:e+1,layer:n.layerStore.findLayer(t)}))}get nearestBooth(){return this.getNearestBooth(this.currentPosition)}getNearestBooth(t){if(!t)return null;let e=this.rootStore.layerStore.findLayer(t.z);const s=t.lat&&t.lng?Ue(t,E.properties.config):t;return this.rootStore.boothStore.booths.filter(c=>T.mode===st.Default||!e?c.visible&&c.rect:c.rect&&(typeof t.z!="number"&&!t.z&&c.visible||e.name===c.layer?.name)).sort((c,u)=>Oe(s,{x:c.rect.cx,y:c.rect.cy})-Oe(s,{x:u.rect.cx,y:u.rect.cy}))[0]||null}setMarkers(t){this.markersData.markers=(t?.markers??[]).map(lt),this.markersData.icons=t?.icons??[]}selectMarker(t,e){const s=this.markersData.markers.find(u=>u.id===t);this.markersData.markers.forEach(u=>u.active=!1),s&&(s.active=!0);let c=n.layerStore.findLayer(s?.z);if(e&&s){const u=n.rendererService.renderer;return c&&!c?.visible&&T.updateVisibility(c,!0),u?u.controls.panTo(s.x,s.y):(We.warn("Renderer is not initialized. Cannot pan to marker."),Promise.resolve())}return Promise.resolve()}get selectedMarkers(){return this.markersData.markers.filter(t=>t.active)}get layers(){var t=[];return n.routeStore.routeLines?.map(e=>e.p0.layer).reverse().forEach(e=>{t.indexOf(e)===-1&&t.push(e)}),t.map(e=>n.layerStore.layers.find(s=>s.name===e))}clickRoute(t,e){window.__resett&&window.__resett(),this.rootStore.uiState.menu=null,y.list.type==="route-planner"&&(y.list={type:"search",text:"",focused:!1}),this.selectRoute(new Route(this.defaultFrom||t,e))}selectCurrentPosition(t,e=!0,s){clearTimeout(this.cpTimeout),t&&(t.x=b(t.x),t.y=b(t.y),t.lat=b(t.lat),t.lng=b(t.lng),it()||(t.z=null));const c=e&&this.rootStore.uiState.details&&!(this.rootStore.uiState.details instanceof Route),u=e&&!c&&(this.focusEnabled||this.prevZ!=t?.z);this.focusEnabled&&(this.focusEnabled=!1),this.prevZ=t?.z?.toString(),this.iconType=s?1:0;const _=t?ct(t):null;if(!_){this.currentPosition=null;return}const p=n.layerStore.findLayer(t.z),g=new CurrentPosition(_.x,_.y,p?.name||this.currentRouteLayer?.name,Qe(_),t.lat,t.lng),R=y.selectedRoute;let Ge=!this.routeLines?.length;if(p&&this.routeLines?.length&&(Ge=!!this.routeLines.find(v=>v.p0.layer===p.name||v.p1.layer===p.name)),u&&Ge){const v=n.rendererService.renderer;if(p&&!p?.visible&&T.updateVisibility(p,!0),!v){We.warn("Renderer is not initialized. Cannot pan to current position.");return}v.controls.panTo(g.x,g.y)}const Ye=(P.flags?.enableExperimentalRerouting||E?.properties?.config?.enableExperimentalRerouting)&&rt(g,this.routeLines)&&!!nt(g,Xe.booths,[R?.to]);if(e&&R&&Ye){const v=n.routeStore.getNearestBooth(g);n.routeStore.selectRoute(new Route(v,R?.to),!1)}this.currentPosition=g,this.gpsEnabled||(this.cpTimeout=setTimeout(()=>{this.currentPosition&&this.selectCurrentPosition(null,!1)},30*1e3))}findLocation(){if(this.canFindLocation){if(n.mapboxStore.showMapbox){y.moveToLocation=!0;return}if(n.routeStore.currentPosition){const t=n.routeStore.currentPosition,e=z.fromCxcywh(t.x,t.y,100,100);let s;if(e.intersects(k))s=e;else{const _=Math.max(k.x1,Math.min(t.x,k.x2)),p=Math.max(k.y1,Math.min(t.y,k.y2)),g=Math.min(k.w,k.h)*.3,R=z.fromCxcywh(_,p,g,g).getIntersection(k);s=z.fromMultiple([e,R])}localStorage.getItem(at)==="false"&&(n.routeStore.requestCompass=!0),y.moveToRect=s;const u=n.layerStore.findLayer(n.routeStore.currentPosition?.z);u&&T.updateVisibility(u,!0)}else n.selectBooth(n.routeStore.defaultFrom)}}routeUnits=(r(this,de),r(this,Le,je));get routeInfo(){const t=this.routeDistance,e=this.routeUnits;return t?{distance:`${t}${e}`,units:e,time:Ve(t,$e(e))}:null}updateRoute(t,e){!t?.length&&!this.routeLines.length||(this.routeLines=t,this.updateRoutePoints())}updateRouteDistance(t){if(t==null)return;const e=et(),s=(e.getAttribute("units")||je).toLowerCase?.().trim(),c=e.getAttribute("fp-ver")?.startsWith("5")??!1;this.routeDistance=Math.round(t/(c?1:10)),this.routeUnits=s,this.updateRoutePoints()}updateRoutePoints(){const t=y.selectedRoute,e=this.routeDistance,s=this.routeUnits;n.fp.onDirection&&setTimeout(()=>{n.fp.onDirection({from:t?.from?{id:t.from.id,name:t.from.name,externalId:t.from.externalId,layer:{name:t.from?.layer?.name,description:t.from?.layer?.description}}:null,to:t?.to?{id:t.to.id,name:t.to.name,externalId:t.to.externalId,layer:{name:t.to.layer?.name,description:t.to.layer?.description}}:null,lines:this.routeLines,distance:`${e}${s}`,units:s,time:Ve(e,$e(s))})},200)}checkRoutes(){const t=tt(qe),e=n.boothStore.booths;console.info(`Route check started ${e.length}.... `);for(let s=0;s<e.length;s++){const c=e[s];for(let u=s+1;u<e.length;u++){const _=e[u];t.buildRoute(Ze(c),Ze(_)).lines.length||console.warn(`No route found from ${c.name} to ${_.name}`)}}console.info("Route check done....")}isGpsTrackingEnabled=(r(this,Te),r(this,Ae,!0));setGpsTrackingEnabled(t){this.isGpsTrackingEnabled=t}get gpsEnabled(){return P.autoTrackingGps&&this.isGpsTrackingEnabled&&!P.enableIPS}setOnlyAccessible(t){this.onlyAccessible=t}}})();export default ot;function lt(a){return{...a,x:b(a.x),y:b(a.y),lat:b(a.lat),lng:b(a.lng)}}function ct(a){let o=null,l=null;return E&&(o=E.properties.config),o&&a.x>=o.p0.x&&a.x<=o.p2.x&&a.y>=o.p0.y&&a.y<=o.p2.y?l={...a}:o&&Ne(a.lat)&&Ne(a.lng)?l=Ue(a,o):o||(l=a),l||null}export function findBooth(a){return n.boothStore.findBooth(a)||n.exhibitorStore.findExhibitor(a)?.booths[0]}export function findEntityByExternalId(a){const o=n.boothStore.boothByExternalId.get(a);if(o)return{type:"booth",entity:o};const l=n.exhibitorStore.exhibitorByExternalId.get(a);if(l)return{type:"exhibitor",entity:l}}export function separateExternalIds(a){const o=[],l=[];for(const f of a){const h=findEntityByExternalId(f);h&&(h.type==="booth"?o.push(f):l.push(f))}return{boothExternalIds:o,exhibitorExternalIds:l}}export function extractRoute(a,o,l){return new Route(findBooth(a)??n.routeStore.defaultFrom??null,findBooth(o),l?.map(f=>findBooth(f)))}export class Route{from;to;waypoints;constructor(o,l,f){this.from=o,this.to=l,this.waypoints=f,this.waypoints=f?.filter(h=>h&&h.id!==o?.id&&h.id!==l?.id)}}export class CurrentPosition extends Ke{x;y;z;angle;lat;lng;constructor(o,l,f,h,S,L){super(o,l),this.x=o,this.y=l,this.z=f,this.angle=h,this.lat=S,this.lng=L}}
1
+ import{__esDecorate as i,__runInitializers as r}from"tslib";import{action as m,computed as x,observable as d}from"mobx";import{Point as Ke,lineLength as Oe}from"simple-geometry";import n,{boothStore as Xe,layersStore as T}from".";import{fpGeo as E}from"../data/fpGeo";import z from"../core/Rect";import{GaEventActions as He,sendEventToGa as Je}from"../tools/gtag";import{convertGpsToLocal as Ue,isValidPointCoords as Ne,calculateRelativeBearing as Qe}from"../utils/gps";import{getLayerSvg as et,svgArea as k}from"../data/svg";import{createWayfindingEngine as tt}from"../wayfinding/core";import{boothToEndpoint as Ze,graphDataSource as qe}from"../wayfinding/adapters";import{LayersMode as st}from"./LayerStore";import{uiState as y}from"./index";import{calcSpeed as $e}from"../utils/calcSpeed";import{calcTravelTime as Ve}from"../utils/calcTravelTime";import{DEFAULT_UNITS as je,ORIENTATION_GRANTED_KEY as at}from"../constants";import{areLayersEnabled as it}from"../utils/areLayersEnabled";import{shouldReroute as rt}from"../wayfinding/core";import{findBoothInRadius as nt}from"../wayfinding/utils/findBoothInRadius";import P from"../data";import We from"../tools/logger";const b=a=>typeof a=="string"?Number(a.replace(",",".")):a;let ot=(()=>{let a=[],o,l=[],f=[],h,S=[],L=[],D,I=[],w=[],A,M=[],C=[],B,F=[],G=[],O,U=[],N=[],Z,q=[],$=[],V,j=[],W=[],Y,K=[],X=[],H,J=[],Q=[],ee,te=[],se=[],ae,ie=[],re=[],ne,oe=[],le=[],ce,ue=[],de=[],fe,me,he,pe,_e,ge,ye,ke,be,ve,xe,Re,Se,Le=[],Te=[],Ee,ze,Pe,De,Ie,we,Ae=[],Me=[],Ce,Be,Fe;return class{static{const t=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;o=[d],h=[d],D=[d],A=[d],B=[d],O=[d],Z=[d],V=[d],Y=[d],H=[d],ee=[d],ae=[d],ne=[d],ce=[d],fe=[x],me=[m],he=[m],pe=[x({keepAlive:!0})],_e=[x({keepAlive:!0})],ge=[m],ye=[m],ke=[x({keepAlive:!0})],be=[x({keepAlive:!0})],ve=[m],xe=[m],Re=[m],Se=[d],Ee=[x],ze=[m],Pe=[m],De=[m],Ie=[m],we=[d],Ce=[m],Be=[x({keepAlive:!0})],Fe=[m],i(this,null,fe,{kind:"getter",name:"canFindLocation",static:!1,private:!1,access:{has:e=>"canFindLocation"in e,get:e=>e.canFindLocation},metadata:t},null,a),i(this,null,me,{kind:"method",name:"selectRoute",static:!1,private:!1,access:{has:e=>"selectRoute"in e,get:e=>e.selectRoute},metadata:t},null,a),i(this,null,he,{kind:"method",name:"setStartPoint",static:!1,private:!1,access:{has:e=>"setStartPoint"in e,get:e=>e.setStartPoint},metadata:t},null,a),i(this,null,pe,{kind:"getter",name:"pathLayers",static:!1,private:!1,access:{has:e=>"pathLayers"in e,get:e=>e.pathLayers},metadata:t},null,a),i(this,null,_e,{kind:"getter",name:"nearestBooth",static:!1,private:!1,access:{has:e=>"nearestBooth"in e,get:e=>e.nearestBooth},metadata:t},null,a),i(this,null,ge,{kind:"method",name:"setMarkers",static:!1,private:!1,access:{has:e=>"setMarkers"in e,get:e=>e.setMarkers},metadata:t},null,a),i(this,null,ye,{kind:"method",name:"selectMarker",static:!1,private:!1,access:{has:e=>"selectMarker"in e,get:e=>e.selectMarker},metadata:t},null,a),i(this,null,ke,{kind:"getter",name:"selectedMarkers",static:!1,private:!1,access:{has:e=>"selectedMarkers"in e,get:e=>e.selectedMarkers},metadata:t},null,a),i(this,null,be,{kind:"getter",name:"layers",static:!1,private:!1,access:{has:e=>"layers"in e,get:e=>e.layers},metadata:t},null,a),i(this,null,ve,{kind:"method",name:"clickRoute",static:!1,private:!1,access:{has:e=>"clickRoute"in e,get:e=>e.clickRoute},metadata:t},null,a),i(this,null,xe,{kind:"method",name:"selectCurrentPosition",static:!1,private:!1,access:{has:e=>"selectCurrentPosition"in e,get:e=>e.selectCurrentPosition},metadata:t},null,a),i(this,null,Re,{kind:"method",name:"findLocation",static:!1,private:!1,access:{has:e=>"findLocation"in e,get:e=>e.findLocation},metadata:t},null,a),i(this,null,Ee,{kind:"getter",name:"routeInfo",static:!1,private:!1,access:{has:e=>"routeInfo"in e,get:e=>e.routeInfo},metadata:t},null,a),i(this,null,ze,{kind:"method",name:"updateRoute",static:!1,private:!1,access:{has:e=>"updateRoute"in e,get:e=>e.updateRoute},metadata:t},null,a),i(this,null,Pe,{kind:"method",name:"updateRouteDistance",static:!1,private:!1,access:{has:e=>"updateRouteDistance"in e,get:e=>e.updateRouteDistance},metadata:t},null,a),i(this,null,De,{kind:"method",name:"updateRoutePoints",static:!1,private:!1,access:{has:e=>"updateRoutePoints"in e,get:e=>e.updateRoutePoints},metadata:t},null,a),i(this,null,Ie,{kind:"method",name:"checkRoutes",static:!1,private:!1,access:{has:e=>"checkRoutes"in e,get:e=>e.checkRoutes},metadata:t},null,a),i(this,null,Ce,{kind:"method",name:"setGpsTrackingEnabled",static:!1,private:!1,access:{has:e=>"setGpsTrackingEnabled"in e,get:e=>e.setGpsTrackingEnabled},metadata:t},null,a),i(this,null,Be,{kind:"getter",name:"gpsEnabled",static:!1,private:!1,access:{has:e=>"gpsEnabled"in e,get:e=>e.gpsEnabled},metadata:t},null,a),i(this,null,Fe,{kind:"method",name:"setOnlyAccessible",static:!1,private:!1,access:{has:e=>"setOnlyAccessible"in e,get:e=>e.setOnlyAccessible},metadata:t},null,a),i(null,null,o,{kind:"field",name:"routeLines",static:!1,private:!1,access:{has:e=>"routeLines"in e,get:e=>e.routeLines,set:(e,s)=>{e.routeLines=s}},metadata:t},l,f),i(null,null,h,{kind:"field",name:"routeDistance",static:!1,private:!1,access:{has:e=>"routeDistance"in e,get:e=>e.routeDistance,set:(e,s)=>{e.routeDistance=s}},metadata:t},S,L),i(null,null,D,{kind:"field",name:"currentPosition",static:!1,private:!1,access:{has:e=>"currentPosition"in e,get:e=>e.currentPosition,set:(e,s)=>{e.currentPosition=s}},metadata:t},I,w),i(null,null,A,{kind:"field",name:"requestCompass",static:!1,private:!1,access:{has:e=>"requestCompass"in e,get:e=>e.requestCompass,set:(e,s)=>{e.requestCompass=s}},metadata:t},M,C),i(null,null,B,{kind:"field",name:"iconType",static:!1,private:!1,access:{has:e=>"iconType"in e,get:e=>e.iconType,set:(e,s)=>{e.iconType=s}},metadata:t},F,G),i(null,null,O,{kind:"field",name:"tempToBooth",static:!1,private:!1,access:{has:e=>"tempToBooth"in e,get:e=>e.tempToBooth,set:(e,s)=>{e.tempToBooth=s}},metadata:t},U,N),i(null,null,Z,{kind:"field",name:"defaultFrom",static:!1,private:!1,access:{has:e=>"defaultFrom"in e,get:e=>e.defaultFrom,set:(e,s)=>{e.defaultFrom=s}},metadata:t},q,$),i(null,null,V,{kind:"field",name:"focusEnabled",static:!1,private:!1,access:{has:e=>"focusEnabled"in e,get:e=>e.focusEnabled,set:(e,s)=>{e.focusEnabled=s}},metadata:t},j,W),i(null,null,Y,{kind:"field",name:"prevZ",static:!1,private:!1,access:{has:e=>"prevZ"in e,get:e=>e.prevZ,set:(e,s)=>{e.prevZ=s}},metadata:t},K,X),i(null,null,H,{kind:"field",name:"markersData",static:!1,private:!1,access:{has:e=>"markersData"in e,get:e=>e.markersData,set:(e,s)=>{e.markersData=s}},metadata:t},J,Q),i(null,null,ee,{kind:"field",name:"prevMarkers",static:!1,private:!1,access:{has:e=>"prevMarkers"in e,get:e=>e.prevMarkers,set:(e,s)=>{e.prevMarkers=s}},metadata:t},te,se),i(null,null,ae,{kind:"field",name:"showAccessible",static:!1,private:!1,access:{has:e=>"showAccessible"in e,get:e=>e.showAccessible,set:(e,s)=>{e.showAccessible=s}},metadata:t},ie,re),i(null,null,ne,{kind:"field",name:"onlyAccessible",static:!1,private:!1,access:{has:e=>"onlyAccessible"in e,get:e=>e.onlyAccessible,set:(e,s)=>{e.onlyAccessible=s}},metadata:t},oe,le),i(null,null,ce,{kind:"field",name:"currentRouteLayer",static:!1,private:!1,access:{has:e=>"currentRouteLayer"in e,get:e=>e.currentRouteLayer,set:(e,s)=>{e.currentRouteLayer=s}},metadata:t},ue,de),i(null,null,Se,{kind:"field",name:"routeUnits",static:!1,private:!1,access:{has:e=>"routeUnits"in e,get:e=>e.routeUnits,set:(e,s)=>{e.routeUnits=s}},metadata:t},Le,Te),i(null,null,we,{kind:"field",name:"isGpsTrackingEnabled",static:!1,private:!1,access:{has:e=>"isGpsTrackingEnabled"in e,get:e=>e.isGpsTrackingEnabled,set:(e,s)=>{e.isGpsTrackingEnabled=s}},metadata:t},Ae,Me),t&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:t})}rootStore=r(this,a);cpTimeout;routeLines=r(this,l,[]);routeDistance=(r(this,f),r(this,S,null));currentPosition=(r(this,L),r(this,I,null));requestCompass=(r(this,w),r(this,M,!1));iconType=(r(this,C),r(this,F,0));tempToBooth=(r(this,G),r(this,U,null));defaultFrom=(r(this,N),r(this,q,null));focusEnabled=(r(this,$),r(this,j,!0));prevZ=(r(this,W),r(this,K,null));markersData=(r(this,X),r(this,J,{icons:[],markers:[]}));prevMarkers=(r(this,Q),r(this,te,[]));showAccessible=(r(this,se),r(this,ie,!!qe.getLines().find(t=>t.unaccessible)));onlyAccessible=(r(this,re),r(this,oe,!1));currentRouteLayer=(r(this,le),r(this,ue,null));constructor(t){r(this,Me),this.rootStore=t,this.focusEnabled=!window.location.search}get canFindLocation(){return!!this.defaultFrom||!!this.currentPosition}selectRoute(t,e=!0){e&&(y.list={type:"search",text:"",focused:!1}),!t?.from&&t?.to&&this.currentPosition&&(t.from=this.nearestBooth),t?.from&&t?.to&&t.from===t.to&&(t=null);let s=[];t?.from&&t?.to&&window.setTimeout(()=>{this.rootStore.showMap()},navigator.userAgent.toLowerCase().indexOf("android")>-1?400:50),t?.from?.visible&&s.push(t.from),t?.to?.visible&&(this.tempToBooth=null,s.push(t.to)),!t&&n.fp.onDirection&&n.fp.onDirection(null),setTimeout(()=>{this.rootStore.moveToList(s),y.details=t,t&&(!t.from||!t.to)&&n.showOverlay(),t?.to&&t?.from?.layer&&this.rootStore.layerStore.updateVisibility(t.from.layer,!0),!this.currentRouteLayer&&t?.from?.layer&&(this.currentRouteLayer=t?.from?.layer),e&&t?.from&&t?.to&&Je(He.ClickDirections,`${t?.from?"From "+t.from.name:""} ${t?.to?"To "+t.to.name:""}`)},200)}setStartPoint(t){const e=y.selectedRoute;if(e?.to&&!e?.from&&t){const s=new Route(t,e.to,e.waypoints);this.selectRoute(s)}}get pathLayers(){return n.routeStore.routeLines?.map(t=>t.p0.layer)?.filter((t,e,s)=>s.indexOf(t)===e).reverse().map((t,e)=>({id:e+1,layer:n.layerStore.findLayer(t)}))}get nearestBooth(){return this.getNearestBooth(this.currentPosition)}getNearestBooth(t){if(!t)return null;let e=this.rootStore.layerStore.findLayer(t.z);const s=t.lat&&t.lng?Ue(t,E.properties.config):t;return this.rootStore.boothStore.booths.filter(c=>T.mode===st.Default||!e?c.visible&&c.rect:c.rect&&(typeof t.z!="number"&&!t.z&&c.visible||e.name===c.layer?.name)).sort((c,u)=>Oe(s,{x:c.rect.cx,y:c.rect.cy})-Oe(s,{x:u.rect.cx,y:u.rect.cy}))[0]||null}setMarkers(t){this.markersData.markers=(t?.markers??[]).map(lt),this.markersData.icons=t?.icons??[]}selectMarker(t,e){const s=this.markersData.markers.find(u=>u.id===t);this.markersData.markers.forEach(u=>u.active=!1),s&&(s.active=!0);let c=n.layerStore.findLayer(s?.z);if(e&&s){const u=n.rendererService.renderer;return c&&!c?.visible&&T.updateVisibility(c,!0),u?u.controls.panTo(s.x,s.y):(We.warn("Renderer is not initialized. Cannot pan to marker."),Promise.resolve())}return Promise.resolve()}get selectedMarkers(){return this.markersData.markers.filter(t=>t.active)}get layers(){var t=[];return n.routeStore.routeLines?.map(e=>e.p0.layer).reverse().forEach(e=>{t.indexOf(e)===-1&&t.push(e)}),t.map(e=>n.layerStore.layers.find(s=>s.name===e))}clickRoute(t,e){window.__resett&&window.__resett(),this.rootStore.uiState.menu=null,y.list.type==="route-planner"&&(y.list={type:"search",text:"",focused:!1}),this.selectRoute(new Route(this.defaultFrom||t,e))}selectCurrentPosition(t,e=!0,s){clearTimeout(this.cpTimeout),t&&(t.x=b(t.x),t.y=b(t.y),t.lat=b(t.lat),t.lng=b(t.lng),it()||(t.z=null));const c=e&&this.rootStore.uiState.details&&!(this.rootStore.uiState.details instanceof Route),u=e&&!c&&(this.focusEnabled||this.prevZ!=t?.z);this.focusEnabled&&(this.focusEnabled=!1),this.prevZ=t?.z?.toString(),this.iconType=s?1:0;const _=t?ct(t):null;if(!_){this.currentPosition=null;return}const p=n.layerStore.findLayer(t.z),g=new CurrentPosition(_.x,_.y,p?.name||this.currentRouteLayer?.name,Qe(_),t.lat,t.lng),R=y.selectedRoute;let Ge=!this.routeLines?.length;if(p&&this.routeLines?.length&&(Ge=!!this.routeLines.find(v=>v.p0.layer===p.name||v.p1.layer===p.name)),u&&Ge){const v=n.rendererService.renderer;if(p&&!p?.visible&&T.updateVisibility(p,!0),!v){We.warn("Renderer is not initialized. Cannot pan to current position.");return}v.controls.panTo(g.x,g.y)}const Ye=(P.flags?.enableExperimentalRerouting||E?.properties?.config?.enableExperimentalRerouting)&&rt(g,this.routeLines)&&!!nt(g,Xe.booths,[R?.to]);if(e&&R&&Ye){const v=n.routeStore.getNearestBooth(g);n.routeStore.selectRoute(new Route(v,R?.to),!1)}this.currentPosition=g,this.gpsEnabled||(this.cpTimeout=setTimeout(()=>{this.currentPosition&&this.selectCurrentPosition(null,!1)},30*1e3))}findLocation(){if(this.canFindLocation){if(n.maplibreStore.showMaplibre){y.moveToLocation=!0;return}if(n.routeStore.currentPosition){const t=n.routeStore.currentPosition,e=z.fromCxcywh(t.x,t.y,100,100);let s;if(e.intersects(k))s=e;else{const _=Math.max(k.x1,Math.min(t.x,k.x2)),p=Math.max(k.y1,Math.min(t.y,k.y2)),g=Math.min(k.w,k.h)*.3,R=z.fromCxcywh(_,p,g,g).getIntersection(k);s=z.fromMultiple([e,R])}localStorage.getItem(at)==="false"&&(n.routeStore.requestCompass=!0),y.moveToRect=s;const u=n.layerStore.findLayer(n.routeStore.currentPosition?.z);u&&T.updateVisibility(u,!0)}else n.selectBooth(n.routeStore.defaultFrom)}}routeUnits=(r(this,de),r(this,Le,je));get routeInfo(){const t=this.routeDistance,e=this.routeUnits;return t?{distance:`${t}${e}`,units:e,time:Ve(t,$e(e))}:null}updateRoute(t,e){!t?.length&&!this.routeLines.length||(this.routeLines=t,this.updateRoutePoints())}updateRouteDistance(t){if(t==null)return;const e=et(),s=(e.getAttribute("units")||je).toLowerCase?.().trim(),c=e.getAttribute("fp-ver")?.startsWith("5")??!1;this.routeDistance=Math.round(t/(c?1:10)),this.routeUnits=s,this.updateRoutePoints()}updateRoutePoints(){const t=y.selectedRoute,e=this.routeDistance,s=this.routeUnits;n.fp.onDirection&&setTimeout(()=>{n.fp.onDirection({from:t?.from?{id:t.from.id,name:t.from.name,externalId:t.from.externalId,layer:{name:t.from?.layer?.name,description:t.from?.layer?.description}}:null,to:t?.to?{id:t.to.id,name:t.to.name,externalId:t.to.externalId,layer:{name:t.to.layer?.name,description:t.to.layer?.description}}:null,lines:this.routeLines,distance:`${e}${s}`,units:s,time:Ve(e,$e(s))})},200)}checkRoutes(){const t=tt(qe),e=n.boothStore.booths;console.info(`Route check started ${e.length}.... `);for(let s=0;s<e.length;s++){const c=e[s];for(let u=s+1;u<e.length;u++){const _=e[u];t.buildRoute(Ze(c),Ze(_)).lines.length||console.warn(`No route found from ${c.name} to ${_.name}`)}}console.info("Route check done....")}isGpsTrackingEnabled=(r(this,Te),r(this,Ae,!0));setGpsTrackingEnabled(t){this.isGpsTrackingEnabled=t}get gpsEnabled(){return P.autoTrackingGps&&this.isGpsTrackingEnabled&&!P.enableIPS}setOnlyAccessible(t){this.onlyAccessible=t}}})();export default ot;function lt(a){return{...a,x:b(a.x),y:b(a.y),lat:b(a.lat),lng:b(a.lng)}}function ct(a){let o=null,l=null;return E&&(o=E.properties.config),o&&a.x>=o.p0.x&&a.x<=o.p2.x&&a.y>=o.p0.y&&a.y<=o.p2.y?l={...a}:o&&Ne(a.lat)&&Ne(a.lng)?l=Ue(a,o):o||(l=a),l||null}export function findBooth(a){return n.boothStore.findBooth(a)||n.exhibitorStore.findExhibitor(a)?.booths[0]}export function findEntityByExternalId(a){const o=n.boothStore.boothByExternalId.get(a);if(o)return{type:"booth",entity:o};const l=n.exhibitorStore.exhibitorByExternalId.get(a);if(l)return{type:"exhibitor",entity:l}}export function separateExternalIds(a){const o=[],l=[];for(const f of a){const h=findEntityByExternalId(f);h&&(h.type==="booth"?o.push(f):l.push(f))}return{boothExternalIds:o,exhibitorExternalIds:l}}export function extractRoute(a,o,l){return new Route(findBooth(a)??n.routeStore.defaultFrom??null,findBooth(o),l?.map(f=>findBooth(f)))}export class Route{from;to;waypoints;constructor(o,l,f){this.from=o,this.to=l,this.waypoints=f,this.waypoints=f?.filter(h=>h&&h.id!==o?.id&&h.id!==l?.id)}}export class CurrentPosition extends Ke{x;y;z;angle;lat;lng;constructor(o,l,f,h,S,L){super(o,l),this.x=o,this.y=l,this.z=f,this.angle=h,this.lat=S,this.lng=L}}
@@ -1 +1 @@
1
- import O from"color";import*as N from"d3-selection";import M from"../../core/Rect";import k from"../../data";import{getLayerSvg as U,getTrianglesFromFpPaths as X}from"../../data/svg";import{getNextId as D}from"../../tools/id";import A from"../../tools/logger";import w from"../../tools/settings";import{generateUniqueSlug as F}from"../../tools/slug";import{sortByName as V}from"../../utils";import{extractMetaFromString as z}from"../../utils/extractMetaFromString";import{RegularBooth as C,SpecialBooth as P}from"../BoothStore";import{Exhibitor as T}from"../ExhibitorStore";import{uiState as $}from"../index";import{autorun as G}from"mobx";import{getStorage as W,saveStorage as H}from"../../utils/entity-storage";const v=new Map,S=[];export function iniAllBooths(e){const d=parseInt(q("copy_exh"));for(const r of k.booths||[]){const{text:l,meta:h}=z(r.name);r.meta=h;const o=r.special?new P:new C;Object.assign(o,r),o.slug=F(o.name),v.set(o.name.toLowerCase(),o),Q(o);const m=o;m.exhibitors=[];for(const p of r.exhibitors){const u=e.exhibitorStore.exhibitorById.get(p);u&&(m.exhibitors.push(u),d&&_(u,m,d),u.booths.push(m))}!r.exhibitors.length&&d&&_(null,m,d),o.schedule=e.eventStore.eventItems.filter(p=>p.boothId===o.id),o.name=l,S.push(o)}S.sort((r,l)=>r.name.localeCompare(l.name,void 0,{sensitivity:"base",numeric:!0}));for(const r of e.exhibitorStore.exhibitors)V(r.booths);e.boothStore.booths=S,delete k.booths,A.log("initBooths",e.boothStore.booths.length),Y(e)}function Y(e){const l=(W("bookmarked").booths||[]).filter(h=>{const o=e.boothStore.boothById.get(h);return o&&o.exhibitors.length===0});e.boothStore.replaceBookmarked(l),G(()=>{const h=W("bookmarked"),o=e.boothStore.booths.filter(m=>m.exhibitors.length===0&&m.bookmarkedDirectly).map(m=>m.id);H("bookmarked",{exhibitors:h.exhibitors,events:h.events,speakers:h.speakers,booths:o})})}const L=[];export default function j(e,d){const r=d.name;if(L.indexOf(r)>-1)return[];L.push(r);const{boothStore:l,layerStore:h}=e,o=[],m=!!window.__fpLayers,p=N.select(U(d)).selectAll(`[data-layer='${r}'] > [data-tagname='efp-booth'], [data-layer='${r}'] > g[id^=b], [data-layer='${r}'] > rect[id^=b]`).nodes();for(const a of p){const B=a.closest("svg > [data-layer]").attributes["data-layer"]?.value;if(!B)continue;let i,I=!1;a.tagName==="rect"?i=a:(i=Array.from(a.children).find(s=>s.tagName==="rect"),I=i===a.firstElementChild);const g=(a.id||a.getAttribute("data-name")).substring(1).toLowerCase();let t=v.get(g),n=t instanceof C?t:null,E=t instanceof P?t:null;if(t||(A.error("SVG booth rect not found in __data:",g),t=n=new C,t.id=D(),t.name=g.toUpperCase(),t.slug=F(g),t.error=!0,t.exhibitors=[],v.set(g,t)),o.push(t),t.layer=m?h.layers.find(s=>s.name===B):null,t.borderColor=i?.getAttribute("stroke")||i?.style.stroke||w.boothBorderColor||"#FFFFFF",t.borderWidth=parseFloat(i?.getAttribute("stroke-width")||i?.style.strokeWidth),isNaN(t.borderWidth)&&(t.borderWidth=l.borderWidth),!$.heatmap)t.labelColor=i?.getAttribute("data-label-color");else{const s=e.heatmapStore.getTotalClicksByBooth(t),c=O(e.heatmapStore.getColorByClicks(s));t.labelColor=c.darken(.3).isLight()?"#555":"#fff"}t.rect=i?M.fromSvgRectElement(i):null,t.noLabels=!!i?.dataset.nolabel||i?.id.startsWith("no"),n?(n.availColor=a.getAttribute("data-avail-color")||i?.getAttribute("data-avail-color")||n.availColor,n.soldColor=a.getAttribute("data-sold-color")||i?.getAttribute("data-sold-color")||n.soldColor,n.holdColor=a.getAttribute("data-hold-color")||i?.getAttribute("data-hold-color")||n.holdColor,n.size=k.dimensionless?null:n.size||a.getAttribute("data-size"),n.status==="reserved"?n.reserved=!0:n.status==="onhold"&&(n.onHold=!0)):E.color=(parseInt(i.getAttribute("data-poi-type"))>0?i.style?.fill:a.getAttribute("data-color")||i.getAttribute("data-color"))||E.color;const y=i?.getAttribute("transform");if(y){const s=y.match(/translate\(([-0-9.]+) ([-0-9.]+)\) rotate\(([-0-9.]+)\)/);if(s){const f=parseFloat(s[3]);t.rotate=-f*Math.PI/180}else{const f=y.match(/rotate\(([-0-9.]+).*\)/);if(f){const b=parseFloat(f[1]);t.rotate=-b*Math.PI/180}else{const b=y.match(/matrix\(\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*\)/);b&&(t.rotate=Math.asin(-parseFloat(b[2])))}}Math.abs(t.rotate*180/Math.PI)>180&&(t.rotate=t.rotate-90*Math.PI/180,t.rect=t.rect.getRotated90())}if(a.tagName==="g"){t.paths=[],t.pathsWithRect=I;var u=[];for(const s of N.select(a).selectAll("path, rect").nodes())if(s.tagName==="path"){const c=s;if(c.tagName!=="path")continue;const f=parseInt(c.getAttribute("data-index")),b=!!c.getAttribute("data-unblinking");t.paths.push({index:f,color:c.style.fill,unblinking:b}),i||u.push(...X(f,r))}if(u.length){let s=Number.MAX_VALUE,c=Number.MAX_VALUE,f=Number.MIN_VALUE,b=Number.MIN_VALUE;u.forEach(R=>{R.forEach(x=>{s=Math.min(s,x[0]),c=Math.min(c,x[1]),f=Math.max(f,x[0]),b=Math.max(b,x[1])})}),t.rect=M.fromXywh(s,c,f-s,b-c),t.noLabels=!0}}}for(const a of o)a.rect?a.store=l:(A.error("__data booth not found in SVG:",a.name,a),o.splice(o.indexOf(a),1));return o}function q(e){return new URLSearchParams(window.location.search).get(e)}function _(e,d,r){let l=new T;l.name="EXHIBITOR NAME",l.slug="exhibitor-name",l.booths=[],l=e||l;for(let h=0;h<r;h++){const o={...l,id:Date.now()};d.exhibitors.push(o)}}function Q(e){w.EXPO==="cbresupplypartner"&&e instanceof C&&!e.availColor&&e.type&&(e.type.indexOf("Premium A - 2m height restriction Passport")!==-1?e.availColor="#939393":e.type.indexOf("No free-standing")!==-1?e.availColor="#BA3DC8":e.type.endsWith("Passport")?e.availColor="#939393":e.type.startsWith("Premium A - 2m")?e.availColor="#FF9E4E":e.type.startsWith("Premium A - 4m")?e.availColor="#EA4335":e.type.startsWith("Premium B - 2m")?e.availColor="#523BC0":e.type.startsWith("Premium C - 2.4m")&&(e.availColor="#3ECC78"))}
1
+ import R from"color";import*as M from"d3-selection";import N from"../../core/Rect";import v from"../../data";import{getLayerSvg as X,getTrianglesFromFpPaths as U}from"../../data/svg";import{getNextId as D}from"../../tools/id";import S from"../../tools/logger";import w from"../../tools/settings";import{generateUniqueSlug as F}from"../../tools/slug";import{sortByName as O}from"../../utils";import{extractMetaFromString as V}from"../../utils/extractMetaFromString";import{RegularBooth as A,SpecialBooth as P}from"../BoothStore";import{Exhibitor as z}from"../ExhibitorStore";import{uiState as T}from"../index";import{autorun as $}from"mobx";import{getStorage as W,saveStorage as G}from"../../utils/entity-storage";const C=new Map,k=[];export function iniAllBooths(e){C.clear(),k.length=0;const d=parseInt(j("copy_exh"));for(const i of v.booths||[]){const{text:l,meta:h}=V(i.name);i.meta=h;const o=i.special?new P:new A;Object.assign(o,i),o.slug=F(o.name),C.set(o.name.toLowerCase(),o),q(o);const m=o;m.exhibitors=[];for(const p of i.exhibitors){const u=e.exhibitorStore.exhibitorById.get(p);u&&(m.exhibitors.push(u),d&&L(u,m,d),u.booths.push(m))}!i.exhibitors.length&&d&&L(null,m,d),o.schedule=e.eventStore.eventItems.filter(p=>p.boothId===o.id),o.name=l,k.push(o)}k.sort((i,l)=>i.name.localeCompare(l.name,void 0,{sensitivity:"base",numeric:!0}));for(const i of e.exhibitorStore.exhibitors)O(i.booths);e.boothStore.booths=k,delete v.booths,S.log("initBooths",e.boothStore.booths.length),H(e)}function H(e){const l=(W("bookmarked").booths||[]).filter(h=>{const o=e.boothStore.boothById.get(h);return o&&o.exhibitors.length===0});e.boothStore.replaceBookmarked(l),$(()=>{const h=W("bookmarked"),o=e.boothStore.booths.filter(m=>m.exhibitors.length===0&&m.bookmarkedDirectly).map(m=>m.id);G("bookmarked",{exhibitors:h.exhibitors,events:h.events,speakers:h.speakers,booths:o})})}export default function Y(e,d){const i=d.name,{boothStore:l,layerStore:h}=e,o=[],m=!!window.__fpLayers,p=M.select(X(d)).selectAll(`[data-layer='${i}'] > [data-tagname='efp-booth'], [data-layer='${i}'] > g[id^=b], [data-layer='${i}'] > rect[id^=b]`).nodes();for(const r of p){const B=r.closest("svg > [data-layer]").attributes["data-layer"]?.value;if(!B)continue;let a,I=!1;r.tagName==="rect"?a=r:(a=Array.from(r.children).find(s=>s.tagName==="rect"),I=a===r.firstElementChild);const g=(r.id||r.getAttribute("data-name")).substring(1).toLowerCase();let t=C.get(g),n=t instanceof A?t:null,E=t instanceof P?t:null;if(t||(S.error("SVG booth rect not found in __data:",g),t=n=new A,t.id=D(),t.name=g.toUpperCase(),t.slug=F(g),t.error=!0,t.exhibitors=[],C.set(g,t)),o.push(t),t.layer=m?h.layers.find(s=>s.name===B):null,t.borderColor=a?.getAttribute("stroke")||a?.style.stroke||w.boothBorderColor||"#FFFFFF",t.borderWidth=parseFloat(a?.getAttribute("stroke-width")||a?.style.strokeWidth),isNaN(t.borderWidth)&&(t.borderWidth=l.borderWidth),!T.heatmap)t.labelColor=a?.getAttribute("data-label-color");else{const s=e.heatmapStore.getTotalClicksByBooth(t),c=R(e.heatmapStore.getColorByClicks(s));t.labelColor=c.darken(.3).isLight()?"#555":"#fff"}t.rect=a?N.fromSvgRectElement(a):null,t.noLabels=!!a?.dataset.nolabel||a?.id.startsWith("no"),n?(n.availColor=r.getAttribute("data-avail-color")||a?.getAttribute("data-avail-color")||n.availColor,n.soldColor=r.getAttribute("data-sold-color")||a?.getAttribute("data-sold-color")||n.soldColor,n.holdColor=r.getAttribute("data-hold-color")||a?.getAttribute("data-hold-color")||n.holdColor,n.size=v.dimensionless?null:n.size||r.getAttribute("data-size"),n.status==="reserved"?n.reserved=!0:n.status==="onhold"&&(n.onHold=!0)):E.color=(parseInt(a.getAttribute("data-poi-type"))>0?a.style?.fill:r.getAttribute("data-color")||a.getAttribute("data-color"))||E.color;const y=a?.getAttribute("transform");if(y){const s=y.match(/translate\(([-0-9.]+) ([-0-9.]+)\) rotate\(([-0-9.]+)\)/);if(s){const f=parseFloat(s[3]);t.rotate=-f*Math.PI/180}else{const f=y.match(/rotate\(([-0-9.]+).*\)/);if(f){const b=parseFloat(f[1]);t.rotate=-b*Math.PI/180}else{const b=y.match(/matrix\(\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*\)/);b&&(t.rotate=Math.asin(-parseFloat(b[2])))}}Math.abs(t.rotate*180/Math.PI)>180&&(t.rotate=t.rotate-90*Math.PI/180,t.rect=t.rect.getRotated90())}if(r.tagName==="g"){t.paths=[],t.pathsWithRect=I;var u=[];for(const s of M.select(r).selectAll("path, rect").nodes())if(s.tagName==="path"){const c=s;if(c.tagName!=="path")continue;const f=parseInt(c.getAttribute("data-index")),b=!!c.getAttribute("data-unblinking");t.paths.push({index:f,color:c.style.fill,unblinking:b}),a||u.push(...U(f,i))}if(u.length){let s=Number.MAX_VALUE,c=Number.MAX_VALUE,f=-Number.MAX_VALUE,b=-Number.MAX_VALUE;u.forEach(_=>{_.forEach(x=>{s=Math.min(s,x[0]),c=Math.min(c,x[1]),f=Math.max(f,x[0]),b=Math.max(b,x[1])})}),t.rect=N.fromXywh(s,c,f-s,b-c),t.noLabels=!0}}}for(const r of o)r.rect?r.store=l:(S.error("__data booth not found in SVG:",r.name,r),o.splice(o.indexOf(r),1));return o}function j(e){return new URLSearchParams(window.location.search).get(e)}function L(e,d,i){let l=new z;l.name="EXHIBITOR NAME",l.slug="exhibitor-name",l.booths=[],l=e||l;for(let h=0;h<i;h++){const o={...l,id:Date.now()};d.exhibitors.push(o)}}function q(e){w.EXPO==="cbresupplypartner"&&e instanceof A&&!e.availColor&&e.type&&(e.type.indexOf("Premium A - 2m height restriction Passport")!==-1?e.availColor="#939393":e.type.indexOf("No free-standing")!==-1?e.availColor="#BA3DC8":e.type.endsWith("Passport")?e.availColor="#939393":e.type.startsWith("Premium A - 2m")?e.availColor="#FF9E4E":e.type.startsWith("Premium A - 4m")?e.availColor="#EA4335":e.type.startsWith("Premium B - 2m")?e.availColor="#523BC0":e.type.startsWith("Premium C - 2.4m")&&(e.availColor="#3ECC78"))}
@@ -144,6 +144,15 @@ export interface FloorPlanOptions {
144
144
  onLeaveEvent?: () => void;
145
145
  disableRuntimeAlerts?: boolean;
146
146
  viewerMode?: boolean;
147
+ maplibre?: MaplibreOptions;
148
+ }
149
+ export interface MaplibreOptions {
150
+ /** MapLibre style URL. Offline packages point this to a local style JSON file. */
151
+ styleUrl?: string;
152
+ /** Inline MapLibre style object. */
153
+ style?: object;
154
+ /** Allows MapLibre to run without navigator.onLine when local map assets are bundled. */
155
+ offline?: boolean;
147
156
  }
148
157
  export interface Layer {
149
158
  name: string;
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ export interface DraggableProps {
3
+ children: React.ReactNode;
4
+ className?: string;
5
+ style?: React.CSSProperties;
6
+ }
7
+ declare const Draggable: ({ children, className, style }: DraggableProps) => React.JSX.Element;
8
+ export default Draggable;
9
+ //# sourceMappingURL=Draggable.d.ts.map
@@ -0,0 +1 @@
1
+ import{jsx as R}from"react/jsx-runtime";import{useEffect as H,useState as d,useRef as P}from"react";import{isInteractiveTarget as p}from"../shared/interactive";const W=({children:y,className:w,style:E})=>{const[n,c]=d({x:0,y:0}),[o,a]=d(!1),[r,h]=d({x:0,y:0}),u=P(null),M=t=>{p(t.target)||(a(!0),h({x:t.clientX-n.x,y:t.clientY-n.y}),t.preventDefault())},m=t=>{if(!o)return;const e=t.clientX-r.x,s=t.clientY-r.y;c({x:e,y:s})},l=()=>{f()},L=t=>{if(p(t.target))return;const e=t.touches[0];a(!0),h({x:e.clientX-n.x,y:e.clientY-n.y})},g=t=>{if(!o)return;const e=t.touches[0],s=e.clientX-r.x,i=e.clientY-r.y;c({x:s,y:i})},v=()=>{f()},f=()=>{if(!u.current)return;const t=u.current.getBoundingClientRect(),e=window.innerWidth,s=window.innerHeight,i=t.width/4,x=t.height/4,D=Math.max(0,0-t.left),X=Math.max(0,t.right-e),Y=Math.max(0,0-t.top),b=Math.max(0,t.bottom-s),T=D>i||X>i,S=Y>x||b>x;(T||S)&&c({x:0,y:0}),a(!1)};return H(()=>{if(o)return document.addEventListener("mousemove",m),document.addEventListener("mouseup",l),document.addEventListener("touchmove",g,{passive:!1}),document.addEventListener("touchend",v),()=>{document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",l),document.removeEventListener("touchmove",g),document.removeEventListener("touchend",v)}},[o,r]),R("div",{ref:u,className:w,style:{...E,transform:`translate(${n.x}px, ${n.y}px)`,cursor:o?"grabbing":"grab"},onMouseDown:M,onTouchStart:L,children:y})};export default W;
@@ -0,0 +1,3 @@
1
+ export { default } from "./Draggable";
2
+ export type { DraggableProps } from "./Draggable";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ export{default}from"./Draggable";
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import "./HeatmapLegend.scss";
3
+ export interface HeatmapLegendProps {
4
+ min: number;
5
+ max: number;
6
+ palette: string[];
7
+ ariaLabel: string;
8
+ className?: string;
9
+ style?: React.CSSProperties;
10
+ }
11
+ declare const HeatmapLegend: ({ min, max, palette, ariaLabel, className, style }: HeatmapLegendProps) => React.JSX.Element;
12
+ export default HeatmapLegend;
13
+ //# sourceMappingURL=HeatmapLegend.d.ts.map