@expofp/floorplan 0.0.0-experimental.2d6c681

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 (1011) hide show
  1. package/README.md +8 -0
  2. package/dist/browser/Button-DT-Jfwrb.js +64 -0
  3. package/dist/browser/CookieConsent-BIsWzAiP.js +38 -0
  4. package/dist/browser/Debug-B5mmo0ZX.js +53 -0
  5. package/dist/browser/DebugTools-Y0aycjKM.js +1931 -0
  6. package/dist/browser/Demo-B2klxORi.js +71 -0
  7. package/dist/browser/Free-suULW-LU.js +69 -0
  8. package/dist/browser/GalleryContainer-BGBNGRKU.js +3355 -0
  9. package/dist/browser/GpsLoader-Idv0kq5D.js +154 -0
  10. package/dist/browser/KioskStore-Dg9jaX5d.js +250 -0
  11. package/dist/browser/LayerStore-CK6wLW56.js +24105 -0
  12. package/dist/browser/MaplibreAdapter-uZUhZfFW.js +36770 -0
  13. package/dist/browser/ModalContainer-DWm8vEaI.js +148 -0
  14. package/dist/browser/PermissionNotice-DaqnuHln.js +54 -0
  15. package/dist/browser/RouteStore-NE2I9tiF.js +3715 -0
  16. package/dist/browser/SetKioskMode-Dwlf5w7q.js +49 -0
  17. package/dist/browser/ShowKiosk-Cr-QmIUT.js +82 -0
  18. package/dist/browser/ViewerMenuPanel-CTAjGsq2.js +133 -0
  19. package/dist/browser/add-debug-secret-listener-BECnIMzo.js +55 -0
  20. package/dist/browser/adopt-global-settings-U-KbyxMd.js +185 -0
  21. package/dist/browser/boolean-editor-CYMx87em.js +149 -0
  22. package/dist/browser/bootIntercom-BqQsnxII.js +37 -0
  23. package/dist/browser/bundle.json +422 -0
  24. package/dist/browser/camera-events-DSCuSH25.js +18 -0
  25. package/dist/browser/classnames-YcGXWNfg.js +39 -0
  26. package/dist/browser/client-BcPpS_Gj.js +7402 -0
  27. package/dist/browser/compat-helper.js +6 -0
  28. package/dist/browser/components-BjEhhgf2.js +7393 -0
  29. package/dist/browser/create-live-plan-BaEGBhGA.js +4046 -0
  30. package/dist/browser/debounce-raMZ2DqK.js +2102 -0
  31. package/dist/browser/debug-context-CNBgUWR8.js +24315 -0
  32. package/dist/browser/debug-overlay-B__pFwQg.js +1455 -0
  33. package/dist/browser/debug-ui-BaE8MZQX.js +86 -0
  34. package/dist/browser/dist-C1NaWqk4.js +2611 -0
  35. package/dist/browser/dist-Cx8u0gjK.js +21 -0
  36. package/dist/browser/dist-wOC6gYFh.js +205 -0
  37. package/dist/browser/efp-debug-init-CozbueIl.js +245 -0
  38. package/dist/browser/enum-editor-CkiQPgZv.js +34 -0
  39. package/dist/browser/es5-B__Ovz45.js +1712 -0
  40. package/dist/browser/event-head-C_inMpbD.js +56 -0
  41. package/dist/browser/event-not-found-Z2mJBZE3.js +31 -0
  42. package/dist/browser/expofp-overlay.png +0 -0
  43. package/dist/browser/expofpUrl-jBUlvkwz.js +19 -0
  44. package/dist/browser/exports-CvUYw1h6.js +1525 -0
  45. package/dist/browser/favicon-BkDrYTmU.js +12 -0
  46. package/dist/browser/fetch-retry.umd-2B2pCUIS.js +78 -0
  47. package/dist/browser/flex-3lSivw8z.js +823 -0
  48. package/dist/browser/floorplan.loader-CGzIMplb.js +3282 -0
  49. package/dist/browser/floorplan.ready-r96zV9bP.js +1448 -0
  50. package/dist/browser/fonts/efp-symbols.woff +0 -0
  51. package/dist/browser/fonts/inter-400.woff2 +0 -0
  52. package/dist/browser/fonts/inter-500.woff2 +0 -0
  53. package/dist/browser/fonts/inter-600.woff2 +0 -0
  54. package/dist/browser/fonts/oswald-v17-cyrillic_latin-300.woff +0 -0
  55. package/dist/browser/fonts/oswald-v17-cyrillic_latin-500.woff +0 -0
  56. package/dist/browser/freeBanner-CnrBc9Tl.js +22 -0
  57. package/dist/browser/fuse-B7V1lkoA.js +1177 -0
  58. package/dist/browser/i18n-BgFBhYOU.js +7205 -0
  59. package/dist/browser/icons/accessible.svg +5 -0
  60. package/dist/browser/icons/arrow-down.svg +3 -0
  61. package/dist/browser/icons/bus-white.svg +3 -0
  62. package/dist/browser/icons/check.svg +3 -0
  63. package/dist/browser/icons/clear.svg +4 -0
  64. package/dist/browser/icons/departure.svg +5 -0
  65. package/dist/browser/icons/departure_inactive.svg +5 -0
  66. package/dist/browser/icons/destination.svg +5 -0
  67. package/dist/browser/icons/direction.svg +54 -0
  68. package/dist/browser/icons/dots.svg +4 -0
  69. package/dist/browser/icons/dragdrop-solid.svg +11 -0
  70. package/dist/browser/icons/facebook.svg +4 -0
  71. package/dist/browser/icons/from.svg +4 -0
  72. package/dist/browser/icons/kiosk.svg +1 -0
  73. package/dist/browser/icons/linkedin.svg +3 -0
  74. package/dist/browser/icons/rotate.svg +5 -0
  75. package/dist/browser/icons/tap.svg +5 -0
  76. package/dist/browser/icons/to.svg +4 -0
  77. package/dist/browser/icons/transition.svg +7 -0
  78. package/dist/browser/icons/transition_down.svg +15 -0
  79. package/dist/browser/icons/transition_up.svg +15 -0
  80. package/dist/browser/icons/twitter.svg +3 -0
  81. package/dist/browser/icons/yah.svg +17 -0
  82. package/dist/browser/index.html +139 -0
  83. package/dist/browser/index.js +254 -0
  84. package/dist/browser/index.module-kJmnWg5B.js +153 -0
  85. package/dist/browser/integrateKiosk-D45vYRsm.js +35 -0
  86. package/dist/browser/is-debug-BRHdrnKr.js +197 -0
  87. package/dist/browser/is-own-domain-DNvxb9Ph.js +26 -0
  88. package/dist/browser/is-webview-cTH4yz8f.js +12 -0
  89. package/dist/browser/journey-plan-DtL28HMP.js +1865 -0
  90. package/dist/browser/jsx-runtime-DQgnuS-I.js +30 -0
  91. package/dist/browser/kiosk-mode-DfkGlDkT.js +28 -0
  92. package/dist/browser/kiosk-record-JAEq8SV6.js +18 -0
  93. package/dist/browser/kioskUrlParam-CnYhnC_7.js +141 -0
  94. package/dist/browser/lib--J2yQXt6.js +1910 -0
  95. package/dist/browser/loadImage-DzSnRAxX.js +30 -0
  96. package/dist/browser/locales/ar.json +228 -0
  97. package/dist/browser/locales/da.json +229 -0
  98. package/dist/browser/locales/de.json +228 -0
  99. package/dist/browser/locales/es.json +228 -0
  100. package/dist/browser/locales/fr.json +228 -0
  101. package/dist/browser/locales/he.json +228 -0
  102. package/dist/browser/locales/it.json +228 -0
  103. package/dist/browser/locales/kk.json +228 -0
  104. package/dist/browser/locales/ko.json +228 -0
  105. package/dist/browser/locales/mn.json +228 -0
  106. package/dist/browser/locales/nl.json +228 -0
  107. package/dist/browser/locales/pl.json +228 -0
  108. package/dist/browser/locales/pt.json +228 -0
  109. package/dist/browser/locales/ru.json +228 -0
  110. package/dist/browser/locales/sv.json +228 -0
  111. package/dist/browser/locales/th.json +228 -0
  112. package/dist/browser/locales/tr.json +228 -0
  113. package/dist/browser/locales/uk.json +228 -0
  114. package/dist/browser/locales/vi.json +228 -0
  115. package/dist/browser/locales/zh.json +228 -0
  116. package/dist/browser/logDeviceInfo-BTqyv9Xe.js +58 -0
  117. package/dist/browser/mobx-C-kcS0zI.js +43 -0
  118. package/dist/browser/mobx.module-BOCLFB5I.js +2064 -0
  119. package/dist/browser/optional-boolean-editor-ZncW2HBw.js +20 -0
  120. package/dist/browser/optional-enum-editor-Dkzs9jDN.js +34 -0
  121. package/dist/browser/optional-string-editor-DC9PMUWB.js +30 -0
  122. package/dist/browser/particles.min-eC5xdOrB.js +133 -0
  123. package/dist/browser/react-DqPP-mkq.js +301 -0
  124. package/dist/browser/react-dom-BkVzoZWO.js +139 -0
  125. package/dist/browser/rolldown-runtime-DUb2xvRc.js +28 -0
  126. package/dist/browser/scheduler-NBuuaWIe.js +212 -0
  127. package/dist/browser/select-Cxf-YiNA.js +1367 -0
  128. package/dist/browser/settings-D74eG9h8.js +9 -0
  129. package/dist/browser/settings-item-DUUbKec_.js +76 -0
  130. package/dist/browser/store-q_CTsixH.js +58 -0
  131. package/dist/browser/string-editor-CINOmY_C.js +30 -0
  132. package/dist/browser/text-field-DORaOVht.js +88 -0
  133. package/dist/browser/theme-DyFm9MGz.js +2803 -0
  134. package/dist/browser/ui-DsCU3FV6.js +43 -0
  135. package/dist/browser/useRenderTarget-RFckzUJM.js +57 -0
  136. package/dist/browser/vendor/perfect-scrollbar/css/perfect-scrollbar.css +1 -0
  137. package/dist/browser/vendor/sanitize-css/sanitize.css +1 -0
  138. package/dist/browser/venue-public-BA3x-n4N.js +296 -0
  139. package/dist/browser/venues-DKpIy-87.js +447 -0
  140. package/dist/browser/viewport-B7plho3P.js +48 -0
  141. package/dist/browser/warning.png +0 -0
  142. package/dist/esm/_misc_to_move/initHtmlHead.d.ts +2 -0
  143. package/dist/esm/_misc_to_move/initHtmlHead.js +34 -0
  144. package/dist/esm/_misc_to_move/logBuildInfo.d.ts +2 -0
  145. package/dist/esm/_misc_to_move/logBuildInfo.js +35 -0
  146. package/dist/esm/_misc_to_move/logDeviceInfo.d.ts +10 -0
  147. package/dist/esm/_misc_to_move/logDeviceInfo.js +84 -0
  148. package/dist/esm/components/AlertContainer.d.ts +4 -0
  149. package/dist/esm/components/AlertContainer.js +8 -0
  150. package/dist/esm/components/AutocompleteContainer.d.ts +4 -0
  151. package/dist/esm/components/AutocompleteContainer.js +14 -0
  152. package/dist/esm/components/BaseFilterModal.d.ts +11 -0
  153. package/dist/esm/components/BaseFilterModal.js +73 -0
  154. package/dist/esm/components/Bookmarks.d.ts +3 -0
  155. package/dist/esm/components/Bookmarks.js +26 -0
  156. package/dist/esm/components/Booth/Booth.d.ts +5 -0
  157. package/dist/esm/components/Booth/Booth.js +135 -0
  158. package/dist/esm/components/Booth/BoothOnHold.d.ts +13 -0
  159. package/dist/esm/components/Booth/BoothOnHold.js +11 -0
  160. package/dist/esm/components/Booth/BoothReserved.d.ts +3 -0
  161. package/dist/esm/components/Booth/BoothReserved.js +7 -0
  162. package/dist/esm/components/Booth/BoothSpecial.d.ts +8 -0
  163. package/dist/esm/components/Booth/BoothSpecial.js +4 -0
  164. package/dist/esm/components/Booth/BoothWithoutExhibitor.d.ts +13 -0
  165. package/dist/esm/components/Booth/BoothWithoutExhibitor.js +29 -0
  166. package/dist/esm/components/Category.d.ts +5 -0
  167. package/dist/esm/components/Category.js +25 -0
  168. package/dist/esm/components/CategoryFilterModal.d.ts +3 -0
  169. package/dist/esm/components/CategoryFilterModal.js +63 -0
  170. package/dist/esm/components/CookieConsent.d.ts +9 -0
  171. package/dist/esm/components/CookieConsent.js +9 -0
  172. package/dist/esm/components/Debug.d.ts +5 -0
  173. package/dist/esm/components/Debug.js +15 -0
  174. package/dist/esm/components/Demo.d.ts +4 -0
  175. package/dist/esm/components/Demo.js +37 -0
  176. package/dist/esm/components/DownloadListContainer.d.ts +5 -0
  177. package/dist/esm/components/DownloadListContainer.js +8 -0
  178. package/dist/esm/components/EntityItemContainer.d.ts +28 -0
  179. package/dist/esm/components/EntityItemContainer.js +36 -0
  180. package/dist/esm/components/EntityList.d.ts +9 -0
  181. package/dist/esm/components/EntityList.js +144 -0
  182. package/dist/esm/components/EntityListRow.d.ts +13 -0
  183. package/dist/esm/components/EntityListRow.js +78 -0
  184. package/dist/esm/components/ErrorBoundary.d.ts +15 -0
  185. package/dist/esm/components/ErrorBoundary.js +29 -0
  186. package/dist/esm/components/Event.d.ts +5 -0
  187. package/dist/esm/components/Event.js +167 -0
  188. package/dist/esm/components/EventBadgeContainer.d.ts +8 -0
  189. package/dist/esm/components/EventBadgeContainer.js +29 -0
  190. package/dist/esm/components/Exhibitor.d.ts +5 -0
  191. package/dist/esm/components/Exhibitor.js +299 -0
  192. package/dist/esm/components/Filter.d.ts +4 -0
  193. package/dist/esm/components/Filter.js +24 -0
  194. package/dist/esm/components/Free.d.ts +4 -0
  195. package/dist/esm/components/Free.js +31 -0
  196. package/dist/esm/components/GalleryContainer.d.ts +6 -0
  197. package/dist/esm/components/GalleryContainer.js +55 -0
  198. package/dist/esm/components/GlobalErrorMessage.d.ts +4 -0
  199. package/dist/esm/components/GlobalErrorMessage.js +9 -0
  200. package/dist/esm/components/GpsLoader.d.ts +5 -0
  201. package/dist/esm/components/GpsLoader.js +29 -0
  202. package/dist/esm/components/HeatmapLegendContainer.d.ts +5 -0
  203. package/dist/esm/components/HeatmapLegendContainer.js +13 -0
  204. package/dist/esm/components/HighlightTextContainer.d.ts +6 -0
  205. package/dist/esm/components/HighlightTextContainer.js +10 -0
  206. package/dist/esm/components/IntercomLauncher.d.ts +5 -0
  207. package/dist/esm/components/IntercomLauncher.js +20 -0
  208. package/dist/esm/components/JourneyPanel.d.ts +35 -0
  209. package/dist/esm/components/JourneyPanel.js +68 -0
  210. package/dist/esm/components/Kiosk/KioskStore.d.ts +60 -0
  211. package/dist/esm/components/Kiosk/KioskStore.js +411 -0
  212. package/dist/esm/components/Kiosk/SetKiosk/Confirm/ConfirmDialog.d.ts +5 -0
  213. package/dist/esm/components/Kiosk/SetKiosk/Confirm/ConfirmDialog.js +8 -0
  214. package/dist/esm/components/Kiosk/SetKiosk/FormInput/RangeInput.d.ts +5 -0
  215. package/dist/esm/components/Kiosk/SetKiosk/FormInput/RangeInput.js +24 -0
  216. package/dist/esm/components/Kiosk/SetKiosk/Message/InfoMessage.d.ts +5 -0
  217. package/dist/esm/components/Kiosk/SetKiosk/Message/InfoMessage.js +7 -0
  218. package/dist/esm/components/Kiosk/SetKiosk/SetKioskComponent.d.ts +5 -0
  219. package/dist/esm/components/Kiosk/SetKiosk/SetKioskComponent.js +78 -0
  220. package/dist/esm/components/Kiosk/SetKiosk/SetKioskForm.d.ts +5 -0
  221. package/dist/esm/components/Kiosk/SetKiosk/SetKioskForm.js +10 -0
  222. package/dist/esm/components/Kiosk/SetKiosk/SetKioskStatusMessages.d.ts +5 -0
  223. package/dist/esm/components/Kiosk/SetKiosk/SetKioskStatusMessages.js +15 -0
  224. package/dist/esm/components/Kiosk/SetKiosk/constants.d.ts +6 -0
  225. package/dist/esm/components/Kiosk/SetKiosk/constants.js +6 -0
  226. package/dist/esm/components/Kiosk/SetKiosk/getKioskUrlParamKey.d.ts +2 -0
  227. package/dist/esm/components/Kiosk/SetKiosk/getKioskUrlParamKey.js +4 -0
  228. package/dist/esm/components/Kiosk/SetKiosk/getName.d.ts +2 -0
  229. package/dist/esm/components/Kiosk/SetKiosk/getName.js +2 -0
  230. package/dist/esm/components/Kiosk/SetKiosk/getSlug.d.ts +2 -0
  231. package/dist/esm/components/Kiosk/SetKiosk/getSlug.js +2 -0
  232. package/dist/esm/components/Kiosk/SetKiosk/index.d.ts +7 -0
  233. package/dist/esm/components/Kiosk/SetKiosk/index.js +6 -0
  234. package/dist/esm/components/Kiosk/SetKiosk/storage.d.ts +5 -0
  235. package/dist/esm/components/Kiosk/SetKiosk/storage.js +21 -0
  236. package/dist/esm/components/Kiosk/SetKiosk/types.d.ts +109 -0
  237. package/dist/esm/components/Kiosk/SetKiosk/types.js +1 -0
  238. package/dist/esm/components/Kiosk/SetKioskMode.d.ts +3 -0
  239. package/dist/esm/components/Kiosk/SetKioskMode.js +35 -0
  240. package/dist/esm/components/Kiosk/ShowKiosk.d.ts +3 -0
  241. package/dist/esm/components/Kiosk/ShowKiosk.js +72 -0
  242. package/dist/esm/components/Kiosk/integrateKiosk.d.ts +10 -0
  243. package/dist/esm/components/Kiosk/integrateKiosk.js +68 -0
  244. package/dist/esm/components/Kiosk/kiosk-mode.d.ts +26 -0
  245. package/dist/esm/components/Kiosk/kiosk-mode.js +56 -0
  246. package/dist/esm/components/Kiosk/kiosk-record.d.ts +23 -0
  247. package/dist/esm/components/Kiosk/kiosk-record.js +29 -0
  248. package/dist/esm/components/Kiosk/kioskApi.d.ts +4 -0
  249. package/dist/esm/components/Kiosk/kioskApi.js +47 -0
  250. package/dist/esm/components/Kiosk/kioskUrlParam.d.ts +8 -0
  251. package/dist/esm/components/Kiosk/kioskUrlParam.js +46 -0
  252. package/dist/esm/components/Kiosk/recoverKioskFromUrlPrams.d.ts +2 -0
  253. package/dist/esm/components/Kiosk/recoverKioskFromUrlPrams.js +9 -0
  254. package/dist/esm/components/Language.d.ts +4 -0
  255. package/dist/esm/components/Language.js +15 -0
  256. package/dist/esm/components/LanguageRowContainer.d.ts +7 -0
  257. package/dist/esm/components/LanguageRowContainer.js +9 -0
  258. package/dist/esm/components/Layout.d.ts +11 -0
  259. package/dist/esm/components/Layout.js +160 -0
  260. package/dist/esm/components/LevelBadgeContainer.d.ts +6 -0
  261. package/dist/esm/components/LevelBadgeContainer.js +10 -0
  262. package/dist/esm/components/List.d.ts +9 -0
  263. package/dist/esm/components/List.js +77 -0
  264. package/dist/esm/components/LogoOverlay.d.ts +3 -0
  265. package/dist/esm/components/LogoOverlay.js +78 -0
  266. package/dist/esm/components/Map/Map.d.ts +2 -0
  267. package/dist/esm/components/Map/Map.js +242 -0
  268. package/dist/esm/components/Map/MapCamera.d.ts +17 -0
  269. package/dist/esm/components/Map/MapCamera.js +194 -0
  270. package/dist/esm/components/Map/MapCursorCoords.d.ts +13 -0
  271. package/dist/esm/components/Map/MapCursorCoords.js +61 -0
  272. package/dist/esm/components/Map/MapViewport.d.ts +12 -0
  273. package/dist/esm/components/Map/MapViewport.js +29 -0
  274. package/dist/esm/components/Map/booth-by-xy.d.ts +14 -0
  275. package/dist/esm/components/Map/booth-by-xy.js +128 -0
  276. package/dist/esm/components/Map/camera-events.d.ts +19 -0
  277. package/dist/esm/components/Map/camera-events.js +26 -0
  278. package/dist/esm/components/Map/camera.d.ts +48 -0
  279. package/dist/esm/components/Map/camera.js +43 -0
  280. package/dist/esm/components/Map/drawing/config/BoothDrawerBase.d.ts +8 -0
  281. package/dist/esm/components/Map/drawing/config/BoothDrawerBase.js +8 -0
  282. package/dist/esm/components/Map/drawing/config/BoothShape.d.ts +7 -0
  283. package/dist/esm/components/Map/drawing/config/BoothShape.js +76 -0
  284. package/dist/esm/components/Map/drawing/config/TextFitter.d.ts +11 -0
  285. package/dist/esm/components/Map/drawing/config/TextFitter.js +174 -0
  286. package/dist/esm/components/Map/drawing/config/booth-badge-anchor.d.ts +130 -0
  287. package/dist/esm/components/Map/drawing/config/booth-badge-anchor.js +306 -0
  288. package/dist/esm/components/Map/drawing/config/booth-logos.d.ts +38 -0
  289. package/dist/esm/components/Map/drawing/config/booth-logos.js +94 -0
  290. package/dist/esm/components/Map/drawing/config/canvases.d.ts +96 -0
  291. package/dist/esm/components/Map/drawing/config/canvases.js +434 -0
  292. package/dist/esm/components/Map/drawing/config/config-all.d.ts +6 -0
  293. package/dist/esm/components/Map/drawing/config/config-all.js +92 -0
  294. package/dist/esm/components/Map/drawing/config/config-bg.d.ts +8 -0
  295. package/dist/esm/components/Map/drawing/config/config-bg.js +54 -0
  296. package/dist/esm/components/Map/drawing/config/config-booth-badge-eligibility.d.ts +28 -0
  297. package/dist/esm/components/Map/drawing/config/config-booth-badge-eligibility.js +7 -0
  298. package/dist/esm/components/Map/drawing/config/config-booth-badge-scale.d.ts +20 -0
  299. package/dist/esm/components/Map/drawing/config/config-booth-badge-scale.js +11 -0
  300. package/dist/esm/components/Map/drawing/config/config-booth-badge-visibility.d.ts +37 -0
  301. package/dist/esm/components/Map/drawing/config/config-booth-badge-visibility.js +3 -0
  302. package/dist/esm/components/Map/drawing/config/config-booth-badge.d.ts +90 -0
  303. package/dist/esm/components/Map/drawing/config/config-booth-badge.js +326 -0
  304. package/dist/esm/components/Map/drawing/config/config-booth-bg.d.ts +33 -0
  305. package/dist/esm/components/Map/drawing/config/config-booth-bg.js +240 -0
  306. package/dist/esm/components/Map/drawing/config/config-booth-bookmark.d.ts +24 -0
  307. package/dist/esm/components/Map/drawing/config/config-booth-bookmark.js +65 -0
  308. package/dist/esm/components/Map/drawing/config/config-booth-border.d.ts +12 -0
  309. package/dist/esm/components/Map/drawing/config/config-booth-border.js +92 -0
  310. package/dist/esm/components/Map/drawing/config/config-booth-labels-special.d.ts +28 -0
  311. package/dist/esm/components/Map/drawing/config/config-booth-labels-special.js +147 -0
  312. package/dist/esm/components/Map/drawing/config/config-booth-labels.d.ts +63 -0
  313. package/dist/esm/components/Map/drawing/config/config-booth-labels.js +380 -0
  314. package/dist/esm/components/Map/drawing/config/config-booths.d.ts +5 -0
  315. package/dist/esm/components/Map/drawing/config/config-booths.js +152 -0
  316. package/dist/esm/components/Map/drawing/config/config-load-layer.d.ts +4 -0
  317. package/dist/esm/components/Map/drawing/config/config-load-layer.js +119 -0
  318. package/dist/esm/components/Map/drawing/config/config-markers.d.ts +42 -0
  319. package/dist/esm/components/Map/drawing/config/config-markers.js +278 -0
  320. package/dist/esm/components/Map/drawing/config/config-outdoor-poi.d.ts +19 -0
  321. package/dist/esm/components/Map/drawing/config/config-outdoor-poi.js +96 -0
  322. package/dist/esm/components/Map/drawing/config/config-pins.d.ts +40 -0
  323. package/dist/esm/components/Map/drawing/config/config-pins.js +533 -0
  324. package/dist/esm/components/Map/drawing/config/label-inset.d.ts +26 -0
  325. package/dist/esm/components/Map/drawing/config/label-inset.js +26 -0
  326. package/dist/esm/components/Map/drawing/config/layer-images.d.ts +24 -0
  327. package/dist/esm/components/Map/drawing/config/layer-images.js +32 -0
  328. package/dist/esm/components/Map/drawing/config/layer-models.d.ts +31 -0
  329. package/dist/esm/components/Map/drawing/config/layer-models.js +38 -0
  330. package/dist/esm/components/Map/drawing/config/loadBoothsImages.d.ts +45 -0
  331. package/dist/esm/components/Map/drawing/config/loadBoothsImages.js +99 -0
  332. package/dist/esm/components/Map/drawing/config/pin-geometry.d.ts +65 -0
  333. package/dist/esm/components/Map/drawing/config/pin-geometry.js +75 -0
  334. package/dist/esm/components/Map/drawing/config/poi-pin-shape.d.ts +100 -0
  335. package/dist/esm/components/Map/drawing/config/poi-pin-shape.js +51 -0
  336. package/dist/esm/components/Map/drawing/config/poi-pin.d.ts +10 -0
  337. package/dist/esm/components/Map/drawing/config/poi-pin.js +88 -0
  338. package/dist/esm/components/Map/drawing/config/selection-style.d.ts +12 -0
  339. package/dist/esm/components/Map/drawing/config/selection-style.js +18 -0
  340. package/dist/esm/components/Map/framing-rect.d.ts +16 -0
  341. package/dist/esm/components/Map/framing-rect.js +24 -0
  342. package/dist/esm/components/Map/pointer.d.ts +79 -0
  343. package/dist/esm/components/Map/pointer.js +181 -0
  344. package/dist/esm/components/Map/scene.d.ts +20 -0
  345. package/dist/esm/components/Map/scene.js +24 -0
  346. package/dist/esm/components/Map/traffic/UpdateQueue.d.ts +13 -0
  347. package/dist/esm/components/Map/traffic/UpdateQueue.js +82 -0
  348. package/dist/esm/components/Map/traffic/trafficLayers.d.ts +12 -0
  349. package/dist/esm/components/Map/traffic/trafficLayers.js +29 -0
  350. package/dist/esm/components/Map/traffic/useBuildRoute.d.ts +9 -0
  351. package/dist/esm/components/Map/traffic/useBuildRoute.js +359 -0
  352. package/dist/esm/components/Map/traffic/useManageTraffic.d.ts +10 -0
  353. package/dist/esm/components/Map/traffic/useManageTraffic.js +643 -0
  354. package/dist/esm/components/Map/viewport.d.ts +63 -0
  355. package/dist/esm/components/Map/viewport.js +82 -0
  356. package/dist/esm/components/Map/with-kiosk.d.ts +11 -0
  357. package/dist/esm/components/Map/with-kiosk.js +25 -0
  358. package/dist/esm/components/MapControlsContainer.d.ts +3 -0
  359. package/dist/esm/components/MapControlsContainer.js +58 -0
  360. package/dist/esm/components/Maplibre/CollapsedAttributionControl.d.ts +12 -0
  361. package/dist/esm/components/Maplibre/CollapsedAttributionControl.js +19 -0
  362. package/dist/esm/components/Maplibre/ExpofpLogoControl.d.ts +20 -0
  363. package/dist/esm/components/Maplibre/ExpofpLogoControl.js +39 -0
  364. package/dist/esm/components/Maplibre/MaplibreAdapter.d.ts +18 -0
  365. package/dist/esm/components/Maplibre/MaplibreAdapter.js +354 -0
  366. package/dist/esm/components/Maplibre/MaplibreWrapper.d.ts +111 -0
  367. package/dist/esm/components/Maplibre/MaplibreWrapper.js +310 -0
  368. package/dist/esm/components/Maplibre/maplibre-recovery.d.ts +4 -0
  369. package/dist/esm/components/Maplibre/maplibre-recovery.js +4 -0
  370. package/dist/esm/components/Maplibre/styles/mapbox-streets-bright.d.ts +3 -0
  371. package/dist/esm/components/Maplibre/styles/mapbox-streets-bright.js +7048 -0
  372. package/dist/esm/components/Maplibre/styles/mapbox-streets.d.ts +3 -0
  373. package/dist/esm/components/Maplibre/styles/mapbox-streets.js +6132 -0
  374. package/dist/esm/components/Maplibre/useCameraReactions.d.ts +14 -0
  375. package/dist/esm/components/Maplibre/useCameraReactions.js +256 -0
  376. package/dist/esm/components/Maplibre/useDimming.d.ts +25 -0
  377. package/dist/esm/components/Maplibre/useDimming.js +61 -0
  378. package/dist/esm/components/Maplibre/useJourneyConnector.d.ts +16 -0
  379. package/dist/esm/components/Maplibre/useJourneyConnector.js +175 -0
  380. package/dist/esm/components/Maplibre/useKioskCameraEvents.d.ts +20 -0
  381. package/dist/esm/components/Maplibre/useKioskCameraEvents.js +52 -0
  382. package/dist/esm/components/Maplibre/useLayerVisibilitySync.d.ts +25 -0
  383. package/dist/esm/components/Maplibre/useLayerVisibilitySync.js +85 -0
  384. package/dist/esm/components/Maplibre/usePoiMarkers.d.ts +25 -0
  385. package/dist/esm/components/Maplibre/usePoiMarkers.js +368 -0
  386. package/dist/esm/components/Maplibre/useVenueCameraTracking.d.ts +6 -0
  387. package/dist/esm/components/Maplibre/useVenueCameraTracking.js +115 -0
  388. package/dist/esm/components/Maplibre/useVenueLayers.d.ts +15 -0
  389. package/dist/esm/components/Maplibre/useVenueLayers.js +463 -0
  390. package/dist/esm/components/Maplibre/useWayfindingAndMarkers.d.ts +11 -0
  391. package/dist/esm/components/Maplibre/useWayfindingAndMarkers.js +23 -0
  392. package/dist/esm/components/Maplibre/utils/basemap-palette.d.ts +19 -0
  393. package/dist/esm/components/Maplibre/utils/basemap-palette.js +125 -0
  394. package/dist/esm/components/Maplibre/utils/geo-config.d.ts +92 -0
  395. package/dist/esm/components/Maplibre/utils/geo-config.js +305 -0
  396. package/dist/esm/components/Maplibre/utils/hit-test-registry.d.ts +18 -0
  397. package/dist/esm/components/Maplibre/utils/hit-test-registry.js +17 -0
  398. package/dist/esm/components/Maplibre/utils/layer-defs.d.ts +9 -0
  399. package/dist/esm/components/Maplibre/utils/layer-defs.js +19 -0
  400. package/dist/esm/components/Maplibre/utils/local-viewport.d.ts +13 -0
  401. package/dist/esm/components/Maplibre/utils/local-viewport.js +31 -0
  402. package/dist/esm/components/Maplibre/utils/map-helpers.d.ts +21 -0
  403. package/dist/esm/components/Maplibre/utils/map-helpers.js +85 -0
  404. package/dist/esm/components/Maplibre/utils/map-theme.d.ts +20 -0
  405. package/dist/esm/components/Maplibre/utils/map-theme.js +44 -0
  406. package/dist/esm/components/Maplibre/utils/marker-layer-order.d.ts +22 -0
  407. package/dist/esm/components/Maplibre/utils/marker-layer-order.js +20 -0
  408. package/dist/esm/components/Maplibre/utils/pmtiles-range-fallback.d.ts +53 -0
  409. package/dist/esm/components/Maplibre/utils/pmtiles-range-fallback.js +110 -0
  410. package/dist/esm/components/Maplibre/utils/poi-marker-hit-test.d.ts +8 -0
  411. package/dist/esm/components/Maplibre/utils/poi-marker-hit-test.js +8 -0
  412. package/dist/esm/components/Maplibre/utils/resolve-map-style.d.ts +19 -0
  413. package/dist/esm/components/Maplibre/utils/resolve-map-style.js +73 -0
  414. package/dist/esm/components/Maplibre/utils/solver.d.ts +23 -0
  415. package/dist/esm/components/Maplibre/utils/solver.js +238 -0
  416. package/dist/esm/components/Maplibre/utils/style-fonts.d.ts +10 -0
  417. package/dist/esm/components/Maplibre/utils/style-fonts.js +24 -0
  418. package/dist/esm/components/Maplibre/utils/venue-calibration-console.d.ts +10 -0
  419. package/dist/esm/components/Maplibre/utils/venue-calibration-console.js +130 -0
  420. package/dist/esm/components/Maplibre/utils/venue-calibration.d.ts +127 -0
  421. package/dist/esm/components/Maplibre/utils/venue-calibration.js +144 -0
  422. package/dist/esm/components/Maplibre/utils/venue-camera-target.d.ts +15 -0
  423. package/dist/esm/components/Maplibre/utils/venue-camera-target.js +19 -0
  424. package/dist/esm/components/Maplibre/utils/venue-contour.d.ts +50 -0
  425. package/dist/esm/components/Maplibre/utils/venue-contour.fixture.d.ts +18 -0
  426. package/dist/esm/components/Maplibre/utils/venue-contour.fixture.js +69 -0
  427. package/dist/esm/components/Maplibre/utils/venue-contour.js +188 -0
  428. package/dist/esm/components/Maplibre/utils/venue-focus.d.ts +26 -0
  429. package/dist/esm/components/Maplibre/utils/venue-focus.js +106 -0
  430. package/dist/esm/components/Maplibre/utils/venue-legibility.d.ts +30 -0
  431. package/dist/esm/components/Maplibre/utils/venue-legibility.js +52 -0
  432. package/dist/esm/components/Maplibre/utils/venue-pin-rasterize.d.ts +88 -0
  433. package/dist/esm/components/Maplibre/utils/venue-pin-rasterize.js +220 -0
  434. package/dist/esm/components/Maplibre/utils/venue-projection.d.ts +37 -0
  435. package/dist/esm/components/Maplibre/utils/venue-projection.js +88 -0
  436. package/dist/esm/components/Maplibre/utils/venue-tap-hit-test.d.ts +9 -0
  437. package/dist/esm/components/Maplibre/utils/venue-tap-hit-test.js +9 -0
  438. package/dist/esm/components/Maplibre/utils/venue-viewport-detail.d.ts +19 -0
  439. package/dist/esm/components/Maplibre/utils/venue-viewport-detail.js +24 -0
  440. package/dist/esm/components/Maplibre/utils/venue-zoom.d.ts +23 -0
  441. package/dist/esm/components/Maplibre/utils/venue-zoom.js +62 -0
  442. package/dist/esm/components/Menu.d.ts +11 -0
  443. package/dist/esm/components/Menu.js +94 -0
  444. package/dist/esm/components/MobileToggleButtonContainer.d.ts +3 -0
  445. package/dist/esm/components/MobileToggleButtonContainer.js +24 -0
  446. package/dist/esm/components/ModalContainer.d.ts +41 -0
  447. package/dist/esm/components/ModalContainer.js +10 -0
  448. package/dist/esm/components/MultiSelectGroupsContainer.d.ts +5 -0
  449. package/dist/esm/components/MultiSelectGroupsContainer.js +8 -0
  450. package/dist/esm/components/OverlayContainer.d.ts +8 -0
  451. package/dist/esm/components/OverlayContainer.js +82 -0
  452. package/dist/esm/components/OverlayGripContainer.d.ts +4 -0
  453. package/dist/esm/components/OverlayGripContainer.js +11 -0
  454. package/dist/esm/components/OverlayParticles.d.ts +5 -0
  455. package/dist/esm/components/OverlayParticles.js +54 -0
  456. package/dist/esm/components/PlanSelectorContainer.d.ts +3 -0
  457. package/dist/esm/components/PlanSelectorContainer.js +79 -0
  458. package/dist/esm/components/RebookingNotesContainer.d.ts +4 -0
  459. package/dist/esm/components/RebookingNotesContainer.js +8 -0
  460. package/dist/esm/components/RebookingRadioGroupContainer.d.ts +6 -0
  461. package/dist/esm/components/RebookingRadioGroupContainer.js +23 -0
  462. package/dist/esm/components/RoutePlanner/RoutePlanner.d.ts +5 -0
  463. package/dist/esm/components/RoutePlanner/RoutePlanner.js +25 -0
  464. package/dist/esm/components/RoutePlanner/RoutePlannerHeader.d.ts +4 -0
  465. package/dist/esm/components/RoutePlanner/RoutePlannerHeader.js +11 -0
  466. package/dist/esm/components/RoutePlanner/RoutePlannerStartPoint.d.ts +9 -0
  467. package/dist/esm/components/RoutePlanner/RoutePlannerStartPoint.js +21 -0
  468. package/dist/esm/components/RoutePlanner/RoutePlannerStopItem.d.ts +9 -0
  469. package/dist/esm/components/RoutePlanner/RoutePlannerStopItem.js +41 -0
  470. package/dist/esm/components/RouteQR.d.ts +12 -0
  471. package/dist/esm/components/RouteQR.js +10 -0
  472. package/dist/esm/components/Schedule.d.ts +13 -0
  473. package/dist/esm/components/Schedule.js +109 -0
  474. package/dist/esm/components/ScrollableRowContainer.d.ts +6 -0
  475. package/dist/esm/components/ScrollableRowContainer.js +11 -0
  476. package/dist/esm/components/Search.d.ts +5 -0
  477. package/dist/esm/components/Search.js +45 -0
  478. package/dist/esm/components/SearchBox.d.ts +7 -0
  479. package/dist/esm/components/SearchBox.js +171 -0
  480. package/dist/esm/components/SearchButtons/SearchButton.d.ts +20 -0
  481. package/dist/esm/components/SearchButtons/SearchButton.js +30 -0
  482. package/dist/esm/components/SearchButtons/SearchButtons.d.ts +4 -0
  483. package/dist/esm/components/SearchButtons/SearchButtons.js +25 -0
  484. package/dist/esm/components/SearchButtons/SearchSubButton.d.ts +14 -0
  485. package/dist/esm/components/SearchButtons/SearchSubButton.js +12 -0
  486. package/dist/esm/components/SearchButtons/SearchSubButtons.d.ts +5 -0
  487. package/dist/esm/components/SearchButtons/SearchSubButtons.js +43 -0
  488. package/dist/esm/components/SearchButtons/index.d.ts +7 -0
  489. package/dist/esm/components/SearchButtons/index.js +5 -0
  490. package/dist/esm/components/Sessions.d.ts +8 -0
  491. package/dist/esm/components/Sessions.js +128 -0
  492. package/dist/esm/components/SessionsFiltersModal.d.ts +11 -0
  493. package/dist/esm/components/SessionsFiltersModal.js +105 -0
  494. package/dist/esm/components/SessionsList.d.ts +12 -0
  495. package/dist/esm/components/SessionsList.js +212 -0
  496. package/dist/esm/components/ShareContainer.d.ts +7 -0
  497. package/dist/esm/components/ShareContainer.js +29 -0
  498. package/dist/esm/components/Shortcuts/ShortcutButton.d.ts +9 -0
  499. package/dist/esm/components/Shortcuts/ShortcutButton.js +25 -0
  500. package/dist/esm/components/Shortcuts/ShortcutsFiltersButton.d.ts +9 -0
  501. package/dist/esm/components/Shortcuts/ShortcutsFiltersButton.js +41 -0
  502. package/dist/esm/components/Shortcuts/ShortcutsToolbar.d.ts +10 -0
  503. package/dist/esm/components/Shortcuts/ShortcutsToolbar.js +22 -0
  504. package/dist/esm/components/Shortcuts/index.d.ts +4 -0
  505. package/dist/esm/components/Shortcuts/index.js +4 -0
  506. package/dist/esm/components/ShowMoreButtonContainer.d.ts +5 -0
  507. package/dist/esm/components/ShowMoreButtonContainer.js +8 -0
  508. package/dist/esm/components/SidebarActionsContainer.d.ts +5 -0
  509. package/dist/esm/components/SidebarActionsContainer.js +8 -0
  510. package/dist/esm/components/SimpleRowContainer.d.ts +8 -0
  511. package/dist/esm/components/SimpleRowContainer.js +8 -0
  512. package/dist/esm/components/Speaker.d.ts +5 -0
  513. package/dist/esm/components/Speaker.js +72 -0
  514. package/dist/esm/components/Speakers.d.ts +8 -0
  515. package/dist/esm/components/Speakers.js +63 -0
  516. package/dist/esm/components/SpeakersFiltersModal.d.ts +11 -0
  517. package/dist/esm/components/SpeakersFiltersModal.js +77 -0
  518. package/dist/esm/components/TourPoints.d.ts +4 -0
  519. package/dist/esm/components/TourPoints.js +20 -0
  520. package/dist/esm/components/Tours.d.ts +7 -0
  521. package/dist/esm/components/Tours.js +54 -0
  522. package/dist/esm/components/ToursList.d.ts +10 -0
  523. package/dist/esm/components/ToursList.js +22 -0
  524. package/dist/esm/components/ViewerMenuPanel.d.ts +5 -0
  525. package/dist/esm/components/ViewerMenuPanel.js +61 -0
  526. package/dist/esm/components/Visited.d.ts +4 -0
  527. package/dist/esm/components/Visited.js +13 -0
  528. package/dist/esm/components/WayInformation.d.ts +14 -0
  529. package/dist/esm/components/WayInformation.js +8 -0
  530. package/dist/esm/components/Wayfinding.d.ts +4 -0
  531. package/dist/esm/components/Wayfinding.js +285 -0
  532. package/dist/esm/components/WayfindingFloorSelectorContainer.d.ts +5 -0
  533. package/dist/esm/components/WayfindingFloorSelectorContainer.js +12 -0
  534. package/dist/esm/components/WayfindingTemplate.d.ts +66 -0
  535. package/dist/esm/components/WayfindingTemplate.js +14 -0
  536. package/dist/esm/components/Ws.d.ts +5 -0
  537. package/dist/esm/components/Ws.js +131 -0
  538. package/dist/esm/components/YahRow.d.ts +8 -0
  539. package/dist/esm/components/YahRow.js +25 -0
  540. package/dist/esm/components/gps/GpsManager.d.ts +13 -0
  541. package/dist/esm/components/gps/GpsManager.js +60 -0
  542. package/dist/esm/components/gps/GpsPermissionRequest.d.ts +8 -0
  543. package/dist/esm/components/gps/GpsPermissionRequest.js +10 -0
  544. package/dist/esm/components/gps/index.d.ts +5 -0
  545. package/dist/esm/components/gps/index.js +3 -0
  546. package/dist/esm/components/gps/types.d.ts +7 -0
  547. package/dist/esm/components/gps/types.js +1 -0
  548. package/dist/esm/components/gps/useUserLocationAndHeading.d.ts +8 -0
  549. package/dist/esm/components/gps/useUserLocationAndHeading.js +122 -0
  550. package/dist/esm/components/gps/utils.d.ts +5 -0
  551. package/dist/esm/components/gps/utils.js +11 -0
  552. package/dist/esm/components/heatmap-legend-ticks.d.ts +11 -0
  553. package/dist/esm/components/heatmap-legend-ticks.js +18 -0
  554. package/dist/esm/components/index.d.ts +114 -0
  555. package/dist/esm/components/index.js +76 -0
  556. package/dist/esm/components/utils/entity-venue-grouping.d.ts +32 -0
  557. package/dist/esm/components/utils/entity-venue-grouping.js +43 -0
  558. package/dist/esm/components/utils/getDescription.d.ts +19 -0
  559. package/dist/esm/components/utils/getDescription.js +35 -0
  560. package/dist/esm/constants.d.ts +44 -0
  561. package/dist/esm/constants.js +66 -0
  562. package/dist/esm/data/fp-payloads.d.ts +27 -0
  563. package/dist/esm/data/fp-payloads.js +53 -0
  564. package/dist/esm/data/fpGeo.d.ts +45 -0
  565. package/dist/esm/data/fpGeo.js +9 -0
  566. package/dist/esm/data/index.d.ts +15 -0
  567. package/dist/esm/data/index.js +15 -0
  568. package/dist/esm/data/layer-viewbox.d.ts +10 -0
  569. package/dist/esm/data/layer-viewbox.js +20 -0
  570. package/dist/esm/data/svg.d.ts +43 -0
  571. package/dist/esm/data/svg.js +210 -0
  572. package/dist/esm/data/tours.json +280 -0
  573. package/dist/esm/data/venue-scene-preload.d.ts +34 -0
  574. package/dist/esm/data/venue-scene-preload.js +205 -0
  575. package/dist/esm/data/venues.d.ts +145 -0
  576. package/dist/esm/data/venues.js +955 -0
  577. package/dist/esm/engine/defs.d.ts +38 -0
  578. package/dist/esm/engine/defs.js +85 -0
  579. package/dist/esm/engine/fonts.d.ts +9 -0
  580. package/dist/esm/engine/fonts.js +12 -0
  581. package/dist/esm/engine/update-def.d.ts +55 -0
  582. package/dist/esm/engine/update-def.js +127 -0
  583. package/dist/esm/engine/utils/rotation.d.ts +13 -0
  584. package/dist/esm/engine/utils/rotation.js +73 -0
  585. package/dist/esm/floorplan.loader.d.ts +164 -0
  586. package/dist/esm/floorplan.loader.js +540 -0
  587. package/dist/esm/floorplan.ready.d.ts +149 -0
  588. package/dist/esm/floorplan.ready.js +1083 -0
  589. package/dist/esm/hooks/useURLFilters.d.ts +15 -0
  590. package/dist/esm/hooks/useURLFilters.js +44 -0
  591. package/dist/esm/index.d.ts +3 -0
  592. package/dist/esm/index.js +12 -0
  593. package/dist/esm/intercom/bootIntercom.d.ts +3 -0
  594. package/dist/esm/intercom/bootIntercom.js +47 -0
  595. package/dist/esm/intercom/index.d.ts +3 -0
  596. package/dist/esm/intercom/index.js +1 -0
  597. package/dist/esm/intercom/shouldLoad.d.ts +4 -0
  598. package/dist/esm/intercom/shouldLoad.js +74 -0
  599. package/dist/esm/intercom/types.d.ts +6 -0
  600. package/dist/esm/intercom/types.js +1 -0
  601. package/dist/esm/internal-settings.d.ts +13 -0
  602. package/dist/esm/internal-settings.js +6 -0
  603. package/dist/esm/journey/external-navigation.d.ts +30 -0
  604. package/dist/esm/journey/external-navigation.js +38 -0
  605. package/dist/esm/journey/format-distance.d.ts +14 -0
  606. package/dist/esm/journey/format-distance.js +38 -0
  607. package/dist/esm/journey/index.d.ts +16 -0
  608. package/dist/esm/journey/index.js +15 -0
  609. package/dist/esm/journey/journey-context.d.ts +140 -0
  610. package/dist/esm/journey/journey-context.js +137 -0
  611. package/dist/esm/journey/journey-link.d.ts +49 -0
  612. package/dist/esm/journey/journey-link.js +35 -0
  613. package/dist/esm/journey/journey-stage.d.ts +35 -0
  614. package/dist/esm/journey/journey-stage.js +28 -0
  615. package/dist/esm/journey/maps-provider.d.ts +36 -0
  616. package/dist/esm/journey/maps-provider.js +58 -0
  617. package/dist/esm/journey/plan-journey.d.ts +37 -0
  618. package/dist/esm/journey/plan-journey.js +176 -0
  619. package/dist/esm/journey/types.d.ts +294 -0
  620. package/dist/esm/journey/types.js +1 -0
  621. package/dist/esm/load-dev.d.ts +44 -0
  622. package/dist/esm/load-dev.js +60 -0
  623. package/dist/esm/load.d.ts +17 -0
  624. package/dist/esm/load.js +244 -0
  625. package/dist/esm/locales.d.ts +25 -0
  626. package/dist/esm/locales.js +23 -0
  627. package/dist/esm/offline/constants.d.ts +5 -0
  628. package/dist/esm/offline/constants.js +4 -0
  629. package/dist/esm/offline/offlineManager.d.ts +2 -0
  630. package/dist/esm/offline/offlineManager.js +78 -0
  631. package/dist/esm/plan-lifecycle.d.ts +65 -0
  632. package/dist/esm/plan-lifecycle.js +97 -0
  633. package/dist/esm/schemas/sdk.schemas.d.ts +25 -0
  634. package/dist/esm/schemas/sdk.schemas.js +24 -0
  635. package/dist/esm/services/URLFilterManager.d.ts +39 -0
  636. package/dist/esm/services/URLFilterManager.js +379 -0
  637. package/dist/esm/services/multi-slug.d.ts +20 -0
  638. package/dist/esm/services/multi-slug.js +30 -0
  639. package/dist/esm/services/url-dispatch.d.ts +22 -0
  640. package/dist/esm/services/url-dispatch.js +707 -0
  641. package/dist/esm/services/url-sync.d.ts +40 -0
  642. package/dist/esm/services/url-sync.js +185 -0
  643. package/dist/esm/store/BaseFilterStore.d.ts +17 -0
  644. package/dist/esm/store/BaseFilterStore.js +63 -0
  645. package/dist/esm/store/BookmarksStore.d.ts +9 -0
  646. package/dist/esm/store/BookmarksStore.js +28 -0
  647. package/dist/esm/store/BoothStore.d.ts +105 -0
  648. package/dist/esm/store/BoothStore.js +194 -0
  649. package/dist/esm/store/CategoryFilterStore.d.ts +13 -0
  650. package/dist/esm/store/CategoryFilterStore.js +60 -0
  651. package/dist/esm/store/CategoryStore.d.ts +21 -0
  652. package/dist/esm/store/CategoryStore.js +30 -0
  653. package/dist/esm/store/EventStore.d.ts +56 -0
  654. package/dist/esm/store/EventStore.js +188 -0
  655. package/dist/esm/store/ExhibitorStore.d.ts +86 -0
  656. package/dist/esm/store/ExhibitorStore.js +175 -0
  657. package/dist/esm/store/FuzzySearchEngineStore.d.ts +15 -0
  658. package/dist/esm/store/FuzzySearchEngineStore.js +45 -0
  659. package/dist/esm/store/HeatmapStore.d.ts +51 -0
  660. package/dist/esm/store/HeatmapStore.js +100 -0
  661. package/dist/esm/store/IntercomStore.d.ts +7 -0
  662. package/dist/esm/store/IntercomStore.js +26 -0
  663. package/dist/esm/store/LayerStore.d.ts +70 -0
  664. package/dist/esm/store/LayerStore.js +399 -0
  665. package/dist/esm/store/MaplibreStore.d.ts +71 -0
  666. package/dist/esm/store/MaplibreStore.js +137 -0
  667. package/dist/esm/store/OverlayStore.d.ts +32 -0
  668. package/dist/esm/store/OverlayStore.js +68 -0
  669. package/dist/esm/store/PoiMarkerStore.d.ts +76 -0
  670. package/dist/esm/store/PoiMarkerStore.js +97 -0
  671. package/dist/esm/store/PoiTypeStore.d.ts +8 -0
  672. package/dist/esm/store/PoiTypeStore.js +6 -0
  673. package/dist/esm/store/RootStore.d.ts +118 -0
  674. package/dist/esm/store/RootStore.js +666 -0
  675. package/dist/esm/store/RoutePlannerStore.d.ts +56 -0
  676. package/dist/esm/store/RoutePlannerStore.js +322 -0
  677. package/dist/esm/store/RouteStore.d.ts +138 -0
  678. package/dist/esm/store/RouteStore.js +692 -0
  679. package/dist/esm/store/SearchButtonsStore.d.ts +2 -0
  680. package/dist/esm/store/SearchButtonsStore.js +2 -0
  681. package/dist/esm/store/SearchStore.d.ts +81 -0
  682. package/dist/esm/store/SearchStore.js +612 -0
  683. package/dist/esm/store/SessionsFilterStore.d.ts +53 -0
  684. package/dist/esm/store/SessionsFilterStore.js +169 -0
  685. package/dist/esm/store/ShortcutProvider.d.ts +26 -0
  686. package/dist/esm/store/ShortcutProvider.js +5 -0
  687. package/dist/esm/store/ShortcutRegistry.d.ts +33 -0
  688. package/dist/esm/store/ShortcutRegistry.js +130 -0
  689. package/dist/esm/store/SpeakerFilterStore.d.ts +39 -0
  690. package/dist/esm/store/SpeakerFilterStore.js +152 -0
  691. package/dist/esm/store/SpeakerStore.d.ts +45 -0
  692. package/dist/esm/store/SpeakerStore.js +142 -0
  693. package/dist/esm/store/SubButtonProvider.d.ts +16 -0
  694. package/dist/esm/store/SubButtonProvider.js +6 -0
  695. package/dist/esm/store/SubButtonRegistry.d.ts +16 -0
  696. package/dist/esm/store/SubButtonRegistry.js +58 -0
  697. package/dist/esm/store/ToursStore.d.ts +30 -0
  698. package/dist/esm/store/ToursStore.js +184 -0
  699. package/dist/esm/store/UIState.d.ts +329 -0
  700. package/dist/esm/store/UIState.js +2138 -0
  701. package/dist/esm/store/VenueStore.d.ts +254 -0
  702. package/dist/esm/store/VenueStore.js +650 -0
  703. package/dist/esm/store/create-live-plan.d.ts +13 -0
  704. package/dist/esm/store/create-live-plan.js +25 -0
  705. package/dist/esm/store/details-events.d.ts +11 -0
  706. package/dist/esm/store/details-events.js +76 -0
  707. package/dist/esm/store/floor-activated-notifier.d.ts +18 -0
  708. package/dist/esm/store/floor-activated-notifier.js +22 -0
  709. package/dist/esm/store/index.d.ts +3 -0
  710. package/dist/esm/store/index.js +14 -0
  711. package/dist/esm/store/init/index.d.ts +3 -0
  712. package/dist/esm/store/init/index.js +20 -0
  713. package/dist/esm/store/init/init-booths.d.ts +6 -0
  714. package/dist/esm/store/init/init-booths.js +306 -0
  715. package/dist/esm/store/init/init-categories.d.ts +3 -0
  716. package/dist/esm/store/init/init-categories.js +28 -0
  717. package/dist/esm/store/init/init-events.d.ts +3 -0
  718. package/dist/esm/store/init/init-events.js +45 -0
  719. package/dist/esm/store/init/init-exhibitors.d.ts +3 -0
  720. package/dist/esm/store/init/init-exhibitors.js +71 -0
  721. package/dist/esm/store/init/init-heatmap.d.ts +3 -0
  722. package/dist/esm/store/init/init-heatmap.js +37 -0
  723. package/dist/esm/store/init/init-layers.d.ts +8 -0
  724. package/dist/esm/store/init/init-layers.js +151 -0
  725. package/dist/esm/store/init/init-poiTypes.d.ts +3 -0
  726. package/dist/esm/store/init/init-poiTypes.js +6 -0
  727. package/dist/esm/store/init/init-speakers.d.ts +3 -0
  728. package/dist/esm/store/init/init-speakers.js +20 -0
  729. package/dist/esm/store/init/init-ui.d.ts +13 -0
  730. package/dist/esm/store/init/init-ui.js +155 -0
  731. package/dist/esm/store/journey-plan.d.ts +89 -0
  732. package/dist/esm/store/journey-plan.js +291 -0
  733. package/dist/esm/store/live-store.d.ts +19 -0
  734. package/dist/esm/store/live-store.js +26 -0
  735. package/dist/esm/store/outdoor-poi-filter.d.ts +21 -0
  736. package/dist/esm/store/outdoor-poi-filter.js +33 -0
  737. package/dist/esm/store/providers/SearchShortcutProvider.d.ts +13 -0
  738. package/dist/esm/store/providers/SearchShortcutProvider.js +59 -0
  739. package/dist/esm/store/providers/SessionsShortcutProvider.d.ts +17 -0
  740. package/dist/esm/store/providers/SessionsShortcutProvider.js +221 -0
  741. package/dist/esm/store/providers/SessionsSubButtonProvider.d.ts +33 -0
  742. package/dist/esm/store/providers/SessionsSubButtonProvider.js +100 -0
  743. package/dist/esm/store/providers/SpeakerShortcutProvider.d.ts +12 -0
  744. package/dist/esm/store/providers/SpeakerShortcutProvider.js +73 -0
  745. package/dist/esm/store/reveal-layer.d.ts +29 -0
  746. package/dist/esm/store/reveal-layer.js +25 -0
  747. package/dist/esm/store/search-buttons/SearchButtonsActions.d.ts +55 -0
  748. package/dist/esm/store/search-buttons/SearchButtonsActions.js +363 -0
  749. package/dist/esm/store/search-buttons/SearchButtonsFactory.d.ts +37 -0
  750. package/dist/esm/store/search-buttons/SearchButtonsFactory.js +291 -0
  751. package/dist/esm/store/search-buttons/SearchButtonsFilters.d.ts +20 -0
  752. package/dist/esm/store/search-buttons/SearchButtonsFilters.js +157 -0
  753. package/dist/esm/store/search-buttons/SearchButtonsState.d.ts +24 -0
  754. package/dist/esm/store/search-buttons/SearchButtonsState.js +125 -0
  755. package/dist/esm/store/search-buttons/SearchButtonsStore.d.ts +73 -0
  756. package/dist/esm/store/search-buttons/SearchButtonsStore.js +364 -0
  757. package/dist/esm/store/search-buttons/constants.d.ts +24 -0
  758. package/dist/esm/store/search-buttons/constants.js +24 -0
  759. package/dist/esm/store/search-buttons/index.d.ts +8 -0
  760. package/dist/esm/store/search-buttons/index.js +7 -0
  761. package/dist/esm/store/search-buttons/utils.d.ts +6 -0
  762. package/dist/esm/store/search-buttons/utils.js +34 -0
  763. package/dist/esm/store/types.d.ts +213 -0
  764. package/dist/esm/store/types.js +1 -0
  765. package/dist/esm/store/venue-public.d.ts +10 -0
  766. package/dist/esm/store/venue-public.js +14 -0
  767. package/dist/esm/store/venue-selection.d.ts +45 -0
  768. package/dist/esm/store/venue-selection.js +101 -0
  769. package/dist/esm/test/store-harness.d.ts +32 -0
  770. package/dist/esm/test/store-harness.js +116 -0
  771. package/dist/esm/tools/base-runtime-url.d.ts +3 -0
  772. package/dist/esm/tools/base-runtime-url.js +23 -0
  773. package/dist/esm/tools/debounce.d.ts +2 -0
  774. package/dist/esm/tools/debounce.js +10 -0
  775. package/dist/esm/tools/debugCanvases.d.ts +3 -0
  776. package/dist/esm/tools/debugCanvases.js +3 -0
  777. package/dist/esm/tools/event-not-found.d.ts +18 -0
  778. package/dist/esm/tools/event-not-found.js +50 -0
  779. package/dist/esm/tools/event-scoped-cache.d.ts +13 -0
  780. package/dist/esm/tools/event-scoped-cache.js +47 -0
  781. package/dist/esm/tools/expofpUrl.d.ts +7 -0
  782. package/dist/esm/tools/expofpUrl.js +10 -0
  783. package/dist/esm/tools/freeBanner.d.ts +5 -0
  784. package/dist/esm/tools/freeBanner.js +11 -0
  785. package/dist/esm/tools/gtag.d.ts +66 -0
  786. package/dist/esm/tools/gtag.js +287 -0
  787. package/dist/esm/tools/handleDebugMode.d.ts +19 -0
  788. package/dist/esm/tools/handleDebugMode.js +61 -0
  789. package/dist/esm/tools/has-html-tags.d.ts +2 -0
  790. package/dist/esm/tools/has-html-tags.js +3 -0
  791. package/dist/esm/tools/id.d.ts +2 -0
  792. package/dist/esm/tools/id.js +5 -0
  793. package/dist/esm/tools/loaders.d.ts +5 -0
  794. package/dist/esm/tools/loaders.js +67 -0
  795. package/dist/esm/tools/logger.d.ts +38 -0
  796. package/dist/esm/tools/logger.js +87 -0
  797. package/dist/esm/tools/rebooking-config.d.ts +10 -0
  798. package/dist/esm/tools/rebooking-config.js +19 -0
  799. package/dist/esm/tools/rebookingUrl.d.ts +11 -0
  800. package/dist/esm/tools/rebookingUrl.js +27 -0
  801. package/dist/esm/tools/report-error.d.ts +2 -0
  802. package/dist/esm/tools/report-error.js +134 -0
  803. package/dist/esm/tools/reset.d.ts +2 -0
  804. package/dist/esm/tools/reset.js +35 -0
  805. package/dist/esm/tools/sentry.d.ts +7 -0
  806. package/dist/esm/tools/sentry.js +166 -0
  807. package/dist/esm/tools/settings.d.ts +36 -0
  808. package/dist/esm/tools/settings.js +110 -0
  809. package/dist/esm/tools/slug.d.ts +2 -0
  810. package/dist/esm/tools/slug.js +27 -0
  811. package/dist/esm/tools/strip-html.d.ts +2 -0
  812. package/dist/esm/tools/strip-html.js +7 -0
  813. package/dist/esm/tools/style-registry.d.ts +28 -0
  814. package/dist/esm/tools/style-registry.js +46 -0
  815. package/dist/esm/tools/telemetry.d.ts +37 -0
  816. package/dist/esm/tools/telemetry.js +266 -0
  817. package/dist/esm/tools/track-event.d.ts +28 -0
  818. package/dist/esm/tools/track-event.js +196 -0
  819. package/dist/esm/tools/webgl-logger.d.ts +2 -0
  820. package/dist/esm/tools/webgl-logger.js +31 -0
  821. package/dist/esm/types/drawing.types.d.ts +18 -0
  822. package/dist/esm/types/drawing.types.js +1 -0
  823. package/dist/esm/types/sdk.types.d.ts +49 -0
  824. package/dist/esm/types/sdk.types.js +6 -0
  825. package/dist/esm/types.d.ts +593 -0
  826. package/dist/esm/types.js +1 -0
  827. package/dist/esm/utils/_OLD_gpu-info.d.ts +6 -0
  828. package/dist/esm/utils/_OLD_gpu-info.js +23 -0
  829. package/dist/esm/utils/_OLD_should-use-backdrop.d.ts +3 -0
  830. package/dist/esm/utils/_OLD_should-use-backdrop.js +4 -0
  831. package/dist/esm/utils/areLayersEnabled.d.ts +2 -0
  832. package/dist/esm/utils/areLayersEnabled.js +4 -0
  833. package/dist/esm/utils/blob-image-size.d.ts +27 -0
  834. package/dist/esm/utils/blob-image-size.js +37 -0
  835. package/dist/esm/utils/brand.d.ts +18 -0
  836. package/dist/esm/utils/brand.js +19 -0
  837. package/dist/esm/utils/browser.d.ts +4 -0
  838. package/dist/esm/utils/browser.js +4 -0
  839. package/dist/esm/utils/calcSpeed.d.ts +2 -0
  840. package/dist/esm/utils/calcSpeed.js +5 -0
  841. package/dist/esm/utils/calcTravelTime.d.ts +2 -0
  842. package/dist/esm/utils/calcTravelTime.js +3 -0
  843. package/dist/esm/utils/camera-map-settings.d.ts +26 -0
  844. package/dist/esm/utils/camera-map-settings.js +86 -0
  845. package/dist/esm/utils/color-gradient.d.ts +2 -0
  846. package/dist/esm/utils/color-gradient.js +14 -0
  847. package/dist/esm/utils/customCommands.d.ts +2 -0
  848. package/dist/esm/utils/customCommands.js +33 -0
  849. package/dist/esm/utils/detectLimitedModeViaImage.d.ts +2 -0
  850. package/dist/esm/utils/detectLimitedModeViaImage.js +33 -0
  851. package/dist/esm/utils/dimming.d.ts +27 -0
  852. package/dist/esm/utils/dimming.js +88 -0
  853. package/dist/esm/utils/entity-storage.d.ts +14 -0
  854. package/dist/esm/utils/entity-storage.js +122 -0
  855. package/dist/esm/utils/event-head.d.ts +38 -0
  856. package/dist/esm/utils/event-head.js +90 -0
  857. package/dist/esm/utils/event-now.d.ts +11 -0
  858. package/dist/esm/utils/event-now.js +40 -0
  859. package/dist/esm/utils/event-title.d.ts +19 -0
  860. package/dist/esm/utils/event-title.js +20 -0
  861. package/dist/esm/utils/eventFullBadge.d.ts +3 -0
  862. package/dist/esm/utils/eventFullBadge.js +7 -0
  863. package/dist/esm/utils/eventTime.d.ts +15 -0
  864. package/dist/esm/utils/eventTime.js +82 -0
  865. package/dist/esm/utils/extractMetaFromString.d.ts +5 -0
  866. package/dist/esm/utils/extractMetaFromString.js +16 -0
  867. package/dist/esm/utils/geo-anchors.d.ts +10 -0
  868. package/dist/esm/utils/geo-anchors.js +12 -0
  869. package/dist/esm/utils/geometry.d.ts +2 -0
  870. package/dist/esm/utils/geometry.js +12 -0
  871. package/dist/esm/utils/getContrastTextColor.d.ts +2 -0
  872. package/dist/esm/utils/getContrastTextColor.js +26 -0
  873. package/dist/esm/utils/getLogoUrl.d.ts +9 -0
  874. package/dist/esm/utils/getLogoUrl.js +26 -0
  875. package/dist/esm/utils/getMostFrequent.d.ts +2 -0
  876. package/dist/esm/utils/getMostFrequent.js +14 -0
  877. package/dist/esm/utils/getRenderTargetFromRoot.d.ts +2 -0
  878. package/dist/esm/utils/getRenderTargetFromRoot.js +19 -0
  879. package/dist/esm/utils/gps.d.ts +40 -0
  880. package/dist/esm/utils/gps.js +66 -0
  881. package/dist/esm/utils/heatmap-enabled.d.ts +13 -0
  882. package/dist/esm/utils/heatmap-enabled.js +13 -0
  883. package/dist/esm/utils/i18n.d.ts +18 -0
  884. package/dist/esm/utils/i18n.js +117 -0
  885. package/dist/esm/utils/index.d.ts +10 -0
  886. package/dist/esm/utils/index.js +60 -0
  887. package/dist/esm/utils/is-debug.d.ts +3 -0
  888. package/dist/esm/utils/is-debug.js +9 -0
  889. package/dist/esm/utils/is-from-designer.d.ts +3 -0
  890. package/dist/esm/utils/is-from-designer.js +4 -0
  891. package/dist/esm/utils/is-iframe.d.ts +3 -0
  892. package/dist/esm/utils/is-iframe.js +13 -0
  893. package/dist/esm/utils/is-localhost.d.ts +3 -0
  894. package/dist/esm/utils/is-localhost.js +11 -0
  895. package/dist/esm/utils/is-mac.d.ts +3 -0
  896. package/dist/esm/utils/is-mac.js +2 -0
  897. package/dist/esm/utils/is-mobile.d.ts +3 -0
  898. package/dist/esm/utils/is-mobile.js +2 -0
  899. package/dist/esm/utils/is-own-domain.d.ts +12 -0
  900. package/dist/esm/utils/is-own-domain.js +23 -0
  901. package/dist/esm/utils/is-pathway-layer.d.ts +2 -0
  902. package/dist/esm/utils/is-pathway-layer.js +4 -0
  903. package/dist/esm/utils/is-phone.d.ts +9 -0
  904. package/dist/esm/utils/is-phone.js +17 -0
  905. package/dist/esm/utils/is-scroll-ugly.d.ts +3 -0
  906. package/dist/esm/utils/is-scroll-ugly.js +13 -0
  907. package/dist/esm/utils/is-webview.d.ts +3 -0
  908. package/dist/esm/utils/is-webview.js +2 -0
  909. package/dist/esm/utils/isNumericLevel.d.ts +2 -0
  910. package/dist/esm/utils/isNumericLevel.js +3 -0
  911. package/dist/esm/utils/lazy-qr-code.d.ts +5 -0
  912. package/dist/esm/utils/lazy-qr-code.js +6 -0
  913. package/dist/esm/utils/legacy-storage-keys.d.ts +16 -0
  914. package/dist/esm/utils/legacy-storage-keys.js +38 -0
  915. package/dist/esm/utils/loadBlob.d.ts +16 -0
  916. package/dist/esm/utils/loadBlob.js +40 -0
  917. package/dist/esm/utils/loadCustomCss.d.ts +3 -0
  918. package/dist/esm/utils/loadCustomCss.js +19 -0
  919. package/dist/esm/utils/loadIcons.d.ts +3 -0
  920. package/dist/esm/utils/loadIcons.js +24 -0
  921. package/dist/esm/utils/loadImage.d.ts +2 -0
  922. package/dist/esm/utils/loadImage.js +11 -0
  923. package/dist/esm/utils/loadImagesInBatches.d.ts +22 -0
  924. package/dist/esm/utils/loadImagesInBatches.js +82 -0
  925. package/dist/esm/utils/loadLayerImages.d.ts +41 -0
  926. package/dist/esm/utils/loadLayerImages.js +107 -0
  927. package/dist/esm/utils/localStorage.d.ts +2 -0
  928. package/dist/esm/utils/localStorage.js +11 -0
  929. package/dist/esm/utils/lz-utils.d.ts +8 -0
  930. package/dist/esm/utils/lz-utils.js +16 -0
  931. package/dist/esm/utils/mapEntity.d.ts +3 -0
  932. package/dist/esm/utils/mapEntity.js +82 -0
  933. package/dist/esm/utils/math.d.ts +6 -0
  934. package/dist/esm/utils/math.js +7 -0
  935. package/dist/esm/utils/mobx.d.ts +35 -0
  936. package/dist/esm/utils/mobx.js +74 -0
  937. package/dist/esm/utils/outdoor-poi.d.ts +32 -0
  938. package/dist/esm/utils/outdoor-poi.js +28 -0
  939. package/dist/esm/utils/plan-reactions.d.ts +20 -0
  940. package/dist/esm/utils/plan-reactions.js +26 -0
  941. package/dist/esm/utils/planBearing.d.ts +14 -0
  942. package/dist/esm/utils/planBearing.js +15 -0
  943. package/dist/esm/utils/preview-exhibitor.d.ts +11 -0
  944. package/dist/esm/utils/preview-exhibitor.js +19 -0
  945. package/dist/esm/utils/rasterize-svg.d.ts +32 -0
  946. package/dist/esm/utils/rasterize-svg.js +78 -0
  947. package/dist/esm/utils/responsiveClass.d.ts +2 -0
  948. package/dist/esm/utils/responsiveClass.js +25 -0
  949. package/dist/esm/utils/rtl.d.ts +2 -0
  950. package/dist/esm/utils/rtl.js +4 -0
  951. package/dist/esm/utils/sanitizeHtml.d.ts +3 -0
  952. package/dist/esm/utils/sanitizeHtml.js +21 -0
  953. package/dist/esm/utils/sanitizeText.d.ts +9 -0
  954. package/dist/esm/utils/sanitizeText.js +19 -0
  955. package/dist/esm/utils/scene-bounds.d.ts +64 -0
  956. package/dist/esm/utils/scene-bounds.js +127 -0
  957. package/dist/esm/utils/shortenName.d.ts +2 -0
  958. package/dist/esm/utils/shortenName.js +19 -0
  959. package/dist/esm/utils/silence-mobx-react-lite-warning.d.ts +2 -0
  960. package/dist/esm/utils/silence-mobx-react-lite-warning.js +24 -0
  961. package/dist/esm/utils/strEqual.d.ts +2 -0
  962. package/dist/esm/utils/strEqual.js +3 -0
  963. package/dist/esm/utils/swappable-proxy.d.ts +28 -0
  964. package/dist/esm/utils/swappable-proxy.js +71 -0
  965. package/dist/esm/utils/trackingParams.d.ts +3 -0
  966. package/dist/esm/utils/trackingParams.js +24 -0
  967. package/dist/esm/utils/urlEncoding.d.ts +7 -0
  968. package/dist/esm/utils/urlEncoding.js +62 -0
  969. package/dist/esm/utils/use-shadow.d.ts +3 -0
  970. package/dist/esm/utils/use-shadow.js +10 -0
  971. package/dist/esm/utils/useHeatmapData.d.ts +10 -0
  972. package/dist/esm/utils/useHeatmapData.js +8 -0
  973. package/dist/esm/utils/useHeatmapOverlay.d.ts +9 -0
  974. package/dist/esm/utils/useHeatmapOverlay.js +56 -0
  975. package/dist/esm/utils/useRenderTarget.d.ts +2 -0
  976. package/dist/esm/utils/useRenderTarget.js +35 -0
  977. package/dist/esm/utils/yah_icon.d.ts +6 -0
  978. package/dist/esm/utils/yah_icon.js +457 -0
  979. package/dist/esm/wayfinding/adapters/arbitraryPoint.d.ts +32 -0
  980. package/dist/esm/wayfinding/adapters/arbitraryPoint.js +25 -0
  981. package/dist/esm/wayfinding/adapters/boothToEndpoint.d.ts +19 -0
  982. package/dist/esm/wayfinding/adapters/boothToEndpoint.js +32 -0
  983. package/dist/esm/wayfinding/adapters/campusEndpoints.d.ts +13 -0
  984. package/dist/esm/wayfinding/adapters/campusEndpoints.js +25 -0
  985. package/dist/esm/wayfinding/adapters/canvasIconProvider.d.ts +20 -0
  986. package/dist/esm/wayfinding/adapters/canvasIconProvider.js +73 -0
  987. package/dist/esm/wayfinding/adapters/floorContext.d.ts +20 -0
  988. package/dist/esm/wayfinding/adapters/floorContext.js +43 -0
  989. package/dist/esm/wayfinding/adapters/graphDataSource.d.ts +49 -0
  990. package/dist/esm/wayfinding/adapters/graphDataSource.js +87 -0
  991. package/dist/esm/wayfinding/adapters/index.d.ts +10 -0
  992. package/dist/esm/wayfinding/adapters/index.js +8 -0
  993. package/dist/esm/wayfinding/adapters/kioskCanvas.d.ts +7 -0
  994. package/dist/esm/wayfinding/adapters/kioskCanvas.js +22 -0
  995. package/dist/esm/wayfinding/adapters/positionInput.d.ts +12 -0
  996. package/dist/esm/wayfinding/adapters/positionInput.js +16 -0
  997. package/dist/esm/wayfinding/bindMobxReactions.d.ts +28 -0
  998. package/dist/esm/wayfinding/bindMobxReactions.js +171 -0
  999. package/dist/esm/wayfinding/createWayfinding.d.ts +34 -0
  1000. package/dist/esm/wayfinding/createWayfinding.js +184 -0
  1001. package/dist/esm/wayfinding/handlers/kioskHandler.d.ts +26 -0
  1002. package/dist/esm/wayfinding/handlers/kioskHandler.js +52 -0
  1003. package/dist/esm/wayfinding/handlers/yahHandler.d.ts +21 -0
  1004. package/dist/esm/wayfinding/handlers/yahHandler.js +42 -0
  1005. package/dist/esm/wayfinding/index.d.ts +12 -0
  1006. package/dist/esm/wayfinding/index.js +9 -0
  1007. package/dist/esm/wayfinding/routeSteps.d.ts +15 -0
  1008. package/dist/esm/wayfinding/routeSteps.js +29 -0
  1009. package/dist/esm/wayfinding/storePorts.d.ts +67 -0
  1010. package/dist/esm/wayfinding/storePorts.js +1 -0
  1011. package/package.json +146 -0
@@ -0,0 +1,955 @@
1
+ import { Box, convexHull, polygonCentroid, rectCorners } from '@expofp/geometry';
2
+ const ID_PATTERN = /^[a-z0-9_-]+$/;
3
+ const RENDER_MODES = ['scene', 'marker'];
4
+ /** Contract defaults for the size axis (§4). Re-exported by `venue-legibility`. */
5
+ export const DEFAULT_MARKER_MAX_SIZE_PX = 60;
6
+ export const DEFAULT_DETAIL_MIN_SIZE_PX = 240;
7
+ /**
8
+ * Floor for an authored `detailMinSizePx`, and the reason it is not simply 60:
9
+ *
10
+ * 66 is the **marker/scene sticky enter edge** for the contract's defaults —
11
+ * `stickyEnterSizePx(60)`, where the `× 1.1` is the ±10% size hysteresis
12
+ * (`SIZE_HYSTERESIS_RATIO` in `venue-legibility.ts`) — the size at which a
13
+ * venue climbing out of the marker band actually enters the scene band.
14
+ * Clamping here keeps floor detail from beginning before the scene band has
15
+ * been entered.
16
+ *
17
+ * **A literal, never derived** (contract §4, App. C). The contract states the
18
+ * floor to authors as the number 66, and every implementation must hold that
19
+ * number exactly: an author who writes `detailMinSizePx: 66` clears the
20
+ * producer's export gate and must not then be clamped at runtime. Derived, the
21
+ * floor is a float expression the contract cannot promise equals 66 — it does
22
+ * for these two operands, and would stop the moment either the ceiling or the
23
+ * ratio moved, silently invalidating the documented value. So it is written as
24
+ * 66 here and in every other implementation, with the relationship above
25
+ * documented rather than computed.
26
+ *
27
+ * Nor can the relationship be expressed in code: `venue-legibility.ts` imports
28
+ * the band defaults from this module, so the dependency is one-way and
29
+ * `stickyEnterSizePx` is not importable here.
30
+ *
31
+ * It is deliberately NOT "the smallest value above 60" (that would be 61):
32
+ * 61 clears the impossible-range guard below — which needs only
33
+ * `resolvedDetailMinSizePx > resolvedMin`, and a defaulted scene aux resolves
34
+ * `minSizePx` to 60 — but leaves a ~1px-wide scene band wedged between the
35
+ * two sticky edges, which flickers rather than hands off. Do not "simplify"
36
+ * this to `DEFAULT_MARKER_MAX_SIZE_PX + 1`; it silently breaks the handoff.
37
+ *
38
+ * This is the floor for the **default** ceiling. A venue that authors its own
39
+ * `markerMaxSizePx` (Revision 5) gets its floor from {@link detailMinSizeFloor}.
40
+ */
41
+ export const MIN_DETAIL_MIN_SIZE_PX = 66;
42
+ /** `detailMinSizePx × 10 ≥ markerMaxSizePx × 11` (§4, Revision 5), as its two integer factors. */
43
+ const DETAIL_FLOOR_NUMERATOR = 11;
44
+ const DETAIL_FLOOR_DENOMINATOR = 10;
45
+ /**
46
+ * Whether a detail edge leaves room above a marker edge for the hysteresis
47
+ * band (§4, Revision 5). Stated as the contract's integer comparison rather
48
+ * than `× 1.1`, so every implementation agrees on the boundary exactly.
49
+ */
50
+ export function detailEdgeClearsMarkerEdge(detailMinSizePx, markerMaxSizePx) {
51
+ return detailMinSizePx * DETAIL_FLOOR_DENOMINATOR >= markerMaxSizePx * DETAIL_FLOOR_NUMERATOR;
52
+ }
53
+ /**
54
+ * The smallest `detailMinSizePx` a venue with this marker edge may carry: the
55
+ * least value satisfying {@link detailEdgeClearsMarkerEdge}. For the default
56
+ * ceiling it is the literal {@link MIN_DETAIL_MIN_SIZE_PX}, so the number §4
57
+ * has always stated to authors cannot drift.
58
+ */
59
+ export function detailMinSizeFloor(markerMaxSizePx) {
60
+ if (markerMaxSizePx === DEFAULT_MARKER_MAX_SIZE_PX)
61
+ return MIN_DETAIL_MIN_SIZE_PX;
62
+ return Math.ceil((markerMaxSizePx * DETAIL_FLOOR_NUMERATOR) / DETAIL_FLOOR_DENOMINATOR);
63
+ }
64
+ const VENUE_KEYS = new Set([
65
+ 'id',
66
+ 'name',
67
+ 'order',
68
+ 'levels',
69
+ 'contour',
70
+ 'markerPoint',
71
+ 'detailMinSizePx',
72
+ 'markerMaxSizePx',
73
+ 'layers',
74
+ 'entrances',
75
+ 'campusViewbox',
76
+ ]);
77
+ const LEVEL_KEYS = new Set(['layer', 'ordinal', 'name', 'initial']);
78
+ const ENTRANCE_KEYS = new Set(['layer', 'point', 'name']);
79
+ const AUX_KEYS = new Set([
80
+ 'layer',
81
+ 'render',
82
+ 'replacesDefault',
83
+ 'suppressesLabel',
84
+ 'minSizePx',
85
+ 'maxSizePx',
86
+ ]);
87
+ /**
88
+ * Codepoint order for venue `id`s — the contract's "alphabetically by `id`"
89
+ * (§9), pinned to one answer every implementation of this contract can
90
+ * reproduce. `localeCompare` cannot: it is ICU-collated, so `hall-1`, `hall_a`
91
+ * and `halla` sort differently across runtimes, and a layer-ownership winner
92
+ * that depends on the reader is exactly what §10 keys off `id` to avoid.
93
+ */
94
+ export const compareIds = (a, b) => (a < b ? -1 : a > b ? 1 : 0);
95
+ const isObject = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
96
+ const isFiniteNumber = (value) => typeof value === 'number' && Number.isFinite(value);
97
+ const isNonEmptyString = (value) => typeof value === 'string' && value.length > 0;
98
+ const isFinitePoint = (value) => isObject(value) && isFiniteNumber(value.x) && isFiniteNumber(value.y);
99
+ const isCampusViewbox = (value) => isObject(value) &&
100
+ isFiniteNumber(value.x) &&
101
+ isFiniteNumber(value.y) &&
102
+ isFiniteNumber(value.width) &&
103
+ isFiniteNumber(value.height) &&
104
+ value.width > 0 &&
105
+ value.height > 0;
106
+ function describe(value) {
107
+ try {
108
+ const serialized = JSON.stringify(value);
109
+ return serialized === undefined ? String(value) : serialized;
110
+ }
111
+ catch {
112
+ return String(value);
113
+ }
114
+ }
115
+ function emitDiagnostics(diagnostics) {
116
+ for (const diagnostic of diagnostics) {
117
+ try {
118
+ console.warn('parseVenues:', `${diagnostic.code} (${diagnostic.effect}) ${diagnostic.path || '(root)'}: ${diagnostic.message}; ${diagnostic.consequence}`);
119
+ }
120
+ catch {
121
+ // Diagnostics remain available in the result even if a host console is broken.
122
+ }
123
+ }
124
+ }
125
+ function complete(venues, diagnostics, quarantinedLayerNames, campusViewbox = null) {
126
+ emitDiagnostics(diagnostics);
127
+ return { venues, diagnostics, quarantinedLayerNames, campusViewbox };
128
+ }
129
+ function segmentsIntersect(p1, p2, p3, p4) {
130
+ const direction = (a, b, c) => (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);
131
+ const d1 = direction(p3, p4, p1);
132
+ const d2 = direction(p3, p4, p2);
133
+ const d3 = direction(p1, p2, p3);
134
+ const d4 = direction(p1, p2, p4);
135
+ if (((d1 > 0 && d2 < 0) || (d1 < 0 && d2 > 0)) && ((d3 > 0 && d4 < 0) || (d3 < 0 && d4 > 0))) {
136
+ return true;
137
+ }
138
+ const onSegment = (a, b, c) => Math.min(a.x, b.x) <= c.x &&
139
+ c.x <= Math.max(a.x, b.x) &&
140
+ Math.min(a.y, b.y) <= c.y &&
141
+ c.y <= Math.max(a.y, b.y);
142
+ return ((d1 === 0 && onSegment(p3, p4, p1)) ||
143
+ (d2 === 0 && onSegment(p3, p4, p2)) ||
144
+ (d3 === 0 && onSegment(p1, p2, p3)) ||
145
+ (d4 === 0 && onSegment(p1, p2, p4)));
146
+ }
147
+ function validateRing(value) {
148
+ if (!Array.isArray(value))
149
+ return { issue: 'is not an array' };
150
+ if (value.length < 3) {
151
+ return { issue: `has ${value.length} point(s); a ring needs at least 3` };
152
+ }
153
+ if (!value.every(isFinitePoint)) {
154
+ return { issue: 'contains a non-finite or malformed point' };
155
+ }
156
+ const ring = value.map((point) => ({ x: point.x, y: point.y }));
157
+ const first = ring[0];
158
+ const last = ring[ring.length - 1];
159
+ if (first.x === last.x && first.y === last.y)
160
+ ring.pop();
161
+ if (ring.length < 3)
162
+ return { issue: `has ${ring.length} point(s); a ring needs at least 3` };
163
+ const { width, height } = Box.fromPoints(ring).size;
164
+ if (width === 0 || height === 0) {
165
+ return { issue: 'is degenerate (zero width or height)' };
166
+ }
167
+ for (let i = 0; i < ring.length; i++) {
168
+ const a1 = ring[i];
169
+ const a2 = ring[(i + 1) % ring.length];
170
+ for (let j = i + 1; j < ring.length; j++) {
171
+ if (j === i || (j + 1) % ring.length === i || (i + 1) % ring.length === j)
172
+ continue;
173
+ if (segmentsIntersect(a1, a2, ring[j], ring[(j + 1) % ring.length])) {
174
+ return {
175
+ issue: 'is self-intersecting; v1 accepts one simple ring only (no holes, no multi-part)',
176
+ };
177
+ }
178
+ }
179
+ }
180
+ let twiceArea = 0;
181
+ for (let i = 0; i < ring.length; i++) {
182
+ const current = ring[i];
183
+ const next = ring[(i + 1) % ring.length];
184
+ twiceArea += current.x * next.y - next.x * current.y;
185
+ }
186
+ return twiceArea === 0 ? { issue: 'is degenerate (zero area)' } : { ring };
187
+ }
188
+ function deriveLevelHull(levels, geometries) {
189
+ const corners = [];
190
+ for (const candidate of levels) {
191
+ if (!candidate.surviving)
192
+ continue;
193
+ const geometry = geometries.get(candidate.value.layer);
194
+ const bounds = geometry?.rect ?? geometry?.viewbox;
195
+ if (!bounds || bounds.area <= 0)
196
+ continue;
197
+ corners.push(...rectCorners(bounds).map((corner) => ({ x: corner.x, y: corner.y })));
198
+ }
199
+ return convexHull(corners);
200
+ }
201
+ /**
202
+ * Parses a complete venue payload. Candidate entries are validated before any
203
+ * ownership is committed; all surviving levels claim globally before aux refs.
204
+ */
205
+ export function parseVenues(payload, geometries, sceneCandidates = []) {
206
+ try {
207
+ return parseVenuesInternal(payload, geometries, sceneCandidates);
208
+ }
209
+ catch {
210
+ const diagnostics = [
211
+ {
212
+ code: 'venues-payload-invalid',
213
+ path: 'venues',
214
+ message: 'could not be parsed',
215
+ consequence: 'plan loads as single-venue',
216
+ effect: 'dropped',
217
+ },
218
+ ];
219
+ return complete([], diagnostics, []);
220
+ }
221
+ }
222
+ function parseVenuesInternal(payload, geometries, sceneCandidates) {
223
+ const diagnostics = [];
224
+ // One emitter per `effect` (§11), so every site states what the SDK did with
225
+ // the authored value. `code` is the parity key against
226
+ // `docs/specs/validate-venues.mjs`; `message` and `consequence` are prose and
227
+ // are deliberately not compared across implementations.
228
+ const emit = (effect) => (code, path, message, consequence) => diagnostics.push({ code, path, message, consequence, effect });
229
+ const dropped = emit('dropped');
230
+ const fallback = emit('fallback');
231
+ const clamped = emit('clamped');
232
+ const advisory = emit('advisory');
233
+ const reportUnknownKeys = (at, value, knownKeys) => {
234
+ for (const key of Object.keys(value)) {
235
+ if (!knownKeys.has(key)) {
236
+ advisory('unknown-key', `${at}.${key}`, 'is not a contract field', 'ignored by the SDK');
237
+ }
238
+ }
239
+ };
240
+ /** Runs a probe pass, discarding whatever diagnostics it emitted. */
241
+ const speculative = (probe) => {
242
+ const mark = diagnostics.length;
243
+ try {
244
+ return probe();
245
+ }
246
+ finally {
247
+ diagnostics.length = mark;
248
+ }
249
+ };
250
+ const sceneCandidateLayerNames = new Set();
251
+ for (const candidates of sceneCandidates) {
252
+ for (const candidate of candidates)
253
+ sceneCandidateLayerNames.add(candidate.layer);
254
+ }
255
+ if (payload === undefined || payload === null)
256
+ return complete([], diagnostics, []);
257
+ if (!isObject(payload)) {
258
+ dropped('venues-payload-invalid', '', 'payload is not an object', 'nothing to parse');
259
+ return complete([], diagnostics, []);
260
+ }
261
+ const venuesValue = payload.venues;
262
+ if (venuesValue === undefined)
263
+ return complete([], diagnostics, []);
264
+ // An absent `venuesVersion` is read as v1 and reported by nothing here: the
265
+ // config layer supplies `venuesVersion: 1` as a default before venue parsing
266
+ // runs, so absence is indistinguishable from an authored 1 by this point.
267
+ // The field is contractually required (§15) — the requirement lives on the
268
+ // producer's export gate, which the reference validator implements.
269
+ if (payload.venuesVersion !== undefined && payload.venuesVersion !== 1) {
270
+ dropped('venues-version-unsupported', 'venuesVersion', `payload version ${describe(payload.venuesVersion)} is unsupported; SDK supports version 1`, 'whole venues array ignored; plan loads as single-venue');
271
+ return complete([], diagnostics, []);
272
+ }
273
+ if (!Array.isArray(venuesValue)) {
274
+ dropped('venues-payload-invalid', 'venues', 'is not an array', 'plan loads as single-venue');
275
+ return complete([], diagnostics, []);
276
+ }
277
+ const seenIds = new Map();
278
+ const nameOwners = new Map();
279
+ const duplicateNames = new Map();
280
+ venuesValue.forEach((value, index) => {
281
+ if (!isObject(value) || !isNonEmptyString(value.name))
282
+ return;
283
+ const at = `venues[${index}]`;
284
+ const normalized = value.name.toLowerCase();
285
+ const owner = nameOwners.get(normalized);
286
+ if (owner)
287
+ duplicateNames.set(at, owner);
288
+ else
289
+ nameOwners.set(normalized, at);
290
+ });
291
+ const states = venuesValue.map((value, index) => {
292
+ const at = `venues[${index}]`;
293
+ if (!isObject(value)) {
294
+ dropped('venue-identity-invalid', at, 'is not an object', 'venue dropped');
295
+ return {
296
+ at,
297
+ label: at,
298
+ claimable: false,
299
+ order: index,
300
+ levels: [],
301
+ aux: [],
302
+ entrances: [],
303
+ expectedSceneLayers: [],
304
+ referencedLayers: [],
305
+ };
306
+ }
307
+ reportUnknownKeys(at, value, VENUE_KEYS);
308
+ let claimable = true;
309
+ const id = value.id;
310
+ if (!isNonEmptyString(id)) {
311
+ dropped('venue-identity-invalid', `${at}.id`, 'is missing or not a non-empty string', 'venue dropped');
312
+ claimable = false;
313
+ }
314
+ else {
315
+ if (!ID_PATTERN.test(id)) {
316
+ dropped('venue-identity-invalid', `${at}.id`, `"${id}" must match ${ID_PATTERN} (lowercase alphanumerics, hyphen, underscore)`, 'id is used as a MapLibre feature id, a style-image id and a ?camera[venue]= deep-link value');
317
+ claimable = false;
318
+ }
319
+ if (seenIds.has(id)) {
320
+ dropped('venue-id-duplicate', `${at}.id`, `"${id}" duplicates ${seenIds.get(id)}`, 'this venue dropped');
321
+ claimable = false;
322
+ }
323
+ else {
324
+ seenIds.set(id, at);
325
+ }
326
+ }
327
+ const label = isNonEmptyString(id) ? `"${id}"` : at;
328
+ const name = value.name;
329
+ if (!isNonEmptyString(name)) {
330
+ dropped('venue-identity-invalid', `${at}.name`, 'is missing or not a non-empty string', 'venue dropped');
331
+ claimable = false;
332
+ }
333
+ else if (duplicateNames.has(at)) {
334
+ // Advisory since Revision 4 (§9): lookup resolves an `id` only, so a
335
+ // shared display name is an authoring smell — two identical rows in the
336
+ // venue switch — never a reason to delete a building.
337
+ advisory('venue-name-duplicate', `${at}.name`, `"${name}" duplicates the name of ${duplicateNames.get(at)} (case-insensitive)`, 'nothing dropped — two identical rows in the venue switch, ambiguous search results');
338
+ }
339
+ // `order` is contractually required (§9): the venue is never dropped for
340
+ // it, but the fallback to array position is reported so a producer's gate
341
+ // — and Guard 4's preview — can see that the export should have failed.
342
+ let order = index;
343
+ if (Number.isInteger(value.order)) {
344
+ order = value.order;
345
+ }
346
+ else {
347
+ fallback('venue-order-invalid', `${at}.order`, value.order === undefined ? 'is missing' : 'is not an integer', 'falls back to array position; order is contractually required (§9)');
348
+ }
349
+ const referencedLayers = [];
350
+ const rememberReference = (layer, exists = false) => {
351
+ if (isNonEmptyString(layer) &&
352
+ !layer.startsWith('WF') &&
353
+ exists &&
354
+ !referencedLayers.includes(layer)) {
355
+ referencedLayers.push(layer);
356
+ }
357
+ };
358
+ const levelCandidates = [];
359
+ if (!Array.isArray(value.levels) || value.levels.length === 0) {
360
+ dropped('venue-levels-missing', `${at}.levels`, 'is missing or empty', 'venue dropped');
361
+ claimable = false;
362
+ }
363
+ else {
364
+ value.levels.forEach((level, levelIndex) => {
365
+ const levelAt = `${at}.levels[${levelIndex}]`;
366
+ if (!isObject(level)) {
367
+ dropped('level-entry-invalid', levelAt, 'is not an object', 'level dropped');
368
+ return;
369
+ }
370
+ reportUnknownKeys(levelAt, level, LEVEL_KEYS);
371
+ rememberReference(level.layer, geometries.has(level.layer));
372
+ let ok = true;
373
+ if (!isNonEmptyString(level.layer)) {
374
+ dropped('level-layer-invalid', `${levelAt}.layer`, 'is missing or not a non-empty string', 'level dropped');
375
+ ok = false;
376
+ }
377
+ else {
378
+ if (!geometries.has(level.layer)) {
379
+ dropped('level-layer-unknown', `${levelAt}.layer`, `"${level.layer}" does not exist in the plan`, `level dropped; venue ${label} loses this floor (check for a rename or typo)`);
380
+ ok = false;
381
+ }
382
+ if (level.layer.startsWith('WF')) {
383
+ dropped('level-layer-wayfinding', `${levelAt}.layer`, `"${level.layer}" is a wayfinding layer`, 'WF* layers are excluded before the venue model sees them — level dropped');
384
+ ok = false;
385
+ }
386
+ }
387
+ if (!Number.isInteger(level.ordinal)) {
388
+ dropped('level-ordinal-invalid', `${levelAt}.ordinal`, 'is missing or not an integer', 'level dropped; ordinal is required (0 = ground, -1 = basement)');
389
+ ok = false;
390
+ }
391
+ if (level.name !== undefined && !isNonEmptyString(level.name)) {
392
+ fallback('level-field-invalid', `${levelAt}.name`, 'is not a non-empty string', "falls back to the layer's description");
393
+ }
394
+ if (level.initial !== undefined && typeof level.initial !== 'boolean') {
395
+ fallback('level-field-invalid', `${levelAt}.initial`, 'is not a boolean', 'ignored');
396
+ }
397
+ levelCandidates.push({
398
+ value: {
399
+ layer: isNonEmptyString(level.layer) ? level.layer : '',
400
+ ordinal: Number.isInteger(level.ordinal) ? level.ordinal : 0,
401
+ name: isNonEmptyString(level.name) ? level.name : undefined,
402
+ initial: typeof level.initial === 'boolean' ? level.initial : undefined,
403
+ },
404
+ at: levelAt,
405
+ ok,
406
+ surviving: false,
407
+ });
408
+ });
409
+ const ordinals = new Map();
410
+ for (const candidate of levelCandidates) {
411
+ if (!candidate.ok)
412
+ continue;
413
+ const ordinal = candidate.value.ordinal;
414
+ const owner = ordinals.get(ordinal);
415
+ if (owner) {
416
+ dropped('level-ordinal-duplicate', `${candidate.at}.ordinal`, `${ordinal} duplicates ${owner}`, 'level dropped; ordinals are unique within a venue');
417
+ candidate.ok = false;
418
+ }
419
+ else {
420
+ ordinals.set(ordinal, candidate.at);
421
+ }
422
+ }
423
+ }
424
+ let contour;
425
+ if (value.contour !== undefined) {
426
+ const result = validateRing(value.contour);
427
+ if (result.issue) {
428
+ fallback('contour-invalid', `${at}.contour`, result.issue, "falls back to the scene layer's geometry, then to the hull of level rects");
429
+ }
430
+ else {
431
+ contour = result.ring;
432
+ }
433
+ }
434
+ let markerPoint;
435
+ if (value.markerPoint !== undefined) {
436
+ if (isFinitePoint(value.markerPoint)) {
437
+ markerPoint = { x: value.markerPoint.x, y: value.markerPoint.y };
438
+ }
439
+ else {
440
+ fallback('venue-marker-point-invalid', `${at}.markerPoint`, 'is not a finite {x, y} point', 'falls back to the contour centroid');
441
+ }
442
+ }
443
+ // The two edges of the size band resolve together (§4): the detail edge is
444
+ // checked for usability first, the marker edge is then judged against it,
445
+ // and only then is the detail edge clamped above whichever marker edge won.
446
+ let detailMinSizePx;
447
+ if (value.detailMinSizePx !== undefined) {
448
+ if (!isFiniteNumber(value.detailMinSizePx) || value.detailMinSizePx <= 0) {
449
+ fallback('detail-min-size-invalid', `${at}.detailMinSizePx`, 'is not a positive finite number', 'default 240 used');
450
+ }
451
+ else {
452
+ detailMinSizePx = value.detailMinSizePx;
453
+ }
454
+ }
455
+ let markerMaxSizePx;
456
+ if (value.markerMaxSizePx !== undefined) {
457
+ // Judged against the detail edge as the default ceiling would leave it:
458
+ // the marker edge is what is in question, so it cannot be its own yardstick.
459
+ const detailBeforeClamp = detailMinSizePx === undefined
460
+ ? DEFAULT_DETAIL_MIN_SIZE_PX
461
+ : Math.max(MIN_DETAIL_MIN_SIZE_PX, detailMinSizePx);
462
+ if (!isFiniteNumber(value.markerMaxSizePx) || value.markerMaxSizePx <= 0) {
463
+ fallback('marker-max-size-invalid', `${at}.markerMaxSizePx`, 'is not a positive finite number', `default ${DEFAULT_MARKER_MAX_SIZE_PX} used`);
464
+ }
465
+ else if (value.markerMaxSizePx >= detailBeforeClamp) {
466
+ fallback('marker-max-size-inverted', `${at}.markerMaxSizePx`, `${value.markerMaxSizePx} is at or above the venue's resolved detailMinSizePx of ${detailBeforeClamp}`, `default ${DEFAULT_MARKER_MAX_SIZE_PX} used, then the detail-edge clamp applies`);
467
+ }
468
+ else {
469
+ markerMaxSizePx = value.markerMaxSizePx;
470
+ }
471
+ }
472
+ const resolvedMarkerMaxSizePx = markerMaxSizePx ?? DEFAULT_MARKER_MAX_SIZE_PX;
473
+ if (detailMinSizePx !== undefined &&
474
+ !detailEdgeClearsMarkerEdge(detailMinSizePx, resolvedMarkerMaxSizePx)) {
475
+ const floor = detailMinSizeFloor(resolvedMarkerMaxSizePx);
476
+ clamped('detail-min-size-clamped', `${at}.detailMinSizePx`, `${detailMinSizePx} is below the ${floor}px marker/scene sticky enter edge`, `clamped to ${floor}`);
477
+ detailMinSizePx = floor;
478
+ }
479
+ const resolvedDetailMinSizePx = detailMinSizePx ?? DEFAULT_DETAIL_MIN_SIZE_PX;
480
+ const auxCandidates = [];
481
+ const expectedSceneLayers = [];
482
+ if (value.layers !== undefined) {
483
+ if (!Array.isArray(value.layers)) {
484
+ fallback('aux-layers-invalid', `${at}.layers`, 'is not an array', 'ignored; procedural appearance used');
485
+ }
486
+ else {
487
+ value.layers.forEach((aux, auxIndex) => {
488
+ const auxAt = `${at}.layers[${auxIndex}]`;
489
+ if (!isObject(aux)) {
490
+ dropped('aux-entry-invalid', auxAt, 'is not an object', 'entry dropped');
491
+ return;
492
+ }
493
+ reportUnknownKeys(auxAt, aux, AUX_KEYS);
494
+ if (isNonEmptyString(aux.layer) &&
495
+ aux.render === 'scene' &&
496
+ (aux.replacesDefault === undefined || aux.replacesDefault === true)) {
497
+ expectedSceneLayers.push(aux.layer);
498
+ }
499
+ const layerExists = isNonEmptyString(aux.layer) &&
500
+ (geometries.has(aux.layer) || sceneCandidateLayerNames.has(aux.layer));
501
+ rememberReference(aux.layer, layerExists);
502
+ let ok = true;
503
+ if (!isNonEmptyString(aux.layer)) {
504
+ dropped('aux-layer-invalid', `${auxAt}.layer`, 'is missing or not a non-empty string', 'entry dropped');
505
+ ok = false;
506
+ }
507
+ else {
508
+ if (!layerExists) {
509
+ dropped('aux-layer-unknown', `${auxAt}.layer`, `"${aux.layer}" does not exist in the plan`, 'entry dropped; venue falls back to the procedural appearance');
510
+ ok = false;
511
+ }
512
+ if (aux.layer.startsWith('WF')) {
513
+ dropped('aux-layer-wayfinding', `${auxAt}.layer`, `"${aux.layer}" is a wayfinding layer`, 'WF* layers are excluded before the venue model sees them — entry dropped');
514
+ ok = false;
515
+ }
516
+ }
517
+ const renderValid = RENDER_MODES.includes(aux.render);
518
+ if (!renderValid) {
519
+ dropped('aux-entry-invalid', `${auxAt}.render`, `is ${describe(aux.render)}, expected "scene" or "marker"`, 'entry dropped');
520
+ ok = false;
521
+ }
522
+ if (aux.replacesDefault !== undefined && typeof aux.replacesDefault !== 'boolean') {
523
+ dropped('aux-entry-invalid', `${auxAt}.replacesDefault`, 'is not a boolean', 'entry dropped');
524
+ ok = false;
525
+ }
526
+ if (aux.suppressesLabel !== undefined && typeof aux.suppressesLabel !== 'boolean') {
527
+ dropped('aux-entry-invalid', `${auxAt}.suppressesLabel`, 'is not a boolean', 'entry dropped');
528
+ ok = false;
529
+ }
530
+ if (aux.minSizePx !== undefined &&
531
+ (!isFiniteNumber(aux.minSizePx) || aux.minSizePx < 0)) {
532
+ dropped('aux-entry-invalid', `${auxAt}.minSizePx`, 'is not a non-negative finite number', 'entry dropped');
533
+ ok = false;
534
+ }
535
+ if (aux.maxSizePx !== undefined &&
536
+ aux.maxSizePx !== 'detail' &&
537
+ (!isFiniteNumber(aux.maxSizePx) || aux.maxSizePx < 0)) {
538
+ dropped('aux-entry-invalid', `${auxAt}.maxSizePx`, 'is not a non-negative finite number or the literal "detail"', 'entry dropped');
539
+ ok = false;
540
+ }
541
+ if (isFiniteNumber(aux.minSizePx) &&
542
+ isFiniteNumber(aux.maxSizePx) &&
543
+ aux.minSizePx >= 0 &&
544
+ aux.maxSizePx >= 0 &&
545
+ aux.minSizePx > aux.maxSizePx) {
546
+ dropped('aux-range-inverted', auxAt, `minSizePx ${aux.minSizePx} exceeds maxSizePx ${aux.maxSizePx}`, 'entry dropped');
547
+ ok = false;
548
+ }
549
+ const render = renderValid ? aux.render : 'scene';
550
+ const resolvedMin = isFiniteNumber(aux.minSizePx) && aux.minSizePx >= 0
551
+ ? aux.minSizePx
552
+ : render === 'marker'
553
+ ? 0
554
+ : resolvedMarkerMaxSizePx;
555
+ // Resolved the same way as the minimum: §7's default maxSizePx is
556
+ // "detail" for scene layers and the venue's marker edge for markers
557
+ // (Revision 5; 60 unless authored), so an entry that
558
+ // only authors one bound (the most idiomatic shape) must still be
559
+ // checked against its defaulted other bound — not the authored
560
+ // value alone, which the un-resolved check below used to do.
561
+ const resolvedMax = aux.maxSizePx !== undefined &&
562
+ (aux.maxSizePx === 'detail' || isFiniteNumber(aux.maxSizePx))
563
+ ? aux.maxSizePx
564
+ : render === 'scene'
565
+ ? 'detail'
566
+ : resolvedMarkerMaxSizePx;
567
+ const impossibleRange = resolvedMax === 'detail'
568
+ ? resolvedMin >= resolvedDetailMinSizePx
569
+ : resolvedMin > resolvedMax;
570
+ if (renderValid && impossibleRange) {
571
+ dropped('aux-range-never-visible', auxAt, `resolved range ${resolvedMin}..${resolvedMax} can never render`, 'entry dropped; the procedural fallback for this render mode is restored');
572
+ ok = false;
573
+ }
574
+ if (renderValid && render === 'scene' && isFiniteNumber(aux.maxSizePx)) {
575
+ advisory('aux-max-size-numeric', `${auxAt}.maxSizePx`, `is the hard edge ${aux.maxSizePx} rather than "detail"`, 'a static edge cannot follow the ±10% detail hysteresis — expect flicker and brief overlap with the floor plan');
576
+ }
577
+ auxCandidates.push({
578
+ value: {
579
+ layer: isNonEmptyString(aux.layer) ? aux.layer : '',
580
+ render,
581
+ replacesDefault: typeof aux.replacesDefault === 'boolean' ? aux.replacesDefault : undefined,
582
+ suppressesLabel: typeof aux.suppressesLabel === 'boolean' ? aux.suppressesLabel : undefined,
583
+ minSizePx: isFiniteNumber(aux.minSizePx) ? aux.minSizePx : undefined,
584
+ maxSizePx: aux.maxSizePx === 'detail' || isFiniteNumber(aux.maxSizePx)
585
+ ? aux.maxSizePx
586
+ : undefined,
587
+ },
588
+ at: auxAt,
589
+ ok,
590
+ surviving: false,
591
+ });
592
+ });
593
+ }
594
+ }
595
+ // An entrance stands on a level of its own venue (§6.1), so it is checked
596
+ // against the levels this venue *authored* — not against the plan's layers,
597
+ // and not against the levels that survive. That keeps the answer identical
598
+ // in the export-time validator, which sees no geometry and no claims; a
599
+ // door orphaned by a level that later drops is reported below instead.
600
+ const authoredLevelLayers = new Set((Array.isArray(value.levels) ? value.levels : [])
601
+ .filter(isObject)
602
+ .map((level) => level.layer)
603
+ .filter(isNonEmptyString));
604
+ const entranceCandidates = [];
605
+ if (value.entrances !== undefined) {
606
+ if (!Array.isArray(value.entrances)) {
607
+ fallback('entrances-invalid', `${at}.entrances`, 'is not an array', 'ignored; the venue keeps marker-point targeting');
608
+ }
609
+ else {
610
+ value.entrances.forEach((entrance, entranceIndex) => {
611
+ const entranceAt = `${at}.entrances[${entranceIndex}]`;
612
+ if (!isObject(entrance)) {
613
+ dropped('entrance-entry-invalid', entranceAt, 'is not an object', 'entrance dropped');
614
+ return;
615
+ }
616
+ reportUnknownKeys(entranceAt, entrance, ENTRANCE_KEYS);
617
+ // Unlike a level or an aux entry, a rejected door claims nothing and
618
+ // is never reconsidered, so it is dropped here rather than carried on
619
+ // as a candidate with placeholder geometry.
620
+ let ok = true;
621
+ if (!isNonEmptyString(entrance.layer)) {
622
+ dropped('entrance-layer-invalid', `${entranceAt}.layer`, 'is missing or not a non-empty string', 'entrance dropped');
623
+ ok = false;
624
+ }
625
+ else if (!authoredLevelLayers.has(entrance.layer)) {
626
+ dropped('entrance-layer-foreign', `${entranceAt}.layer`, `"${entrance.layer}" is not a level of venue ${label}`, 'entrance dropped; an entrance stands on one of its own venue’s levels');
627
+ ok = false;
628
+ }
629
+ if (!isFinitePoint(entrance.point)) {
630
+ dropped('entrance-entry-invalid', `${entranceAt}.point`, 'is missing or not a finite {x, y} point', 'entrance dropped; an entrance is a point before it is anything else');
631
+ ok = false;
632
+ }
633
+ if (entrance.name !== undefined && !isNonEmptyString(entrance.name)) {
634
+ fallback('entrance-field-invalid', `${entranceAt}.name`, 'is not a non-empty string', 'falls back to the venue’s own name');
635
+ }
636
+ if (!ok || !isNonEmptyString(entrance.layer) || !isFinitePoint(entrance.point))
637
+ return;
638
+ entranceCandidates.push({
639
+ value: {
640
+ layer: entrance.layer,
641
+ point: { x: entrance.point.x, y: entrance.point.y },
642
+ name: isNonEmptyString(entrance.name) ? entrance.name : undefined,
643
+ },
644
+ at: entranceAt,
645
+ });
646
+ });
647
+ }
648
+ }
649
+ return {
650
+ at,
651
+ id: isNonEmptyString(id) ? id : undefined,
652
+ name: isNonEmptyString(name) ? name : undefined,
653
+ label,
654
+ claimable,
655
+ order,
656
+ levels: levelCandidates,
657
+ aux: auxCandidates,
658
+ entrances: entranceCandidates,
659
+ expectedSceneLayers,
660
+ contour,
661
+ markerPoint,
662
+ detailMinSizePx,
663
+ markerMaxSizePx,
664
+ referencedLayers,
665
+ campusViewbox: value.campusViewbox,
666
+ };
667
+ });
668
+ const geometryDropped = new Set();
669
+ /**
670
+ * The order competing claims are resolved in (§10): resolved `order`, then
671
+ * `id`. Deliberately NOT array position — a contested layer is a broken
672
+ * authoring state either way, so the property worth having is that the
673
+ * winner survives a re-export that reorders `venues[]`. `sort` is stable, so
674
+ * venues that tie on both keys (only unidentified ones, which never claim)
675
+ * keep their array position.
676
+ *
677
+ * Codepoint comparison, not `localeCompare`: the same payload must resolve
678
+ * identically in this parser, in the reference validator and in whatever
679
+ * runs a producer's export gate, and `localeCompare` orders `-`, `_` and
680
+ * digits by ICU collation rules that vary between runtimes.
681
+ */
682
+ const claimOrder = [...states].sort((a, b) => a.order - b.order || compareIds(a.id ?? '', b.id ?? ''));
683
+ // The campus viewbox belongs to the plan, not to the venue carrying it (§3):
684
+ // the first carrier in the same order as claims holds it — usable or not —
685
+ // and every later carrier is ignored. It is read from the authored record,
686
+ // so a carrier that is dropped as a venue still frames the campus.
687
+ let campusViewbox = null;
688
+ let campusCarrier;
689
+ for (const state of claimOrder) {
690
+ if (state.campusViewbox === undefined)
691
+ continue;
692
+ const at = `${state.at}.campusViewbox`;
693
+ if (campusCarrier) {
694
+ dropped('campus-viewbox-duplicate', at, `${campusCarrier.at} already carries the campus viewbox`, "this venue's value is ignored; the first carrier by order wins");
695
+ continue;
696
+ }
697
+ campusCarrier = state;
698
+ const value = state.campusViewbox;
699
+ if (isCampusViewbox(value)) {
700
+ campusViewbox = new Box(value.x, value.y, value.width, value.height);
701
+ }
702
+ else {
703
+ fallback('campus-viewbox-invalid', at, 'is not an {x, y, width, height} of finite numbers with a positive width and height', 'the campus is framed by the union of the venue footprints');
704
+ }
705
+ }
706
+ const assignClaims = () => {
707
+ const claims = new Map();
708
+ for (const state of states) {
709
+ state.parsed = undefined;
710
+ for (const candidate of state.levels)
711
+ candidate.surviving = false;
712
+ for (const candidate of state.aux)
713
+ candidate.surviving = false;
714
+ }
715
+ // KTD3: every valid level receives its claim opportunity before any aux entry.
716
+ for (const state of claimOrder) {
717
+ if (!state.claimable || !state.id || !state.name || geometryDropped.has(state))
718
+ continue;
719
+ for (const candidate of state.levels) {
720
+ if (!candidate.ok)
721
+ continue;
722
+ const layer = candidate.value.layer;
723
+ const claimedBy = claims.get(layer);
724
+ if (claimedBy) {
725
+ dropped('level-layer-claimed', `${candidate.at}.layer`, `"${layer}" is already used by ${claimedBy.label} (${claimedBy.role})`, 'level dropped; a layer belongs to at most one venue and one role');
726
+ continue;
727
+ }
728
+ claims.set(layer, { label: state.label, role: 'level' });
729
+ candidate.surviving = true;
730
+ }
731
+ }
732
+ for (const state of claimOrder) {
733
+ if (!state.claimable ||
734
+ !state.id ||
735
+ !state.name ||
736
+ geometryDropped.has(state) ||
737
+ !state.levels.some((candidate) => candidate.surviving)) {
738
+ continue;
739
+ }
740
+ let markerCount = 0;
741
+ for (const candidate of state.aux) {
742
+ if (!candidate.ok)
743
+ continue;
744
+ const aux = candidate.value;
745
+ const claimedBy = claims.get(aux.layer);
746
+ if (claimedBy) {
747
+ dropped('aux-layer-claimed', `${candidate.at}.layer`, `"${aux.layer}" is already used by ${claimedBy.label} (${claimedBy.role})`, 'entry dropped; a layer is a level, an aux layer, or neither — never two');
748
+ continue;
749
+ }
750
+ if (aux.render === 'marker' && markerCount > 0) {
751
+ dropped('aux-marker-duplicate', `${candidate.at}.render`, 'is a second marker layer for this venue', 'at most one per venue; extras dropped, the first wins');
752
+ continue;
753
+ }
754
+ claims.set(aux.layer, { label: state.label, role: 'aux' });
755
+ candidate.surviving = true;
756
+ if (aux.render === 'marker')
757
+ markerCount++;
758
+ }
759
+ }
760
+ return claims;
761
+ };
762
+ const resolveContour = (state) => {
763
+ if (state.contour)
764
+ return state.contour;
765
+ const venueIndex = states.indexOf(state);
766
+ const replacingScenes = state.aux.filter((candidate) => candidate.ok &&
767
+ candidate.value.render === 'scene' &&
768
+ candidate.value.replacesDefault !== false);
769
+ const candidateByLayer = new Map(replacingScenes
770
+ .filter((candidate) => candidate.surviving)
771
+ .map((candidate) => [candidate.value.layer, candidate]));
772
+ const validScenes = [];
773
+ for (const scene of sceneCandidates[venueIndex] ?? []) {
774
+ const candidate = candidateByLayer.get(scene.layer);
775
+ if (!candidate?.surviving)
776
+ continue;
777
+ const unusable = (issue) => fallback('footprint-source-unusable', `${candidate.at}.layer`, `scene layer "${scene.layer}" ${issue}`, 'the next valid replacing scene is tried, then the level-rect hull');
778
+ const { extraction } = scene;
779
+ if (!extraction.ring) {
780
+ // Naming the shapes is the whole point: on an ordinary plan layer only
781
+ // paths are drawn (§6), so an author who outlined the building with a
782
+ // rect sees artwork on screen and cannot otherwise tell why the venue
783
+ // took its footprint from somewhere else.
784
+ unusable(extraction.unusableElementKinds.length > 0
785
+ ? `draws no usable <path>; only paths are footprint sources, and it draws ${extraction.unusableElementKinds
786
+ .map((kind) => `<${kind}>`)
787
+ .join(', ')}`
788
+ : 'could not supply a valid contour');
789
+ continue;
790
+ }
791
+ const validation = validateRing(extraction.ring);
792
+ if (!validation.ring) {
793
+ unusable(validation.issue ?? 'could not supply a valid contour');
794
+ continue;
795
+ }
796
+ validScenes.push({
797
+ candidate,
798
+ layer: scene.layer,
799
+ ring: validation.ring,
800
+ boundsFallback: extraction.boundsFallback,
801
+ });
802
+ }
803
+ if (validScenes.length > 1) {
804
+ advisory('footprint-source-ambiguous', `${state.at}.layers`, `multiple replacing scene layers provide contours: ${validScenes
805
+ .map(({ layer }) => `"${layer}"`)
806
+ .join(', ')}`, `the first in plan-layer order, "${validScenes[0].layer}", wins`);
807
+ }
808
+ const selected = validScenes[0];
809
+ if (selected) {
810
+ if (selected.boundsFallback) {
811
+ fallback('footprint-bounding-box', `${selected.candidate.at}.layer`, `scene layer "${selected.layer}" uses its bounding box for the venue contour`, 'camera, tap target, and size bounds may extend beyond the artwork');
812
+ }
813
+ return selected.ring;
814
+ }
815
+ const hull = deriveLevelHull(state.levels, geometries);
816
+ if (hull.length >= 3 && state.expectedSceneLayers.length > 0) {
817
+ fallback('footprint-source-fallthrough', `${state.at}.contour`, 'replacing scene contour unavailable; using the level-rect hull', 'bounds, camera target, tap target, and the size axis changed source');
818
+ }
819
+ return hull;
820
+ };
821
+ // A geometry-invalid earlier venue must release its claims before later venues
822
+ // are evaluated. Drop one at a time so each retry sees the newly available roles.
823
+ while (true) {
824
+ // Claim assignment and contour resolution are the same code whether or not
825
+ // the pass is final; only their diagnostics differ. Run the probe with the
826
+ // buffer rewound afterwards rather than threading a "stay quiet" flag
827
+ // through every emit site — the claim/survivor mutations still stand.
828
+ const failed = speculative(() => {
829
+ assignClaims();
830
+ // Claim order again, not array position: dropping a venue releases its
831
+ // claims to the others, so which one is examined first is part of the
832
+ // outcome (§10).
833
+ return claimOrder.find((state) => state.claimable &&
834
+ !geometryDropped.has(state) &&
835
+ state.levels.some((candidate) => candidate.surviving) &&
836
+ resolveContour(state).length < 3);
837
+ });
838
+ if (!failed)
839
+ break;
840
+ resolveContour(failed);
841
+ dropped('footprint-underivable', `${failed.at}.contour`, 'no valid polygon can be derived', `venue ${failed.label} dropped entirely`);
842
+ geometryDropped.add(failed);
843
+ }
844
+ const claimedLayers = assignClaims();
845
+ for (const state of states) {
846
+ if (!state.claimable || !state.id || !state.name || geometryDropped.has(state))
847
+ continue;
848
+ const survivingLevels = state.levels.filter((candidate) => candidate.surviving);
849
+ if (survivingLevels.length === 0) {
850
+ dropped('venue-levels-all-dropped', `${state.at}.levels`, 'no level survives validation', `venue ${state.label} dropped entirely`);
851
+ continue;
852
+ }
853
+ const contour = resolveContour(state);
854
+ const authoredInitial = state.levels.filter((candidate) => candidate.value.initial === true);
855
+ const survivingInitial = survivingLevels.filter((candidate) => candidate.value.initial === true);
856
+ if (authoredInitial.some((candidate) => !candidate.surviving)) {
857
+ const lostInitial = authoredInitial.find((candidate) => !candidate.surviving);
858
+ fallback('level-initial-dropped', `${lostInitial.at}.initial`, 'initial level was dropped', 'the lowest surviving ordinal is initial');
859
+ }
860
+ // A dropped ordinal-0 (ground) level is usually both the default
861
+ // `initial` level and the floor carrying the venue↔pathway virtual
862
+ // connection — §11's "drop the level, not the venue" design otherwise
863
+ // leaves the hall booting on an upper floor with cross-venue routing
864
+ // silently broken (§13, undetectable from data.js alone).
865
+ const authoredGround = state.levels.filter((candidate) => candidate.value.ordinal === 0);
866
+ if (authoredGround.length > 0 &&
867
+ !survivingLevels.some((candidate) => candidate.value.ordinal === 0)) {
868
+ advisory('level-ground-dropped', `${state.at}.levels`, 'the ordinal 0 (ground) level was dropped', 'cross-venue routing into this venue is likely broken (§13); the venue also boots on an upper floor');
869
+ }
870
+ if (survivingInitial.length > 1) {
871
+ advisory('level-initial-duplicate', `${state.at}.levels`, `${survivingInitial.length} levels are marked initial`, 'at most one per venue; the SDK takes the first');
872
+ }
873
+ const initial = survivingInitial[0] ??
874
+ survivingLevels.reduce((lowest, candidate) => candidate.value.ordinal < lowest.value.ordinal ? candidate : lowest);
875
+ // A door on a level the venue just lost leads nowhere the SDK can draw or
876
+ // route to, so it goes with the level — and says so, because the venue may
877
+ // be left with fewer doors, or with none and back on its marker point.
878
+ const survivingLevelLayers = new Set(survivingLevels.map((candidate) => candidate.value.layer));
879
+ const entrances = [];
880
+ for (const candidate of state.entrances) {
881
+ if (!survivingLevelLayers.has(candidate.value.layer)) {
882
+ // `dropped`, not `fallback` (ADR-0009): the entrance leaves the model.
883
+ // What the venue does afterwards — its other doors, then its marker
884
+ // point — is the consequence, which is what that field is for.
885
+ dropped('entrance-level-dropped', `${candidate.at}.layer`, `level "${candidate.value.layer}" did not survive validation`, 'entrance dropped; the venue falls back to its remaining doors, then to marker-point targeting');
886
+ continue;
887
+ }
888
+ entrances.push({ ...candidate.value });
889
+ }
890
+ const copiedContour = contour.map((point) => ({ x: point.x, y: point.y }));
891
+ state.parsed = {
892
+ id: state.id,
893
+ name: state.name,
894
+ order: state.order,
895
+ levels: survivingLevels.map((candidate) => ({
896
+ layer: candidate.value.layer,
897
+ ordinal: candidate.value.ordinal,
898
+ name: candidate.value.name,
899
+ initial: candidate === initial,
900
+ })),
901
+ contour: copiedContour,
902
+ markerPoint: state.markerPoint ?? polygonCentroid(copiedContour),
903
+ bounds: Box.fromPoints(copiedContour),
904
+ detailMinSizePx: state.detailMinSizePx,
905
+ markerMaxSizePx: state.markerMaxSizePx,
906
+ entrances,
907
+ auxLayers: state.aux
908
+ .filter((candidate) => candidate.surviving)
909
+ .map(({ value: aux }) => {
910
+ const replacesDefault = aux.replacesDefault ?? true;
911
+ return {
912
+ layer: aux.layer,
913
+ render: aux.render,
914
+ replacesDefault,
915
+ // Artwork that replaces the procedural scene also carries the venue's
916
+ // name, so the SDK's label would double it (§7); a marker never
917
+ // suppresses the label unless the author says so (§4, R14).
918
+ suppressesLabel: aux.suppressesLabel ?? (aux.render === 'scene' && replacesDefault),
919
+ minSizePx: aux.minSizePx,
920
+ maxSizePx: aux.maxSizePx,
921
+ };
922
+ }),
923
+ };
924
+ }
925
+ const quarantineCandidates = [];
926
+ for (const state of states) {
927
+ if (state.parsed)
928
+ continue;
929
+ for (const layer of state.referencedLayers) {
930
+ if (!quarantineCandidates.includes(layer))
931
+ quarantineCandidates.push(layer);
932
+ }
933
+ }
934
+ const parsedVenues = [];
935
+ for (const state of states) {
936
+ if (state.parsed)
937
+ parsedVenues.push(state.parsed);
938
+ }
939
+ // Every venue failed validation: nothing claims a layer, so every
940
+ // referenced layer would otherwise become a quarantine candidate and the
941
+ // whole plan would render blank — inverting §11's "a broken venue must not
942
+ // take an event offline" promise. Degrade to single-venue instead, the
943
+ // same precedent already used for an unsupported venuesVersion above.
944
+ if (venuesValue.length > 0 && parsedVenues.length === 0) {
945
+ dropped('venues-all-dropped', 'venues', 'no venue survived validation', 'plan loads as single-venue');
946
+ return complete([], diagnostics, []);
947
+ }
948
+ const quarantinedLayerNames = quarantineCandidates.filter((layer) => !claimedLayers.has(layer));
949
+ if (quarantinedLayerNames.length > 0) {
950
+ dropped('plan-layers-quarantined', 'venues', `quarantined unclaimed layer${quarantinedLayerNames.length === 1 ? '' : 's'}: ${quarantinedLayerNames
951
+ .map((layer) => `"${layer}"`)
952
+ .join(', ')}`, 'hidden from venue and ordinary layer rendering');
953
+ }
954
+ return complete(parsedVenues, diagnostics, quarantinedLayerNames, campusViewbox);
955
+ }