@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.
Files changed (351) hide show
  1. package/dist/browser/Debug-b2YI2Uxo.js +40 -0
  2. package/dist/browser/Demo-aEKqZbJJ.js +47 -0
  3. package/dist/browser/Free-BGr4o53R.js +51 -0
  4. package/dist/browser/Gallery-C9n64fhu.js +71 -0
  5. package/dist/browser/GpsLoader-ChxBR2EI.js +140 -0
  6. package/dist/browser/KioskStore-DkCSeq5I.js +225 -0
  7. package/dist/browser/Mapbox-Cl0Wxz2h.js +118 -0
  8. package/dist/browser/{SetKioskMode-C3fGoJPj.js → SetKioskMode-D3EJeF9c.js} +92 -83
  9. package/dist/browser/{ShowKiosk-D-477yKH.js → ShowKiosk-Bs5q-1RZ.js} +28 -19
  10. package/dist/browser/{ThreeComponent-Z1K-qX4i.js → ThreeComponent-CSsqNYDu.js} +181 -172
  11. package/dist/browser/ViewerMenuPanel-BMmB1p03.js +77 -0
  12. package/dist/browser/boolean-editor-DpnmndKH.js +157 -0
  13. package/dist/browser/bundle.json +34 -31
  14. package/dist/browser/{client-D6zJdOh6.js → client-CN_I7kK8.js} +848 -839
  15. package/dist/browser/compat-helper.js +5 -0
  16. package/dist/browser/{data-C6uYuLvP.js → data-CIAMSGsv.js} +278 -269
  17. package/dist/browser/{debug-overlay-BcmbSeG3.js → debug-overlay-DjmA0D2r.js} +100 -91
  18. package/dist/browser/debug-ui-D1QGTN8V.js +67 -0
  19. package/dist/browser/{favicon-DalyEhbd.js → favicon-BpTKNfwa.js} +11 -2
  20. package/dist/browser/fetch-retry.umd-B8hV1FNr.js +123 -0
  21. package/dist/browser/{flex-DA2yhKLl.js → flex-09atkOGP.js} +76 -67
  22. package/dist/browser/{floorplan.ready-DEdtWjzo.js → floorplan.ready-BQetaqdP.js} +20976 -22750
  23. package/dist/browser/fonts/efp-symbols.woff +0 -0
  24. package/dist/browser/{index-DSULYUX0.js → index-Bw6xZlSd.js} +46 -37
  25. package/dist/browser/{index-BAvspl75.js → index-C71k7nSe.js} +333 -324
  26. package/dist/browser/index-CWLY6XdC.js +92 -0
  27. package/dist/browser/index-D9pdVw-U.js +882 -0
  28. package/dist/browser/index-DPSQIIUy.js +57 -0
  29. package/dist/browser/index-jp-Zhdyp.js +54 -0
  30. package/dist/browser/index.html +1 -0
  31. package/dist/browser/index.js +12495 -2
  32. package/dist/browser/jsx-runtime-CoKhM3tL.js +40 -0
  33. package/dist/browser/locales/ar.json +56 -5
  34. package/dist/browser/locales/de.json +56 -5
  35. package/dist/browser/locales/es.json +56 -5
  36. package/dist/browser/locales/fr.json +56 -5
  37. package/dist/browser/locales/he.json +56 -5
  38. package/dist/browser/locales/it.json +56 -5
  39. package/dist/browser/locales/kk.json +56 -5
  40. package/dist/browser/locales/ko.json +56 -5
  41. package/dist/browser/locales/mn.json +56 -5
  42. package/dist/browser/locales/nl.json +56 -5
  43. package/dist/browser/locales/pl.json +57 -6
  44. package/dist/browser/locales/pt.json +55 -4
  45. package/dist/browser/locales/ru.json +57 -6
  46. package/dist/browser/locales/sv.json +56 -5
  47. package/dist/browser/locales/th.json +56 -5
  48. package/dist/browser/locales/tr.json +56 -5
  49. package/dist/browser/locales/uk.json +56 -5
  50. package/dist/browser/locales/vi.json +56 -5
  51. package/dist/browser/locales/zh.json +56 -5
  52. package/dist/browser/{main-CD9JioNt.js → main-DxaHLbma.js} +24 -15
  53. package/dist/browser/{particles.min-DcpKrPn3.js → particles.min-CsHbc6cO.js} +40 -31
  54. package/dist/esm/RouteCutIn.d.ts +0 -1
  55. package/dist/esm/RouteCutIn.js +1 -1
  56. package/dist/esm/_misc_to_move/manifest.d.ts +13 -0
  57. package/dist/esm/_misc_to_move/ref.d.ts +6 -0
  58. package/dist/esm/_misc_to_move/ref.js +1 -0
  59. package/dist/esm/components/Alert.d.ts +2 -0
  60. package/dist/esm/components/Alert.js +1 -1
  61. package/dist/esm/components/Badge.d.ts +3 -2
  62. package/dist/esm/components/Badge.js +1 -1
  63. package/dist/esm/components/Bookmarks.js +1 -1
  64. package/dist/esm/components/Booth/BoothOnHold.d.ts +2 -2
  65. package/dist/esm/components/Booth/BoothOnHold.js +1 -1
  66. package/dist/esm/components/Booth/BoothReserved.d.ts +2 -1
  67. package/dist/esm/components/Booth/BoothReserved.js +1 -1
  68. package/dist/esm/components/Booth/BoothWithoutExhibitor.d.ts +2 -2
  69. package/dist/esm/components/Booth/BoothWithoutExhibitor.js +1 -1
  70. package/dist/esm/components/CookieConsent.js +1 -1
  71. package/dist/esm/components/Exhibitor.js +1 -1
  72. package/dist/esm/components/Gallery/GalleryControls/GalleryControls.d.ts +2 -2
  73. package/dist/esm/components/Gallery/GalleryControls/GalleryControls.js +1 -1
  74. package/dist/esm/components/Gallery/GalleryModal/GalleryModal.d.ts +2 -2
  75. package/dist/esm/components/Gallery/GalleryModal/GalleryModal.js +1 -1
  76. package/dist/esm/components/Kiosk/KioskStore.d.ts +3 -3
  77. package/dist/esm/components/Kiosk/KioskStore.js +1 -1
  78. package/dist/esm/components/Kiosk/SetKiosk/storage.d.ts +1 -1
  79. package/dist/esm/components/Kiosk/SetKiosk/storage.js +1 -1
  80. package/dist/esm/components/Kiosk/ShowKiosk.js +1 -1
  81. package/dist/esm/components/Kiosk/integrateKiosk.js +1 -1
  82. package/dist/esm/components/Language.js +1 -1
  83. package/dist/esm/components/LanguageRow.d.ts +0 -1
  84. package/dist/esm/components/LanguageRow.js +1 -1
  85. package/dist/esm/components/Layout.js +1 -1
  86. package/dist/esm/components/List.js +1 -1
  87. package/dist/esm/components/LogoOverlay.js +1 -1
  88. package/dist/esm/components/Map/Map.d.ts +0 -23
  89. package/dist/esm/components/Map/Map.js +1 -1
  90. package/dist/esm/components/Map/booth-by-xy.js +1 -1
  91. package/dist/esm/components/Map/drawing/config/TextFitter.d.ts +1 -1
  92. package/dist/esm/components/Map/drawing/config/config-all.d.ts +2 -3
  93. package/dist/esm/components/Map/drawing/config/config-all.js +1 -1
  94. package/dist/esm/components/Map/drawing/config/config-bg.d.ts +1 -1
  95. package/dist/esm/components/Map/drawing/config/config-bg.js +1 -1
  96. package/dist/esm/components/Map/drawing/config/config-booth-badge.d.ts +9 -0
  97. package/dist/esm/components/Map/drawing/config/config-booth-badge.js +1 -0
  98. package/dist/esm/components/Map/drawing/config/config-booth-bg.d.ts +5 -5
  99. package/dist/esm/components/Map/drawing/config/config-booth-bg.js +1 -1
  100. package/dist/esm/components/Map/drawing/config/config-booth-bookmark.d.ts +5 -5
  101. package/dist/esm/components/Map/drawing/config/config-booth-bookmark.js +1 -1
  102. package/dist/esm/components/Map/drawing/config/config-booth-border.d.ts +3 -3
  103. package/dist/esm/components/Map/drawing/config/config-booth-border.js +1 -1
  104. package/dist/esm/components/Map/drawing/config/config-booth-labels-special.d.ts +6 -6
  105. package/dist/esm/components/Map/drawing/config/config-booth-labels-special.js +2 -2
  106. package/dist/esm/components/Map/drawing/config/config-booth-labels.d.ts +5 -5
  107. package/dist/esm/components/Map/drawing/config/config-booth-labels.js +1 -1
  108. package/dist/esm/components/Map/drawing/config/config-booth-scaled.d.ts +3 -3
  109. package/dist/esm/components/Map/drawing/config/config-booth-scaled.js +1 -1
  110. package/dist/esm/components/Map/drawing/config/config-booths.d.ts +2 -2
  111. package/dist/esm/components/Map/drawing/config/config-booths.js +1 -1
  112. package/dist/esm/components/Map/drawing/config/config-load-layer.d.ts +2 -2
  113. package/dist/esm/components/Map/drawing/config/config-load-layer.js +1 -1
  114. package/dist/esm/components/Map/drawing/config/config-markers.d.ts +2 -3
  115. package/dist/esm/components/Map/drawing/config/config-markers.js +1 -1
  116. package/dist/esm/components/Map/drawing/config/config-wf.d.ts +2 -5
  117. package/dist/esm/components/Map/drawing/config/config-wf.js +1 -1
  118. package/dist/esm/components/Map/drawing/config/loadBoothsImages.d.ts +2 -3
  119. package/dist/esm/components/Map/drawing/config/loadBoothsImages.js +1 -1
  120. package/dist/esm/components/Map/drawing/config/route-snapping/snapPositionToRoute.d.ts +1 -1
  121. package/dist/esm/components/Map/drawing/config/route-snapping/snapPositionToRoute.js +1 -1
  122. package/dist/esm/components/Map/drawing/config/route-snapping/splitRouteByPoint.d.ts +1 -1
  123. package/dist/esm/components/Map/drawing/config/route-snapping/splitRouteByPoint.js +1 -1
  124. package/dist/esm/components/Map/drawing/config/route-snapping/types.d.ts +1 -1
  125. package/dist/esm/components/Map/drawing/config/route-snapping/utils.d.ts +1 -1
  126. package/dist/esm/components/Map/traffic/useBuildRoute.d.ts +3 -5
  127. package/dist/esm/components/Map/traffic/useBuildRoute.js +6 -6
  128. package/dist/esm/components/Map/traffic/useManageTraffic.d.ts +3 -5
  129. package/dist/esm/components/Map/traffic/useManageTraffic.js +1 -1
  130. package/dist/esm/components/MarketMaterialList.d.ts +3 -3
  131. package/dist/esm/components/MarketMaterialList.js +1 -1
  132. package/dist/esm/components/Menu.js +1 -2
  133. package/dist/esm/components/MobileToggleButton.js +1 -1
  134. package/dist/esm/components/MultiSelectGroups.d.ts +2 -2
  135. package/dist/esm/components/MultiSelectGroups.js +1 -1
  136. package/dist/esm/components/Overlay.d.ts +2 -0
  137. package/dist/esm/components/Overlay.js +1 -1
  138. package/dist/esm/components/OverlayContainer.js +1 -1
  139. package/dist/esm/components/QrCode.d.ts +46 -0
  140. package/dist/esm/components/QrCode.js +1 -0
  141. package/dist/esm/components/RebookingNotes.d.ts +2 -2
  142. package/dist/esm/components/RebookingNotes.js +1 -1
  143. package/dist/esm/components/RebookingRadioGroup.d.ts +2 -2
  144. package/dist/esm/components/RebookingRadioGroup.js +1 -1
  145. package/dist/esm/components/RoutePlanner/RoutePlanner.d.ts +4 -0
  146. package/dist/esm/components/RoutePlanner/RoutePlanner.js +1 -0
  147. package/dist/esm/components/RoutePlanner/RoutePlannerHeader.d.ts +4 -0
  148. package/dist/esm/components/RoutePlanner/RoutePlannerHeader.js +1 -0
  149. package/dist/esm/components/RoutePlanner/RoutePlannerStartPoint.d.ts +9 -0
  150. package/dist/esm/components/RoutePlanner/RoutePlannerStartPoint.js +1 -0
  151. package/dist/esm/components/RoutePlanner/RoutePlannerStopItem.d.ts +9 -0
  152. package/dist/esm/components/RoutePlanner/RoutePlannerStopItem.js +1 -0
  153. package/dist/esm/components/RouteQR.d.ts +2 -2
  154. package/dist/esm/components/RouteQR.js +1 -1
  155. package/dist/esm/components/Schedule.js +1 -1
  156. package/dist/esm/components/SearchBox.js +1 -1
  157. package/dist/esm/components/Sessions.js +1 -1
  158. package/dist/esm/components/Share.d.ts +2 -2
  159. package/dist/esm/components/Share.js +1 -1
  160. package/dist/esm/components/SidebarActions.d.ts +3 -0
  161. package/dist/esm/components/SidebarActions.js +1 -1
  162. package/dist/esm/components/SpeakersFiltersModal.js +1 -1
  163. package/dist/esm/components/ViewerMenuPanel.d.ts +5 -0
  164. package/dist/esm/components/ViewerMenuPanel.js +1 -0
  165. package/dist/esm/components/Wayfinding.d.ts +2 -2
  166. package/dist/esm/components/Wayfinding.js +1 -1
  167. package/dist/esm/components/WayfindingTemplate.d.ts +2 -2
  168. package/dist/esm/components/WayfindingTemplate.js +1 -1
  169. package/dist/esm/components/gps/GpsPermissionRequest.d.ts +4 -2
  170. package/dist/esm/components/gps/GpsPermissionRequest.js +1 -1
  171. package/dist/esm/components/index.d.ts +1 -3
  172. package/dist/esm/components/index.js +1 -1
  173. package/dist/esm/constants.d.ts +7 -0
  174. package/dist/esm/constants.js +1 -1
  175. package/dist/esm/data/tours.json +114 -0
  176. package/dist/esm/floorplan.loader.d.ts +5 -0
  177. package/dist/esm/floorplan.loader.js +1 -1
  178. package/dist/esm/floorplan.ready.d.ts +6 -3
  179. package/dist/esm/floorplan.ready.js +1 -1
  180. package/dist/esm/index.d.ts +0 -2
  181. package/dist/esm/index.js +1 -1
  182. package/dist/esm/load.d.ts +4 -1
  183. package/dist/esm/load.js +2 -2
  184. package/dist/esm/offline/offlineManager.js +1 -1
  185. package/dist/esm/renderer/HandlerRegistry.d.ts +18 -0
  186. package/dist/esm/renderer/HandlerRegistry.js +1 -0
  187. package/dist/esm/renderer/RendererService.d.ts +26 -0
  188. package/dist/esm/renderer/RendererService.js +1 -0
  189. package/dist/esm/renderer/engine-core/animation.d.ts +7 -0
  190. package/dist/esm/renderer/engine-core/animation.js +1 -0
  191. package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/canvases.d.ts +1 -1
  192. package/dist/esm/renderer/engine-core/canvases.js +1 -0
  193. package/dist/esm/renderer/engine-core/fonts.js +1 -0
  194. package/dist/esm/renderer/engine-core/types.js +1 -0
  195. package/dist/esm/{components/Map/drawing/config/engine-core → renderer}/index.d.ts +10 -10
  196. package/dist/esm/renderer/index.js +1 -0
  197. package/dist/esm/services/routing.js +1 -1
  198. package/dist/esm/store/BookmarksStore.d.ts +12 -0
  199. package/dist/esm/store/BookmarksStore.js +2 -0
  200. package/dist/esm/store/FuzzySearchEngineStore.d.ts +7 -3
  201. package/dist/esm/store/FuzzySearchEngineStore.js +1 -1
  202. package/dist/esm/store/LayerStore.d.ts +1 -0
  203. package/dist/esm/store/LayerStore.js +1 -1
  204. package/dist/esm/store/RootStore.d.ts +10 -10
  205. package/dist/esm/store/RootStore.js +1 -1
  206. package/dist/esm/store/RoutePlannerStore.d.ts +58 -0
  207. package/dist/esm/store/RoutePlannerStore.js +1 -0
  208. package/dist/esm/store/RouteStore.d.ts +1 -1
  209. package/dist/esm/store/RouteStore.js +1 -1
  210. package/dist/esm/store/SearchStore.d.ts +2 -0
  211. package/dist/esm/store/SearchStore.js +1 -1
  212. package/dist/esm/store/ToursStore.js +1 -1
  213. package/dist/esm/store/UIState.d.ts +10 -7
  214. package/dist/esm/store/UIState.js +1 -1
  215. package/dist/esm/store/init/index.js +1 -1
  216. package/dist/esm/store/init/init-bookmarks.d.ts +7 -0
  217. package/dist/esm/store/init/init-bookmarks.js +1 -0
  218. package/dist/esm/store/init/init-events.d.ts +1 -1
  219. package/dist/esm/store/init/init-events.js +1 -1
  220. package/dist/esm/store/init/init-exhibitors.d.ts +1 -1
  221. package/dist/esm/store/init/init-exhibitors.js +1 -1
  222. package/dist/esm/store/init/init-layers.js +1 -1
  223. package/dist/esm/store/init/init-speakers.d.ts +1 -1
  224. package/dist/esm/store/init/init-speakers.js +1 -1
  225. package/dist/esm/store/search-buttons/SearchButtonsStore.d.ts +1 -1
  226. package/dist/esm/store/search-buttons/SearchButtonsStore.js +1 -1
  227. package/dist/esm/store/types.d.ts +11 -3
  228. package/dist/esm/tools/base-runtime-url.js +1 -1
  229. package/dist/esm/tools/sentry.js +1 -1
  230. package/dist/esm/tools/telemetry.d.ts +35 -0
  231. package/dist/esm/tools/telemetry.js +1 -0
  232. package/dist/esm/tools/track-event.d.ts +3 -1
  233. package/dist/esm/tools/track-event.js +1 -1
  234. package/dist/esm/utils/buildOptimizedRoute.d.ts +11 -0
  235. package/dist/esm/utils/buildOptimizedRoute.js +1 -0
  236. package/dist/esm/utils/geometry.d.ts +2 -0
  237. package/dist/esm/utils/geometry.js +1 -0
  238. package/dist/esm/utils/i18n.d.ts +6 -4
  239. package/dist/esm/utils/i18n.js +1 -1
  240. package/dist/esm/utils/loadCustomCss.d.ts +1 -1
  241. package/dist/esm/utils/loadCustomCss.js +1 -1
  242. package/dist/esm/utils/mapEntity.js +1 -1
  243. package/dist/esm/utils/math.d.ts +7 -0
  244. package/dist/esm/utils/math.js +1 -0
  245. package/dist/esm/utils/shortenName.js +1 -1
  246. package/dist/esm/utils/use-shadow.d.ts +1 -1
  247. package/dist/esm/utils/use-shadow.js +1 -1
  248. package/dist/esm/utils/useRenderTarget.js +1 -1
  249. package/dist/esm/wayfinding/_PLAN-public-api.d.ts +220 -0
  250. package/dist/esm/wayfinding/_PLAN-public-api.js +1 -0
  251. package/dist/esm/{utils/wayfinding.d.ts → wayfinding/__integration__/legacy/legacyWayfinding.d.ts} +5 -15
  252. package/dist/esm/wayfinding/__integration__/legacy/legacyWayfinding.js +1 -0
  253. package/dist/esm/wayfinding/__tests__/helpers.d.ts +21 -0
  254. package/dist/esm/wayfinding/__tests__/helpers.js +1 -0
  255. package/dist/esm/wayfinding/adapters/boothToWaypoint.d.ts +12 -0
  256. package/dist/esm/wayfinding/adapters/boothToWaypoint.js +1 -0
  257. package/dist/esm/wayfinding/adapters/graphDataSource.d.ts +3 -0
  258. package/dist/esm/wayfinding/adapters/graphDataSource.js +1 -0
  259. package/dist/esm/wayfinding/graph/buildGraph.d.ts +3 -0
  260. package/dist/esm/wayfinding/graph/buildGraph.js +1 -0
  261. package/dist/esm/wayfinding/graph/buildNGraph.d.ts +9 -0
  262. package/dist/esm/wayfinding/graph/buildNGraph.js +1 -0
  263. package/dist/esm/wayfinding/graph/constants.d.ts +3 -0
  264. package/dist/esm/wayfinding/graph/constants.js +1 -0
  265. package/dist/esm/wayfinding/graph/findShortestPath.d.ts +14 -0
  266. package/dist/esm/wayfinding/graph/findShortestPath.js +1 -0
  267. package/dist/esm/wayfinding/graph/graphCache.d.ts +6 -0
  268. package/dist/esm/wayfinding/graph/graphCache.js +1 -0
  269. package/dist/esm/wayfinding/graph/graphHelpers.d.ts +8 -0
  270. package/dist/esm/wayfinding/graph/graphHelpers.js +1 -0
  271. package/dist/esm/wayfinding/graph/linkCost.d.ts +4 -0
  272. package/dist/esm/wayfinding/graph/linkCost.js +1 -0
  273. package/dist/esm/wayfinding/graph/pathfinder/aStarPathFinder.d.ts +3 -0
  274. package/dist/esm/wayfinding/graph/pathfinder/aStarPathFinder.js +1 -0
  275. package/dist/esm/wayfinding/graph/pathfinder/parseNodeId.d.ts +9 -0
  276. package/dist/esm/wayfinding/graph/pathfinder/parseNodeId.js +1 -0
  277. package/dist/esm/wayfinding/index.d.ts +18 -0
  278. package/dist/esm/wayfinding/index.js +1 -0
  279. package/dist/esm/wayfinding/rendering/computeTransitionPoints.d.ts +31 -0
  280. package/dist/esm/wayfinding/rendering/computeTransitionPoints.js +1 -0
  281. package/dist/esm/wayfinding/rendering/normalizeRouteDirection.d.ts +19 -0
  282. package/dist/esm/wayfinding/rendering/normalizeRouteDirection.js +1 -0
  283. package/dist/esm/wayfinding/rendering/routeGeometry.d.ts +16 -0
  284. package/dist/esm/wayfinding/rendering/routeGeometry.js +1 -0
  285. package/dist/esm/wayfinding/routing/buildMultiPointRoute.d.ts +11 -0
  286. package/dist/esm/wayfinding/routing/buildMultiPointRoute.js +1 -0
  287. package/dist/esm/wayfinding/routing/buildRoute.d.ts +9 -0
  288. package/dist/esm/wayfinding/routing/buildRoute.js +1 -0
  289. package/dist/esm/wayfinding/routing/findNearestGraphPoint.d.ts +21 -0
  290. package/dist/esm/wayfinding/routing/findNearestGraphPoint.js +1 -0
  291. package/dist/esm/wayfinding/routing/getGraphLines.d.ts +14 -0
  292. package/dist/esm/wayfinding/routing/getGraphLines.js +1 -0
  293. package/dist/esm/wayfinding/routing/getRouteLength.d.ts +3 -0
  294. package/dist/esm/wayfinding/routing/getRouteLength.js +1 -0
  295. package/dist/esm/wayfinding/routing/routeResult.d.ts +4 -0
  296. package/dist/esm/wayfinding/routing/routeResult.js +1 -0
  297. package/dist/esm/wayfinding/types.d.ts +76 -0
  298. package/dist/esm/wayfinding/types.js +1 -0
  299. package/package.json +4 -8
  300. package/dist/browser/Debug-k5RKtjZM.js +0 -31
  301. package/dist/browser/Demo-CgMWCXus.js +0 -38
  302. package/dist/browser/Free-D7jT727E.js +0 -42
  303. package/dist/browser/Gallery-xjcSyY62.js +0 -279
  304. package/dist/browser/GpsLoader-_4iMtlKj.js +0 -131
  305. package/dist/browser/KioskStore-P8qIruSD.js +0 -216
  306. package/dist/browser/Mapbox-C7QZjYtQ.js +0 -109
  307. package/dist/browser/boolean-editor-C56suuE-.js +0 -148
  308. package/dist/browser/debug-ui-xTxa_Css.js +0 -58
  309. package/dist/browser/fetch-retry.umd-D12eSIuK.js +0 -114
  310. package/dist/browser/index-04R_J8Na.js +0 -45
  311. package/dist/browser/index-1HPoYB-N.js +0 -12526
  312. package/dist/browser/index-D1Nh_Rku.js +0 -48
  313. package/dist/browser/index-DmIJrF5Z.js +0 -83
  314. package/dist/browser/jsx-runtime-jIxVPx5o.js +0 -31
  315. package/dist/browser/sw.js +0 -2
  316. package/dist/esm/components/BoothRow.d.ts +0 -8
  317. package/dist/esm/components/BoothRow.js +0 -1
  318. package/dist/esm/components/ExhibitorRow.d.ts +0 -9
  319. package/dist/esm/components/ExhibitorRow.js +0 -1
  320. package/dist/esm/components/Map/drawing/config/engine-core/animation.d.ts +0 -3
  321. package/dist/esm/components/Map/drawing/config/engine-core/animation.js +0 -1
  322. package/dist/esm/components/Map/drawing/config/engine-core/canvases.js +0 -1
  323. package/dist/esm/components/Map/drawing/config/engine-core/fonts.js +0 -1
  324. package/dist/esm/components/Map/drawing/config/engine-core/index.js +0 -1
  325. package/dist/esm/components/Map/drawing/config/engine-core/renderer.d.ts +0 -4
  326. package/dist/esm/components/Map/drawing/config/engine-core/renderer.js +0 -1
  327. package/dist/esm/components/ScheduleRow.d.ts +0 -8
  328. package/dist/esm/components/ScheduleRow.js +0 -1
  329. package/dist/esm/expofp-debug.d.ts +0 -5
  330. package/dist/esm/expofp-debug.js +0 -1
  331. package/dist/esm/offline/sw.d.ts +0 -2
  332. package/dist/esm/offline/sw.js +0 -1
  333. package/dist/esm/store/LanguageStore.d.ts +0 -19
  334. package/dist/esm/store/LanguageStore.js +0 -1
  335. package/dist/esm/store/init/init-language.d.ts +0 -3
  336. package/dist/esm/store/init/init-language.js +0 -1
  337. package/dist/esm/utils/toRadians.d.ts +0 -3
  338. package/dist/esm/utils/toRadians.js +0 -1
  339. package/dist/esm/utils/wayfinding.js +0 -1
  340. package/dist/stats.html +0 -4950
  341. /package/dist/esm/{components/Map/drawing/config/engine-core/types.js → _misc_to_move/manifest.js} +0 -0
  342. /package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/defs.d.ts +0 -0
  343. /package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/defs.js +0 -0
  344. /package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/fonts.d.ts +0 -0
  345. /package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/settings.d.ts +0 -0
  346. /package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/settings.js +0 -0
  347. /package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/types.d.ts +0 -0
  348. /package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/update-def.d.ts +0 -0
  349. /package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/update-def.js +0 -0
  350. /package/dist/esm/{components/Map/drawing/config → renderer}/engine-core/utils/rotation.d.ts +0 -0
  351. /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
- export default function trackEvent(type: "load" | "exview" | "search" | "route" | "share" | "booview" | "catview", value?: any): Promise<void>;
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 g from"../data";import c from"./logger";import{yahKey as v}from"../utils/yah";import{getLocationHistory as h}from"../services/routing";import{uiState as u}from"../store";import{getSavedKiosk as E}from"../components/Kiosk/SetKiosk";import{requestKioskKey as y}from"../components/Kiosk/requestKioskKey";const f="efp-track-events";export default async function T(r,t){if(c.log("trackEvent",r,t),!k())return;const o=g.trackerUrl;try{let e=o;const s=localStorage.getItem(v);e+=e.indexOf("?")===-1?"?":"&",e+="type="+encodeURIComponent(r),t!==void 0&&(e+="&value="+encodeURIComponent(t));const i=h(),l=i[i.length-2],m=l?window.location.origin+l:null,n={"X-href":`${window.location.href}${s?`#${encodeURIComponent(s)}`:""}`};m&&(n["X-ref"]=m);const p="expofp-kiosk-stats-id",d=E();if(d){let a=localStorage.getItem(p);if(!a)if(a=await y(d,o),a)localStorage.setItem(p,a);else{S(e,n);return}n["X-kiosk-id"]=a}fetch(e,{cache:"no-store",headers:n}).then(()=>I(o)).catch(()=>S(e,n))}catch{}}function k(){return!!g?.trackerUrl&&process.env.NODE_ENV==="production"&&!u.heatmap}function S(r,t){try{c.log("saveTrackEvent",r,t);const o=localStorage.getItem(f),e=o?JSON.parse(o):[],s=new URL(r),i=Object.fromEntries(s.searchParams.entries());e.push({...i,timeStamp:new Date().toISOString(),headers:t}),localStorage.setItem(f,JSON.stringify(e))}catch(o){c.error("saveTrackEvent",String(o))}}async function I(r){try{if(!k())return;const t=localStorage.getItem(f);if(!t)return;c.log("sendSavedTrackEvents",t),await fetch(new URL("/api/fp-stats/trackBulk",r).href,{method:"POST",headers:{"Content-Type":"application/json"},body:t}),localStorage.removeItem(f)}catch(t){c.error("sendSavedTrackEvents",String(t))}}
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,2 @@
1
+ export declare function pointInTriangle(x: number, y: number, triangle: number[][]): boolean;
2
+ //# sourceMappingURL=geometry.d.ts.map
@@ -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}
@@ -1,7 +1,9 @@
1
- import type { TFunction } from "i18next";
1
+ import { TFunction } from "i18next";
2
2
  export declare const getLocale: () => string;
3
- export declare const initI18n: () => Promise<TFunction>;
4
- export declare const getLanguage: () => string;
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 changeLanguage: (locale: string) => Promise<void>;
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
@@ -1 +1 @@
1
- import e from"i18next";import{loadJson as u}from"../tools/loaders";import{isLocalStorageAvailable as l}from"./localStorage";import d from"../locales";import m from"../tools/base-runtime-url";const i=async a=>await u(`${m}locales/${a}.json`);export const getLocale=()=>{const a=window.__data,n=navigator.languages?.[0]||navigator.language,o=Object.keys(d).find(r=>n.startsWith(r));return(l?localStorage.getItem("language"):null)||a?.locale||o||"en"},initI18n=async()=>{let a=getLocale();const n="en";let o={};if(a!=="en")try{o[a]={translation:await i(a)}}catch(s){console.error(`Unable to load the "${a}" localization. Falling back to "${n}".`,s),a=n}return await e.init({resources:o,lng:a,keySeparator:".",saveMissing:a!=="en",missingKeyHandler:(s,r,g,c)=>console.debug(`i18n missing key. '${a}:${g}', fallback to '${c}'`)})},getLanguage=()=>e.language,t=(a,n)=>e.t(a,n),changeLanguage=async a=>{if(a.toLowerCase()!=="en"&&!e.hasResourceBundle(a,"translation")){const n=await i(a);e.addResourceBundle(a,"translation",n,!0,!0)}await e.changeLanguage(a),l&&localStorage.setItem("language",a)};
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,3 +1,3 @@
1
1
  import type { Data } from '../data/Data';
2
- export declare function loadCustomCss(data: Data): Promise<void>;
2
+ export declare function loadCustomCss(data: Data, appendTo: Element | ShadowRoot): Promise<void>;
3
3
  //# sourceMappingURL=loadCustomCss.d.ts.map
@@ -1 +1 @@
1
- import{loadCustomFonts as o}from"../tools/loaders";export async function loadCustomCss(t){if(t?.customCss){const s=document.createElement("style");s.textContent=t.customCss,document.head.append(s),await o(t.customCss)}}
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:a(n.exhibitors),layer:{name:e(n.layer?.name),description:e(n.layer?.description)},meta:n.meta,description:e(n.description),entity:n.entity};case"category":return{id:n.id,name:e(n.name),exhibitors:a(n.exhibitors),entity:n.entity,slug:e(n.slug)};case"exhibitor":return{id:n.id,name:e(n.name),externalId:e(n.externalId),booths:a(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"language":return{id:n.id,name:e(n.name),entity:n.entity,selected:n.selected||!1};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 a(n){return Array.isArray(n)?n.filter(Boolean).map(r=>r.id).filter(Boolean):[]}function e(n){return typeof n=="string"?n:""}
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(t){return typeof t!="string"?t:t.split(" ").map(n=>{const r=n.replace(/[^A-Z0-9+-]/gi,""),e=r.match(/^[-+]?\d+$/);return e?e[0]:r.charAt(0).toUpperCase()}).join("")}
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,3 +1,3 @@
1
- declare const useShadow = false;
1
+ declare const useShadow: boolean;
2
2
  export default useShadow;
3
3
  //# sourceMappingURL=use-shadow.d.ts.map
@@ -1 +1 @@
1
- const e=!1;export default!1;
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 a,useState as d}from"react";import{uiState as r}from"../store";const f=o=>{if(!o)return null;const e=o.firstElementChild;return e&&e.shadowRoot?e.shadowRoot.querySelector("#efp-layout"):null};export const useRenderTarget=()=>{const[o,e]=d(()=>f(r.rootElement));return a(()=>{if(typeof window>"u"||!r.rootElement)return;let u=!1,t=null;const l=()=>{const s=f(r.rootElement);return s&&!u?(e(i=>i!==s?s:i),!0):!1};if(l())return;const n=r.rootElement.firstElementChild;return n&&n.shadowRoot&&(t=new MutationObserver(()=>{l()&&t&&t.disconnect()}),t.observe(n.shadowRoot,{childList:!0,subtree:!0})),()=>{u=!0,t&&t.disconnect()}},[r.rootElement]),o};
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{};
@@ -1,13 +1,12 @@
1
- import type { Booth } from "../store/BoothStore";
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, ended: boolean, weight: number);
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=wayfinding.d.ts.map
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,3 @@
1
+ import type { GraphDataSource } from "../types";
2
+ export declare const graphDataSource: GraphDataSource;
3
+ //# sourceMappingURL=graphDataSource.d.ts.map
@@ -0,0 +1 @@
1
+ function n(){return window.__wfData}export const graphDataSource={getLines:()=>n()?.lines??[],getLineEnds:()=>n()?.lineEnds??[]};
@@ -0,0 +1,3 @@
1
+ import { GraphBuildOptions, GraphDataSource, GraphInstance, PathFinder } from "../types";
2
+ export declare function buildGraph(dataSource: GraphDataSource, pathFinder: PathFinder, options: GraphBuildOptions): GraphInstance;
3
+ //# sourceMappingURL=buildGraph.d.ts.map
@@ -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,3 @@
1
+ /** Cost assigned to virtual (non-physical) route segments. Zero means virtual links are free (preferred by the pathfinder). */
2
+ export declare const VIRTUAL_LINE_PENALTY = 0;
3
+ //# sourceMappingURL=constants.d.ts.map
@@ -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,4 @@
1
+ import type { RouteLine } from "../types";
2
+ /** Weighted cost of a route line for A* graph edge (legacy formula). */
3
+ export declare function linkCost(line: RouteLine): number;
4
+ //# sourceMappingURL=linkCost.d.ts.map
@@ -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,3 @@
1
+ import type { PathFinder } from "../../types";
2
+ export declare function createAStarPathFinder(): PathFinder;
3
+ //# sourceMappingURL=aStarPathFinder.d.ts.map
@@ -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";