@expofp/floorplan 3.11.11 → 3.12.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 (317) hide show
  1. package/dist/browser/{Button-DmRjgZlq.js → Button-C5CmZ0so.js} +6 -6
  2. package/dist/browser/CookieConsent-kl_B6sH5.js +38 -0
  3. package/dist/browser/{Debug-aXNyyjt9.js → Debug-DymHiO2Z.js} +14 -14
  4. package/dist/browser/{Demo-Br_48fiP.js → Demo-5tRIgVJF.js} +14 -14
  5. package/dist/browser/{Free-CPqp0AlV.js → Free-hYQaAEbK.js} +16 -16
  6. package/dist/browser/{Gallery-DybTjssU.js → Gallery-D10tiZuW.js} +24 -24
  7. package/dist/browser/{GpsLoader-4QcLlh63.js → GpsLoader-CNkUVJdS.js} +51 -50
  8. package/dist/browser/{KioskStore-CwHiYm_-.js → KioskStore-2WAOxGM0.js} +31 -31
  9. package/dist/browser/{MaplibreAdapter-Cts8OaYm.js → MaplibreAdapter-B_tNIXx4.js} +2360 -2331
  10. package/dist/browser/{ModalContainer-BG7y_r6K.js → ModalContainer-CckyeoUG.js} +13 -13
  11. package/dist/browser/{PermissionNotice-DwlyTCP5.js → PermissionNotice-qetBrmIY.js} +7 -7
  12. package/dist/browser/{SetKioskMode-CvWZVqNw.js → SetKioskMode-BOjaqczc.js} +9 -9
  13. package/dist/browser/ShowKiosk-CcQHeM8K.js +33 -0
  14. package/dist/browser/{TouchHand-RuKsL9Wb.js → TouchHand-DKpxmOwz.js} +5 -5
  15. package/dist/browser/{ViewerMenuPanel-Dhd7sWsi.js → ViewerMenuPanel-HULfvF54.js} +25 -25
  16. package/dist/browser/{add-debug-secret-listener-BRMVj2bX.js → add-debug-secret-listener-BTGIVZFY.js} +1 -1
  17. package/dist/browser/{boolean-editor-DpmP-U1q.js → boolean-editor-oT7I3D0U.js} +10 -10
  18. package/dist/browser/{bootIntercom-C1k788Mx.js → bootIntercom-YnsJPGCs.js} +3 -3
  19. package/dist/browser/{booth-by-xy-CP-xbS2r.js → booth-by-xy-DTknn14w.js} +292 -295
  20. package/dist/browser/bundle.json +78 -63
  21. package/dist/browser/{classnames-BkI7JKtT.js → classnames-VfuHc9uB.js} +2 -2
  22. package/dist/browser/{client-C3mnANrs.js → client-Bevofhdz.js} +5 -5
  23. package/dist/browser/{components-Cg-q6o6G.js → components-COUCtdev.js} +1369 -1316
  24. package/dist/browser/{debug-overlay-BtQ-2fHJ.js → debug-overlay-BLN24Eyb.js} +415 -415
  25. package/dist/browser/{debug-ui-CjzERnaO.js → debug-ui-BT7Ddvoj.js} +7 -7
  26. package/dist/browser/{dist-Bn99_f_N.js → dist-CWBtHMZR.js} +6 -6
  27. package/dist/browser/{dist-Bn-20xtu.js → dist-CtKSG8GG.js} +4 -4
  28. package/dist/browser/{dist-DO20gNXa.js → dist-saTnlhyc.js} +7 -7
  29. package/dist/browser/{browser-BO13Zt0K.js → efp-debug-init-CYoM0s-a.js} +61 -14
  30. package/dist/browser/enum-editor-vF4eKelT.js +34 -0
  31. package/dist/browser/{es5-Dvav8ihy.js → es5-COzmRHZr.js} +2 -2
  32. package/dist/browser/{event-not-found-CC0X5cEh.js → event-not-found-BZkFh-P9.js} +1 -1
  33. package/dist/browser/{exports-D1Nac_lG.js → exports-BsqJX0o4.js} +1 -1
  34. package/dist/browser/{favicon-Bid1H1Jx.js → favicon-BBgsGFil.js} +1 -1
  35. package/dist/browser/{fetch-retry.umd-ETXiLKL-.js → fetch-retry.umd-BFTNSvNa.js} +2 -2
  36. package/dist/browser/{flex-B6lY7ZeN.js → flex-DnOM12q-.js} +6 -6
  37. package/dist/browser/{floorplan.loader-g70WUpYB.js → floorplan.loader-DuVsbJsr.js} +893 -901
  38. package/dist/browser/floorplan.ready-B2SvQNh9.js +1326 -0
  39. package/dist/browser/{fuse-BlXhXkUq.js → fuse-Ddn6vCOL.js} +2 -2
  40. package/dist/browser/i18n-D9dsV3GV.js +8659 -0
  41. package/dist/browser/index.js +49 -117
  42. package/dist/browser/{index.module-X_SYTiEf.js → index.module-CFTe1PiT.js} +23 -23
  43. package/dist/browser/integrateKiosk-vlZ9-8EP.js +28 -0
  44. package/dist/browser/{is-webview-zoAn2Bb4.js → is-webview-SfodrdWn.js} +1 -1
  45. package/dist/browser/{jsx-runtime-uErsjC2N.js → jsx-runtime-DEIf9CUU.js} +2 -2
  46. package/dist/browser/{lib-HG4Gm1_q.js → lib-CCkkeprZ.js} +5 -5
  47. package/dist/browser/loadImage-C356B0zk.js +58 -0
  48. package/dist/browser/locales/ru.json +1 -1
  49. package/dist/browser/{logDeviceInfo-DHyhFPeb.js → logDeviceInfo-UnfHYhqR.js} +9 -9
  50. package/dist/browser/{main-CTeBxXij.js → main-JnTe8DvY.js} +1 -1
  51. package/dist/browser/mobx-DPek3UBx.js +24 -0
  52. package/dist/browser/optional-boolean-editor-HEZXOpAy.js +20 -0
  53. package/dist/browser/optional-enum-editor-DpN8qtqv.js +34 -0
  54. package/dist/browser/optional-string-editor-iR5VHFAR.js +30 -0
  55. package/dist/browser/{particles.min-aU8uhhyJ.js → particles.min-BWlVGdrr.js} +2 -2
  56. package/dist/browser/{prop-types-90IFj1US.js → prop-types-DA-Iew4C.js} +2 -2
  57. package/dist/browser/{react-Cr4w3-kF.js → react-C02q0n7M.js} +2 -2
  58. package/dist/browser/{react-dom-BqelOkAi.js → react-dom-BV1hX9nO.js} +4 -4
  59. package/dist/browser/reset-all-settings-BQgeIRam.js +190 -0
  60. package/dist/browser/{rolldown-runtime-CMis-gOy.js → rolldown-runtime-DYSU24gn.js} +1 -1
  61. package/dist/browser/{enum-editor-CDtermvp.js → select-D0S5iMvJ.js} +261 -283
  62. package/dist/browser/{settings-BGmwy5RM.js → settings-Dw78gtQ_.js} +3 -3
  63. package/dist/browser/{settings-item-CDNsKf0A.js → settings-item-BSR8Iz1R.js} +7 -7
  64. package/dist/browser/{store-CcwBnHB2.js → store-DxRBdgZM.js} +7719 -7991
  65. package/dist/browser/string-editor-BwtRnquZ.js +30 -0
  66. package/dist/browser/text-field-D5x33kIn.js +88 -0
  67. package/dist/browser/{theme-C1rg17tG.js → theme-uaffdJE1.js} +9 -9
  68. package/dist/browser/ui-jO3fquPn.js +43 -0
  69. package/dist/browser/{useRenderTarget-gmu3Wzj0.js → useRenderTarget-NdsPPF5u.js} +5 -5
  70. package/dist/esm/components/Booth/Booth.js +1 -1
  71. package/dist/esm/components/EntityListRow.js +1 -1
  72. package/dist/esm/components/Exhibitor.js +1 -1
  73. package/dist/esm/components/Kiosk/ShowKiosk.js +1 -1
  74. package/dist/esm/components/LanguageRowContainer.d.ts +1 -0
  75. package/dist/esm/components/Layout.d.ts +2 -1
  76. package/dist/esm/components/Layout.js +1 -1
  77. package/dist/esm/components/LogoOverlay.js +1 -1
  78. package/dist/esm/components/Map/Map.js +1 -1
  79. package/dist/esm/components/Map/drawing/config/config-bg.d.ts +1 -1
  80. package/dist/esm/components/Map/drawing/config/config-booth-badge.js +1 -1
  81. package/dist/esm/components/Map/drawing/config/config-booth-bg.d.ts +1 -1
  82. package/dist/esm/components/Map/drawing/config/config-booth-bg.js +1 -1
  83. package/dist/esm/components/Map/drawing/config/config-load-layer.js +1 -1
  84. package/dist/esm/components/Map/drawing/config/loadBoothsImages.js +1 -1
  85. package/dist/esm/components/Maplibre/MaplibreAdapter.js +1 -1
  86. package/dist/esm/components/Maplibre/MaplibreWrapper.js +1 -1
  87. package/dist/esm/components/Maplibre/utils/resolve-map-style.d.ts +15 -0
  88. package/dist/esm/components/Maplibre/utils/resolve-map-style.js +1 -0
  89. package/dist/esm/components/Menu.d.ts +3 -2
  90. package/dist/esm/components/Menu.js +1 -1
  91. package/dist/esm/components/OverlayContainer.d.ts +2 -1
  92. package/dist/esm/components/OverlayContainer.js +1 -1
  93. package/dist/esm/components/Ws.js +1 -1
  94. package/dist/esm/constants.d.ts +7 -13
  95. package/dist/esm/constants.js +1 -1
  96. package/dist/esm/data/fp-payloads.d.ts +27 -0
  97. package/dist/esm/data/fp-payloads.js +1 -0
  98. package/dist/esm/data/fpGeo.js +1 -1
  99. package/dist/esm/data/index.d.ts +8 -2
  100. package/dist/esm/data/index.js +1 -1
  101. package/dist/esm/data/svg.d.ts +4 -1
  102. package/dist/esm/data/svg.js +1 -1
  103. package/dist/esm/floorplan.loader.d.ts +13 -4
  104. package/dist/esm/floorplan.loader.js +1 -1
  105. package/dist/esm/floorplan.ready.d.ts +8 -0
  106. package/dist/esm/floorplan.ready.js +1 -1
  107. package/dist/esm/index.d.ts +0 -1
  108. package/dist/esm/index.js +1 -1
  109. package/dist/esm/intercom/shouldLoad.d.ts +2 -2
  110. package/dist/esm/intercom/shouldLoad.js +1 -1
  111. package/dist/esm/load-dev.d.ts +44 -0
  112. package/dist/esm/load-dev.js +1 -0
  113. package/dist/esm/load.d.ts +3 -3
  114. package/dist/esm/load.js +3 -3
  115. package/dist/esm/renderer/engine-core/fonts.js +1 -1
  116. package/dist/esm/services/URLFilterManager.d.ts +15 -0
  117. package/dist/esm/services/URLFilterManager.js +1 -1
  118. package/dist/esm/services/multi-slug.d.ts +20 -0
  119. package/dist/esm/services/multi-slug.js +1 -0
  120. package/dist/esm/services/url-dispatch.d.ts +24 -0
  121. package/dist/esm/services/url-dispatch.js +1 -0
  122. package/dist/esm/services/url-sync.d.ts +36 -0
  123. package/dist/esm/services/url-sync.js +1 -0
  124. package/dist/esm/store/BoothStore.d.ts +2 -1
  125. package/dist/esm/store/ExhibitorStore.d.ts +3 -2
  126. package/dist/esm/store/ExhibitorStore.js +1 -1
  127. package/dist/esm/store/LayerStore.js +1 -1
  128. package/dist/esm/store/MaplibreStore.js +1 -1
  129. package/dist/esm/store/PoiTypeStore.d.ts +1 -1
  130. package/dist/esm/store/SearchStore.js +1 -1
  131. package/dist/esm/store/UIState.d.ts +1 -5
  132. package/dist/esm/store/UIState.js +1 -1
  133. package/dist/esm/store/init/init-bookmarks.d.ts +2 -0
  134. package/dist/esm/store/init/init-booths.js +1 -1
  135. package/dist/esm/store/init/init-categories.js +1 -1
  136. package/dist/esm/store/init/init-events.js +1 -1
  137. package/dist/esm/store/init/init-exhibitors.js +1 -1
  138. package/dist/esm/store/init/init-layers.js +1 -1
  139. package/dist/esm/store/types.d.ts +2 -1
  140. package/dist/esm/tools/event-not-found.d.ts +4 -3
  141. package/dist/esm/tools/gtag.d.ts +3 -2
  142. package/dist/esm/tools/gtag.js +1 -1
  143. package/dist/esm/tools/handleDebugMode.d.ts +17 -0
  144. package/dist/esm/tools/handleDebugMode.js +1 -1
  145. package/dist/esm/tools/loaders.d.ts +0 -2
  146. package/dist/esm/tools/loaders.js +1 -1
  147. package/dist/esm/tools/rebookingUrl.js +1 -1
  148. package/dist/esm/tools/reset.js +1 -1
  149. package/dist/esm/tools/settings.js +1 -1
  150. package/dist/esm/tools/track-event.js +1 -1
  151. package/dist/esm/types/drawing.types.d.ts +18 -0
  152. package/dist/esm/types.d.ts +52 -38
  153. package/dist/esm/utils/areLayersEnabled.js +1 -1
  154. package/dist/esm/utils/camera-map-settings.d.ts +20 -0
  155. package/dist/esm/utils/camera-map-settings.js +1 -0
  156. package/dist/esm/utils/customCommands.js +1 -1
  157. package/dist/esm/utils/getLogoUrl.d.ts +8 -1
  158. package/dist/esm/utils/getLogoUrl.js +1 -1
  159. package/dist/esm/utils/heatmap-enabled.d.ts +13 -0
  160. package/dist/esm/utils/heatmap-enabled.js +1 -0
  161. package/dist/esm/utils/i18n.js +1 -1
  162. package/dist/esm/utils/imageloader.js +1 -1
  163. package/dist/esm/utils/is-debug.d.ts +0 -8
  164. package/dist/esm/utils/is-debug.js +1 -1
  165. package/dist/esm/utils/legacy-storage-keys.d.ts +16 -0
  166. package/dist/esm/utils/legacy-storage-keys.js +1 -0
  167. package/dist/esm/utils/loadCustomCss.d.ts +2 -2
  168. package/dist/esm/utils/loadCustomCss.js +1 -1
  169. package/dist/esm/utils/mapEntity.d.ts +1 -0
  170. package/dist/esm/utils/preview-exhibitor.d.ts +1 -1
  171. package/dist/esm/wayfinding/adapters/arbitraryPoint.d.ts +1 -1
  172. package/dist/esm/wayfinding/adapters/arbitraryPoint.js +1 -1
  173. package/dist/esm/wayfinding/adapters/boothToEndpoint.d.ts +4 -4
  174. package/dist/esm/wayfinding/adapters/canvasIconProvider.d.ts +1 -1
  175. package/dist/esm/wayfinding/adapters/floorContext.d.ts +1 -1
  176. package/dist/esm/wayfinding/adapters/graphDataSource.d.ts +2 -2
  177. package/dist/esm/wayfinding/adapters/graphDataSource.js +1 -1
  178. package/dist/esm/wayfinding/adapters/positionInput.d.ts +8 -7
  179. package/dist/esm/wayfinding/adapters/positionInput.js +1 -1
  180. package/dist/esm/wayfinding/bindMobxReactions.d.ts +10 -23
  181. package/dist/esm/wayfinding/bindMobxReactions.js +1 -1
  182. package/dist/esm/wayfinding/createWayfinding.d.ts +1 -1
  183. package/dist/esm/wayfinding/createWayfinding.js +1 -1
  184. package/dist/esm/wayfinding/handlers/kioskHandler.d.ts +3 -3
  185. package/dist/esm/wayfinding/handlers/kioskHandler.js +1 -1
  186. package/dist/esm/wayfinding/handlers/yahHandler.d.ts +3 -4
  187. package/dist/esm/wayfinding/handlers/yahHandler.js +1 -1
  188. package/dist/esm/wayfinding/index.d.ts +4 -7
  189. package/dist/esm/wayfinding/index.js +1 -1
  190. package/dist/esm/wayfinding/storePorts.d.ts +60 -0
  191. package/package.json +9 -5
  192. package/dist/browser/CookieConsent-BJLQ1IVh.js +0 -38
  193. package/dist/browser/ShowKiosk-B60doTCj.js +0 -28
  194. package/dist/browser/efp-debug-init-Dif87fzy.js +0 -42
  195. package/dist/browser/floorplan.ready-CZQeXSCk.js +0 -1406
  196. package/dist/browser/i18n-CU-BJOBJ.js +0 -3942
  197. package/dist/browser/loadImage-vQZ4dq8v.js +0 -121
  198. package/dist/browser/mobx-Cnw3_TUT.js +0 -24
  199. package/dist/browser/reset-all-settings-O_33LwUw.js +0 -141
  200. package/dist/browser/string-editor-01VxR0gn.js +0 -108
  201. package/dist/browser/ui-gZWduhVn.js +0 -43
  202. package/dist/esm/_NEW_types.d.ts +0 -6
  203. package/dist/esm/_NEW_types.js +0 -1
  204. package/dist/esm/_misc_to_move/manifest.d.ts +0 -14
  205. package/dist/esm/_misc_to_move/ref.d.ts +0 -6
  206. package/dist/esm/data/Flags.d.ts +0 -23
  207. package/dist/esm/data/Flags.js +0 -1
  208. package/dist/esm/data/validate-data.d.ts +0 -3
  209. package/dist/esm/data/validate-data.js +0 -1
  210. package/dist/esm/services/routing.d.ts +0 -7
  211. package/dist/esm/services/routing.js +0 -1
  212. package/dist/esm/utils/mergeExhibitors.d.ts +0 -3
  213. package/dist/esm/utils/mergeExhibitors.js +0 -1
  214. package/dist/esm/wayfinding/core/__tests__/helpers.d.ts +0 -16
  215. package/dist/esm/wayfinding/core/__tests__/helpers.js +0 -1
  216. package/dist/esm/wayfinding/core/createWayfindingEngine.d.ts +0 -16
  217. package/dist/esm/wayfinding/core/createWayfindingEngine.js +0 -1
  218. package/dist/esm/wayfinding/core/geometry/pointInPolygon.d.ts +0 -11
  219. package/dist/esm/wayfinding/core/geometry/pointInPolygon.js +0 -1
  220. package/dist/esm/wayfinding/core/geometry/projectPointOnSegment.d.ts +0 -24
  221. package/dist/esm/wayfinding/core/geometry/projectPointOnSegment.js +0 -1
  222. package/dist/esm/wayfinding/core/graph/buildGraph.d.ts +0 -3
  223. package/dist/esm/wayfinding/core/graph/buildGraph.js +0 -1
  224. package/dist/esm/wayfinding/core/graph/buildNGraph.d.ts +0 -9
  225. package/dist/esm/wayfinding/core/graph/buildNGraph.js +0 -1
  226. package/dist/esm/wayfinding/core/graph/constants.d.ts +0 -17
  227. package/dist/esm/wayfinding/core/graph/constants.js +0 -1
  228. package/dist/esm/wayfinding/core/graph/findShortestPath.d.ts +0 -14
  229. package/dist/esm/wayfinding/core/graph/findShortestPath.js +0 -1
  230. package/dist/esm/wayfinding/core/graph/graphCache.d.ts +0 -7
  231. package/dist/esm/wayfinding/core/graph/graphCache.js +0 -1
  232. package/dist/esm/wayfinding/core/graph/graphHelpers.d.ts +0 -8
  233. package/dist/esm/wayfinding/core/graph/graphHelpers.js +0 -1
  234. package/dist/esm/wayfinding/core/graph/linkCost.d.ts +0 -4
  235. package/dist/esm/wayfinding/core/graph/linkCost.js +0 -1
  236. package/dist/esm/wayfinding/core/graph/pathfinder/aStarPathFinder.d.ts +0 -3
  237. package/dist/esm/wayfinding/core/graph/pathfinder/aStarPathFinder.js +0 -1
  238. package/dist/esm/wayfinding/core/graph/pathfinder/parseNodeId.d.ts +0 -9
  239. package/dist/esm/wayfinding/core/graph/pathfinder/parseNodeId.js +0 -1
  240. package/dist/esm/wayfinding/core/index.d.ts +0 -17
  241. package/dist/esm/wayfinding/core/index.js +0 -1
  242. package/dist/esm/wayfinding/core/position/distanceToRoute.d.ts +0 -3
  243. package/dist/esm/wayfinding/core/position/distanceToRoute.js +0 -1
  244. package/dist/esm/wayfinding/core/position/gpsThreshold.d.ts +0 -31
  245. package/dist/esm/wayfinding/core/position/gpsThreshold.js +0 -1
  246. package/dist/esm/wayfinding/core/position/rerouteController.d.ts +0 -10
  247. package/dist/esm/wayfinding/core/position/rerouteController.js +0 -1
  248. package/dist/esm/wayfinding/core/position/snapToRoute.d.ts +0 -4
  249. package/dist/esm/wayfinding/core/position/snapToRoute.js +0 -1
  250. package/dist/esm/wayfinding/core/position/splitRouteByPoint.d.ts +0 -6
  251. package/dist/esm/wayfinding/core/position/splitRouteByPoint.js +0 -1
  252. package/dist/esm/wayfinding/core/rendering/computeTrailPoints.d.ts +0 -19
  253. package/dist/esm/wayfinding/core/rendering/computeTrailPoints.js +0 -1
  254. package/dist/esm/wayfinding/core/rendering/computeTransitionPoints.d.ts +0 -31
  255. package/dist/esm/wayfinding/core/rendering/computeTransitionPoints.js +0 -1
  256. package/dist/esm/wayfinding/core/rendering/getVisibleRouteLines.d.ts +0 -11
  257. package/dist/esm/wayfinding/core/rendering/getVisibleRouteLines.js +0 -1
  258. package/dist/esm/wayfinding/core/rendering/normalizeRouteDirection.d.ts +0 -20
  259. package/dist/esm/wayfinding/core/rendering/normalizeRouteDirection.js +0 -1
  260. package/dist/esm/wayfinding/core/rendering/routeGeometry.d.ts +0 -11
  261. package/dist/esm/wayfinding/core/rendering/routeGeometry.js +0 -1
  262. package/dist/esm/wayfinding/core/routing/buildMultiPointRoute.d.ts +0 -11
  263. package/dist/esm/wayfinding/core/routing/buildMultiPointRoute.js +0 -1
  264. package/dist/esm/wayfinding/core/routing/buildRoute.d.ts +0 -9
  265. package/dist/esm/wayfinding/core/routing/buildRoute.js +0 -1
  266. package/dist/esm/wayfinding/core/routing/getRouteLength.d.ts +0 -3
  267. package/dist/esm/wayfinding/core/routing/getRouteLength.js +0 -1
  268. package/dist/esm/wayfinding/core/routing/graphPointResolvers.d.ts +0 -4
  269. package/dist/esm/wayfinding/core/routing/graphPointResolvers.js +0 -1
  270. package/dist/esm/wayfinding/core/routing/optimizeWaypointOrder.d.ts +0 -19
  271. package/dist/esm/wayfinding/core/routing/optimizeWaypointOrder.js +0 -1
  272. package/dist/esm/wayfinding/core/routing/resolveWaypointCandidates.d.ts +0 -18
  273. package/dist/esm/wayfinding/core/routing/resolveWaypointCandidates.js +0 -1
  274. package/dist/esm/wayfinding/core/routing/routeResult.d.ts +0 -4
  275. package/dist/esm/wayfinding/core/routing/routeResult.js +0 -1
  276. package/dist/esm/wayfinding/core/types.d.ts +0 -106
  277. package/dist/esm/wayfinding/core/types.js +0 -1
  278. package/dist/esm/wayfinding/renderer/createWayfindingRenderer.d.ts +0 -13
  279. package/dist/esm/wayfinding/renderer/createWayfindingRenderer.js +0 -1
  280. package/dist/esm/wayfinding/renderer/iconManager.d.ts +0 -37
  281. package/dist/esm/wayfinding/renderer/iconManager.js +0 -1
  282. package/dist/esm/wayfinding/renderer/index.d.ts +0 -3
  283. package/dist/esm/wayfinding/renderer/index.js +0 -1
  284. package/dist/esm/wayfinding/renderer/layerManager.d.ts +0 -26
  285. package/dist/esm/wayfinding/renderer/layerManager.js +0 -1
  286. package/dist/esm/wayfinding/renderer/lineAnimation.d.ts +0 -7
  287. package/dist/esm/wayfinding/renderer/lineAnimation.js +0 -1
  288. package/dist/esm/wayfinding/renderer/routeLineManager.d.ts +0 -41
  289. package/dist/esm/wayfinding/renderer/routeLineManager.js +0 -1
  290. package/dist/esm/wayfinding/renderer/trailManager.d.ts +0 -30
  291. package/dist/esm/wayfinding/renderer/trailManager.js +0 -1
  292. package/dist/esm/wayfinding/renderer/types.d.ts +0 -129
  293. package/dist/esm/wayfinding/renderer/types.js +0 -1
  294. package/dist/esm/wayfinding/runtime/createWayfindingRuntime.d.ts +0 -3
  295. package/dist/esm/wayfinding/runtime/createWayfindingRuntime.js +0 -1
  296. package/dist/esm/wayfinding/runtime/endpointView.d.ts +0 -18
  297. package/dist/esm/wayfinding/runtime/endpointView.js +0 -1
  298. package/dist/esm/wayfinding/runtime/getRouteLines.d.ts +0 -13
  299. package/dist/esm/wayfinding/runtime/getRouteLines.js +0 -1
  300. package/dist/esm/wayfinding/runtime/positionTrailView.d.ts +0 -50
  301. package/dist/esm/wayfinding/runtime/positionTrailView.js +0 -1
  302. package/dist/esm/wayfinding/runtime/positionView.d.ts +0 -23
  303. package/dist/esm/wayfinding/runtime/positionView.js +0 -1
  304. package/dist/esm/wayfinding/runtime/routeLinesView.d.ts +0 -18
  305. package/dist/esm/wayfinding/runtime/routeLinesView.js +0 -1
  306. package/dist/esm/wayfinding/runtime/routeRenderData.d.ts +0 -29
  307. package/dist/esm/wayfinding/runtime/routeRenderData.js +0 -1
  308. package/dist/esm/wayfinding/runtime/routeUpdate.d.ts +0 -15
  309. package/dist/esm/wayfinding/runtime/routeUpdate.js +0 -1
  310. package/dist/esm/wayfinding/runtime/trailView.d.ts +0 -20
  311. package/dist/esm/wayfinding/runtime/trailView.js +0 -1
  312. package/dist/esm/wayfinding/runtime/transitionView.d.ts +0 -17
  313. package/dist/esm/wayfinding/runtime/transitionView.js +0 -1
  314. package/dist/esm/wayfinding/runtime/types.d.ts +0 -82
  315. package/dist/esm/wayfinding/runtime/types.js +0 -1
  316. /package/dist/esm/{_misc_to_move/manifest.js → types/drawing.types.js} +0 -0
  317. /package/dist/esm/{_misc_to_move/ref.js → wayfinding/storePorts.js} +0 -0
@@ -1 +1 @@
1
- import{jsx as J}from"react/jsx-runtime";import{degToRad as _}from"@expofp/geometry";import W from"color";import{runInAction as H}from"mobx";import{observer as K}from"mobx-react-lite";import{useCallback as k,useEffect as I,useMemo as u,useRef as y,useState as F}from"react";import Z from"../../data";import{getLayerSvg as Q,svgArea as L,svgAreaExplicit as Y}from"../../data/svg";import{createSceneDef as q}from"../../renderer";import a,{uiState as R}from"../../store";import D from"../../tools/settings";import{resolveVenueFitRect as ee}from"../../utils/scene-bounds";import re from"../Map/drawing/config/config-all";import{loadLayersImages as oe}from"../Map/drawing/config/loadBoothsImages";import{useBuildRoute as te}from"../Map/traffic/useBuildRoute";import{useManageTraffic as ne}from"../Map/traffic/useManageTraffic";import ae from"./MaplibreWrapper";import{useCameraReactions as ie}from"./useCameraReactions";import{useDimming as se}from"./useDimming";import{useLayerVisibilitySync as le}from"./useLayerVisibilitySync";import{useRendererEvents as ce}from"./useRendererEvents";import{useWayfindingAndMarkers as ue}from"./useWayfindingAndMarkers";import{deriveGeoConfig as fe,getLocalRectGeoBounds as me,getVisibleRectFitPadding as pe,INITIAL_FIT_ZOOM_ADJUSTMENT as de}from"./utils/geo-config";import{applyMapOptions as $,DEFAULT_MAP_OPTIONS as ge,getTileSource as ye,MAP_2D_OPTIONS as Re}from"./utils/map-helpers";import{calculateTransformMatrix as be}from"./utils/solver";const w="routes-api.expofp.com";function j(){H(()=>{a.layerStore.layers.forEach(t=>{t.configured=!1,t.children=[],t.loaded=!1}),a.layerStore.layersLoaded=!1})}function z(t,l){const o=[];for(const f of t.rollRegistry.invoke(l))Array.isArray(f)?o.push(...f):o.push(f);o.length&&t.update(...o)}function Se(t){const l=Math.abs(t[0]??0),o=Math.hypot(t[0]??0,t[1]??0);return l<=0||o<=0?1:l/o}const Ae=K(function({viewMode:l}){const[o,f]=F(null),[T,O]=F(null),e=a.rendererService,h=y(null),c=y(null),b=y(null),x=y(null),r=u(()=>fe(),[]),E=u(()=>{const{rect:n}=ee({layerViewbox:a.layerStore.viewboxRectangle,explicitArea:Y?L:null,layerRectangle:a.layerStore.rectangle,sceneDef:o,svgArea:L});return n},[o]),m=u(()=>r?{center:r.center,bearing:r.bearing,zoom:r.zoom,bounds:me(E,r.gpsConfig),fitPadding:pe(0),zoomAdjustment:de}:null,[r,E]),p=u(()=>r?be(r.gpsConfig,Q()?.getAttribute("units")):null,[r]),d=u(()=>({...l==="map2d"?Re:ge}),[l]),P=y(d),B=u(()=>ye(),[]),{mapDimAnimatorRef:S,venueDimAnimatorRef:A,handleMapDimLayerReady:N}=se(c,e);I(()=>{if(!r)return;let n=!1;j();const i=re(e).then(s=>{if(n)return;const M=W(D.backgroundColor==="none"?"#ebebeb":D.backgroundColor).string(),C=q(s,L,M);f(C)}).catch(s=>{n||console.warn("Maplibre scene configuration failed.",s)}),v=S.current,g=A.current;return()=>{n=!0,j();const s=h.current;i.finally(()=>e.disposeIfCurrent(s)),b.current?.(),b.current=null,h.current=null,c.current=null,x.current=null,O(null),v?.stop(),g?.stop(),R.sceneDefReady=!1}},[r,S,e,A]);const U=k((n,i,v,g)=>{h.current=n,c.current=i,x.current=g,O(n),e.attach(n,v,g,p?Se(p):1),$(i,P.current),S.current?.setTarget(R.dimmed,{immediate:!0}),A.current?.setTarget(R.dimmed,{immediate:!0}),b.current?.();const s=()=>{const C=i.getBearing()-(r?.bearing??0);z(e,_(C))};i.on("rotate",s),i.on("rotateend",s),b.current=()=>{i.off("rotate",s),i.off("rotateend",s)},oe(e);const M=e.ptScaleRegistry.invoke(e.scale||1);M.length&&e.update(...M),z(e,_(i.getBearing()-(r?.bearing??0))),a.layerStore.layersLoaded=!0,a.fp.onFpConfigured&&a.fp.onFpConfigured(),R.sceneDefReady=!0,g()},[e,S,p,A]);I(()=>{P.current=d,$(c.current,d,!0)},[d]),ce(T,e),ue(T,e),le(e,c,r),ie(c,r,o),te({enabled:a.layerStore.layersLoaded&&R.buildRoute,rendererService:e});const V=Z.flags?.busRoutes??!1;ne({permission:a.layerStore.layersLoaded&&V,rendererService:e,dataJsonUrl:`https://${w}/v1/routes?expo=${D.EXPO}`,websocketUrl:`wss://${w}/locations?expo=${D.EXPO}`});const G=k(n=>{console.warn("Maplibre map failed to load; falling back to floorplan mode.",n),a.maplibreStore.deactivateMaplibre()},[]);if(!r||!m||!p||!o)return null;const X=`${m.center.join(",")}:${m.bearing}:${m.zoom}`;return J(ae,{sceneDef:o,geoConfig:m,staticTransform:p,tileSource:B,mapOptions:d,onRendererReady:U,onMapDimLayerReady:N,onMapLoadError:G},X)});export default Ae;
1
+ import{jsx as J}from"react/jsx-runtime";import{degToRad as _}from"@expofp/geometry";import W from"color";import{runInAction as H}from"mobx";import{observer as K}from"mobx-react-lite";import{useCallback as k,useEffect as I,useMemo as u,useRef as y,useState as F}from"react";import Z from"../../data";import{getLayerSvg as Q,svgArea as L,svgAreaExplicit as Y}from"../../data/svg";import{createSceneDef as q}from"../../renderer";import a,{uiState as R}from"../../store";import D from"../../tools/settings";import{resolveVenueFitRect as ee}from"../../utils/scene-bounds";import re from"../Map/drawing/config/config-all";import{loadLayersImages as oe}from"../Map/drawing/config/loadBoothsImages";import{useBuildRoute as te}from"../Map/traffic/useBuildRoute";import{useManageTraffic as ne}from"../Map/traffic/useManageTraffic";import ae from"./MaplibreWrapper";import{useCameraReactions as ie}from"./useCameraReactions";import{useDimming as se}from"./useDimming";import{useLayerVisibilitySync as le}from"./useLayerVisibilitySync";import{useRendererEvents as ce}from"./useRendererEvents";import{useWayfindingAndMarkers as ue}from"./useWayfindingAndMarkers";import{deriveGeoConfig as fe,getLocalRectGeoBounds as me,getVisibleRectFitPadding as pe,INITIAL_FIT_ZOOM_ADJUSTMENT as de}from"./utils/geo-config";import{applyMapOptions as $,DEFAULT_MAP_OPTIONS as ge,getTileSource as ye,MAP_2D_OPTIONS as Re}from"./utils/map-helpers";import{calculateTransformMatrix as be}from"./utils/solver";const w="routes-api.expofp.com";function j(){H(()=>{a.layerStore.layers.forEach(t=>{t.configured=!1,t.children=[],t.loaded=!1}),a.layerStore.layersLoaded=!1})}function z(t,l){const o=[];for(const f of t.rollRegistry.invoke(l))Array.isArray(f)?o.push(...f):o.push(f);o.length&&t.update(...o)}function Se(t){const l=Math.abs(t[0]??0),o=Math.hypot(t[0]??0,t[1]??0);return l<=0||o<=0?1:l/o}const Ae=K(function({viewMode:l}){const[o,f]=F(null),[T,O]=F(null),e=a.rendererService,h=y(null),c=y(null),b=y(null),x=y(null),r=u(()=>fe(),[]),E=u(()=>{const{rect:n}=ee({layerViewbox:a.layerStore.viewboxRectangle,explicitArea:Y?L:null,layerRectangle:a.layerStore.rectangle,sceneDef:o,svgArea:L});return n},[o]),m=u(()=>r?{center:r.center,bearing:r.bearing,zoom:r.zoom,bounds:me(E,r.gpsConfig),fitPadding:pe(0),zoomAdjustment:de}:null,[r,E]),p=u(()=>r?be(r.gpsConfig,Q()?.getAttribute("units")):null,[r]),d=u(()=>({...l==="map2d"?Re:ge}),[l]),P=y(d),B=u(()=>ye(),[]),{mapDimAnimatorRef:S,venueDimAnimatorRef:A,handleMapDimLayerReady:N}=se(c,e);I(()=>{if(!r)return;let n=!1;j();const i=re(e).then(s=>{if(n)return;const M=W(D.backgroundColor==="none"?"#ebebeb":D.backgroundColor).string(),C=q(s,L,M);f(C)}).catch(s=>{n||console.warn("Maplibre scene configuration failed.",s)}),v=S.current,g=A.current;return()=>{n=!0,j();const s=h.current;i.finally(()=>e.disposeIfCurrent(s)),b.current?.(),b.current=null,h.current=null,c.current=null,x.current=null,O(null),v?.stop(),g?.stop(),R.sceneDefReady=!1}},[r,S,e,A]);const U=k((n,i,v,g)=>{h.current=n,c.current=i,x.current=g,O(n),e.attach(n,v,g,p?Se(p):1),$(i,P.current),S.current?.setTarget(R.dimmed,{immediate:!0}),A.current?.setTarget(R.dimmed,{immediate:!0}),b.current?.();const s=()=>{const C=i.getBearing()-(r?.bearing??0);z(e,_(C))};i.on("rotate",s),i.on("rotateend",s),b.current=()=>{i.off("rotate",s),i.off("rotateend",s)},oe(e);const M=e.ptScaleRegistry.invoke(e.scale||1);M.length&&e.update(...M),z(e,_(i.getBearing()-(r?.bearing??0))),a.layerStore.layersLoaded=!0,a.fp.onFpConfigured&&a.fp.onFpConfigured(),R.sceneDefReady=!0,g()},[e,S,p,A]);I(()=>{P.current=d,$(c.current,d,!0)},[d]),ce(T,e),ue(T,e),le(e,c,r),ie(c,r,o),te({enabled:a.layerStore.layersLoaded&&R.buildRoute,rendererService:e});const V=Z.busRoutes??!1;ne({permission:a.layerStore.layersLoaded&&V,rendererService:e,dataJsonUrl:`https://${w}/v1/routes?expo=${D.EXPO}`,websocketUrl:`wss://${w}/locations?expo=${D.EXPO}`});const G=k(n=>{console.warn("Maplibre map failed to load; falling back to floorplan mode.",n),a.maplibreStore.deactivateMaplibre()},[]);if(!r||!m||!p||!o)return null;const X=`${m.center.join(",")}:${m.bearing}:${m.zoom}`;return J(ae,{sceneDef:o,geoConfig:m,staticTransform:p,tileSource:B,mapOptions:d,onRendererReady:U,onMapDimLayerReady:N,onMapLoadError:G},X)});export default Ae;
@@ -1 +1 @@
1
- import{jsx as Z}from"react/jsx-runtime";import"maplibre-gl/dist/maplibre-gl.css";import{Renderer as B}from"@expofp/renderer";import{addProtocol as N,Map as U}from"maplibre-gl";import{Protocol as G}from"pmtiles";import{useEffect as R,useRef as c}from"react";export const MAP_DIM_LAYER_ID="expofp-map-dim";const y="expofp-map-dim-source",Y="3d-expofp";let g=null;const k=["coalesce",["get","name:en"],["get","name_en"],["get","name:latin"],["get","name"]],H={type:"Feature",geometry:{type:"Polygon",coordinates:[[[-180,-85],[180,-85],[180,85],[-180,85],[-180,-85]]]},properties:{}};function D(e){if(!e||typeof e!="object")return!1;const r=e.length;if(typeof r!="number"||r<16)return!1;const o=e[0];return typeof o=="number"&&Number.isFinite(o)}function J(e){if(D(e))return Array.from(e);const o=e?.defaultProjectionData?.mainMatrix;return D(o)?Array.from(o):(console.warn("Maplibre custom layer received an unsupported projection matrix payload.",e),null)}function b(e){return typeof e=="string"?e.includes("name"):Array.isArray(e)?e.some(r=>b(r)):!e||typeof e!="object"?!1:Object.values(e).some(r=>b(r))}function V(e){return e.type!=="symbol"||!e.id||!e.layout?!1:b(e.layout["text-field"])}function W(e){const r=e.getStyle();for(const o of r.layers??[])V(o)&&e.setLayoutProperty(o.id,"text-field",k)}function X(){if(!g){g=new G;try{N("pmtiles",g.tile)}catch(e){console.warn("Maplibre PMTiles protocol registration failed.",e)}}}export default function q({sceneDef:e,geoConfig:r,staticTransform:o,tileSource:E,mapOptions:I,onRendererReady:h,onMapDimLayerReady:x,onMapLoadError:M}){const d=c(null),L=c(null),l=c(null),P=c(h),_=c(x),A=c(M),w=c({sceneDef:e,geoConfig:r,staticTransform:o,tileSource:E,mapOptions:I});return R(()=>{P.current=h,_.current=x,A.current=M}),R(()=>{if(!d.current)return;const{sceneDef:m,geoConfig:n,staticTransform:O,tileSource:C,mapOptions:f}=w.current;let p=!1;const u={...m};u.rootLayer={...m.rootLayer};const F=m.rootLayer.children;u.rootLayer.children=F.filter(i=>i?.name?.toString().toLowerCase()!=="areamap"),u.background=void 0,u.staticTransform=O,X();const z=n.bounds?{bounds:n.bounds,fitBoundsOptions:{padding:n.fitPadding,bearing:n.bearing}}:{center:n.center,zoom:n.zoom},t=new U({container:d.current,style:C.style,...z,bearing:n.bearing,pitch:f?.pitch??30,maxPitch:f?.maxPitch??70,minZoom:f?.minZoom,maxZoom:f?.maxZoom,maxBounds:f?.maxBounds,bearingSnap:0,canvasContextAttributes:{antialias:!0}});n.zoomAdjustment&&t.jumpTo({zoom:t.getZoom()+n.zoomAdjustment}),L.current=t,t.once("error",i=>{t.isStyleLoaded()||A.current?.(i?.error??i)});const j=i=>{const a=i?.id;!a||t.hasImage(a)||t.addImage(a,{width:1,height:1,data:new Uint8Array(4)})};t.on("styleimagemissing",j);const T={id:Y,type:"custom",renderingMode:"3d",onAdd(i,a){if(p)return;const s=new B({canvas:t.getCanvas(),gl:a});if(p){s.dispose();return}s.init(u),l.current=s,P.current?.(s,t,u,()=>t.triggerRepaint())},render(i,a){if(!l.current||l.current.isDisposed)return;const s=J(a??i);s&&l.current.render(s)}},S=()=>{W(t),t.getSource(y)||t.addSource(y,{type:"geojson",data:H}),t.getLayer(MAP_DIM_LAYER_ID)||t.addLayer({id:MAP_DIM_LAYER_ID,type:"fill",source:y,paint:{"fill-color":"#000000","fill-opacity":0,"fill-opacity-transition":{duration:0,delay:0}}}),_.current?.(t),t.addLayer(T)};return t.on("style.load",S),()=>{p=!0,t.off("style.load",S),t.off("styleimagemissing",j),l.current?.dispose(),l.current=null,t.remove(),L.current=null}},[]),Z("div",{ref:d,style:{position:"absolute",top:0,left:0,width:"100%",height:"100%"}})}
1
+ import{jsx as B}from"react/jsx-runtime";import"maplibre-gl/dist/maplibre-gl.css";import{Renderer as N}from"@expofp/renderer";import{addProtocol as U,Map as G}from"maplibre-gl";import{Protocol as Y}from"pmtiles";import{useEffect as E,useRef as c}from"react";import{createStyleTransform as k}from"./utils/resolve-map-style";export const MAP_DIM_LAYER_ID="expofp-map-dim";const y="expofp-map-dim-source",H="3d-expofp";let g=null;const J=["coalesce",["get","name:en"],["get","name_en"],["get","name:latin"],["get","name"]],V={type:"Feature",geometry:{type:"Polygon",coordinates:[[[-180,-85],[180,-85],[180,85],[-180,85],[-180,-85]]]},properties:{}};function I(e){if(!e||typeof e!="object")return!1;const r=e.length;if(typeof r!="number"||r<16)return!1;const o=e[0];return typeof o=="number"&&Number.isFinite(o)}function W(e){if(I(e))return Array.from(e);const o=e?.defaultProjectionData?.mainMatrix;return I(o)?Array.from(o):(console.warn("Maplibre custom layer received an unsupported projection matrix payload.",e),null)}function b(e){return typeof e=="string"?e.includes("name"):Array.isArray(e)?e.some(r=>b(r)):!e||typeof e!="object"?!1:Object.values(e).some(r=>b(r))}function X(e){return e.type!=="symbol"||!e.id||!e.layout?!1:b(e.layout["text-field"])}function q(e){const r=e.getStyle();for(const o of r.layers??[])X(o)&&e.setLayoutProperty(o.id,"text-field",J)}function K(){if(!g){g=new Y;try{U("pmtiles",g.tile)}catch(e){console.warn("Maplibre PMTiles protocol registration failed.",e)}}}export default function Q({sceneDef:e,geoConfig:r,staticTransform:o,tileSource:w,mapOptions:O,onRendererReady:h,onMapDimLayerReady:x,onMapLoadError:M}){const d=c(null),L=c(null),l=c(null),P=c(h),S=c(x),_=c(M),C=c({sceneDef:e,geoConfig:r,staticTransform:o,tileSource:w,mapOptions:O});return E(()=>{P.current=h,S.current=x,_.current=M}),E(()=>{if(!d.current)return;const{sceneDef:m,geoConfig:n,staticTransform:T,tileSource:A,mapOptions:u}=C.current;let p=!1;const f={...m};f.rootLayer={...m.rootLayer};const F=m.rootLayer.children;f.rootLayer.children=F.filter(i=>i?.name?.toString().toLowerCase()!=="areamap"),f.background=void 0,f.staticTransform=T,K();const z=n.bounds?{bounds:n.bounds,fitBoundsOptions:{padding:n.fitPadding,bearing:n.bearing}}:{center:n.center,zoom:n.zoom},j=k(A.style),t=new G({container:d.current,...z,bearing:n.bearing,pitch:u?.pitch??30,maxPitch:u?.maxPitch??70,minZoom:u?.minZoom,maxZoom:u?.maxZoom,maxBounds:u?.maxBounds,bearingSnap:0,canvasContextAttributes:{antialias:!0}});n.zoomAdjustment&&t.jumpTo({zoom:t.getZoom()+n.zoomAdjustment}),L.current=t,t.once("error",i=>{t.isStyleLoaded()||_.current?.(i?.error??i)});const R=i=>{const a=i?.id;!a||t.hasImage(a)||t.addImage(a,{width:1,height:1,data:new Uint8Array(4)})};t.on("styleimagemissing",R);const Z={id:H,type:"custom",renderingMode:"3d",onAdd(i,a){if(p)return;const s=new N({canvas:t.getCanvas(),gl:a});if(p){s.dispose();return}s.init(f),l.current=s,P.current?.(s,t,f,()=>t.triggerRepaint())},render(i,a){if(!l.current||l.current.isDisposed)return;const s=W(a??i);s&&l.current.render(s)}},D=()=>{q(t),t.getSource(y)||t.addSource(y,{type:"geojson",data:V}),t.getLayer(MAP_DIM_LAYER_ID)||t.addLayer({id:MAP_DIM_LAYER_ID,type:"fill",source:y,paint:{"fill-color":"#000000","fill-opacity":0,"fill-opacity-transition":{duration:0,delay:0}}}),S.current?.(t),t.addLayer(Z)};return t.on("style.load",D),t.setStyle(A.style,j?{transformStyle:j}:void 0),()=>{p=!0,t.off("style.load",D),t.off("styleimagemissing",R),l.current?.dispose(),l.current=null,t.remove(),L.current=null}},[]),B("div",{ref:d,style:{position:"absolute",top:0,left:0,width:"100%",height:"100%"}})}
@@ -0,0 +1,15 @@
1
+ import { type StyleSpecification, type TransformStyleFunction } from 'maplibre-gl';
2
+ /**
3
+ * Build a MapLibre `transformStyle` hook that makes a style's internal URLs
4
+ * safe to use, or `undefined` when none is needed.
5
+ *
6
+ * MapLibre requires the URLs *inside* a style — `sprite`, `glyphs`, source
7
+ * `url`, and source `tiles` — to be fully absolute before it consumes them;
8
+ * for example, `normalizeSpriteURL` calls `new URL(url)` with no base and
9
+ * rejects rooted or relative values.
10
+ *
11
+ * Inline style objects have no style URL to resolve against; callers must pass
12
+ * already-absolute internals for those.
13
+ */
14
+ export declare function createStyleTransform(style: string | StyleSpecification): TransformStyleFunction | undefined;
15
+ //# sourceMappingURL=resolve-map-style.d.ts.map
@@ -0,0 +1 @@
1
+ export function createStyleTransform(c){if(typeof c!="string")return;const p=new URL(c,window.location.href).href,o=i=>new URL(i,p).href.replace(/%7B/g,"{").replace(/%7D/g,"}"),l=i=>i.startsWith("pmtiles://")?`pmtiles://${o(i.slice(10))}`:o(i);return(i,u)=>{const e={...u};typeof e.sprite=="string"?e.sprite=o(e.sprite):Array.isArray(e.sprite)&&(e.sprite=e.sprite.map(t=>{if(!t||typeof t!="object")return t;const r=t;return typeof r.url!="string"?t:{...r,url:o(r.url)}})),typeof e.glyphs=="string"&&(e.glyphs=o(e.glyphs));const n=e.sources;if(n){e.sources={...n};for(const[t,r]of Object.entries(n)){if(!r||typeof r!="object")continue;const s={...r};typeof s.url=="string"&&(s.url=l(s.url)),Array.isArray(s.tiles)&&(s.tiles=s.tiles.map(f=>typeof f=="string"?l(f):f)),e.sources[t]=s}}return e}}
@@ -1,10 +1,11 @@
1
+ import { type Consent } from '@expofp/config';
1
2
  import React from 'react';
2
3
  import './Menu.scss';
3
4
  import './Menu_custom.scss';
4
5
  interface MenuProps {
5
6
  isGDPR: boolean;
6
- allowConsent?: boolean;
7
+ consent: Consent;
7
8
  }
8
- declare const _default: ({ isGDPR, allowConsent }: MenuProps) => React.JSX.Element;
9
+ declare const _default: ({ isGDPR, consent }: MenuProps) => React.JSX.Element;
9
10
  export default _default;
10
11
  //# sourceMappingURL=Menu.d.ts.map
@@ -1 +1 @@
1
- import{jsx as e,jsxs as s,Fragment as L}from"react/jsx-runtime";import{autorun as N}from"mobx";import{useLocalStore as S,useObserver as h}from"mobx-react-lite";import C,{Suspense as x}from"react";import r from"../data";import t,{uiState as n}from"../store";import D from"../ui/Badge";import{getLocale as E,getLocales as T,t as m}from"../utils/i18n";import d from"../utils/is-iframe";const U=C.lazy(()=>import("./ViewerMenuPanel"));import"./Menu.scss";import"./Menu_custom.scss";import f from"../tools/logger";import g from"../tools/settings";const u=/^https?:\/\//i.test(r.logo)?r.logo:window.__dataUrlBase+r.logo;f.log("Logo url: ",u),window.setTimeout(function(){const l=new Image;l.onload=()=>{f.log("Logo image loaded")},l.crossOrigin="anonymous",l.src=u},1500);function j({allowConsent:l,isGDPR:c}){const a=S(()=>({logoVisibility:"visible",shown:!1,shownTimeout:void 0,modalOpen:!1,selectedCategoryIds:(n.selectedCategoryFilters||[]).map(o=>Number(o.id)),pendingSelectedIds:(n.selectedCategoryFilters||[]).map(o=>Number(o.id))}));N(()=>{n.menu?(a.shownTimeout=window.setTimeout(()=>a.shown=!0,1),n.list.type==="sessions"&&t.searchStore.selectSearch()):(a.shown=!1,a.shownTimeout&&window.clearTimeout(a.shownTimeout))});function p(o){if(n.kiosk)return o.preventDefault()}function v(o){o.preventDefault(),w(),t.searchStore.selectSearch()}function _(o){o.preventDefault(),t.fp?.onLeaveEvent?.()}function k(o){o.preventDefault(),t.clickLanguage()}return h(()=>{if(!n.menu)return null;const o=t.boothStore.booths.filter(i=>i.bookmarked).map(i=>i.name),b=window.__fpSettings?.fpVer?`https://d2.expofp.com/export/v2/${g.EXPO}/pdf`:`https://api.expofp.com/service/convert/${g.EXPO}/pdf`,y=n.viewerMode&&typeof t.fp?.onLeaveEvent=="function";return s("div",{className:`menu ${a.shown?"shown":""}`,children:[d?e("div",{className:"menu__cover -empty"}):e("div",{className:"menu__cover",children:e("a",{href:r.homeUrl,target:"_blank",rel:"noopener noreferrer",onClick:p,children:e("img",{src:u,onError:()=>a.logoVisibility="hidden",style:{visibility:a.logoVisibility},alt:"",crossOrigin:"anonymous"})})}),s("div",{className:"menu__content",children:[n.viewerMode&&e(x,{fallback:null,children:e(U,{})}),!n.viewerMode&&e("a",{href:"/#",onClick:v,className:"menu__item",children:m("Search")}),!r.hideEventHomeLink&&!n.kiosk&&!d&&!!r.homeUrl&&s("a",{href:r.homeUrl,target:"_blank",className:"menu__item",rel:"noopener noreferrer",children:[m("Event Home").replace(/ /g,"\xA0"),e("i",{className:"icon-link-external"})]}),!r.hideRegisterToAttendLink&&!n.kiosk&&!d&&!!r.registerUrl&&s("a",{href:r.registerUrl,target:"_blank",className:"menu__item",rel:"noopener noreferrer",children:[m("Register to Attend").replace(/ /g,"\xA0"),e("i",{className:"icon-link-external"})]}),!n.hideLanguage&&!r.hideLanguage&&!r.hideLanguageLink&&s("a",{href:"?language",onClick:k,className:"menu__item -language",children:[s("span",{children:[m("Language")," "]}),s("span",{className:"menu__icons",children:[e(D,{variant:"gray",size:"md",noMargins:!0,rounded:!0,children:T().find(i=>i.id===E())?.name}),e("i",{className:"icon-chevron-right"})]})]}),!r.hideDownloadPdfLink&&!n.kiosk&&e("a",{className:"menu__item -pdf",target:"_blank",rel:"noopener noreferrer",href:`${b}/?exhibitors=true&bookmarks=${o.join(",")}&layers=${(t.layerStore.layers.length>=t.layerStore.visible.length?t.layerStore.visible.map(i=>i.name).join(","):"").replace(/&/g,"%26")}`,children:m("Download PDF")}),l===void 0&&c&&e("a",{href:"/#",className:"menu__item -cookie-consent",onClick:i=>{i.preventDefault(),n.hideCookieConsent=!1},children:m("Review Cookie Consent")}),y&&e("div",{className:"menu__item-leave",children:e("a",{href:"/#",className:"menu__item -leave-event menu__leave-link",onClick:_,children:m("Select another event")})})]})]})});function w(){n.menu=!1}}export default({isGDPR:l,allowConsent:c})=>h(()=>e(L,{children:n.menu?e(j,{isGDPR:l,allowConsent:c}):null}));
1
+ import{jsx as e,jsxs as s,Fragment as L}from"react/jsx-runtime";import{autorun as N}from"mobx";import{useLocalStore as S,useObserver as f}from"mobx-react-lite";import C,{Suspense as x}from"react";import r from"../data";import{getFpSvgJs as D}from"../data/fp-payloads";import t,{uiState as n}from"../store";import E from"../ui/Badge";import{getLocale as T,getLocales as U,t as m}from"../utils/i18n";import d from"../utils/is-iframe";const j=C.lazy(()=>import("./ViewerMenuPanel"));import"./Menu.scss";import"./Menu_custom.scss";import h from"../tools/logger";import g from"../tools/settings";const u=r.logo;h.log("Logo url: ",u),window.setTimeout(function(){const l=new Image;l.onload=()=>{h.log("Logo image loaded")},l.crossOrigin="anonymous",l.src=u},1500);function F({consent:l,isGDPR:c}){const a=S(()=>({logoVisibility:"visible",shown:!1,shownTimeout:void 0,modalOpen:!1,selectedCategoryIds:(n.selectedCategoryFilters||[]).map(o=>Number(o.id)),pendingSelectedIds:(n.selectedCategoryFilters||[]).map(o=>Number(o.id))}));N(()=>{n.menu?(a.shownTimeout=window.setTimeout(()=>a.shown=!0,1),n.list.type==="sessions"&&t.searchStore.selectSearch()):(a.shown=!1,a.shownTimeout&&window.clearTimeout(a.shownTimeout))});function p(o){if(n.kiosk)return o.preventDefault()}function v(o){o.preventDefault(),w(),t.searchStore.selectSearch()}function k(o){o.preventDefault(),t.fp?.onLeaveEvent?.()}function _(o){o.preventDefault(),t.clickLanguage()}return f(()=>{if(!n.menu)return null;const o=t.boothStore.booths.filter(i=>i.bookmarked).map(i=>i.name),b=D().__fpSettings?.fpVer?`https://d2.expofp.com/export/v2/${g.EXPO}/pdf`:`https://api.expofp.com/service/convert/${g.EXPO}/pdf`,y=n.viewerMode&&typeof t.fp?.onLeaveEvent=="function";return s("div",{className:`menu ${a.shown?"shown":""}`,children:[d?e("div",{className:"menu__cover -empty"}):e("div",{className:"menu__cover",children:e("a",{href:r.homeUrl,target:"_blank",rel:"noopener noreferrer",onClick:p,children:e("img",{src:u,onError:()=>a.logoVisibility="hidden",style:{visibility:a.logoVisibility},alt:"",crossOrigin:"anonymous"})})}),s("div",{className:"menu__content",children:[n.viewerMode&&e(x,{fallback:null,children:e(j,{})}),!n.viewerMode&&e("a",{href:"/#",onClick:v,className:"menu__item",children:m("Search")}),!r.hideEventHomeLink&&!n.kiosk&&!d&&!!r.homeUrl&&s("a",{href:r.homeUrl,target:"_blank",className:"menu__item",rel:"noopener noreferrer",children:[m("Event Home").replace(/ /g,"\xA0"),e("i",{className:"icon-link-external"})]}),!r.hideRegisterToAttendLink&&!n.kiosk&&!d&&!!r.registerUrl&&s("a",{href:r.registerUrl,target:"_blank",className:"menu__item",rel:"noopener noreferrer",children:[m("Register to Attend").replace(/ /g,"\xA0"),e("i",{className:"icon-link-external"})]}),!n.hideLanguage&&!r.hideLanguage&&!r.hideLanguageLink&&s("a",{href:"?language",onClick:_,className:"menu__item -language",children:[s("span",{children:[m("Language")," "]}),s("span",{className:"menu__icons",children:[e(E,{variant:"gray",size:"md",noMargins:!0,rounded:!0,children:U().find(i=>i.id===T())?.name}),e("i",{className:"icon-chevron-right"})]})]}),!r.hideDownloadPdfLink&&!n.kiosk&&e("a",{className:"menu__item -pdf",target:"_blank",rel:"noopener noreferrer",href:`${b}/?exhibitors=true&bookmarks=${o.join(",")}&layers=${(t.layerStore.layers.length>=t.layerStore.visible.length?t.layerStore.visible.map(i=>i.name).join(","):"").replace(/&/g,"%26")}`,children:m("Download PDF")}),l==="ask"&&c&&e("a",{href:"/#",className:"menu__item -cookie-consent",onClick:i=>{i.preventDefault(),n.hideCookieConsent=!1},children:m("Review Cookie Consent")}),y&&e("div",{className:"menu__item-leave",children:e("a",{href:"/#",className:"menu__item -leave-event menu__leave-link",onClick:k,children:m("Select another event")})})]})]})});function w(){n.menu=!1}}export default({isGDPR:l,consent:c})=>f(()=>e(L,{children:n.menu?e(F,{isGDPR:l,consent:c}):null}));
@@ -1,7 +1,8 @@
1
+ import { type Consent } from '@expofp/config';
1
2
  import React from 'react';
2
3
  interface OverlayContainerProps {
3
4
  isGDPR: boolean;
4
- allowConsent?: boolean;
5
+ consent: Consent;
5
6
  }
6
7
  declare const OverlayContainer: React.FunctionComponent<OverlayContainerProps>;
7
8
  export default OverlayContainer;
@@ -1 +1 @@
1
- import{jsx as o,jsxs as S}from"react/jsx-runtime";import h from"classnames";import{observer as g}from"mobx-react-lite";import{useCallback as l,useMemo as a}from"react";import k from"../data";import{uiState as e}from"../store";import C from"./Bookmarks";import z from"./Booth/Booth";import O from"./Category";import b from"./Event";import x from"./Exhibitor";import M from"./Filter";import R from"./Language";import P from"./Menu";import A from"./Overlay";import E from"./RoutePlanner/RoutePlanner";import j from"./Search";import w from"./Sessions";import F from"./Speaker";import B from"./Speakers";import I from"./TourPoints";import _ from"./Tours";import K from"./Visited";import L from"./Wayfinding";const T={full:"full",medium:"medium",small:"medium"},D=r=>T[r],N=()=>e.list.type==="search"||k.isRebooking&&e.list.type==="exhibitors",U=r=>r?7:e.details?3:N()?9:3,V=g(({isGDPR:r,allowConsent:m})=>{const n=l(t=>{e.desiredOverlaySize=t},[]),c=l(t=>{e.setOverlayScrolled(t)},[]),f=D(e.overlaySize),d=e.selectedRoute?.from&&e.selectedRoute?.to,p=U(!!d),u=e.fullSizeOffset,v=a(()=>[e.list.type,e.details],[e.list.type,e.details]),y=a(()=>{const t={"-backdrop":e.canvasStarted&&e.shouldUseBackdrop&&!e.dimmed&&!e.galleryActive,"-no-transition":e.dimmed,"-gallery-active":e.galleryActive,collapsed:e.overlayCollapsed,kiosk:e.kiosk,start:e.overlayPosition==="left",bottom:e.overlayPosition!=="left",[e.overlaySize]:!0},i=h(t),s=e.overlayInterfaceClasses.join(" ");return s?`${i} ${s}`:i},[e.canvasStarted,e.shouldUseBackdrop,e.dimmed,e.galleryActive,e.overlayCollapsed,e.kiosk,e.inIdle,e.setKioskModeEnabled,e.overlayPosition,e.overlaySize,e.overlayInterfaceClasses]);return S(A,{open:e.isOverlayOpen,size:f,particles:e.isFeaturedExhibitorActive,className:y,mediumSizeMultiplier:p,fullSizeOffset:u,disableDrag:e.viewerMode&&e.menu,forceFull:e.viewerMode&&e.menu,scrollResetKey:v,onChangeSize:n,onScrollStateChange:c,children:[o(P,{isGDPR:r,allowConsent:m}),o(j,{}),o(x,{}),o(z,{}),o(C,{}),o(K,{}),o(R,{}),o(O,{}),o(L,{}),o(M,{}),o(w,{showFilters:!0}),o(B,{showFilters:!0}),o(_,{}),o(I,{}),o(E,{}),o(b,{}),o(F,{})]})});export default V;
1
+ import{jsx as o,jsxs as S}from"react/jsx-runtime";import h from"classnames";import{observer as g}from"mobx-react-lite";import{useCallback as l,useMemo as a}from"react";import k from"../data";import{uiState as e}from"../store";import z from"./Bookmarks";import C from"./Booth/Booth";import O from"./Category";import b from"./Event";import x from"./Exhibitor";import M from"./Filter";import R from"./Language";import P from"./Menu";import A from"./Overlay";import E from"./RoutePlanner/RoutePlanner";import j from"./Search";import F from"./Sessions";import w from"./Speaker";import B from"./Speakers";import I from"./TourPoints";import _ from"./Tours";import K from"./Visited";import L from"./Wayfinding";const T={full:"full",medium:"medium",small:"medium"},D=r=>T[r],N=()=>e.list.type==="search"||k.isRebooking&&e.list.type==="exhibitors",U=r=>r?7:e.details?3:N()?9:3,V=g(({isGDPR:r,consent:m})=>{const n=l(t=>{e.desiredOverlaySize=t},[]),c=l(t=>{e.setOverlayScrolled(t)},[]),f=D(e.overlaySize),d=e.selectedRoute?.from&&e.selectedRoute?.to,p=U(!!d),u=e.fullSizeOffset,v=a(()=>[e.list.type,e.details],[e.list.type,e.details]),y=a(()=>{const t={"-backdrop":e.canvasStarted&&e.shouldUseBackdrop&&!e.dimmed&&!e.galleryActive,"-no-transition":e.dimmed,"-gallery-active":e.galleryActive,collapsed:e.overlayCollapsed,kiosk:e.kiosk,start:e.overlayPosition==="left",bottom:e.overlayPosition!=="left",[e.overlaySize]:!0},i=h(t),s=e.overlayInterfaceClasses.join(" ");return s?`${i} ${s}`:i},[e.canvasStarted,e.shouldUseBackdrop,e.dimmed,e.galleryActive,e.overlayCollapsed,e.kiosk,e.inIdle,e.setKioskModeEnabled,e.overlayPosition,e.overlaySize,e.overlayInterfaceClasses]);return S(A,{open:e.isOverlayOpen,size:f,particles:e.isFeaturedExhibitorActive,className:y,mediumSizeMultiplier:p,fullSizeOffset:u,disableDrag:e.viewerMode&&e.menu,forceFull:e.viewerMode&&e.menu,scrollResetKey:v,onChangeSize:n,onScrollStateChange:c,children:[o(P,{isGDPR:r,consent:m}),o(j,{}),o(x,{}),o(C,{}),o(z,{}),o(K,{}),o(R,{}),o(O,{}),o(L,{}),o(M,{}),o(F,{showFilters:!0}),o(B,{showFilters:!0}),o(_,{}),o(I,{}),o(E,{}),o(b,{}),o(w,{})]})});export default V;
@@ -1 +1 @@
1
- import{jsx as s}from"react/jsx-runtime";import"./Ws.scss";import p from"classnames";import{reaction as x}from"mobx";import{useLocalStore as w,useObserver as g}from"mobx-react-lite";import b,{createRef as I,useCallback as m}from"react";import{CSSTransition as y,TransitionGroup as S}from"react-transition-group";import T,{exhibitorStore as k,uiState as n}from"../store";import{trackWsExhibitorClick as v}from"../tools/gtag";import{remsToPixels as E,shuffle as N}from"../utils";import{loadImagesInBatchesById as B}from"../utils/loadImagesInBatches";import{useInit as L}from"../utils/mobx";const h=8e3,M=b.memo(()=>{const e=w(()=>({el:null,all:[],adv:[],keySeq:0,index:0,imgByExhibitorId:new Map,batchSize:100,loading:!1,leftToNextLoad:0,timeoutId:0,get sectionStyle(){const{wsStarted:t,wsPosition:i}=n,a=i==="top",o={right:0,width:"100%",opacity:t?1:0};return a?o.top=0:o.bottom=0,o}})),r=m(()=>{const i=(e.el?.getBoundingClientRect().width??0)-E(.3)*2;let a=0;const o=[];do{const l=e.all[e.index%e.all.length],c=e.imgByExhibitorId.get(l.id);if(!c)break;const f=c.width*n.wsImageHeightPx/c.height+20;if(a+f>i&&o.length)break;a+=f,o.push({key:e.keySeq++,e:l}),e.index=(e.index+1)%e.all.length}while(!0);e.adv=o.map(l=>({...l,nodeRef:I()})),e.leftToNextLoad=Math.max(0,e.leftToNextLoad-o.length)},[e]),d=m(async()=>{e.loading=!0;let t=e.all.slice(e.index,e.index+e.batchSize);t.length<e.batchSize&&(t=t.concat(e.all.slice(0,e.batchSize-t.length)));const i=await B(new Map(t.map(a=>[a.id,{fallback:a.logo}])));return e.leftToNextLoad=i.size,e.loading=!1,i},[e]),u=m(()=>{const t=async()=>{if(e.loading){e.timeoutId=window.setTimeout(t,h);return}e.leftToNextLoad<=e.adv.length&&(e.imgByExhibitorId=await d()),r(),e.timeoutId=window.setTimeout(t,h)};clearTimeout(e.timeoutId),e.timeoutId=window.setTimeout(t,h)},[d,r]);return L(()=>{let t,i=!0;return(async()=>(e.all=N(k.advertised),e.imgByExhibitorId=await d(),i&&(r(),u(),n.wsStarted=!0,t=x(()=>n.screenSize,r))))(),()=>{i=!1,t?.(),clearInterval(e.timeoutId)}}),g(()=>s("section",{className:p("ws",{"efp-semi-transparent":n.setKioskModeEnabled}),ref:t=>e.el=t,onMouseOver:()=>clearInterval(e.timeoutId),onMouseOut:u,style:e.sectionStyle,children:s(S,{component:null,children:e.adv.map(t=>s(y,{timeout:500,nodeRef:t.nodeRef,children:s("a",{ref:t.nodeRef,href:`?${t.e.slug}`,className:"ws__exhibitor",style:{height:`${n.wsImageHeightPx}px`},onClick:i=>{i.preventDefault(),v(t.e),T.clickExhibitor(t.e)},children:s("img",{src:t.e.logo,alt:t.e.name,crossOrigin:"anonymous"})})},t.key))})}))});export default()=>g(()=>n.wsShown?s(M,{}):null);
1
+ import{jsx as n}from"react/jsx-runtime";import"./Ws.scss";import p from"classnames";import{reaction as x}from"mobx";import{useLocalStore as w,useObserver as g}from"mobx-react-lite";import b,{createRef as I,useCallback as m}from"react";import{CSSTransition as y,TransitionGroup as S}from"react-transition-group";import T,{exhibitorStore as k,uiState as r}from"../store";import{trackWsExhibitorClick as v}from"../tools/gtag";import{remsToPixels as E,shuffle as N}from"../utils";import{loadImagesInBatchesById as B}from"../utils/loadImagesInBatches";import{useInit as L}from"../utils/mobx";const h=8e3,M=b.memo(()=>{const e=w(()=>({el:null,all:[],adv:[],keySeq:0,index:0,imgByExhibitorId:new Map,batchSize:100,loading:!1,leftToNextLoad:0,timeoutId:0,get sectionStyle(){const{wsStarted:t,wsPosition:i}=r,a=i==="top",o={right:0,width:"100%",opacity:t?1:0};return a?o.top=0:o.bottom=0,o}})),s=m(()=>{const i=(e.el?.getBoundingClientRect().width??0)-E(.3)*2;let a=0;const o=[];do{const l=e.all[e.index%e.all.length],c=e.imgByExhibitorId.get(l.id);if(!c)break;const f=c.width*r.wsImageHeightPx/c.height+20;if(a+f>i&&o.length)break;a+=f,o.push({key:e.keySeq++,e:l}),e.index=(e.index+1)%e.all.length}while(!0);e.adv=o.map(l=>({...l,nodeRef:I()})),e.leftToNextLoad=Math.max(0,e.leftToNextLoad-o.length)},[e]),d=m(async()=>{e.loading=!0;let t=e.all.slice(e.index,e.index+e.batchSize);t.length<e.batchSize&&(t=t.concat(e.all.slice(0,e.batchSize-t.length)));const i=await B(new Map(t.map(a=>[a.id,{fallback:a.logo?.url}])));return e.leftToNextLoad=i.size,e.loading=!1,i},[e]),u=m(()=>{const t=async()=>{if(e.loading){e.timeoutId=window.setTimeout(t,h);return}e.leftToNextLoad<=e.adv.length&&(e.imgByExhibitorId=await d()),s(),e.timeoutId=window.setTimeout(t,h)};clearTimeout(e.timeoutId),e.timeoutId=window.setTimeout(t,h)},[d,s]);return L(()=>{let t,i=!0;return(async()=>(e.all=N(k.advertised),e.imgByExhibitorId=await d(),i&&(s(),u(),r.wsStarted=!0,t=x(()=>r.screenSize,s))))(),()=>{i=!1,t?.(),clearInterval(e.timeoutId)}}),g(()=>n("section",{className:p("ws",{"efp-semi-transparent":r.setKioskModeEnabled}),ref:t=>e.el=t,onMouseOver:()=>clearInterval(e.timeoutId),onMouseOut:u,style:e.sectionStyle,children:n(S,{component:null,children:e.adv.map(t=>n(y,{timeout:500,nodeRef:t.nodeRef,children:n("a",{ref:t.nodeRef,href:`?${t.e.slug}`,className:"ws__exhibitor",style:{height:`${r.wsImageHeightPx}px`},onClick:i=>{i.preventDefault(),v(t.e),T.clickExhibitor(t.e)},children:n("img",{src:t.e.logo?.url,alt:t.e.name,crossOrigin:"anonymous"})})},t.key))})}))});export default()=>g(()=>r.wsShown?n(M,{}):null);
@@ -1,6 +1,4 @@
1
1
  export declare const VISIBILITY_STORAGE_KEY = "___visibility";
2
- export declare const PREVIEW_MODE_QUERY = "previewMode";
3
- export declare const PREVIEW_MODE_STORAGE_KEY = "___preview_mode";
4
2
  export declare const PREVIEW_MODE_ATTRIBUTE = "data-preview-mode";
5
3
  export declare const BOOTHS_PAINTER_MARKER = "booths";
6
4
  export declare const SEPARATOR = ":";
@@ -12,21 +10,19 @@ export declare const SET_KIOSK_KEY = "setkiosk";
12
10
  export declare const BOOKMARK_PAINTER_MARKER = "booth-bookmark";
13
11
  export declare const MAP_SETTINGS_KEY = "expofp-map-settings";
14
12
  export declare const DEBUG_KEY = "debug";
15
- export declare const DEBUG_STORAGE_KEY = "efp:debug";
13
+ export declare const DEBUG_STORAGE_KEY = "efp-debugMode";
16
14
  export declare const DEFAULT_UNITS = "ft";
17
- export declare const BUILD_ROUTE_KEY = "build-route";
18
- export declare const PLANNER_KEY = "planner";
19
- export declare const PLANNER_SOURCE_KEY = "source";
20
- export declare const PLANNER_FROM_KEY = "from";
21
15
  export declare const PATHWAY_KEY = "pathway";
22
16
  export declare const CACHE_DURATION = 1000;
23
17
  export declare const MOBILE_BREAKPOINT = 768;
24
- export declare const LANG_KEY = "lang";
25
18
  export declare const LANGUAGE_TYPE = "language";
26
- export declare const UI_SCALE_PARAM_KEY = "uiscale";
27
- export declare const UI_SCALE_RESET_PARAM_KEY = "resetuiscale";
28
- export declare const UI_SCALE_STORAGE_KEY = "___ui-scale";
29
19
  export declare const MAX_ROUTE_WAYPOINTS = 8;
20
+ export declare const VIEWER_MODE_STORAGE_KEY = "efp-viewerMode";
21
+ export declare const LEGACY_VIEWER_MODE_STORAGE_KEY = "___viewer_mode";
22
+ export declare const PREVIEW_MODE_STORAGE_KEY = "efp-previewMode";
23
+ export declare const LEGACY_PREVIEW_MODE_STORAGE_KEY = "___preview_mode";
24
+ export declare const UI_SCALE_STORAGE_KEY = "efp-uiScale";
25
+ export declare const LEGACY_UI_SCALE_STORAGE_KEY = "___ui-scale";
30
26
  export declare const FONT_FACE = "--expofp-font-face";
31
27
  export declare const FONT_WEIGHT_PRIMARY_BOOTH = "--expofp-booth-main-weight";
32
28
  export declare const FONT_WEIGHT_SECONDARY_BOOTH = "--expofp-booth-details-weight";
@@ -34,6 +30,4 @@ export declare const FONT_WEIGHT_PRIMARY_EXHIBITOR = "--expofp-exhibitor-main-we
34
30
  export declare const FONT_WEIGHT_SECONDARY_EXHIBITOR = "--expofp-exhibitor-details-weight";
35
31
  export declare const FONT_WEIGHT_PRIMARY_SPECIAL = "--expofp-booth-special-weight";
36
32
  export declare const ORIENTATION_GRANTED_KEY = "efp-compass-permission-granted";
37
- export declare const VIEWER_MODE_QUERY = "viewermode";
38
- export declare const VIEWER_MODE_STORAGE_KEY = "___viewer_mode";
39
33
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- export const VISIBILITY_STORAGE_KEY="___visibility",PREVIEW_MODE_QUERY="previewMode",PREVIEW_MODE_STORAGE_KEY="___preview_mode",PREVIEW_MODE_ATTRIBUTE="data-preview-mode",BOOTHS_PAINTER_MARKER="booths",SEPARATOR=":",LAYER_LOGOS_MARKER="logos",LAYER_ICONS_MARKER="icons",STRING_META_DELIMITER="$$",KIOSK_ENABLE_KEY="kiosk",SET_KIOSK_KEY="setkiosk",BOOKMARK_PAINTER_MARKER="booth-bookmark",MAP_SETTINGS_KEY="expofp-map-settings",DEBUG_KEY="debug",DEBUG_STORAGE_KEY="efp:debug",DEFAULT_UNITS="ft",BUILD_ROUTE_KEY="build-route",PLANNER_KEY="planner",PLANNER_SOURCE_KEY="source",PLANNER_FROM_KEY="from",PATHWAY_KEY="pathway",CACHE_DURATION=1e3,MOBILE_BREAKPOINT=768,LANG_KEY="lang",LANGUAGE_TYPE="language",UI_SCALE_PARAM_KEY="uiscale",UI_SCALE_RESET_PARAM_KEY="resetuiscale",UI_SCALE_STORAGE_KEY="___ui-scale",MAX_ROUTE_WAYPOINTS=8,FONT_FACE="--expofp-font-face",FONT_WEIGHT_PRIMARY_BOOTH="--expofp-booth-main-weight",FONT_WEIGHT_SECONDARY_BOOTH="--expofp-booth-details-weight",FONT_WEIGHT_PRIMARY_EXHIBITOR="--expofp-exhibitor-main-weight",FONT_WEIGHT_SECONDARY_EXHIBITOR="--expofp-exhibitor-details-weight",FONT_WEIGHT_PRIMARY_SPECIAL="--expofp-booth-special-weight",ORIENTATION_GRANTED_KEY="efp-compass-permission-granted",VIEWER_MODE_QUERY="viewermode",VIEWER_MODE_STORAGE_KEY="___viewer_mode";
1
+ export const VISIBILITY_STORAGE_KEY="___visibility",PREVIEW_MODE_ATTRIBUTE="data-preview-mode",BOOTHS_PAINTER_MARKER="booths",SEPARATOR=":",LAYER_LOGOS_MARKER="logos",LAYER_ICONS_MARKER="icons",STRING_META_DELIMITER="$$",KIOSK_ENABLE_KEY="kiosk",SET_KIOSK_KEY="setkiosk",BOOKMARK_PAINTER_MARKER="booth-bookmark",MAP_SETTINGS_KEY="expofp-map-settings",DEBUG_KEY="debug",DEBUG_STORAGE_KEY="efp-debugMode",DEFAULT_UNITS="ft",PATHWAY_KEY="pathway",CACHE_DURATION=1e3,MOBILE_BREAKPOINT=768,LANGUAGE_TYPE="language",MAX_ROUTE_WAYPOINTS=8,VIEWER_MODE_STORAGE_KEY="efp-viewerMode",LEGACY_VIEWER_MODE_STORAGE_KEY="___viewer_mode",PREVIEW_MODE_STORAGE_KEY="efp-previewMode",LEGACY_PREVIEW_MODE_STORAGE_KEY="___preview_mode",UI_SCALE_STORAGE_KEY="efp-uiScale",LEGACY_UI_SCALE_STORAGE_KEY="___ui-scale",FONT_FACE="--expofp-font-face",FONT_WEIGHT_PRIMARY_BOOTH="--expofp-booth-main-weight",FONT_WEIGHT_SECONDARY_BOOTH="--expofp-booth-details-weight",FONT_WEIGHT_PRIMARY_EXHIBITOR="--expofp-exhibitor-main-weight",FONT_WEIGHT_SECONDARY_EXHIBITOR="--expofp-exhibitor-details-weight",FONT_WEIGHT_PRIMARY_SPECIAL="--expofp-booth-special-weight",ORIENTATION_GRANTED_KEY="efp-compass-permission-granted";
@@ -0,0 +1,27 @@
1
+ import { type FpPath, type FpSvgJs, type WfData } from '@expofp/schema';
2
+ /**
3
+ * Read access to the legacy drawing/wayfinding payloads behind the config's
4
+ * refs. The config carries only `$ref`s; `loadConfig` resolved the drawing
5
+ * (`fpSvgJsRef`) and the graph (`wfDataJsRef`) before the floorplan booted,
6
+ * and lazy layers are resolved on demand (`config-load-layer.ts`) — this
7
+ * module reads them all back synchronously from `@expofp/resolve`'s memo.
8
+ * Payloads settle with every asset URL already absolute (schema-aware
9
+ * resolution), so these are plain reads.
10
+ *
11
+ * The old `window.__fp<layerName>` alias lookups are gone: a layer name maps
12
+ * to its lazily-resolved payload, or to the eager drawing when it names the
13
+ * default layer (whose drawing IS `fp.svg.js`). Newer converters emit ONLY
14
+ * the layer-suffixed globals in layer files (`window['__fpBooth'] = …`), but
15
+ * the loader folds those onto the canonical `__fp`/`__fpPaths` keys when the
16
+ * payload resolves (`normalizeFpSvgLayerAliases`, `@expofp/config`) — so
17
+ * these reads see one canonical shape from either converter generation.
18
+ */
19
+ /** The eagerly-resolved `fp.svg.js` payload (drawing + plan-wide metadata). */
20
+ export declare function getFpSvgJs(): FpSvgJs;
21
+ /** One layer's SVG document (`''` = the default drawing), asset hrefs resolved. */
22
+ export declare function getFpSvg(layerName?: string): string | undefined;
23
+ /** One layer's triangulated meshes (`''` = the default drawing). */
24
+ export declare function getFpPaths(layerName?: string): FpPath[] | undefined;
25
+ /** The wayfinding graph; `null` while unloaded or when the plan has none. */
26
+ export declare function getWfData(): WfData | null;
27
+ //# sourceMappingURL=fp-payloads.d.ts.map
@@ -0,0 +1 @@
1
+ import{getConfig as f}from"@expofp/config";import{getResolved as n,isResolved as o}from"@expofp/resolve";export function getFpSvgJs(){const t=f().fpSvgJsRef;if(!t)throw new Error("No drawing in the config (fpSvgJsRef is not set)");return n(t)}function i(t){const e=f().fpSvgLayerJsRefs[t];if(e&&o(e))return n(e);const r=getFpSvgJs();if(t===""||t===r.__fpDefaultLayer)return r}export function getFpSvg(t=""){return i(t)?.__fp}export function getFpPaths(t=""){return i(t)?.__fpPaths}export function getWfData(){const t=f().wfDataJsRef;return!t||!o(t)?null:n(t).__wfData??null}
@@ -1 +1 @@
1
- export const fpGeo=window.__fpGeo;
1
+ import{getFpSvgJs as o}from"./fp-payloads";export const fpGeo=o().__fpGeo;
@@ -1,4 +1,10 @@
1
- import { type Data } from './Data';
2
- declare const data: Data;
1
+ import { type Config } from '@expofp/config';
2
+ /**
3
+ * The event data document, read straight off the active config — the merged,
4
+ * asset-resolved, normalized and frozen copy `loadConfig` produced (it carries
5
+ * every legacy `data.js` field; `window.__data` is gone). This module only
6
+ * loads inside the floorplan chunk, after `load()` has called `setConfig`.
7
+ */
8
+ declare const data: Config;
3
9
  export default data;
4
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- import t from"./validate-data";const a=window.__data;t(a);export default a;
1
+ import{getConfig as t}from"@expofp/config";const o=t();export default o;
@@ -9,6 +9,9 @@ declare let floors: {
9
9
  }[];
10
10
  export { floors, svgArea, svgAreaExplicit, svgViewBox };
11
11
  export declare function getTrianglesFromFpPaths(index: number, suffix: string): number[][][];
12
- export declare let gtePathByIndex: (index: number, suffix?: string) => any;
12
+ export declare let gtePathByIndex: (index: number, suffix?: string) => {
13
+ positions: [number, number, (number | undefined)?][];
14
+ cells: [number, number, number][];
15
+ };
13
16
  export declare let getLayerSvg: (layer?: Layer | string) => SVGElement;
14
17
  //# sourceMappingURL=svg.d.ts.map
@@ -1 +1 @@
1
- import{Box as g}from"@expofp/geometry";import*as a from"d3-selection";import{STRING_META_DELIMITER as _}from"../constants";import v from"../tools/logger";import A from"../tools/settings";import{extractMetaFromString as x}from"../utils/extractMetaFromString";import B from".";const r=new Map;function w(e,n=""){if(r.has(n))return r.get(n);const s=new DOMParser().parseFromString(e,"image/svg+xml").documentElement;s.firstChild.tagName==="parsererror"&&v.error("Parsed svg with error: ",c);const t=new Map;return a.select(s).selectAll("style").each(function(){const i=this.textContent,M=/\.([a-z0-9.]+)\s*{[^}]*fill\s*:\s*([^};]+);[^}]*}/gi;let h;for(;(h=M.exec(i))!==null;){const P=h[1],b=h[2];t.set(P,b)}}),a.select(s).selectAll("*[class]").each(function(){const i=this;i.style.fill=t.get(i.className.baseVal)}),E(s),r.set(n,s),s}let c=w(window.__fp);const l=window.__viewbox,p=a.select(c).select("rect#VIEWBOX").node(),d=c.viewBox.baseVal,m=new g(d.x,d.y,d.width,d.height);let f,u=!1;l?(f=new g(l.x,l.y,l.width,l.height),u=!0,p?.remove()):p?(f=g.fromSvg(p),u=!0,p.remove()):f=m.scale(1.1),a.select(c).attr("width",m.size.width),a.select(c).attr("height",m.size.height),v.log("svgArea",f,"svgViewBox",m),A.wayfinding=!!(!B.hideDirections&&window.__wfData);let S=window.__fpLayersMode?a.select(c).selectAll("[data-floor]").nodes().map(e=>(e.remove(),{name:e.dataset.floor,rect:g.fromSvg(e)})).sort():[];export{S as floors,f as svgArea,u as svgAreaExplicit,m as svgViewBox};export function getTrianglesFromFpPaths(e,n){const o=gtePathByIndex(e,n);for(const t of o.positions)t[1]=Math.abs(t[1]),t.length=2;const s=[];for(const t of o.cells)s.push([o.positions[t[0]],o.positions[t[1]],o.positions[t[2]]]);return s}export let gtePathByIndex=(e,n="")=>{try{return window[`__fpPaths${n}`][e]}catch{return window.__fpPaths[e]}},getLayerSvg=(e="")=>typeof e=="string"?r.has(e)?r.get(e):window[`__fp${e}`]?w(window[`__fp${e}`],e):r.get(""):e.rootParent?r.has(e.rootParent.name)?r.get(e.rootParent.name):window[`__fp${e.rootParent.name}`]?w(window[`__fp${e.rootParent.name}`],e.rootParent.name):r.get(""):window[`__fp${e.name}`]?w(window[`__fp${e.name}`],e.name):r.get("");function E(e){a.select(e).selectAll("[id], [data-name]").each(function(){const n=this;let o={};const s=n.getAttribute("data-name");if(s&&s.includes(_)){const{meta:i}=x(s);o={...o,...i}}const t=n.getAttribute("id");if(t&&t.includes(_)){const{meta:i}=x(t);o={...o,...i}}n.setAttribute("data-meta",JSON.stringify(o))})}
1
+ import{getFpPaths as x,getFpSvg as a,getFpSvgJs as M,getWfData as E}from"./fp-payloads";import{Box as h}from"@expofp/geometry";import*as c from"d3-selection";import{STRING_META_DELIMITER as b}from"../constants";import A from"../tools/logger";import _ from"../tools/settings";import{extractMetaFromString as P}from"../utils/extractMetaFromString";import V from".";const n=new Map;function p(e,r=""){if(n.has(r))return n.get(r);const s=new DOMParser().parseFromString(e,"image/svg+xml").documentElement;s.firstChild.tagName==="parsererror"&&A.error("Parsed svg with error: ",l);const i=new Map;return c.select(s).selectAll("style").each(function(){const t=this.textContent,S=/\.([a-z0-9.]+)\s*{[^}]*fill\s*:\s*([^};]+);[^}]*}/gi;let v;for(;(v=S.exec(t))!==null;){const B=v[1],F=v[2];i.set(B,F)}}),c.select(s).selectAll("*[class]").each(function(){const t=this;t.style.fill=i.get(t.className.baseVal)}),N(s),n.set(r,s),s}let l=p(a());const m=M().__viewbox,d=c.select(l).select("rect#VIEWBOX").node(),u=l.viewBox.baseVal,g=new h(u.x,u.y,u.width,u.height);let f,w=!1;m?(f=new h(m.x,m.y,m.width,m.height),w=!0,d?.remove()):d?(f=h.fromSvg(d),w=!0,d.remove()):f=g.scale(1.1),c.select(l).attr("width",g.size.width),c.select(l).attr("height",g.size.height),A.log("svgArea",f,"svgViewBox",g),_.wayfinding=!!(!V.hideDirections&&E());let I=M().__fpLayersMode?c.select(l).selectAll("[data-floor]").nodes().map(e=>(e.remove(),{name:e.dataset.floor,rect:h.fromSvg(e)})).sort():[];export{I as floors,f as svgArea,w as svgAreaExplicit,g as svgViewBox};export function getTrianglesFromFpPaths(e,r){const o=gtePathByIndex(e,r),s=o.positions.map(t=>[t[0],Math.abs(t[1])]),i=[];for(const t of o.cells)i.push([s[t[0]],s[t[1]],s[t[2]]]);return i}export let gtePathByIndex=(e,r="")=>(x(r)??x())[e],getLayerSvg=(e="")=>typeof e=="string"?n.has(e)?n.get(e):a(e)?p(a(e),e):n.get(""):e.rootParent?n.has(e.rootParent.name)?n.get(e.rootParent.name):a(e.rootParent.name)?p(a(e.rootParent.name),e.rootParent.name):n.get(""):a(e.name)?p(a(e.name),e.name):n.get("");function N(e){c.select(e).selectAll("[id], [data-name]").each(function(){const r=this;let o={};const s=r.getAttribute("data-name");if(s&&s.includes(b)){const{meta:t}=P(s);o={...o,...t}}const i=r.getAttribute("id");if(i&&i.includes(b)){const{meta:t}=P(i);o={...o,...t}}r.setAttribute("data-meta",JSON.stringify(o))})}
@@ -1,18 +1,18 @@
1
+ import { type Consent } from '@expofp/config';
2
+ import { type Camera, type ListPanel, type PlannerOptions } from '@expofp/schema';
1
3
  import type { CurrentPosition, MarkersData } from './store/RouteStore';
2
4
  import type { Visibility } from './store/types';
3
5
  import type { FloorPlan, FloorPlanCustomButtonEvent, FloorPlanDetailsEvent, FloorPlanGetCoordsEvent, FloorPlanMarkerEvent, FloorPlanOptions, GeoConfig } from './types';
4
6
  import { type Bounds, type POISelectors } from './types/sdk.types';
5
7
  export default class FloorPlanLoader implements FloorPlan {
6
- protected readonly options: FloorPlanOptions;
7
8
  protected readonly renderTarget: HTMLDivElement;
8
9
  private readonly _ready;
9
10
  readonly element: HTMLDivElement;
10
11
  readonly eventId: string;
11
- readonly dataUrl: string;
12
12
  readonly noOverlay: boolean;
13
13
  readonly offHistory: boolean;
14
14
  readonly ignoreQuery: boolean;
15
- readonly allowConsent: boolean | undefined;
15
+ protected readonly consent: Consent;
16
16
  readonly onInit: (fp: FloorPlan) => void;
17
17
  readonly disableRuntimeAlerts: boolean;
18
18
  readonly viewerMode: boolean;
@@ -24,6 +24,8 @@ export default class FloorPlanLoader implements FloorPlan {
24
24
  alwaysShowSidebar: boolean;
25
25
  get ready(): Promise<void>;
26
26
  get previewMode(): boolean;
27
+ /** @deprecated The consent decision lives on the config — set the `consent` option instead. */
28
+ get allowConsent(): boolean | undefined;
27
29
  onBoothClick: (e: FloorPlanBoothClickEvent) => void;
28
30
  onBookmarkClick: (e: FloorPlanBookmarkClickEvent) => void;
29
31
  onVisitedClick: (e: FloorPlanVisitedClickEvent) => void;
@@ -66,6 +68,11 @@ export default class FloorPlanLoader implements FloorPlan {
66
68
  boothsList(): any;
67
69
  categoriesList(): any;
68
70
  selectCategory(nameOrSlug?: string): void;
71
+ select(slugOrExternalId: string): void;
72
+ showList(list: ListPanel): void;
73
+ selectTour(tourId: string): void;
74
+ openPlanner(options?: PlannerOptions): void;
75
+ startBuildRoute(): void;
69
76
  getVisibility(): any;
70
77
  setVisibility(visibility: Visibility): void;
71
78
  findLocation(): void;
@@ -75,6 +82,8 @@ export default class FloorPlanLoader implements FloorPlan {
75
82
  padding?: number;
76
83
  }): void;
77
84
  switchView(): void;
85
+ setCamera(camera: Camera): void;
86
+ getCamera(): Camera;
78
87
  fitBounds(): void;
79
88
  getBounds(selectors: POISelectors): Bounds | undefined;
80
89
  getBoothRect(name: string): any;
@@ -105,6 +114,6 @@ export default class FloorPlanLoader implements FloorPlan {
105
114
  deselectRoute(): void;
106
115
  reset(): void;
107
116
  selectAccessibleRoute(waypoints: RouteWaypoint[]): void;
108
- constructor(options?: FloorPlanOptions);
117
+ constructor(options: FloorPlanOptions, element: HTMLDivElement);
109
118
  }
110
119
  //# sourceMappingURL=floorplan.loader.d.ts.map
@@ -1 +1 @@
1
- import{PREVIEW_MODE_ATTRIBUTE as M}from"./constants";import c from"./tools/base-runtime-url";import{loadCss as R,loadFont as g,loadJs as k}from"./tools/loaders";import I from"./tools/logger";import{buildRebookingUrl as T,getRebookingToken as A,retainRebookingToken as F}from"./tools/rebookingUrl";import{initSentry as V}from"./tools/sentry";import{sleep as H}from"./utils";import{initI18n as z}from"./utils/i18n";import G from"./utils/is-debug";import N from"./utils/is-localhost";import U from"./utils/is-webview";import{loadCustomCss as Q}from"./utils/loadCustomCss";import{loadIcons as q}from"./utils/loadIcons";import W from"./utils/mergeExhibitors";import E from"./utils/use-shadow";function t(){throw new Error("FloorPlan not ready")}export default class ${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(M)}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()}getGeoConfig(){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=N&&!G?!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");V({eventId:h||"",isWebview:U}),this.eventId=h,window.__efpEvent=h,window.__efpElement=r;const w=document.createElement("div");w.style.height="100%",w.style.width="100%",r.appendChild(w);let n;if(U&&(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=w.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=w;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,I.log("Instantiating ExpoFP floorplan",e.element,h);const S=u+"data.js",L=u+"wf.data.js",x=u+"fp.svg.js",O=[k(L),k(S),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(O);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}await z();const m=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 _=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(m.get("t"))})});let p=[];d.ok&&(p=(await d.json()).map(o.dataMapper)),window.__heatmapDataYah={yah:p}};if(m.get("heatmap")==="true")try{if(m.get("type")==="yah")m.get("subtype")==="kiosk"?await _({dataUrl:"/api/kiosks/list/viewer",dataMapper:o=>({...o,id:o.key,name:`Kiosk ${o.key}`})}):await _({dataUrl:"/api/v1/you-are-here/qr-code/list/viewer",dataMapper:(o,s)=>({...o,name:`QR Code #${s+1}`})});else{const o=new URL("/api/fp-stats/get",f.origin);o.searchParams.set("expoId",C),o.searchParams.set("type","booview"),o.searchParams.set("t",decodeURIComponent(m.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(m.get("t")));const[d,p]=await Promise.all([fetch(o.toString()),fetch(s.toString())]),[P,j]=await Promise.all([d.json(),p.json()]);window.__heatmapData={booths:P,exhibitors:j}}}catch(o){console.error("Heatmap: Initialization error",o)}try{const o=A();if(o){F(o);const s=T("api/rebooking-data",{rt:o,expoKey:h}),d=await fetch(s);if(d.ok){const p=await d.json();W(i,p)}i.isRebooking=d.ok}else i.isRebooking=!1}catch(o){console.error(o)}const B=[R(c+"vendor/sanitize-css/sanitize.css",n),R(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}),Q(i,n),q(b.icons)];await Promise.all(B),b.enableRotation=i?.enableRotation??!1,b.alwaysShowSidebar=i?.alwaysShowSidebar??!1,I.log("Data loaded"),window.__storeInitAllowed=!0;const{default:D}=await import("./floorplan.ready");for(document.querySelectorAll(".expofp-floorplan-loader").forEach(o=>o.remove());r.firstChild&&r.firstChild!==w;)r.removeChild(r.firstChild);Object.setPrototypeOf(b,D.prototype).init()})()}}
1
+ import{getConfig as v}from"@expofp/config";import{PREVIEW_MODE_ATTRIBUTE as D}from"./constants";import c from"./tools/base-runtime-url";import{loadCss as R,loadFont as p}from"./tools/loaders";import x from"./tools/logger";import{initSentry as T}from"./tools/sentry";import{heatmapEnabled as F}from"./utils/heatmap-enabled";import{initI18n as j}from"./utils/i18n";import A from"./utils/is-debug";import V from"./utils/is-localhost";import _ from"./utils/is-webview";import{loadCustomCss as H}from"./utils/loadCustomCss";import{loadIcons as z}from"./utils/loadIcons";import E from"./utils/use-shadow";function e(){throw new Error("FloorPlan not ready")}export default class G{renderTarget;_ready;element;eventId;noOverlay;offHistory;ignoreQuery;consent;onInit;disableRuntimeAlerts;viewerMode;maplibre;efpStyleLoadHandler;resolveReady;icons=new Map;enableRotation=!0;alwaysShowSidebar=!1;get ready(){return this._ready}get previewMode(){return v().previewMode||this.element.hasAttribute(D)}get allowConsent(){return this.consent==="ask"?void 0:this.consent==="granted"}onBoothClick;onBookmarkClick;onVisitedClick;onCategoryClick;onFpConfigured;onDirection;onDetails;onExhibitorCustomButtonClick;onGetCoordsClick;onMarkerClick;onLeaveEvent;selectBooth(t){e()}selectExhibitor(t){e()}selectRoute(t,i){e()}getOptimizedRoutes(t){e()}selectCurrentPosition(t,i,n){e()}setBookmarks(t){e()}setEntitiesBookmarks(t){e()}setEntitiesVisited(t){e()}setMarkers(t){e()}updateLayerVisibility(t,i){e()}getCenterCoordinates(){e()}applyParameters(t){e()}exhibitorsList(){e()}boothsList(){e()}categoriesList(){e()}selectCategory(t){e()}select(t){e()}showList(t){e()}selectTour(t){e()}openPlanner(t){e()}startBuildRoute(){e()}getVisibility(){e()}setVisibility(t){e()}findLocation(){e()}zoomIn(){e()}zoomOut(){e()}zoomTo(t,i){e()}switchView(){e()}setCamera(t){e()}getCamera(){e()}fitBounds(){e()}getBounds(t){e()}getBoothRect(t){e()}convertToGeo(t,i){e()}getGeoConfig(){e()}unstable_destroy(){e()}highlightExhibitors(t){e()}highlightBooths(t){e()}onCurrentPositionChanged(t){e()}search(t){e()}getFloors(){e()}onFloorActivated(t){e()}activateFloor(t){e()}showPathway(t,i){e()}showPathwayOnly(t,i){e()}hidePathways(){e()}showSearch(){e()}changeLanguage(t){e()}isGpsTrackingEnabled(){e()}setGpsTrackingEnabled(t){e()}deselectCurrentPosition(){e()}deselectRoute(){e()}reset(){e()}selectAccessibleRoute(t){e()}constructor(t,i){const n=v();if(this.noOverlay=!!n.noOverlay,this.offHistory=!!n.offHistory,this.ignoreQuery=n.ignoreQuery,this.consent=n.consent,this.consent==="ask"&&(_?this.consent="granted":V&&!A&&(this.consent="denied")),this.onBoothClick=t.onBoothClick,this.onBookmarkClick=t.onBookmarkClick,this.onVisitedClick=t.onVisitedClick,this.onCategoryClick=t.onCategoryClick,this.onDetails=t.onDetails,this.onExhibitorCustomButtonClick=t.onExhibitorCustomButtonClick,this.onGetCoordsClick=t.onGetCoordsClick,this.onMarkerClick=t.onMarkerClick,this.onFpConfigured=t.onFpConfigured,this.onDirection=t.onDirection,this.onInit=t.onInit,this.onCurrentPositionChanged=t.onCurrentPositionChanged,this.onFloorActivated=t.onFloorActivated,this.onLeaveEvent=t.onLeaveEvent,this.viewerMode=!!n.viewerMode,this.disableRuntimeAlerts=n.disableRuntimeAlerts,this.maplibre=n.maplibre,window.__efpMaplibre=n.maplibre,this._ready=new Promise((d,r)=>{this.resolveReady=d}),this.element=i,i.__expofp)throw new Error("Element already in use");i.__expofp=this;const y=n.expo;T({eventId:y||"",isWebview:_}),this.eventId=y,window.__efpEvent=y,window.__efpElement=i;const h=document.createElement("div");h.style.height="100%",h.style.width="100%",i.appendChild(h);let s;if(E){s=h.attachShadow({mode:"open"});const d=s,r=document;d.createElement=(...a)=>r.createElement(...a),d.createElementNS=(...a)=>r.createElementNS(...a),d.createTextNode=(...a)=>r.createTextNode(...a)}else s=h;const f=document.createElement("div");f.style.height="100%",f.style.width="100%",s.appendChild(f),E&&Object.defineProperty(f,"ownerDocument",{value:s}),window.__efpShadowDOMStyleParent=E?s:void 0,this.renderTarget=f,x.log("Instantiating ExpoFP floorplan",i,y);let k=0;this.efpStyleLoadHandler=function(d){const r=window.__efpStyleElements;for(;k<r.length;){const a=r[k];s.appendChild(a),k++}},window.addEventListener("__efpStyleLoad",this.efpStyleLoadHandler);const g=this;(async function(){const r=v();await j();const a=new URLSearchParams(window.location.search);let m,w;if(r?.trackerUrl)try{m=new URL(r.trackerUrl),w=m.searchParams.get("expoId")}catch(o){console.error(o)}const I=async o=>{if(!m||!w)return Promise.reject(new Error("trackerUrl or expoId is missing"));const l=new URL(o.dataUrl,m.origin),u=await fetch(l.toString(),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({expoId:w,token:decodeURIComponent(a.get("t"))})});let C=[];u.ok&&(C=(await u.json()).map(o.dataMapper)),window.__heatmapDataYah={yah:C}},b=r?.heatmap??{},S=F(b)||a.get("heatmap")==="true",O=b.variant==="yah"||a.get("type")==="yah",L=b.kiosk===!0||a.get("subtype")==="kiosk";if(S)try{if(O)L?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,l)=>({...o,name:`QR Code #${l+1}`})});else{const o=new URL("/api/fp-stats/get",m.origin);o.searchParams.set("expoId",w),o.searchParams.set("type","booview"),o.searchParams.set("t",decodeURIComponent(a.get("t")));const l=new URL("api/fp-stats/get",m.origin);l.searchParams.set("expoId",w),l.searchParams.set("type","exview"),l.searchParams.set("t",decodeURIComponent(a.get("t")));const[u,C]=await Promise.all([fetch(o.toString()),fetch(l.toString())]),[P,M]=await Promise.all([u.json(),C.json()]);window.__heatmapData={booths:P,exhibitors:M}}}catch(o){console.error("Heatmap: Initialization error",o)}const U=[R(c+"vendor/sanitize-css/sanitize.css",s),R(c+"vendor/perfect-scrollbar/css/perfect-scrollbar.css",s),p("Oswald",c+"fonts/oswald-v17-cyrillic_latin-300.woff",{weight:300}),p("Oswald",c+"fonts/oswald-v17-cyrillic_latin-500.woff",{weight:500}),p("Inter",c+"fonts/inter-400.woff2",{weight:400}),p("Inter",c+"fonts/inter-500.woff2",{weight:500}),p("Inter",c+"fonts/inter-600.woff2",{weight:600}),p("efp-symbols",c+"fonts/efp-symbols.woff",{weight:400}),H(r,s),z(g.icons)];await Promise.all(U),g.enableRotation=r?.enableRotation??!1,g.alwaysShowSidebar=r?.alwaysShowSidebar??!1,x.log("Data loaded"),window.__storeInitAllowed=!0;const{default:B}=await import("./floorplan.ready");for(document.querySelectorAll(".expofp-floorplan-loader").forEach(o=>o.remove());i.firstChild&&i.firstChild!==h;)i.removeChild(i.firstChild);Object.setPrototypeOf(g,B.prototype).init()})()}}
@@ -1,4 +1,5 @@
1
1
  import { Box } from '@expofp/geometry';
2
+ import { type Camera, type ListPanel, type PlannerOptions } from '@expofp/schema';
2
3
  import { createRoot } from 'react-dom/client';
3
4
  import FloorPlanLoader from './floorplan.loader';
4
5
  import { CurrentPosition, MarkersData } from './store/RouteStore';
@@ -48,6 +49,11 @@ export default class FloorPlanReady extends FloorPlanLoader {
48
49
  boothsList(): FloorPlanBooth[];
49
50
  categoriesList(): FloorPlanCategory[];
50
51
  selectCategory(nameOrSlug?: string): void;
52
+ select(slugOrExternalId: string): void;
53
+ showList(list: ListPanel): void;
54
+ selectTour(tourId: string): void;
55
+ openPlanner(options?: PlannerOptions): void;
56
+ startBuildRoute(): void;
51
57
  applyParameters(queryRaw: string): void;
52
58
  getVisibility(): Visibility;
53
59
  setVisibility(visibility: Visibility): void;
@@ -55,6 +61,8 @@ export default class FloorPlanReady extends FloorPlanLoader {
55
61
  zoomIn(): void;
56
62
  zoomOut(): void;
57
63
  switchView(): void;
64
+ setCamera(camera: Camera): void;
65
+ getCamera(): Camera;
58
66
  zoomTo(selectors: POISelectors, options?: {
59
67
  padding?: number;
60
68
  }): void;
@@ -1 +1 @@
1
- import{jsx as g,Fragment as C,jsxs as T}from"react/jsx-runtime";import{Box as S}from"@expofp/geometry";import{ErrorBoundary as M}from"@sentry/react";import I from"debug";import{reaction as R}from"mobx";import{createRoot as V}from"react-dom/client";import{install as $}from"resize-observer";import z from"./components/Layout";import{LANG_KEY as j,MAX_ROUTE_WAYPOINTS as m,PATHWAY_KEY as G}from"./constants";import{fpGeo as x}from"./data/fpGeo";import q from"./floorplan.loader";import{shouldLoadIntercom as N}from"./intercom";import{BoundsSchema as O,POISelectorsSchema as E,ZoomToOptionsSchema as w}from"./schemas/sdk.schemas";import{applyParameters as _,destroyHistory as Y,initRouting as H}from"./services/routing";import r from"./store";import{destroyUiHandlers as U}from"./store/init/init-ui";import{findBooth as P,Route as v,separateExternalIds as B}from"./store/RouteStore";import{destroyGtag as D,GaEventActions as F,sendEventToGa as A,setConsentSettings as K}from"./tools/gtag";import W from"./tools/report-error";import{resetGlobalVariables as X}from"./tools/reset";import Q from"./tools/track-event";import{getStorage as k}from"./utils/entity-storage";import{convertLocalToGps as Z,isValidPointCoords as y}from"./utils/gps";import{getLocales as J,hasLocale as ee}from"./utils/i18n";import{mapEntity as p}from"./utils/mapEntity";import{optimizeWaypointOrder as te}from"./wayfinding/core/routing/optimizeWaypointOrder";const b=I("efp:api");$();export default class re extends q{root;init(){this.ignoreQuery||H(this.offHistory),Q("load"),r.fp=this,K(this.allowConsent),A(F.Load,""),this.root=V(this.renderTarget),this.root.render(g(M,{children:g(z,{offHistory:this.offHistory,allowConsent:this.allowConsent})})),A(F.Rendered,""),R(()=>r.layerStore.layersLoaded,()=>{this.resolveReady(),r.initialized||this.onInit?.(this),r.initialized=!0});const e=N(window.__data);e&&import("./intercom/bootIntercom").then(({bootIntercom:t})=>t(e)).catch(()=>{})}selectBooth(e){if(typeof e!="string"&&!Array.isArray(e)){a("selectBooth","Parameter must be a string or an array of strings.","EFP000000");return}const t=r.boothStore.booths.filter(i=>typeof e=="string"?i.name===e||i.externalId===e:e.includes(i.name)||e.includes(i.externalId));r.selectBooth(t)}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){r.uiState.menu=!1,r.searchStore.resetSearchBox(),r.uiState.details=null;return}const t=r.exhibitorStore.exhibitors.filter(o=>typeof e=="string"?o.name===e||o.externalId===e:e.includes(o.name)||e.includes(o.externalId));if(!t?.length)return;if(typeof e=="string"){r.selectExhibitor(t[0]),r.moveToList([t[0]]);return}const i=t.flatMap(o=>o.booths.map(s=>s.layer)),{description:n}=i.reduce((o,s)=>(o.freq[s.description]=(o.freq[s.description]||0)+1,o.freq[s.description]>o.maxCount&&(o.maxCount=o.freq[s.description],o.mostFrequent=s),o),{freq:{},mostFrequent:i[0],maxCount:0}).mostFrequent;r.layerStore.updateVisibility(n,!0),r.uiState.menu=!1,r.searchStore.resetSearchBox(),r.uiState.details=null,r.uiState.list={type:"filter",items:t,query:{key:"exhibitors",value:t.map(o=>o.externalId).join(",")}},r.moveToList()}highlightExhibitors(e){Array.isArray(e)||a("highlightExhibitors","Parameter must be an array of strings.","EFP000200"),r.boothStore.highlightedByExternalIds=[],r.exhibitorStore.highlightedByExternalIds=[...e]}highlightBooths(e){Array.isArray(e)||a("highlightBooths","Parameter must be an array of strings.","EFP000300"),r.exhibitorStore.highlightedByExternalIds=[],r.boothStore.highlightedByExternalIds=[...e]}highlightEntities(e){Array.isArray(e)||a("highlightEntities","Parameter must be an array of strings.","EFP000400");const{boothExternalIds:t,exhibitorExternalIds:i}=B(e);r.boothStore.highlightedByExternalIds=[...t],r.exhibitorStore.highlightedByExternalIds=[...i]}selectRoute(e,t){if(Array.isArray(e)){let i=[...e];const n=i.shift(),o=i.pop();if(i.length>m)throw new Error(`The maximum number of waypoints is ${m}.`);if(!n||!o){a("selectRoute","Invalid route format: When providing an array, it must include at least two points: a start and a destination.","EFP000401");return}r.routeStore.selectRoute(new v(d(n),d(o),i.map(d)));return}e||a("selectRoute","At a minimum, the starting point must be passed.","EFP000402"),r.routeStore.selectRoute(new v(d(e),d(t)))}getOptimizedRoutes(e){if(!Array.isArray(e))return a("getOptimizedRoutes","Parameter must be an array.","EFP000500"),[];if(e.length>m)throw new Error(`The maximum number of waypoints is ${m}.`);const t=e.map(d).filter(n=>!!n);if(!t.length)throw new Error("No booths found for the provided waypoints.");const i=new Map;for(const n of t){const o=n.layer?.name??"",s=i.get(o);s?s.push(n):i.set(o,[n])}return Array.from(i.values()).map(n=>({waypoints:te(n.map(o=>[o.name,{cx:o.rect.center.x,cy:o.rect.center.y}]))}))}selectCurrentPosition(e,t,i){const n=y(e.x)&&y(e.y),o=y(e.lng)&&y(e.lat);!n&&!o&&a("selectCurrentPosition","A point must be passed. Either (x,y) or (lat,lng) are required.","EFP000600"),r.routeStore.selectCurrentPosition(e,t,i),this.onCurrentPositionChanged?.(e)}setBookmarks(e){(!Array.isArray(e)||!e.length)&&a("setBookmarks","Parameter must be an array.","EFP000700"),e.forEach(t=>{const i=r.exhibitorStore.exhibitors.find(n=>n.name===t.name||n.externalId===t.externalId);i&&(i.bookmarked=t.bookmarked)})}setEntitiesBookmarks(e){if(!Array.isArray(e)||!e.length){a("setEntitiesBookmarks","Parameter must be an array.","EFP000701");return}const t=["exhibitor","event","speaker","booth"],i=e.find(s=>!s.type||!t.includes(s.type));if(i){a("setEntitiesBookmarks",`Invalid entity type: ${i.type}. Must be one of: ${t.join(", ")}.`,"EFP000702");return}const n=k("bookmarked"),o={exhibitor:{existingIds:new Set(n.exhibitors||[]),finder:s=>r.exhibitorStore.findExhibitor(s),replacer:s=>r.exhibitorStore.replaceBookmarked(s)},event:{existingIds:new Set(n.events||[]),finder:s=>r.eventStore.findByNameOrSlug(s),replacer:s=>r.eventStore.replaceBookmarked(s)},speaker:{existingIds:new Set(n.speakers||[]),finder:s=>r.speakerStore.speakers.find(h=>h.name===s||h.externalId===s||h.slug===s),replacer:s=>r.speakerStore.replaceBookmarked(s)},booth:{existingIds:new Set(n.booths||[]),finder:s=>{const h=r.boothStore.findBooth(s);return h?.exhibitors.length===0?h:void 0},replacer:s=>r.boothStore.replaceBookmarked(s)}};e.forEach(s=>{const h=o[s.type],c=s.name||s.externalId||"",u=h.finder(c);u?s.bookmarked?h.existingIds.add(u.id):h.existingIds.delete(u.id):console.warn(`Entity not found: ${s.type} with query "${c}"`)}),Object.values(o).forEach(s=>{s.replacer(Array.from(s.existingIds))})}setEntitiesVisited(e){if(!Array.isArray(e)||!e.length){a("setEntitiesVisited","Parameter must be an array.","EFP000703");return}const t=["exhibitor","event"],i=e.find(s=>!s.type||!t.includes(s.type));if(i){a("setEntitiesVisited",`Invalid entity type: ${i.type}. Must be one of: ${t.join(", ")}.`,"EFP000704");return}const n=k("visited"),o={exhibitor:{existingIds:new Set(n.exhibitors||[]),finder:s=>r.exhibitorStore.findExhibitor(s),replacer:s=>r.exhibitorStore.replaceVisited(s)},event:{existingIds:new Set(n.events||[]),finder:s=>r.eventStore.findByNameOrSlug(s),replacer:s=>r.eventStore.replaceVisited(s)}};e.forEach(s=>{const h=o[s.type],c=s.name||s.externalId||"",u=h.finder(c);u?s.visited?h.existingIds.add(u.id):h.existingIds.delete(u.id):console.warn(`Entity not found: ${s.type} with query "${c}"`)}),Object.values(o).forEach(s=>{s.replacer(Array.from(s.existingIds))})}setMarkers(e){if(!e||!Array.isArray(e.icons)||!Array.isArray(e.markers)){a("setMarkers","Invalid input.","EFP000800");return}r.routeStore.setMarkers(e)}selectMarker(e,t=!0){return typeof e!="string"&&a("selectMarker","The identifier must be passed.","EFP000900"),r.routeStore.selectMarker(e,t)}drawCircles(e){Array.isArray(e)||a("drawCircles","Invalid input.","EFP000A00"),r.uiState.debugCircles=e}checkRoutes(){r.routeStore.checkRoutes()}updateLayerVisibility(e,t){typeof e!="string"&&a("updateLayerVisibility","The layer name (string) must be passed.","EFP000B00"),t||a("updateLayerVisibility","Passing a false value to visible will have no effect.","EFP000B01"),r.layerStore.updateVisibility(e,t)}getCenterCoordinates(){return r.fp.getCenterCoordinates()}exhibitorsList(){return r.exhibitorStore.exhibitors.map(e=>p(e))}boothsList(){return r.boothStore.booths.map(e=>p(e))}categoriesList(){return r.categoryStore.categories.map(e=>p(e))}selectCategory(e){if(e==null||typeof e!="string"){r.searchStore.selectSearch();return}const t=e?.toLowerCase(),i=r.categoryStore.categories.find(({name:n,slug:o})=>n?.toLowerCase()===t||o?.toLowerCase()===t);if(!i){a("selectCategory",`Category ${e} not found.`,"EFP000C01");return}r.selectCategory(i)}applyParameters(e){typeof e!="string"&&a("applyParameters","A query string must be passed.","EFP000D00"),_(e)}getVisibility(){return r.uiState.visibility}setVisibility(e){(typeof e!="object"||!Object.keys(e).length)&&a("setVisibility","The parameter must be passed.","EFP000E00"),r.uiState.setVisibility(e)}findLocation(){r.routeStore.findLocation()}zoomIn(){r.uiState.zoomIn()}zoomOut(){r.uiState.zoomOut()}switchView(){r.maplibreStore.activateMaplibre()}zoomTo(e,t){b("zoomTo called with selectors=%O options=%O",e,t);const i=E.safeParse(e);if(!i.success){a("zoomTo",i.error.message,"EFP001600");return}const n=w.safeParse(t);if(!n.success){a("zoomTo",n.error.message,"EFP001601");return}const o=this.getBounds(e);o&&this.fitBounds(o,t)}getBounds(e){b("getBounds called with selectors=%O",e);const t=E.safeParse(e);if(!t.success){a("getBounds",t.error.message,"EFP001400");return}const i=[];if(e.booths?.forEach(o=>{let s;o.externalId?s=r.boothStore.boothByExternalId.get(o.externalId):o.name&&(s=r.boothStore.boothByName.get(o.name.toLowerCase())),s?.rect&&i.push(s.rect)}),e.exhibitors?.forEach(o=>{let s;o.externalId?s=r.exhibitorStore.exhibitorByExternalId.get(o.externalId):o.name&&(s=r.exhibitorStore.exhibitorByName.get(o.name.toLowerCase())),s?.booths?.forEach(h=>{h.rect&&i.push(h.rect)})}),i.length===0)return;const n=S.fromUnion(...i);return{leftTop:{x:n.min.x,y:n.min.y},rightBottom:{x:n.max.x,y:n.max.y}}}fitBounds(e,t){if(b("fitBounds called with bounds=%O options=%O",e,t),!e){r.uiState.fitBounds();return}const i=O.safeParse(e);if(!i.success){a("fitBounds",i.error.message,"EFP001500");return}const n=w.safeParse(t);if(!n.success){a("fitBounds",n.error.message,"EFP001501");return}const o=S.fromMinMax({x:e.leftTop.x,y:e.leftTop.y},{x:e.rightBottom.x,y:e.rightBottom.y});r.uiState.moveToRect=t?.padding?o.expand(t.padding):o}getBoothRect(e){typeof e!="string"&&a("getBoothRect","A booth name must be passed.","EFP000F00");const t=P(e)?.rect;return t?l.fromBox(t):void 0}convertToGeo(e,t){if(!x?.properties?.config){a("convertToGeo","The coordinates cannot be converted because the GPS configuration is not defined.","EFP001000");return}if(!e||!t){a("convertToGeo","Both coordinates must be passed.","EFP001001");return}return Z(e,t,x.properties.config)}getGeoConfig(){const e=x?.properties?.config;return e?{bearing:e.bearing??0,p0:e.p0,p1:e.p1,p2:e.p2}:null}unstable_destroy(){let e=window.__efpElement.firstChild;X(),window.removeEventListener("__efpStyleLoad",this.efpStyleLoadHandler),window.removeEventListener("error",W),r.maplibreStore.dispose(),Y(),U(),D(),[...document.getElementsByTagName("script")].filter(i=>i.src.indexOf("/fp.svg")>-1||i.src.indexOf("/wf.data.js")>-1||i.src.indexOf("/data.js")>-1).forEach(i=>i.remove()),this.root.unmount(),e.remove()}search(e){return typeof e!="string"&&a("search","A search string must be passed.","EFP001100"),r.fuzzySearchEngineStore.loadEngine().then(()=>(r.searchStore.selectSearch(e),r.uiState.fuzzySearchItems.map(t=>({item:p(t.item),score:t.score}))))}getFloors(){return r.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 t=this.getFloors();if(e.name){const i=t.find(n=>n.name===e.name||n.shortName===e.name);if(!i){a("activateFloor",`Floor with name "${e.name}" not found.`,"EFP001201");return}if(i.active)return;this.updateLayerVisibility(i.name,!0);return}if(e.index!==null){const i=t.find(o=>o.index===e.index),n=i?.name;if(!n){a("activateFloor",`Floor at index ${e.index} does not exist.`,"EFP001203");return}if(i.active)return;this.updateLayerVisibility(n,!0);return}}showPathway(e,t){const i=new URLSearchParams;if(i.set(G,e),t?.length){const{boothExternalIds:n,exhibitorExternalIds:o}=B(t);n.length>0&&i.set("booths",n.join(",")),o.length>0&&i.set("exhibitors",o.join(","))}this.applyParameters(i.toString())}showPathwayOnly(e,t){this.activateFloor({name:t}),r.layerStore.showPathWay(e),r.uiState.setPathwayOnlyMode(!0);const i=r.layerStore.findLayer(e),n=r.layerStore.findLayer(t),o=i?.rect||i?.viewbox?i:n;if(o?.rect||o?.viewbox){const s=o.viewbox??o.rect;r.uiState.moveToRect=s.clone()}}hidePathways(){this.highlightBooths([]),r.layerStore.hidePathways(),r.uiState.setPathwayOnlyMode(!1)}showSearch(){r.selectSearch("")}changeLanguage(e){const t=e?.toLowerCase?.();if(!ee(t)){a("changeLanguage",`Language "${e}" was not found. Available languages: ${J().map(n=>n.id).join(",")}`,"EFP001300");return}const i=new URLSearchParams;i.set(j,t),this.applyParameters(i.toString())}isGpsTrackingEnabled(){return r.routeStore.gpsEnabled}setGpsTrackingEnabled(e){r.routeStore.setGpsTrackingEnabled(e)}deselectCurrentPosition(){r.routeStore.selectCurrentPosition(null,!1)}deselectRoute(){r.routeStore.selectRoute(null),r.routeStore.setOnlyAccessible(!1)}reset(){this.selectBooth(""),this.selectExhibitor(""),this.selectCategory(),this.deselectCurrentPosition(),this.deselectRoute(),this.highlightEntities([]),r.uiState.kioskData&&r.resetCameraFn?r.resetCameraFn?.():this.fitBounds()}selectAccessibleRoute(e){r.routeStore.setOnlyAccessible(!0),this.selectRoute(e)}}function d(f){return typeof f=="string"?P(f):r.routeStore.getNearestBooth(f)}let L=0;function a(f,e,t){const i=`Error calling "${f}" SDK method.`,n=`${e.endsWith(".")?e:e+"."} More information at`;let o="https://js-sdk.expofp.com/api/packages";if(t&&(o+=`#error-${t}`),console.error(`${i} ${n} ${o}`),r.fp.disableRuntimeAlerts)return;r.uiState.setGlobalErrorMessage({title:i,body:T(C,{children:[n," ",g("a",{href:o,target:"_blank",rel:"noreferrer",children:o})]})}),clearTimeout(L);const s=8e3;L=window.setTimeout(()=>{const h=async()=>{r.uiState.globalErrorMessages.length>0&&(r.uiState.popGlobalErrorMessage(),await new Promise(c=>setTimeout(c,s/2)),h())};h()},s)}class l{x1;y1;x2;y2;get h(){return Math.abs(this.y2-this.y1)}get w(){return Math.abs(this.x2-this.x1)}get cx(){return(this.x1+this.x2)/2}get cy(){return(this.y1+this.y2)/2}constructor(e,t,i,n){if(e>i){const o=e;e=i,i=o}if(t>n){const o=t;t=n,n=o}this.x1=e,this.y1=t,this.x2=i,this.y2=n}static fromBox(e){return new l(e.min.x,e.min.y,e.max.x,e.max.y)}static fromCxcywh(e,t,i,n){return new l(e-i/2,t-n/2,e+i/2,t+n/2)}contains(e){return e.x1>=this.x1&&e.x2<=this.x2&&e.y1>=this.y1&&e.y2<=this.y2}intersects(e){const t=Math.max(this.x1,e.x1),i=Math.min(this.x2,e.x2),n=Math.max(this.y1,e.y1),o=Math.min(this.y2,e.y2);return i>=t&&o>=n}getIntersection(e){const t=Math.max(this.x1,e.x1),i=Math.min(this.x2,e.x2),n=Math.max(this.y1,e.y1),o=Math.min(this.y2,e.y2);return i>=t&&o>=n?new l(t,n,i,o):new l(0,0,0,0)}getRotated90(){return l.fromCxcywh(this.cx,this.cy,this.h,this.w)}normalize(e,t){return new l(this.x1/e,this.y1/t,this.x2/e,this.y2/t)}withPadding(e,t=e){return this.w<e*2||this.h<t*2?this:l.fromCxcywh(this.cx,this.cy,this.w-e*2,this.h-t*2)}scale(e){return new l(this.x1*e,this.y1*e,this.x2*e,this.y2*e)}getArea(){return this.w*this.h}clone(){return new l(this.x1,this.y1,this.x2,this.y2)}translate(e,t){return this.x1+=e,this.x2+=e,this.y1+=t,this.y2+=t,this}equals(e){return e.x1===this.x1&&e.x2===this.x2&&e.y1===this.y1&&e.y2===this.y2}toString(){return this.x1+","+this.y1+","+this.w+","+this.h}containsPoint(e,t){return e>=this.x1&&e<=this.x2&&t>=this.y1&&t<=this.y2}}
1
+ import{jsx as x,Fragment as A,jsxs as T}from"react/jsx-runtime";import{Box as E}from"@expofp/geometry";import{CameraSchema as I}from"@expofp/schema";import{optimizeWaypointOrder as M}from"@expofp/wayfinding";import{ErrorBoundary as R}from"@sentry/react";import $ from"debug";import{reaction as V}from"mobx";import{createRoot as z}from"react-dom/client";import{install as j}from"resize-observer";import G from"./components/Layout";import{MAX_ROUTE_WAYPOINTS as d}from"./constants";import q from"./data";import{fpGeo as b}from"./data/fpGeo";import N from"./floorplan.loader";import{shouldLoadIntercom as O}from"./intercom";import{BoundsSchema as U,POISelectorsSchema as w,ZoomToOptionsSchema as P}from"./schemas/sdk.schemas";import{applyDeclarativeConfig as H,applyParameters as Y,applyPathway as _,initUrlRouting as D}from"./services/url-dispatch";import{destroyUrlSync as W}from"./services/url-sync";import r from"./store";import{destroyUiHandlers as X}from"./store/init/init-ui";import{findBooth as S,Route as v,separateExternalIds as B}from"./store/RouteStore";import{destroyGtag as K,GaEventActions as k,sendEventToGa as F,setConsentSettings as Q}from"./tools/gtag";import Z from"./tools/report-error";import{resetGlobalVariables as J}from"./tools/reset";import ee from"./tools/track-event";import{cameraToMapSettings as te,mapSettingsToCamera as re}from"./utils/camera-map-settings";import{getStorage as C}from"./utils/entity-storage";import{convertLocalToGps as oe,isValidPointCoords as y}from"./utils/gps";import{getLocales as ie,hasLocale as se,setLocale as ne}from"./utils/i18n";import{mapEntity as g}from"./utils/mapEntity";const p=$("efp:api");j();export default class ae extends N{root;init(){H(),this.ignoreQuery||D(this.offHistory),ee("load"),r.fp=this,Q(this.consent),F(k.Load,""),this.root=z(this.renderTarget),this.root.render(x(R,{children:x(G,{offHistory:this.offHistory,consent:this.consent})})),F(k.Rendered,""),V(()=>r.layerStore.layersLoaded,()=>{this.resolveReady(),r.initialized||this.onInit?.(this),r.initialized=!0});const e=O(q);e&&import("./intercom/bootIntercom").then(({bootIntercom:t})=>t(e)).catch(()=>{})}selectBooth(e){if(typeof e!="string"&&!Array.isArray(e)){a("selectBooth","Parameter must be a string or an array of strings.","EFP000000");return}const t=r.boothStore.booths.filter(o=>typeof e=="string"?o.name===e||o.externalId===e:e.includes(o.name)||e.includes(o.externalId));r.selectBooth(t)}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){r.uiState.menu=!1,r.searchStore.resetSearchBox(),r.uiState.details=null;return}const t=r.exhibitorStore.exhibitors.filter(i=>typeof e=="string"?i.name===e||i.externalId===e:e.includes(i.name)||e.includes(i.externalId));if(!t?.length)return;if(typeof e=="string"){r.selectExhibitor(t[0]),r.moveToList([t[0]]);return}const o=t.flatMap(i=>i.booths.map(s=>s.layer)),{description:n}=o.reduce((i,s)=>(i.freq[s.description]=(i.freq[s.description]||0)+1,i.freq[s.description]>i.maxCount&&(i.maxCount=i.freq[s.description],i.mostFrequent=s),i),{freq:{},mostFrequent:o[0],maxCount:0}).mostFrequent;r.layerStore.updateVisibility(n,!0),r.uiState.menu=!1,r.searchStore.resetSearchBox(),r.uiState.details=null,r.uiState.list={type:"filter",items:t,query:{key:"exhibitors",value:t.map(i=>i.externalId).join(",")}},r.moveToList()}highlightExhibitors(e){Array.isArray(e)||a("highlightExhibitors","Parameter must be an array of strings.","EFP000200"),r.boothStore.highlightedByExternalIds=[],r.exhibitorStore.highlightedByExternalIds=[...e]}highlightBooths(e){Array.isArray(e)||a("highlightBooths","Parameter must be an array of strings.","EFP000300"),r.exhibitorStore.highlightedByExternalIds=[],r.boothStore.highlightedByExternalIds=[...e]}highlightEntities(e){Array.isArray(e)||a("highlightEntities","Parameter must be an array of strings.","EFP000400");const{boothExternalIds:t,exhibitorExternalIds:o}=B(e);r.boothStore.highlightedByExternalIds=[...t],r.exhibitorStore.highlightedByExternalIds=[...o]}selectRoute(e,t){if(Array.isArray(e)){let o=[...e];const n=o.shift(),i=o.pop();if(o.length>d)throw new Error(`The maximum number of waypoints is ${d}.`);if(!n||!i){a("selectRoute","Invalid route format: When providing an array, it must include at least two points: a start and a destination.","EFP000401");return}r.routeStore.selectRoute(new v(m(n),m(i),o.map(m)));return}e||a("selectRoute","At a minimum, the starting point must be passed.","EFP000402"),r.routeStore.selectRoute(new v(m(e),m(t)))}getOptimizedRoutes(e){if(!Array.isArray(e))return a("getOptimizedRoutes","Parameter must be an array.","EFP000500"),[];if(e.length>d)throw new Error(`The maximum number of waypoints is ${d}.`);const t=e.map(m).filter(n=>!!n);if(!t.length)throw new Error("No booths found for the provided waypoints.");const o=new Map;for(const n of t){const i=n.layer?.name??"",s=o.get(i);s?s.push(n):o.set(i,[n])}return Array.from(o.values()).map(n=>({waypoints:M(n.map(i=>[i.name,{x:i.rect.center.x,y:i.rect.center.y}]))}))}selectCurrentPosition(e,t,o){const n=y(e.x)&&y(e.y),i=y(e.lng)&&y(e.lat);!n&&!i&&a("selectCurrentPosition","A point must be passed. Either (x,y) or (lat,lng) are required.","EFP000600"),r.routeStore.selectCurrentPosition(e,t,o),this.onCurrentPositionChanged?.(e)}setBookmarks(e){(!Array.isArray(e)||!e.length)&&a("setBookmarks","Parameter must be an array.","EFP000700"),e.forEach(t=>{const o=r.exhibitorStore.exhibitors.find(n=>n.name===t.name||n.externalId===t.externalId);o&&(o.bookmarked=t.bookmarked)})}setEntitiesBookmarks(e){if(!Array.isArray(e)||!e.length){a("setEntitiesBookmarks","Parameter must be an array.","EFP000701");return}const t=["exhibitor","event","speaker","booth"],o=e.find(s=>!s.type||!t.includes(s.type));if(o){a("setEntitiesBookmarks",`Invalid entity type: ${o.type}. Must be one of: ${t.join(", ")}.`,"EFP000702");return}const n=C("bookmarked"),i={exhibitor:{existingIds:new Set(n.exhibitors||[]),finder:s=>r.exhibitorStore.findExhibitor(s),replacer:s=>r.exhibitorStore.replaceBookmarked(s)},event:{existingIds:new Set(n.events||[]),finder:s=>r.eventStore.findByNameOrSlug(s),replacer:s=>r.eventStore.replaceBookmarked(s)},speaker:{existingIds:new Set(n.speakers||[]),finder:s=>r.speakerStore.speakers.find(h=>h.name===s||h.externalId===s||h.slug===s),replacer:s=>r.speakerStore.replaceBookmarked(s)},booth:{existingIds:new Set(n.booths||[]),finder:s=>{const h=r.boothStore.findBooth(s);return h?.exhibitors.length===0?h:void 0},replacer:s=>r.boothStore.replaceBookmarked(s)}};e.forEach(s=>{const h=i[s.type],c=s.name||s.externalId||"",l=h.finder(c);l?s.bookmarked?h.existingIds.add(l.id):h.existingIds.delete(l.id):console.warn(`Entity not found: ${s.type} with query "${c}"`)}),Object.values(i).forEach(s=>{s.replacer(Array.from(s.existingIds))})}setEntitiesVisited(e){if(!Array.isArray(e)||!e.length){a("setEntitiesVisited","Parameter must be an array.","EFP000703");return}const t=["exhibitor","event"],o=e.find(s=>!s.type||!t.includes(s.type));if(o){a("setEntitiesVisited",`Invalid entity type: ${o.type}. Must be one of: ${t.join(", ")}.`,"EFP000704");return}const n=C("visited"),i={exhibitor:{existingIds:new Set(n.exhibitors||[]),finder:s=>r.exhibitorStore.findExhibitor(s),replacer:s=>r.exhibitorStore.replaceVisited(s)},event:{existingIds:new Set(n.events||[]),finder:s=>r.eventStore.findByNameOrSlug(s),replacer:s=>r.eventStore.replaceVisited(s)}};e.forEach(s=>{const h=i[s.type],c=s.name||s.externalId||"",l=h.finder(c);l?s.visited?h.existingIds.add(l.id):h.existingIds.delete(l.id):console.warn(`Entity not found: ${s.type} with query "${c}"`)}),Object.values(i).forEach(s=>{s.replacer(Array.from(s.existingIds))})}setMarkers(e){if(!e||!Array.isArray(e.icons)||!Array.isArray(e.markers)){a("setMarkers","Invalid input.","EFP000800");return}r.routeStore.setMarkers(e)}selectMarker(e,t=!0){return typeof e!="string"&&a("selectMarker","The identifier must be passed.","EFP000900"),r.routeStore.selectMarker(e,t)}drawCircles(e){Array.isArray(e)||a("drawCircles","Invalid input.","EFP000A00"),r.uiState.debugCircles=e}checkRoutes(){r.routeStore.checkRoutes()}updateLayerVisibility(e,t){typeof e!="string"&&a("updateLayerVisibility","The layer name (string) must be passed.","EFP000B00"),t||a("updateLayerVisibility","Passing a false value to visible will have no effect.","EFP000B01"),r.layerStore.updateVisibility(e,t)}getCenterCoordinates(){return r.fp.getCenterCoordinates()}exhibitorsList(){return r.exhibitorStore.exhibitors.map(e=>g(e))}boothsList(){return r.boothStore.booths.map(e=>g(e))}categoriesList(){return r.categoryStore.categories.map(e=>g(e))}selectCategory(e){if(e==null||typeof e!="string"){r.searchStore.selectSearch();return}const t=e?.toLowerCase(),o=r.categoryStore.categories.find(({name:n,slug:i})=>n?.toLowerCase()===t||i?.toLowerCase()===t);if(!o){a("selectCategory",`Category ${e} not found.`,"EFP000C01");return}r.selectCategory(o)}select(e){if(typeof e!="string"){a("select","Parameter must be a string.","EFP001700");return}const t=e,o=t?.toLowerCase(),n=r.boothStore.booths.find(l=>l.slug?.toLowerCase()===o||l.externalId?.toLowerCase()===o||l.externalId?.toLowerCase()?.replace(/\s+/g,"")===o);if(n){setTimeout(()=>r.selectBooth(n),250);return}const i=r.eventStore.eventItems.find(l=>l.slug?.toLowerCase()===o||l.externalId?.toLowerCase()===o);if(i){r.selectEventItem(i,!0);return}const s=r.exhibitorStore.exhibitors.find(l=>l.slug?.toLowerCase()===o||l.externalId?.toLowerCase()===o);if(s){setTimeout(()=>r.clickExhibitor(s),250);return}const h=r.categoryStore.categories.find(l=>l.slug===t);if(h){r.selectCategory(h);return}const c=r.speakerStore.findBySlug(t);if(c){r.selectSpeaker(c,!0);return}t.includes("heatmap=true")||r.searchStore.selectSearch(t)}showList(e){const t={bookmarks:()=>r.selectBookmarks(),visited:()=>r.selectVisited(),sessions:()=>r.selectSessions(),exhibitors:()=>r.selectExhibitors(),speakers:()=>r.selectSpeakers(),tours:()=>r.selectTours(),language:()=>r.selectLanguage()},o=t[e];if(!o){a("showList",`Unknown list "${e}". Must be one of: ${Object.keys(t).join(", ")}.`,"EFP001800");return}o()}selectTour(e){if(typeof e!="string"||!e){a("selectTour","A tour id must be passed.","EFP001900");return}const t=r.toursStore.getTourById(e);t?r.toursStore.launchTour(t,t.name,t.description):(console.warn(`Route with id "${e}" not found`),r.selectTours())}openPlanner(e={}){if(typeof e!="object"||e===null){a("openPlanner","An options object must be passed.","EFP001A00");return}const t=e.from?S(e.from):null;e.fromBookmarks?r.routePlannerStore.launchFromBookmarks(t??void 0):r.routePlannerStore.launchFromSlugs(e.items??[],t??void 0)}startBuildRoute(){r.uiState.startBuildRoute()}applyParameters(e){typeof e!="string"&&a("applyParameters","A query string must be passed.","EFP000D00"),Y(e)}getVisibility(){return r.uiState.visibility}setVisibility(e){(typeof e!="object"||!Object.keys(e).length)&&a("setVisibility","The parameter must be passed.","EFP000E00"),r.uiState.setVisibility(e)}findLocation(){r.routeStore.findLocation()}zoomIn(){r.uiState.zoomIn()}zoomOut(){r.uiState.zoomOut()}switchView(){r.maplibreStore.activateMaplibre()}setCamera(e){p("setCamera called with camera=%O",e);const t=I.safeParse(e);if(!t.success){a("setCamera",t.error.message,"EFP001B00");return}r.uiState.setMapSettings(te(t.data))}getCamera(){return re(r.uiState.mapSettings)}zoomTo(e,t){p("zoomTo called with selectors=%O options=%O",e,t);const o=w.safeParse(e);if(!o.success){a("zoomTo",o.error.message,"EFP001600");return}const n=P.safeParse(t);if(!n.success){a("zoomTo",n.error.message,"EFP001601");return}const i=this.getBounds(e);i&&this.fitBounds(i,t)}getBounds(e){p("getBounds called with selectors=%O",e);const t=w.safeParse(e);if(!t.success){a("getBounds",t.error.message,"EFP001400");return}const o=[];if(e.booths?.forEach(i=>{let s;i.externalId?s=r.boothStore.boothByExternalId.get(i.externalId):i.name&&(s=r.boothStore.boothByName.get(i.name.toLowerCase())),s?.rect&&o.push(s.rect)}),e.exhibitors?.forEach(i=>{let s;i.externalId?s=r.exhibitorStore.exhibitorByExternalId.get(i.externalId):i.name&&(s=r.exhibitorStore.exhibitorByName.get(i.name.toLowerCase())),s?.booths?.forEach(h=>{h.rect&&o.push(h.rect)})}),o.length===0)return;const n=E.fromUnion(...o);return{leftTop:{x:n.min.x,y:n.min.y},rightBottom:{x:n.max.x,y:n.max.y}}}fitBounds(e,t){if(p("fitBounds called with bounds=%O options=%O",e,t),!e){r.uiState.fitBounds();return}const o=U.safeParse(e);if(!o.success){a("fitBounds",o.error.message,"EFP001500");return}const n=P.safeParse(t);if(!n.success){a("fitBounds",n.error.message,"EFP001501");return}const i=E.fromMinMax({x:e.leftTop.x,y:e.leftTop.y},{x:e.rightBottom.x,y:e.rightBottom.y});r.uiState.moveToRect=t?.padding?i.expand(t.padding):i}getBoothRect(e){typeof e!="string"&&a("getBoothRect","A booth name must be passed.","EFP000F00");const t=S(e)?.rect;return t?u.fromBox(t):void 0}convertToGeo(e,t){if(!b?.properties?.config){a("convertToGeo","The coordinates cannot be converted because the GPS configuration is not defined.","EFP001000");return}if(!e||!t){a("convertToGeo","Both coordinates must be passed.","EFP001001");return}return oe(e,t,b.properties.config)}getGeoConfig(){const e=b?.properties?.config;return e?{bearing:e.bearing??0,p0:e.p0,p1:e.p1,p2:e.p2}:null}unstable_destroy(){let e=window.__efpElement.firstChild;J(),window.removeEventListener("__efpStyleLoad",this.efpStyleLoadHandler),window.removeEventListener("error",Z),r.maplibreStore.dispose(),W(),X(),K(),this.root.unmount(),e.remove()}search(e){return typeof e!="string"&&a("search","A search string must be passed.","EFP001100"),r.fuzzySearchEngineStore.loadEngine().then(()=>(r.searchStore.selectSearch(e),r.uiState.fuzzySearchItems.map(t=>({item:g(t.item),score:t.score}))))}getFloors(){return r.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 t=this.getFloors();if(e.name){const o=t.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=t.find(i=>i.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,t){const{boothExternalIds:o,exhibitorExternalIds:n}=t?.length?B(t):{boothExternalIds:[],exhibitorExternalIds:[]};_({pathwayId:e,boothIds:o,exhibitorIds:n})}showPathwayOnly(e,t){this.activateFloor({name:t}),r.layerStore.showPathWay(e),r.uiState.setPathwayOnlyMode(!0);const o=r.layerStore.findLayer(e),n=r.layerStore.findLayer(t),i=o?.rect||o?.viewbox?o:n;if(i?.rect||i?.viewbox){const s=i.viewbox??i.rect;r.uiState.moveToRect=s.clone()}}hidePathways(){this.highlightBooths([]),r.layerStore.hidePathways(),r.uiState.setPathwayOnlyMode(!1)}showSearch(){r.selectSearch("")}changeLanguage(e){const t=e?.toLowerCase?.();if(!se(t)){a("changeLanguage",`Language "${e}" was not found. Available languages: ${ie().map(o=>o.id).join(",")}`,"EFP001300");return}ne(t)}isGpsTrackingEnabled(){return r.routeStore.gpsEnabled}setGpsTrackingEnabled(e){r.routeStore.setGpsTrackingEnabled(e)}deselectCurrentPosition(){r.routeStore.selectCurrentPosition(null,!1)}deselectRoute(){r.routeStore.selectRoute(null),r.routeStore.setOnlyAccessible(!1)}reset(){this.selectBooth(""),this.selectExhibitor(""),this.selectCategory(),this.deselectCurrentPosition(),this.deselectRoute(),this.highlightEntities([]),r.uiState.kioskData&&r.resetCameraFn?r.resetCameraFn?.():this.fitBounds()}selectAccessibleRoute(e){r.routeStore.setOnlyAccessible(!0),this.selectRoute(e)}}function m(f){return typeof f=="string"?S(f):r.routeStore.getNearestBooth(f)}let L=0;function a(f,e,t){const o=`Error calling "${f}" SDK method.`,n=`${e.endsWith(".")?e:e+"."} More information at`;let i="https://js-sdk.expofp.com/api/packages";if(t&&(i+=`#error-${t}`),console.error(`${o} ${n} ${i}`),r.fp.disableRuntimeAlerts)return;r.uiState.setGlobalErrorMessage({title:o,body:T(A,{children:[n," ",x("a",{href:i,target:"_blank",rel:"noreferrer",children:i})]})}),clearTimeout(L);const s=8e3;L=window.setTimeout(()=>{const h=async()=>{r.uiState.globalErrorMessages.length>0&&(r.uiState.popGlobalErrorMessage(),await new Promise(c=>setTimeout(c,s/2)),h())};h()},s)}class u{x1;y1;x2;y2;get h(){return Math.abs(this.y2-this.y1)}get w(){return Math.abs(this.x2-this.x1)}get cx(){return(this.x1+this.x2)/2}get cy(){return(this.y1+this.y2)/2}constructor(e,t,o,n){if(e>o){const i=e;e=o,o=i}if(t>n){const i=t;t=n,n=i}this.x1=e,this.y1=t,this.x2=o,this.y2=n}static fromBox(e){return new u(e.min.x,e.min.y,e.max.x,e.max.y)}static fromCxcywh(e,t,o,n){return new u(e-o/2,t-n/2,e+o/2,t+n/2)}contains(e){return e.x1>=this.x1&&e.x2<=this.x2&&e.y1>=this.y1&&e.y2<=this.y2}intersects(e){const t=Math.max(this.x1,e.x1),o=Math.min(this.x2,e.x2),n=Math.max(this.y1,e.y1),i=Math.min(this.y2,e.y2);return o>=t&&i>=n}getIntersection(e){const t=Math.max(this.x1,e.x1),o=Math.min(this.x2,e.x2),n=Math.max(this.y1,e.y1),i=Math.min(this.y2,e.y2);return o>=t&&i>=n?new u(t,n,o,i):new u(0,0,0,0)}getRotated90(){return u.fromCxcywh(this.cx,this.cy,this.h,this.w)}normalize(e,t){return new u(this.x1/e,this.y1/t,this.x2/e,this.y2/t)}withPadding(e,t=e){return this.w<e*2||this.h<t*2?this:u.fromCxcywh(this.cx,this.cy,this.w-e*2,this.h-t*2)}scale(e){return new u(this.x1*e,this.y1*e,this.x2*e,this.y2*e)}getArea(){return this.w*this.h}clone(){return new u(this.x1,this.y1,this.x2,this.y2)}translate(e,t){return this.x1+=e,this.x2+=e,this.y1+=t,this.y2+=t,this}equals(e){return e.x1===this.x1&&e.x2===this.x2&&e.y1===this.y1&&e.y2===this.y2}toString(){return this.x1+","+this.y1+","+this.w+","+this.h}containsPoint(e,t){return e>=this.x1&&e<=this.x2&&t>=this.y1&&t<=this.y2}}
@@ -1,4 +1,3 @@
1
- import '@expofp/debug';
2
1
  export { load } from './load';
3
2
  export type * from './types';
4
3
  //# sourceMappingURL=index.d.ts.map
package/dist/esm/index.js CHANGED
@@ -1 +1 @@
1
- import"@expofp/debug";import r from"./tools/report-error";window.addEventListener("error",r),window.__efpStyleElements=[];export{load}from"./load";
1
+ import{toDebugSettings as r}from"@expofp/config";import{registerSettings as o}from"@expofp/debug";import{LocalStorageConfigSchema as e}from"@expofp/schema";import t from"./tools/report-error";window.addEventListener("error",t),window.__efpStyleElements=[],o(r(e));export{load}from"./load";
@@ -1,4 +1,4 @@
1
- import { type Data } from '../data/Data';
1
+ import { type Config } from '@expofp/config';
2
2
  import { type IntercomContext } from './types';
3
- export declare function shouldLoadIntercom(data: Data): IntercomContext | null;
3
+ export declare function shouldLoadIntercom(data: Config): IntercomContext | null;
4
4
  //# sourceMappingURL=shouldLoad.d.ts.map
@@ -1 +1 @@
1
- import{getSavedKiosk as u}from"../components/Kiosk/SetKiosk/storage";import{KIOSK_ENABLE_KEY as e}from"../constants";import{isLocalStorageAvailable as o}from"../utils/localStorage";function c(){const t=new URLSearchParams(window.location.search).get(e),n=o?window.localStorage.getItem(e):null,r=t??n;return r!=null?r==="1":o&&u()!=null}function s(){const t=window.location.hostname.split(".");return t.length>=3&&t[t.length-2]==="expofp"&&t[t.length-1]==="com"}function l(){return s()?window.location.hostname.split(".")[0]:"main"}function p(t){if(t?.free===!0)return"Free";const n=t?.trialExpiresAt;if(n){const r=new Date(n).getTime();if(!Number.isNaN(r))return Date.now()<r?"Trial Active":"Trial Expired"}return"Active"}function m(){if(process.env.NODE_ENV==="production")return!1;const t=new URLSearchParams(window.location.search);return!t.has("__intercom_subdomain")&&!t.has("__intercom_status")}function f(t){if(process.env.NODE_ENV==="production")return t;const n=new URLSearchParams(window.location.search),r=n.get("__intercom_subdomain"),i=n.get("__intercom_status"),a=i&&["Active","Trial Active","Trial Expired","Free"].includes(i)?i:t.subscriptionStatus;return{subDomain:r??t.subDomain,subscriptionStatus:a}}export function shouldLoadIntercom(t){if(m()||process.env.NODE_ENV==="production"&&!s()||c()||!window.navigator.onLine)return null;const n=f({subDomain:l(),subscriptionStatus:p(t)});return n.subDomain!=="demo"&&n.subscriptionStatus!=="Free"&&n.subscriptionStatus!=="Trial Expired"?null:n}
1
+ import{getSavedKiosk as u}from"../components/Kiosk/SetKiosk/storage";import{KIOSK_ENABLE_KEY as r}from"../constants";import{isLocalStorageAvailable as o}from"../utils/localStorage";function c(t){const n=new URLSearchParams(window.location.search).get(r),e=o?window.localStorage.getItem(r):null,i=n??e;return i!=null?i==="1":o&&u()!=null||Object.keys(t.kiosk??{}).length>0}function s(){const t=window.location.hostname.split(".");return t.length>=3&&t[t.length-2]==="expofp"&&t[t.length-1]==="com"}function l(){return s()?window.location.hostname.split(".")[0]:"main"}function p(t){if(t?.free===!0)return"Free";const n=t?.trialExpiresAt;if(n){const e=new Date(n).getTime();if(!Number.isNaN(e))return Date.now()<e?"Trial Active":"Trial Expired"}return"Active"}function m(){if(process.env.NODE_ENV==="production")return!1;const t=new URLSearchParams(window.location.search);return!t.has("__intercom_subdomain")&&!t.has("__intercom_status")}function f(t){if(process.env.NODE_ENV==="production")return t;const n=new URLSearchParams(window.location.search),e=n.get("__intercom_subdomain"),i=n.get("__intercom_status"),a=i&&["Active","Trial Active","Trial Expired","Free"].includes(i)?i:t.subscriptionStatus;return{subDomain:e??t.subDomain,subscriptionStatus:a}}export function shouldLoadIntercom(t){if(m()||process.env.NODE_ENV==="production"&&!s()||c(t)||!window.navigator.onLine)return null;const n=f({subDomain:l(),subscriptionStatus:p(t)});return n.subDomain!=="demo"&&n.subscriptionStatus!=="Free"&&n.subscriptionStatus!=="Trial Expired"?null:n}