@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{createKiosk as f}from"../components/Kiosk/kioskApi";import{getSavedKiosk as u}from"../components/Kiosk/SetKiosk";import{KIOSK_STATS_ID_STORAGE_KEY as c}from"../components/Kiosk/SetKiosk/constants";import l from"../data";import{getLocationHistory as p}from"../services/routing";import{uiState as d}from"../store";import a from"./logger";import{createTelemetry as g}from"./telemetry";let i;function S(){if(i)return i;const r=window.__efpEvent;let e;try{const t=new URL(l.trackerUrl).searchParams.get("expoId");e=t?Number(t):void 0}catch(t){a.error(t)}return i=g({url:"https://app.expofp.com/api/telemetry",expo:r,expoId:e}),i}function s(r,e){const t=p(),n=t[t.length-2];return{type:r,value:e!==void 0?String(e):"",timestamp:new Date().toISOString(),url:window.location.href,referrer:n?window.location.origin+n:""}}function v(){return!!l?.trackerUrl&&process.env.NODE_ENV==="production"&&!d.heatmap}export default async function k(r,e){if(a.log("trackEvent",r,e),!!v())try{const t=S(),n=u();if(n){const o=await I(n);if(o)t.setKioskId(o);else{t.enqueue(s(r,e));return}}else localStorage.removeItem(c),t.setKioskId("");y(t),await t.send(s(r,e))}catch(t){a.error("trackEvent",String(t))}}async function I(r){if(!r)return null;let e=localStorage.getItem(c);return e||(e=await f(r,"https://app.expofp.com/"),e?(localStorage.setItem(c,e),e):null)}let m=!1;function y(r){if(m)return;m=!0;const e="efp-track-events";try{const t=localStorage.getItem(e);if(!t)return;const n=JSON.parse(t);if(!Array.isArray(n)){localStorage.removeItem(e);return}for(const o of n)!o||typeof o!="object"||!o.headers||r.enqueue({type:o.type,value:o.value!==void 0?String(o.value):"",timestamp:o.timeStamp,url:o.headers["X-href"],referrer:o.headers["X-ref"]??""});localStorage.removeItem(e)}catch(t){localStorage.removeItem(e),a.error("Failed to migrate old events.",String(t))}}
1
+ import{createKiosk as f}from"../components/Kiosk/kioskApi";import{getSavedKiosk as u}from"../components/Kiosk/SetKiosk";import{KIOSK_STATS_ID_STORAGE_KEY as c}from"../components/Kiosk/SetKiosk/constants";import l from"../data";import{getLocationHistory as p}from"../services/url-sync";import{uiState as d}from"../store";import a from"./logger";import{createTelemetry as g}from"./telemetry";let i;function S(){if(i)return i;const r=window.__efpEvent;let e;try{const t=new URL(l.trackerUrl).searchParams.get("expoId");e=t?Number(t):void 0}catch(t){a.error(t)}return i=g({url:"https://app.expofp.com/api/telemetry",expo:r,expoId:e}),i}function s(r,e){const t=p(),n=t[t.length-2];return{type:r,value:e!==void 0?String(e):"",timestamp:new Date().toISOString(),url:window.location.href,referrer:n?window.location.origin+n:""}}function v(){return!!l?.trackerUrl&&process.env.NODE_ENV==="production"&&!d.heatmap}export default async function k(r,e){if(a.log("trackEvent",r,e),!!v())try{const t=S(),n=u();if(n){const o=await I(n);if(o)t.setKioskId(o);else{t.enqueue(s(r,e));return}}else localStorage.removeItem(c),t.setKioskId("");y(t),await t.send(s(r,e))}catch(t){a.error("trackEvent",String(t))}}async function I(r){if(!r)return null;let e=localStorage.getItem(c);return e||(e=await f(r,"https://app.expofp.com/"),e?(localStorage.setItem(c,e),e):null)}let m=!1;function y(r){if(m)return;m=!0;const e="efp-track-events";try{const t=localStorage.getItem(e);if(!t)return;const n=JSON.parse(t);if(!Array.isArray(n)){localStorage.removeItem(e);return}for(const o of n)!o||typeof o!="object"||!o.headers||r.enqueue({type:o.type,value:o.value!==void 0?String(o.value):"",timestamp:o.timeStamp,url:o.headers["X-href"],referrer:o.headers["X-ref"]??""});localStorage.removeItem(e)}catch(t){localStorage.removeItem(e),a.error("Failed to migrate old events.",String(t))}}
@@ -0,0 +1,18 @@
1
+ import { type ColorInput, type ShapeDef } from '@expofp/renderer';
2
+ /**
3
+ * Drawing-side shape types, formerly declared in the retired `data/Data.d.ts`
4
+ * (the event-data types now live on `@expofp/config`; these two are renderer
5
+ * concepts, not data-document fields).
6
+ */
7
+ /** A renderer shape with the floorplan painters' background extensions. */
8
+ export interface ShapeBgDef extends ShapeDef {
9
+ defaultColor?: ColorInput;
10
+ unblinking?: boolean;
11
+ }
12
+ /** One highlighted booth path (by SVG `data-index`), as the painters consume it. */
13
+ export interface PathInfo {
14
+ index: number;
15
+ color: string;
16
+ unblinking: boolean;
17
+ }
18
+ //# sourceMappingURL=drawing.types.d.ts.map
@@ -1,3 +1,5 @@
1
+ import { type Config } from '@expofp/config';
2
+ import { type Camera, type ListPanel, type PlannerOptions } from '@expofp/schema';
1
3
  /**
2
4
  * Represents a floor plan.
3
5
  */
@@ -5,10 +7,13 @@ export interface FloorPlan {
5
7
  readonly ready: Promise<void>;
6
8
  readonly element: HTMLDivElement;
7
9
  readonly eventId: string;
8
- readonly dataUrl: string;
9
10
  readonly noOverlay: boolean;
10
11
  readonly offHistory: boolean;
11
- readonly allowConsent: boolean;
12
+ /**
13
+ * @deprecated The consent decision lives on the config — set the `consent`
14
+ * option instead. `true` ⇄ `'granted'`, `false` ⇄ `'denied'`, `undefined` ⇄ `'ask'`.
15
+ */
16
+ readonly allowConsent: boolean | undefined;
12
17
  readonly onInit: (fp: FloorPlan) => void;
13
18
  onBoothClick(e: FloorPlanBoothClickEvent): void;
14
19
  onBookmarkClick(e: FloorPlanBookmarkClickEvent): void;
@@ -54,12 +59,45 @@ export interface FloorPlan {
54
59
  boothsList(): FloorPlanBooth[];
55
60
  categoriesList(): FloorPlanCategory[];
56
61
  selectCategory(nameOrSlug?: string): void;
62
+ /**
63
+ * Opens whatever the slug or external id names — a booth, a schedule
64
+ * session, an exhibitor, a category or a speaker (checked in that order);
65
+ * anything else opens the search list with the value as the search text.
66
+ * The programmatic twin of the `?<slug>` deep link.
67
+ */
68
+ select(slugOrExternalId: string): void;
69
+ /** Opens one of the named list panels (the `?bookmarks`, `?sessions`, … deep links). */
70
+ showList(list: ListPanel): void;
71
+ /** Launches the tour with the given id; unknown ids fall back to the tours list. */
72
+ selectTour(tourId: string): void;
73
+ /** Opens the route planner, optionally pre-filled with slugs or the visitor's bookmarks. */
74
+ openPlanner(options?: PlannerOptions): void;
75
+ /** Enters the interactive route-building mode. */
76
+ startBuildRoute(): void;
57
77
  getVisibility(): Visibility;
58
78
  setVisibility(visibility: Visibility): void;
59
79
  findLocation(): void;
60
80
  zoomIn(): void;
61
81
  zoomOut(): void;
62
82
  switchView(): void;
83
+ /**
84
+ * Moves the camera. Partial-merge semantics: only the fields present in
85
+ * `camera` change, omitted ones keep their current values — e.g.
86
+ * `setCamera({ bearing: 90 })` rotates the map without moving its center.
87
+ * The center is set either as floor-plan projected coordinates (`x`/`y`) or
88
+ * as GPS (`lat`/`lng`) — each is a pair, so both halves must be given.
89
+ * `floor` activates the named floor, `bearing` rotates the map (0–360°) and
90
+ * `zoomTime` sets the camera animation duration in milliseconds. Applied as
91
+ * soon as the renderer is ready. Also available as the `setCamera` intent
92
+ * (URL deep link).
93
+ */
94
+ setCamera(camera: Camera): void;
95
+ /**
96
+ * The camera state last requested via {@link setCamera} (or the equivalent
97
+ * URL parameters) — not a live gesture-tracking camera: panning or zooming
98
+ * by hand does not update it.
99
+ */
100
+ getCamera(): Camera;
63
101
  zoomTo(selectors: POISelectors, options?: {
64
102
  padding?: number;
65
103
  }): void;
@@ -106,25 +144,7 @@ export interface FloorPlan {
106
144
  * Options for configuring the FloorPlan instance.
107
145
  */
108
146
  export interface FloorPlanOptions {
109
- element?: HTMLDivElement;
110
- expo?: string;
111
- /**
112
- * @deprecated
113
- * Use 'expo' instead.
114
- */
115
- event?: string;
116
- /** @deprecated */
117
- legacyDataVersion?: {
118
- version: string;
119
- };
120
- /** @deprecated */
121
- legacyDataUrlBase?: string;
122
- previewMode?: boolean;
123
- dataUrl?: string;
124
- noOverlay?: boolean;
125
- offHistory?: boolean;
126
- ignoreQuery?: boolean;
127
- allowConsent?: boolean;
147
+ element?: HTMLDivElement | string;
128
148
  onBoothClick?: (e: FloorPlanBoothClickEvent) => void;
129
149
  onBookmarkClick?: (e: FloorPlanBookmarkClickEvent) => void;
130
150
  onVisitedClick?: (e: FloorPlanVisitedClickEvent) => void;
@@ -143,18 +163,9 @@ export interface FloorPlanOptions {
143
163
  onCurrentPositionChanged?: (point: CurrentPosition) => void;
144
164
  onFloorActivated?: (floor: Floor) => void;
145
165
  onLeaveEvent?: () => void;
146
- disableRuntimeAlerts?: boolean;
147
- viewerMode?: boolean;
148
- maplibre?: MaplibreOptions;
149
- }
150
- export interface MaplibreOptions {
151
- /** MapLibre style URL. Offline packages point this to a local style JSON file. */
152
- styleUrl?: string;
153
- /** Inline MapLibre style object. */
154
- style?: object;
155
- /** Allows MapLibre to run without navigator.onLine when local map assets are bundled. */
156
- offline?: boolean;
157
166
  }
167
+ /** MapLibre options — the config schema (`MapLibreConfigSchema`) is the single definition. */
168
+ export type MaplibreOptions = NonNullable<Config['maplibre']>;
158
169
  export interface Layer {
159
170
  name: string;
160
171
  description: string;
@@ -175,6 +186,7 @@ export interface FloorPlanBooth extends FloorPlanBoothBase {
175
186
  meta: Record<string, string>;
176
187
  description: string;
177
188
  entity: Entity;
189
+ title?: string;
178
190
  }
179
191
  export interface FloorPlanBoothClickEvent {
180
192
  target: FloorPlanBoothBase;
@@ -271,11 +283,13 @@ export interface FloorPlanSchedule {
271
283
  entity: Entity;
272
284
  isEnded: boolean;
273
285
  }
274
- export interface FloorPlanLanguage {
275
- id: number;
276
- name: string;
277
- entity: Entity;
278
- selected: boolean;
286
+ /** One selectable UI language (as `utils/i18n.ts` serves them). */
287
+ export interface Language {
288
+ readonly id: string;
289
+ readonly name: string;
290
+ readonly entity: {
291
+ readonly type: 'language';
292
+ };
279
293
  }
280
294
  export interface FloorPlanHeatmapYah {
281
295
  id: string;
@@ -286,7 +300,7 @@ export interface FloorPlanHeatmapYah {
286
300
  z: number | string;
287
301
  entity: Entity;
288
302
  }
289
- export type FloorPlanEntity = FloorPlanBooth | FloorPlanCategory | FloorPlanExhibitor | FloorPlanSchedule | FloorPlanLanguage | FloorPlanHeatmapYah;
303
+ export type FloorPlanEntity = FloorPlanBooth | FloorPlanCategory | FloorPlanExhibitor | FloorPlanSchedule | Language | FloorPlanHeatmapYah;
290
304
  export interface Floor {
291
305
  name: string;
292
306
  shortName: string;
@@ -1 +1 @@
1
- export function areLayersEnabled(){return!!window.__fpLayers}
1
+ import{getFpSvgJs as r}from"../data/fp-payloads";export function areLayersEnabled(){return!!r().__fpLayers}
@@ -0,0 +1,20 @@
1
+ import { type Camera } from '@expofp/schema';
2
+ import { type MapSettings } from '../store/types';
3
+ /**
4
+ * Translates the public {@link Camera} shape into the internal
5
+ * {@link MapSettings} one (the `uiState.mapSettings` observable that the map
6
+ * reaction applies once the renderer is ready). Only the fields present in
7
+ * `camera` appear in the result, so a partial camera stays a partial settings
8
+ * patch. `x`/`y` and `lat`/`lng` are pairs — a half-given pair is dropped, as
9
+ * the serialized center would be meaningless.
10
+ */
11
+ export declare function cameraToMapSettings(camera: Camera): MapSettings;
12
+ /**
13
+ * The reverse of {@link cameraToMapSettings}: reads the internal
14
+ * {@link MapSettings} back into the public {@link Camera} shape. A serialized
15
+ * center whose halves don't parse as finite numbers (legacy URLs and
16
+ * sessionStorage can carry arbitrary strings) is skipped rather than surfaced
17
+ * as `NaN`.
18
+ */
19
+ export declare function mapSettingsToCamera(settings: MapSettings): Camera;
20
+ //# sourceMappingURL=camera-map-settings.d.ts.map
@@ -0,0 +1 @@
1
+ export function cameraToMapSettings(n){const e={};return n.x!==void 0&&n.y!==void 0&&(e.centerxy=`${n.x},${n.y}`),n.lat!==void 0&&n.lng!==void 0&&(e.center=`${n.lat},${n.lng}`),n.floor!==void 0&&(e.z=n.floor),n.bearing!==void 0&&(e.bearing=n.bearing),n.zoomTime!==void 0&&(e.zoomtime=n.zoomTime),e}export function mapSettingsToCamera(n){const e={},i=o(n.centerxy);i&&([e.x,e.y]=i);const f=o(n.center);return f&&([e.lat,e.lng]=f),n.z!==void 0&&(e.floor=n.z),n.bearing!==void 0&&(e.bearing=n.bearing),n.zoomtime!==void 0&&(e.zoomTime=n.zoomtime),e}function o(n){if(!n)return;const e=n.split(",").map(Number);if(!(e.length!==2||!e.every(Number.isFinite)))return[e[0],e[1]]}
@@ -1 +1 @@
1
- import{DEBUG_KEY as i,SET_KIOSK_KEY as a}from"../constants";import n from"../data";import s,{uiState as l}from"../store";import{handleDebugMode as c}from"../tools/handleDebugMode";import{getRebookingTokenFromQuery as m}from"../tools/rebookingUrl";export function handleCustomCommand(o){if(o=o.trim(),o.toLowerCase()==="__addcache")navigator.serviceWorker.getRegistrations().then(r=>{if(!r.length)return alert("No registered service workers.");var t=[];s.exhibitorStore.exhibitors.forEach(e=>{t.push(e.logo),t.push(...e.gallery||[])}),Promise.all(t.map(e=>fetch(e))).then(e=>alert(`${e.length} images loaded.`)).catch(e=>alert(e))});else if(/^copy_exh=\d+/.test(o)){const r=o.match(/^copy_exh=(\d+)/);if(r&&!isNaN(parseInt(r[1]))){const e=`${window.location.origin+window.location.pathname}?${r[0]}`;window.location.replace(e)}}else{if(m())return!0;o.startsWith(i)?c():o===(n.flags?.customSetKiosk||a)&&l.enableSetKioskMode(!0)}return!1}
1
+ import{DEBUG_KEY as i,SET_KIOSK_KEY as a}from"../constants";import n from"../data";import s,{uiState as l}from"../store";import{handleDebugMode as c}from"../tools/handleDebugMode";import{getRebookingTokenFromQuery as m}from"../tools/rebookingUrl";export function handleCustomCommand(o){if(o=o.trim(),o.toLowerCase()==="__addcache")navigator.serviceWorker.getRegistrations().then(r=>{if(!r.length)return alert("No registered service workers.");var t=[];s.exhibitorStore.exhibitors.forEach(e=>{e.logo?.url&&t.push(e.logo.url),t.push(...e.gallery||[])}),Promise.all(t.map(e=>fetch(e))).then(e=>alert(`${e.length} images loaded.`)).catch(e=>alert(e))});else if(/^copy_exh=\d+/.test(o)){const r=o.match(/^copy_exh=(\d+)/);if(r&&!isNaN(parseInt(r[1]))){const e=`${window.location.origin+window.location.pathname}?${r[0]}`;window.location.replace(e)}}else{if(m())return!0;o.startsWith(i)?c():o===(n.customSetKiosk||a)&&l.enableSetKioskMode(!0)}return!1}
@@ -1,2 +1,9 @@
1
- export declare function getLogoUrl(url: any): string;
1
+ import { type Logo } from '@expofp/schema';
2
+ /**
3
+ * The logo URL to load for the current device: the pre-scaled `small`/`tiny`
4
+ * variant on optimized mobile/webview sessions, the full logo otherwise.
5
+ * Variant URLs are explicit fields on the logo (the config derives them when
6
+ * the platform serves the legacy string form) — nothing is re-derived here.
7
+ */
8
+ export declare function getLogoUrl(logo: Logo): string;
2
9
  //# sourceMappingURL=getLogoUrl.d.ts.map
@@ -1 +1 @@
1
- import e from"../data";import o from"./is-mobile";import r from"./is-webview";export function getLogoUrl(i){const t=n();return t?i.replace(/\/([^\/]+)\.([a-zA-Z0-9]+)(\?.*)?$/,`/$1__${t}.$2$3`):i}function n(){if(o||r)return e.viewOptimizationLevel?e.viewOptimizationLevel>=5?"tiny":"small":void 0}
1
+ import t from"../data";import e from"./is-mobile";import l from"./is-webview";export function getLogoUrl(r){const i=n();return i==="tiny"?r.tinyUrl??r.smallUrl??r.url:i==="small"?r.smallUrl??r.url:r.url}function n(){if(e||l)return t.viewOptimizationLevel?t.viewOptimizationLevel>=5?"tiny":"small":void 0}
@@ -0,0 +1,13 @@
1
+ import { type Heatmap } from '@expofp/schema';
2
+ /**
3
+ * Does a `config.heatmap` node engage heatmap mode? Presence implies intent:
4
+ * any non-empty node engages unless switched off with an explicit
5
+ * `enabled: false` — so `?heatmap[variant]=yah` alone is enough, and a URL's
6
+ * `?heatmap[enabled]=false` can veto a manifest-set node (config layers
7
+ * replace the node wholesale). One predicate for both consumers — the data
8
+ * loader's fetch decision and the dispatch's mode engagement — so the rule
9
+ * cannot drift. The legacy `?heatmap=true` params are NOT this node: they stay
10
+ * a legacy-URL one-shot and a raw read in the loader.
11
+ */
12
+ export declare function heatmapEnabled(heatmap: Heatmap): boolean;
13
+ //# sourceMappingURL=heatmap-enabled.d.ts.map
@@ -0,0 +1 @@
1
+ export function heatmapEnabled(e){return Object.keys(e).length>0&&e.enabled!==!1}
@@ -1 +1 @@
1
- import s from"i18next";import{observable as u}from"mobx";import{LANGUAGE_TYPE as y}from"../constants";import f from"../locales";import x from"../tools/base-runtime-url";import{loadJson as S}from"../tools/loaders";import{isLocalStorageAvailable as i}from"./localStorage";const n="en",c="efp-locale",g="language",l=u.box(n),m=u.array([],{deep:!1}),d=e=>S(`${x}locales/${e}.json`),w=()=>{if(!i)return null;const e=localStorage.getItem(c),o=localStorage.getItem(g);return o&&localStorage.removeItem(g),e||(o&&localStorage.setItem(c,o),o)},p=()=>{const e=window.__data,o=navigator.languages?.[0]||navigator.language,a=Object.keys(f).find(r=>o.startsWith(r));return(w()||e?.locale||a||n).toLowerCase()};export const getLocale=()=>l.get(),getLocales=()=>m,hasLocale=e=>m.some(o=>o.id===e),t=(e,o)=>(l.get(),s.t(e,o)),tIfExists=(e,o)=>(l.get(),s.exists(e,o)?s.t(e,o):e),initI18n=async()=>{m.replace(Object.entries(f).sort(([a],[r])=>a.localeCompare(r)).map(([a,r])=>({id:a,name:r,entity:{type:y}})));let e=p();const o={};if(e!==n)try{o[e]={translation:await d(e)}}catch(a){console.error(`Unable to load "${e}" localization, falling back to "${n}".`,a),e=n}return l.set(e),s.init({resources:o,lng:e,keySeparator:!1,saveMissing:e!==n,missingKeyHandler:(a,r,L,b)=>console.debug(`i18n missing key: '${a[0]}:${r}:${L}', fallback: '${b}'`)})},setLocale=async e=>{const o=e.toLowerCase();try{o!==n&&!s.hasResourceBundle(o,"translation")&&s.addResourceBundle(o,"translation",await d(o),!0,!0),await s.changeLanguage(o),l.set(o),i&&localStorage.setItem(c,o)}catch(a){console.error(`Failed to switch language to "${o}":`,a)}},resetLocale=async()=>(i&&(localStorage.removeItem(c),localStorage.removeItem(g)),setLocale(p()));
1
+ import{getConfig as y}from"@expofp/config";import r from"i18next";import{observable as f}from"mobx";import{LANGUAGE_TYPE as x}from"../constants";import u from"../locales";import S from"../tools/base-runtime-url";import{loadJson as E}from"../tools/loaders";import{isLocalStorageAvailable as i}from"./localStorage";const s="en",c="efp-locale",g="language",l=f.box(s),m=f.array([],{deep:!1}),p=e=>E(`${S}locales/${e}.json`),v=()=>{if(!i)return null;const e=localStorage.getItem(c),o=localStorage.getItem(g);return o&&localStorage.removeItem(g),e||(o&&localStorage.setItem(c,o),o)},L=()=>{const e=navigator.languages?.[0]||navigator.language,o=Object.keys(u).find(a=>e.startsWith(a));return(v()||y().locale||o||s).toLowerCase()};export const getLocale=()=>l.get(),getLocales=()=>m,hasLocale=e=>m.some(o=>o.id===e),t=(e,o)=>(l.get(),r.t(e,o)),tIfExists=(e,o)=>(l.get(),r.exists(e,o)?r.t(e,o):e),initI18n=async()=>{m.replace(Object.entries(u).sort(([a],[n])=>a.localeCompare(n)).map(([a,n])=>({id:a,name:n,entity:{type:x}})));let e=L();const o={};if(e!==s)try{o[e]={translation:await p(e)}}catch(a){console.error(`Unable to load "${e}" localization, falling back to "${s}".`,a),e=s}return l.set(e),r.init({resources:o,lng:e,keySeparator:!1,saveMissing:e!==s,missingKeyHandler:(a,n,d,b)=>console.debug(`i18n missing key: '${a[0]}:${n}:${d}', fallback: '${b}'`)})},setLocale=async e=>{const o=e.toLowerCase();try{o!==s&&!r.hasResourceBundle(o,"translation")&&r.addResourceBundle(o,"translation",await p(o),!0,!0),await r.changeLanguage(o),l.set(o),i&&localStorage.setItem(c,o)}catch(a){console.error(`Failed to switch language to "${o}":`,a)}},resetLocale=async()=>(i&&(localStorage.removeItem(c),localStorage.removeItem(g)),setLocale(L()));
@@ -1 +1 @@
1
- import{loadImage as e}from"./loadImage";export function loadIcons(t){return Promise.all(t.map(a=>new Promise(async l=>{var n=await e(i(a.getAttribute("xlink:href")||a.getAttribute("href")));l(n?{bounds:{x:a.x.animVal.value,y:a.y.animVal.value,width:a.width.animVal.value,height:a.height.animVal.value,angle:a.transform?.animVal[0]?.angle??0},htmlImage:n,booth:null}:null)})))}function i(t){return!t?.startsWith("data:")&&t?.indexOf("://")===-1?window.__dataUrlBase+t:t}
1
+ import{loadImage as e}from"./loadImage";export function loadIcons(t){return Promise.all(t.map(a=>new Promise(async n=>{var l=await e(a.getAttribute("xlink:href")||a.getAttribute("href"));n(l?{bounds:{x:a.x.animVal.value,y:a.y.animVal.value,width:a.width.animVal.value,height:a.height.animVal.value,angle:a.transform?.animVal[0]?.angle??0},htmlImage:l,booth:null}:null)})))}
@@ -1,11 +1,3 @@
1
- declare global {
2
- interface Window {
3
- efpDebugUi?: Record<string, {
4
- type: 'boolean';
5
- default?: boolean;
6
- }>;
7
- }
8
- }
9
1
  declare const isDebug: boolean;
10
2
  export default isDebug;
11
3
  //# sourceMappingURL=is-debug.d.ts.map
@@ -1 +1 @@
1
- import{DEBUG_STORAGE_KEY as e}from"../constants";import{isLocalStorageAvailable as o}from"./localStorage";typeof window<"u"&&((window.efpDebugUi??={})[e]={type:"boolean"});const t=o&&localStorage.getItem(e)==="true";export default t;
1
+ import{DEBUG_STORAGE_KEY as o}from"../constants";import{isLocalStorageAvailable as t}from"./localStorage";const e=t&&localStorage.getItem(o)==="true";export default e;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * One-shot boot migration of the pre-schema preference keys (`___viewer_mode`
3
+ * / `___preview_mode` / `___ui-scale`) to their schema-typed `efp-*`
4
+ * equivalents — the keys the debug panel edits and `UIState` prefers. Runs
5
+ * before anything reads the keys (`load()` calls it ahead of `loadConfig`).
6
+ *
7
+ * Copy, not move: the legacy keys stay in place for a release or two so a
8
+ * rollback to an older SDK still sees them (their readers keep a fallback);
9
+ * only an explicit disable/reset seed removes both generations. An existing
10
+ * `efp-*` value always wins — a stale legacy key must not clobber it.
11
+ *
12
+ * `storage` is injectable for tests; the default is the real `localStorage`
13
+ * when it is usable.
14
+ */
15
+ export declare function migrateLegacyStorageKeys(storage?: Pick<Storage, 'getItem' | 'setItem'> | undefined): void;
16
+ //# sourceMappingURL=legacy-storage-keys.d.ts.map
@@ -0,0 +1 @@
1
+ import{LEGACY_PREVIEW_MODE_STORAGE_KEY as I,LEGACY_UI_SCALE_STORAGE_KEY as m,LEGACY_VIEWER_MODE_STORAGE_KEY as A,PREVIEW_MODE_STORAGE_KEY as t,UI_SCALE_STORAGE_KEY as _,VIEWER_MODE_STORAGE_KEY as l}from"../constants";import{isLocalStorageAvailable as S}from"./localStorage";export function migrateLegacyStorageKeys(E=S?localStorage:void 0){if(!E)return;E.getItem(A)==="1"&&E.getItem(l)===null&&E.setItem(l,"true"),E.getItem(I)==="1"&&E.getItem(t)===null&&E.setItem(t,"true");const e=E.getItem(m);e!==null&&E.getItem(_)===null&&E.setItem(_,e)}
@@ -1,3 +1,3 @@
1
- import { type Data } from '../data/Data';
2
- export declare function loadCustomCss(data: Data, appendTo: Element | ShadowRoot): Promise<void>;
1
+ import { type Config } from '@expofp/config';
2
+ export declare function loadCustomCss(data: Config, appendTo: Element | ShadowRoot): Promise<void>;
3
3
  //# sourceMappingURL=loadCustomCss.d.ts.map
@@ -1 +1 @@
1
- import{loadCustomFonts as e}from"../tools/loaders";export async function loadCustomCss(s,o){if(s?.customCss){const t=document.createElement("style");t.textContent=s.customCss,o.append(t),await e(s.customCss)}}
1
+ import{loadCustomFonts as n}from"../tools/loaders";export async function loadCustomCss(t,o){if(t?.customCss){const e=document.createElement("style");if(e.textContent=t.customCss,document.head.append(e),typeof ShadowRoot<"u"&&o instanceof ShadowRoot){const s=document.createElement("style");s.textContent=t.customCss,o.append(s)}await n(t.customCss)}}
@@ -1,2 +1,3 @@
1
+ import { type FloorPlanEntity } from '../types';
1
2
  export declare function mapEntity<T extends Record<string, any>>(item: T): FloorPlanEntity | T;
2
3
  //# sourceMappingURL=mapEntity.d.ts.map
@@ -1,4 +1,4 @@
1
- import { type RawExhibitor } from '../data/Data';
1
+ import { type RawExhibitor } from '@expofp/schema';
2
2
  declare var exhibitor: RawExhibitor;
3
3
  export default exhibitor;
4
4
  //# sourceMappingURL=preview-exhibitor.d.ts.map
@@ -1,4 +1,4 @@
1
- import { CURRENT_POSITION_POINT_ID } from '../runtime/positionView';
1
+ import { CURRENT_POSITION_POINT_ID } from '@expofp/wayfinding';
2
2
  /** Display name for an {@link ArbitraryPoint} derived from the current GPS position. */
3
3
  export declare const CURRENT_LOCATION_NAME = "Your Location";
4
4
  export { CURRENT_POSITION_POINT_ID };
@@ -1 +1 @@
1
- import{CURRENT_POSITION_POINT_ID as I}from"../runtime/positionView";export const CURRENT_LOCATION_NAME="Your Location";export{I as CURRENT_POSITION_POINT_ID};export const KIOSK_ANCHOR_POINT_ID="kiosk-anchor";export function toArbitraryPoint(r,o,t){return{id:t,x:r.x,y:r.y,layer:r.z!=null?String(r.z):"",name:o}}
1
+ import{CURRENT_POSITION_POINT_ID as I}from"@expofp/wayfinding";export const CURRENT_LOCATION_NAME="Your Location";export{I as CURRENT_POSITION_POINT_ID};export const KIOSK_ANCHOR_POINT_ID="kiosk-anchor";export function toArbitraryPoint(r,o,t){return{id:t,x:r.x,y:r.y,layer:r.z!=null?String(r.z):"",name:o}}
@@ -1,7 +1,7 @@
1
- import type { Booth } from '../../store/BoothStore';
2
- import type { RouteEndpoint } from '../core';
1
+ import type { RouteEndpoint } from '@expofp/wayfinding';
2
+ import type { BoothSource } from '../storePorts';
3
3
  /**
4
- * Converts an efp `Booth` to a neutral {@link RouteEndpoint}. The booth's
4
+ * Converts an efp booth to a neutral {@link RouteEndpoint}. The booth's
5
5
  * (possibly rotated) rectangle becomes a 4-vertex polygon used by the engine
6
6
  * as a containment region for graph-point lookup.
7
7
  *
@@ -9,5 +9,5 @@ import type { RouteEndpoint } from '../core';
9
9
  * the geometry package convention, so it feeds the geometry Rect directly.
10
10
  * Corner order is top-left, top-right, bottom-right, bottom-left.
11
11
  */
12
- export declare function boothToEndpoint(booth: Booth): RouteEndpoint;
12
+ export declare function boothToEndpoint(booth: BoothSource): RouteEndpoint;
13
13
  //# sourceMappingURL=boothToEndpoint.d.ts.map
@@ -5,7 +5,7 @@
5
5
  * All canvases are pre-created eagerly.
6
6
  * Fallback canvases are used when custom images are not available.
7
7
  */
8
- import type { IconProvider } from '../runtime/types';
8
+ import type { IconProvider } from '@expofp/wayfinding';
9
9
  interface CanvasIconProviderConfig {
10
10
  /** Icon image map — typically store.fp.icons */
11
11
  readonly iconMap: Map<string, HTMLImageElement>;
@@ -1,6 +1,6 @@
1
+ import type { FloorContext } from '@expofp/wayfinding';
1
2
  import type LayerStore from '../../store/LayerStore';
2
3
  import type RouteStore from '../../store/RouteStore';
3
- import { type FloorContext } from '../runtime/types';
4
4
  /**
5
5
  * Adapter: builds a neutral {@link FloorContext} from the efp `LayerStore` +
6
6
  * `RouteStore`. Single place in the code that knows about efp-specific magic
@@ -1,4 +1,4 @@
1
- import { type GraphDataSource } from '../core';
2
- /** Reads the app's wayfinding graph data from `window.__wfData`. */
1
+ import type { GraphDataSource } from '@expofp/wayfinding';
2
+ /** Reads the app's wayfinding graph off the resolver memo (`getWfData`). */
3
3
  export declare function createGraphDataSource(): GraphDataSource;
4
4
  //# sourceMappingURL=graphDataSource.d.ts.map
@@ -1 +1 @@
1
- function n(){return window.__wfData}export function createGraphDataSource(){return{getLines:()=>n()?.lines??[],getLineEnds:()=>n()?.lineEnds??[]}}
1
+ import{getWfData as e}from"../../data/fp-payloads";export function createGraphDataSource(){return{getLines:()=>e()?.lines??[],getLineEnds:()=>e()?.lineEnds??[]}}
@@ -1,11 +1,12 @@
1
- import { type CurrentPosition } from '../../store/RouteStore';
2
- import { type PositionInput } from '../runtime/types';
1
+ import type { PositionInput } from '@expofp/wayfinding';
2
+ import type { PositionView } from '../storePorts';
3
3
  /**
4
- * Converts the efp `CurrentPosition` class instance to a neutral
5
- * `PositionInput` for the runtime.
4
+ * Converts an efp position read-model to a neutral `PositionInput` for the
5
+ * runtime.
6
6
  *
7
- * `z` in CurrentPosition can be `number | string | undefined`; the runtime
8
- * expects `layer: string`. Non-finite `angle` becomes `undefined`.
7
+ * `z` can be `number | string | undefined`; the runtime expects `layer:
8
+ * string`. The efp `angle` maps to the neutral `heading`; non-finite values
9
+ * become `undefined`.
9
10
  */
10
- export declare function positionInput(position: CurrentPosition): PositionInput;
11
+ export declare function positionInput(position: PositionView): PositionInput;
11
12
  //# sourceMappingURL=positionInput.d.ts.map
@@ -1 +1 @@
1
- export function positionInput(e){return{x:e.x,y:e.y,layer:e.z!=null?String(e.z):"",angle:Number.isFinite(e.angle)?e.angle:void 0}}
1
+ export function positionInput(e){return{x:e.x,y:e.y,layer:e.z!=null?String(e.z):"",heading:Number.isFinite(e.angle)?e.angle:void 0}}
@@ -1,41 +1,28 @@
1
- import type LayerStore from '../store/LayerStore';
2
- import type RouteStore from '../store/RouteStore';
3
- import type UIState from '../store/UIState';
1
+ import type { Wayfinding } from '@expofp/wayfinding';
4
2
  import type { KioskHandler } from './handlers/kioskHandler';
5
3
  import type { YahHandler } from './handlers/yahHandler';
6
- import type { WayfindingRuntime } from './runtime/types';
4
+ import type { LayerStorePort, RouteStorePort, UiStatePort } from './storePorts';
7
5
  interface BindMobxReactionsArgs {
8
- readonly runtime: WayfindingRuntime;
6
+ readonly wayfinding: Pick<Wayfinding, 'setRoute' | 'clearRoute' | 'setPosition' | 'notifyFloorChanged' | 'shouldReroute'>;
9
7
  readonly kioskHandler: KioskHandler;
10
8
  readonly yahHandler: YahHandler;
11
- /**
12
- * TODO (improvement): typing these as concrete `store/*` classes couples this
13
- * glue to the store and produces type-only madge cycles (harmless at runtime —
14
- * `import type` is erased). To make the wf glue fully store-type-free, invert
15
- * into local ports (as done for `FloorContext`/`IconProvider`).
16
- */
17
9
  readonly stores: {
18
- readonly routeStore: RouteStore;
19
- readonly uiState: UIState;
20
- readonly layerStore: LayerStore;
10
+ readonly routeStore: RouteStorePort;
11
+ readonly uiState: UiStatePort;
12
+ readonly layerStore: LayerStorePort;
21
13
  };
22
- /** Plan-scale-aware reroute threshold (SVG units). Computed by
23
- * `createWayfinding` from `fpGeo` and passed in — keeps this module
24
- * free of plan-config knowledge. */
25
- readonly rerouteThresholdSvg: number;
26
14
  }
27
15
  /**
28
- * Wires the observable efp stores to the imperative wayfinding runtime and
16
+ * Wires the observable efp stores to the imperative wayfinding instance and
29
17
  * the efp-side kiosk/yah handlers. Each reaction translates observable
30
18
  * changes into neutral-typed imperative calls.
31
19
  *
32
- * Also owns the reroute controller (closure-scoped, no module globals) and
33
- * triggers `routeStore.rebuildRouteFromPosition` when the live CP needs to
34
- * become (or refresh) the route's FROM.
20
+ * Triggers `routeStore.rebuildRouteFromPosition` (via `wayfinding.shouldReroute`) when
21
+ * the live CP needs to become (or refresh) the route's FROM.
35
22
  *
36
23
  * Returns a dispose function that tears down all reactions plus the deferred
37
24
  * floor-change timeout.
38
25
  */
39
- export declare function bindMobxReactions({ runtime, kioskHandler, yahHandler, stores: { routeStore, uiState, layerStore }, rerouteThresholdSvg, }: BindMobxReactionsArgs): () => void;
26
+ export declare function bindMobxReactions({ wayfinding, kioskHandler, yahHandler, stores: { routeStore, uiState, layerStore }, }: BindMobxReactionsArgs): () => void;
40
27
  export {};
41
28
  //# sourceMappingURL=bindMobxReactions.d.ts.map
@@ -1 +1 @@
1
- import{comparer as E,reaction as c}from"mobx";import{boothToEndpoint as P,CURRENT_LOCATION_NAME as C,CURRENT_POSITION_POINT_ID as a,positionInput as x,toArbitraryPoint as T}from"./adapters";import{createRerouteController as k}from"./core";const b=i=>"rect"in i?P(i):i;export function bindMobxReactions({runtime:i,kioskHandler:A,yahHandler:R,stores:{routeStore:t,uiState:e,layerStore:l},rerouteThresholdSvg:g}){const f=[],F=k(g);function m(){const o=e.selectedRoute,n=o?.from?b(o.from):null,s=o?.to?b(o.to):null;if(!n||!s){i.clearRoute();return}i.setRoute({from:n,to:s,waypoints:o?.waypoints?.map(P),accessible:t.onlyAccessible})===!1&&console.error(new Error(`Route not found: (${n.x},${n.y}) \u2192 (${s.x},${s.y})`))}function u(){const o=t.currentPosition,n=t.iconType!==0,s=e.selectedRoute,d=!!(s?.from&&s?.to),y=n&&!d;if(!o){i.onPositionChanged(null),R(null);return}const p=x(o);y?(i.onPositionChanged(null),R({x:p.x,y:p.y,layer:p.layer})):(R(null),i.onPositionChanged(p))}function I(){const o=t.currentPosition,n=e.selectedRoute;if(!o||!n?.to)return;const s=!n.from,y=n.from?.id===a&&F.shouldReroute(x(o),t.routeLines);!s&&!y||t.rebuildRouteFromPosition(T(o,C,a))}function h(){const o=l.floors.find(n=>n.active)?.name;A(e.kioskData??null,o,l.mode)}function L(){const o=e.selectedRoute,n=t.currentPosition;if(!o?.to||!n||o.from?.id!==a||t.routeLines.length>0)return;const s=n.z!=null?String(n.z):"";o.from.x===n.x&&o.from.y===n.y&&o.from.layer===s||t.rebuildRouteFromPosition(T(n,C,a))}f.push(c(()=>l.layersLoaded,()=>{m(),u()}),c(()=>[e.selectedRoute,t.onlyAccessible],()=>{m(),u()}),c(()=>t.currentPosition,()=>{u()}),c(()=>{const o=t.currentPosition;return o?{x:o.x,y:o.y,z:o.z}:null},()=>{I(),L()},{equals:E.structural}),c(()=>[e.kioskData,l.floors.find(o=>o.active)],()=>h()));let r=null;const N=c(()=>[t.currentRouteLayer,e.getRouteNextFloor],()=>{l.layersLoaded&&(r!==null&&clearTimeout(r),r=setTimeout(()=>{i.onFloorChanged(),u(),r=null},0))});return f.push(()=>{r!==null&&clearTimeout(r),N()}),m(),u(),h(),()=>{for(const o of f)o();f.length=0}}
1
+ import{comparer as E,reaction as c}from"mobx";import{boothToEndpoint as h,CURRENT_LOCATION_NAME as x,CURRENT_POSITION_POINT_ID as m,positionInput as T,toArbitraryPoint as b}from"./adapters";const A=s=>"rect"in s?h(s):s;export function bindMobxReactions({wayfinding:s,kioskHandler:C,yahHandler:R,stores:{routeStore:n,uiState:i,layerStore:l}}){const f=[];function a(){const o=i.selectedRoute,t=o?.from?A(o.from):null,e=o?.to?A(o.to):null;if(!t||!e){s.clearRoute();return}s.setRoute({from:t,to:e,waypoints:o?.waypoints?.map(h),accessible:n.onlyAccessible})===!1&&console.error(new Error(`Route not found: (${t.x},${t.y}) \u2192 (${e.x},${e.y})`))}function u(){const o=n.currentPosition,t=n.iconType!==0,e=i.selectedRoute,p=!!(e?.from&&e?.to),y=t&&!p;if(!o){s.setPosition(null),R(null);return}const d=T(o);y?(s.setPosition(null),R({x:d.x,y:d.y,layer:d.layer})):(R(null),s.setPosition(d))}function F(){const o=n.currentPosition,t=i.selectedRoute;if(!o||!t?.to)return;const e=!t.from,y=t.from?.id===m&&s.shouldReroute(T(o));!e&&!y||n.rebuildRouteFromPosition(b(o,x,m))}function P(){const o=l.floors.find(t=>t.active)?.name;C(i.kioskData??null,o,l.mode)}function I(){const o=i.selectedRoute,t=n.currentPosition;if(!o?.to||!t||o.from?.id!==m||n.routeLines.length>0)return;const e=t.z!=null?String(t.z):"";o.from.x===t.x&&o.from.y===t.y&&o.from.layer===e||n.rebuildRouteFromPosition(b(t,x,m))}f.push(c(()=>l.layersLoaded,()=>{a(),u()}),c(()=>[i.selectedRoute,n.onlyAccessible],()=>{a(),u()}),c(()=>n.currentPosition,()=>{u()}),c(()=>{const o=n.currentPosition;return o?{x:o.x,y:o.y,z:o.z}:null},()=>{F(),I()},{equals:E.structural}),c(()=>[i.kioskData,l.floors.find(o=>o.active)],()=>P()));let r=null;const N=c(()=>[n.currentRouteLayer,i.getRouteNextFloor],()=>{l.layersLoaded&&(r!==null&&clearTimeout(r),r=setTimeout(()=>{s.notifyFloorChanged(),u(),r=null},0))});return f.push(()=>{r!==null&&clearTimeout(r),N()}),a(),u(),P(),()=>{for(const o of f)o();f.length=0}}
@@ -1,6 +1,6 @@
1
+ import { type Route, type RouteEndpoint } from '@expofp/wayfinding';
1
2
  import { type RendererService } from '../renderer';
2
3
  import type RootStore from '../store/RootStore';
3
- import { type Route, type RouteEndpoint } from './core';
4
4
  /** Whether `createWayfinding` has run and not yet been disposed. */
5
5
  export declare function isWayfindingReady(): boolean;
6
6
  /**
@@ -1 +1 @@
1
- import{fpGeo as l}from"../data/fpGeo";import{createImageDef as M,createLineDef as W,getRotation as P,rectToRenderer as I}from"../renderer";import{pickDefaultScene as g}from"../renderer/engine-core/defs";import{createCanvasIconProvider as N,createFloorContext as k,createGraphDataSource as w}from"./adapters";import{bindMobxReactions as x}from"./bindMobxReactions";import{createWayfindingEngine as C,getThresholdFromMetersToSvg as D,getThresholdSafe as b,resolveRerouteThresholdSvg as F,SNAP_THRESHOLD_METERS as H}from"./core";import{createKioskHandler as Y}from"./handlers/kioskHandler";import{createYahHandler as O}from"./handlers/yahHandler";import{WF_CURRENT_POSITION_LAYER_NAME as G,WF_LINES_ANIMATED_LAYER_NAME as U,WF_LINES_LAYER_NAME as q,WF_POINTS_LAYER_NAME as z,WF_TRAIL_LAYER_NAME as K}from"./layers";import{createWayfindingRenderer as V}from"./renderer";import{createWayfindingRuntime as j}from"./runtime/createWayfindingRuntime";let a=null;export function isWayfindingReady(){return a!==null}function B(){if(!a)throw new Error("Wayfinding is not initialized \u2014 call createWayfinding() first.");return a}export function buildRoute(n,t,s){return B().engine.buildRoute(n,t,s)}export function createWayfinding(n,t){const s=w(),d=C(s),h=N({iconMap:t.fp.icons,pixelRatio:devicePixelRatio}),r=V({createImageDef:M,createLineDef:W,getRotation:P,rectToRenderer:I,getScale:()=>n.scale,getLayers:()=>{const e=n.scene;if(!e)throw new Error("renderer: rendererService.scene is null \u2014 start RendererService first");return e.rootLayer.children},update:(...e)=>n.update(...e)}),f=k(t.layerStore,t.routeStore),c={points:z,trail:K,lines:q,linesAnimated:U,currentPosition:G},y=b(l?.properties?.config?.snapThreshold)||H,S=D({thresholdInMeters:y,gpsConfig:l?.properties?.config}),p=j({engine:d,renderer:r,iconProvider:h,floorContext:f,layers:c,snapThreshold:S,onTransitionClick:e=>{e.role==="exit"&&t.layerStore.updateVisibility(e.targetLayer,!0)},onRouteUpdate:(e,o)=>{t.routeStore.updateRoute(e),o.isEmpty()||(t.uiState.moveToRect=o)},onRouteDistance:e=>t.routeStore.updateRouteDistance(e)}),E=Y({renderer:r,kioskIconMap:t.fp.icons,layer:c.points}),v=O({renderer:r,iconMap:t.fp.icons,pixelRatio:devicePixelRatio,floorContext:f,layer:c.points}),_=F(l?.properties?.config),L=x({runtime:p,kioskHandler:E,yahHandler:v,stores:{routeStore:t.routeStore,uiState:t.uiState,layerStore:t.layerStore},rerouteThresholdSvg:_}),i=n.renderer;if(!i)throw new Error("renderer: rendererService.renderer is null \u2014 start RendererService first");const A=n.onPtScale("wayfinding",e=>{const o=r.applyScale(e);o.length&&n.update(...o)}),T=n.onRoll("wayfinding",e=>{const o=r.applyRoll(e);o.length&&n.update(...o)}),u=e=>r.handleClick(g(e.data).defs),m=e=>{i.canvas.style.cursor=r.handleHover(g(e.data).defs)?"pointer":""};i.events.addEventListener("pointer:click",u),i.events.addEventListener("pointer:move",m),t.routeStore.showAccessible=s.getLines().some(e=>e.unaccessible);const R={engine:d};return a=R,r.flush(),()=>{i.events.removeEventListener("pointer:click",u),i.events.removeEventListener("pointer:move",m),a===R&&(a=null,A(),T(),t.routeStore.showAccessible=!1),L(),p.destroy()}}
1
+ import{createWayfinding as g}from"@expofp/wayfinding";import{fpGeo as L}from"../data/fpGeo";import{createImageDef as _,createLineDef as A,getRotation as h,rectToRenderer as W}from"../renderer";import{pickDefaultScene as p}from"../renderer/engine-core/defs";import{createCanvasIconProvider as w,createFloorContext as I,createGraphDataSource as P}from"./adapters";import{bindMobxReactions as k}from"./bindMobxReactions";import{createKioskHandler as x}from"./handlers/kioskHandler";import{createYahHandler as M}from"./handlers/yahHandler";import{WF_CURRENT_POSITION_LAYER_NAME as N,WF_LINES_ANIMATED_LAYER_NAME as C,WF_LINES_LAYER_NAME as T,WF_POINTS_LAYER_NAME as b,WF_TRAIL_LAYER_NAME as D}from"./layers";let o=null;export function isWayfindingReady(){return o!==null}function F(){if(!o)throw new Error("Wayfinding is not initialized \u2014 call createWayfinding() first.");return o}export function buildRoute(r,t,a){return F().wayfinding.buildRoute(r,t,a)}export function createWayfinding(r,t){const a=P(),y=w({iconMap:t.fp.icons,pixelRatio:devicePixelRatio}),s=I(t.layerStore,t.routeStore),c={points:b,trail:D,lines:T,linesAnimated:C,currentPosition:N},n=g({dataSource:a,renderer:{createImageDef:_,createLineDef:A,getRotation:h,rectToRenderer:W,getScale:()=>r.scale,getLayers:()=>{const e=r.scene;if(!e)throw new Error("renderer: rendererService.scene is null \u2014 start RendererService first");return e.rootLayer.children},update:(...e)=>r.update(...e)},iconProvider:y,floorContext:s,layers:c,gpsConfig:L?.properties?.config,onTransitionClick:e=>{e.role==="exit"&&t.layerStore.updateVisibility(e.targetLayer,!0)},onRouteUpdate:(e,u)=>{t.routeStore.updateRoute([...e]),u.isEmpty()||(t.uiState.moveToRect=u)},onRouteDistance:e=>t.routeStore.updateRouteDistance(e)}),R=x({wayfinding:n,kioskIconMap:t.fp.icons,layer:c.points}),m=M({wayfinding:n,iconMap:t.fp.icons,pixelRatio:devicePixelRatio,floorContext:s,layer:c.points}),S=k({wayfinding:n,kioskHandler:R,yahHandler:m,stores:{routeStore:t.routeStore,uiState:t.uiState,layerStore:t.layerStore}}),i=r.renderer;if(!i)throw new Error("renderer: rendererService.renderer is null \u2014 start RendererService first");const v=r.onPtScale("wayfinding",e=>{n.applyScale(e)}),E=r.onRoll("wayfinding",e=>{n.applyRoll(e)}),l=e=>n.handleClick(p(e.data).defs),d=e=>{i.canvas.style.cursor=n.handleHover(p(e.data).defs)?"pointer":""};i.events.addEventListener("pointer:click",l),i.events.addEventListener("pointer:move",d),t.routeStore.showAccessible=a.getLines().some(e=>e.unaccessible);const f={wayfinding:n};return o=f,n.flush(),()=>{i.events.removeEventListener("pointer:click",l),i.events.removeEventListener("pointer:move",d),o===f&&(o=null,v(),E(),t.routeStore.showAccessible=!1),S(),n.destroy()}}
@@ -1,5 +1,5 @@
1
+ import type { Wayfinding } from '@expofp/wayfinding';
1
2
  import type { Kiosk } from '../../components/Kiosk/SetKiosk';
2
- import type { WayfindingRenderer } from '../renderer';
3
3
  /**
4
4
  * Updates the kiosk icon in response to store changes.
5
5
  *
@@ -17,8 +17,8 @@ export type KioskHandler = (kiosk: Kiosk | null, activeFloor: string | undefined
17
17
  * runtime's portability: the runtime deals with source/destination/position/
18
18
  * transitions only, and never learns that kiosks exist.
19
19
  */
20
- export declare function createKioskHandler({ renderer, kioskIconMap, layer, }: {
21
- renderer: WayfindingRenderer;
20
+ export declare function createKioskHandler({ wayfinding, kioskIconMap, layer, }: {
21
+ wayfinding: Pick<Wayfinding, 'setIcon' | 'flush'>;
22
22
  kioskIconMap: Map<string, HTMLImageElement> | undefined;
23
23
  layer: string;
24
24
  }): KioskHandler;
@@ -1 +1 @@
1
- import{degToRad as u}from"@expofp/geometry";import{createKioskCanvas as s}from"../adapters";const n="kiosk",i=0;export function createKioskHandler({renderer:t,kioskIconMap:f,layer:a}){return(o,c,l)=>{if(!o){t.setIcon(n,null),t.flush();return}if(l!==i&&o.z&&c&&o.z!==c){t.setIcon(n,null),t.flush();return}t.setIcon(n,{canvas:s(f,o.iconSizePercent),layer:a,x:o.x,y:o.y,rotation:u(o.heading??0)}),t.flush()}}
1
+ import{degToRad as u}from"@expofp/geometry";import{createKioskCanvas as s}from"../adapters";const r="kiosk",f=0;export function createKioskHandler({wayfinding:o,kioskIconMap:c,layer:n}){return(e,t,l)=>{if(!e){o.setIcon(r,null),o.flush();return}if(l!==f&&e.z&&t&&e.z!==t){o.setIcon(r,null),o.flush();return}o.setIcon(r,{canvas:s(c,e.iconSizePercent),layer:n,x:e.x,y:e.y,rotation:u(e.heading??0)}),o.flush()}}
@@ -1,5 +1,4 @@
1
- import { type WayfindingRenderer } from '../renderer';
2
- import { type FloorContext } from '../runtime/types';
1
+ import type { FloorContext, Wayfinding } from '@expofp/wayfinding';
3
2
  /**
4
3
  * Places or hides the "You Are Here" marker. An efp-specific map annotation
5
4
  * (shown when `routeStore.iconType !== 0` and no active route) — separated
@@ -13,8 +12,8 @@ export type YahHandler = (position: {
13
12
  readonly y: number;
14
13
  readonly layer: string;
15
14
  } | null) => void;
16
- export declare function createYahHandler({ renderer, iconMap, pixelRatio, floorContext, layer, }: {
17
- renderer: WayfindingRenderer;
15
+ export declare function createYahHandler({ wayfinding, iconMap, pixelRatio, floorContext, layer, }: {
16
+ wayfinding: Pick<Wayfinding, 'setIcon' | 'flush'>;
18
17
  iconMap: Map<string, HTMLImageElement>;
19
18
  pixelRatio: number;
20
19
  floorContext: FloorContext;
@@ -1 +1 @@
1
- import{createImageCanvas as f,createYahCanvas as l}from"../../components/Map/drawing/config/canvases";import{decreaseByPercentage as o}from"../../utils/math";const c="yah",u="#ff4343",A=64,C=90,_=32;function E(a,e){const n=a.get(c);return n?(n.id=c,f(n,o(A,_),o(C,_),e)):l(e,u)}export function createYahHandler({renderer:a,iconMap:e,pixelRatio:n,floorContext:i,layer:I}){const s=E(e,n);return s.id="current-location-2",t=>{if(!t){a.setIcon(c,null),a.flush();return}const r=i.isLayerVisible(t.layer);a.setIcon(c,{canvas:s,layer:I,x:t.x,y:t.y,hidden:!r,dimmed:!r,origin:[.5,1]}),a.flush()}}
1
+ import{createImageCanvas as u,createYahCanvas as A}from"../../components/Map/drawing/config/canvases";import{decreaseByPercentage as o}from"../../utils/math";const n="yah",C="#ff4343",E=64,H=90,_=32;function Y(e,a){const r=e.get(n);return r?(r.id=n,u(r,o(E,_),o(H,_),a)):A(a,C)}export function createYahHandler({wayfinding:e,iconMap:a,pixelRatio:r,floorContext:I,layer:l}){const c=Y(a,r);return c.id="current-location-2",t=>{if(!t){e.setIcon(n,null),e.flush();return}const s=I.isLayerVisible(t.layer);e.setIcon(n,{canvas:c,layer:l,x:t.x,y:t.y,hidden:!s,dimmed:!s,origin:[.5,1]}),e.flush()}}
@@ -1,13 +1,10 @@
1
1
  /**
2
2
  * efp-side wayfinding facade — the single entry the floorplan app imports from
3
3
  * (stores, mount points). Re-exports the bootstrap (`createWayfinding`), the
4
- * runtime facade (`buildRoute`/`isWayfindingReady`), the glue endpoint helpers,
5
- * and the `RouteLine` type.
6
- *
7
- * When `core`/`runtime`/`renderer` move into `@expofp/wayfinding`, this file
8
- * stays on the efp side and re-points the type exports at the package.
4
+ * runtime facade (`isWayfindingReady`), and the glue endpoint helpers.
9
5
  */
10
6
  export { boothToEndpoint, CURRENT_LOCATION_NAME, CURRENT_POSITION_POINT_ID, KIOSK_ANCHOR_POINT_ID, toArbitraryPoint, } from './adapters';
11
- export type { RouteLine } from './core';
12
- export { buildRoute, createWayfinding, isWayfindingReady } from './createWayfinding';
7
+ export { buildRoute } from './createWayfinding';
8
+ export { createWayfinding, isWayfindingReady } from './createWayfinding';
9
+ export type { RouteLine } from '@expofp/wayfinding';
13
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- export{boothToEndpoint,CURRENT_LOCATION_NAME,CURRENT_POSITION_POINT_ID,KIOSK_ANCHOR_POINT_ID,toArbitraryPoint}from"./adapters";export{buildRoute,createWayfinding,isWayfindingReady}from"./createWayfinding";
1
+ export{boothToEndpoint,CURRENT_LOCATION_NAME,CURRENT_POSITION_POINT_ID,KIOSK_ANCHOR_POINT_ID,toArbitraryPoint}from"./adapters";export{buildRoute}from"./createWayfinding";export{createWayfinding,isWayfindingReady}from"./createWayfinding";