@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.
- package/README.md +8 -0
- package/dist/browser/Button-DT-Jfwrb.js +64 -0
- package/dist/browser/CookieConsent-BIsWzAiP.js +38 -0
- package/dist/browser/Debug-B5mmo0ZX.js +53 -0
- package/dist/browser/DebugTools-Y0aycjKM.js +1931 -0
- package/dist/browser/Demo-B2klxORi.js +71 -0
- package/dist/browser/Free-suULW-LU.js +69 -0
- package/dist/browser/GalleryContainer-BGBNGRKU.js +3355 -0
- package/dist/browser/GpsLoader-Idv0kq5D.js +154 -0
- package/dist/browser/KioskStore-Dg9jaX5d.js +250 -0
- package/dist/browser/LayerStore-CK6wLW56.js +24105 -0
- package/dist/browser/MaplibreAdapter-uZUhZfFW.js +36770 -0
- package/dist/browser/ModalContainer-DWm8vEaI.js +148 -0
- package/dist/browser/PermissionNotice-DaqnuHln.js +54 -0
- package/dist/browser/RouteStore-NE2I9tiF.js +3715 -0
- package/dist/browser/SetKioskMode-Dwlf5w7q.js +49 -0
- package/dist/browser/ShowKiosk-Cr-QmIUT.js +82 -0
- package/dist/browser/ViewerMenuPanel-CTAjGsq2.js +133 -0
- package/dist/browser/add-debug-secret-listener-BECnIMzo.js +55 -0
- package/dist/browser/adopt-global-settings-U-KbyxMd.js +185 -0
- package/dist/browser/boolean-editor-CYMx87em.js +149 -0
- package/dist/browser/bootIntercom-BqQsnxII.js +37 -0
- package/dist/browser/bundle.json +422 -0
- package/dist/browser/camera-events-DSCuSH25.js +18 -0
- package/dist/browser/classnames-YcGXWNfg.js +39 -0
- package/dist/browser/client-BcPpS_Gj.js +7402 -0
- package/dist/browser/compat-helper.js +6 -0
- package/dist/browser/components-BjEhhgf2.js +7393 -0
- package/dist/browser/create-live-plan-BaEGBhGA.js +4046 -0
- package/dist/browser/debounce-raMZ2DqK.js +2102 -0
- package/dist/browser/debug-context-CNBgUWR8.js +24315 -0
- package/dist/browser/debug-overlay-B__pFwQg.js +1455 -0
- package/dist/browser/debug-ui-BaE8MZQX.js +86 -0
- package/dist/browser/dist-C1NaWqk4.js +2611 -0
- package/dist/browser/dist-Cx8u0gjK.js +21 -0
- package/dist/browser/dist-wOC6gYFh.js +205 -0
- package/dist/browser/efp-debug-init-CozbueIl.js +245 -0
- package/dist/browser/enum-editor-CkiQPgZv.js +34 -0
- package/dist/browser/es5-B__Ovz45.js +1712 -0
- package/dist/browser/event-head-C_inMpbD.js +56 -0
- package/dist/browser/event-not-found-Z2mJBZE3.js +31 -0
- package/dist/browser/expofp-overlay.png +0 -0
- package/dist/browser/expofpUrl-jBUlvkwz.js +19 -0
- package/dist/browser/exports-CvUYw1h6.js +1525 -0
- package/dist/browser/favicon-BkDrYTmU.js +12 -0
- package/dist/browser/fetch-retry.umd-2B2pCUIS.js +78 -0
- package/dist/browser/flex-3lSivw8z.js +823 -0
- package/dist/browser/floorplan.loader-CGzIMplb.js +3282 -0
- package/dist/browser/floorplan.ready-r96zV9bP.js +1448 -0
- package/dist/browser/fonts/efp-symbols.woff +0 -0
- package/dist/browser/fonts/inter-400.woff2 +0 -0
- package/dist/browser/fonts/inter-500.woff2 +0 -0
- package/dist/browser/fonts/inter-600.woff2 +0 -0
- package/dist/browser/fonts/oswald-v17-cyrillic_latin-300.woff +0 -0
- package/dist/browser/fonts/oswald-v17-cyrillic_latin-500.woff +0 -0
- package/dist/browser/freeBanner-CnrBc9Tl.js +22 -0
- package/dist/browser/fuse-B7V1lkoA.js +1177 -0
- package/dist/browser/i18n-BgFBhYOU.js +7205 -0
- package/dist/browser/icons/accessible.svg +5 -0
- package/dist/browser/icons/arrow-down.svg +3 -0
- package/dist/browser/icons/bus-white.svg +3 -0
- package/dist/browser/icons/check.svg +3 -0
- package/dist/browser/icons/clear.svg +4 -0
- package/dist/browser/icons/departure.svg +5 -0
- package/dist/browser/icons/departure_inactive.svg +5 -0
- package/dist/browser/icons/destination.svg +5 -0
- package/dist/browser/icons/direction.svg +54 -0
- package/dist/browser/icons/dots.svg +4 -0
- package/dist/browser/icons/dragdrop-solid.svg +11 -0
- package/dist/browser/icons/facebook.svg +4 -0
- package/dist/browser/icons/from.svg +4 -0
- package/dist/browser/icons/kiosk.svg +1 -0
- package/dist/browser/icons/linkedin.svg +3 -0
- package/dist/browser/icons/rotate.svg +5 -0
- package/dist/browser/icons/tap.svg +5 -0
- package/dist/browser/icons/to.svg +4 -0
- package/dist/browser/icons/transition.svg +7 -0
- package/dist/browser/icons/transition_down.svg +15 -0
- package/dist/browser/icons/transition_up.svg +15 -0
- package/dist/browser/icons/twitter.svg +3 -0
- package/dist/browser/icons/yah.svg +17 -0
- package/dist/browser/index.html +139 -0
- package/dist/browser/index.js +254 -0
- package/dist/browser/index.module-kJmnWg5B.js +153 -0
- package/dist/browser/integrateKiosk-D45vYRsm.js +35 -0
- package/dist/browser/is-debug-BRHdrnKr.js +197 -0
- package/dist/browser/is-own-domain-DNvxb9Ph.js +26 -0
- package/dist/browser/is-webview-cTH4yz8f.js +12 -0
- package/dist/browser/journey-plan-DtL28HMP.js +1865 -0
- package/dist/browser/jsx-runtime-DQgnuS-I.js +30 -0
- package/dist/browser/kiosk-mode-DfkGlDkT.js +28 -0
- package/dist/browser/kiosk-record-JAEq8SV6.js +18 -0
- package/dist/browser/kioskUrlParam-CnYhnC_7.js +141 -0
- package/dist/browser/lib--J2yQXt6.js +1910 -0
- package/dist/browser/loadImage-DzSnRAxX.js +30 -0
- package/dist/browser/locales/ar.json +228 -0
- package/dist/browser/locales/da.json +229 -0
- package/dist/browser/locales/de.json +228 -0
- package/dist/browser/locales/es.json +228 -0
- package/dist/browser/locales/fr.json +228 -0
- package/dist/browser/locales/he.json +228 -0
- package/dist/browser/locales/it.json +228 -0
- package/dist/browser/locales/kk.json +228 -0
- package/dist/browser/locales/ko.json +228 -0
- package/dist/browser/locales/mn.json +228 -0
- package/dist/browser/locales/nl.json +228 -0
- package/dist/browser/locales/pl.json +228 -0
- package/dist/browser/locales/pt.json +228 -0
- package/dist/browser/locales/ru.json +228 -0
- package/dist/browser/locales/sv.json +228 -0
- package/dist/browser/locales/th.json +228 -0
- package/dist/browser/locales/tr.json +228 -0
- package/dist/browser/locales/uk.json +228 -0
- package/dist/browser/locales/vi.json +228 -0
- package/dist/browser/locales/zh.json +228 -0
- package/dist/browser/logDeviceInfo-BTqyv9Xe.js +58 -0
- package/dist/browser/mobx-C-kcS0zI.js +43 -0
- package/dist/browser/mobx.module-BOCLFB5I.js +2064 -0
- package/dist/browser/optional-boolean-editor-ZncW2HBw.js +20 -0
- package/dist/browser/optional-enum-editor-Dkzs9jDN.js +34 -0
- package/dist/browser/optional-string-editor-DC9PMUWB.js +30 -0
- package/dist/browser/particles.min-eC5xdOrB.js +133 -0
- package/dist/browser/react-DqPP-mkq.js +301 -0
- package/dist/browser/react-dom-BkVzoZWO.js +139 -0
- package/dist/browser/rolldown-runtime-DUb2xvRc.js +28 -0
- package/dist/browser/scheduler-NBuuaWIe.js +212 -0
- package/dist/browser/select-Cxf-YiNA.js +1367 -0
- package/dist/browser/settings-D74eG9h8.js +9 -0
- package/dist/browser/settings-item-DUUbKec_.js +76 -0
- package/dist/browser/store-q_CTsixH.js +58 -0
- package/dist/browser/string-editor-CINOmY_C.js +30 -0
- package/dist/browser/text-field-DORaOVht.js +88 -0
- package/dist/browser/theme-DyFm9MGz.js +2803 -0
- package/dist/browser/ui-DsCU3FV6.js +43 -0
- package/dist/browser/useRenderTarget-RFckzUJM.js +57 -0
- package/dist/browser/vendor/perfect-scrollbar/css/perfect-scrollbar.css +1 -0
- package/dist/browser/vendor/sanitize-css/sanitize.css +1 -0
- package/dist/browser/venue-public-BA3x-n4N.js +296 -0
- package/dist/browser/venues-DKpIy-87.js +447 -0
- package/dist/browser/viewport-B7plho3P.js +48 -0
- package/dist/browser/warning.png +0 -0
- package/dist/esm/_misc_to_move/initHtmlHead.d.ts +2 -0
- package/dist/esm/_misc_to_move/initHtmlHead.js +34 -0
- package/dist/esm/_misc_to_move/logBuildInfo.d.ts +2 -0
- package/dist/esm/_misc_to_move/logBuildInfo.js +35 -0
- package/dist/esm/_misc_to_move/logDeviceInfo.d.ts +10 -0
- package/dist/esm/_misc_to_move/logDeviceInfo.js +84 -0
- package/dist/esm/components/AlertContainer.d.ts +4 -0
- package/dist/esm/components/AlertContainer.js +8 -0
- package/dist/esm/components/AutocompleteContainer.d.ts +4 -0
- package/dist/esm/components/AutocompleteContainer.js +14 -0
- package/dist/esm/components/BaseFilterModal.d.ts +11 -0
- package/dist/esm/components/BaseFilterModal.js +73 -0
- package/dist/esm/components/Bookmarks.d.ts +3 -0
- package/dist/esm/components/Bookmarks.js +26 -0
- package/dist/esm/components/Booth/Booth.d.ts +5 -0
- package/dist/esm/components/Booth/Booth.js +135 -0
- package/dist/esm/components/Booth/BoothOnHold.d.ts +13 -0
- package/dist/esm/components/Booth/BoothOnHold.js +11 -0
- package/dist/esm/components/Booth/BoothReserved.d.ts +3 -0
- package/dist/esm/components/Booth/BoothReserved.js +7 -0
- package/dist/esm/components/Booth/BoothSpecial.d.ts +8 -0
- package/dist/esm/components/Booth/BoothSpecial.js +4 -0
- package/dist/esm/components/Booth/BoothWithoutExhibitor.d.ts +13 -0
- package/dist/esm/components/Booth/BoothWithoutExhibitor.js +29 -0
- package/dist/esm/components/Category.d.ts +5 -0
- package/dist/esm/components/Category.js +25 -0
- package/dist/esm/components/CategoryFilterModal.d.ts +3 -0
- package/dist/esm/components/CategoryFilterModal.js +63 -0
- package/dist/esm/components/CookieConsent.d.ts +9 -0
- package/dist/esm/components/CookieConsent.js +9 -0
- package/dist/esm/components/Debug.d.ts +5 -0
- package/dist/esm/components/Debug.js +15 -0
- package/dist/esm/components/Demo.d.ts +4 -0
- package/dist/esm/components/Demo.js +37 -0
- package/dist/esm/components/DownloadListContainer.d.ts +5 -0
- package/dist/esm/components/DownloadListContainer.js +8 -0
- package/dist/esm/components/EntityItemContainer.d.ts +28 -0
- package/dist/esm/components/EntityItemContainer.js +36 -0
- package/dist/esm/components/EntityList.d.ts +9 -0
- package/dist/esm/components/EntityList.js +144 -0
- package/dist/esm/components/EntityListRow.d.ts +13 -0
- package/dist/esm/components/EntityListRow.js +78 -0
- package/dist/esm/components/ErrorBoundary.d.ts +15 -0
- package/dist/esm/components/ErrorBoundary.js +29 -0
- package/dist/esm/components/Event.d.ts +5 -0
- package/dist/esm/components/Event.js +167 -0
- package/dist/esm/components/EventBadgeContainer.d.ts +8 -0
- package/dist/esm/components/EventBadgeContainer.js +29 -0
- package/dist/esm/components/Exhibitor.d.ts +5 -0
- package/dist/esm/components/Exhibitor.js +299 -0
- package/dist/esm/components/Filter.d.ts +4 -0
- package/dist/esm/components/Filter.js +24 -0
- package/dist/esm/components/Free.d.ts +4 -0
- package/dist/esm/components/Free.js +31 -0
- package/dist/esm/components/GalleryContainer.d.ts +6 -0
- package/dist/esm/components/GalleryContainer.js +55 -0
- package/dist/esm/components/GlobalErrorMessage.d.ts +4 -0
- package/dist/esm/components/GlobalErrorMessage.js +9 -0
- package/dist/esm/components/GpsLoader.d.ts +5 -0
- package/dist/esm/components/GpsLoader.js +29 -0
- package/dist/esm/components/HeatmapLegendContainer.d.ts +5 -0
- package/dist/esm/components/HeatmapLegendContainer.js +13 -0
- package/dist/esm/components/HighlightTextContainer.d.ts +6 -0
- package/dist/esm/components/HighlightTextContainer.js +10 -0
- package/dist/esm/components/IntercomLauncher.d.ts +5 -0
- package/dist/esm/components/IntercomLauncher.js +20 -0
- package/dist/esm/components/JourneyPanel.d.ts +35 -0
- package/dist/esm/components/JourneyPanel.js +68 -0
- package/dist/esm/components/Kiosk/KioskStore.d.ts +60 -0
- package/dist/esm/components/Kiosk/KioskStore.js +411 -0
- package/dist/esm/components/Kiosk/SetKiosk/Confirm/ConfirmDialog.d.ts +5 -0
- package/dist/esm/components/Kiosk/SetKiosk/Confirm/ConfirmDialog.js +8 -0
- package/dist/esm/components/Kiosk/SetKiosk/FormInput/RangeInput.d.ts +5 -0
- package/dist/esm/components/Kiosk/SetKiosk/FormInput/RangeInput.js +24 -0
- package/dist/esm/components/Kiosk/SetKiosk/Message/InfoMessage.d.ts +5 -0
- package/dist/esm/components/Kiosk/SetKiosk/Message/InfoMessage.js +7 -0
- package/dist/esm/components/Kiosk/SetKiosk/SetKioskComponent.d.ts +5 -0
- package/dist/esm/components/Kiosk/SetKiosk/SetKioskComponent.js +78 -0
- package/dist/esm/components/Kiosk/SetKiosk/SetKioskForm.d.ts +5 -0
- package/dist/esm/components/Kiosk/SetKiosk/SetKioskForm.js +10 -0
- package/dist/esm/components/Kiosk/SetKiosk/SetKioskStatusMessages.d.ts +5 -0
- package/dist/esm/components/Kiosk/SetKiosk/SetKioskStatusMessages.js +15 -0
- package/dist/esm/components/Kiosk/SetKiosk/constants.d.ts +6 -0
- package/dist/esm/components/Kiosk/SetKiosk/constants.js +6 -0
- package/dist/esm/components/Kiosk/SetKiosk/getKioskUrlParamKey.d.ts +2 -0
- package/dist/esm/components/Kiosk/SetKiosk/getKioskUrlParamKey.js +4 -0
- package/dist/esm/components/Kiosk/SetKiosk/getName.d.ts +2 -0
- package/dist/esm/components/Kiosk/SetKiosk/getName.js +2 -0
- package/dist/esm/components/Kiosk/SetKiosk/getSlug.d.ts +2 -0
- package/dist/esm/components/Kiosk/SetKiosk/getSlug.js +2 -0
- package/dist/esm/components/Kiosk/SetKiosk/index.d.ts +7 -0
- package/dist/esm/components/Kiosk/SetKiosk/index.js +6 -0
- package/dist/esm/components/Kiosk/SetKiosk/storage.d.ts +5 -0
- package/dist/esm/components/Kiosk/SetKiosk/storage.js +21 -0
- package/dist/esm/components/Kiosk/SetKiosk/types.d.ts +109 -0
- package/dist/esm/components/Kiosk/SetKiosk/types.js +1 -0
- package/dist/esm/components/Kiosk/SetKioskMode.d.ts +3 -0
- package/dist/esm/components/Kiosk/SetKioskMode.js +35 -0
- package/dist/esm/components/Kiosk/ShowKiosk.d.ts +3 -0
- package/dist/esm/components/Kiosk/ShowKiosk.js +72 -0
- package/dist/esm/components/Kiosk/integrateKiosk.d.ts +10 -0
- package/dist/esm/components/Kiosk/integrateKiosk.js +68 -0
- package/dist/esm/components/Kiosk/kiosk-mode.d.ts +26 -0
- package/dist/esm/components/Kiosk/kiosk-mode.js +56 -0
- package/dist/esm/components/Kiosk/kiosk-record.d.ts +23 -0
- package/dist/esm/components/Kiosk/kiosk-record.js +29 -0
- package/dist/esm/components/Kiosk/kioskApi.d.ts +4 -0
- package/dist/esm/components/Kiosk/kioskApi.js +47 -0
- package/dist/esm/components/Kiosk/kioskUrlParam.d.ts +8 -0
- package/dist/esm/components/Kiosk/kioskUrlParam.js +46 -0
- package/dist/esm/components/Kiosk/recoverKioskFromUrlPrams.d.ts +2 -0
- package/dist/esm/components/Kiosk/recoverKioskFromUrlPrams.js +9 -0
- package/dist/esm/components/Language.d.ts +4 -0
- package/dist/esm/components/Language.js +15 -0
- package/dist/esm/components/LanguageRowContainer.d.ts +7 -0
- package/dist/esm/components/LanguageRowContainer.js +9 -0
- package/dist/esm/components/Layout.d.ts +11 -0
- package/dist/esm/components/Layout.js +160 -0
- package/dist/esm/components/LevelBadgeContainer.d.ts +6 -0
- package/dist/esm/components/LevelBadgeContainer.js +10 -0
- package/dist/esm/components/List.d.ts +9 -0
- package/dist/esm/components/List.js +77 -0
- package/dist/esm/components/LogoOverlay.d.ts +3 -0
- package/dist/esm/components/LogoOverlay.js +78 -0
- package/dist/esm/components/Map/Map.d.ts +2 -0
- package/dist/esm/components/Map/Map.js +242 -0
- package/dist/esm/components/Map/MapCamera.d.ts +17 -0
- package/dist/esm/components/Map/MapCamera.js +194 -0
- package/dist/esm/components/Map/MapCursorCoords.d.ts +13 -0
- package/dist/esm/components/Map/MapCursorCoords.js +61 -0
- package/dist/esm/components/Map/MapViewport.d.ts +12 -0
- package/dist/esm/components/Map/MapViewport.js +29 -0
- package/dist/esm/components/Map/booth-by-xy.d.ts +14 -0
- package/dist/esm/components/Map/booth-by-xy.js +128 -0
- package/dist/esm/components/Map/camera-events.d.ts +19 -0
- package/dist/esm/components/Map/camera-events.js +26 -0
- package/dist/esm/components/Map/camera.d.ts +48 -0
- package/dist/esm/components/Map/camera.js +43 -0
- package/dist/esm/components/Map/drawing/config/BoothDrawerBase.d.ts +8 -0
- package/dist/esm/components/Map/drawing/config/BoothDrawerBase.js +8 -0
- package/dist/esm/components/Map/drawing/config/BoothShape.d.ts +7 -0
- package/dist/esm/components/Map/drawing/config/BoothShape.js +76 -0
- package/dist/esm/components/Map/drawing/config/TextFitter.d.ts +11 -0
- package/dist/esm/components/Map/drawing/config/TextFitter.js +174 -0
- package/dist/esm/components/Map/drawing/config/booth-badge-anchor.d.ts +130 -0
- package/dist/esm/components/Map/drawing/config/booth-badge-anchor.js +306 -0
- package/dist/esm/components/Map/drawing/config/booth-logos.d.ts +38 -0
- package/dist/esm/components/Map/drawing/config/booth-logos.js +94 -0
- package/dist/esm/components/Map/drawing/config/canvases.d.ts +96 -0
- package/dist/esm/components/Map/drawing/config/canvases.js +434 -0
- package/dist/esm/components/Map/drawing/config/config-all.d.ts +6 -0
- package/dist/esm/components/Map/drawing/config/config-all.js +92 -0
- package/dist/esm/components/Map/drawing/config/config-bg.d.ts +8 -0
- package/dist/esm/components/Map/drawing/config/config-bg.js +54 -0
- package/dist/esm/components/Map/drawing/config/config-booth-badge-eligibility.d.ts +28 -0
- package/dist/esm/components/Map/drawing/config/config-booth-badge-eligibility.js +7 -0
- package/dist/esm/components/Map/drawing/config/config-booth-badge-scale.d.ts +20 -0
- package/dist/esm/components/Map/drawing/config/config-booth-badge-scale.js +11 -0
- package/dist/esm/components/Map/drawing/config/config-booth-badge-visibility.d.ts +37 -0
- package/dist/esm/components/Map/drawing/config/config-booth-badge-visibility.js +3 -0
- package/dist/esm/components/Map/drawing/config/config-booth-badge.d.ts +90 -0
- package/dist/esm/components/Map/drawing/config/config-booth-badge.js +326 -0
- package/dist/esm/components/Map/drawing/config/config-booth-bg.d.ts +33 -0
- package/dist/esm/components/Map/drawing/config/config-booth-bg.js +240 -0
- package/dist/esm/components/Map/drawing/config/config-booth-bookmark.d.ts +24 -0
- package/dist/esm/components/Map/drawing/config/config-booth-bookmark.js +65 -0
- package/dist/esm/components/Map/drawing/config/config-booth-border.d.ts +12 -0
- package/dist/esm/components/Map/drawing/config/config-booth-border.js +92 -0
- package/dist/esm/components/Map/drawing/config/config-booth-labels-special.d.ts +28 -0
- package/dist/esm/components/Map/drawing/config/config-booth-labels-special.js +147 -0
- package/dist/esm/components/Map/drawing/config/config-booth-labels.d.ts +63 -0
- package/dist/esm/components/Map/drawing/config/config-booth-labels.js +380 -0
- package/dist/esm/components/Map/drawing/config/config-booths.d.ts +5 -0
- package/dist/esm/components/Map/drawing/config/config-booths.js +152 -0
- package/dist/esm/components/Map/drawing/config/config-load-layer.d.ts +4 -0
- package/dist/esm/components/Map/drawing/config/config-load-layer.js +119 -0
- package/dist/esm/components/Map/drawing/config/config-markers.d.ts +42 -0
- package/dist/esm/components/Map/drawing/config/config-markers.js +278 -0
- package/dist/esm/components/Map/drawing/config/config-outdoor-poi.d.ts +19 -0
- package/dist/esm/components/Map/drawing/config/config-outdoor-poi.js +96 -0
- package/dist/esm/components/Map/drawing/config/config-pins.d.ts +40 -0
- package/dist/esm/components/Map/drawing/config/config-pins.js +533 -0
- package/dist/esm/components/Map/drawing/config/label-inset.d.ts +26 -0
- package/dist/esm/components/Map/drawing/config/label-inset.js +26 -0
- package/dist/esm/components/Map/drawing/config/layer-images.d.ts +24 -0
- package/dist/esm/components/Map/drawing/config/layer-images.js +32 -0
- package/dist/esm/components/Map/drawing/config/layer-models.d.ts +31 -0
- package/dist/esm/components/Map/drawing/config/layer-models.js +38 -0
- package/dist/esm/components/Map/drawing/config/loadBoothsImages.d.ts +45 -0
- package/dist/esm/components/Map/drawing/config/loadBoothsImages.js +99 -0
- package/dist/esm/components/Map/drawing/config/pin-geometry.d.ts +65 -0
- package/dist/esm/components/Map/drawing/config/pin-geometry.js +75 -0
- package/dist/esm/components/Map/drawing/config/poi-pin-shape.d.ts +100 -0
- package/dist/esm/components/Map/drawing/config/poi-pin-shape.js +51 -0
- package/dist/esm/components/Map/drawing/config/poi-pin.d.ts +10 -0
- package/dist/esm/components/Map/drawing/config/poi-pin.js +88 -0
- package/dist/esm/components/Map/drawing/config/selection-style.d.ts +12 -0
- package/dist/esm/components/Map/drawing/config/selection-style.js +18 -0
- package/dist/esm/components/Map/framing-rect.d.ts +16 -0
- package/dist/esm/components/Map/framing-rect.js +24 -0
- package/dist/esm/components/Map/pointer.d.ts +79 -0
- package/dist/esm/components/Map/pointer.js +181 -0
- package/dist/esm/components/Map/scene.d.ts +20 -0
- package/dist/esm/components/Map/scene.js +24 -0
- package/dist/esm/components/Map/traffic/UpdateQueue.d.ts +13 -0
- package/dist/esm/components/Map/traffic/UpdateQueue.js +82 -0
- package/dist/esm/components/Map/traffic/trafficLayers.d.ts +12 -0
- package/dist/esm/components/Map/traffic/trafficLayers.js +29 -0
- package/dist/esm/components/Map/traffic/useBuildRoute.d.ts +9 -0
- package/dist/esm/components/Map/traffic/useBuildRoute.js +359 -0
- package/dist/esm/components/Map/traffic/useManageTraffic.d.ts +10 -0
- package/dist/esm/components/Map/traffic/useManageTraffic.js +643 -0
- package/dist/esm/components/Map/viewport.d.ts +63 -0
- package/dist/esm/components/Map/viewport.js +82 -0
- package/dist/esm/components/Map/with-kiosk.d.ts +11 -0
- package/dist/esm/components/Map/with-kiosk.js +25 -0
- package/dist/esm/components/MapControlsContainer.d.ts +3 -0
- package/dist/esm/components/MapControlsContainer.js +58 -0
- package/dist/esm/components/Maplibre/CollapsedAttributionControl.d.ts +12 -0
- package/dist/esm/components/Maplibre/CollapsedAttributionControl.js +19 -0
- package/dist/esm/components/Maplibre/ExpofpLogoControl.d.ts +20 -0
- package/dist/esm/components/Maplibre/ExpofpLogoControl.js +39 -0
- package/dist/esm/components/Maplibre/MaplibreAdapter.d.ts +18 -0
- package/dist/esm/components/Maplibre/MaplibreAdapter.js +354 -0
- package/dist/esm/components/Maplibre/MaplibreWrapper.d.ts +111 -0
- package/dist/esm/components/Maplibre/MaplibreWrapper.js +310 -0
- package/dist/esm/components/Maplibre/maplibre-recovery.d.ts +4 -0
- package/dist/esm/components/Maplibre/maplibre-recovery.js +4 -0
- package/dist/esm/components/Maplibre/styles/mapbox-streets-bright.d.ts +3 -0
- package/dist/esm/components/Maplibre/styles/mapbox-streets-bright.js +7048 -0
- package/dist/esm/components/Maplibre/styles/mapbox-streets.d.ts +3 -0
- package/dist/esm/components/Maplibre/styles/mapbox-streets.js +6132 -0
- package/dist/esm/components/Maplibre/useCameraReactions.d.ts +14 -0
- package/dist/esm/components/Maplibre/useCameraReactions.js +256 -0
- package/dist/esm/components/Maplibre/useDimming.d.ts +25 -0
- package/dist/esm/components/Maplibre/useDimming.js +61 -0
- package/dist/esm/components/Maplibre/useJourneyConnector.d.ts +16 -0
- package/dist/esm/components/Maplibre/useJourneyConnector.js +175 -0
- package/dist/esm/components/Maplibre/useKioskCameraEvents.d.ts +20 -0
- package/dist/esm/components/Maplibre/useKioskCameraEvents.js +52 -0
- package/dist/esm/components/Maplibre/useLayerVisibilitySync.d.ts +25 -0
- package/dist/esm/components/Maplibre/useLayerVisibilitySync.js +85 -0
- package/dist/esm/components/Maplibre/usePoiMarkers.d.ts +25 -0
- package/dist/esm/components/Maplibre/usePoiMarkers.js +368 -0
- package/dist/esm/components/Maplibre/useVenueCameraTracking.d.ts +6 -0
- package/dist/esm/components/Maplibre/useVenueCameraTracking.js +115 -0
- package/dist/esm/components/Maplibre/useVenueLayers.d.ts +15 -0
- package/dist/esm/components/Maplibre/useVenueLayers.js +463 -0
- package/dist/esm/components/Maplibre/useWayfindingAndMarkers.d.ts +11 -0
- package/dist/esm/components/Maplibre/useWayfindingAndMarkers.js +23 -0
- package/dist/esm/components/Maplibre/utils/basemap-palette.d.ts +19 -0
- package/dist/esm/components/Maplibre/utils/basemap-palette.js +125 -0
- package/dist/esm/components/Maplibre/utils/geo-config.d.ts +92 -0
- package/dist/esm/components/Maplibre/utils/geo-config.js +305 -0
- package/dist/esm/components/Maplibre/utils/hit-test-registry.d.ts +18 -0
- package/dist/esm/components/Maplibre/utils/hit-test-registry.js +17 -0
- package/dist/esm/components/Maplibre/utils/layer-defs.d.ts +9 -0
- package/dist/esm/components/Maplibre/utils/layer-defs.js +19 -0
- package/dist/esm/components/Maplibre/utils/local-viewport.d.ts +13 -0
- package/dist/esm/components/Maplibre/utils/local-viewport.js +31 -0
- package/dist/esm/components/Maplibre/utils/map-helpers.d.ts +21 -0
- package/dist/esm/components/Maplibre/utils/map-helpers.js +85 -0
- package/dist/esm/components/Maplibre/utils/map-theme.d.ts +20 -0
- package/dist/esm/components/Maplibre/utils/map-theme.js +44 -0
- package/dist/esm/components/Maplibre/utils/marker-layer-order.d.ts +22 -0
- package/dist/esm/components/Maplibre/utils/marker-layer-order.js +20 -0
- package/dist/esm/components/Maplibre/utils/pmtiles-range-fallback.d.ts +53 -0
- package/dist/esm/components/Maplibre/utils/pmtiles-range-fallback.js +110 -0
- package/dist/esm/components/Maplibre/utils/poi-marker-hit-test.d.ts +8 -0
- package/dist/esm/components/Maplibre/utils/poi-marker-hit-test.js +8 -0
- package/dist/esm/components/Maplibre/utils/resolve-map-style.d.ts +19 -0
- package/dist/esm/components/Maplibre/utils/resolve-map-style.js +73 -0
- package/dist/esm/components/Maplibre/utils/solver.d.ts +23 -0
- package/dist/esm/components/Maplibre/utils/solver.js +238 -0
- package/dist/esm/components/Maplibre/utils/style-fonts.d.ts +10 -0
- package/dist/esm/components/Maplibre/utils/style-fonts.js +24 -0
- package/dist/esm/components/Maplibre/utils/venue-calibration-console.d.ts +10 -0
- package/dist/esm/components/Maplibre/utils/venue-calibration-console.js +130 -0
- package/dist/esm/components/Maplibre/utils/venue-calibration.d.ts +127 -0
- package/dist/esm/components/Maplibre/utils/venue-calibration.js +144 -0
- package/dist/esm/components/Maplibre/utils/venue-camera-target.d.ts +15 -0
- package/dist/esm/components/Maplibre/utils/venue-camera-target.js +19 -0
- package/dist/esm/components/Maplibre/utils/venue-contour.d.ts +50 -0
- package/dist/esm/components/Maplibre/utils/venue-contour.fixture.d.ts +18 -0
- package/dist/esm/components/Maplibre/utils/venue-contour.fixture.js +69 -0
- package/dist/esm/components/Maplibre/utils/venue-contour.js +188 -0
- package/dist/esm/components/Maplibre/utils/venue-focus.d.ts +26 -0
- package/dist/esm/components/Maplibre/utils/venue-focus.js +106 -0
- package/dist/esm/components/Maplibre/utils/venue-legibility.d.ts +30 -0
- package/dist/esm/components/Maplibre/utils/venue-legibility.js +52 -0
- package/dist/esm/components/Maplibre/utils/venue-pin-rasterize.d.ts +88 -0
- package/dist/esm/components/Maplibre/utils/venue-pin-rasterize.js +220 -0
- package/dist/esm/components/Maplibre/utils/venue-projection.d.ts +37 -0
- package/dist/esm/components/Maplibre/utils/venue-projection.js +88 -0
- package/dist/esm/components/Maplibre/utils/venue-tap-hit-test.d.ts +9 -0
- package/dist/esm/components/Maplibre/utils/venue-tap-hit-test.js +9 -0
- package/dist/esm/components/Maplibre/utils/venue-viewport-detail.d.ts +19 -0
- package/dist/esm/components/Maplibre/utils/venue-viewport-detail.js +24 -0
- package/dist/esm/components/Maplibre/utils/venue-zoom.d.ts +23 -0
- package/dist/esm/components/Maplibre/utils/venue-zoom.js +62 -0
- package/dist/esm/components/Menu.d.ts +11 -0
- package/dist/esm/components/Menu.js +94 -0
- package/dist/esm/components/MobileToggleButtonContainer.d.ts +3 -0
- package/dist/esm/components/MobileToggleButtonContainer.js +24 -0
- package/dist/esm/components/ModalContainer.d.ts +41 -0
- package/dist/esm/components/ModalContainer.js +10 -0
- package/dist/esm/components/MultiSelectGroupsContainer.d.ts +5 -0
- package/dist/esm/components/MultiSelectGroupsContainer.js +8 -0
- package/dist/esm/components/OverlayContainer.d.ts +8 -0
- package/dist/esm/components/OverlayContainer.js +82 -0
- package/dist/esm/components/OverlayGripContainer.d.ts +4 -0
- package/dist/esm/components/OverlayGripContainer.js +11 -0
- package/dist/esm/components/OverlayParticles.d.ts +5 -0
- package/dist/esm/components/OverlayParticles.js +54 -0
- package/dist/esm/components/PlanSelectorContainer.d.ts +3 -0
- package/dist/esm/components/PlanSelectorContainer.js +79 -0
- package/dist/esm/components/RebookingNotesContainer.d.ts +4 -0
- package/dist/esm/components/RebookingNotesContainer.js +8 -0
- package/dist/esm/components/RebookingRadioGroupContainer.d.ts +6 -0
- package/dist/esm/components/RebookingRadioGroupContainer.js +23 -0
- package/dist/esm/components/RoutePlanner/RoutePlanner.d.ts +5 -0
- package/dist/esm/components/RoutePlanner/RoutePlanner.js +25 -0
- package/dist/esm/components/RoutePlanner/RoutePlannerHeader.d.ts +4 -0
- package/dist/esm/components/RoutePlanner/RoutePlannerHeader.js +11 -0
- package/dist/esm/components/RoutePlanner/RoutePlannerStartPoint.d.ts +9 -0
- package/dist/esm/components/RoutePlanner/RoutePlannerStartPoint.js +21 -0
- package/dist/esm/components/RoutePlanner/RoutePlannerStopItem.d.ts +9 -0
- package/dist/esm/components/RoutePlanner/RoutePlannerStopItem.js +41 -0
- package/dist/esm/components/RouteQR.d.ts +12 -0
- package/dist/esm/components/RouteQR.js +10 -0
- package/dist/esm/components/Schedule.d.ts +13 -0
- package/dist/esm/components/Schedule.js +109 -0
- package/dist/esm/components/ScrollableRowContainer.d.ts +6 -0
- package/dist/esm/components/ScrollableRowContainer.js +11 -0
- package/dist/esm/components/Search.d.ts +5 -0
- package/dist/esm/components/Search.js +45 -0
- package/dist/esm/components/SearchBox.d.ts +7 -0
- package/dist/esm/components/SearchBox.js +171 -0
- package/dist/esm/components/SearchButtons/SearchButton.d.ts +20 -0
- package/dist/esm/components/SearchButtons/SearchButton.js +30 -0
- package/dist/esm/components/SearchButtons/SearchButtons.d.ts +4 -0
- package/dist/esm/components/SearchButtons/SearchButtons.js +25 -0
- package/dist/esm/components/SearchButtons/SearchSubButton.d.ts +14 -0
- package/dist/esm/components/SearchButtons/SearchSubButton.js +12 -0
- package/dist/esm/components/SearchButtons/SearchSubButtons.d.ts +5 -0
- package/dist/esm/components/SearchButtons/SearchSubButtons.js +43 -0
- package/dist/esm/components/SearchButtons/index.d.ts +7 -0
- package/dist/esm/components/SearchButtons/index.js +5 -0
- package/dist/esm/components/Sessions.d.ts +8 -0
- package/dist/esm/components/Sessions.js +128 -0
- package/dist/esm/components/SessionsFiltersModal.d.ts +11 -0
- package/dist/esm/components/SessionsFiltersModal.js +105 -0
- package/dist/esm/components/SessionsList.d.ts +12 -0
- package/dist/esm/components/SessionsList.js +212 -0
- package/dist/esm/components/ShareContainer.d.ts +7 -0
- package/dist/esm/components/ShareContainer.js +29 -0
- package/dist/esm/components/Shortcuts/ShortcutButton.d.ts +9 -0
- package/dist/esm/components/Shortcuts/ShortcutButton.js +25 -0
- package/dist/esm/components/Shortcuts/ShortcutsFiltersButton.d.ts +9 -0
- package/dist/esm/components/Shortcuts/ShortcutsFiltersButton.js +41 -0
- package/dist/esm/components/Shortcuts/ShortcutsToolbar.d.ts +10 -0
- package/dist/esm/components/Shortcuts/ShortcutsToolbar.js +22 -0
- package/dist/esm/components/Shortcuts/index.d.ts +4 -0
- package/dist/esm/components/Shortcuts/index.js +4 -0
- package/dist/esm/components/ShowMoreButtonContainer.d.ts +5 -0
- package/dist/esm/components/ShowMoreButtonContainer.js +8 -0
- package/dist/esm/components/SidebarActionsContainer.d.ts +5 -0
- package/dist/esm/components/SidebarActionsContainer.js +8 -0
- package/dist/esm/components/SimpleRowContainer.d.ts +8 -0
- package/dist/esm/components/SimpleRowContainer.js +8 -0
- package/dist/esm/components/Speaker.d.ts +5 -0
- package/dist/esm/components/Speaker.js +72 -0
- package/dist/esm/components/Speakers.d.ts +8 -0
- package/dist/esm/components/Speakers.js +63 -0
- package/dist/esm/components/SpeakersFiltersModal.d.ts +11 -0
- package/dist/esm/components/SpeakersFiltersModal.js +77 -0
- package/dist/esm/components/TourPoints.d.ts +4 -0
- package/dist/esm/components/TourPoints.js +20 -0
- package/dist/esm/components/Tours.d.ts +7 -0
- package/dist/esm/components/Tours.js +54 -0
- package/dist/esm/components/ToursList.d.ts +10 -0
- package/dist/esm/components/ToursList.js +22 -0
- package/dist/esm/components/ViewerMenuPanel.d.ts +5 -0
- package/dist/esm/components/ViewerMenuPanel.js +61 -0
- package/dist/esm/components/Visited.d.ts +4 -0
- package/dist/esm/components/Visited.js +13 -0
- package/dist/esm/components/WayInformation.d.ts +14 -0
- package/dist/esm/components/WayInformation.js +8 -0
- package/dist/esm/components/Wayfinding.d.ts +4 -0
- package/dist/esm/components/Wayfinding.js +285 -0
- package/dist/esm/components/WayfindingFloorSelectorContainer.d.ts +5 -0
- package/dist/esm/components/WayfindingFloorSelectorContainer.js +12 -0
- package/dist/esm/components/WayfindingTemplate.d.ts +66 -0
- package/dist/esm/components/WayfindingTemplate.js +14 -0
- package/dist/esm/components/Ws.d.ts +5 -0
- package/dist/esm/components/Ws.js +131 -0
- package/dist/esm/components/YahRow.d.ts +8 -0
- package/dist/esm/components/YahRow.js +25 -0
- package/dist/esm/components/gps/GpsManager.d.ts +13 -0
- package/dist/esm/components/gps/GpsManager.js +60 -0
- package/dist/esm/components/gps/GpsPermissionRequest.d.ts +8 -0
- package/dist/esm/components/gps/GpsPermissionRequest.js +10 -0
- package/dist/esm/components/gps/index.d.ts +5 -0
- package/dist/esm/components/gps/index.js +3 -0
- package/dist/esm/components/gps/types.d.ts +7 -0
- package/dist/esm/components/gps/types.js +1 -0
- package/dist/esm/components/gps/useUserLocationAndHeading.d.ts +8 -0
- package/dist/esm/components/gps/useUserLocationAndHeading.js +122 -0
- package/dist/esm/components/gps/utils.d.ts +5 -0
- package/dist/esm/components/gps/utils.js +11 -0
- package/dist/esm/components/heatmap-legend-ticks.d.ts +11 -0
- package/dist/esm/components/heatmap-legend-ticks.js +18 -0
- package/dist/esm/components/index.d.ts +114 -0
- package/dist/esm/components/index.js +76 -0
- package/dist/esm/components/utils/entity-venue-grouping.d.ts +32 -0
- package/dist/esm/components/utils/entity-venue-grouping.js +43 -0
- package/dist/esm/components/utils/getDescription.d.ts +19 -0
- package/dist/esm/components/utils/getDescription.js +35 -0
- package/dist/esm/constants.d.ts +44 -0
- package/dist/esm/constants.js +66 -0
- package/dist/esm/data/fp-payloads.d.ts +27 -0
- package/dist/esm/data/fp-payloads.js +53 -0
- package/dist/esm/data/fpGeo.d.ts +45 -0
- package/dist/esm/data/fpGeo.js +9 -0
- package/dist/esm/data/index.d.ts +15 -0
- package/dist/esm/data/index.js +15 -0
- package/dist/esm/data/layer-viewbox.d.ts +10 -0
- package/dist/esm/data/layer-viewbox.js +20 -0
- package/dist/esm/data/svg.d.ts +43 -0
- package/dist/esm/data/svg.js +210 -0
- package/dist/esm/data/tours.json +280 -0
- package/dist/esm/data/venue-scene-preload.d.ts +34 -0
- package/dist/esm/data/venue-scene-preload.js +205 -0
- package/dist/esm/data/venues.d.ts +145 -0
- package/dist/esm/data/venues.js +955 -0
- package/dist/esm/engine/defs.d.ts +38 -0
- package/dist/esm/engine/defs.js +85 -0
- package/dist/esm/engine/fonts.d.ts +9 -0
- package/dist/esm/engine/fonts.js +12 -0
- package/dist/esm/engine/update-def.d.ts +55 -0
- package/dist/esm/engine/update-def.js +127 -0
- package/dist/esm/engine/utils/rotation.d.ts +13 -0
- package/dist/esm/engine/utils/rotation.js +73 -0
- package/dist/esm/floorplan.loader.d.ts +164 -0
- package/dist/esm/floorplan.loader.js +540 -0
- package/dist/esm/floorplan.ready.d.ts +149 -0
- package/dist/esm/floorplan.ready.js +1083 -0
- package/dist/esm/hooks/useURLFilters.d.ts +15 -0
- package/dist/esm/hooks/useURLFilters.js +44 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +12 -0
- package/dist/esm/intercom/bootIntercom.d.ts +3 -0
- package/dist/esm/intercom/bootIntercom.js +47 -0
- package/dist/esm/intercom/index.d.ts +3 -0
- package/dist/esm/intercom/index.js +1 -0
- package/dist/esm/intercom/shouldLoad.d.ts +4 -0
- package/dist/esm/intercom/shouldLoad.js +74 -0
- package/dist/esm/intercom/types.d.ts +6 -0
- package/dist/esm/intercom/types.js +1 -0
- package/dist/esm/internal-settings.d.ts +13 -0
- package/dist/esm/internal-settings.js +6 -0
- package/dist/esm/journey/external-navigation.d.ts +30 -0
- package/dist/esm/journey/external-navigation.js +38 -0
- package/dist/esm/journey/format-distance.d.ts +14 -0
- package/dist/esm/journey/format-distance.js +38 -0
- package/dist/esm/journey/index.d.ts +16 -0
- package/dist/esm/journey/index.js +15 -0
- package/dist/esm/journey/journey-context.d.ts +140 -0
- package/dist/esm/journey/journey-context.js +137 -0
- package/dist/esm/journey/journey-link.d.ts +49 -0
- package/dist/esm/journey/journey-link.js +35 -0
- package/dist/esm/journey/journey-stage.d.ts +35 -0
- package/dist/esm/journey/journey-stage.js +28 -0
- package/dist/esm/journey/maps-provider.d.ts +36 -0
- package/dist/esm/journey/maps-provider.js +58 -0
- package/dist/esm/journey/plan-journey.d.ts +37 -0
- package/dist/esm/journey/plan-journey.js +176 -0
- package/dist/esm/journey/types.d.ts +294 -0
- package/dist/esm/journey/types.js +1 -0
- package/dist/esm/load-dev.d.ts +44 -0
- package/dist/esm/load-dev.js +60 -0
- package/dist/esm/load.d.ts +17 -0
- package/dist/esm/load.js +244 -0
- package/dist/esm/locales.d.ts +25 -0
- package/dist/esm/locales.js +23 -0
- package/dist/esm/offline/constants.d.ts +5 -0
- package/dist/esm/offline/constants.js +4 -0
- package/dist/esm/offline/offlineManager.d.ts +2 -0
- package/dist/esm/offline/offlineManager.js +78 -0
- package/dist/esm/plan-lifecycle.d.ts +65 -0
- package/dist/esm/plan-lifecycle.js +97 -0
- package/dist/esm/schemas/sdk.schemas.d.ts +25 -0
- package/dist/esm/schemas/sdk.schemas.js +24 -0
- package/dist/esm/services/URLFilterManager.d.ts +39 -0
- package/dist/esm/services/URLFilterManager.js +379 -0
- package/dist/esm/services/multi-slug.d.ts +20 -0
- package/dist/esm/services/multi-slug.js +30 -0
- package/dist/esm/services/url-dispatch.d.ts +22 -0
- package/dist/esm/services/url-dispatch.js +707 -0
- package/dist/esm/services/url-sync.d.ts +40 -0
- package/dist/esm/services/url-sync.js +185 -0
- package/dist/esm/store/BaseFilterStore.d.ts +17 -0
- package/dist/esm/store/BaseFilterStore.js +63 -0
- package/dist/esm/store/BookmarksStore.d.ts +9 -0
- package/dist/esm/store/BookmarksStore.js +28 -0
- package/dist/esm/store/BoothStore.d.ts +105 -0
- package/dist/esm/store/BoothStore.js +194 -0
- package/dist/esm/store/CategoryFilterStore.d.ts +13 -0
- package/dist/esm/store/CategoryFilterStore.js +60 -0
- package/dist/esm/store/CategoryStore.d.ts +21 -0
- package/dist/esm/store/CategoryStore.js +30 -0
- package/dist/esm/store/EventStore.d.ts +56 -0
- package/dist/esm/store/EventStore.js +188 -0
- package/dist/esm/store/ExhibitorStore.d.ts +86 -0
- package/dist/esm/store/ExhibitorStore.js +175 -0
- package/dist/esm/store/FuzzySearchEngineStore.d.ts +15 -0
- package/dist/esm/store/FuzzySearchEngineStore.js +45 -0
- package/dist/esm/store/HeatmapStore.d.ts +51 -0
- package/dist/esm/store/HeatmapStore.js +100 -0
- package/dist/esm/store/IntercomStore.d.ts +7 -0
- package/dist/esm/store/IntercomStore.js +26 -0
- package/dist/esm/store/LayerStore.d.ts +70 -0
- package/dist/esm/store/LayerStore.js +399 -0
- package/dist/esm/store/MaplibreStore.d.ts +71 -0
- package/dist/esm/store/MaplibreStore.js +137 -0
- package/dist/esm/store/OverlayStore.d.ts +32 -0
- package/dist/esm/store/OverlayStore.js +68 -0
- package/dist/esm/store/PoiMarkerStore.d.ts +76 -0
- package/dist/esm/store/PoiMarkerStore.js +97 -0
- package/dist/esm/store/PoiTypeStore.d.ts +8 -0
- package/dist/esm/store/PoiTypeStore.js +6 -0
- package/dist/esm/store/RootStore.d.ts +118 -0
- package/dist/esm/store/RootStore.js +666 -0
- package/dist/esm/store/RoutePlannerStore.d.ts +56 -0
- package/dist/esm/store/RoutePlannerStore.js +322 -0
- package/dist/esm/store/RouteStore.d.ts +138 -0
- package/dist/esm/store/RouteStore.js +692 -0
- package/dist/esm/store/SearchButtonsStore.d.ts +2 -0
- package/dist/esm/store/SearchButtonsStore.js +2 -0
- package/dist/esm/store/SearchStore.d.ts +81 -0
- package/dist/esm/store/SearchStore.js +612 -0
- package/dist/esm/store/SessionsFilterStore.d.ts +53 -0
- package/dist/esm/store/SessionsFilterStore.js +169 -0
- package/dist/esm/store/ShortcutProvider.d.ts +26 -0
- package/dist/esm/store/ShortcutProvider.js +5 -0
- package/dist/esm/store/ShortcutRegistry.d.ts +33 -0
- package/dist/esm/store/ShortcutRegistry.js +130 -0
- package/dist/esm/store/SpeakerFilterStore.d.ts +39 -0
- package/dist/esm/store/SpeakerFilterStore.js +152 -0
- package/dist/esm/store/SpeakerStore.d.ts +45 -0
- package/dist/esm/store/SpeakerStore.js +142 -0
- package/dist/esm/store/SubButtonProvider.d.ts +16 -0
- package/dist/esm/store/SubButtonProvider.js +6 -0
- package/dist/esm/store/SubButtonRegistry.d.ts +16 -0
- package/dist/esm/store/SubButtonRegistry.js +58 -0
- package/dist/esm/store/ToursStore.d.ts +30 -0
- package/dist/esm/store/ToursStore.js +184 -0
- package/dist/esm/store/UIState.d.ts +329 -0
- package/dist/esm/store/UIState.js +2138 -0
- package/dist/esm/store/VenueStore.d.ts +254 -0
- package/dist/esm/store/VenueStore.js +650 -0
- package/dist/esm/store/create-live-plan.d.ts +13 -0
- package/dist/esm/store/create-live-plan.js +25 -0
- package/dist/esm/store/details-events.d.ts +11 -0
- package/dist/esm/store/details-events.js +76 -0
- package/dist/esm/store/floor-activated-notifier.d.ts +18 -0
- package/dist/esm/store/floor-activated-notifier.js +22 -0
- package/dist/esm/store/index.d.ts +3 -0
- package/dist/esm/store/index.js +14 -0
- package/dist/esm/store/init/index.d.ts +3 -0
- package/dist/esm/store/init/index.js +20 -0
- package/dist/esm/store/init/init-booths.d.ts +6 -0
- package/dist/esm/store/init/init-booths.js +306 -0
- package/dist/esm/store/init/init-categories.d.ts +3 -0
- package/dist/esm/store/init/init-categories.js +28 -0
- package/dist/esm/store/init/init-events.d.ts +3 -0
- package/dist/esm/store/init/init-events.js +45 -0
- package/dist/esm/store/init/init-exhibitors.d.ts +3 -0
- package/dist/esm/store/init/init-exhibitors.js +71 -0
- package/dist/esm/store/init/init-heatmap.d.ts +3 -0
- package/dist/esm/store/init/init-heatmap.js +37 -0
- package/dist/esm/store/init/init-layers.d.ts +8 -0
- package/dist/esm/store/init/init-layers.js +151 -0
- package/dist/esm/store/init/init-poiTypes.d.ts +3 -0
- package/dist/esm/store/init/init-poiTypes.js +6 -0
- package/dist/esm/store/init/init-speakers.d.ts +3 -0
- package/dist/esm/store/init/init-speakers.js +20 -0
- package/dist/esm/store/init/init-ui.d.ts +13 -0
- package/dist/esm/store/init/init-ui.js +155 -0
- package/dist/esm/store/journey-plan.d.ts +89 -0
- package/dist/esm/store/journey-plan.js +291 -0
- package/dist/esm/store/live-store.d.ts +19 -0
- package/dist/esm/store/live-store.js +26 -0
- package/dist/esm/store/outdoor-poi-filter.d.ts +21 -0
- package/dist/esm/store/outdoor-poi-filter.js +33 -0
- package/dist/esm/store/providers/SearchShortcutProvider.d.ts +13 -0
- package/dist/esm/store/providers/SearchShortcutProvider.js +59 -0
- package/dist/esm/store/providers/SessionsShortcutProvider.d.ts +17 -0
- package/dist/esm/store/providers/SessionsShortcutProvider.js +221 -0
- package/dist/esm/store/providers/SessionsSubButtonProvider.d.ts +33 -0
- package/dist/esm/store/providers/SessionsSubButtonProvider.js +100 -0
- package/dist/esm/store/providers/SpeakerShortcutProvider.d.ts +12 -0
- package/dist/esm/store/providers/SpeakerShortcutProvider.js +73 -0
- package/dist/esm/store/reveal-layer.d.ts +29 -0
- package/dist/esm/store/reveal-layer.js +25 -0
- package/dist/esm/store/search-buttons/SearchButtonsActions.d.ts +55 -0
- package/dist/esm/store/search-buttons/SearchButtonsActions.js +363 -0
- package/dist/esm/store/search-buttons/SearchButtonsFactory.d.ts +37 -0
- package/dist/esm/store/search-buttons/SearchButtonsFactory.js +291 -0
- package/dist/esm/store/search-buttons/SearchButtonsFilters.d.ts +20 -0
- package/dist/esm/store/search-buttons/SearchButtonsFilters.js +157 -0
- package/dist/esm/store/search-buttons/SearchButtonsState.d.ts +24 -0
- package/dist/esm/store/search-buttons/SearchButtonsState.js +125 -0
- package/dist/esm/store/search-buttons/SearchButtonsStore.d.ts +73 -0
- package/dist/esm/store/search-buttons/SearchButtonsStore.js +364 -0
- package/dist/esm/store/search-buttons/constants.d.ts +24 -0
- package/dist/esm/store/search-buttons/constants.js +24 -0
- package/dist/esm/store/search-buttons/index.d.ts +8 -0
- package/dist/esm/store/search-buttons/index.js +7 -0
- package/dist/esm/store/search-buttons/utils.d.ts +6 -0
- package/dist/esm/store/search-buttons/utils.js +34 -0
- package/dist/esm/store/types.d.ts +213 -0
- package/dist/esm/store/types.js +1 -0
- package/dist/esm/store/venue-public.d.ts +10 -0
- package/dist/esm/store/venue-public.js +14 -0
- package/dist/esm/store/venue-selection.d.ts +45 -0
- package/dist/esm/store/venue-selection.js +101 -0
- package/dist/esm/test/store-harness.d.ts +32 -0
- package/dist/esm/test/store-harness.js +116 -0
- package/dist/esm/tools/base-runtime-url.d.ts +3 -0
- package/dist/esm/tools/base-runtime-url.js +23 -0
- package/dist/esm/tools/debounce.d.ts +2 -0
- package/dist/esm/tools/debounce.js +10 -0
- package/dist/esm/tools/debugCanvases.d.ts +3 -0
- package/dist/esm/tools/debugCanvases.js +3 -0
- package/dist/esm/tools/event-not-found.d.ts +18 -0
- package/dist/esm/tools/event-not-found.js +50 -0
- package/dist/esm/tools/event-scoped-cache.d.ts +13 -0
- package/dist/esm/tools/event-scoped-cache.js +47 -0
- package/dist/esm/tools/expofpUrl.d.ts +7 -0
- package/dist/esm/tools/expofpUrl.js +10 -0
- package/dist/esm/tools/freeBanner.d.ts +5 -0
- package/dist/esm/tools/freeBanner.js +11 -0
- package/dist/esm/tools/gtag.d.ts +66 -0
- package/dist/esm/tools/gtag.js +287 -0
- package/dist/esm/tools/handleDebugMode.d.ts +19 -0
- package/dist/esm/tools/handleDebugMode.js +61 -0
- package/dist/esm/tools/has-html-tags.d.ts +2 -0
- package/dist/esm/tools/has-html-tags.js +3 -0
- package/dist/esm/tools/id.d.ts +2 -0
- package/dist/esm/tools/id.js +5 -0
- package/dist/esm/tools/loaders.d.ts +5 -0
- package/dist/esm/tools/loaders.js +67 -0
- package/dist/esm/tools/logger.d.ts +38 -0
- package/dist/esm/tools/logger.js +87 -0
- package/dist/esm/tools/rebooking-config.d.ts +10 -0
- package/dist/esm/tools/rebooking-config.js +19 -0
- package/dist/esm/tools/rebookingUrl.d.ts +11 -0
- package/dist/esm/tools/rebookingUrl.js +27 -0
- package/dist/esm/tools/report-error.d.ts +2 -0
- package/dist/esm/tools/report-error.js +134 -0
- package/dist/esm/tools/reset.d.ts +2 -0
- package/dist/esm/tools/reset.js +35 -0
- package/dist/esm/tools/sentry.d.ts +7 -0
- package/dist/esm/tools/sentry.js +166 -0
- package/dist/esm/tools/settings.d.ts +36 -0
- package/dist/esm/tools/settings.js +110 -0
- package/dist/esm/tools/slug.d.ts +2 -0
- package/dist/esm/tools/slug.js +27 -0
- package/dist/esm/tools/strip-html.d.ts +2 -0
- package/dist/esm/tools/strip-html.js +7 -0
- package/dist/esm/tools/style-registry.d.ts +28 -0
- package/dist/esm/tools/style-registry.js +46 -0
- package/dist/esm/tools/telemetry.d.ts +37 -0
- package/dist/esm/tools/telemetry.js +266 -0
- package/dist/esm/tools/track-event.d.ts +28 -0
- package/dist/esm/tools/track-event.js +196 -0
- package/dist/esm/tools/webgl-logger.d.ts +2 -0
- package/dist/esm/tools/webgl-logger.js +31 -0
- package/dist/esm/types/drawing.types.d.ts +18 -0
- package/dist/esm/types/drawing.types.js +1 -0
- package/dist/esm/types/sdk.types.d.ts +49 -0
- package/dist/esm/types/sdk.types.js +6 -0
- package/dist/esm/types.d.ts +593 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/utils/_OLD_gpu-info.d.ts +6 -0
- package/dist/esm/utils/_OLD_gpu-info.js +23 -0
- package/dist/esm/utils/_OLD_should-use-backdrop.d.ts +3 -0
- package/dist/esm/utils/_OLD_should-use-backdrop.js +4 -0
- package/dist/esm/utils/areLayersEnabled.d.ts +2 -0
- package/dist/esm/utils/areLayersEnabled.js +4 -0
- package/dist/esm/utils/blob-image-size.d.ts +27 -0
- package/dist/esm/utils/blob-image-size.js +37 -0
- package/dist/esm/utils/brand.d.ts +18 -0
- package/dist/esm/utils/brand.js +19 -0
- package/dist/esm/utils/browser.d.ts +4 -0
- package/dist/esm/utils/browser.js +4 -0
- package/dist/esm/utils/calcSpeed.d.ts +2 -0
- package/dist/esm/utils/calcSpeed.js +5 -0
- package/dist/esm/utils/calcTravelTime.d.ts +2 -0
- package/dist/esm/utils/calcTravelTime.js +3 -0
- package/dist/esm/utils/camera-map-settings.d.ts +26 -0
- package/dist/esm/utils/camera-map-settings.js +86 -0
- package/dist/esm/utils/color-gradient.d.ts +2 -0
- package/dist/esm/utils/color-gradient.js +14 -0
- package/dist/esm/utils/customCommands.d.ts +2 -0
- package/dist/esm/utils/customCommands.js +33 -0
- package/dist/esm/utils/detectLimitedModeViaImage.d.ts +2 -0
- package/dist/esm/utils/detectLimitedModeViaImage.js +33 -0
- package/dist/esm/utils/dimming.d.ts +27 -0
- package/dist/esm/utils/dimming.js +88 -0
- package/dist/esm/utils/entity-storage.d.ts +14 -0
- package/dist/esm/utils/entity-storage.js +122 -0
- package/dist/esm/utils/event-head.d.ts +38 -0
- package/dist/esm/utils/event-head.js +90 -0
- package/dist/esm/utils/event-now.d.ts +11 -0
- package/dist/esm/utils/event-now.js +40 -0
- package/dist/esm/utils/event-title.d.ts +19 -0
- package/dist/esm/utils/event-title.js +20 -0
- package/dist/esm/utils/eventFullBadge.d.ts +3 -0
- package/dist/esm/utils/eventFullBadge.js +7 -0
- package/dist/esm/utils/eventTime.d.ts +15 -0
- package/dist/esm/utils/eventTime.js +82 -0
- package/dist/esm/utils/extractMetaFromString.d.ts +5 -0
- package/dist/esm/utils/extractMetaFromString.js +16 -0
- package/dist/esm/utils/geo-anchors.d.ts +10 -0
- package/dist/esm/utils/geo-anchors.js +12 -0
- package/dist/esm/utils/geometry.d.ts +2 -0
- package/dist/esm/utils/geometry.js +12 -0
- package/dist/esm/utils/getContrastTextColor.d.ts +2 -0
- package/dist/esm/utils/getContrastTextColor.js +26 -0
- package/dist/esm/utils/getLogoUrl.d.ts +9 -0
- package/dist/esm/utils/getLogoUrl.js +26 -0
- package/dist/esm/utils/getMostFrequent.d.ts +2 -0
- package/dist/esm/utils/getMostFrequent.js +14 -0
- package/dist/esm/utils/getRenderTargetFromRoot.d.ts +2 -0
- package/dist/esm/utils/getRenderTargetFromRoot.js +19 -0
- package/dist/esm/utils/gps.d.ts +40 -0
- package/dist/esm/utils/gps.js +66 -0
- package/dist/esm/utils/heatmap-enabled.d.ts +13 -0
- package/dist/esm/utils/heatmap-enabled.js +13 -0
- package/dist/esm/utils/i18n.d.ts +18 -0
- package/dist/esm/utils/i18n.js +117 -0
- package/dist/esm/utils/index.d.ts +10 -0
- package/dist/esm/utils/index.js +60 -0
- package/dist/esm/utils/is-debug.d.ts +3 -0
- package/dist/esm/utils/is-debug.js +9 -0
- package/dist/esm/utils/is-from-designer.d.ts +3 -0
- package/dist/esm/utils/is-from-designer.js +4 -0
- package/dist/esm/utils/is-iframe.d.ts +3 -0
- package/dist/esm/utils/is-iframe.js +13 -0
- package/dist/esm/utils/is-localhost.d.ts +3 -0
- package/dist/esm/utils/is-localhost.js +11 -0
- package/dist/esm/utils/is-mac.d.ts +3 -0
- package/dist/esm/utils/is-mac.js +2 -0
- package/dist/esm/utils/is-mobile.d.ts +3 -0
- package/dist/esm/utils/is-mobile.js +2 -0
- package/dist/esm/utils/is-own-domain.d.ts +12 -0
- package/dist/esm/utils/is-own-domain.js +23 -0
- package/dist/esm/utils/is-pathway-layer.d.ts +2 -0
- package/dist/esm/utils/is-pathway-layer.js +4 -0
- package/dist/esm/utils/is-phone.d.ts +9 -0
- package/dist/esm/utils/is-phone.js +17 -0
- package/dist/esm/utils/is-scroll-ugly.d.ts +3 -0
- package/dist/esm/utils/is-scroll-ugly.js +13 -0
- package/dist/esm/utils/is-webview.d.ts +3 -0
- package/dist/esm/utils/is-webview.js +2 -0
- package/dist/esm/utils/isNumericLevel.d.ts +2 -0
- package/dist/esm/utils/isNumericLevel.js +3 -0
- package/dist/esm/utils/lazy-qr-code.d.ts +5 -0
- package/dist/esm/utils/lazy-qr-code.js +6 -0
- package/dist/esm/utils/legacy-storage-keys.d.ts +16 -0
- package/dist/esm/utils/legacy-storage-keys.js +38 -0
- package/dist/esm/utils/loadBlob.d.ts +16 -0
- package/dist/esm/utils/loadBlob.js +40 -0
- package/dist/esm/utils/loadCustomCss.d.ts +3 -0
- package/dist/esm/utils/loadCustomCss.js +19 -0
- package/dist/esm/utils/loadIcons.d.ts +3 -0
- package/dist/esm/utils/loadIcons.js +24 -0
- package/dist/esm/utils/loadImage.d.ts +2 -0
- package/dist/esm/utils/loadImage.js +11 -0
- package/dist/esm/utils/loadImagesInBatches.d.ts +22 -0
- package/dist/esm/utils/loadImagesInBatches.js +82 -0
- package/dist/esm/utils/loadLayerImages.d.ts +41 -0
- package/dist/esm/utils/loadLayerImages.js +107 -0
- package/dist/esm/utils/localStorage.d.ts +2 -0
- package/dist/esm/utils/localStorage.js +11 -0
- package/dist/esm/utils/lz-utils.d.ts +8 -0
- package/dist/esm/utils/lz-utils.js +16 -0
- package/dist/esm/utils/mapEntity.d.ts +3 -0
- package/dist/esm/utils/mapEntity.js +82 -0
- package/dist/esm/utils/math.d.ts +6 -0
- package/dist/esm/utils/math.js +7 -0
- package/dist/esm/utils/mobx.d.ts +35 -0
- package/dist/esm/utils/mobx.js +74 -0
- package/dist/esm/utils/outdoor-poi.d.ts +32 -0
- package/dist/esm/utils/outdoor-poi.js +28 -0
- package/dist/esm/utils/plan-reactions.d.ts +20 -0
- package/dist/esm/utils/plan-reactions.js +26 -0
- package/dist/esm/utils/planBearing.d.ts +14 -0
- package/dist/esm/utils/planBearing.js +15 -0
- package/dist/esm/utils/preview-exhibitor.d.ts +11 -0
- package/dist/esm/utils/preview-exhibitor.js +19 -0
- package/dist/esm/utils/rasterize-svg.d.ts +32 -0
- package/dist/esm/utils/rasterize-svg.js +78 -0
- package/dist/esm/utils/responsiveClass.d.ts +2 -0
- package/dist/esm/utils/responsiveClass.js +25 -0
- package/dist/esm/utils/rtl.d.ts +2 -0
- package/dist/esm/utils/rtl.js +4 -0
- package/dist/esm/utils/sanitizeHtml.d.ts +3 -0
- package/dist/esm/utils/sanitizeHtml.js +21 -0
- package/dist/esm/utils/sanitizeText.d.ts +9 -0
- package/dist/esm/utils/sanitizeText.js +19 -0
- package/dist/esm/utils/scene-bounds.d.ts +64 -0
- package/dist/esm/utils/scene-bounds.js +127 -0
- package/dist/esm/utils/shortenName.d.ts +2 -0
- package/dist/esm/utils/shortenName.js +19 -0
- package/dist/esm/utils/silence-mobx-react-lite-warning.d.ts +2 -0
- package/dist/esm/utils/silence-mobx-react-lite-warning.js +24 -0
- package/dist/esm/utils/strEqual.d.ts +2 -0
- package/dist/esm/utils/strEqual.js +3 -0
- package/dist/esm/utils/swappable-proxy.d.ts +28 -0
- package/dist/esm/utils/swappable-proxy.js +71 -0
- package/dist/esm/utils/trackingParams.d.ts +3 -0
- package/dist/esm/utils/trackingParams.js +24 -0
- package/dist/esm/utils/urlEncoding.d.ts +7 -0
- package/dist/esm/utils/urlEncoding.js +62 -0
- package/dist/esm/utils/use-shadow.d.ts +3 -0
- package/dist/esm/utils/use-shadow.js +10 -0
- package/dist/esm/utils/useHeatmapData.d.ts +10 -0
- package/dist/esm/utils/useHeatmapData.js +8 -0
- package/dist/esm/utils/useHeatmapOverlay.d.ts +9 -0
- package/dist/esm/utils/useHeatmapOverlay.js +56 -0
- package/dist/esm/utils/useRenderTarget.d.ts +2 -0
- package/dist/esm/utils/useRenderTarget.js +35 -0
- package/dist/esm/utils/yah_icon.d.ts +6 -0
- package/dist/esm/utils/yah_icon.js +457 -0
- package/dist/esm/wayfinding/adapters/arbitraryPoint.d.ts +32 -0
- package/dist/esm/wayfinding/adapters/arbitraryPoint.js +25 -0
- package/dist/esm/wayfinding/adapters/boothToEndpoint.d.ts +19 -0
- package/dist/esm/wayfinding/adapters/boothToEndpoint.js +32 -0
- package/dist/esm/wayfinding/adapters/campusEndpoints.d.ts +13 -0
- package/dist/esm/wayfinding/adapters/campusEndpoints.js +25 -0
- package/dist/esm/wayfinding/adapters/canvasIconProvider.d.ts +20 -0
- package/dist/esm/wayfinding/adapters/canvasIconProvider.js +73 -0
- package/dist/esm/wayfinding/adapters/floorContext.d.ts +20 -0
- package/dist/esm/wayfinding/adapters/floorContext.js +43 -0
- package/dist/esm/wayfinding/adapters/graphDataSource.d.ts +49 -0
- package/dist/esm/wayfinding/adapters/graphDataSource.js +87 -0
- package/dist/esm/wayfinding/adapters/index.d.ts +10 -0
- package/dist/esm/wayfinding/adapters/index.js +8 -0
- package/dist/esm/wayfinding/adapters/kioskCanvas.d.ts +7 -0
- package/dist/esm/wayfinding/adapters/kioskCanvas.js +22 -0
- package/dist/esm/wayfinding/adapters/positionInput.d.ts +12 -0
- package/dist/esm/wayfinding/adapters/positionInput.js +16 -0
- package/dist/esm/wayfinding/bindMobxReactions.d.ts +28 -0
- package/dist/esm/wayfinding/bindMobxReactions.js +171 -0
- package/dist/esm/wayfinding/createWayfinding.d.ts +34 -0
- package/dist/esm/wayfinding/createWayfinding.js +184 -0
- package/dist/esm/wayfinding/handlers/kioskHandler.d.ts +26 -0
- package/dist/esm/wayfinding/handlers/kioskHandler.js +52 -0
- package/dist/esm/wayfinding/handlers/yahHandler.d.ts +21 -0
- package/dist/esm/wayfinding/handlers/yahHandler.js +42 -0
- package/dist/esm/wayfinding/index.d.ts +12 -0
- package/dist/esm/wayfinding/index.js +9 -0
- package/dist/esm/wayfinding/routeSteps.d.ts +15 -0
- package/dist/esm/wayfinding/routeSteps.js +29 -0
- package/dist/esm/wayfinding/storePorts.d.ts +67 -0
- package/dist/esm/wayfinding/storePorts.js +1 -0
- package/package.json +146 -0
|
@@ -0,0 +1,533 @@
|
|
|
1
|
+
import { Rect } from '@expofp/geometry';
|
|
2
|
+
import { update, } from '@expofp/renderer';
|
|
3
|
+
import { comparer, reaction } from 'mobx';
|
|
4
|
+
import { createImageDef } from '../../../../engine/defs';
|
|
5
|
+
import { DEFAULT_FONT_URL } from '../../../../engine/fonts';
|
|
6
|
+
import { boothStore, uiState } from '../../../../store';
|
|
7
|
+
import { createDimmingAnimator } from '../../../../utils/dimming';
|
|
8
|
+
import { createClusterPinCanvas, createPoiPinCanvas } from './canvases';
|
|
9
|
+
import { clusterCounterCircle, clusterCountFontPx, clusterCountText, COUNT_BLOCK_HALF_EM, PIN_ASPECT, } from './pin-geometry';
|
|
10
|
+
/**
|
|
11
|
+
* Draws a pin over every booth an active POI-type search button selects, and draws the renderer's
|
|
12
|
+
* clusters of those pins from a pool of hidden markers.
|
|
13
|
+
*
|
|
14
|
+
* The pins key off `uiState.selectedPoiTypeFilters`, which is what both a single `poi_type` button
|
|
15
|
+
* and a `poi_types` group button write — so one filter or a whole group reaches this the same way.
|
|
16
|
+
*
|
|
17
|
+
* This module only *substitutes*. The renderer decides which pins collide, hides every pin in a
|
|
18
|
+
* cluster through its own `onPlace`, and reports the clusters to the pin layer's `clustering`. What
|
|
19
|
+
* this draws for a report is a pooled marker per cluster, in two sibling layers that declare neither
|
|
20
|
+
* `placement` nor `clustering`, so a marker can never be clustered as its own input.
|
|
21
|
+
*
|
|
22
|
+
* Nothing is created or destroyed on a camera move. The pins are built when the booth set changes,
|
|
23
|
+
* one per booth, and so is the pool: a cluster needs two pins, so `floor(n / 2)` markers is every
|
|
24
|
+
* marker a report can ask for. A report writes positions and counts onto defs already mounted, and
|
|
25
|
+
* no layer's `children` is reassigned by anything but a booth-set change.
|
|
26
|
+
*
|
|
27
|
+
* Takes the layers rather than the scene, so it runs in `config-all` beside the layers' creation:
|
|
28
|
+
* nothing here needs the renderer, and `update` before the scene mounts is a documented no-op that
|
|
29
|
+
* the mount's own full sync covers.
|
|
30
|
+
* @param pinLayer - The layer for pins, which `config-all` creates.
|
|
31
|
+
* @param clusterLayer - The layer for cluster teardrops, created directly above `pinLayer`.
|
|
32
|
+
* @param countLayer - The layer for cluster counts, created directly above `clusterLayer`.
|
|
33
|
+
* @returns A disposer.
|
|
34
|
+
*/
|
|
35
|
+
export function configPins(pinLayer, clusterLayer, countLayer) {
|
|
36
|
+
const disposers = [];
|
|
37
|
+
let fades = [];
|
|
38
|
+
/** The booths an active filter selects, written by the reaction below. */
|
|
39
|
+
let booths = [];
|
|
40
|
+
/** The pooled cluster markers, sized when the booth set changes and at no other time. */
|
|
41
|
+
let pool = [];
|
|
42
|
+
/**
|
|
43
|
+
* The booths an active filter selects.
|
|
44
|
+
*
|
|
45
|
+
* A booth with no rect was never drawn — `config-booths` drops it — so it gets no pin either. Nor
|
|
46
|
+
* does a booth on a floor that is off: the placement pass ignores `hidden`, on purpose, so an
|
|
47
|
+
* invisible pin would still win its footprint on screen and blank the visible pin standing on it.
|
|
48
|
+
* Leaving it out of the layer unregisters it, which frees that room and owes a fresh pass.
|
|
49
|
+
* @returns The booths to mark, empty when no POI-type filter is on.
|
|
50
|
+
*/
|
|
51
|
+
function filteredBooths() {
|
|
52
|
+
const poiTypes = uiState.selectedPoiTypeFilters;
|
|
53
|
+
if (!poiTypes.length)
|
|
54
|
+
return [];
|
|
55
|
+
const poiTypeIds = new Set(poiTypes.map((poiType) => poiType.id));
|
|
56
|
+
return boothStore.booths.filter((booth) => booth.visible && poiTypeIds.has(booth.poiTypeId) && booth.rect);
|
|
57
|
+
}
|
|
58
|
+
const track = (fade) => {
|
|
59
|
+
fades.push(fade);
|
|
60
|
+
};
|
|
61
|
+
/** Stops every running fade, so a discarded def is not written to or updated after the fact. */
|
|
62
|
+
function stopFades() {
|
|
63
|
+
fades.forEach((fade) => fade.stop());
|
|
64
|
+
fades = [];
|
|
65
|
+
}
|
|
66
|
+
/** Builds one pin per booth into the pin layer. Only on a booth-set change. */
|
|
67
|
+
function buildPins() {
|
|
68
|
+
pinLayer.children = booths.map((booth) => createPin(booth, track));
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Builds the pool of hidden markers into the cluster and count layers. Only on a booth-set
|
|
72
|
+
* change, and bar `cleanup` the only writer of either layer's `children`.
|
|
73
|
+
*/
|
|
74
|
+
function buildPool() {
|
|
75
|
+
pool = Array.from({ length: Math.floor(booths.length / 2) }, () => createUnit(track));
|
|
76
|
+
clusterLayer.children = pool.map((unit) => unit.image);
|
|
77
|
+
countLayer.children = pool.map((unit) => unit.count);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Draws a cluster report: the only writer of a pooled unit's fields.
|
|
81
|
+
*
|
|
82
|
+
* Every marker fades: in as its cluster appears, out as it leaves, in the pass that decides fresh
|
|
83
|
+
* pins as in any later one. The pins a cluster hides fade out over the same time, so a crowd
|
|
84
|
+
* cross-fades into its marker and is never an empty patch while the marker comes in.
|
|
85
|
+
*
|
|
86
|
+
* A `Cluster` has no identity, so a unit follows the nearest cluster within {@link MOVE_RADIUS_PX}
|
|
87
|
+
* of where it stands ({@link assign}). A cluster that moves keeps its unit and that unit's opacity:
|
|
88
|
+
* the marker moves to its new place in one step, without blinking. One that leaves releases its unit to fade out where it
|
|
89
|
+
* stood, and one that appears takes a free unit and fades it in.
|
|
90
|
+
* @param clusters - The renderer's full current set.
|
|
91
|
+
* @param view - What the camera shows, for the move radius in plan units.
|
|
92
|
+
* @returns Every def that changed, which the renderer writes: a rule must never call `update`.
|
|
93
|
+
*/
|
|
94
|
+
function show(clusters, view) {
|
|
95
|
+
const changed = new Set();
|
|
96
|
+
const add = (defs) => defs?.forEach((d) => changed.add(d));
|
|
97
|
+
const owners = assign(pool, clusters, MOVE_RADIUS_PX * view.pixelSize);
|
|
98
|
+
owners.forEach((unit, i) => {
|
|
99
|
+
if (writeUnit(unit, clusters[i]))
|
|
100
|
+
add([unit.image, unit.count]);
|
|
101
|
+
add(unit.fader.place(true));
|
|
102
|
+
});
|
|
103
|
+
const owned = new Set(owners);
|
|
104
|
+
for (const unit of pool) {
|
|
105
|
+
if (!owned.has(unit))
|
|
106
|
+
add(unit.fader.place(false));
|
|
107
|
+
}
|
|
108
|
+
return changed.size ? [...changed] : undefined;
|
|
109
|
+
}
|
|
110
|
+
// One options object for the life of this setup, never swapped: the renderer tells the handler it
|
|
111
|
+
// last told, so a new object while the set is unchanged would never hear the current set.
|
|
112
|
+
const clustering = {
|
|
113
|
+
onCluster: (clusters, view) => show(clusters, view),
|
|
114
|
+
// The teardrop as `createUnit` draws it, standing on its tip at the cluster's anchor, so a
|
|
115
|
+
// pin the drawn marker would cover joins its cluster instead of showing beside it.
|
|
116
|
+
marker: { width: CLUSTER_WIDTH_PX, height: CLUSTER_HEIGHT_PX, origin: PIN_ORIGIN },
|
|
117
|
+
};
|
|
118
|
+
pinLayer.clustering = clustering;
|
|
119
|
+
disposers.push(reaction(
|
|
120
|
+
// The booths that carry a pin, which already depends on the POI-type filter and on each
|
|
121
|
+
// booth's floor, so one reaction covers a filter click and a floor switch alike. Not
|
|
122
|
+
// `layersStore.visible`: that changes on any layer toggle, and a rebuild restarts every fade.
|
|
123
|
+
// The shallow comparison keeps a re-evaluation that selects the same booths from rebuilding.
|
|
124
|
+
() => filteredBooths(), (next) => {
|
|
125
|
+
booths = next;
|
|
126
|
+
// Everything is built fresh and the old defs drop at once: a pin of a floor that is off
|
|
127
|
+
// must not linger and win room from the visible ones.
|
|
128
|
+
stopFades();
|
|
129
|
+
buildPins();
|
|
130
|
+
buildPool();
|
|
131
|
+
// One call for the three layers: `update` is variadic and a rebuild is one change.
|
|
132
|
+
update(pinLayer, clusterLayer, countLayer);
|
|
133
|
+
},
|
|
134
|
+
// A plan opened on a `?poiType=` link already carries the filter, so its pins have to appear
|
|
135
|
+
// with the scene rather than wait for the next click.
|
|
136
|
+
{ equals: comparer.shallow, fireImmediately: true }));
|
|
137
|
+
return function cleanup() {
|
|
138
|
+
disposers.forEach((dispose) => dispose());
|
|
139
|
+
disposers.length = 0;
|
|
140
|
+
stopFades();
|
|
141
|
+
pool = [];
|
|
142
|
+
pinLayer.clustering = undefined;
|
|
143
|
+
pinLayer.children = [];
|
|
144
|
+
clusterLayer.children = [];
|
|
145
|
+
countLayer.children = [];
|
|
146
|
+
update(pinLayer, clusterLayer, countLayer);
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Builds the fade a set of defs shares: one eased value, whatever drives it.
|
|
151
|
+
*
|
|
152
|
+
* A def that has faded to nothing is set `hidden`, so it costs nothing to draw. The placement pass
|
|
153
|
+
* ignores `hidden` on purpose, so a hidden pin keeps competing and keeps seeding, and the grouping
|
|
154
|
+
* never depends on what this module drew for it.
|
|
155
|
+
* @param defs - Every def the fade writes, which `update` writes together.
|
|
156
|
+
* @param paint - Writes an opacity onto them.
|
|
157
|
+
* @param read - Reads the opacity they hold.
|
|
158
|
+
* @param track - Tracks the animator.
|
|
159
|
+
* @param shown - Whether the defs start drawn. They must already be built to match: opacity 1 and
|
|
160
|
+
* not hidden, or opacity 0 and hidden.
|
|
161
|
+
* @returns The fade.
|
|
162
|
+
*/
|
|
163
|
+
function createFader(defs, paint, read, track, shown) {
|
|
164
|
+
let fade;
|
|
165
|
+
// The verdict the fade is heading for.
|
|
166
|
+
let wanted = shown;
|
|
167
|
+
// Set for the length of a call into the animator, so a write it makes synchronously (it does when
|
|
168
|
+
// there is no `requestAnimationFrame`) is reported through the return value, or not at all.
|
|
169
|
+
let placing = false;
|
|
170
|
+
// Whether a write made while `placing` changed a def.
|
|
171
|
+
let dirty = false;
|
|
172
|
+
const write = (hidden) => {
|
|
173
|
+
const opacity = 1 - Math.min(Math.max(hidden, 0), 1);
|
|
174
|
+
let changed = false;
|
|
175
|
+
if (read() !== opacity) {
|
|
176
|
+
paint(opacity);
|
|
177
|
+
changed = true;
|
|
178
|
+
}
|
|
179
|
+
if (!wanted && hidden >= 1 && defs.some((def) => !def.hidden)) {
|
|
180
|
+
for (const def of defs)
|
|
181
|
+
def.hidden = true;
|
|
182
|
+
changed = true;
|
|
183
|
+
}
|
|
184
|
+
if (!changed)
|
|
185
|
+
return;
|
|
186
|
+
if (placing)
|
|
187
|
+
dirty = true;
|
|
188
|
+
else
|
|
189
|
+
update(...defs);
|
|
190
|
+
};
|
|
191
|
+
const animator = () => {
|
|
192
|
+
if (!fade) {
|
|
193
|
+
fade = createDimmingAnimator(write, PIN_FADE_MS);
|
|
194
|
+
track(fade);
|
|
195
|
+
if (!shown) {
|
|
196
|
+
// The animator starts at "not hidden"; one built hidden starts it at the other end, without
|
|
197
|
+
// a frame. Nothing changes, since the defs already hold that state. Called from inside
|
|
198
|
+
// `place`, so it leaves `placing` as it found it.
|
|
199
|
+
const outer = placing;
|
|
200
|
+
placing = true;
|
|
201
|
+
fade.setTarget(true, { immediate: true });
|
|
202
|
+
placing = outer;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return fade;
|
|
206
|
+
};
|
|
207
|
+
return {
|
|
208
|
+
place(next) {
|
|
209
|
+
// A repeat would retarget the animator mid-flight and restart its clock from the current value.
|
|
210
|
+
if (next === wanted)
|
|
211
|
+
return undefined;
|
|
212
|
+
wanted = next;
|
|
213
|
+
let changed = false;
|
|
214
|
+
// Drawn again before the fade starts, so its first frame is seen.
|
|
215
|
+
if (next && defs.some((def) => def.hidden)) {
|
|
216
|
+
for (const def of defs)
|
|
217
|
+
def.hidden = false;
|
|
218
|
+
changed = true;
|
|
219
|
+
}
|
|
220
|
+
placing = true;
|
|
221
|
+
dirty = false;
|
|
222
|
+
animator().setTarget(!next);
|
|
223
|
+
placing = false;
|
|
224
|
+
return changed || dirty ? defs : undefined;
|
|
225
|
+
},
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Sizes one pin or teardrop for a new pixel size — the `onScale` each declares.
|
|
230
|
+
*
|
|
231
|
+
* The **only** writer of its bounds size, so nothing else here tracks a scale. Writes through the
|
|
232
|
+
* existing `Rect` rather than replacing it, which keeps the center and the elevation.
|
|
233
|
+
* The size comes from a CSS width and the teardrop's aspect, never from the canvas: a canvas's
|
|
234
|
+
* backing store is in the device pixels it was rasterized at, which says how crisp the pin is and
|
|
235
|
+
* nothing about how big.
|
|
236
|
+
* @param pin - The pin to size.
|
|
237
|
+
* @param widthPx - Its width in CSS pixels.
|
|
238
|
+
* @param aspect - Its canvas's height over its width.
|
|
239
|
+
* @param pixelSize - Plan units per CSS pixel.
|
|
240
|
+
* @returns The def, or nothing when the size was already right — a settled camera costs no writes.
|
|
241
|
+
*/
|
|
242
|
+
function rescalePin(pin, widthPx, aspect, pixelSize) {
|
|
243
|
+
const { bounds } = pin;
|
|
244
|
+
const width = widthPx * pixelSize;
|
|
245
|
+
const height = widthPx * aspect * pixelSize;
|
|
246
|
+
if (bounds.size.x === width && bounds.size.y === height)
|
|
247
|
+
return undefined;
|
|
248
|
+
bounds.set(bounds.center.x, bounds.center.y, width, height, bounds.rotation, bounds.elevation);
|
|
249
|
+
return [pin];
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* The shared pin image, rasterized on first use.
|
|
253
|
+
*
|
|
254
|
+
* Drawn at the device ratio for crispness only. {@link rescalePin} sizes the def from
|
|
255
|
+
* `PIN_WIDTH_PX` alone, so the pin is that many CSS px on a 1x screen and on a 3x one alike.
|
|
256
|
+
* @returns The canvas every pin draws.
|
|
257
|
+
*/
|
|
258
|
+
function getPinCanvas() {
|
|
259
|
+
if (!pinCanvas)
|
|
260
|
+
pinCanvas = createPoiPinCanvas(PIN_WIDTH_PX, window.devicePixelRatio);
|
|
261
|
+
return pinCanvas;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* The shared cluster marker image, rasterized on first use.
|
|
265
|
+
*
|
|
266
|
+
* Module scope, like {@link getPinCanvas}: a canvas per marker is a distinct `ImageSource`, and the
|
|
267
|
+
* renderer repacks its atlas whenever the *set* of images changes. With the count drawn as text
|
|
268
|
+
* and every pooled teardrop drawing this one canvas, two images reach the atlas for the plan's life.
|
|
269
|
+
* @returns The canvas every cluster marker draws.
|
|
270
|
+
*/
|
|
271
|
+
function getClusterCanvas() {
|
|
272
|
+
if (!clusterCanvas) {
|
|
273
|
+
clusterCanvas = createClusterPinCanvas(CLUSTER_WIDTH_PX, window.devicePixelRatio);
|
|
274
|
+
}
|
|
275
|
+
return clusterCanvas;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Builds one booth's pin, standing on the center of its bounding box.
|
|
279
|
+
*
|
|
280
|
+
* `screenSpace` stands the pin up to face the viewer: it marks a point rather than covering ground,
|
|
281
|
+
* so on a tilted plan a flat one would smear into the floor. A camera-facing sprite pivots about its
|
|
282
|
+
* own anchor, so the bottom-center `origin` puts the drop's tip on the booth center and the head
|
|
283
|
+
* above it. The size passed here is a placeholder: the renderer lays the def out as it registers,
|
|
284
|
+
* and `onScale` rebuilds the bounds from the real pixel size.
|
|
285
|
+
*
|
|
286
|
+
* No `placement.group`: a lone pin is one def, so it is one unit of a cluster.
|
|
287
|
+
*
|
|
288
|
+
* Every verdict fades, the first one too. A pin clustered from the start is drawn whole and fades
|
|
289
|
+
* out while its marker fades in, so the crowd cross-fades into the marker rather than leaving a gap
|
|
290
|
+
* the marker then fills.
|
|
291
|
+
* @param booth - The booth to mark.
|
|
292
|
+
* @param track - Tracks the pin's fade animator, so the owner can stop it.
|
|
293
|
+
* @returns The pin.
|
|
294
|
+
*/
|
|
295
|
+
function createPin(booth, track) {
|
|
296
|
+
// `booth.rect` is the unrotated bounding box, so its center is the anchor. The elevation lifts the
|
|
297
|
+
// pin clear of the booth's own volume rather than leaving it on the floor inside one — doubled, so
|
|
298
|
+
// the drop floats above the roof instead of resting on it.
|
|
299
|
+
const bounds = new Rect(booth.rect.center, { x: PIN_WIDTH_PX, y: PIN_WIDTH_PX * PIN_ASPECT }, 0, booth.elevation * 2);
|
|
300
|
+
const pin = {
|
|
301
|
+
...createImageDef(getPinCanvas(), bounds, { hidden: false, origin: PIN_ORIGIN }),
|
|
302
|
+
screenSpace: true,
|
|
303
|
+
// Fully drawn until the first verdict says otherwise, which `onPlace` compares against.
|
|
304
|
+
opacity: 1,
|
|
305
|
+
};
|
|
306
|
+
// No `onRoll`: a roll rule would still run on a screen-space def and spin the drop about the
|
|
307
|
+
// screen's normal. Facing the camera is what keeps it pointing down the screen.
|
|
308
|
+
pin.onScale = ({ pixelSize }) => rescalePin(pin, PIN_WIDTH_PX, PIN_ASPECT, pixelSize);
|
|
309
|
+
// A pin the pass hides fades rather than vanishing, so a crowd collapsing into its marker reads
|
|
310
|
+
// as motion. The renderer decides, this decides what the decision looks like.
|
|
311
|
+
const fader = createFader([pin], (opacity) => {
|
|
312
|
+
pin.opacity = opacity;
|
|
313
|
+
}, () => pin.opacity ?? 1, track, true);
|
|
314
|
+
pin.placement = { onPlace: (placed) => fader.place(placed) };
|
|
315
|
+
return pin;
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Writes an opacity onto a count line's color, as the eight-digit hex colord parses into troika's
|
|
319
|
+
* `fillOpacity`. A `TextDef` has no `opacity` of its own.
|
|
320
|
+
* @param opacity - The opacity, `0` to `1`.
|
|
321
|
+
* @returns The line color: {@link COUNT_COLOR} with that alpha.
|
|
322
|
+
*/
|
|
323
|
+
function countColor(opacity) {
|
|
324
|
+
const byte = Math.round(Math.min(Math.max(opacity, 0), 1) * 255).toString(16);
|
|
325
|
+
return `${COUNT_COLOR}${byte.padStart(2, '0')}`;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Builds one pooled cluster marker, hidden: a teardrop carrying an empty counter circle, and the
|
|
329
|
+
* count that stands in that circle.
|
|
330
|
+
*
|
|
331
|
+
* Two defs rather than one, because baking the count into the canvas makes a different image source
|
|
332
|
+
* per count and the renderer repacks its atlas when the *set* of images changes.
|
|
333
|
+
*
|
|
334
|
+
* Neither carries `placement`. The marker is the renderer's cluster drawn back, so it must never
|
|
335
|
+
* re-enter the pass as its own input, and it lives in layers that declare no `clustering`. Each
|
|
336
|
+
* half sizes itself through its own `onScale`; {@link writeUnit} moves it.
|
|
337
|
+
* @param track - Tracks the unit's fade animator, so the owner can stop it.
|
|
338
|
+
* @returns The unit.
|
|
339
|
+
*/
|
|
340
|
+
function createUnit(track) {
|
|
341
|
+
const bounds = new Rect({ x: 0, y: 0 }, { x: CLUSTER_WIDTH_PX, y: CLUSTER_HEIGHT_PX }, 0, 0);
|
|
342
|
+
const image = {
|
|
343
|
+
...createImageDef(getClusterCanvas(), bounds, { hidden: true, origin: PIN_ORIGIN }),
|
|
344
|
+
screenSpace: true,
|
|
345
|
+
opacity: 0,
|
|
346
|
+
};
|
|
347
|
+
image.onScale = ({ pixelSize }) => rescalePin(image, CLUSTER_WIDTH_PX, PIN_ASPECT, pixelSize);
|
|
348
|
+
const count = createCount(image);
|
|
349
|
+
// One animator drives both halves from the same eased value.
|
|
350
|
+
const fader = createFader([image, count], (opacity) => {
|
|
351
|
+
image.opacity = opacity;
|
|
352
|
+
count.lines[0].color = countColor(opacity);
|
|
353
|
+
}, () => image.opacity ?? 1, track, false);
|
|
354
|
+
return { image, count, fader };
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Builds the count that stands in a cluster marker's counter circle.
|
|
358
|
+
*
|
|
359
|
+
* A screen-space text anchors its whole block at `bounds.center` and has no `origin`,
|
|
360
|
+
* so the count shares the image's center and elevation exactly. Offsetting it in plan units would
|
|
361
|
+
* rotate with the plan's roll and foreshorten under tilt, detaching the number from the circle. The
|
|
362
|
+
* offset lives inside the billboarded quad instead: the bounds carry the marker's pixel extent and
|
|
363
|
+
* a height that puts the `top`-aligned line's top edge `COUNT_BLOCK_HALF_EM` em above the circle's
|
|
364
|
+
* center, which lands the glyphs on the circle at every camera. The renderer scales that offset by
|
|
365
|
+
* depth, as it does the image, so the two stay together under perspective.
|
|
366
|
+
* @param image - The marker's teardrop, whose anchor the count shares.
|
|
367
|
+
* @returns The count, hidden and invisible like its teardrop.
|
|
368
|
+
*/
|
|
369
|
+
function createCount(image) {
|
|
370
|
+
const count = {
|
|
371
|
+
lines: [
|
|
372
|
+
{
|
|
373
|
+
// A placeholder until the first cluster writes its own: the least any cluster stands for.
|
|
374
|
+
text: clusterCountText(2),
|
|
375
|
+
color: countColor(0),
|
|
376
|
+
fontUrl: DEFAULT_FONT_URL,
|
|
377
|
+
fontSize: 0,
|
|
378
|
+
},
|
|
379
|
+
],
|
|
380
|
+
bounds: new Rect({ x: image.bounds.center.x, y: image.bounds.center.y }, { x: 0, y: 0 }, 0, image.bounds.elevation),
|
|
381
|
+
padding: [0, 0],
|
|
382
|
+
// `top`, not `center`: a centered single line sits on `bounds.center` and cannot be offset.
|
|
383
|
+
alignment: { horizontal: 'center', vertical: 'top', text: 'center' },
|
|
384
|
+
screenSpace: true,
|
|
385
|
+
hidden: true,
|
|
386
|
+
};
|
|
387
|
+
count.onScale = ({ pixelSize }) => {
|
|
388
|
+
const fontSize = clusterCountFontPx(COUNT_CIRCLE.r) * pixelSize;
|
|
389
|
+
const width = CLUSTER_WIDTH_PX * pixelSize;
|
|
390
|
+
// The sprite is drawn CLUSTER_HEIGHT_PX tall whatever its backing store holds, so the circle
|
|
391
|
+
// sits that much less its own center above the anchor.
|
|
392
|
+
const above = CLUSTER_HEIGHT_PX - COUNT_CIRCLE.cy;
|
|
393
|
+
const height = 2 * (above * pixelSize + COUNT_BLOCK_HALF_EM * fontSize);
|
|
394
|
+
const { bounds } = count;
|
|
395
|
+
const [line] = count.lines;
|
|
396
|
+
if (line.fontSize === fontSize && bounds.size.x === width && bounds.size.y === height) {
|
|
397
|
+
return undefined;
|
|
398
|
+
}
|
|
399
|
+
line.fontSize = fontSize;
|
|
400
|
+
bounds.set(image.bounds.center.x, image.bounds.center.y, width, height, bounds.rotation, image.bounds.elevation);
|
|
401
|
+
return [count];
|
|
402
|
+
};
|
|
403
|
+
return count;
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Pairs each cluster with the pooled unit that draws it.
|
|
407
|
+
*
|
|
408
|
+
* A unit already drawn, or still fading, keeps the nearest cluster within `radius` of its anchor,
|
|
409
|
+
* closest pairs first, so a cluster that moved keeps its marker. Every other cluster takes a free
|
|
410
|
+
* unit, the least visible first: a hidden one when there is one, so a marker fading out where its
|
|
411
|
+
* cluster left is reused only when the pool has nothing else. When it is, that marker jumps to its
|
|
412
|
+
* new cluster while still partly visible and turns its fade around there: the pool is exhausted
|
|
413
|
+
* only when nearly every pin stands in a pair, and a jump then is cheaper than growing the pool.
|
|
414
|
+
*
|
|
415
|
+
* The pool always has a unit for every cluster the pass can make. A report past it is one the pass
|
|
416
|
+
* cannot make, and the pool does not grow for it: its clusters past the pool's length go undrawn.
|
|
417
|
+
* @param pool - The pooled units.
|
|
418
|
+
* @param clusters - The renderer's full current set.
|
|
419
|
+
* @param radius - How far, in plan units, a cluster may move and keep its unit.
|
|
420
|
+
* @returns The unit for each cluster, by the cluster's index.
|
|
421
|
+
*/
|
|
422
|
+
function assign(pool, clusters, radius) {
|
|
423
|
+
const count = Math.min(clusters.length, pool.length);
|
|
424
|
+
const owners = [];
|
|
425
|
+
const taken = new Set();
|
|
426
|
+
const pairs = [];
|
|
427
|
+
pool.forEach(({ image }, unit) => {
|
|
428
|
+
if (image.hidden)
|
|
429
|
+
return;
|
|
430
|
+
for (let cluster = 0; cluster < count; cluster++) {
|
|
431
|
+
const { x, y } = clusters[cluster];
|
|
432
|
+
const distance = Math.hypot(x - image.bounds.center.x, y - image.bounds.center.y);
|
|
433
|
+
if (distance <= radius)
|
|
434
|
+
pairs.push({ distance, cluster, unit });
|
|
435
|
+
}
|
|
436
|
+
});
|
|
437
|
+
// Every key spelled out: `sort` is not stable on the oldest WebView target.
|
|
438
|
+
pairs.sort((p, q) => p.distance - q.distance || p.cluster - q.cluster || p.unit - q.unit);
|
|
439
|
+
for (const { cluster, unit } of pairs) {
|
|
440
|
+
if (owners[cluster] || taken.has(pool[unit]))
|
|
441
|
+
continue;
|
|
442
|
+
owners[cluster] = pool[unit];
|
|
443
|
+
taken.add(pool[unit]);
|
|
444
|
+
}
|
|
445
|
+
const free = pool
|
|
446
|
+
.map((unit, index) => ({ unit, index }))
|
|
447
|
+
.filter(({ unit }) => !taken.has(unit))
|
|
448
|
+
.sort((p, q) => visibility(p.unit) - visibility(q.unit) || p.index - q.index);
|
|
449
|
+
let next = 0;
|
|
450
|
+
for (let cluster = 0; cluster < count; cluster++) {
|
|
451
|
+
if (!owners[cluster])
|
|
452
|
+
owners[cluster] = free[next++].unit;
|
|
453
|
+
}
|
|
454
|
+
return owners;
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* How visible a pooled unit is, for {@link assign} to reuse the least visible first.
|
|
458
|
+
* @param unit - The unit.
|
|
459
|
+
* @returns `0` for a hidden unit, otherwise its opacity.
|
|
460
|
+
*/
|
|
461
|
+
function visibility({ image }) {
|
|
462
|
+
return image.hidden ? 0 : (image.opacity ?? 1);
|
|
463
|
+
}
|
|
464
|
+
/**
|
|
465
|
+
* Moves a pooled unit onto a cluster and writes its count, keeping each half's size.
|
|
466
|
+
*
|
|
467
|
+
* Everything comes from the cluster verbatim. The count in particular is `unitCount` and nothing
|
|
468
|
+
* else: a `Cluster` carries no member list, and the renderer already counted its units with a
|
|
469
|
+
* `placement.group` as one thing. Every pin is a lone def, so here it is how many pins stand
|
|
470
|
+
* behind the marker.
|
|
471
|
+
* @param unit - The unit to write.
|
|
472
|
+
* @param cluster - The cluster it now stands for.
|
|
473
|
+
* @returns Whether anything changed.
|
|
474
|
+
*/
|
|
475
|
+
function writeUnit({ image, count }, cluster) {
|
|
476
|
+
const { x, y, elevation, unitCount } = cluster;
|
|
477
|
+
const text = clusterCountText(unitCount);
|
|
478
|
+
const [line] = count.lines;
|
|
479
|
+
const at = image.bounds;
|
|
480
|
+
if (at.center.x === x && at.center.y === y && at.elevation === elevation && line.text === text) {
|
|
481
|
+
return false;
|
|
482
|
+
}
|
|
483
|
+
at.set(x, y, at.size.x, at.size.y, at.rotation, elevation);
|
|
484
|
+
const { bounds } = count;
|
|
485
|
+
bounds.set(x, y, bounds.size.x, bounds.size.y, bounds.rotation, elevation);
|
|
486
|
+
line.text = text;
|
|
487
|
+
return true;
|
|
488
|
+
}
|
|
489
|
+
/** The layer `config-all` pre-creates for pins, and the one whose clustering this module declares. */
|
|
490
|
+
export const PIN_LAYER_NAME = 'poiFilterPins';
|
|
491
|
+
/** The layer `config-all` pre-creates for cluster teardrops, drawn directly above the pins. */
|
|
492
|
+
export const PIN_CLUSTER_LAYER_NAME = 'poiFilterPinClusters';
|
|
493
|
+
/** The layer `config-all` pre-creates for cluster counts, drawn directly above the teardrops. */
|
|
494
|
+
export const PIN_COUNT_LAYER_NAME = 'poiFilterPinCounts';
|
|
495
|
+
/**
|
|
496
|
+
* How long a pin takes to fade in or out, in milliseconds. MapLibre's `fadeDuration` default, which
|
|
497
|
+
* the placement spec's research cites: long enough that a crowd thinning out reads as motion, short
|
|
498
|
+
* enough that a zoom does not leave half-faded pins behind the camera.
|
|
499
|
+
*/
|
|
500
|
+
export const PIN_FADE_MS = 300;
|
|
501
|
+
/** The pin's on-screen width in CSS pixels, which {@link rescalePin} holds it to at every zoom. */
|
|
502
|
+
const PIN_WIDTH_PX = 32;
|
|
503
|
+
/** Bottom-center: the drop's tip is what marks the booth, not its middle. */
|
|
504
|
+
const PIN_ORIGIN = [0.5, 1];
|
|
505
|
+
/** A cluster marker's on-screen width in CSS pixels, wider than a lone pin so a count is legible. */
|
|
506
|
+
const CLUSTER_WIDTH_PX = 44;
|
|
507
|
+
// No minimum cluster size. A cluster *is* a collision, so two is the placement pass's own answer
|
|
508
|
+
// and not a parameter: the renderer never reports a cluster of fewer than two units.
|
|
509
|
+
/**
|
|
510
|
+
* How far a cluster's anchor may move between two reports, in CSS pixels, and keep its marker: a
|
|
511
|
+
* marker's own width. A cluster that grows or splits shifts its mean by a fraction of the crowd it
|
|
512
|
+
* covers, well inside this, while one that left and another that appeared elsewhere are farther
|
|
513
|
+
* apart and fade rather than slide.
|
|
514
|
+
*/
|
|
515
|
+
const MOVE_RADIUS_PX = CLUSTER_WIDTH_PX;
|
|
516
|
+
/** The count glyphs' color: the black that already edges the pin. */
|
|
517
|
+
const COUNT_COLOR = '#000000';
|
|
518
|
+
/** The counter circle's place inside the marker, in CSS pixels. Computed once. */
|
|
519
|
+
const COUNT_CIRCLE = clusterCounterCircle(CLUSTER_WIDTH_PX);
|
|
520
|
+
/**
|
|
521
|
+
* The marker's height in CSS pixels, from the teardrop's aspect: `44 * 93 / 81 = 50.5185`.
|
|
522
|
+
*
|
|
523
|
+
* The height the sprite is drawn at. Anchored at its bottom edge, so the circle sits
|
|
524
|
+
* `CLUSTER_HEIGHT_PX - cy` above the anchor.
|
|
525
|
+
*/
|
|
526
|
+
const CLUSTER_HEIGHT_PX = CLUSTER_WIDTH_PX * PIN_ASPECT;
|
|
527
|
+
/**
|
|
528
|
+
* The pin image. Module scope rather than per `configPins` call: every pin on the plan is the same
|
|
529
|
+
* picture, and a scene rebuild draws that same picture again.
|
|
530
|
+
*/
|
|
531
|
+
let pinCanvas;
|
|
532
|
+
/** The cluster marker image, cached by {@link getClusterCanvas}. */
|
|
533
|
+
let clusterCanvas;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Geometry shared by the booth label drawers for holding label text clear of
|
|
3
|
+
* the booth border.
|
|
4
|
+
*/
|
|
5
|
+
/** Margin held around a booth label, as a share of each rect dimension. */
|
|
6
|
+
export declare const LABEL_MARGIN_FRACTION = 0.05;
|
|
7
|
+
/**
|
|
8
|
+
* How far a label box is pulled in from the booth footprint to clear the drawn
|
|
9
|
+
* border — half the stroke, since the border straddles the footprint edge.
|
|
10
|
+
*
|
|
11
|
+
* Capped at the margin and floored at zero: a plan can publish a
|
|
12
|
+
* `boothBorderWidth` far larger than the strokes it actually draws, and an
|
|
13
|
+
* uncapped inset then deflates the label box to nothing, so no font size fits
|
|
14
|
+
* and the label never renders at all. NaN and negative widths reach here too —
|
|
15
|
+
* an unparsable `stroke-width`, or the empty-booths `0 / 0` in
|
|
16
|
+
* `boothStore.borderWidth` — and fall out to zero rather than poisoning the box.
|
|
17
|
+
*
|
|
18
|
+
* @param borderWidth - stroke width actually painted for the booth
|
|
19
|
+
* @param size - the booth footprint
|
|
20
|
+
* @returns a non-negative inset, at most `LABEL_MARGIN_FRACTION` of the short side
|
|
21
|
+
*/
|
|
22
|
+
export declare function getLabelBorderInset(borderWidth: number, size: {
|
|
23
|
+
width: number;
|
|
24
|
+
height: number;
|
|
25
|
+
}): number;
|
|
26
|
+
//# sourceMappingURL=label-inset.d.ts.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Geometry shared by the booth label drawers for holding label text clear of
|
|
3
|
+
* the booth border.
|
|
4
|
+
*/
|
|
5
|
+
/** Margin held around a booth label, as a share of each rect dimension. */
|
|
6
|
+
export const LABEL_MARGIN_FRACTION = 0.05;
|
|
7
|
+
/**
|
|
8
|
+
* How far a label box is pulled in from the booth footprint to clear the drawn
|
|
9
|
+
* border — half the stroke, since the border straddles the footprint edge.
|
|
10
|
+
*
|
|
11
|
+
* Capped at the margin and floored at zero: a plan can publish a
|
|
12
|
+
* `boothBorderWidth` far larger than the strokes it actually draws, and an
|
|
13
|
+
* uncapped inset then deflates the label box to nothing, so no font size fits
|
|
14
|
+
* and the label never renders at all. NaN and negative widths reach here too —
|
|
15
|
+
* an unparsable `stroke-width`, or the empty-booths `0 / 0` in
|
|
16
|
+
* `boothStore.borderWidth` — and fall out to zero rather than poisoning the box.
|
|
17
|
+
*
|
|
18
|
+
* @param borderWidth - stroke width actually painted for the booth
|
|
19
|
+
* @param size - the booth footprint
|
|
20
|
+
* @returns a non-negative inset, at most `LABEL_MARGIN_FRACTION` of the short side
|
|
21
|
+
*/
|
|
22
|
+
export function getLabelBorderInset(borderWidth, size) {
|
|
23
|
+
const maxInset = LABEL_MARGIN_FRACTION * Math.min(size.width, size.height);
|
|
24
|
+
// `>` is false for NaN, so a NaN border width or footprint falls out to zero
|
|
25
|
+
return borderWidth > 0 && maxInset > 0 ? Math.min(borderWidth / 2, maxInset) : 0;
|
|
26
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type ImageDef, type LayerDef } from '@expofp/renderer';
|
|
2
|
+
/**
|
|
3
|
+
* Loads one configured layer's designer images and hands back where they belong.
|
|
4
|
+
*
|
|
5
|
+
* Resolves to `undefined` when there is nothing to place any more — an image load still in flight
|
|
6
|
+
* when the plan was destroyed, whose result no longer has a plan to be drawn into.
|
|
7
|
+
*/
|
|
8
|
+
export type LayerImagesHandler = () => Promise<{
|
|
9
|
+
layer: LayerDef;
|
|
10
|
+
children: ImageDef[];
|
|
11
|
+
} | undefined>;
|
|
12
|
+
/**
|
|
13
|
+
* Registers a layer's image loader under its layer name.
|
|
14
|
+
* @param name - The image layer's name.
|
|
15
|
+
* @param handler - Loads the images.
|
|
16
|
+
* @returns A disposer removing this registration, unless a newer one replaced it.
|
|
17
|
+
*/
|
|
18
|
+
export declare function registerLayerImages(name: string, handler: LayerImagesHandler): () => void;
|
|
19
|
+
/**
|
|
20
|
+
* Starts every registered loader.
|
|
21
|
+
* @returns One promise per registered layer.
|
|
22
|
+
*/
|
|
23
|
+
export declare function invokeLayerImages(): ReturnType<LayerImagesHandler>[];
|
|
24
|
+
//# sourceMappingURL=layer-images.d.ts.map
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { eventScopedCache } from '../../../../tools/event-scoped-cache.js';
|
|
2
|
+
/**
|
|
3
|
+
* The layer-image loaders, registered as layers configure and drained once the plan is up — the
|
|
4
|
+
* standalone registry that replaced `RendererService.layerImagesRegistry`, with the same contract:
|
|
5
|
+
* name-keyed, so a reconfigured layer's registration replaces its predecessor's rather than
|
|
6
|
+
* doubling it, and never cleared between scenes for the same reason.
|
|
7
|
+
*
|
|
8
|
+
* Per event, because "between scenes" stops at the plan: a layer name the next event does not use
|
|
9
|
+
* would otherwise keep the previous event's loader, and `invokeLayerImages()` would run it against
|
|
10
|
+
* a plan it was never built for (ADR-0011).
|
|
11
|
+
*/
|
|
12
|
+
const handlers = eventScopedCache();
|
|
13
|
+
/**
|
|
14
|
+
* Registers a layer's image loader under its layer name.
|
|
15
|
+
* @param name - The image layer's name.
|
|
16
|
+
* @param handler - Loads the images.
|
|
17
|
+
* @returns A disposer removing this registration, unless a newer one replaced it.
|
|
18
|
+
*/
|
|
19
|
+
export function registerLayerImages(name, handler) {
|
|
20
|
+
handlers().set(name, handler);
|
|
21
|
+
return () => {
|
|
22
|
+
if (handlers().get(name) === handler)
|
|
23
|
+
handlers().delete(name);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Starts every registered loader.
|
|
28
|
+
* @returns One promise per registered layer.
|
|
29
|
+
*/
|
|
30
|
+
export function invokeLayerImages() {
|
|
31
|
+
return [...handlers().values()].map((handler) => handler());
|
|
32
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type ModelDef } from '@expofp/renderer';
|
|
2
|
+
/**
|
|
3
|
+
* The attribute that turns a designer `<image>` into a 3D model: the URL of a
|
|
4
|
+
* .glb/.gltf, authored relative to the drawing. `@expofp/config` rebases it
|
|
5
|
+
* with every other asset URL the drawing carries when the payload loads, so
|
|
6
|
+
* what arrives here is already resolved — absolute for a live load,
|
|
7
|
+
* page-relative or rooted for an offline copy.
|
|
8
|
+
*/
|
|
9
|
+
export declare const MODEL_3D_ATTRIBUTE = "data-model-3d";
|
|
10
|
+
/**
|
|
11
|
+
* The rotation an element's `transform` carries, in radians.
|
|
12
|
+
*
|
|
13
|
+
* Only the first transform in the list is read, which is what the designer emits. It inherits the
|
|
14
|
+
* assumption `loadLayerImages` has always made: an SVG `rotate(a, cx, cy)` is treated as pivoting
|
|
15
|
+
* about the element's own center, because that is what a geometry `Rect` does. A transform with a
|
|
16
|
+
* different pivot is placed wrongly — pre-existing behavior, recorded rather than fixed here.
|
|
17
|
+
* @param element - The graphic to read.
|
|
18
|
+
* @returns The rotation in radians, positive = clockwise.
|
|
19
|
+
*/
|
|
20
|
+
export declare function svgTransformRotation(element: SVGGraphicsElement): number;
|
|
21
|
+
/**
|
|
22
|
+
* Builds a {@link ModelDef} from an `<image>` carrying {@link MODEL_3D_ATTRIBUTE}.
|
|
23
|
+
*
|
|
24
|
+
* Bounds come from the element's own x/y/width/height — `Box.fromSvg` reads an `<image>` as readily
|
|
25
|
+
* as a `<rect>` — combined with its transform's rotation. The URL is taken verbatim: the drawing
|
|
26
|
+
* reaches the runtime with its asset URLs already resolved.
|
|
27
|
+
* @param element - The placeholder image.
|
|
28
|
+
* @returns The model def.
|
|
29
|
+
*/
|
|
30
|
+
export declare function createModelDefFromElement(element: SVGImageElement): ModelDef;
|
|
31
|
+
//# sourceMappingURL=layer-models.d.ts.map
|