@expofp/floorplan 3.26.0 → 3.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/dist/browser/{Button-DI5g1CPS.js → Button-e8P-AcfW.js} +6 -6
  2. package/dist/browser/{CookieConsent-Qws_nQ3N.js → CookieConsent-DT6PZdD-.js} +8 -8
  3. package/dist/browser/{Debug-DTNPNDds.js → Debug-Btnxv9GC.js} +8 -8
  4. package/dist/browser/DebugTools-CH_HoQal.js +1922 -0
  5. package/dist/browser/{Demo-BDZjOBQc.js → Demo-DZoFFss-.js} +10 -10
  6. package/dist/browser/{Free-Cage9TkV.js → Free-DiFQkGSU.js} +10 -10
  7. package/dist/browser/{GalleryContainer-EeLKgziN.js → GalleryContainer-aJ6EZ5I3.js} +11 -11
  8. package/dist/browser/{GpsLoader-CJMX_mJN.js → GpsLoader-Bu9mBOam.js} +34 -34
  9. package/dist/browser/{KioskStore-BSza48xl.js → KioskStore-DUC4jNn0.js} +58 -107
  10. package/dist/browser/{MaplibreAdapter-evVQiVQj.js → MaplibreAdapter-DIlDXt73.js} +2056 -2141
  11. package/dist/browser/{ModalContainer-CTKDfIyR.js → ModalContainer-CVRxdpt2.js} +11 -11
  12. package/dist/browser/{PermissionNotice-O469DuWb.js → PermissionNotice-B5X5RQja.js} +7 -7
  13. package/dist/browser/SetKioskMode-BbDnU98F.js +48 -0
  14. package/dist/browser/{ShowKiosk-DumFiuHU.js → ShowKiosk-B7HfONvN.js} +11 -11
  15. package/dist/browser/{ViewerMenuPanel-ByFemA_T.js → ViewerMenuPanel-CT6kvVUw.js} +17 -17
  16. package/dist/browser/{add-debug-secret-listener-TLumKuSo.js → add-debug-secret-listener-Dvv-Pg0-.js} +1 -1
  17. package/dist/browser/{adopt-global-settings-ghJrZaU5.js → adopt-global-settings-CXzCKJtp.js} +10 -10
  18. package/dist/browser/{boolean-editor-WIpm-pFP.js → boolean-editor-CHMR9ZwP.js} +10 -10
  19. package/dist/browser/{bootIntercom-BR_Ehbyl.js → bootIntercom-DQcGuly8.js} +3 -3
  20. package/dist/browser/bundle.json +77 -65
  21. package/dist/browser/camera-events-BkrzcISl.js +18 -0
  22. package/dist/browser/{classnames-BmlkHMS8.js → classnames-BYuGpzao.js} +2 -2
  23. package/dist/browser/{client-CIHxJZmk.js → client-hxMr1frV.js} +793 -992
  24. package/dist/browser/{components-7lxOhyyi.js → components-DiB2l4Q7.js} +1952 -2013
  25. package/dist/browser/debug-context-CfyAAxAt.js +24315 -0
  26. package/dist/browser/{debug-overlay-B7jCqVlX.js → debug-overlay-PYUvPcx-.js} +11 -11
  27. package/dist/browser/{debug-ui-D1ApG52e.js → debug-ui-BXRAYxv6.js} +7 -7
  28. package/dist/browser/dimming-Dj-1kBgQ.js +1108 -0
  29. package/dist/browser/{dist-C67OkD_4.js → dist-30RVEJTr.js} +7 -7
  30. package/dist/browser/{dist-BrF5yJyj.js → dist-DgGMS59X.js} +6 -6
  31. package/dist/browser/{dist-CnpnDA-V.js → dist-opCvrhNh.js} +3 -3
  32. package/dist/browser/{efp-debug-init-BqEN61Fo.js → efp-debug-init-CYfrcz9M.js} +4 -4
  33. package/dist/browser/{enum-editor-Cy6VeZZd.js → enum-editor-BYO96W3-.js} +5 -5
  34. package/dist/browser/{es5-DyV1fctu.js → es5-Bpzk_wCi.js} +2 -2
  35. package/dist/browser/{event-not-found-BpFVdXz_.js → event-not-found-DEepFxEc.js} +1 -1
  36. package/dist/browser/{exports-C7NzL4lf.js → exports-Bo5VUoiX.js} +1 -1
  37. package/dist/browser/{favicon-BHscWjwp.js → favicon-Bf88cI9_.js} +1 -1
  38. package/dist/browser/{fetch-retry.umd-BytZeydp.js → fetch-retry.umd-D2BnNN8g.js} +2 -2
  39. package/dist/browser/{flex-BQBLAC6l.js → flex-B5cqWC1b.js} +6 -6
  40. package/dist/browser/{floorplan.loader-DkaQPhwC.js → floorplan.loader-D3lRYRJS.js} +10 -10
  41. package/dist/browser/{floorplan.ready-DwuXZphI.js → floorplan.ready-CsdDpbEv.js} +344 -308
  42. package/dist/browser/{fuse-DZTwJ52u.js → fuse-CzalO4Mu.js} +2 -2
  43. package/dist/browser/{i18n-Bcv8xw_q.js → i18n-D1sb3MoT.js} +5 -5
  44. package/dist/browser/index.js +14 -14
  45. package/dist/browser/{index.module-BFxDVa3K.js → index.module-JxYvexTC.js} +4 -4
  46. package/dist/browser/{integrateKiosk-VTNZSSfD.js → integrateKiosk-e4HqZu2W.js} +5 -5
  47. package/dist/browser/{is-webview-CjItzxdV.js → is-webview-ChPDTaTY.js} +1 -1
  48. package/dist/browser/{jsx-runtime-CT2c-IhD.js → jsx-runtime-Ca1Wj_4-.js} +2 -2
  49. package/dist/browser/{kiosk-record-v7r7q7t0.js → kiosk-record-C2cafcoW.js} +1 -1
  50. package/dist/browser/{lib-DGh8lZgT.js → lib-DXqE6M9Z.js} +3 -3
  51. package/dist/browser/{loadImage-a_ahClbD.js → loadImage-8qYzT9NG.js} +4 -4
  52. package/dist/browser/{logDeviceInfo-DHfa6NcE.js → logDeviceInfo-CF95RwQH.js} +9 -9
  53. package/dist/browser/{mobx-dAtztuiQ.js → mobx-B8aGIDdz.js} +7 -7
  54. package/dist/browser/{optional-boolean-editor-D43-yLO3.js → optional-boolean-editor-D02Q8KUS.js} +4 -4
  55. package/dist/browser/{optional-enum-editor-Cvn8TV-x.js → optional-enum-editor-RV_EKfNQ.js} +5 -5
  56. package/dist/browser/{optional-string-editor-sY0yVw_j.js → optional-string-editor-D_t_aZG2.js} +5 -5
  57. package/dist/browser/{particles.min-BD7iDSr6.js → particles.min-CDyH_67D.js} +2 -2
  58. package/dist/browser/{react-BJopqGbW.js → react-CDmIhEY6.js} +2 -2
  59. package/dist/browser/{react-dom-B77nDdqp.js → react-dom-PGvJwDoR.js} +3 -3
  60. package/dist/browser/{rolldown-runtime-BmHtYG9i.js → rolldown-runtime-CwqkRsWu.js} +1 -1
  61. package/dist/browser/scheduler-MBFOnOYr.js +212 -0
  62. package/dist/browser/{select-ByU-Ym6-.js → select-2x53pvd0.js} +11 -11
  63. package/dist/browser/{settings-CEH1i0Pj.js → settings-BCkl8gdb.js} +2 -2
  64. package/dist/browser/{settings-item-_PTji9Bz.js → settings-item-DT6Vnw06.js} +7 -7
  65. package/dist/browser/store-Dej5FGrq.js +31205 -0
  66. package/dist/browser/{string-editor-DaF1t7MK.js → string-editor-w9YDgRoR.js} +5 -5
  67. package/dist/browser/{text-field-XRLZPyNV.js → text-field-ricOc0h0.js} +6 -6
  68. package/dist/browser/{theme-D0OZcdto.js → theme-Ce7vpk9b.js} +9 -9
  69. package/dist/browser/{ui-7ozfXlN3.js → ui-PDV2rEkU.js} +9 -9
  70. package/dist/browser/{useRenderTarget-BG295f3e.js → useRenderTarget-DroCs5kL.js} +5 -5
  71. package/dist/browser/viewport-Jwms2MJD.js +41 -0
  72. package/dist/esm/components/Kiosk/KioskStore.d.ts +5 -2
  73. package/dist/esm/components/Kiosk/KioskStore.js +1 -1
  74. package/dist/esm/components/Kiosk/SetKioskMode.d.ts +1 -2
  75. package/dist/esm/components/Kiosk/SetKioskMode.js +1 -1
  76. package/dist/esm/components/Map/Map.d.ts +1 -1
  77. package/dist/esm/components/Map/Map.js +1 -1
  78. package/dist/esm/components/Map/MapCamera.d.ts +17 -0
  79. package/dist/esm/components/Map/MapCamera.js +1 -0
  80. package/dist/esm/components/Map/MapViewport.d.ts +12 -0
  81. package/dist/esm/components/Map/MapViewport.js +1 -0
  82. package/dist/esm/components/Map/booth-by-xy.d.ts +13 -0
  83. package/dist/esm/components/Map/booth-by-xy.js +1 -1
  84. package/dist/esm/components/Map/camera-events.d.ts +16 -0
  85. package/dist/esm/components/Map/camera-events.js +1 -0
  86. package/dist/esm/components/Map/camera.d.ts +48 -0
  87. package/dist/esm/components/Map/camera.js +1 -0
  88. package/dist/esm/components/Map/drawing/config/TextFitter.d.ts +1 -1
  89. package/dist/esm/components/Map/drawing/config/config-all.d.ts +1 -2
  90. package/dist/esm/components/Map/drawing/config/config-all.js +1 -1
  91. package/dist/esm/components/Map/drawing/config/config-bg.d.ts +1 -2
  92. package/dist/esm/components/Map/drawing/config/config-bg.js +1 -1
  93. package/dist/esm/components/Map/drawing/config/config-booth-badge.d.ts +70 -3
  94. package/dist/esm/components/Map/drawing/config/config-booth-badge.js +1 -1
  95. package/dist/esm/components/Map/drawing/config/config-booth-bg.d.ts +3 -6
  96. package/dist/esm/components/Map/drawing/config/config-booth-bg.js +1 -1
  97. package/dist/esm/components/Map/drawing/config/config-booth-bookmark.d.ts +11 -7
  98. package/dist/esm/components/Map/drawing/config/config-booth-bookmark.js +1 -1
  99. package/dist/esm/components/Map/drawing/config/config-booth-border.d.ts +2 -3
  100. package/dist/esm/components/Map/drawing/config/config-booth-border.js +1 -1
  101. package/dist/esm/components/Map/drawing/config/config-booth-labels-special.d.ts +16 -3
  102. package/dist/esm/components/Map/drawing/config/config-booth-labels-special.js +2 -2
  103. package/dist/esm/components/Map/drawing/config/config-booth-labels.d.ts +18 -4
  104. package/dist/esm/components/Map/drawing/config/config-booth-labels.js +1 -1
  105. package/dist/esm/components/Map/drawing/config/config-booths.d.ts +1 -2
  106. package/dist/esm/components/Map/drawing/config/config-booths.js +1 -1
  107. package/dist/esm/components/Map/drawing/config/config-load-layer.d.ts +1 -2
  108. package/dist/esm/components/Map/drawing/config/config-load-layer.js +1 -1
  109. package/dist/esm/components/Map/drawing/config/config-markers.d.ts +23 -2
  110. package/dist/esm/components/Map/drawing/config/config-markers.js +1 -1
  111. package/dist/esm/components/Map/drawing/config/layer-images.d.ts +35 -0
  112. package/dist/esm/components/Map/drawing/config/layer-images.js +1 -0
  113. package/dist/esm/components/Map/drawing/config/loadBoothsImages.d.ts +38 -3
  114. package/dist/esm/components/Map/drawing/config/loadBoothsImages.js +1 -1
  115. package/dist/esm/components/Map/pointer.d.ts +73 -0
  116. package/dist/esm/components/Map/pointer.js +1 -0
  117. package/dist/esm/components/Map/scene.d.ts +20 -0
  118. package/dist/esm/components/Map/scene.js +1 -0
  119. package/dist/esm/components/Map/traffic/trafficLayers.d.ts +2 -7
  120. package/dist/esm/components/Map/traffic/trafficLayers.js +1 -1
  121. package/dist/esm/components/Map/traffic/useBuildRoute.d.ts +4 -3
  122. package/dist/esm/components/Map/traffic/useBuildRoute.js +6 -6
  123. package/dist/esm/components/Map/traffic/useManageTraffic.d.ts +4 -3
  124. package/dist/esm/components/Map/traffic/useManageTraffic.js +1 -1
  125. package/dist/esm/components/Map/viewport.d.ts +63 -0
  126. package/dist/esm/components/Map/viewport.js +1 -0
  127. package/dist/esm/components/Maplibre/MaplibreAdapter.d.ts +6 -2
  128. package/dist/esm/components/Maplibre/MaplibreAdapter.js +1 -1
  129. package/dist/esm/components/Maplibre/MaplibreWrapper.d.ts +30 -8
  130. package/dist/esm/components/Maplibre/MaplibreWrapper.js +1 -1
  131. package/dist/esm/components/Maplibre/useDimming.d.ts +2 -2
  132. package/dist/esm/components/Maplibre/useDimming.js +1 -1
  133. package/dist/esm/components/Maplibre/useKioskIdleEvents.d.ts +5 -6
  134. package/dist/esm/components/Maplibre/useLayerVisibilitySync.d.ts +2 -2
  135. package/dist/esm/components/Maplibre/useLayerVisibilitySync.js +1 -1
  136. package/dist/esm/components/Maplibre/usePoiMarkers.d.ts +1 -2
  137. package/dist/esm/components/Maplibre/useWayfindingAndMarkers.d.ts +8 -5
  138. package/dist/esm/components/Maplibre/useWayfindingAndMarkers.js +1 -1
  139. package/dist/esm/components/Maplibre/utils/layer-defs.d.ts +8 -3
  140. package/dist/esm/components/Maplibre/utils/layer-defs.js +1 -1
  141. package/dist/esm/components/Maplibre/utils/poi-marker-hit-test.d.ts +3 -3
  142. package/dist/esm/components/Ws.js +1 -1
  143. package/dist/esm/engine/defs.d.ts +30 -0
  144. package/dist/esm/engine/defs.js +3 -0
  145. package/dist/esm/engine/fonts.js +1 -0
  146. package/dist/esm/engine/update-def.d.ts +52 -0
  147. package/dist/esm/engine/update-def.js +1 -0
  148. package/dist/esm/engine/utils/rotation.d.ts +6 -0
  149. package/dist/esm/engine/utils/rotation.js +1 -0
  150. package/dist/esm/floorplan.ready.d.ts +2 -0
  151. package/dist/esm/floorplan.ready.js +1 -1
  152. package/dist/esm/store/BoothStore.d.ts +11 -0
  153. package/dist/esm/store/LayerStore.d.ts +2 -0
  154. package/dist/esm/store/LayerStore.js +1 -1
  155. package/dist/esm/store/RootStore.d.ts +0 -2
  156. package/dist/esm/store/RootStore.js +1 -1
  157. package/dist/esm/store/RouteStore.js +1 -1
  158. package/dist/esm/store/UIState.js +1 -1
  159. package/dist/esm/store/details-events.d.ts +11 -0
  160. package/dist/esm/store/details-events.js +1 -0
  161. package/dist/esm/store/init/init-booths.js +1 -1
  162. package/dist/esm/utils/dimming.d.ts +13 -2
  163. package/dist/esm/utils/dimming.js +1 -1
  164. package/dist/esm/utils/mobx.d.ts +2 -2
  165. package/dist/esm/utils/mobx.js +1 -1
  166. package/dist/esm/utils/scene-bounds.d.ts +1 -1
  167. package/dist/esm/utils/scene-bounds.js +1 -1
  168. package/dist/esm/wayfinding/adapters/canvasIconProvider.js +1 -1
  169. package/dist/esm/wayfinding/createWayfinding.d.ts +19 -2
  170. package/dist/esm/wayfinding/createWayfinding.js +1 -1
  171. package/package.json +11 -10
  172. package/dist/browser/SetKioskMode-DUk4c-Gs.js +0 -57
  173. package/dist/browser/booth-by-xy-CyZpg1Fn.js +0 -1130
  174. package/dist/browser/main-sUuehgQu.js +0 -289
  175. package/dist/browser/store-Oj0dGPnb.js +0 -41431
  176. package/dist/esm/components/Map/pointInConvexQuad.d.ts +0 -3
  177. package/dist/esm/components/Map/pointInConvexQuad.js +0 -1
  178. package/dist/esm/components/Map/visibleArea.d.ts +0 -16
  179. package/dist/esm/components/Map/visibleArea.js +0 -1
  180. package/dist/esm/components/Maplibre/useRendererEvents.d.ts +0 -9
  181. package/dist/esm/components/Maplibre/useRendererEvents.js +0 -1
  182. package/dist/esm/components/Maplibre/utils/update-pump.d.ts +0 -18
  183. package/dist/esm/components/Maplibre/utils/update-pump.js +0 -1
  184. package/dist/esm/renderer/HandlerRegistry.d.ts +0 -18
  185. package/dist/esm/renderer/HandlerRegistry.js +0 -1
  186. package/dist/esm/renderer/RendererService.d.ts +0 -44
  187. package/dist/esm/renderer/RendererService.js +0 -1
  188. package/dist/esm/renderer/engine-core/defs.d.ts +0 -40
  189. package/dist/esm/renderer/engine-core/defs.js +0 -3
  190. package/dist/esm/renderer/engine-core/fonts.js +0 -1
  191. package/dist/esm/renderer/engine-core/settings.d.ts +0 -4
  192. package/dist/esm/renderer/engine-core/settings.js +0 -1
  193. package/dist/esm/renderer/engine-core/types.d.ts +0 -50
  194. package/dist/esm/renderer/engine-core/types.js +0 -1
  195. package/dist/esm/renderer/engine-core/update-def.d.ts +0 -12
  196. package/dist/esm/renderer/engine-core/update-def.js +0 -1
  197. package/dist/esm/renderer/engine-core/utils/rotation.d.ts +0 -17
  198. package/dist/esm/renderer/engine-core/utils/rotation.js +0 -1
  199. package/dist/esm/renderer/index.d.ts +0 -19
  200. package/dist/esm/renderer/index.js +0 -1
  201. /package/dist/esm/{renderer/engine-core → engine}/canvases.d.ts +0 -0
  202. /package/dist/esm/{renderer/engine-core → engine}/canvases.js +0 -0
  203. /package/dist/esm/{renderer/engine-core → engine}/fonts.d.ts +0 -0
@@ -0,0 +1,1108 @@
1
+ (function() {
2
+ try {
3
+ var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
4
+ e.SENTRY_RELEASE = { id: "3.27.0" };
5
+ var t = new e.Error().stack;
6
+ t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "22277e94-725b-4d46-91b7-b3d48c2435fc", e._sentryDebugIdIdentifier = "sentry-dbid-22277e94-725b-4d46-91b7-b3d48c2435fc");
7
+ } catch {}
8
+ })();
9
+ import { r as e } from "./rolldown-runtime-CwqkRsWu.js";
10
+ import { A as t, v as n } from "./i18n-D1sb3MoT.js";
11
+ import { t as r } from "./react-CDmIhEY6.js";
12
+ import { t as i } from "./loadImage-8qYzT9NG.js";
13
+ import { $t as a, A as o, An as s, Bt as c, Cn as l, Ct as u, Dn as d, En as f, Et as p, Fn as m, Gt as h, Jt as g, Kt as _, M as v, Mn as y, Mt as b, Nn as x, O as S, Ot as C, Pn as w, Qt as T, Tn as E, Tt as D, U as O, Xt as k, Yt as A, Zt as ee, a as j, an as te, bn as M, bt as N, c as P, en as F, fn as I, j as L, jn as ne, k as re, kn as ie, l as ae, rn as R, t as oe, wt as se, x as ce, zt as le } from "./store-Dej5FGrq.js";
14
+ import { i as ue, n as de } from "./viewport-Jwms2MJD.js";
15
+ //#region src/components/Map/traffic/trafficLayers.ts
16
+ var z = "traffic_route", fe = "traffic_route_stop", B = "traffic_vehicles", pe = "build_route_lines", me = "build_route_dots", he = 5;
17
+ function ge() {
18
+ let e = [];
19
+ for (let t = 0; t < he; t++) e.push({
20
+ name: _e(t),
21
+ children: []
22
+ }), e.push({
23
+ name: ve(t),
24
+ children: []
25
+ });
26
+ return e.push({
27
+ name: B,
28
+ children: []
29
+ }), e.push({
30
+ name: pe,
31
+ children: []
32
+ }), e.push({
33
+ name: me,
34
+ children: []
35
+ }), e;
36
+ }
37
+ function _e(e) {
38
+ return `${z}_${e + 1}`;
39
+ }
40
+ function ve(e) {
41
+ return `${fe}_${e + 1}`;
42
+ }
43
+ function ye() {
44
+ return RegExp(`^${z}_\\d+$`);
45
+ }
46
+ function be() {
47
+ return RegExp(`^${fe}_\\d+$`);
48
+ }
49
+ //#endregion
50
+ //#region src/components/Map/drawing/config/config-booth-badge-eligibility.ts
51
+ var xe = /* @__PURE__ */ e(f(), 1);
52
+ function Se(e) {
53
+ return e.hideExhibitorBoothNumber || e.hideBoothBadges || !e.hasExhibitors ? !1 : e.noLabels || !e.hideLogoInBooth && e.hasLogoInBooth;
54
+ }
55
+ //#endregion
56
+ //#region src/components/Map/drawing/config/config-booth-badge.ts
57
+ var Ce = .5, we = .3, Te = 15, Ee = 24, De = 30, Oe = 12, ke = .8, Ae = document.createElement("canvas").getContext("2d");
58
+ function je(e) {
59
+ return e.length <= Te ? e : e.slice(0, Te - 1) + "…";
60
+ }
61
+ function Me(e) {
62
+ var t, n;
63
+ if (!((t = e.paths) != null && t.length)) return [];
64
+ let r = ((n = e.layer) == null ? void 0 : n.name) || "", i = [];
65
+ for (let t of e.paths) for (let e of M(t.index, r)) i.push(e);
66
+ return i;
67
+ }
68
+ function Ne(e) {
69
+ let t = Me(e);
70
+ return t.length ? ie.fromPoints(t.flat().map(([e, t]) => ({
71
+ x: e,
72
+ y: t
73
+ }))) : null;
74
+ }
75
+ function Pe(e) {
76
+ let t = [], n = [];
77
+ for (let r of e) {
78
+ let e = t.length;
79
+ t.push({
80
+ x: r[0][0],
81
+ y: r[0][1]
82
+ }), t.push({
83
+ x: r[1][0],
84
+ y: r[1][1]
85
+ }), t.push({
86
+ x: r[2][0],
87
+ y: r[2][1]
88
+ }), n.push([
89
+ e,
90
+ e + 1,
91
+ e + 2
92
+ ]);
93
+ }
94
+ return new y(t, n);
95
+ }
96
+ function V(e, t, n) {
97
+ return n.containsPoint({
98
+ x: e,
99
+ y: t
100
+ });
101
+ }
102
+ function Fe(e, t, n, r, i, a, o, s) {
103
+ if (!e.length || !V(n, r, t)) return o;
104
+ let c = {
105
+ x: n,
106
+ y: r
107
+ }, l = 0, u = o;
108
+ for (let e = 0; e < 10; e++) {
109
+ let e = (l + u) / 2, o = i * e, d = a * e;
110
+ [
111
+ w({
112
+ x: n + o,
113
+ y: r
114
+ }, s, c),
115
+ w({
116
+ x: n,
117
+ y: r + d
118
+ }, s, c),
119
+ w({
120
+ x: n + o,
121
+ y: r + d
122
+ }, s, c)
123
+ ].every((e) => V(e.x, e.y, t)) ? l = e : u = e;
124
+ }
125
+ return l;
126
+ }
127
+ function Ie(e) {
128
+ var t;
129
+ return (t = Ne(e)) == null ? e.rect : t;
130
+ }
131
+ function Le(e, t, n, r, i, a) {
132
+ var o;
133
+ if (t.length) {
134
+ let o = Ie(e), s = {
135
+ x: i > 0 ? o.min.x : o.max.x,
136
+ y: a > 0 ? o.min.y : o.max.y
137
+ }, c = /* @__PURE__ */ new Set(), l = null, u = Infinity;
138
+ for (let e of t) for (let t of e) {
139
+ let e = `${t[0]},${t[1]}`;
140
+ if (c.has(e)) continue;
141
+ c.add(e);
142
+ let o = t[0] + r * i, d = t[1] + r * a;
143
+ if (V(o, d, n)) {
144
+ let e = Math.abs(o - s.x) + Math.abs(d - s.y);
145
+ e < u && (u = e, l = {
146
+ x: o,
147
+ y: d
148
+ });
149
+ }
150
+ }
151
+ if (l) return l;
152
+ }
153
+ let s = i > 0 ? e.rect.min.x + r : e.rect.max.x - r, c = a > 0 ? e.rect.min.y + r : e.rect.max.y - r, l = (o = e.rotate) == null ? 0 : o;
154
+ return l ? w({
155
+ x: s,
156
+ y: c
157
+ }, l, e.rect.center) : {
158
+ x: s,
159
+ y: c
160
+ };
161
+ }
162
+ function H(e) {
163
+ return e && e !== "none" ? e : void 0;
164
+ }
165
+ function Re(e) {
166
+ var t;
167
+ let n = H(e.borderColor) || H(l.boothBorderColor) || l.colors.booths.default;
168
+ return ((t = e.paths) == null ? void 0 : t.length) > 1 && H(e.paths[e.paths.length - 1].color) || n;
169
+ }
170
+ function ze(e) {
171
+ var t;
172
+ let r = je(e.title || e.name), i = Re(e), a = ce((0, xe.default)(i).hex()), o = u();
173
+ Ae.font = te(De, o);
174
+ let s = Ae.measureText(r).width, c = Math.ceil(s + Oe * 2), l = (e.borderWidth || oe.borderWidth) / 2, d = c * ke, f = 54 * ke, m = e.rect.size.width, h = e.rect.size.height, _ = (e) => {
175
+ let t = e ? h : m, n = e ? m : h;
176
+ return Math.min(t > 0 ? t * Ce / d : Infinity, n > 0 ? n * we / f : Infinity);
177
+ }, v = Me(e), y = Pe(v), x = (t = e.rotate) == null ? 0 : t, S = 0, C = 0, T = 0, E = 0, O = () => {
178
+ let t = Le(e, v, y, l, S === 0 || S === 3 ? 1 : -1, S === 0 || S === 1 ? 1 : -1);
179
+ C = t.x, T = t.y;
180
+ let n = _(S === 1 || S === 3);
181
+ E = Fe(v, y, C, T, d, f, n, x);
182
+ };
183
+ O();
184
+ let j = (t, n) => {
185
+ let r = t / 2, i = n / 2;
186
+ return new ne(w({
187
+ x: C + r,
188
+ y: T + i
189
+ }, x, {
190
+ x: C,
191
+ y: T
192
+ }), {
193
+ x: t,
194
+ y: n
195
+ }, x, e.elevation);
196
+ }, M = se(o, ee()), N = g(j(1, 1), i);
197
+ N.hidden = !0, N.dim = e.skipDim ? 0 : void 0;
198
+ let P = A(k([[r], []], a, 0, [M, M]), j(1, 1), [0, 0], {
199
+ horizontal: "center",
200
+ vertical: "center"
201
+ });
202
+ P.hidden = !0, P.dim = e.skipDim ? 0 : void 0;
203
+ let F = {
204
+ booth: e,
205
+ anchor: {
206
+ x: C,
207
+ y: T
208
+ },
209
+ source: {
210
+ x: d,
211
+ y: f
212
+ },
213
+ rotation: x,
214
+ maxScale: E,
215
+ bg: N,
216
+ text: P
217
+ }, I = new Be(F);
218
+ N.onScale = ({ pixelSize: e }) => I.layOutBg(e), P.onScale = ({ pixelSize: e }) => I.layOutText(e);
219
+ let L = [];
220
+ return L.push(n(() => e.skipDim, (e) => {
221
+ N.dim = e ? 0 : void 0, P.dim = e ? 0 : void 0, b(N, P);
222
+ })), L.push(n(() => {
223
+ var t, n;
224
+ return (t = (n = e.layer) == null ? void 0 : n.visible) == null || t;
225
+ }, (e) => {
226
+ N.hidden = !e, P.hidden = !e, b(N, P);
227
+ })), L.push(n(() => ae.mapSettings, ({ roll: e }) => {
228
+ D(e == null ? 0 : e) && (N.onRoll = ({ roll: e, pixelSize: t }) => {
229
+ let n = p(e, x);
230
+ if (n !== void 0) return x += n, S = (S + (n > 0 ? 1 : 3)) % 4, O(), F.anchor.x = C, F.anchor.y = T, F.rotation = x, F.maxScale = E, [...I.layOutBg(t), ...I.layOutText(t)];
231
+ });
232
+ }, { fireImmediately: !0 })), {
233
+ bg: N,
234
+ text: P,
235
+ dispose: () => {
236
+ L.forEach((e) => e()), L.length = 0;
237
+ }
238
+ };
239
+ }
240
+ var Be = class {
241
+ constructor(e) {
242
+ this.placement = e;
243
+ }
244
+ layOutBg(e) {
245
+ let { bg: t } = this.placement;
246
+ return t.shape = this.rectScaled(e), t.hidden = this.isHidden(), t.hidden ? [] : [t];
247
+ }
248
+ layOutText(e) {
249
+ let { text: t, maxScale: n } = this.placement;
250
+ return t.lines[0].fontSize = Ee * Math.min(e, n), t.bounds = this.rectScaled(e), t.hidden = this.isHidden(), t.hidden ? [] : [t];
251
+ }
252
+ rectScaled(e) {
253
+ let { anchor: t, booth: n, source: r, rotation: i, maxScale: a } = this.placement, o = Math.min(e, a), s = r.x * o, c = r.y * o;
254
+ return new ne(w({
255
+ x: t.x + s / 2,
256
+ y: t.y + c / 2
257
+ }, i, t), {
258
+ x: s,
259
+ y: c
260
+ }, i, n.elevation);
261
+ }
262
+ isHidden() {
263
+ let { booth: e } = this.placement;
264
+ return !!(e.layer && !e.layer.visible);
265
+ }
266
+ };
267
+ function Ve(e, t) {
268
+ let n = [], r = [], i = [];
269
+ for (let e of t) if (e instanceof I && Se({
270
+ hideExhibitorBoothNumber: E.hideExhibitorBoothNumber,
271
+ hideBoothBadges: E.hideBoothBadges,
272
+ hideLogoInBooth: ae.hideLogoInBooth,
273
+ noLabels: e.noLabels,
274
+ hasExhibitors: e.exhibitors.length > 0,
275
+ hasLogoInBooth: e.exhibitors.some((e) => e.logoInBooth && e.logo)
276
+ })) {
277
+ let { bg: t, text: a, dispose: o } = ze(e);
278
+ n.push(t), r.push(a), i.push(o);
279
+ }
280
+ let a = () => {
281
+ i.forEach((e) => e()), i.length = 0;
282
+ };
283
+ return n.length ? {
284
+ layer: {
285
+ name: `${e}:badges`,
286
+ children: [{
287
+ name: `${e}:badgeBgs`,
288
+ children: n
289
+ }, {
290
+ name: `${e}:badgeTexts`,
291
+ children: r
292
+ }]
293
+ },
294
+ cleanup: a
295
+ } : {
296
+ layer: null,
297
+ cleanup: a
298
+ };
299
+ }
300
+ //#endregion
301
+ //#region src/components/Map/drawing/config/config-markers.ts
302
+ var He = "_selected", Ue = "markers";
303
+ function We(e, t) {
304
+ let { center: n, rotation: r } = e.bounds, { width: i, height: o } = e.source;
305
+ return e.bounds = a(n.x, n.y, i, o, t, r), [e];
306
+ }
307
+ function Ge(e) {
308
+ Xe = e;
309
+ }
310
+ function Ke(e) {
311
+ let { scene: t } = e, r = [], i = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), s = [], c = t.rootLayer.children.find((e) => e.name === Ue);
312
+ c.onScale = ({ pixelSize: e }) => Ge(e), le(qe), b(c);
313
+ async function l(e) {
314
+ let t = [];
315
+ e.forEach((e) => {
316
+ let { name: n, content: r, width: a, height: o, scale: s } = e;
317
+ if (i.has(n)) return;
318
+ let c = new Image(), l = new Promise((e, t) => {
319
+ c.onload = () => {
320
+ i.set(n, {
321
+ img: c,
322
+ width: a,
323
+ height: o,
324
+ scale: s
325
+ }), e();
326
+ }, c.onerror = (e) => {
327
+ t(e);
328
+ };
329
+ });
330
+ t.push(l), c.src = r, c.crossOrigin = "anonymous";
331
+ }), await Promise.all(t);
332
+ }
333
+ let u = (e) => {
334
+ e.onScale = ({ pixelSize: t }) => We(e, t);
335
+ }, d = (e) => {
336
+ e.onRoll = ({ roll: t }) => {
337
+ if (t !== e.bounds.rotation) return e.bounds.rotate(t - e.bounds.rotation, e.bounds), [e];
338
+ };
339
+ };
340
+ function f() {
341
+ let e = P.routeStore.markersData.markers;
342
+ e.length && (s = [], e.forEach((e) => {
343
+ var t, n;
344
+ let r = i.get(e.icon);
345
+ if (!r) return;
346
+ let c = r.scale || window.devicePixelRatio, l = e.icon;
347
+ if (!o.has(l)) {
348
+ let e = R(r.img, r.width, r.height, c);
349
+ o.set(l, e);
350
+ }
351
+ let u = o.get(l), d = i.get(e.selectedIcon), f = e.selectedIcon;
352
+ if (!o.has(f)) {
353
+ let e = R(d.img, d.width, d.height, c);
354
+ o.set(f, e);
355
+ }
356
+ let p = o.get(f), m = (t = (n = j.findLayer(e.z)) == null ? void 0 : n.visible) == null || t, g = a(e.x, e.y, u.width, u.height, 1, 0), _ = a(e.x, e.y, p.width, p.height, 1, 0), v;
357
+ switch (e.position) {
358
+ case "lefttop":
359
+ v = [0, 0];
360
+ break;
361
+ case "centertop":
362
+ v = [.5, 0];
363
+ break;
364
+ case "centerbottom":
365
+ v = [.5, 1];
366
+ break;
367
+ default: v = [.5, .5];
368
+ }
369
+ let y = {
370
+ ...h(u, g, {
371
+ hidden: !m,
372
+ origin: v
373
+ }),
374
+ id: e.id,
375
+ scale: c
376
+ }, b = {
377
+ ...h(p, _, {
378
+ hidden: !(m && e.active),
379
+ origin: v
380
+ }),
381
+ id: `${e.id}${He}`,
382
+ scale: c
383
+ };
384
+ s.push(y, b);
385
+ }), c.children = s, s.forEach((e) => {
386
+ u(e), d(e);
387
+ }));
388
+ }
389
+ function p() {
390
+ c.children = [], s = [];
391
+ }
392
+ function m() {
393
+ let e = P.routeStore.markersData.markers;
394
+ e.length && e.forEach((e) => {
395
+ var t, n;
396
+ let r = s.find((t) => t.id === e.id), i = s.find((t) => t.id === `${e.id}${He}`);
397
+ if (!r) return;
398
+ let a = (t = (n = j.findLayer(e.z)) == null ? void 0 : n.visible) == null || t;
399
+ e.active ? (r.hidden = !0, i.hidden = !(a && e.active)) : (r.hidden = !a, i.hidden = !0);
400
+ });
401
+ }
402
+ return r.push(n(() => [P.routeStore.selectedMarkers, P.layerStore.visible], () => {
403
+ if (!P.routeStore.markersData.markers.length) {
404
+ p(), b(c);
405
+ return;
406
+ }
407
+ m(), b(...s);
408
+ })), r.push(n(() => P.routeStore.markersData.markers, () => {
409
+ l(P.routeStore.markersData.icons).then(() => {
410
+ f(), b(c);
411
+ });
412
+ }, { fireImmediately: !0 })), function() {
413
+ r.forEach((e) => e()), r.length = 0, c.onScale = void 0, le(), b(c);
414
+ };
415
+ }
416
+ function qe(e, t) {
417
+ return Je(e, t, Xe);
418
+ }
419
+ function Je(e, t, n) {
420
+ for (let r of P.routeStore.markersData.markers) {
421
+ let i = P.routeStore.markersData.icons.find((e) => e.name === r.icon);
422
+ if (!i) continue;
423
+ let a = i.width * n * devicePixelRatio, o = i.height * n * devicePixelRatio;
424
+ if (Ye(e, t, r.x, r.y, a, o)) {
425
+ let e = P.layerStore.findLayer(r.z);
426
+ if (!e || e && e.visible) return r;
427
+ }
428
+ }
429
+ return null;
430
+ }
431
+ function Ye(e, t, n, r, i, a) {
432
+ return ie.fromCenter({
433
+ x: n,
434
+ y: r
435
+ }, {
436
+ x: 2 * i,
437
+ y: 2 * a
438
+ }).containsPoint({
439
+ x: e,
440
+ y: t
441
+ });
442
+ }
443
+ var Xe = 1;
444
+ //#endregion
445
+ //#region src/components/Map/drawing/config/config-all.ts
446
+ function Ze() {
447
+ let { defaultLayer: e } = P.layerStore, { layers: t } = P.layerStore;
448
+ if (e) {
449
+ let n = [...t], r = t.indexOf(e);
450
+ n.splice(r, 1), t = [e, ...n];
451
+ }
452
+ let n = t.filter((e) => !e.rootParent).map((e) => N(e));
453
+ return Promise.all(n).then((e) => {
454
+ let t = _(L, [], { dim: 0 }), n = _(o, [], { dim: 0 }), r = _(Ue, []), i = _(v, [], { dim: 0 }), a = _(re, [], { dim: 0 }), s = _(S, [], { dim: 0 }), c = [], l = [];
455
+ for (let t of e.flat()) F(t.name) ? (t.dim = 0, l.push(t)) : c.push(t);
456
+ let { layer: u, cleanup: d } = Ve("root", P.boothStore.booths);
457
+ return {
458
+ layers: [
459
+ ...c,
460
+ ...u ? [u] : [],
461
+ ...l,
462
+ ...ge(),
463
+ r,
464
+ i,
465
+ n,
466
+ a,
467
+ t,
468
+ s
469
+ ],
470
+ cleanup: d
471
+ };
472
+ });
473
+ }
474
+ //#endregion
475
+ //#region src/components/Map/MapViewport.tsx
476
+ var U = /* @__PURE__ */ e(r(), 1);
477
+ function Qe() {
478
+ let e = C(), t = (0, U.useRef)({ api: e }), [n] = (0, U.useState)(() => de(t));
479
+ return (0, U.useLayoutEffect)(() => {
480
+ t.current = { api: e };
481
+ }), (0, U.useEffect)(() => (ue(n), () => ue(void 0)), [n]), null;
482
+ }
483
+ //#endregion
484
+ //#region src/components/Map/traffic/UpdateQueue.ts
485
+ var W = class {
486
+ constructor() {
487
+ this.queue = [], this.isProcessing = !1, this.rafId = null, this.CHUNK_SIZE = 100, this.TIME_BUDGET = 4;
488
+ }
489
+ add(e) {
490
+ this.queue.push(e), this.scheduleProcessing();
491
+ }
492
+ scheduleProcessing() {
493
+ this.isProcessing || this.queue.length === 0 || (this.isProcessing = !0, this.queue.length <= this.CHUNK_SIZE * 2 ? Promise.resolve().then(() => this.processMicrotaskQueue()) : this.rafId = requestAnimationFrame((e) => {
494
+ this.processQueue(e);
495
+ }));
496
+ }
497
+ processMicrotaskQueue() {
498
+ let e = performance.now(), t = 0;
499
+ for (; this.queue.length > 0 && t < this.CHUNK_SIZE;) {
500
+ let n = this.queue.shift();
501
+ try {
502
+ n();
503
+ } catch (e) {
504
+ console.warn("UpdateQueue task error:", e);
505
+ }
506
+ if (t++, performance.now() - e > this.TIME_BUDGET) break;
507
+ }
508
+ this.queue.length > 0 ? Promise.resolve().then(() => this.processMicrotaskQueue()) : this.isProcessing = !1;
509
+ }
510
+ processQueue(e) {
511
+ this.rafId = null;
512
+ let t = 0;
513
+ for (; this.queue.length > 0 && t < this.CHUNK_SIZE;) {
514
+ let n = this.queue.shift();
515
+ try {
516
+ n();
517
+ } catch (e) {
518
+ console.warn("UpdateQueue task error:", e);
519
+ }
520
+ if (t++, performance.now() - e > this.TIME_BUDGET) break;
521
+ }
522
+ this.queue.length > 0 ? this.rafId = requestAnimationFrame((e) => this.processQueue(e)) : this.isProcessing = !1;
523
+ }
524
+ destroy() {
525
+ this.rafId !== null && (cancelAnimationFrame(this.rafId), this.rafId = null), this.queue = [], this.isProcessing = !1;
526
+ }
527
+ }, G = 49, $e = `hsl(257, 76%, ${G}%)`, et = `hsl(339.903, 82%, ${G}%)`, tt = `hsl(257, 76%, ${Math.round(G * 1.82)}%)`, K = 4, nt = K, rt = "U", it = "R", at = "S", ot = "P", st = class {
528
+ constructor() {
529
+ this._state = [[]], this.index = 0, this.pointHashSet = /* @__PURE__ */ new Set(), this.locked = !1, this.storageKey = "expofp_build_route_state", this._selected = 0;
530
+ }
531
+ get points() {
532
+ return this._state[this.index];
533
+ }
534
+ set points(e) {
535
+ this._state.push(e), this.setIndex(), this.save();
536
+ }
537
+ setIndex() {
538
+ this.index = Math.max(this._state.length - 1, 0);
539
+ }
540
+ genPointHash(e) {
541
+ return `${e.x},${e.y}`;
542
+ }
543
+ add(e) {
544
+ let t = this.genPointHash(e);
545
+ this.pointHashSet.has(t) || (this.pointHashSet.add(t), this.points = [...this.points, e]);
546
+ }
547
+ undo() {
548
+ this.index && (this._state.pop(), this.setIndex(), this.save(), this.select(this.points.length - 1));
549
+ }
550
+ execute(e) {
551
+ try {
552
+ if (this.locked) return;
553
+ this.locked = !0, e();
554
+ } finally {
555
+ requestAnimationFrame(() => {
556
+ this.locked = !1;
557
+ });
558
+ }
559
+ }
560
+ log(e, t = 12) {
561
+ console.log(`%c${e}`, `color: black; font-size: ${t}px; background: LemonChiffon;`);
562
+ }
563
+ instruct() {
564
+ this.log(`How to Build a Route:
565
+ Add Point: Click on the map.
566
+ Apply Smoothing: Press ${it}.
567
+ Apply Simplification: Press ${at}.
568
+ Undo: Press ${rt}.
569
+ Enable/Disable Preview: Press ${ot}.
570
+ `, 16);
571
+ }
572
+ applyChaikinSmoothing(e, t, n) {
573
+ let r;
574
+ if (n >= 1 && e.length >= 2) {
575
+ r = [e[0]];
576
+ for (let t = 1; t < e.length; t++) {
577
+ let i = e[t - 1], a = e[t];
578
+ for (let e = 1; e <= n; e++) {
579
+ let t = e / (n + 1);
580
+ r.push({
581
+ x: i.x + (a.x - i.x) * t,
582
+ y: i.y + (a.y - i.y) * t
583
+ });
584
+ }
585
+ r.push(a);
586
+ }
587
+ } else r = e.slice();
588
+ for (let e = 0; e < t && !(r.length < 2); e++) {
589
+ let e = [{ ...r[0] }];
590
+ for (let t = 1; t < r.length; t++) {
591
+ let n = r[t - 1], i = r[t];
592
+ e.push({
593
+ x: .75 * n.x + .25 * i.x,
594
+ y: .75 * n.y + .25 * i.y
595
+ }), e.push({
596
+ x: .25 * n.x + .75 * i.x,
597
+ y: .25 * n.y + .75 * i.y
598
+ });
599
+ }
600
+ e.push({ ...r[r.length - 1] }), r = e;
601
+ }
602
+ return r;
603
+ }
604
+ applySmoothing() {
605
+ this.points.length < 3 || (this.points = this.applyChaikinSmoothing(this.points, 1, 0), this.select(this.points.length - 1));
606
+ }
607
+ save() {
608
+ try {
609
+ this.points.length ? sessionStorage.setItem(this.storageKey, JSON.stringify(this.points)) : sessionStorage.removeItem(this.storageKey);
610
+ } catch (e) {
611
+ console.warn(e);
612
+ }
613
+ }
614
+ restore() {
615
+ try {
616
+ let e = sessionStorage.getItem(this.storageKey);
617
+ if (!e) return;
618
+ let t = JSON.parse(e);
619
+ if (!Array.isArray(t)) return;
620
+ t.forEach((e) => this.add(e)), this.select(this.points.length - 1);
621
+ } catch (e) {
622
+ console.warn(e);
623
+ }
624
+ }
625
+ topologyPreservingSimplify(e, t) {
626
+ if (e.length <= 2) return e.map((e) => ({ ...e }));
627
+ let n = (e, t, n) => {
628
+ let r = e.x, i = e.y, a = t.x, o = t.y, s = n.x, c = n.y;
629
+ return Math.abs((c - o) * r - (s - a) * i + s * o - c * a) / (Math.sqrt((c - o) ** 2 + (s - a) ** 2) || 1e-10);
630
+ }, r = (e, t, n, r) => {
631
+ let i = s({
632
+ p0: e,
633
+ p1: t
634
+ }, {
635
+ p0: n,
636
+ p1: r
637
+ });
638
+ return i !== null && i.onLine1 && i.onLine2;
639
+ }, i = Array(e.length).fill(!1);
640
+ i[0] = i[i.length - 1] = !0;
641
+ let a = [], o = (s, c) => {
642
+ if (c <= s + 1) return;
643
+ let l = e[s], u = e[c], d = 0, f = 0;
644
+ for (let t = s + 1; t < c; t++) {
645
+ let r = n(e[t], l, u);
646
+ r > d && (d = r, f = t);
647
+ }
648
+ if (d > t) {
649
+ let t = e[f], n = !0;
650
+ for (let e = 0; e < a.length - 1; e++) if (r(a[e], a[e + 1], l, t) || r(a[e], a[e + 1], t, u)) {
651
+ n = !1;
652
+ break;
653
+ }
654
+ n && (i[f] = !0, o(s, f), o(f, c));
655
+ }
656
+ };
657
+ return o(0, e.length - 1), e.filter((e, t) => i[t]);
658
+ }
659
+ applySimplification() {
660
+ this.points = this.topologyPreservingSimplify(this.points, .5), this.select(this.points.length - 1);
661
+ }
662
+ get selected() {
663
+ return this._selected;
664
+ }
665
+ select(e) {
666
+ this._selected = Math.max(0, Math.min(e, this.points.length - 1));
667
+ }
668
+ };
669
+ function ct({ enabled: e, scene: t }) {
670
+ let n = (0, U.useRef)(!1), r = (0, U.useRef)(), i = (0, U.useMemo)(() => T(K, $e), []), o = (0, U.useMemo)(() => T(K, et), []), s = (0, U.useMemo)(() => new st(), []), l = (0, U.useRef)(new W()), u = (0, U.useMemo)(() => {
671
+ if (!t) return {};
672
+ let e = t.rootLayer.children;
673
+ return {
674
+ linesLayer: e.find((e) => e.name === pe),
675
+ pointsLayer: e.find((e) => e.name === me)
676
+ };
677
+ }, [t]), d = (0, U.useCallback)(() => {
678
+ if (!u || !i || !o) return;
679
+ let { linesLayer: e, pointsLayer: t } = u;
680
+ if (!e || !t) return;
681
+ let c = s.points, d = n.current;
682
+ d ? t.children.length = 0 : t.children = c.map(({ x: e, y: t }, n) => {
683
+ let c = n == s.selected ? o : i;
684
+ return {
685
+ source: c,
686
+ bounds: a(e, t, c.width, c.height, r.current)
687
+ };
688
+ });
689
+ let f = [];
690
+ for (let e = 1; e < c.length; e++) {
691
+ let t = c[e - 1], n = c[e];
692
+ f.push({
693
+ points: {
694
+ p0: t,
695
+ p1: n
696
+ },
697
+ color: d ? $e : tt,
698
+ width: nt
699
+ });
700
+ }
701
+ f.length ? e.children = f : e.children.length = 0, l.current.add(() => b(t, e)), s.instruct(), s.log(JSON.stringify(s.points));
702
+ }, [
703
+ s,
704
+ u,
705
+ i,
706
+ o
707
+ ]), f = (0, U.useCallback)((e) => {
708
+ let t = e.key.toUpperCase();
709
+ s.execute(() => {
710
+ switch (t) {
711
+ case rt:
712
+ e.preventDefault(), s.undo(), n.current = !1, d();
713
+ break;
714
+ case it:
715
+ e.preventDefault(), s.applySmoothing(), n.current = !1, d();
716
+ break;
717
+ case at:
718
+ e.preventDefault(), s.applySimplification(), n.current = !1, d();
719
+ break;
720
+ case ot:
721
+ e.preventDefault(), n.current = !n.current, d();
722
+ break;
723
+ }
724
+ });
725
+ }, [s, d]), p = (0, U.useCallback)((e) => {
726
+ r.current = e;
727
+ let { pointsLayer: t } = u;
728
+ if (!t) return [];
729
+ let n = [];
730
+ return s.execute(() => {
731
+ let e = t.children;
732
+ for (let t of e) t.bounds = a(t.bounds.center.x, t.bounds.center.y, t.source.width, t.source.height, r.current), n.push(t);
733
+ }), n;
734
+ }, [u, s]), m = (0, U.useCallback)((e) => {
735
+ s.execute(() => {
736
+ s.add({
737
+ x: e.x,
738
+ y: e.y
739
+ }), s.select(s.points.length - 1), d();
740
+ });
741
+ }, [s, d]);
742
+ (0, U.useEffect)(() => {
743
+ var t, n;
744
+ if (!e || !(u != null && u.pointsLayer)) return;
745
+ let { pointsLayer: i } = u;
746
+ return r.current = (t = (n = O()) == null ? void 0 : n.state().pixelSize) == null ? 1 : t, s.execute(() => {
747
+ s.restore(), d();
748
+ }), i.onScale = ({ pixelSize: e }) => p(e), l.current.add(() => b(i)), c(m), window.addEventListener("keyup", f), () => {
749
+ window.removeEventListener("keyup", f), c(), i.onScale = void 0, l.current.destroy();
750
+ };
751
+ }, [
752
+ e,
753
+ u,
754
+ s,
755
+ d,
756
+ m,
757
+ p,
758
+ f
759
+ ]);
760
+ }
761
+ //#endregion
762
+ //#region src/components/Map/traffic/useManageTraffic.ts
763
+ var q = 2, lt = q * 3.5, J = q * 12, ut = J * .7, dt = 8, ft = "transport_locations", pt = 150, Y = "#a4aab6", mt = 1e3, ht = 2e4, gt = 500;
764
+ function _t({ permission: e, scene: n, dataJsonUrl: r, websocketUrl: o }) {
765
+ let s = (0, U.useRef)(window.devicePixelRatio), c = (0, U.useRef)(/* @__PURE__ */ new Map()), l = (0, U.useRef)(/* @__PURE__ */ new Map()), u = (0, U.useRef)(), d = (0, U.useRef)(), f = (0, U.useRef)(performance.now()), p = (0, U.useRef)(1), m = (0, U.useRef)(new W()), h = (0, U.useRef)(/* @__PURE__ */ new Map()), g = (0, U.useRef)(mt), _ = (0, U.useRef)(/* @__PURE__ */ new Map()), v = (0, U.useRef)();
766
+ (0, U.useEffect)(() => {
767
+ async function y() {
768
+ if (!(!e || !n)) try {
769
+ var o, u;
770
+ let e;
771
+ try {
772
+ let t = await fetch(r, {
773
+ method: "GET",
774
+ headers: { "Content-Type": "application/json" }
775
+ });
776
+ if (!t.ok || t.status === 204) return;
777
+ e = await t.json();
778
+ } catch (e) {
779
+ console.warn("useManageTraffic failed to get JSON", e);
780
+ }
781
+ if (!e || e != null && e.disabled || e != null && e.error) return;
782
+ s.current = vt((o = (u = O()) == null ? void 0 : u.state().pixelSize) == null ? window.devicePixelRatio : o);
783
+ let g = new Map(e.routes.map(({ id: e, color: t }) => [e, t])), v = n.rootLayer.children, y = /* @__PURE__ */ new Map();
784
+ g.forEach((e) => {
785
+ y.set(e, bt({
786
+ radius: lt,
787
+ color: e,
788
+ scale: window.devicePixelRatio
789
+ }));
790
+ });
791
+ let S = ye(), w = v.filter((e) => S.test(e.name)), T = be(), E = v.filter((e) => T.test(e.name));
792
+ e.routes.slice(0, w.length).forEach(({ id: e, color: t, path: n, stops: r, hiddenPoints: i }, o) => {
793
+ h.current.set(e, n);
794
+ let c = w[o];
795
+ if (c) {
796
+ var l;
797
+ let e = new Map((l = i == null ? void 0 : i.map((e) => [$(e), e])) == null ? [] : l);
798
+ for (let r = 1; r < n.length; r++) {
799
+ let i = n[r - 1], a = n[r];
800
+ e.has($(i)) || e.has($(a)) || c.children.push({
801
+ points: {
802
+ p0: i,
803
+ p1: a
804
+ },
805
+ color: t,
806
+ width: q
807
+ });
808
+ }
809
+ c.children.length && m.current.add(() => b(c));
810
+ }
811
+ let u = E[o];
812
+ if (u && r != null && r.length) {
813
+ let e = y.get(t);
814
+ r.forEach((t) => {
815
+ u.children.push({
816
+ source: e,
817
+ bounds: a(t.x, t.y, e.width, e.height, s.current)
818
+ });
819
+ }), u.children.length && m.current.add(() => b(u));
820
+ }
821
+ });
822
+ let D = v.find((e) => e.name === B), k = /* @__PURE__ */ new Map();
823
+ D.onScale = ({ pixelSize: e }) => {
824
+ s.current = vt(e);
825
+ let t = [];
826
+ for (let e of E) {
827
+ let n = e.children;
828
+ for (let e of n) e.bounds = a(e.bounds.center.x, e.bounds.center.y, e.source.width, e.source.height, s.current, e.bounds.rotation), t.push(e);
829
+ }
830
+ for (let e of c.current.values()) e.bounds = a(e.bounds.center.x, e.bounds.center.y, e.source.width, e.source.height, s.current, e.bounds.rotation), t.push(e);
831
+ return t;
832
+ }, m.current.add(() => b(D)), g.forEach((e, t) => {
833
+ k.set(t, xt({
834
+ id: t,
835
+ width: J,
836
+ height: J,
837
+ color: e,
838
+ scale: window.devicePixelRatio
839
+ }));
840
+ }), k.set(Y, xt({
841
+ id: "orphan",
842
+ width: J,
843
+ height: J,
844
+ color: Y,
845
+ scale: window.devicePixelRatio
846
+ }));
847
+ let A = null;
848
+ try {
849
+ A = R(await i(`${t}icons/bus-white.svg`), ut, ut, window.devicePixelRatio);
850
+ } catch (e) {
851
+ console.error(e);
852
+ }
853
+ d.current = (e) => {
854
+ try {
855
+ var t;
856
+ let n = JSON.parse(e.data);
857
+ if (n.type !== ft) return;
858
+ let r = e.timeStamp || performance.now();
859
+ p.current = Math.round(r - f.current), f.current = r;
860
+ let i = Math.max((t = p.current) == null ? gt : t, gt), o = l.current, u = c.current, d = D.children, g = m.current, v = !1;
861
+ n.data.forEach(({ id: e, x: t, y: n, route_id: r, hidden: c }) => {
862
+ if (o.has(e)) {
863
+ var l;
864
+ (l = o.get(e)) == null || l(), o.delete(e);
865
+ }
866
+ if (c && u.has(e) && u.has(Z(e))) {
867
+ let t = u.get(e);
868
+ t.hidden = !0;
869
+ let n = u.get(Z(e));
870
+ n.hidden = !0, g.add(() => b(t, n));
871
+ return;
872
+ }
873
+ if (_.current.set(e, performance.now()), !u.has(e)) {
874
+ let i = k.get(r) || k.get(Y), o = {
875
+ id: e,
876
+ source: i,
877
+ bounds: a(t, n, i.width, i.height, s.current, 0)
878
+ };
879
+ if (u.set(e, o), A) {
880
+ let r = Z(e), i = {
881
+ id: r,
882
+ source: A,
883
+ bounds: a(t, n, A.width, A.height, s.current, 0)
884
+ };
885
+ A.setAttribute("id", r), u.set(r, i), d.push(o, i);
886
+ } else d.push(o);
887
+ v = !0;
888
+ return;
889
+ }
890
+ let f = u.get(e), p = u.get(Z(e)), m = f.bounds.center, y = Tt(m, {
891
+ x: t,
892
+ y: n
893
+ }, h.current.get(r));
894
+ if (y.reduce((e, t, n) => n === 0 ? e : e + X(y[n - 1], t), 0) >= pt || document.hidden) St({
895
+ updateQueue: g,
896
+ vehicle: f,
897
+ vehicleFinery: p,
898
+ x: t,
899
+ y: n,
900
+ scale: s.current,
901
+ angle: yt(f.bounds.center, {
902
+ x: t,
903
+ y: n
904
+ })
905
+ });
906
+ else {
907
+ let t = Et(y, i, (e) => {
908
+ St({
909
+ updateQueue: g,
910
+ vehicle: f,
911
+ vehicleFinery: p,
912
+ x: e.x,
913
+ y: e.y,
914
+ scale: s.current,
915
+ angle: e.angle
916
+ });
917
+ });
918
+ o.set(e, t);
919
+ }
920
+ }), v && g.add(() => b(D));
921
+ } catch (e) {
922
+ console.error("handleSocketMessage", e);
923
+ }
924
+ }, x(), C(e.config ? (Number(e.config.vehicle_inactive_interval) || 20) * 1e3 : ht);
925
+ } catch (e) {
926
+ console.warn(e);
927
+ }
928
+ }
929
+ y();
930
+ function x() {
931
+ var e, t;
932
+ ((e = u.current) == null ? void 0 : e.readyState) === WebSocket.OPEN || ((t = u.current) == null ? void 0 : t.readyState) === WebSocket.CONNECTING || (u.current = new WebSocket(o), u.current.onmessage = d.current, u.current.onopen = () => {
933
+ g.current = mt;
934
+ }, u.current.onclose = () => {
935
+ navigator.onLine && (setTimeout(x, g.current), g.current = Math.min(g.current * 2, 3e4));
936
+ });
937
+ }
938
+ function S() {
939
+ x();
940
+ }
941
+ window.addEventListener("online", S);
942
+ function C(e) {
943
+ clearInterval(v.current), v.current = window.setInterval(() => {
944
+ let t = performance.now(), n = [], r = [];
945
+ _.current.forEach((i, a) => {
946
+ if (t - i < e) return;
947
+ let o = c.current.get(a);
948
+ o && (o.hidden = !0, r.push(o), n.push(a));
949
+ let s = Z(a), l = c.current.get(s);
950
+ l && (l.hidden = !0, r.push(l), n.push(s));
951
+ }), r.length && m.current.add(() => b(...r)), n.forEach((e) => _.current.delete(e));
952
+ }, e);
953
+ }
954
+ return () => {
955
+ var e;
956
+ let t = n == null || (e = n.rootLayer.children) == null ? void 0 : e.find((e) => e.name === B);
957
+ t && (t.onScale = void 0), l.current.forEach((e) => e == null ? void 0 : e()), l.current.clear(), c.current.clear(), m.current.destroy(), window.removeEventListener("online", S), clearInterval(v.current);
958
+ };
959
+ }, [
960
+ e,
961
+ n,
962
+ r,
963
+ o
964
+ ]);
965
+ }
966
+ function vt(e) {
967
+ return Math.min(e || window.devicePixelRatio, dt);
968
+ }
969
+ function yt(e, t) {
970
+ return d(e, t);
971
+ }
972
+ function bt({ radius: e, scale: t, color: n }) {
973
+ let r = document.createElement("canvas"), i = r.getContext("2d");
974
+ i.imageSmoothingEnabled = !1;
975
+ let a = Math.ceil(e * 2 * t), o = a / 2, s = e * .78, c = e * .33;
976
+ return r.width = a, r.height = a, i.translate(o, o), i.scale(t, t), i.beginPath(), i.arc(0, 0, e, 0, 2 * Math.PI), i.fillStyle = "#FFFFFF", i.fill(), i.beginPath(), i.arc(0, 0, s, 0, 2 * Math.PI), i.fillStyle = n, i.fill(), i.beginPath(), i.arc(0, 0, c, 0, 2 * Math.PI), i.fillStyle = "#FFFFFF", i.fill(), r;
977
+ }
978
+ function xt({ id: e, width: t, height: n, color: r, scale: i }) {
979
+ let a = 2 * i, o = t / 2 * i, s = n * i, c = .01, l = s * .6, u = s, d = 8 * i, f = u + a + l / 2 + d * 2, p = o * 2 + l + a + d * 2, m = document.createElement("canvas");
980
+ m.setAttribute("id", e), m.width = f, m.height = p;
981
+ let h = m.getContext("2d"), g = f / 2, _ = p / 2;
982
+ h.save(), h.translate(g, _), h.rotate(-Math.PI / 2), h.translate(-g, -_);
983
+ let v = g, y = _ - u / 2 + o, b = y + l;
984
+ return h.shadowColor = "rgba(16, 24, 40, 0.2)", h.shadowBlur = d / 2, h.beginPath(), h.arc(v, y, o, Math.PI, 0, !1), h.bezierCurveTo(v + o, y + s * .3, v + c * o, b, v, b), h.bezierCurveTo(v - c * o, b, v - o, y + s * .3, v - o, y), h.closePath(), h.fillStyle = r, h.fill(), h.strokeStyle = "#FFFFFF", h.lineWidth = a, h.stroke(), h.restore(), m;
985
+ }
986
+ function X(e, t) {
987
+ return x(e, t);
988
+ }
989
+ function Z(e) {
990
+ return `${e}_finery`;
991
+ }
992
+ function St({ updateQueue: e, vehicle: t, vehicleFinery: n, x: r, y: i, scale: o, angle: s }) {
993
+ if (t.bounds = a(r, i, t.source.width, t.source.height, o, s), t.hidden = !1, n) {
994
+ var c, l;
995
+ let s = (c = (l = O()) == null ? void 0 : l.state().roll) == null ? 0 : c;
996
+ n.bounds = a(r, i, n.source.width, n.source.height, o, m(s)), n.hidden = !1, e.add(() => b(n, t));
997
+ } else e.add(() => b(t));
998
+ }
999
+ function Q(e, t, n) {
1000
+ return {
1001
+ x: e.x + (t.x - e.x) * n,
1002
+ y: e.y + (t.y - e.y) * n
1003
+ };
1004
+ }
1005
+ function Ct(e, t) {
1006
+ let n = Infinity, r = {
1007
+ index: 0,
1008
+ t: 0
1009
+ };
1010
+ for (let i = 0; i < t.length - 1; i++) {
1011
+ let a = t[i], o = t[i + 1], s = o.x - a.x, c = o.y - a.y, l = s * s + c * c, u = l ? ((e.x - a.x) * s + (e.y - a.y) * c) / l : 0, d = Math.max(0, Math.min(1, u)), f = X(e, Q(a, o, d));
1012
+ f < n && (n = f, r = {
1013
+ index: i,
1014
+ t: d
1015
+ });
1016
+ }
1017
+ return r;
1018
+ }
1019
+ function wt(e, t, n) {
1020
+ let r = X(e, t), i = Math.max(2, Math.ceil(r / n) + 1), a = [];
1021
+ for (let n = 0; n < i; n++) {
1022
+ let r = Q(e, t, n / (i - 1));
1023
+ a.push(r);
1024
+ }
1025
+ return a;
1026
+ }
1027
+ function Tt(e, t, n) {
1028
+ if (!n || !n.length) return wt(e, t, 10);
1029
+ let r = Ct(e, n), i = Ct(t, n), a = [], o = (e) => a.push(e);
1030
+ r.index + 1 < n.length ? o(Q(n[r.index], n[r.index + 1], r.t)) : o(n[r.index]);
1031
+ for (let e = r.index + 1; e <= i.index && e < n.length; e++) o(n[e]);
1032
+ return i.index + 1 < n.length ? o(Q(n[i.index], n[i.index + 1], i.t)) : o(n[i.index]), a;
1033
+ }
1034
+ function Et(e, t, n, r) {
1035
+ if (e.length < 2) return () => {};
1036
+ let i = null, a, o = [], s = 0;
1037
+ for (let t = 0; t < e.length - 1; t++) {
1038
+ let n = x(e[t], e[t + 1]);
1039
+ o.push(n), s += n;
1040
+ }
1041
+ let c = (l) => {
1042
+ i || (i = l);
1043
+ let u = l - i, f = Math.min(u / t, 1), p = f * s, m = 0, h = 0;
1044
+ for (; h < o.length && m + o[h] < p;) m += o[h], h++;
1045
+ h >= o.length && (h = o.length - 1);
1046
+ let g = e[h], _ = e[Math.min(h + 1, e.length - 1)], v = o[h] || 0, y = v === 0 ? 0 : (p - m) / v;
1047
+ n({
1048
+ x: g.x + (_.x - g.x) * y,
1049
+ y: g.y + (_.y - g.y) * y,
1050
+ angle: d(g, _)
1051
+ }), f < 1 ? a = requestAnimationFrame(c) : r && r();
1052
+ };
1053
+ return a = requestAnimationFrame(c), () => {
1054
+ a && cancelAnimationFrame(a);
1055
+ };
1056
+ }
1057
+ function $(e) {
1058
+ return `${e.x},${e.y}`;
1059
+ }
1060
+ //#endregion
1061
+ //#region src/utils/dimming.ts
1062
+ var Dt = .5, Ot = "cubic";
1063
+ function kt(e, t) {
1064
+ return !e || e.rootLayer.dim === t ? !1 : (e.rootLayer.dim = t, !0);
1065
+ }
1066
+ function At(e, t = 300, n = Ot) {
1067
+ let r = null, i = 0, a = 0, o = 0, s = 0, c = Math.max(t, 0);
1068
+ function l() {
1069
+ r === null || typeof cancelAnimationFrame != "function" || (cancelAnimationFrame(r), r = null);
1070
+ }
1071
+ function u(t) {
1072
+ l(), i = t, e(i);
1073
+ }
1074
+ function d(t) {
1075
+ let l = t - s, u = Math.min(l / c, 1), f = jt(u, n);
1076
+ if (i = a + (o - a) * f, e(i), u < 1) {
1077
+ r = requestAnimationFrame(d);
1078
+ return;
1079
+ }
1080
+ r = null, i = o, e(i);
1081
+ }
1082
+ return {
1083
+ getValue() {
1084
+ return i;
1085
+ },
1086
+ setTarget(e, t = {}) {
1087
+ let n = +!!e;
1088
+ if (!(!t.immediate && n === o && r === null)) {
1089
+ if (o = n, t.immediate || c === 0 || typeof requestAnimationFrame != "function") {
1090
+ u(o);
1091
+ return;
1092
+ }
1093
+ l(), a = i, s = typeof performance > "u" ? Date.now() : performance.now(), r = requestAnimationFrame(d);
1094
+ }
1095
+ },
1096
+ stop() {
1097
+ l();
1098
+ }
1099
+ };
1100
+ }
1101
+ function jt(e, t) {
1102
+ return t === "linear" ? e : Mt(e);
1103
+ }
1104
+ function Mt(e) {
1105
+ return e < .5 ? 4 * e * e * e : 1 - (-2 * e + 2) ** 3 / 2;
1106
+ }
1107
+ //#endregion
1108
+ export { ct as a, Ke as c, _t as i, kt as n, Qe as o, At as r, Ze as s, Dt as t };