@expofp/floorplan 3.0.0-alpha.9 → 3.0.1
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/dist/browser/Debug-b2YI2Uxo.js +40 -0
- package/dist/browser/Demo-aEKqZbJJ.js +47 -0
- package/dist/browser/Free-BGr4o53R.js +51 -0
- package/dist/browser/Gallery-C9n64fhu.js +71 -0
- package/dist/browser/GpsLoader-ChxBR2EI.js +140 -0
- package/dist/browser/KioskStore-DkCSeq5I.js +225 -0
- package/dist/browser/Mapbox-Cl0Wxz2h.js +118 -0
- package/dist/browser/{SetKioskMode-C3fGoJPj.js → SetKioskMode-D3EJeF9c.js} +92 -83
- package/dist/browser/{ShowKiosk-D-477yKH.js → ShowKiosk-Bs5q-1RZ.js} +28 -19
- package/dist/browser/{ThreeComponent-Z1K-qX4i.js → ThreeComponent-CSsqNYDu.js} +181 -172
- package/dist/browser/ViewerMenuPanel-BMmB1p03.js +77 -0
- package/dist/browser/boolean-editor-DpnmndKH.js +157 -0
- package/dist/browser/bundle.json +34 -31
- package/dist/browser/{client-D6zJdOh6.js → client-CN_I7kK8.js} +848 -839
- package/dist/browser/compat-helper.js +5 -0
- package/dist/browser/{data-C6uYuLvP.js → data-CIAMSGsv.js} +278 -269
- package/dist/browser/{debug-overlay-BcmbSeG3.js → debug-overlay-DjmA0D2r.js} +100 -91
- package/dist/browser/debug-ui-D1QGTN8V.js +67 -0
- package/dist/browser/{favicon-DalyEhbd.js → favicon-BpTKNfwa.js} +11 -2
- package/dist/browser/fetch-retry.umd-B8hV1FNr.js +123 -0
- package/dist/browser/{flex-DA2yhKLl.js → flex-09atkOGP.js} +76 -67
- package/dist/browser/{floorplan.ready-DEdtWjzo.js → floorplan.ready-BQetaqdP.js} +20976 -22750
- package/dist/browser/fonts/efp-symbols.woff +0 -0
- package/dist/browser/{index-DSULYUX0.js → index-Bw6xZlSd.js} +46 -37
- package/dist/browser/{index-BAvspl75.js → index-C71k7nSe.js} +333 -324
- package/dist/browser/index-CWLY6XdC.js +92 -0
- package/dist/browser/index-D9pdVw-U.js +882 -0
- package/dist/browser/index-DPSQIIUy.js +57 -0
- package/dist/browser/index-jp-Zhdyp.js +54 -0
- package/dist/browser/index.html +1 -0
- package/dist/browser/index.js +12495 -2
- package/dist/browser/jsx-runtime-CoKhM3tL.js +40 -0
- package/dist/browser/locales/ar.json +56 -5
- package/dist/browser/locales/de.json +56 -5
- package/dist/browser/locales/es.json +56 -5
- package/dist/browser/locales/fr.json +56 -5
- package/dist/browser/locales/he.json +56 -5
- package/dist/browser/locales/it.json +56 -5
- package/dist/browser/locales/kk.json +56 -5
- package/dist/browser/locales/ko.json +56 -5
- package/dist/browser/locales/mn.json +56 -5
- package/dist/browser/locales/nl.json +56 -5
- package/dist/browser/locales/pl.json +57 -6
- package/dist/browser/locales/pt.json +55 -4
- package/dist/browser/locales/ru.json +57 -6
- package/dist/browser/locales/sv.json +56 -5
- package/dist/browser/locales/th.json +56 -5
- package/dist/browser/locales/tr.json +56 -5
- package/dist/browser/locales/uk.json +56 -5
- package/dist/browser/locales/vi.json +56 -5
- package/dist/browser/locales/zh.json +56 -5
- package/dist/browser/{main-CD9JioNt.js → main-DxaHLbma.js} +24 -15
- package/dist/browser/{particles.min-DcpKrPn3.js → particles.min-CsHbc6cO.js} +40 -31
- package/dist/esm/RouteCutIn.d.ts +0 -1
- package/dist/esm/RouteCutIn.js +1 -1
- package/dist/esm/_misc_to_move/manifest.d.ts +13 -0
- package/dist/esm/_misc_to_move/ref.d.ts +6 -0
- package/dist/esm/_misc_to_move/ref.js +1 -0
- package/dist/esm/components/Alert.d.ts +2 -0
- package/dist/esm/components/Alert.js +1 -1
- package/dist/esm/components/Badge.d.ts +3 -2
- package/dist/esm/components/Badge.js +1 -1
- package/dist/esm/components/Bookmarks.js +1 -1
- package/dist/esm/components/Booth/BoothOnHold.d.ts +2 -2
- package/dist/esm/components/Booth/BoothOnHold.js +1 -1
- package/dist/esm/components/Booth/BoothReserved.d.ts +2 -1
- package/dist/esm/components/Booth/BoothReserved.js +1 -1
- package/dist/esm/components/Booth/BoothWithoutExhibitor.d.ts +2 -2
- package/dist/esm/components/Booth/BoothWithoutExhibitor.js +1 -1
- package/dist/esm/components/CookieConsent.js +1 -1
- package/dist/esm/components/Exhibitor.js +1 -1
- package/dist/esm/components/Gallery/GalleryControls/GalleryControls.d.ts +2 -2
- package/dist/esm/components/Gallery/GalleryControls/GalleryControls.js +1 -1
- package/dist/esm/components/Gallery/GalleryModal/GalleryModal.d.ts +2 -2
- package/dist/esm/components/Gallery/GalleryModal/GalleryModal.js +1 -1
- package/dist/esm/components/Kiosk/KioskStore.d.ts +3 -3
- package/dist/esm/components/Kiosk/KioskStore.js +1 -1
- package/dist/esm/components/Kiosk/SetKiosk/storage.d.ts +1 -1
- package/dist/esm/components/Kiosk/SetKiosk/storage.js +1 -1
- package/dist/esm/components/Kiosk/ShowKiosk.js +1 -1
- package/dist/esm/components/Kiosk/integrateKiosk.js +1 -1
- package/dist/esm/components/Language.js +1 -1
- package/dist/esm/components/LanguageRow.d.ts +0 -1
- package/dist/esm/components/LanguageRow.js +1 -1
- package/dist/esm/components/Layout.js +1 -1
- package/dist/esm/components/List.js +1 -1
- package/dist/esm/components/LogoOverlay.js +1 -1
- package/dist/esm/components/Map/Map.d.ts +0 -23
- package/dist/esm/components/Map/Map.js +1 -1
- package/dist/esm/components/Map/booth-by-xy.js +1 -1
- package/dist/esm/components/Map/drawing/config/TextFitter.d.ts +1 -1
- package/dist/esm/components/Map/drawing/config/config-all.d.ts +2 -3
- package/dist/esm/components/Map/drawing/config/config-all.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-bg.d.ts +1 -1
- package/dist/esm/components/Map/drawing/config/config-bg.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-booth-badge.d.ts +9 -0
- package/dist/esm/components/Map/drawing/config/config-booth-badge.js +1 -0
- package/dist/esm/components/Map/drawing/config/config-booth-bg.d.ts +5 -5
- package/dist/esm/components/Map/drawing/config/config-booth-bg.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-booth-bookmark.d.ts +5 -5
- package/dist/esm/components/Map/drawing/config/config-booth-bookmark.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-booth-border.d.ts +3 -3
- package/dist/esm/components/Map/drawing/config/config-booth-border.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-booth-labels-special.d.ts +6 -6
- package/dist/esm/components/Map/drawing/config/config-booth-labels-special.js +2 -2
- package/dist/esm/components/Map/drawing/config/config-booth-labels.d.ts +5 -5
- package/dist/esm/components/Map/drawing/config/config-booth-labels.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-booth-scaled.d.ts +3 -3
- package/dist/esm/components/Map/drawing/config/config-booth-scaled.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-booths.d.ts +2 -2
- package/dist/esm/components/Map/drawing/config/config-booths.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-load-layer.d.ts +2 -2
- package/dist/esm/components/Map/drawing/config/config-load-layer.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-markers.d.ts +2 -3
- package/dist/esm/components/Map/drawing/config/config-markers.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-wf.d.ts +2 -5
- package/dist/esm/components/Map/drawing/config/config-wf.js +1 -1
- package/dist/esm/components/Map/drawing/config/loadBoothsImages.d.ts +2 -3
- package/dist/esm/components/Map/drawing/config/loadBoothsImages.js +1 -1
- package/dist/esm/components/Map/drawing/config/route-snapping/snapPositionToRoute.d.ts +1 -1
- package/dist/esm/components/Map/drawing/config/route-snapping/snapPositionToRoute.js +1 -1
- package/dist/esm/components/Map/drawing/config/route-snapping/splitRouteByPoint.d.ts +1 -1
- package/dist/esm/components/Map/drawing/config/route-snapping/splitRouteByPoint.js +1 -1
- package/dist/esm/components/Map/drawing/config/route-snapping/types.d.ts +1 -1
- package/dist/esm/components/Map/drawing/config/route-snapping/utils.d.ts +1 -1
- package/dist/esm/components/Map/traffic/useBuildRoute.d.ts +3 -5
- package/dist/esm/components/Map/traffic/useBuildRoute.js +6 -6
- package/dist/esm/components/Map/traffic/useManageTraffic.d.ts +3 -5
- package/dist/esm/components/Map/traffic/useManageTraffic.js +1 -1
- package/dist/esm/components/MarketMaterialList.d.ts +3 -3
- package/dist/esm/components/MarketMaterialList.js +1 -1
- package/dist/esm/components/Menu.js +1 -2
- package/dist/esm/components/MobileToggleButton.js +1 -1
- package/dist/esm/components/MultiSelectGroups.d.ts +2 -2
- package/dist/esm/components/MultiSelectGroups.js +1 -1
- package/dist/esm/components/Overlay.d.ts +2 -0
- package/dist/esm/components/Overlay.js +1 -1
- package/dist/esm/components/OverlayContainer.js +1 -1
- package/dist/esm/components/QrCode.d.ts +46 -0
- package/dist/esm/components/QrCode.js +1 -0
- package/dist/esm/components/RebookingNotes.d.ts +2 -2
- package/dist/esm/components/RebookingNotes.js +1 -1
- package/dist/esm/components/RebookingRadioGroup.d.ts +2 -2
- package/dist/esm/components/RebookingRadioGroup.js +1 -1
- package/dist/esm/components/RoutePlanner/RoutePlanner.d.ts +4 -0
- package/dist/esm/components/RoutePlanner/RoutePlanner.js +1 -0
- package/dist/esm/components/RoutePlanner/RoutePlannerHeader.d.ts +4 -0
- package/dist/esm/components/RoutePlanner/RoutePlannerHeader.js +1 -0
- package/dist/esm/components/RoutePlanner/RoutePlannerStartPoint.d.ts +9 -0
- package/dist/esm/components/RoutePlanner/RoutePlannerStartPoint.js +1 -0
- package/dist/esm/components/RoutePlanner/RoutePlannerStopItem.d.ts +9 -0
- package/dist/esm/components/RoutePlanner/RoutePlannerStopItem.js +1 -0
- package/dist/esm/components/RouteQR.d.ts +2 -2
- package/dist/esm/components/RouteQR.js +1 -1
- package/dist/esm/components/Schedule.js +1 -1
- package/dist/esm/components/SearchBox.js +1 -1
- package/dist/esm/components/Sessions.js +1 -1
- package/dist/esm/components/Share.d.ts +2 -2
- package/dist/esm/components/Share.js +1 -1
- package/dist/esm/components/SidebarActions.d.ts +3 -0
- package/dist/esm/components/SidebarActions.js +1 -1
- package/dist/esm/components/SpeakersFiltersModal.js +1 -1
- package/dist/esm/components/ViewerMenuPanel.d.ts +5 -0
- package/dist/esm/components/ViewerMenuPanel.js +1 -0
- package/dist/esm/components/Wayfinding.d.ts +2 -2
- package/dist/esm/components/Wayfinding.js +1 -1
- package/dist/esm/components/WayfindingTemplate.d.ts +2 -2
- package/dist/esm/components/WayfindingTemplate.js +1 -1
- package/dist/esm/components/gps/GpsPermissionRequest.d.ts +4 -2
- package/dist/esm/components/gps/GpsPermissionRequest.js +1 -1
- package/dist/esm/components/index.d.ts +1 -3
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/constants.d.ts +7 -0
- package/dist/esm/constants.js +1 -1
- package/dist/esm/data/tours.json +114 -0
- package/dist/esm/floorplan.loader.d.ts +5 -0
- package/dist/esm/floorplan.loader.js +1 -1
- package/dist/esm/floorplan.ready.d.ts +6 -3
- package/dist/esm/floorplan.ready.js +1 -1
- package/dist/esm/index.d.ts +0 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/load.d.ts +4 -1
- package/dist/esm/load.js +2 -2
- package/dist/esm/offline/offlineManager.js +1 -1
- package/dist/esm/renderer/HandlerRegistry.d.ts +18 -0
- package/dist/esm/renderer/HandlerRegistry.js +1 -0
- package/dist/esm/renderer/RendererService.d.ts +26 -0
- package/dist/esm/renderer/RendererService.js +1 -0
- package/dist/esm/renderer/engine-core/animation.d.ts +7 -0
- package/dist/esm/renderer/engine-core/animation.js +1 -0
- package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/canvases.d.ts +1 -1
- package/dist/esm/renderer/engine-core/canvases.js +1 -0
- package/dist/esm/renderer/engine-core/fonts.js +1 -0
- package/dist/esm/renderer/engine-core/types.js +1 -0
- package/dist/esm/{components/Map/drawing/config/engine-core → renderer}/index.d.ts +10 -10
- package/dist/esm/renderer/index.js +1 -0
- package/dist/esm/services/routing.js +1 -1
- package/dist/esm/store/BookmarksStore.d.ts +12 -0
- package/dist/esm/store/BookmarksStore.js +2 -0
- package/dist/esm/store/FuzzySearchEngineStore.d.ts +7 -3
- package/dist/esm/store/FuzzySearchEngineStore.js +1 -1
- package/dist/esm/store/LayerStore.d.ts +1 -0
- package/dist/esm/store/LayerStore.js +1 -1
- package/dist/esm/store/RootStore.d.ts +10 -10
- package/dist/esm/store/RootStore.js +1 -1
- package/dist/esm/store/RoutePlannerStore.d.ts +58 -0
- package/dist/esm/store/RoutePlannerStore.js +1 -0
- package/dist/esm/store/RouteStore.d.ts +1 -1
- package/dist/esm/store/RouteStore.js +1 -1
- package/dist/esm/store/SearchStore.d.ts +2 -0
- package/dist/esm/store/SearchStore.js +1 -1
- package/dist/esm/store/ToursStore.js +1 -1
- package/dist/esm/store/UIState.d.ts +10 -7
- package/dist/esm/store/UIState.js +1 -1
- package/dist/esm/store/init/index.js +1 -1
- package/dist/esm/store/init/init-bookmarks.d.ts +7 -0
- package/dist/esm/store/init/init-bookmarks.js +1 -0
- package/dist/esm/store/init/init-events.d.ts +1 -1
- package/dist/esm/store/init/init-events.js +1 -1
- package/dist/esm/store/init/init-exhibitors.d.ts +1 -1
- package/dist/esm/store/init/init-exhibitors.js +1 -1
- package/dist/esm/store/init/init-layers.js +1 -1
- package/dist/esm/store/init/init-speakers.d.ts +1 -1
- package/dist/esm/store/init/init-speakers.js +1 -1
- package/dist/esm/store/search-buttons/SearchButtonsStore.d.ts +1 -1
- package/dist/esm/store/search-buttons/SearchButtonsStore.js +1 -1
- package/dist/esm/store/types.d.ts +11 -3
- package/dist/esm/tools/base-runtime-url.js +1 -1
- package/dist/esm/tools/sentry.js +1 -1
- package/dist/esm/tools/telemetry.d.ts +35 -0
- package/dist/esm/tools/telemetry.js +1 -0
- package/dist/esm/tools/track-event.d.ts +3 -1
- package/dist/esm/tools/track-event.js +1 -1
- package/dist/esm/utils/buildOptimizedRoute.d.ts +11 -0
- package/dist/esm/utils/buildOptimizedRoute.js +1 -0
- package/dist/esm/utils/geometry.d.ts +2 -0
- package/dist/esm/utils/geometry.js +1 -0
- package/dist/esm/utils/i18n.d.ts +6 -4
- package/dist/esm/utils/i18n.js +1 -1
- package/dist/esm/utils/loadCustomCss.d.ts +1 -1
- package/dist/esm/utils/loadCustomCss.js +1 -1
- package/dist/esm/utils/mapEntity.js +1 -1
- package/dist/esm/utils/math.d.ts +7 -0
- package/dist/esm/utils/math.js +1 -0
- package/dist/esm/utils/shortenName.js +1 -1
- package/dist/esm/utils/use-shadow.d.ts +1 -1
- package/dist/esm/utils/use-shadow.js +1 -1
- package/dist/esm/utils/useRenderTarget.js +1 -1
- package/dist/esm/wayfinding/_PLAN-public-api.d.ts +220 -0
- package/dist/esm/wayfinding/_PLAN-public-api.js +1 -0
- package/dist/esm/{utils/wayfinding.d.ts → wayfinding/__integration__/legacy/legacyWayfinding.d.ts} +5 -15
- package/dist/esm/wayfinding/__integration__/legacy/legacyWayfinding.js +1 -0
- package/dist/esm/wayfinding/__tests__/helpers.d.ts +21 -0
- package/dist/esm/wayfinding/__tests__/helpers.js +1 -0
- package/dist/esm/wayfinding/adapters/boothToWaypoint.d.ts +12 -0
- package/dist/esm/wayfinding/adapters/boothToWaypoint.js +1 -0
- package/dist/esm/wayfinding/adapters/graphDataSource.d.ts +3 -0
- package/dist/esm/wayfinding/adapters/graphDataSource.js +1 -0
- package/dist/esm/wayfinding/graph/buildGraph.d.ts +3 -0
- package/dist/esm/wayfinding/graph/buildGraph.js +1 -0
- package/dist/esm/wayfinding/graph/buildNGraph.d.ts +9 -0
- package/dist/esm/wayfinding/graph/buildNGraph.js +1 -0
- package/dist/esm/wayfinding/graph/constants.d.ts +3 -0
- package/dist/esm/wayfinding/graph/constants.js +1 -0
- package/dist/esm/wayfinding/graph/findShortestPath.d.ts +14 -0
- package/dist/esm/wayfinding/graph/findShortestPath.js +1 -0
- package/dist/esm/wayfinding/graph/graphCache.d.ts +6 -0
- package/dist/esm/wayfinding/graph/graphCache.js +1 -0
- package/dist/esm/wayfinding/graph/graphHelpers.d.ts +8 -0
- package/dist/esm/wayfinding/graph/graphHelpers.js +1 -0
- package/dist/esm/wayfinding/graph/linkCost.d.ts +4 -0
- package/dist/esm/wayfinding/graph/linkCost.js +1 -0
- package/dist/esm/wayfinding/graph/pathfinder/aStarPathFinder.d.ts +3 -0
- package/dist/esm/wayfinding/graph/pathfinder/aStarPathFinder.js +1 -0
- package/dist/esm/wayfinding/graph/pathfinder/parseNodeId.d.ts +9 -0
- package/dist/esm/wayfinding/graph/pathfinder/parseNodeId.js +1 -0
- package/dist/esm/wayfinding/index.d.ts +18 -0
- package/dist/esm/wayfinding/index.js +1 -0
- package/dist/esm/wayfinding/rendering/computeTransitionPoints.d.ts +31 -0
- package/dist/esm/wayfinding/rendering/computeTransitionPoints.js +1 -0
- package/dist/esm/wayfinding/rendering/normalizeRouteDirection.d.ts +19 -0
- package/dist/esm/wayfinding/rendering/normalizeRouteDirection.js +1 -0
- package/dist/esm/wayfinding/rendering/routeGeometry.d.ts +16 -0
- package/dist/esm/wayfinding/rendering/routeGeometry.js +1 -0
- package/dist/esm/wayfinding/routing/buildMultiPointRoute.d.ts +11 -0
- package/dist/esm/wayfinding/routing/buildMultiPointRoute.js +1 -0
- package/dist/esm/wayfinding/routing/buildRoute.d.ts +9 -0
- package/dist/esm/wayfinding/routing/buildRoute.js +1 -0
- package/dist/esm/wayfinding/routing/findNearestGraphPoint.d.ts +21 -0
- package/dist/esm/wayfinding/routing/findNearestGraphPoint.js +1 -0
- package/dist/esm/wayfinding/routing/getGraphLines.d.ts +14 -0
- package/dist/esm/wayfinding/routing/getGraphLines.js +1 -0
- package/dist/esm/wayfinding/routing/getRouteLength.d.ts +3 -0
- package/dist/esm/wayfinding/routing/getRouteLength.js +1 -0
- package/dist/esm/wayfinding/routing/routeResult.d.ts +4 -0
- package/dist/esm/wayfinding/routing/routeResult.js +1 -0
- package/dist/esm/wayfinding/types.d.ts +76 -0
- package/dist/esm/wayfinding/types.js +1 -0
- package/package.json +4 -8
- package/dist/browser/Debug-k5RKtjZM.js +0 -31
- package/dist/browser/Demo-CgMWCXus.js +0 -38
- package/dist/browser/Free-D7jT727E.js +0 -42
- package/dist/browser/Gallery-xjcSyY62.js +0 -279
- package/dist/browser/GpsLoader-_4iMtlKj.js +0 -131
- package/dist/browser/KioskStore-P8qIruSD.js +0 -216
- package/dist/browser/Mapbox-C7QZjYtQ.js +0 -109
- package/dist/browser/boolean-editor-C56suuE-.js +0 -148
- package/dist/browser/debug-ui-xTxa_Css.js +0 -58
- package/dist/browser/fetch-retry.umd-D12eSIuK.js +0 -114
- package/dist/browser/index-04R_J8Na.js +0 -45
- package/dist/browser/index-1HPoYB-N.js +0 -12526
- package/dist/browser/index-D1Nh_Rku.js +0 -48
- package/dist/browser/index-DmIJrF5Z.js +0 -83
- package/dist/browser/jsx-runtime-jIxVPx5o.js +0 -31
- package/dist/browser/sw.js +0 -2
- package/dist/esm/components/BoothRow.d.ts +0 -8
- package/dist/esm/components/BoothRow.js +0 -1
- package/dist/esm/components/ExhibitorRow.d.ts +0 -9
- package/dist/esm/components/ExhibitorRow.js +0 -1
- package/dist/esm/components/Map/drawing/config/engine-core/animation.d.ts +0 -3
- package/dist/esm/components/Map/drawing/config/engine-core/animation.js +0 -1
- package/dist/esm/components/Map/drawing/config/engine-core/canvases.js +0 -1
- package/dist/esm/components/Map/drawing/config/engine-core/fonts.js +0 -1
- package/dist/esm/components/Map/drawing/config/engine-core/index.js +0 -1
- package/dist/esm/components/Map/drawing/config/engine-core/renderer.d.ts +0 -4
- package/dist/esm/components/Map/drawing/config/engine-core/renderer.js +0 -1
- package/dist/esm/components/ScheduleRow.d.ts +0 -8
- package/dist/esm/components/ScheduleRow.js +0 -1
- package/dist/esm/expofp-debug.d.ts +0 -5
- package/dist/esm/expofp-debug.js +0 -1
- package/dist/esm/offline/sw.d.ts +0 -2
- package/dist/esm/offline/sw.js +0 -1
- package/dist/esm/store/LanguageStore.d.ts +0 -19
- package/dist/esm/store/LanguageStore.js +0 -1
- package/dist/esm/store/init/init-language.d.ts +0 -3
- package/dist/esm/store/init/init-language.js +0 -1
- package/dist/esm/utils/toRadians.d.ts +0 -3
- package/dist/esm/utils/toRadians.js +0 -1
- package/dist/esm/utils/wayfinding.js +0 -1
- package/dist/stats.html +0 -4950
- /package/dist/esm/{components/Map/drawing/config/engine-core/types.js → _misc_to_move/manifest.js} +0 -0
- /package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/defs.d.ts +0 -0
- /package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/defs.js +0 -0
- /package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/fonts.d.ts +0 -0
- /package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/settings.d.ts +0 -0
- /package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/settings.js +0 -0
- /package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/types.d.ts +0 -0
- /package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/update-def.d.ts +0 -0
- /package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/update-def.js +0 -0
- /package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/utils/rotation.d.ts +0 -0
- /package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/utils/rotation.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const _="efp-telemetry",M=3e5,N=1e3;function g(s=_){return{get(){try{const r=localStorage.getItem(s);return r?JSON.parse(r):null}catch{return null}},set(r){try{localStorage.setItem(s,JSON.stringify(r))}catch(n){console.error("Failed to persist telemetry data",n)}},clear(){try{localStorage.removeItem(s)}catch(r){console.error("Failed to clear telemetry data",r)}}}}function R(s){const r=s.headers.get("Retry-After");if(!r)return 0;let n=0;const a=Number(r);if(Number.isFinite(a))n=a*1e3;else{const o=Date.parse(r);isNaN(o)||(n=Math.max(0,o-Date.now()))}return Math.min(n,3e5)}export function createTelemetry(s){const{url:r,expo:n,expoId:a,storage:o=g()}=s;let c=s.kioskId??"";function l(){const e=o.get();return e?(e.expo=n,e.expoId=a,e.kioskId=c,e):{expo:n,expoId:a,kioskId:c,items:[]}}function y(e){c=e}let u=!1,f=!1,d=0;async function m(){if(u){f=!0;return}u=!0;do{if(f=!1,performance.now()<d)break;let e=null;try{if(e=l(),e.items.length===0)break;o.clear();const t=JSON.stringify(e),p=new TextEncoder().encode(t).byteLength,i=await fetch(r,{method:"POST",body:t,headers:{"Content-Type":"application/json"},credentials:"omit",keepalive:p<63e3});if(!i.ok){if(i.status===429||i.status===503){const h=R(i);h>0&&(d=performance.now()+h)}E(e),console.error(`Failed to send telemetry: HTTP ${i.status}`)}}catch(t){e&&E(e),console.error("Failed to send telemetry",t)}}while(f);u=!1}function E(e){const t=l();t.items=[...e.items,...t.items],t.items.length>1e3&&(t.items=t.items.slice(-1e3)),o.set(t)}function T(e){const t=l();t.items.push(e),t.items.length>1e3&&(t.items=t.items.slice(-1e3)),o.set(t)}async function S(e){T(e),await m()}return{enqueue:T,send:S,flush:m,setKioskId:y}}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
type TrackEventType = "load" | "exview" | "search" | "route" | "share" | "booview" | "catview";
|
|
2
|
+
export default function trackEvent(type: TrackEventType, value?: any): Promise<void>;
|
|
3
|
+
export {};
|
|
2
4
|
//# sourceMappingURL=track-event.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import c from"../data";import a from"./logger";import{yahKey as m}from"../utils/yah";import{getLocationHistory as f}from"../services/routing";import{uiState as u}from"../store";import{getSavedKiosk as p}from"../components/Kiosk/SetKiosk";import{requestKioskKey as d}from"../components/Kiosk/requestKioskKey";import{createTelemetry as g}from"./telemetry";let i;function S(){if(i)return i;const o=window.__efpEvent;let t;try{const e=new URL(c.trackerUrl).searchParams.get("expoId");t=e?Number(e):void 0}catch(e){a.error(e)}return i=g({url:"https://app.expofp.com/api/telemetry",expo:o,expoId:t}),i}function s(o,t){const e=localStorage.getItem(m),n=f(),r=n[n.length-2];return{type:o,value:t!==void 0?String(t):"",timestamp:new Date().toISOString(),url:`${window.location.href}${e?`#${encodeURIComponent(e)}`:""}`,referrer:r?window.location.origin+r:""}}function v(){return!!c?.trackerUrl&&process.env.NODE_ENV==="production"&&!u.heatmap}export default async function y(o,t){if(a.log("trackEvent",o,t),!!v())try{const e=S(),n=p();if(n){const r=await k(n);if(r)e.setKioskId(r);else{e.enqueue(s(o,t));return}}h(e),await e.send(s(o,t))}catch(e){a.error("trackEvent",String(e))}}async function k(o){if(!o)return null;const t="expofp-kiosk-stats-id";let e=localStorage.getItem(t);return e||(e=await d(o,"https://app.expofp.com/"),e?(localStorage.setItem(t,e),e):null)}let l=!1;function h(o){if(l)return;l=!0;const t="efp-track-events";try{const e=localStorage.getItem(t);if(!e)return;const n=JSON.parse(e);if(!Array.isArray(n)){localStorage.removeItem(t);return}for(const r of n)!r||typeof r!="object"||!r.headers||o.enqueue({type:r.type,value:r.value!==void 0?String(r.value):"",timestamp:r.timeStamp,url:r.headers["X-href"],referrer:r.headers["X-ref"]??""});localStorage.removeItem(t)}catch(e){localStorage.removeItem(t),a.error("Failed to migrate old events.",String(e))}}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type Point = {
|
|
2
|
+
cx: number;
|
|
3
|
+
cy: number;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Optimizes waypoint ordering to minimize total travel distance.
|
|
7
|
+
* Nearest neighbor O(n²) + 2-opt refinement O(k·n²), k ≤ 100.
|
|
8
|
+
*/
|
|
9
|
+
export declare function buildOptimizedRoute(data: [string, Point][]): string[];
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=buildOptimizedRoute.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const d=100,x=-.01;export function buildOptimizedRoute(s){const c=new Map(s),t=Array.from(c.keys());if(t.length<=2)return t;const e=b(t,c);return e.length<4?e:u(e,c)}function b(s,c){const t=[s[0]],e=new Set(s);e.delete(s[0]);let M=s[0];for(;e.size>0;){const r=c.get(M);let n="",a=1/0;for(const o of e){const l=c.get(o),i=Math.abs(r.cx-l.cx)+Math.abs(r.cy-l.cy);i<a&&(a=i,n=o)}if(!n)break;t.push(n),e.delete(n),M=n}return t}function u(s,c){const t=[...s];let e=!0;for(let M=0;e&&M<100;M++){e=!1;t:for(let r=1;r<t.length-2;r++)for(let n=r+1;n<t.length-1;n++){const a=c.get(t[r-1]),o=c.get(t[r]),l=c.get(t[n]),i=c.get(t[n+1]);if(Math.abs(a.cx-l.cx)+Math.abs(a.cy-l.cy)+Math.abs(o.cx-i.cx)+Math.abs(o.cy-i.cy)-(Math.abs(a.cx-o.cx)+Math.abs(a.cy-o.cy))-(Math.abs(l.cx-i.cx)+Math.abs(l.cy-i.cy))<-.01){for(let f=r,h=n;f<h;f++,h--)[t[f],t[h]]=[t[h],t[f]];e=!0;break t}}}return t}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function pointInTriangle(e,f,t){const[i,u]=t[0],[x,a]=t[1],[n,o]=t[2],c=(a-o)*(i-n)+(n-x)*(u-o);if(c===0)return!1;const s=((a-o)*(e-n)+(n-x)*(f-o))/c,r=((o-u)*(e-n)+(i-n)*(f-o))/c,p=1-s-r;return s>=0&&s<=1&&r>=0&&r<=1&&p>=0&&p<=1}
|
package/dist/esm/utils/i18n.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { TFunction } from "i18next";
|
|
2
2
|
export declare const getLocale: () => string;
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const
|
|
3
|
+
export declare const getLocales: () => readonly Language[];
|
|
4
|
+
export declare const hasLocale: (id: string) => boolean;
|
|
5
5
|
export declare const t: (template: string, options?: any) => string;
|
|
6
|
-
export declare const
|
|
6
|
+
export declare const initI18n: () => Promise<TFunction>;
|
|
7
|
+
export declare const setLocale: (id: string) => Promise<void>;
|
|
8
|
+
export declare const resetLocale: () => Promise<void>;
|
|
7
9
|
//# sourceMappingURL=i18n.d.ts.map
|
package/dist/esm/utils/i18n.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import n from"i18next";import{observable as u}from"mobx";import{loadJson as y}from"../tools/loaders";import{isLocalStorageAvailable as i}from"./localStorage";import p from"../locales";import{LANGUAGE_TYPE as S}from"../constants";import w from"../tools/base-runtime-url";const l="en",s="efp-locale",g="language",c=u.box(l),m=u.array([],{deep:!1}),f=o=>y(`${w}locales/${o}.json`),v=()=>{if(!i)return null;const o=localStorage.getItem(s),e=localStorage.getItem(g);return e&&localStorage.removeItem(g),o||(e&&localStorage.setItem(s,e),e)},d=()=>{const o=window.__data,e=navigator.languages?.[0]||navigator.language,a=Object.keys(p).find(r=>e.startsWith(r));return(v()||o?.locale||a||l).toLowerCase()};export const getLocale=()=>c.get(),getLocales=()=>m,hasLocale=o=>m.some(e=>e.id===o),t=(o,e)=>(c.get(),n.t(o,e)),initI18n=async()=>{m.replace(Object.entries(p).sort(([a],[r])=>a.localeCompare(r)).map(([a,r])=>({id:a,name:r,entity:{type:S}})));let o=d();const e={};if(o!==l)try{e[o]={translation:await f(o)}}catch(a){console.error(`Unable to load "${o}" localization, falling back to "${l}".`,a),o=l}return c.set(o),n.init({resources:e,lng:o,keySeparator:!1,saveMissing:o!==l,missingKeyHandler:(a,r,L,b)=>console.debug(`i18n missing key: '${a[0]}:${r}:${L}', fallback: '${b}'`)})},setLocale=async o=>{const e=o.toLowerCase();try{e!==l&&!n.hasResourceBundle(e,"translation")&&n.addResourceBundle(e,"translation",await f(e),!0,!0),await n.changeLanguage(e),c.set(e),i&&localStorage.setItem(s,e)}catch(a){console.error(`Failed to switch language to "${e}":`,a)}},resetLocale=async()=>(i&&(localStorage.removeItem(s),localStorage.removeItem(g)),setLocale(d()));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{loadCustomFonts as
|
|
1
|
+
import{loadCustomFonts as e}from"../tools/loaders";export async function loadCustomCss(s,o){if(s?.customCss){const t=document.createElement("style");t.textContent=s.customCss,o.append(t),await e(s.customCss)}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export function mapEntity(n){switch(n.entity.type){case"booth":return{id:n.id,name:e(n.name),externalId:e(n.externalId),isSpecial:n.entity.variant==="special",exhibitors:
|
|
1
|
+
import{LANGUAGE_TYPE as t}from"../constants";export function mapEntity(n){switch(n.entity.type){case"booth":return{id:n.id,name:e(n.name),externalId:e(n.externalId),isSpecial:n.entity.variant==="special",exhibitors:r(n.exhibitors),layer:{name:e(n.layer?.name),description:e(n.layer?.description)},meta:n.meta,description:e(n.description),entity:n.entity,title:e(n.title)};case"category":return{id:n.id,name:e(n.name),exhibitors:r(n.exhibitors),entity:n.entity,slug:e(n.slug)};case"exhibitor":return{id:n.id,name:e(n.name),externalId:e(n.externalId),booths:r(n.booths),entity:n.entity,slug:e(n.slug)};case"schedule":return{id:n.id,externalId:e(n.externalId),boothId:n.boothId,exhibitorId:n.exhibitorId,name:e(n.name),description:e(n.description),startDate:e(n.startDate),endDate:e(n.endDate),link:e(n.link),entity:n.entity,isEnded:n.isEnded};case t:return{id:n.id,name:e(n.name),entity:n.entity};case"heatmap-yah":return{id:e(n.id),name:e(n.name),viewCount:n.viewCount||0,x:n.x||0,y:n.y||0,z:n.z,entity:n.entity};default:return n}}function r(n){return Array.isArray(n)?n.filter(Boolean).map(a=>a.id).filter(Boolean):[]}function e(n){return typeof n=="string"?n:""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const toRadians: (degrees: number) => number;
|
|
2
|
+
/**
|
|
3
|
+
* Reduces a number by a given percentage.
|
|
4
|
+
* Example: decreaseByPercentage(200, 10) → 180
|
|
5
|
+
*/
|
|
6
|
+
export declare function decreaseByPercentage(value: number, percentage: number): number;
|
|
7
|
+
//# sourceMappingURL=math.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=Math.PI/180;export const toRadians=t=>t?t*e:0;export function decreaseByPercentage(t,n){return t*(1-n/100)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export function shortenName(
|
|
1
|
+
export function shortenName(r){return typeof r!="string"?r:r.split(" ").map(n=>{const t=n.replace(/[^A-Z0-9+-]/gi,""),e=t.match(/^[-+]?\d+$/);return e?e[0]:/^[A-Z]{2,4}$/.test(t)?t:t.charAt(0).toUpperCase()}).join("")}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e
|
|
1
|
+
import{isLocalStorageAvailable as o}from"./localStorage";const e=typeof document<"u"&&!!document.body?.attachShadow&&o&&localStorage.getItem("noShadowDom")!=="1"&&typeof window.FontFace<"u";export default e;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useEffect as
|
|
1
|
+
import{useEffect as f,useState as m}from"react";import{uiState as t}from"../store";import{getRenderTargetFromRoot as u}from"./getRenderTargetFromRoot";export const useRenderTarget=()=>{const[l,i]=m(()=>u(t.rootElement));return f(()=>{if(typeof window>"u"||!t.rootElement)return;let o=!1,e=null;const n=()=>{const r=u(t.rootElement);return r&&!o?(i(s=>s!==r?r:s),!0):!1};if(n())return;const a=t.rootElement.firstElementChild?.shadowRoot??t.rootElement;return e=new MutationObserver(()=>{n()&&e&&e.disconnect()}),e.observe(a,{childList:!0,subtree:!0}),()=>{o=!0,e&&e.disconnect()}},[t.rootElement]),l};
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
export type Unsubscribe = () => void;
|
|
2
|
+
export interface Point {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
layer: string;
|
|
6
|
+
}
|
|
7
|
+
export interface RouteEstimation {
|
|
8
|
+
/** Длина маршрута в единицах пространства */
|
|
9
|
+
distance: number;
|
|
10
|
+
/** Примерное время в секундах */
|
|
11
|
+
duration: number;
|
|
12
|
+
}
|
|
13
|
+
export interface Route {
|
|
14
|
+
points: Point[];
|
|
15
|
+
estimation: RouteEstimation;
|
|
16
|
+
}
|
|
17
|
+
export interface RouteResult {
|
|
18
|
+
primary: Route;
|
|
19
|
+
alternatives: Route[];
|
|
20
|
+
}
|
|
21
|
+
export interface RouteRequest {
|
|
22
|
+
from: Point;
|
|
23
|
+
to: Point;
|
|
24
|
+
}
|
|
25
|
+
export interface MultiPointRouteRequest {
|
|
26
|
+
points: [Point, Point, ...Point[]];
|
|
27
|
+
/**
|
|
28
|
+
* false (дефолт) — маршрут строится в переданном порядке точек.
|
|
29
|
+
* true — порядок промежуточных точек оптимизируется (TSP).
|
|
30
|
+
* Старт и финиш (первая и последняя точки) всегда фиксированы.
|
|
31
|
+
*/
|
|
32
|
+
optimize?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export type ManeuverType = 'straight' | 'turn-left' | 'turn-right' | 'turn-slight-left' | 'turn-slight-right' | 'u-turn' | 'take-elevator' | 'take-stairs' | 'take-escalator' | 'exit-building' | 'enter-building' | 'change-layer' | 'arrive';
|
|
35
|
+
export interface Instruction {
|
|
36
|
+
type: ManeuverType;
|
|
37
|
+
/** Локализованный текст */
|
|
38
|
+
text: string;
|
|
39
|
+
/** Расстояние до следующего манёвра */
|
|
40
|
+
distance: number;
|
|
41
|
+
bearing?: number;
|
|
42
|
+
isLayerTransition: boolean;
|
|
43
|
+
}
|
|
44
|
+
export interface NavigationProgress {
|
|
45
|
+
status: 'active' | 'paused' | 'arrived' | 'off-route';
|
|
46
|
+
currentInstruction: Instruction;
|
|
47
|
+
nextInstruction: Instruction | null;
|
|
48
|
+
distanceToNextManeuver: number;
|
|
49
|
+
distanceToDestination: number;
|
|
50
|
+
/** Секунды */
|
|
51
|
+
timeToDestination: number;
|
|
52
|
+
currentLayer: string;
|
|
53
|
+
/** Позиция пользователя привязанная к маршруту */
|
|
54
|
+
snappedPoint: Point;
|
|
55
|
+
offRouteDistance?: number;
|
|
56
|
+
}
|
|
57
|
+
export interface UserPosition {
|
|
58
|
+
point: Point;
|
|
59
|
+
heading?: number;
|
|
60
|
+
}
|
|
61
|
+
export interface MarkerIcon {
|
|
62
|
+
svg: string;
|
|
63
|
+
width?: number;
|
|
64
|
+
height?: number;
|
|
65
|
+
}
|
|
66
|
+
export interface RouteLineStyle {
|
|
67
|
+
color?: string;
|
|
68
|
+
width?: number;
|
|
69
|
+
opacity?: number;
|
|
70
|
+
}
|
|
71
|
+
export type RouteAnimation = (lines: LineDef[], route: Route) => () => void;
|
|
72
|
+
export interface LineDef {
|
|
73
|
+
points: [Vector2Like, Vector2Like];
|
|
74
|
+
color: string;
|
|
75
|
+
width: number;
|
|
76
|
+
}
|
|
77
|
+
export interface Vector2Like {
|
|
78
|
+
x: number;
|
|
79
|
+
y: number;
|
|
80
|
+
}
|
|
81
|
+
export interface RendererStyle {
|
|
82
|
+
route?: RouteLineStyle;
|
|
83
|
+
animation?: RouteAnimation;
|
|
84
|
+
alternativeRoute?: {
|
|
85
|
+
line?: RouteLineStyle;
|
|
86
|
+
opacity?: number;
|
|
87
|
+
};
|
|
88
|
+
markers?: {
|
|
89
|
+
origin?: MarkerIcon;
|
|
90
|
+
destination?: MarkerIcon;
|
|
91
|
+
waypoint?: MarkerIcon;
|
|
92
|
+
userPosition?: MarkerIcon;
|
|
93
|
+
layerTransition?: {
|
|
94
|
+
up?: MarkerIcon;
|
|
95
|
+
down?: MarkerIcon;
|
|
96
|
+
/** Переход без смены уровня (например переход между корпусами на одном этаже) */
|
|
97
|
+
same?: MarkerIcon;
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Рендерер — единственная визуальная зависимость wayfinding-модуля.
|
|
103
|
+
* Реализуй этот интерфейс если хочешь использовать свой рендерер.
|
|
104
|
+
*/
|
|
105
|
+
export interface WayfindingRenderer {
|
|
106
|
+
renderRoute(route: Route, style: RendererStyle): void;
|
|
107
|
+
renderAlternatives(routes: Route[], style: RendererStyle): void;
|
|
108
|
+
clearRoute(): void;
|
|
109
|
+
renderPosition(position: UserPosition): void;
|
|
110
|
+
clearPosition(): void;
|
|
111
|
+
/** Переключить отображаемый слой */
|
|
112
|
+
setActiveLayer(layerId: string): void;
|
|
113
|
+
destroy(): void;
|
|
114
|
+
}
|
|
115
|
+
export interface WayfindingEventMap {
|
|
116
|
+
'route:ready': {
|
|
117
|
+
result: RouteResult;
|
|
118
|
+
};
|
|
119
|
+
'route:error': {
|
|
120
|
+
error: WayfindingError;
|
|
121
|
+
};
|
|
122
|
+
'route:cleared': Record<string, never>;
|
|
123
|
+
'navigation:started': {
|
|
124
|
+
route: Route;
|
|
125
|
+
};
|
|
126
|
+
'navigation:progress': {
|
|
127
|
+
progress: NavigationProgress;
|
|
128
|
+
};
|
|
129
|
+
'navigation:instruction': {
|
|
130
|
+
instruction: Instruction;
|
|
131
|
+
};
|
|
132
|
+
'navigation:deviation': {
|
|
133
|
+
offRouteDistance: number;
|
|
134
|
+
};
|
|
135
|
+
'navigation:rerouting': Record<string, never>;
|
|
136
|
+
'navigation:rerouted': {
|
|
137
|
+
result: RouteResult;
|
|
138
|
+
};
|
|
139
|
+
'navigation:arrived': Record<string, never>;
|
|
140
|
+
'navigation:stopped': Record<string, never>;
|
|
141
|
+
'navigation:paused': Record<string, never>;
|
|
142
|
+
'navigation:resumed': Record<string, never>;
|
|
143
|
+
'location:update': {
|
|
144
|
+
position: UserPosition;
|
|
145
|
+
};
|
|
146
|
+
'location:lost': Record<string, never>;
|
|
147
|
+
'layer:change': {
|
|
148
|
+
from: string | null;
|
|
149
|
+
to: string;
|
|
150
|
+
};
|
|
151
|
+
'error': {
|
|
152
|
+
error: WayfindingError;
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
export type WayfindingEventName = keyof WayfindingEventMap;
|
|
156
|
+
export type WayfindingErrorCode = 'NO_ROUTE_FOUND' | 'SPACE_NOT_LOADED' | 'LOCATION_UNAVAILABLE' | 'UNKNOWN';
|
|
157
|
+
export interface WayfindingError {
|
|
158
|
+
code: WayfindingErrorCode;
|
|
159
|
+
message: string;
|
|
160
|
+
cause?: unknown;
|
|
161
|
+
}
|
|
162
|
+
export interface WayfindingEngineConfig {
|
|
163
|
+
/**
|
|
164
|
+
* Данные пространства — передаются как есть.
|
|
165
|
+
* Engine сам определяет формат (lines/lineEnds, GeoJSON, NavMesh, Grid…)
|
|
166
|
+
* через зарегистрированные адаптеры.
|
|
167
|
+
*/
|
|
168
|
+
space: unknown;
|
|
169
|
+
/**
|
|
170
|
+
* Рендерер — рисует маршрут, маркеры, анимацию.
|
|
171
|
+
* Передай свой если уже есть своя карта.
|
|
172
|
+
*/
|
|
173
|
+
renderer: WayfindingRenderer;
|
|
174
|
+
/** Начальный стиль. Незаданные поля — дефолты рендерера. */
|
|
175
|
+
style?: RendererStyle;
|
|
176
|
+
rerouting?: {
|
|
177
|
+
/** Включить автоматический перерасчёт маршрута. По умолчанию false. */
|
|
178
|
+
enabled: boolean;
|
|
179
|
+
/** Расстояние отклонения от маршрута в единицах пространства после которого запускается перерасчёт */
|
|
180
|
+
threshold: number;
|
|
181
|
+
};
|
|
182
|
+
locale?: string;
|
|
183
|
+
}
|
|
184
|
+
export interface WayfindingEngine {
|
|
185
|
+
destroy(): void;
|
|
186
|
+
/** Построить маршрут. Результат также придёт событием 'route:ready'. */
|
|
187
|
+
route(request: RouteRequest): Promise<RouteResult>;
|
|
188
|
+
/** Построить маршрут через несколько точек в заданном порядке. */
|
|
189
|
+
routeMultiPoint(request: MultiPointRouteRequest): Promise<RouteResult>;
|
|
190
|
+
getCurrentRoute(): RouteResult | null;
|
|
191
|
+
clearRoute(): void;
|
|
192
|
+
startNavigation(): Promise<void>;
|
|
193
|
+
pauseNavigation(): void;
|
|
194
|
+
resumeNavigation(): void;
|
|
195
|
+
stopNavigation(): void;
|
|
196
|
+
getProgress(): NavigationProgress | null;
|
|
197
|
+
/**
|
|
198
|
+
* Обновить позицию пользователя.
|
|
199
|
+
* Если position.point.layer === 'unknown' — engine определит слой автоматически
|
|
200
|
+
* через snap к ближайшему узлу пространства и выдаст 'location:update'
|
|
201
|
+
* с разрешённым layer.
|
|
202
|
+
*/
|
|
203
|
+
updatePosition(position: UserPosition): void;
|
|
204
|
+
on<E extends WayfindingEventName>(event: E, handler: (payload: WayfindingEventMap[E]) => void): Unsubscribe;
|
|
205
|
+
once<E extends WayfindingEventName>(event: E, handler: (payload: WayfindingEventMap[E]) => void): Unsubscribe;
|
|
206
|
+
/** Текущее состояние — для синхронного чтения при первом рендере */
|
|
207
|
+
getState(): WayfindingState;
|
|
208
|
+
}
|
|
209
|
+
/** Factory function — создаёт и инициализирует engine. */
|
|
210
|
+
export declare function createWayfindingEngine(config: WayfindingEngineConfig): Promise<WayfindingEngine>;
|
|
211
|
+
export interface WayfindingState {
|
|
212
|
+
route: RouteResult | null;
|
|
213
|
+
progress: NavigationProgress | null;
|
|
214
|
+
/** Текущий активный слой карты */
|
|
215
|
+
activeLayer: string | null;
|
|
216
|
+
/** Последняя известная позиция пользователя с разрешённым layer */
|
|
217
|
+
userPosition: UserPosition | null;
|
|
218
|
+
spaceLoaded: boolean;
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=_PLAN-public-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{};
|
package/dist/esm/{utils/wayfinding.d.ts → wayfinding/__integration__/legacy/legacyWayfinding.d.ts}
RENAMED
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Booth } from "../../../store/BoothStore";
|
|
2
2
|
export declare class RouteLine {
|
|
3
3
|
p0: RoutePoint;
|
|
4
4
|
p1: RoutePoint;
|
|
5
5
|
unaccessible: boolean;
|
|
6
6
|
unidirection: boolean;
|
|
7
7
|
virtual: boolean;
|
|
8
|
-
ended: boolean;
|
|
9
8
|
weight: number;
|
|
10
|
-
constructor(p0: RoutePoint, p1: RoutePoint, unaccessible: boolean, unidirection: boolean, virtual: boolean,
|
|
9
|
+
constructor(p0: RoutePoint, p1: RoutePoint, unaccessible: boolean, unidirection: boolean, virtual: boolean, weight: number);
|
|
11
10
|
}
|
|
12
11
|
export declare class RoutePoint {
|
|
13
12
|
layer: string;
|
|
@@ -20,18 +19,9 @@ type Sublines = {
|
|
|
20
19
|
lineEnds: RoutePoint[];
|
|
21
20
|
};
|
|
22
21
|
export declare let sublines: () => Sublines;
|
|
22
|
+
export declare function resetPathFinder(): void;
|
|
23
|
+
export declare function setSublines(fn: () => Sublines): void;
|
|
23
24
|
export declare function getGraphLines(fromBooth: Booth, toBooth: Booth, onlyAccessible?: boolean, waypoints?: Booth[]): RouteLine[];
|
|
24
|
-
export declare class DistanceOptimizedRoute {
|
|
25
|
-
private distanceMetric;
|
|
26
|
-
private readonly rectMap;
|
|
27
|
-
readonly waypoints: string[];
|
|
28
|
-
constructor(data: [string, {
|
|
29
|
-
cx: number;
|
|
30
|
-
cy: number;
|
|
31
|
-
}][], distanceMetric?: (x1: number, y1: number, x2: number, y2: number) => number);
|
|
32
|
-
private static defaultManhattanDistance;
|
|
33
|
-
private getSortedByDistance;
|
|
34
|
-
}
|
|
35
25
|
export declare function getRouteLength(routeLines: RouteLine[]): number;
|
|
36
26
|
export {};
|
|
37
|
-
//# sourceMappingURL=
|
|
27
|
+
//# sourceMappingURL=legacyWayfinding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{lineAngle as L,lineLength as w,Point as u,pointInsideRectangle as F,Rect as I}from"simple-geometry";import $ from"../../../core/Polygon";import M from"../../graph/utils/a-star/a-star";import S from"ngraph.graph";export class RouteLine{p0;p1;unaccessible;unidirection;virtual;weight;constructor(n,r,s,a,i,t){this.p0=n,this.p1=r,this.unaccessible=s,this.unidirection=a,this.virtual=i,this.weight=t}}export class RoutePoint{layer;x;y;constructor(n,r,s){this.layer=n,this.x=r,this.y=s}}const P=e=>`${e.layer}_${e.x}_${e.y}`,b=(e,n)=>e.layer===n.layer&&w(e,n)<=1,W=(e,n,r)=>b(e.p0,n)&&b(e.p1,r)&&e.p0.layer===n.layer&&e.p1.layer===r.layer||b(e.p0,r)&&b(e.p1,n)&&e.p0.layer===r.layer&&e.p1.layer===n.layer;function _(e){const n=e.split("_");return[n[0],parseFloat(n[1]),parseFloat(n[2])]}export let sublines=()=>window.__wfData;let g={finder:null,oriented:!0,onlyAccessible:!1};export function resetPathFinder(){g.finder=null}export function setSublines(e){sublines=e}const k=0;function T(e,n){const r=S(),s=performance.now();let{lines:a}=sublines();a.forEach(t=>{(!n||!t.unaccessible)&&(r.addLink(P(t.p0),P(t.p1),{distance:t.virtual?k:w(t.p0,t.p1)/(t.weight||4)}),e&&!t.unidirection&&r.addLink(P(t.p1),P(t.p0),{distance:t.virtual?k:w(t.p1,t.p0)/(t.weight||4)}))}),g.oriented=e,g.onlyAccessible=n,g.finder=M(r,{oriented:e,distance(t,o,p){var d=1;if(o.parent){const h=_(o.parent?.node.id),f=_(o.node.id),m=_(t.id);var y=L({x:h[1],y:h[2]},{x:f[1],y:f[2]}),x=L({x:f[1],y:f[2]},{x:m[1],y:m[2]});y!==x&&(d=1.01)}return d*p.data.distance}});const i=performance.now();console.debug(`WF. Graph created. ~ ${i-s}ms.`)}function j(e,n,r){return e.filter(s=>W(s,n,r))[0]}export function getGraphLines(e,n,r=!1,s=[]){let a=performance.now();const i=$.fromRect(e.rect).rotate(e.rotate,e.rect.cx,e.rect.cy),t=$.fromRect(n.rect).rotate(n.rotate,n.rect.cx,n.rect.cy),o=new I(new u(i.x1,i.y1),new u(i.x2,i.y2),new u(i.x3,i.y3),new u(i.x4,i.y4)),p=new I(new u(t.x1,t.y1),new u(t.x2,t.y2),new u(t.x3,t.y3),new u(t.x4,t.y4)),d=new Map(s.map(l=>{const c=$.fromRect(l.rect).rotate(l.rotate,l.rect.cx,l.rect.cy);return[l.id,new I(new u(c.x1,c.y1),new u(c.x2,c.y2),new u(c.x3,c.y3),new u(c.x4,c.y4))]}));(!g.finder||g.onlyAccessible!==r)&&T(g.oriented,r);const y=[],x=[];let{lines:h,lineEnds:f}=sublines();for(let l=0;l<f.length;l++){const c=f[l],R=(c.layer===e.layer?.name||!e.layer)&&F(c,o),v=(c.layer===n.layer?.name||!n.layer)&&F(c,p);R&&y.push(c),v&&x.push(c)}const m=[],A=[y,...s.reduce((l,c)=>{const R=d.get(c.id);if(R){const v=f.filter(G=>(G.layer===c.layer?.name||!c.layer)&&F(G,R));v.length>0&&l.push(v)}return l},[]),x];if(m.push(...A.slice(1).map((l,c)=>D(A[c],l)).reverse().flat()),!m.length)return console.debug(`WF. Get graph lines: 0 ~ ${performance.now()-a}ms.`),[];const E=m.flatMap(l=>U(l.points,h));return console.debug(`WF. Get graph lines: ${E.length} ~ ${performance.now()-a}ms.`),E}function D(e,n){const r=[];for(let s=0;s<e.length;s++)for(let a=0;a<n.length;a++)try{const i=g.finder.find(P(e[s]),P(n[a]));if(!i.length)continue;let t=0,o=[];for(let p=0;p<i.length;p++){const d=i[p],y=i[p+1],x=d.id,h=_(x);o.push(new RoutePoint(h[0],h[1],h[2])),y&&(t+=d.links.find(f=>f.toId===x&&f.fromId===y.id).data.distance)}r.push({distance:t,points:o})}catch(i){console.warn(i)}return r.sort((s,a)=>s.distance-a.distance).slice(0,1)}function U(e,n){let r=[];for(let s=1;s<e.length;s++){const a=e[s-1],i=e[s];let t=j(n,a,i);if(!t)continue;let o=new RouteLine(a,i,t.unaccessible,t.unidirection,t.virtual,t.weight);w(t.p0,i)<w(t.p0,a)&&(o.p0=a,o.p1=i);const p=r[r.length-1],d=p?L(p.p0,p.p1):null,y=L(o.p0,o.p1);!p||p.virtual!==o.virtual||Math.abs(y-d)>5?r.push(o):p.p1=o.p1}return r}export function getRouteLength(e){return e.reduce((n,r)=>n+w(r.p0,r.p1),0)}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { GraphBuildOptions, GraphDataSource, GraphInstance, PathNode, RouteLine, RoutePoint } from "../types";
|
|
2
|
+
export declare function makePoint(layer: string, x: number, y: number): RoutePoint;
|
|
3
|
+
/** Creates a simple linear graph: p0 — p1 — p2 — ... */
|
|
4
|
+
export declare function makeLinearGraph(layerName: string, ...coords: [number, number][]): {
|
|
5
|
+
points: RoutePoint[];
|
|
6
|
+
lines: RouteLine[];
|
|
7
|
+
};
|
|
8
|
+
export declare function makeLine(p0: RoutePoint, p1: RoutePoint, overrides?: Partial<Omit<RouteLine, "p0" | "p1">>): RouteLine;
|
|
9
|
+
export declare function makeNode(layer: string, x: number, y: number): PathNode;
|
|
10
|
+
export declare function createMockDataSource(options?: {
|
|
11
|
+
lines?: RouteLine[];
|
|
12
|
+
lineEnds?: RoutePoint[];
|
|
13
|
+
}): GraphDataSource;
|
|
14
|
+
export declare function createMockGraph(options?: {
|
|
15
|
+
lines?: RouteLine[];
|
|
16
|
+
lineEnds?: RoutePoint[];
|
|
17
|
+
hasNodeResult?: boolean | ((id: string) => boolean);
|
|
18
|
+
findResult?: PathNode[] | ((fromId: string, toId: string) => PathNode[]);
|
|
19
|
+
graphOptions?: GraphBuildOptions;
|
|
20
|
+
}): GraphInstance;
|
|
21
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{vi as u}from"vitest";export function makePoint(e,t,n){return{layer:e,x:t,y:n}}export function makeLinearGraph(e,...t){const n=t.map(([i,r])=>makePoint(e,i,r)),o=n.slice(1).map((i,r)=>makeLine(n[r],i));return{points:n,lines:o}}export function makeLine(e,t,n={}){return{p0:e,p1:t,unaccessible:!1,unidirection:!1,virtual:!1,weight:4,...n}}export function makeNode(e,t,n){return{id:`${e}_${t}_${n}`,layer:e,x:t,y:n}}export function createMockDataSource(e={}){return{getLines:()=>e.lines??[],getLineEnds:()=>e.lineEnds??[]}}export function createMockGraph(e={}){const{lines:t=[],lineEnds:n=[],hasNodeResult:o=!0,findResult:i=[],graphOptions:r}=e;return{finder:{build:u.fn(),hasNode:typeof o=="function"?u.fn(o):u.fn().mockReturnValue(o),find:typeof i=="function"?u.fn(i):u.fn().mockReturnValue(i)},dataSource:{getLines:()=>t,getLineEnds:()=>n},options:r??{oriented:!0}}}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Booth } from "../../store/BoothStore";
|
|
2
|
+
import type { RouteWaypoint } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* Converts a MobX Booth entity to a framework-free RouteWaypoint.
|
|
5
|
+
*
|
|
6
|
+
* This adapter is exported as a public API for current consumers (RouteStore,
|
|
7
|
+
* config-wf.ts). In Phase 7, it will become an internal detail of
|
|
8
|
+
* MobxStateAdapter — the Booth→RouteWaypoint conversion will happen inside
|
|
9
|
+
* the state port, and callers will work with RouteWaypoint directly.
|
|
10
|
+
*/
|
|
11
|
+
export declare function boothToWaypoint(booth: Booth): RouteWaypoint;
|
|
12
|
+
//# sourceMappingURL=boothToWaypoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Point as t,Rect as c}from"simple-geometry";import n from"../../core/Polygon";export function boothToWaypoint(r){const e=n.fromRect(r.rect).rotate(r.rotate,r.rect.cx,r.rect.cy);return{x:r.rect.cx,y:r.rect.cy,layer:r.layer?.name,rect:new c(new t(e.x1,e.y1),new t(e.x2,e.y2),new t(e.x3,e.y3),new t(e.x4,e.y4))}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function n(){return window.__wfData}export const graphDataSource={getLines:()=>n()?.lines??[],getLineEnds:()=>n()?.lineEnds??[]};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function buildGraph(l,i,e){return i.build(l.getLines(),{oriented:e.oriented??!0,onlyAccessible:e.onlyAccessible??!1}),{finder:i,dataSource:l,options:e}}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Graph } from "ngraph.graph";
|
|
2
|
+
import type { PathFinderOptions, RouteLine } from "../types";
|
|
3
|
+
type LinkData = {
|
|
4
|
+
distance: number;
|
|
5
|
+
};
|
|
6
|
+
/** Builds an ngraph instance from route lines, filtering and linking per options. */
|
|
7
|
+
export declare function buildNGraph(lines: RouteLine[], options: PathFinderOptions): Graph<unknown, LinkData>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=buildNGraph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import p from"ngraph.graph";import{toNodeId as c}from"./graphHelpers";import{linkCost as a}from"./linkCost";export function buildNGraph(e,d){const{oriented:s,onlyAccessible:f}=d,n=p();for(const o of e){if(f&&o.unaccessible)continue;const t=c(o.p0),i=c(o.p1),r=a(o);n.addLink(t,i,{distance:r}),s&&!o.unidirection&&n.addLink(i,t,{distance:r})}return n}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const VIRTUAL_LINE_PENALTY=0;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { GraphInstance, ShortestPathResult, RoutePoint, RouteLine } from "../types";
|
|
2
|
+
/** Computes the weighted path cost matching the graph link distance formula. */
|
|
3
|
+
export declare function computeWeightedPathCost(points: RoutePoint[], lines: RouteLine[]): number;
|
|
4
|
+
/**
|
|
5
|
+
* Finds the shortest path between candidate point sets by trying all from×to
|
|
6
|
+
* pairs and picking the one with the lowest weighted cost.
|
|
7
|
+
*
|
|
8
|
+
* Complexity is O(N×M × A*) where N = |from|, M = |to|. In practice N, M ≤ 5
|
|
9
|
+
* (rect-based booth candidates) or = 1 (nearest-point fallback), so the brute
|
|
10
|
+
* force approach is acceptable. Multi-source A* would reduce this to a single
|
|
11
|
+
* traversal but adds significant implementation complexity.
|
|
12
|
+
*/
|
|
13
|
+
export declare function findShortestPath(graph: GraphInstance, from: RoutePoint[], to: RoutePoint[]): ShortestPathResult | null;
|
|
14
|
+
//# sourceMappingURL=findShortestPath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{toNodeId as m,buildRouteSegments as p,findLineByEndpoints as P}from"./graphHelpers";import{linkCost as b}from"./linkCost";import{getRouteLength as x}from"../routing/getRouteLength";function y(t,o,n){return{layer:t,x:o,y:n}}export function computeWeightedPathCost(t,o){let n=0;for(let e=1;e<t.length;e++){const i=P(o,t[e-1],t[e]);i&&(n+=b(i))}return n}export function findShortestPath(t,o,n){const e=t.dataSource.getLines();let i=null,d=1/0;for(const a of o)for(const g of n){const s=m(a),r=m(g);if(!t.finder.hasNode(s)||!t.finder.hasNode(r)){console.debug(`WF. findShortestPath: node not in graph, skipping pair ${s} \u2192 ${r}`);continue}const u=t.finder.find(s,r);if(!u.length)continue;const l=u.map(c=>y(c.layer,c.x,c.y)),f=p(l,e);if(!f.length)continue;const h=computeWeightedPathCost(l,e);h<d&&(d=h,i={lines:f,distance:x(f)})}return i}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { GraphDataSource, GraphInstance } from "../types";
|
|
2
|
+
export interface GraphCache {
|
|
3
|
+
getOrBuild(dataSource: GraphDataSource, onlyAccessible: boolean): GraphInstance;
|
|
4
|
+
}
|
|
5
|
+
export declare function createGraphCache(): GraphCache;
|
|
6
|
+
//# sourceMappingURL=graphCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{buildGraph as i}from"./buildGraph";import{createAStarPathFinder as u}from"./pathfinder/aStarPathFinder";export function createGraphCache(){let r=null,t=!1;return{getOrBuild(a,e){if(r&&t===e)return r;const n=u();return r=i(a,n,{oriented:!0,onlyAccessible:e}),t=e,r}}}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { RouteLine, RoutePoint } from "../types";
|
|
2
|
+
export declare const toNodeId: (p: RoutePoint) => string;
|
|
3
|
+
export declare const arePointsClose: (p1: RoutePoint, p2: RoutePoint) => boolean;
|
|
4
|
+
export declare const matchesLine: (line: RouteLine, p0: RoutePoint, p1: RoutePoint) => boolean;
|
|
5
|
+
export declare function findLineByEndpoints(lines: RouteLine[], p0: RoutePoint, p1: RoutePoint): RouteLine | undefined;
|
|
6
|
+
export declare function canMergeSegments(lastSegment: RouteLine, segment: RouteLine): boolean;
|
|
7
|
+
export declare function buildRouteSegments(points: RoutePoint[], lines: RouteLine[]): RouteLine[];
|
|
8
|
+
//# sourceMappingURL=graphHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{lineAngle as u,lineLength as a}from"simple-geometry";export const toNodeId=n=>`${n.layer}_${n.x}_${n.y}`;const f=1;export const arePointsClose=(n,e)=>n.layer===e.layer&&a(n,e)<=f,matchesLine=(n,e,t)=>arePointsClose(n.p0,e)&&arePointsClose(n.p1,t)||arePointsClose(n.p0,t)&&arePointsClose(n.p1,e);export function findLineByEndpoints(n,e,t){return n.find(o=>matchesLine(o,e,t))}const p=5;export function canMergeSegments(n,e){if(n.virtual!==e.virtual)return!1;const t=u(n.p0,n.p1),o=u(e.p0,e.p1);let i=Math.abs(o-t);return i>180&&(i=360-i),i<=p}export function buildRouteSegments(n,e){const t=[];for(let o=1;o<n.length;o++){const i=n[o-1],s=n[o],r=findLineByEndpoints(e,i,s);if(!r){console.warn(`WF: buildRouteSegments \u2014 no line found between ${toNodeId(i)} and ${toNodeId(s)}`);continue}const c={p0:i,p1:s,unaccessible:r.unaccessible,unidirection:r.unidirection,virtual:r.virtual,weight:r.weight},l=t[t.length-1];l&&canMergeSegments(l,c)?t[t.length-1]={...l,p1:c.p1}:t.push(c)}return t}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{lineLength as r}from"simple-geometry";import{VIRTUAL_LINE_PENALTY as o}from"./constants";const L=4;export function linkCost(t){return t.virtual?t.virtualLength??o:r(t.p0,t.p1)/(t.weight||L)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{lineAngle as f}from"simple-geometry";import h from"../utils/a-star/a-star";import{buildNGraph as y}from"../buildNGraph";import{parseNodeId as l}from"./parseNodeId";const g=1.01;function x(){return function(n,e,t){let r=1;if(e.parent){const[,a,c]=l(e.parent.node.id),[,o,d]=l(e.node.id),[,s,u]=l(n.id),p=f({x:a,y:c},{x:o,y:d}),m=f({x:o,y:d},{x:s,y:u});p!==m&&(r=g)}return r*t.data.distance}}export function createAStarPathFinder(){let i=null,n=null;return{build(e,t){n=y(e,t),i=h(n,{oriented:t.oriented,distance:x()})},hasNode(e){return n?!!n.hasNode(e):!1},find(e,t){if(!i)return[];const r=i.find(e,t);return r.length?r.map(a=>{const[c,o,d]=l(a.id);return{id:a.id,layer:c,x:o,y:d}}):[]}}}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decodes a node ID created by `pointId` back into [layer, x, y].
|
|
3
|
+
*
|
|
4
|
+
* Point IDs are formatted as "{layer}_{x}_{y}". Since layer names may
|
|
5
|
+
* contain underscores (e.g. "floor_1"), we parse from the right where
|
|
6
|
+
* x and y are always the last two segments.
|
|
7
|
+
*/
|
|
8
|
+
export declare function parseNodeId(id: string): [string, number, number];
|
|
9
|
+
//# sourceMappingURL=parseNodeId.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function parseNodeId(e){const t=e.lastIndexOf("_"),s=e.lastIndexOf("_",t-1);if(s===-1)throw new Error(`WF: invalid node ID format "${e}", expected "{layer}_{x}_{y}"`);return[e.substring(0,s),parseFloat(e.substring(s+1,t)),parseFloat(e.substring(t+1))]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type { RoutePoint, RouteLine, RouteResult, } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* TODO: The exports below are temporary. They exist because RouteStore and config-wf.ts call wayfinding functions directly.
|
|
4
|
+
* When WayfindingRuntime and WayfindingStore are created (ARCHITECTURE.md phases 7-8), these will
|
|
5
|
+
* become internal implementation details and should be removed from the
|
|
6
|
+
* public barrel.
|
|
7
|
+
*/
|
|
8
|
+
export type { RouteWaypoint } from "./types";
|
|
9
|
+
export { getGraphLines } from "./routing/getGraphLines";
|
|
10
|
+
export { getRouteLength } from "./routing/getRouteLength";
|
|
11
|
+
export { computeTransitionPoints } from "./rendering/computeTransitionPoints";
|
|
12
|
+
export { normalizeRouteDirection } from "./rendering/normalizeRouteDirection";
|
|
13
|
+
export { bezierCurve, splitPolyLine } from "./rendering/routeGeometry";
|
|
14
|
+
export { createGraphCache } from "./graph/graphCache";
|
|
15
|
+
export type { GraphCache } from "./graph/graphCache";
|
|
16
|
+
export { boothToWaypoint } from "./adapters/boothToWaypoint";
|
|
17
|
+
export { graphDataSource } from "./adapters/graphDataSource";
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{getGraphLines}from"./routing/getGraphLines";export{getRouteLength}from"./routing/getRouteLength";export{computeTransitionPoints}from"./rendering/computeTransitionPoints";export{normalizeRouteDirection}from"./rendering/normalizeRouteDirection";export{bezierCurve,splitPolyLine}from"./rendering/routeGeometry";export{createGraphCache}from"./graph/graphCache";export{boothToWaypoint}from"./adapters/boothToWaypoint";export{graphDataSource}from"./adapters/graphDataSource";
|