@expofp/floorplan 3.23.4 → 3.24.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 (86) hide show
  1. package/dist/browser/{Button-CMjW-Wfe.js → Button-Bw0hqT6o.js} +5 -5
  2. package/dist/browser/{CookieConsent-CW284IES.js → CookieConsent-DAoC1-xI.js} +7 -7
  3. package/dist/browser/{Debug-CnCFIYN7.js → Debug-3VToRuwQ.js} +7 -7
  4. package/dist/browser/{Demo-CYyNMvhs.js → Demo-BYUTTvOd.js} +9 -9
  5. package/dist/browser/{Free-facWfhIR.js → Free-CtdSA5bo.js} +9 -9
  6. package/dist/browser/{GalleryContainer-CN_T22CR.js → GalleryContainer-D7tIVZPr.js} +10 -10
  7. package/dist/browser/{GpsLoader-CbUgoSPS.js → GpsLoader-q-Mc4g77.js} +10 -10
  8. package/dist/browser/{KioskStore-ISJXu8M3.js → KioskStore-CAS07rsa.js} +8 -6
  9. package/dist/browser/{MaplibreAdapter-HozQALVd.js → MaplibreAdapter-CEgsHtMU.js} +16 -16
  10. package/dist/browser/{ModalContainer-TFMi7yPb.js → ModalContainer-gqVQe0mT.js} +10 -10
  11. package/dist/browser/{PermissionNotice-D8AsL3Rf.js → PermissionNotice-CNmf5lZ2.js} +6 -6
  12. package/dist/browser/{SetKioskMode-CMYbngGo.js → SetKioskMode-C2jN1b9b.js} +8 -8
  13. package/dist/browser/{ShowKiosk-Dz5ClbzP.js → ShowKiosk-8zZRT4DP.js} +10 -10
  14. package/dist/browser/{ViewerMenuPanel-DYWI-sVx.js → ViewerMenuPanel-CLYKOSWi.js} +9 -9
  15. package/dist/browser/{add-debug-secret-listener-BqoA69bT.js → add-debug-secret-listener-Dumma9XW.js} +1 -1
  16. package/dist/browser/{adopt-global-settings-gawg1AYH.js → adopt-global-settings-B2I-44tK.js} +9 -9
  17. package/dist/browser/{boolean-editor-D1Nenbcb.js → boolean-editor-BL-iAvZv.js} +9 -9
  18. package/dist/browser/{bootIntercom-D8Ovpvsf.js → bootIntercom-DNhRU_h3.js} +2 -2
  19. package/dist/browser/{booth-by-xy-CDILVq68.js → booth-by-xy-BPzI_I_r.js} +6 -6
  20. package/dist/browser/bundle.json +65 -65
  21. package/dist/browser/{classnames-AfOVHR26.js → classnames-BwuQCVfY.js} +2 -2
  22. package/dist/browser/{client-ssZKxczh.js → client-CkkTg10f.js} +4 -4
  23. package/dist/browser/{components-Dm6-yZm9.js → components-xW0xn4HR.js} +47 -46
  24. package/dist/browser/{debug-overlay-DAGK3p4l.js → debug-overlay-BY_f3k5v.js} +10 -10
  25. package/dist/browser/{debug-ui-C8LFrZdI.js → debug-ui-COPw_jJ2.js} +6 -6
  26. package/dist/browser/{dist-CiboCeGu.js → dist-CZOs6dlD.js} +3 -3
  27. package/dist/browser/{dist-DJvRIVfK.js → dist-CmtO-q5U.js} +6 -6
  28. package/dist/browser/{dist-YLJ6P_kD.js → dist-D6TtmmNR.js} +5 -5
  29. package/dist/browser/{efp-debug-init-CMVs44Ef.js → efp-debug-init-DbuQ2yZ4.js} +3 -3
  30. package/dist/browser/{enum-editor-DjmY5QZ2.js → enum-editor-ChCH_AbI.js} +4 -4
  31. package/dist/browser/{es5-C-OnPKvg.js → es5-CHdGSiQh.js} +2 -2
  32. package/dist/browser/{event-not-found-AA1zgSI7.js → event-not-found-BehJpGAv.js} +1 -1
  33. package/dist/browser/{exports-DXos-KW5.js → exports-D6Lf24yv.js} +1 -1
  34. package/dist/browser/{favicon-D6BF75VK.js → favicon-C6VPDk5V.js} +1 -1
  35. package/dist/browser/{fetch-retry.umd-BXpR-AMS.js → fetch-retry.umd-CAHs6cmO.js} +2 -2
  36. package/dist/browser/{flex-CHBAsz6k.js → flex-Dd2gfX5v.js} +5 -5
  37. package/dist/browser/{floorplan.loader-CtjpCpCn.js → floorplan.loader-DNDB13gB.js} +10 -10
  38. package/dist/browser/{floorplan.ready-BKDEkDPs.js → floorplan.ready-DdXVp9Bo.js} +14 -14
  39. package/dist/browser/{fuse-joM66oL4.js → fuse-DjbxK1_r.js} +2 -2
  40. package/dist/browser/{i18n-B2PKgaRM.js → i18n-DNHCTIl_.js} +5 -5
  41. package/dist/browser/index.js +14 -14
  42. package/dist/browser/{index.module-DyN0SG5D.js → index.module-BgjhhzkD.js} +4 -4
  43. package/dist/browser/{integrateKiosk-D-dpWpO-.js → integrateKiosk-DJW2dIlz.js} +4 -4
  44. package/dist/browser/{is-webview-D2trLq6x.js → is-webview-ymBXdDWY.js} +1 -1
  45. package/dist/browser/{jsx-runtime-DCjpnPcf.js → jsx-runtime-9dbUZslp.js} +2 -2
  46. package/dist/browser/{kiosk-record-CWYTS2rI.js → kiosk-record-C-ZbQR1P.js} +1 -1
  47. package/dist/browser/{lib-C13YwwrK.js → lib-CivfxMxt.js} +3 -3
  48. package/dist/browser/{loadImage-C7nbLFSF.js → loadImage-DOmtMmNj.js} +4 -4
  49. package/dist/browser/{logDeviceInfo-Caz-vsUM.js → logDeviceInfo-ZMWKzrjm.js} +9 -9
  50. package/dist/browser/{main-DDHimzO8.js → main-BQPKEs3u.js} +1 -1
  51. package/dist/browser/{mobx-CSyFeOkR.js → mobx-CmQWlos3.js} +4 -4
  52. package/dist/browser/{optional-boolean-editor-BRyOWGK-.js → optional-boolean-editor-DxUi2Auz.js} +3 -3
  53. package/dist/browser/{optional-enum-editor-C3IeVDSt.js → optional-enum-editor-DH_Sbb5_.js} +4 -4
  54. package/dist/browser/{optional-string-editor-BvQqzBEY.js → optional-string-editor-DjvpIPIy.js} +4 -4
  55. package/dist/browser/{particles.min-C_QMjnLe.js → particles.min-BPPTx23M.js} +2 -2
  56. package/dist/browser/{react-Ax95PQb6.js → react-DC0_Dc5U.js} +2 -2
  57. package/dist/browser/{react-dom-CzzHhy_E.js → react-dom-BvbU6dCN.js} +3 -3
  58. package/dist/browser/{rolldown-runtime-DLlrs9dD.js → rolldown-runtime-DhRBYm2e.js} +1 -1
  59. package/dist/browser/{select-DWSfj7cW.js → select-D0UxO-rY.js} +10 -10
  60. package/dist/browser/{settings-prb_Xydk.js → settings-DLUbCP3F.js} +2 -2
  61. package/dist/browser/{settings-item-D2stfzwD.js → settings-item-YF8fKRZY.js} +6 -6
  62. package/dist/browser/{store-Cm_lCLUY.js → store-Bn4GUIsw.js} +175 -147
  63. package/dist/browser/{string-editor-D-vFKE-L.js → string-editor-BTNVGDDd.js} +4 -4
  64. package/dist/browser/{text-field-hXSRrbCO.js → text-field-Dtzv6Odi.js} +5 -5
  65. package/dist/browser/{theme-1MLT_N2G.js → theme-BRK-tpxv.js} +8 -8
  66. package/dist/browser/{ui-_mJ4KCW6.js → ui-qNmuus3-.js} +8 -8
  67. package/dist/browser/{useRenderTarget-mdzSfUSx.js → useRenderTarget-FWd5uFIq.js} +4 -4
  68. package/dist/esm/components/Bookmarks.d.ts +1 -1
  69. package/dist/esm/components/Kiosk/KioskStore.d.ts +1 -1
  70. package/dist/esm/components/Kiosk/KioskStore.js +1 -1
  71. package/dist/esm/components/Kiosk/kioskUrlParam.d.ts +1 -1
  72. package/dist/esm/components/Map/Map.js +1 -1
  73. package/dist/esm/components/Maplibre/utils/geo-config.js +1 -1
  74. package/dist/esm/components/OverlayContainer.js +1 -1
  75. package/dist/esm/components/TourPoints.d.ts +2 -1
  76. package/dist/esm/components/Visited.d.ts +2 -1
  77. package/dist/esm/floorplan.loader.d.ts +1 -1
  78. package/dist/esm/store/LayerStore.d.ts +7 -6
  79. package/dist/esm/store/LayerStore.js +1 -1
  80. package/dist/esm/store/RouteStore.d.ts +16 -16
  81. package/dist/esm/store/RouteStore.js +1 -1
  82. package/dist/esm/store/UIState.d.ts +21 -22
  83. package/dist/esm/store/UIState.js +1 -1
  84. package/dist/esm/types.d.ts +21 -4
  85. package/dist/esm/wayfinding/index.d.ts +1 -0
  86. package/package.json +9 -9
@@ -1,14 +1,14 @@
1
1
  (function() {
2
2
  try {
3
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.23.4" };
4
+ e.SENTRY_RELEASE = { id: "3.24.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "0a67f4c1-0ef6-428f-92c6-94c57178bf21", e._sentryDebugIdIdentifier = "sentry-dbid-0a67f4c1-0ef6-428f-92c6-94c57178bf21");
7
7
  } catch {}
8
8
  })();
9
- import { t as e } from "./jsx-runtime-DCjpnPcf.js";
10
- import { t } from "./settings-item-D2stfzwD.js";
11
- import { t as n } from "./text-field-hXSRrbCO.js";
9
+ import { t as e } from "./jsx-runtime-9dbUZslp.js";
10
+ import { t } from "./settings-item-YF8fKRZY.js";
11
+ import { t as n } from "./text-field-Dtzv6Odi.js";
12
12
  //#region ../debug/src/lib/ui/string-editor.tsx
13
13
  var r = e(), i = (e) => {
14
14
  var i;
@@ -1,15 +1,15 @@
1
1
  (function() {
2
2
  try {
3
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.23.4" };
4
+ e.SENTRY_RELEASE = { id: "3.24.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "9c5a0877-c176-4e2d-b51c-123d50ab2b3c", e._sentryDebugIdIdentifier = "sentry-dbid-9c5a0877-c176-4e2d-b51c-123d50ab2b3c");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-DLlrs9dD.js";
10
- import { t } from "./react-Ax95PQb6.js";
11
- import { D as n, i as r, l as i, n as a, s as o, u as s, y as c } from "./flex-CHBAsz6k.js";
12
- import { t as l } from "./classnames-AfOVHR26.js";
9
+ import { r as e } from "./rolldown-runtime-DhRBYm2e.js";
10
+ import { t } from "./react-DC0_Dc5U.js";
11
+ import { D as n, i as r, l as i, n as a, s as o, u as s, y as c } from "./flex-Dd2gfX5v.js";
12
+ import { t as l } from "./classnames-BwuQCVfY.js";
13
13
  //#region ../../node_modules/.pnpm/@radix-ui+themes@3.3.0_@types+react-dom@19.2.3_@types+react@19.2.17__@types+react@19.2._5ea800d4e947acedb1fa1275f1697b17/node_modules/@radix-ui/themes/dist/esm/components/text-field.props.js
14
14
  var u = /* @__PURE__ */ e(t()), d = /* @__PURE__ */ e(l()), f = {
15
15
  size: {
@@ -1,18 +1,18 @@
1
1
  (function() {
2
2
  try {
3
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.23.4" };
4
+ e.SENTRY_RELEASE = { id: "3.24.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "f658045a-5be7-4ea4-a4b2-ddea9ab9caf3", e._sentryDebugIdIdentifier = "sentry-dbid-f658045a-5be7-4ea4-a4b2-ddea9ab9caf3");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-DLlrs9dD.js";
10
- import { t } from "./react-Ax95PQb6.js";
11
- import { t as n } from "./jsx-runtime-DCjpnPcf.js";
12
- import { t as r } from "./react-dom-CzzHhy_E.js";
13
- import { C as i, E as a, O as o, T as s, _ as c, o as l, v as u, w as d } from "./flex-CHBAsz6k.js";
14
- import { c as f, i as p, n as m, o as h, r as g, s as _, t as v } from "./dist-DJvRIVfK.js";
15
- import { t as y } from "./classnames-AfOVHR26.js";
9
+ import { r as e } from "./rolldown-runtime-DhRBYm2e.js";
10
+ import { t } from "./react-DC0_Dc5U.js";
11
+ import { t as n } from "./jsx-runtime-9dbUZslp.js";
12
+ import { t as r } from "./react-dom-BvbU6dCN.js";
13
+ import { C as i, E as a, O as o, T as s, _ as c, o as l, v as u, w as d } from "./flex-Dd2gfX5v.js";
14
+ import { c as f, i as p, n as m, o as h, r as g, s as _, t as v } from "./dist-CmtO-q5U.js";
15
+ import { t as y } from "./classnames-BwuQCVfY.js";
16
16
  //#region ../../node_modules/.pnpm/@radix-ui+react-visually-hidden@1.2.3_@types+react-dom@19.2.3_@types+react@19.2.17__@ty_cffccd7838985066e8e1d993b5cb6017/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs
17
17
  var b = /* @__PURE__ */ e(r(), 1), x = /* @__PURE__ */ e(t(), 1), S = n(), C = Object.freeze({
18
18
  position: "absolute",
@@ -1,17 +1,17 @@
1
1
  (function() {
2
2
  try {
3
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.23.4" };
4
+ e.SENTRY_RELEASE = { id: "3.24.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "3c34ab8b-5d65-4c06-8595-6ed371acabc5", e._sentryDebugIdIdentifier = "sentry-dbid-3c34ab8b-5d65-4c06-8595-6ed371acabc5");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-DLlrs9dD.js";
10
- import { a as t, i as n, s as r } from "./efp-debug-init-CMVs44Ef.js";
11
- import { a as i, i as a } from "./adopt-global-settings-gawg1AYH.js";
12
- import { t as o } from "./jsx-runtime-DCjpnPcf.js";
13
- import "./settings-prb_Xydk.js";
14
- import { t as s } from "./add-debug-secret-listener-BqoA69bT.js";
9
+ import { r as e } from "./rolldown-runtime-DhRBYm2e.js";
10
+ import { a as t, i as n, s as r } from "./efp-debug-init-DbuQ2yZ4.js";
11
+ import { a as i, i as a } from "./adopt-global-settings-B2I-44tK.js";
12
+ import { t as o } from "./jsx-runtime-9dbUZslp.js";
13
+ import "./settings-DLUbCP3F.js";
14
+ import { t as s } from "./add-debug-secret-listener-Dumma9XW.js";
15
15
  //#region ../debug/src/lib/ui/render-debug-ui.tsx
16
16
  var c = /* @__PURE__ */ e(r(), 1), l = o(), u = !1;
17
17
  function d() {
@@ -26,7 +26,7 @@ function d() {
26
26
  }
27
27
  });
28
28
  let o = async (t) => {
29
- let { DebugUi: n } = await import("./debug-ui-C8LFrZdI.js"), { createRoot: i } = await import("./client-ssZKxczh.js").then((t) => /* @__PURE__ */ e(t.default, 1)), a = document.createElement("div");
29
+ let { DebugUi: n } = await import("./debug-ui-COPw_jJ2.js"), { createRoot: i } = await import("./client-CkkTg10f.js").then((t) => /* @__PURE__ */ e(t.default, 1)), a = document.createElement("div");
30
30
  document.body.appendChild(a), i(a).render(/* @__PURE__ */ (0, l.jsx)(n, {
31
31
  useDebugButtonState: r.useState,
32
32
  open: t
@@ -1,14 +1,14 @@
1
1
  (function() {
2
2
  try {
3
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.23.4" };
4
+ e.SENTRY_RELEASE = { id: "3.24.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "7407e64e-4c4e-4bfb-b2ef-80063ad22998", e._sentryDebugIdIdentifier = "sentry-dbid-7407e64e-4c4e-4bfb-b2ef-80063ad22998");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-DLlrs9dD.js";
10
- import { t } from "./react-Ax95PQb6.js";
11
- import { l as n } from "./store-Cm_lCLUY.js";
9
+ import { r as e } from "./rolldown-runtime-DhRBYm2e.js";
10
+ import { t } from "./react-DC0_Dc5U.js";
11
+ import { l as n } from "./store-Bn4GUIsw.js";
12
12
  //#region ../ui/src/shared/activeElement.ts
13
13
  var r = (e) => !!e && "activeElement" in e;
14
14
  function i(e) {
@@ -1,3 +1,3 @@
1
1
  export default _default;
2
- declare function _default(): false;
2
+ declare function _default(): false | import("react").JSX.Element;
3
3
  //# sourceMappingURL=Bookmarks.d.ts.map
@@ -2,7 +2,7 @@ import { type AlertProps } from '@expofp/ui';
2
2
  import { type Kiosk, type StatusMessage } from './SetKiosk';
3
3
  import { type SetKioskChangeEvent } from './SetKiosk/types';
4
4
  declare class KioskStore {
5
- get kiosk(): Kiosk;
5
+ get kiosk(): Kiosk | null;
6
6
  setKiosk(kiosk: Kiosk | null): void;
7
7
  get renderer(): import("@expofp/renderer").Renderer | null;
8
8
  private getCameraState;
@@ -1 +1 @@
1
- import{__decorate as r}from"tslib";import{action as o,computed as m,observable as d,toJS as c,when as k}from"mobx";import a from"../../store";import{areLayersEnabled as S}from"../../utils/areLayersEnabled";import{t as h}from"../../utils/i18n";import{isPointVisible as g}from"../Map/visibleArea";import{getPtScaleZoomRatio as f,toFiniteNumber as u}from"./kiosk-record";import{updateKiosk as C}from"./kioskApi";import{getSavedKiosk as y,removeKiosk as M,saveKiosk as K}from"./SetKiosk";const v=2e4;class s{constructor(){this.savedKiosk=null,this.statusMessages=[],this.statusMessageTimer=0,this.isResettingCamera=!1}get kiosk(){return a.uiState.kioskData}setKiosk(e){a.uiState.setKioskData(e)}get renderer(){return a.rendererService.renderer}getCameraState(){if(a.maplibreStore.showMaplibre){const t=a.maplibreStore.cameraPort?.getCameraState();return t?{mapCenterLng:t.lng,mapCenterLat:t.lat,mapZoom:t.zoom,mapBearingDegrees:t.bearing,mapPitchDegrees:t.pitch}:{}}const e=a.rendererService.getCameraState();return e?{mapInitialPtScale:this.initialPtScale,mapPtScale:e.ptScale,mapCenterX:e.center.x,mapCenterY:e.center.y,mapRollDegrees:e.roll,mapPitch:e.pitch}:{}}get hasUnsavedChanges(){const e=this.savedKiosk,t=c(this.kiosk);if(!t||!e)return!!t!=!!e;const n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!0;for(const l of n)if(!(l in t)||e[l]!==t[l])return!0;return!1}addStatusMessage(e){this.statusMessages=[{...e,id:Date.now()}],this.startCleanupMessages()}clearStatusMessages(){this.statusMessages=[]}startCleanupMessages(){clearTimeout(this.statusMessageTimer),this.statusMessageTimer=window.setTimeout(()=>this.clearStatusMessages(),1e3)}async resetCamera(){if(!this.isResettingCamera){this.isResettingCamera=!0;try{if(a.maplibreStore.showMaplibre&&await this.resetMaplibreCamera())return;await this.resetRendererCamera()}finally{this.isResettingCamera=!1}}}async resetMaplibreCamera(){const e=await this.waitForMaplibreCameraPort();if(!e)return!1;const t=this.kiosk;t?.z!=null&&a.fp.activateFloor({name:String(t.z)});const n=u(t?.mapCenterLng),i=u(t?.mapCenterLat),l=u(t?.mapZoom);return n===void 0||i===void 0||l===void 0?(e.resetPitch(),a.uiState.fitBounds(),!0):(e.applyCameraState({lng:n,lat:i,zoom:l,bearing:u(t?.mapBearingDegrees),pitch:u(t?.mapPitchDegrees)}),!0)}async waitForMaplibreCameraPort(){const{maplibreStore:e}=a;if(e.cameraPort)return e.cameraPort;try{await k(()=>!!e.cameraPort||!e.showMaplibre,{timeout:v})}catch{return null}return e.cameraPort}async resetRendererCamera(){const e=this.renderer;if(!e)return;const t=this.kiosk;await e.controls.resetCamera({pan:!0,zoom:!0,roll:!0,pitch:!0},!0),t?.z!=null&&a.fp.activateFloor({name:String(t.z)});const n=f(t);n!==void 0&&await e.controls.zoomBy(n,!0);const i=u(t?.mapCenterX),l=u(t?.mapCenterY);i!==void 0&&l!==void 0&&await e.controls.panTo(i,l,!0);const p=u(t?.mapRollDegrees);p!==void 0&&await e.controls.rollTo(p,!0)}restoreData(){const e=y();e&&(this.setKiosk(e),this.savedKiosk=e,a.uiState.kiosk=!0)}handleSetupReady(){this.restoreData(),a.uiState.kiosk=!0,a.uiState.hideFreeOrDemo=!0,a.uiState.setForceDim(!0),a.searchStore.setSearchText(""),a.searchStore.setFocused(!1),this.resetCamera()}handleClose(){this.setKiosk(null),a.uiState.setForceDim(!1),a.uiState.enableSetKioskMode(!1),a.searchStore.closeSearch()}handleDelete(){M(),this.setKiosk(null),a.uiState.resetMapSettings(),a.uiState.resetUIScale(),this.addStatusMessage({variant:"success",title:h("Deleted")})}handleSave(){const e=this.renderer;if(!e)return;const t=c(this.kiosk),n=this.getCameraState(),i={...t,...n};if(!g(e,i)){this.addStatusMessage({variant:"error",title:h("Kiosk not visible")});return}this.setKiosk(i),K(i),C(i,"https://app.expofp.com/"),a.uiState.setUIScale(i.uiScale,!0),this.addStatusMessage({variant:"success",title:h("Saved")}),this.savedKiosk=i}delayChange(e){requestAnimationFrame(()=>e?.())}handleChange(e){const t=c(this.kiosk);t&&(Number.isFinite(e.angle)&&this.setKiosk({...t,heading:e.angle}),Number.isFinite(e.scale)&&(this.setKiosk({...t,uiScale:e.scale}),this.delayChange(()=>a.uiState.setUIScale(e.scale,!1))),Number.isFinite(e.percent)&&this.setKiosk({...t,iconSizePercent:e.percent}))}setInitialPtScale(e){if(this.initialPtScale)return;this.initialPtScale=e;const t=c(this.kiosk);t&&this.setKiosk({...t,mapInitialPtScale:e})}handleClick(e){const t=c(this.kiosk),n=a.fp.getFloors(),i=S()?n.find(p=>p.active)?.name??null:null,l=a.uiState.uiScale;this.setKiosk({...t,x:e.x,y:e.y,z:i,uiScale:t?.uiScale||l,heading:t?.heading||0,iconSizePercent:t?.iconSizePercent||100,...this.getCameraState()})}handleNavigationChange(){const e=c(this.kiosk);e&&this.setKiosk({...e,...this.getCameraState()})}}r([m({keepAlive:!0})],s.prototype,"kiosk",null),r([o],s.prototype,"setKiosk",null),r([m({keepAlive:!0})],s.prototype,"renderer",null),r([d],s.prototype,"savedKiosk",void 0),r([m({keepAlive:!0})],s.prototype,"hasUnsavedChanges",null),r([d],s.prototype,"statusMessages",void 0),r([o],s.prototype,"addStatusMessage",null),r([o],s.prototype,"clearStatusMessages",null),r([o],s.prototype,"startCleanupMessages",null),r([o],s.prototype,"resetCamera",null),r([o],s.prototype,"restoreData",null),r([o],s.prototype,"handleSetupReady",null),r([o],s.prototype,"handleClose",null),r([o],s.prototype,"handleDelete",null),r([o],s.prototype,"handleSave",null),r([o],s.prototype,"handleChange",null),r([o],s.prototype,"setInitialPtScale",null),r([o],s.prototype,"handleClick",null),r([o],s.prototype,"handleNavigationChange",null);export default new s;
1
+ import{__decorate as r}from"tslib";import{action as o,computed as m,observable as d,toJS as c,when as k}from"mobx";import a from"../../store";import{areLayersEnabled as S}from"../../utils/areLayersEnabled";import{t as h}from"../../utils/i18n";import{isPointVisible as g}from"../Map/visibleArea";import{getPtScaleZoomRatio as f,toFiniteNumber as u}from"./kiosk-record";import{updateKiosk as C}from"./kioskApi";import{getSavedKiosk as y,removeKiosk as M,saveKiosk as K}from"./SetKiosk";const v=2e4;class s{constructor(){this.savedKiosk=null,this.statusMessages=[],this.statusMessageTimer=0,this.isResettingCamera=!1}get kiosk(){return a.uiState.kioskData}setKiosk(e){a.uiState.setKioskData(e)}get renderer(){return a.rendererService.renderer}getCameraState(){if(a.maplibreStore.showMaplibre){const t=a.maplibreStore.cameraPort?.getCameraState();return t?{mapCenterLng:t.lng,mapCenterLat:t.lat,mapZoom:t.zoom,mapBearingDegrees:t.bearing,mapPitchDegrees:t.pitch}:{}}const e=a.rendererService.getCameraState();return e?{mapInitialPtScale:this.initialPtScale,mapPtScale:e.ptScale,mapCenterX:e.center.x,mapCenterY:e.center.y,mapRollDegrees:e.roll,mapPitch:e.pitch}:{}}get hasUnsavedChanges(){const e=this.savedKiosk,t=c(this.kiosk);if(!t||!e)return!!t!=!!e;const n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!0;for(const l of n)if(!(l in t)||e[l]!==t[l])return!0;return!1}addStatusMessage(e){this.statusMessages=[{...e,id:Date.now()}],this.startCleanupMessages()}clearStatusMessages(){this.statusMessages=[]}startCleanupMessages(){clearTimeout(this.statusMessageTimer),this.statusMessageTimer=window.setTimeout(()=>this.clearStatusMessages(),1e3)}async resetCamera(){if(!this.isResettingCamera){this.isResettingCamera=!0;try{if(a.maplibreStore.showMaplibre&&await this.resetMaplibreCamera())return;await this.resetRendererCamera()}finally{this.isResettingCamera=!1}}}async resetMaplibreCamera(){const e=await this.waitForMaplibreCameraPort();if(!e)return!1;const t=this.kiosk;t?.z!=null&&a.fp.activateFloor({name:String(t.z)});const n=u(t?.mapCenterLng),i=u(t?.mapCenterLat),l=u(t?.mapZoom);return n===void 0||i===void 0||l===void 0?(e.resetPitch(),a.uiState.fitBounds(),!0):(e.applyCameraState({lng:n,lat:i,zoom:l,bearing:u(t?.mapBearingDegrees),pitch:u(t?.mapPitchDegrees)}),!0)}async waitForMaplibreCameraPort(){const{maplibreStore:e}=a;if(e.cameraPort)return e.cameraPort;try{await k(()=>!!e.cameraPort||!e.showMaplibre,{timeout:v})}catch{return null}return e.cameraPort}async resetRendererCamera(){const e=this.renderer;if(!e)return;const t=this.kiosk;await e.controls.resetCamera({pan:!0,zoom:!0,roll:!0,pitch:!0},!0),t?.z!=null&&a.fp.activateFloor({name:String(t.z)});const n=f(t);n!==void 0&&await e.controls.zoomBy(n,!0);const i=u(t?.mapCenterX),l=u(t?.mapCenterY);i!==void 0&&l!==void 0&&await e.controls.panTo(i,l,!0);const p=u(t?.mapRollDegrees);p!==void 0&&await e.controls.rollTo(p,!0)}restoreData(){const e=y();e&&(this.setKiosk(e),this.savedKiosk=e,a.uiState.kiosk=!0)}handleSetupReady(){this.restoreData(),a.uiState.kiosk=!0,a.uiState.hideFreeOrDemo=!0,a.uiState.setForceDim(!0),a.searchStore.setSearchText(""),a.searchStore.setFocused(!1),this.resetCamera()}handleClose(){this.setKiosk(null),a.uiState.setForceDim(!1),a.uiState.enableSetKioskMode(!1),a.searchStore.closeSearch()}handleDelete(){M(),this.setKiosk(null),a.uiState.resetMapSettings(),a.uiState.resetUIScale(),this.addStatusMessage({variant:"success",title:h("Deleted")})}handleSave(){const e=this.renderer;if(!e)return;const t=c(this.kiosk);if(!t)return;const n=this.getCameraState(),i={...t,...n};if(!g(e,i)){this.addStatusMessage({variant:"error",title:h("Kiosk not visible")});return}this.setKiosk(i),K(i),C(i,"https://app.expofp.com/"),a.uiState.setUIScale(i.uiScale,!0),this.addStatusMessage({variant:"success",title:h("Saved")}),this.savedKiosk=i}delayChange(e){requestAnimationFrame(()=>e?.())}handleChange(e){const t=c(this.kiosk);t&&(Number.isFinite(e.angle)&&this.setKiosk({...t,heading:e.angle}),Number.isFinite(e.scale)&&(this.setKiosk({...t,uiScale:e.scale}),this.delayChange(()=>a.uiState.setUIScale(e.scale,!1))),Number.isFinite(e.percent)&&this.setKiosk({...t,iconSizePercent:e.percent}))}setInitialPtScale(e){if(this.initialPtScale)return;this.initialPtScale=e;const t=c(this.kiosk);t&&this.setKiosk({...t,mapInitialPtScale:e})}handleClick(e){const t=c(this.kiosk),n=a.fp.getFloors(),i=S()?n.find(p=>p.active)?.name??null:null,l=a.uiState.uiScale;this.setKiosk({...t,x:e.x,y:e.y,z:i,uiScale:t?.uiScale||l,heading:t?.heading||0,iconSizePercent:t?.iconSizePercent||100,...this.getCameraState()})}handleNavigationChange(){const e=c(this.kiosk);e&&this.setKiosk({...e,...this.getCameraState()})}}r([m({keepAlive:!0})],s.prototype,"kiosk",null),r([o],s.prototype,"setKiosk",null),r([m({keepAlive:!0})],s.prototype,"renderer",null),r([d],s.prototype,"savedKiosk",void 0),r([m({keepAlive:!0})],s.prototype,"hasUnsavedChanges",null),r([d],s.prototype,"statusMessages",void 0),r([o],s.prototype,"addStatusMessage",null),r([o],s.prototype,"clearStatusMessages",null),r([o],s.prototype,"startCleanupMessages",null),r([o],s.prototype,"resetCamera",null),r([o],s.prototype,"restoreData",null),r([o],s.prototype,"handleSetupReady",null),r([o],s.prototype,"handleClose",null),r([o],s.prototype,"handleDelete",null),r([o],s.prototype,"handleSave",null),r([o],s.prototype,"handleChange",null),r([o],s.prototype,"setInitialPtScale",null),r([o],s.prototype,"handleClick",null),r([o],s.prototype,"handleNavigationChange",null);export default new s;
@@ -3,6 +3,6 @@ import { type Kiosk } from './SetKiosk';
3
3
  declare const ANCHOR_KEYS: readonly ['x', 'y', 'z'];
4
4
  type KioskAnchor = Partial<Pick<Kiosk, (typeof ANCHOR_KEYS)[number]>>;
5
5
  export declare function collectKioskUrlParams(searchParams: URLSearchParams): KioskAnchor;
6
- export declare function setKioskUrlParams(searchParams: URLSearchParams, kioskData: KioskAnchor): void;
6
+ export declare function setKioskUrlParams(searchParams: URLSearchParams, kioskData: KioskAnchor | null | undefined): void;
7
7
  export {};
8
8
  //# sourceMappingURL=kioskUrlParam.d.ts.map
@@ -1 +1 @@
1
- import{Fragment as ne,jsx as k,jsxs as U}from"react/jsx-runtime";import{Box as L}from"@expofp/geometry";import{Draggable as ie}from"@expofp/ui";import ae from"classnames";import se from"color";import{observable as le,reaction as me}from"mobx";import{useObserver as ce}from"mobx-react-lite";import{useEffect as fe,useMemo as de,useRef as x,useState as ue}from"react";import{DEBUG_STORAGE_KEY as Z}from"../../constants";import pe from"../../data";import{fpGeo as he}from"../../data/fpGeo";import{svgArea as j}from"../../data/svg";import{boxToRenderer as B,createSceneDef as ve,mapRollSetting as A}from"../../renderer";import{pickDefaultScene as $,pickDefaultScenePoint as ye}from"../../renderer/engine-core/defs";import i,{boothStore as ge,layersStore as v,uiState as o}from"../../store";import{BoothBase as K}from"../../store/BoothStore";import{Category as be}from"../../store/CategoryStore";import{Exhibitor as V}from"../../store/ExhibitorStore";import{LayerMode as R}from"../../store/LayerStore";import{Route as Se}from"../../store/RouteStore";import E from"../../tools/logger";import h from"../../tools/settings";import{areLayersEnabled as we}from"../../utils/areLayersEnabled";import{parseNumberPair as W}from"../../utils/camera-map-settings";import{applyVenueDimValue as xe,createDimmingAnimator as Re}from"../../utils/dimming";import{convertGpsToLocal as Te}from"../../utils/gps";import y from"../../utils/is-debug";import{isPathwayLayer as H}from"../../utils/is-pathway-layer";import{useReaction as u}from"../../utils/mobx";import{createWayfinding as Ce}from"../../wayfinding";import q from"./booth-by-xy";import ke from"./drawing/config/config-all";import{configMarkers as Le,getMarkerFromClick as Be}from"./drawing/config/config-markers";import{loadLayersImages as Ee}from"./drawing/config/loadBoothsImages";import{useBuildRoute as Me}from"./traffic/useBuildRoute";import{useManageTraffic as Pe}from"./traffic/useManageTraffic";const M=Number.isFinite(h.maxZoom)?h.maxZoom:void 0,ze=M!==void 0;export default function Ie(){let P={};const J="#ebebeb",g=x(null),b=de(()=>le({moving:!1,prevLevel:i.layerStore.layers.find(e=>!e.frozen&&e.visible)}),[]),a=i.rendererService,T=x(Re(e=>xe(a,e)));let l;const S=x(null),z=x(null);let I=null,_=null,D=null,F=!1;function G(){v.layers.forEach(e=>{e.configured=!1,e.children=[],e.loaded=!1})}const[Q,Y]=ue(()=>typeof window<"u"&&window.localStorage?localStorage.getItem(Z)!=="false":!0);u(()=>i.routeStore.currentRouteLayer,()=>{if(!a.scene||b.prevLevel===i.routeStore.currentRouteLayer)return;const e=a.scene.rootLayer.children.filter(r=>i.layerStore.floors.some(t=>r.name.includes(t.name))),n=i.routeStore.currentRouteLayer.name;if(!e.find(r=>r.name===n))return;const s=e?.map(r=>(r.name===n&&(r.hidden=!1),r.name===b.prevLevel?.name&&(r.hidden=!0),r));b.prevLevel=i.routeStore.currentRouteLayer,a.update(...s)}),u(()=>o.centerMap,()=>{!o.centerMap||i.maplibreStore.showMaplibre||(l.controls.resetCamera({zoom:!!(o.list.type==="search"&&o.list.text)}),o.centerMap=!1)}),fe(()=>{if(!g.current)return;async function e(){const n=g.current;if(!n)return;G(),v.layersLoaded=!1;let s={};try{if(y){const t=document.createElement("canvas").getContext("webgl2"),m=t&&t.getExtension("EXT_disjoint_timer_query_webgl2"),f=(await import("stats-gl")).default,c=new f({trackGPU:m,horizontal:!0}),p=z.current;if(!p)throw new Error("memoryInfoPanel not found.");c.dom.style.position="relative",p.style.width=`${90*(m?3:2)}px`,p.style.height="48px",p.appendChild(c.dom),s={stats:c,memoryInfoPanel:p}}}catch(r){console.error(r)}l=a.create({canvas:n,ui:s}),S.current=l,me(()=>o.canvasVisibleRectPx,(r,t)=>{r&&(l.visibleRect=B(r)),t.dispose()},{fireImmediately:!0}),ke(a).then(({layers:r,cleanup:t})=>{if(F||S.current!==l){t();return}D=t,y&&console.log("Renderer settings",l);const m=se(h.backgroundColor==="none"?J:h.backgroundColor).string();P=ve(r,j,m),a.start(P),T.current.setTarget(o.dimmed,{immediate:!0}),A(l,i.fp.enableRotation?1:0),M!==void 0&&l.viewport.setMaxZoom(M),v.layersLoaded=!0,i.fp.onFpConfigured&&i.fp?.onFpConfigured(),I=Ce(a,i),_=Le(a),Ee(a)}),l.events.addEventListener("pointer:move",({data:r})=>{if(o.setKioskModeEnabled)return;const{point:t,defs:m}=$(r),d=q(t.x,t.y),f=N(m[0]);o.hoveredBooth=d||f}),l.events.addEventListener("pointer:out",()=>{o.setKioskModeEnabled||(o.hoveredBooth=null)}),l.events.addEventListener("pointer:click",({data:r})=>{if(!o?.rootElement)return;window.__resett&&window.__resett(),o.overlayPosition==="bottom"&&o.overlaySize==="full"&&i.showMap();const{point:t,defs:m}=$(r),{x:d,y:f}=t;if(o.onGetCoordsClick){const w=i.layerStore.layers.find(C=>C.visible&&(C.mode===R.TurnedOn||C.mode===R.TurnedOff));o.onGetCoordsClick({x:d,y:f,z:w?.name||null})}if(o.setKioskModeEnabled)return;if(o.onMarkerClick){const w=Be(d,f,a.scale);y&&console.log("marker",w),o.onMarkerClick(w)}const c=q(t.x,t.y),p=N(m[0]);y&&console.log("boothIdFromClientXy",c,"boothByShape",p,"pointer:click point",t),i.clickBooth(c||p)}),l.events.addEventListener("navigation:change",()=>window.__resett&&window.__resett())}return e(),i.fp.getCenterCoordinates=oe,()=>ee()},[]);function ee(){F=!0,T.current.stop(),I?.(),_?.(),D?.(),G(),v.layersLoaded=!1,a.disposeIfCurrent(S.current),S.current=null}function oe(){const e=g.current;if(!e)throw new Error("Canvas not ready");const n=ye(l.viewport.canvasToSvg({x:e.clientWidth/2,y:e.clientHeight/2})),r=i.layerStore.visible.find(t=>t.mode===R.TurnedOff||t.mode===R.TurnedOn)?.name||null;return{...n,z:r}}function N(e){return!e||!e.shape?null:ge.booths.find(n=>n.shapes?.find(s=>s.shape==e.shape))??null}u(()=>o.zoomBy,()=>{if(!o.zoomBy||i.maplibreStore.showMaplibre)return;const e=o.zoomBy;l.controls.zoomBy(e),o.zoomBy=null}),u(()=>o.dimmed,e=>{T.current.setTarget(e)}),u(()=>o.details,()=>{if(!o.onDetails)return;if(!o.details){o.onDetails(null);return}let e=o.details;if(h.EXPO==="wineparis"&&(e instanceof V&&(e=e.booths[0]),!e))return;let n=null,s=[];e instanceof V?(n="exhibitor",s=e.booths.map(t=>t.name).sort((t,m)=>t==i.routeStore.tempToBooth?.name?-1:m==i.routeStore.tempToBooth?.name?1:0)):e instanceof K?(n="booth",s=[e.name]):e instanceof Se?(n="route",s=[e.from?.name,e.to?.name].filter(t=>!!t)):e instanceof be&&(n="category",s=e.exhibitors.map(t=>t.booths.map(m=>m.name)).flat());const r={type:n,name:e?.name,id:e?.id,externalId:e?.externalId,boothsNames:s};o.onDetails({...r,...n==="route"?{routeInfo:i.routeStore.routeInfo??void 0}:{}})}),u(()=>o.canvasVisibleRectPx,e=>{a.renderer&&(a.renderer.visibleRect=B(e))},{fireImmediately:!0}),u(()=>o.moveToRect,()=>{!o.moveToRect||i.maplibreStore.showMaplibre||(o.moveToRect&&o.moveToRect.size.height!==1/0&&o.moveToRect.size.width!==1/0&&o.moveToRect.size.height>0&&o.moveToRect.size.width>0&&X(o.moveToRect,o.moveToRectPaddingPercent),o.moveToRect=null,o.moveToRectPaddingPercent=null)}),u(()=>o.rollReset,e=>{e&&(l.controls.resetCamera({roll:!0}),o.rollReset=!1)}),u(()=>o.moveToBooths,()=>{if(E.log("this.moveToBooths",o.moveToBooths),!o.moveToBooths||i.maplibreStore.showMaplibre)return;E.log("watched moveToBooths",o.moveToBooths);const e=o.moveToBooths.filter(n=>n.rect).map(n=>n.rect);e.length!==0&&(X(L.fromUnion(...e)),o.moveToBooths=null)}),u(()=>o.mapSettings,({zoomtime:e,center:n,centerxy:s,bearing:r,roll:t,z:m})=>{if(!(i.maplibreStore.showMaplibre||!a.renderer))try{e&&e!==o.defaultMapSettings.zoomtime&&a.renderer.controls.configure({zoomTime:e/1e3}),i.fp.enableRotation&&A(l,t??0);let d;if(n){const f=W(n),c=he?.properties.config;if(!c)throw new Error("Map center given in GPS, but the plan has no GPS config");f&&(d=Te({lat:f[0],lng:f[1]},c)??void 0)}else if(s){const f=W(s);f&&(d={x:f[0],y:f[1]})}m&&i.fp.activateFloor({name:m}),d&&a.renderer.controls.panTo(d.x,d.y),typeof r=="number"&&Number.isFinite(r)&&a.renderer.controls.rollTo(r)}catch(d){E.error("Error in mapSettings reaction",d)}}),Me({enabled:v.layersLoaded&&o.buildRoute,rendererService:a});const O="routes-api.expofp.com",te=pe.busRoutes??!1;Pe({permission:v.layersLoaded&&te,rendererService:a,dataJsonUrl:`https://${O}/v1/routes?expo=${h.EXPO}`,websocketUrl:`wss://${O}/locations?expo=${h.EXPO}`}),u(()=>i.layerStore.visible,e=>{if(!a.scene)return;const n=e.filter(t=>H(t.name)),r=a.scene.rootLayer.children.filter(t=>H(t.name));r.forEach(t=>{t.hidden=!n.find(m=>m.name===t.name)}),a.update(...r)});function X(e,n){let s=e;const r=n??re(e,j),t=o.selectedRoute?.from,m=t instanceof K?t.layer?.name:t?.layer;o.kioskData&&(!we()||m===i.routeStore.currentRouteLayer?.name)&&(s=L.fromUnion(e,new L(o.kioskData.x,o.kioskData.y,1,1)));const d=B(s),f={paddingPercent:r,maxZoom:ze?void 0:10},c=l.visibleRect;if(o.shouldShiftMapRect&&c){c.min={...c.min,x:c.min.x+o.overlayWidthPx},l.visibleRect=c;try{l.controls.zoomTo(d,f)}finally{c.min={...c.min,x:c.min.x-o.overlayWidthPx}}}else l.controls.zoomTo(d,f)}function re(e,n){return!e||!n?0:(e.area/n.area>.1?15:25)/100}return ce(()=>U(ne,{children:[k("canvas",{style:{width:"100%",height:"100%"},ref:g,className:ae({map:!0,moving:b.moving,hidden:i.maplibreStore.showMaplibre}),children:"ExpoFP.com"}),y&&Q&&U(ie,{className:"debug-fps",children:[k("div",{ref:z}),k("button",{onClick:()=>{typeof window<"u"&&window.localStorage&&localStorage.setItem(Z,"false"),Y(!1)},style:{padding:"4px 8px",fontSize:"11px",cursor:"pointer",backgroundColor:"#333",color:"#fff",border:"1px solid #555",width:"100%"},children:"Hide debug"})]})]}))}
1
+ import{Fragment as ne,jsx as k,jsxs as U}from"react/jsx-runtime";import{Box as L}from"@expofp/geometry";import{Draggable as ie}from"@expofp/ui";import ae from"classnames";import se from"color";import{observable as le,reaction as me}from"mobx";import{useObserver as ce}from"mobx-react-lite";import{useEffect as fe,useMemo as de,useRef as x,useState as ue}from"react";import{DEBUG_STORAGE_KEY as Z}from"../../constants";import pe from"../../data";import{fpGeo as he}from"../../data/fpGeo";import{svgArea as j}from"../../data/svg";import{boxToRenderer as B,createSceneDef as ve,mapRollSetting as A}from"../../renderer";import{pickDefaultScene as $,pickDefaultScenePoint as ye}from"../../renderer/engine-core/defs";import n,{boothStore as ge,layersStore as v,uiState as o}from"../../store";import{BoothBase as K}from"../../store/BoothStore";import{Category as be}from"../../store/CategoryStore";import{Exhibitor as V}from"../../store/ExhibitorStore";import{LayerMode as R}from"../../store/LayerStore";import{Route as we}from"../../store/RouteStore";import E from"../../tools/logger";import h from"../../tools/settings";import{areLayersEnabled as Se}from"../../utils/areLayersEnabled";import{parseNumberPair as W}from"../../utils/camera-map-settings";import{applyVenueDimValue as xe,createDimmingAnimator as Re}from"../../utils/dimming";import{convertGpsToLocal as Te}from"../../utils/gps";import y from"../../utils/is-debug";import{isPathwayLayer as H}from"../../utils/is-pathway-layer";import{useReaction as u}from"../../utils/mobx";import{createWayfinding as Ce}from"../../wayfinding";import q from"./booth-by-xy";import ke from"./drawing/config/config-all";import{configMarkers as Le,getMarkerFromClick as Be}from"./drawing/config/config-markers";import{loadLayersImages as Ee}from"./drawing/config/loadBoothsImages";import{useBuildRoute as Me}from"./traffic/useBuildRoute";import{useManageTraffic as Pe}from"./traffic/useManageTraffic";const M=Number.isFinite(h.maxZoom)?h.maxZoom:void 0,ze=M!==void 0;export default function Ie(){let P={};const J="#ebebeb",g=x(null),b=de(()=>le({moving:!1,prevLevel:n.layerStore.layers.find(e=>!e.frozen&&e.visible)}),[]),a=n.rendererService,T=x(Re(e=>xe(a,e)));let m;const w=x(null),z=x(null);let I=null,_=null,D=null,F=!1;function G(){v.layers.forEach(e=>{e.configured=!1,e.children=[],e.loaded=!1})}const[Q,Y]=ue(()=>typeof window<"u"&&window.localStorage?localStorage.getItem(Z)!=="false":!0);u(()=>n.routeStore.currentRouteLayer,()=>{const e=n.routeStore.currentRouteLayer;if(!a.scene||!e||b.prevLevel===e)return;const r=a.scene.rootLayer.children.filter(t=>n.layerStore.floors.some(l=>t.name.includes(l.name))),s=e.name;if(!r.find(t=>t.name===s))return;const i=r?.map(t=>(t.name===s&&(t.hidden=!1),t.name===b.prevLevel?.name&&(t.hidden=!0),t));b.prevLevel=e,a.update(...i)}),u(()=>o.centerMap,()=>{!o.centerMap||n.maplibreStore.showMaplibre||(m.controls.resetCamera({zoom:!!(o.list.type==="search"&&o.list.text)}),o.centerMap=!1)}),fe(()=>{if(!g.current)return;async function e(){const r=g.current;if(!r)return;G(),v.layersLoaded=!1;let s={};try{if(y){const t=document.createElement("canvas").getContext("webgl2"),l=t&&t.getExtension("EXT_disjoint_timer_query_webgl2"),f=(await import("stats-gl")).default,c=new f({trackGPU:l,horizontal:!0}),p=z.current;if(!p)throw new Error("memoryInfoPanel not found.");c.dom.style.position="relative",p.style.width=`${90*(l?3:2)}px`,p.style.height="48px",p.appendChild(c.dom),s={stats:c,memoryInfoPanel:p}}}catch(i){console.error(i)}m=a.create({canvas:r,ui:s}),w.current=m,me(()=>o.canvasVisibleRectPx,(i,t)=>{i&&(m.visibleRect=B(i)),t.dispose()},{fireImmediately:!0}),ke(a).then(({layers:i,cleanup:t})=>{if(F||w.current!==m){t();return}D=t,y&&console.log("Renderer settings",m);const l=se(h.backgroundColor==="none"?J:h.backgroundColor).string();P=ve(i,j,l),a.start(P),T.current.setTarget(o.dimmed,{immediate:!0}),A(m,n.fp.enableRotation?1:0),M!==void 0&&m.viewport.setMaxZoom(M),v.layersLoaded=!0,n.fp.onFpConfigured&&n.fp?.onFpConfigured(),I=Ce(a,n),_=Le(a),Ee(a)}),m.events.addEventListener("pointer:move",({data:i})=>{if(o.setKioskModeEnabled)return;const{point:t,defs:l}=$(i),d=q(t.x,t.y),f=N(l[0]);o.hoveredBooth=d||f}),m.events.addEventListener("pointer:out",()=>{o.setKioskModeEnabled||(o.hoveredBooth=null)}),m.events.addEventListener("pointer:click",({data:i})=>{if(!o?.rootElement)return;window.__resett&&window.__resett(),o.overlayPosition==="bottom"&&o.overlaySize==="full"&&n.showMap();const{point:t,defs:l}=$(i),{x:d,y:f}=t;if(o.onGetCoordsClick){const S=n.layerStore.layers.find(C=>C.visible&&(C.mode===R.TurnedOn||C.mode===R.TurnedOff));o.onGetCoordsClick({x:d,y:f,z:S?.name||null})}if(o.setKioskModeEnabled)return;if(o.onMarkerClick){const S=Be(d,f,a.scale);y&&console.log("marker",S),o.onMarkerClick(S)}const c=q(t.x,t.y),p=N(l[0]);y&&console.log("boothIdFromClientXy",c,"boothByShape",p,"pointer:click point",t),n.clickBooth(c||p)}),m.events.addEventListener("navigation:change",()=>window.__resett&&window.__resett())}return e(),n.fp.getCenterCoordinates=oe,()=>ee()},[]);function ee(){F=!0,T.current.stop(),I?.(),_?.(),D?.(),G(),v.layersLoaded=!1,a.disposeIfCurrent(w.current),w.current=null}function oe(){const e=g.current;if(!e)throw new Error("Canvas not ready");const r=ye(m.viewport.canvasToSvg({x:e.clientWidth/2,y:e.clientHeight/2})),i=n.layerStore.visible.find(t=>t.mode===R.TurnedOff||t.mode===R.TurnedOn)?.name||null;return{...r,z:i}}function N(e){return!e||!e.shape?null:ge.booths.find(r=>r.shapes?.find(s=>s.shape==e.shape))??null}u(()=>o.zoomBy,()=>{if(!o.zoomBy||n.maplibreStore.showMaplibre)return;const e=o.zoomBy;m.controls.zoomBy(e),o.zoomBy=null}),u(()=>o.dimmed,e=>{T.current.setTarget(e)}),u(()=>o.details,()=>{if(!o.onDetails)return;if(!o.details){o.onDetails(null);return}let e=o.details;if(h.EXPO==="wineparis"&&(e instanceof V&&(e=e.booths[0]),!e))return;let r=null,s=[];e instanceof V?(r="exhibitor",s=e.booths.map(t=>t.name).sort((t,l)=>t==n.routeStore.tempToBooth?.name?-1:l==n.routeStore.tempToBooth?.name?1:0)):e instanceof K?(r="booth",s=[e.name]):e instanceof we?(r="route",s=[e.from?.name,e.to?.name].filter(t=>!!t)):e instanceof be&&(r="category",s=e.exhibitors.map(t=>t.booths.map(l=>l.name)).flat());const i={type:r,name:e?.name,id:e?.id,externalId:e?.externalId,boothsNames:s};o.onDetails({...i,...r==="route"?{routeInfo:n.routeStore.routeInfo??void 0}:{}})}),u(()=>o.canvasVisibleRectPx,e=>{a.renderer&&(a.renderer.visibleRect=B(e))},{fireImmediately:!0}),u(()=>o.moveToRect,()=>{!o.moveToRect||n.maplibreStore.showMaplibre||(o.moveToRect&&o.moveToRect.size.height!==1/0&&o.moveToRect.size.width!==1/0&&o.moveToRect.size.height>0&&o.moveToRect.size.width>0&&X(o.moveToRect,o.moveToRectPaddingPercent),o.moveToRect=null,o.moveToRectPaddingPercent=null)}),u(()=>o.rollReset,e=>{e&&(m.controls.resetCamera({roll:!0}),o.rollReset=!1)}),u(()=>o.moveToBooths,()=>{if(E.log("this.moveToBooths",o.moveToBooths),!o.moveToBooths||n.maplibreStore.showMaplibre)return;E.log("watched moveToBooths",o.moveToBooths);const e=o.moveToBooths.filter(r=>r.rect).map(r=>r.rect);e.length!==0&&(X(L.fromUnion(...e)),o.moveToBooths=null)}),u(()=>o.mapSettings,({zoomtime:e,center:r,centerxy:s,bearing:i,roll:t,z:l})=>{if(!(n.maplibreStore.showMaplibre||!a.renderer))try{e&&e!==o.defaultMapSettings.zoomtime&&a.renderer.controls.configure({zoomTime:e/1e3}),n.fp.enableRotation&&A(m,t??0);let d;if(r){const f=W(r),c=he?.properties.config;if(!c)throw new Error("Map center given in GPS, but the plan has no GPS config");f&&(d=Te({lat:f[0],lng:f[1]},c)??void 0)}else if(s){const f=W(s);f&&(d={x:f[0],y:f[1]})}l&&n.fp.activateFloor({name:l}),d&&a.renderer.controls.panTo(d.x,d.y),typeof i=="number"&&Number.isFinite(i)&&a.renderer.controls.rollTo(i)}catch(d){E.error("Error in mapSettings reaction",d)}}),Me({enabled:v.layersLoaded&&o.buildRoute,rendererService:a});const O="routes-api.expofp.com",te=pe.busRoutes??!1;Pe({permission:v.layersLoaded&&te,rendererService:a,dataJsonUrl:`https://${O}/v1/routes?expo=${h.EXPO}`,websocketUrl:`wss://${O}/locations?expo=${h.EXPO}`}),u(()=>n.layerStore.visible,e=>{if(!a.scene)return;const r=e.filter(t=>H(t.name)),i=a.scene.rootLayer.children.filter(t=>H(t.name));i.forEach(t=>{t.hidden=!r.find(l=>l.name===t.name)}),a.update(...i)});function X(e,r){let s=e;const i=r??re(e,j),t=o.selectedRoute?.from,l=t instanceof K?t.layer?.name:t?.layer;o.kioskData&&(!Se()||l===n.routeStore.currentRouteLayer?.name)&&(s=L.fromUnion(e,new L(o.kioskData.x,o.kioskData.y,1,1)));const d=B(s),f={paddingPercent:i,maxZoom:ze?void 0:10},c=m.visibleRect;if(o.shouldShiftMapRect&&c){c.min={...c.min,x:c.min.x+o.overlayWidthPx},m.visibleRect=c;try{m.controls.zoomTo(d,f)}finally{c.min={...c.min,x:c.min.x-o.overlayWidthPx}}}else m.controls.zoomTo(d,f)}function re(e,r){return!e||!r?0:(e.area/r.area>.1?15:25)/100}return ce(()=>U(ne,{children:[k("canvas",{style:{width:"100%",height:"100%"},ref:g,className:ae({map:!0,moving:b.moving,hidden:n.maplibreStore.showMaplibre}),children:"ExpoFP.com"}),y&&Q&&U(ie,{className:"debug-fps",children:[k("div",{ref:z}),k("button",{onClick:()=>{typeof window<"u"&&window.localStorage&&localStorage.setItem(Z,"false"),Y(!1)},style:{padding:"4px 8px",fontSize:"11px",cursor:"pointer",backgroundColor:"#333",color:"#fff",border:"1px solid #555",width:"100%"},children:"Hide debug"})]})]}))}
@@ -1 +1 @@
1
- import{LngLatBounds as D,MercatorCoordinate as E}from"maplibre-gl";import{fpGeo as I}from"../../../data/fpGeo";import{svgArea as x}from"../../../data/svg";import{uiState as z}from"../../../store";import{convertLocalToGps as u}from"../../../utils/gps";import{planBearing as N}from"../../../utils/planBearing";export const MAP_BOUNDS_PADDING_FACTOR=3,MAP_BOUNDS_MIN_PADDING_DEGREES=.02,INITIAL_FIT_ZOOM_ADJUSTMENT=.15;const T=1.42,F=.35,S=.9,A=.85,P=8,B=.05;export function deriveVenueMapBounds(t){const n=[[x.min.x,x.min.y],[x.max.x,x.min.y],[x.max.x,x.max.y],[x.min.x,x.max.y]].map(([c,l])=>u(c,l,t));if(!n.every(([c,l])=>Number.isFinite(c)&&Number.isFinite(l)))return;const e=n.map(([c])=>c),o=n.map(([,c])=>c),i=Math.min(...e),r=Math.max(...e),s=Math.min(...o),a=Math.max(...o),m=Math.max((r-i)*MAP_BOUNDS_PADDING_FACTOR,MAP_BOUNDS_MIN_PADDING_DEGREES),h=Math.max((a-s)*MAP_BOUNDS_PADDING_FACTOR,MAP_BOUNDS_MIN_PADDING_DEGREES);return[[i-m,s-h],[r+m,a+h]]}function O(t,n,e,o){const i=Math.min(t.getZoom(),n),r=(e-i)*Math.min(1,o/T);return i+r>=t.getMinZoom()-B}function w(t,n,e){if(O(t,n,e,T))return T;if(!O(t,n,e,F))return null;let o=F,i=T;for(let r=0;r<P;r++){const s=(o+i)/2;O(t,n,e,s)?o=s:i=s}return o}export function getLocalRectGeoBounds(t,n){const e=[u(t.min.x,t.min.y,n),u(t.max.x,t.min.y,n),u(t.max.x,t.max.y,n),u(t.min.x,t.max.y,n)],o=e.map(([r])=>r),i=e.map(([,r])=>r);return[[Math.min(...o),Math.min(...i)],[Math.max(...o),Math.max(...i)]]}const R=512;export function cameraForLocalRect(t,n,e,o,i){const r=[u(t.min.x,t.min.y,n),u(t.max.x,t.min.y,n),u(t.max.x,t.max.y,n),u(t.min.x,t.max.y,n)].map(([M,p])=>E.fromLngLat({lng:M,lat:p}));if(!r.every(({x:M,y:p})=>Number.isFinite(M)&&Number.isFinite(p)))return null;const s=-e*Math.PI/180,a=Math.cos(s),m=Math.sin(s),h=r.map(({x:M,y:p})=>M*a-p*m),c=r.map(({x:M,y:p})=>M*m+p*a),l=Math.max(...h)-Math.min(...h),y=Math.max(...c)-Math.min(...c);if(l<=0||y<=0)return null;const b=o.width-i.left-i.right,f=o.height-i.top-i.bottom;if(b<=0||f<=0)return null;const d=Math.min(b/(l*R),f/(y*R));if(!(d>0))return null;const g=R*d,L=(Math.min(...h)+Math.max(...h))/2-(i.left-i.right)/2/g,_=(Math.min(...c)+Math.max(...c))/2-(i.top-i.bottom)/2/g,{lng:v,lat:C}=new E(L*a+_*m,-L*m+_*a).toLngLat();return{center:[v,C],zoom:Math.log2(d)}}function U(t,n){return{top:t.top+n.top,bottom:t.bottom+n.bottom,left:t.left+n.left,right:t.right+n.right}}export function getVisibleRectFitPadding(t=0){const n=z.canvasVisibleRectPx,e=z.screenSize;return!n||!e?{top:t,bottom:t,left:t,right:t}:{top:Math.max(0,n.min.y)+t,bottom:Math.max(0,e.height-n.max.y)+t,left:Math.max(0,n.min.x)+t,right:Math.max(0,e.width-n.max.x)+t}}export function isLngLatInVisibleViewport(t,n,e){const o=t.project(n),i=t.getCanvas();return o.x>=e.left&&o.x<=i.clientWidth-e.right&&o.y>=e.top&&o.y<=i.clientHeight-e.bottom}export function deriveGeoConfig(){if(!I?.properties?.config)return null;const t=I.properties.config,n=(t.p0.lng+t.p2.lng)/2,e=(t.p0.lat+t.p2.lat)/2,o=N(t.p0,t.p2),i=Number.isFinite(o)?o:t.bearing??0;return{center:[n,e],bearing:i,zoom:16,gpsConfig:t}}export function fitMapToLocalRect(t,n,e,o={}){if(!t||!n||!e||n.size.height===1/0||n.size.width===1/0||n.size.height<=0||n.size.width<=0)return;const i=getLocalRectGeoBounds(n,e.gpsConfig),r=t.getCanvas(),s=o.paddingPercent==null?getVisibleRectFitPadding(o.padding??50):U(getVisibleRectFitPadding(0),{top:r.clientHeight*o.paddingPercent,bottom:r.clientHeight*o.paddingPercent,left:r.clientWidth*o.paddingPercent,right:r.clientWidth*o.paddingPercent}),a=cameraForLocalRect(n,e.gpsConfig,e.bearing,{width:r.clientWidth,height:r.clientHeight},s);if(!a){t.fitBounds(i,{padding:s,bearing:e.bearing,essential:!0});return}const m=t.project(t.getCenter()),h=t.project(a.center),c=Math.max(t.getCanvas().clientWidth,t.getCanvas().clientHeight,1),l=Math.hypot(h.x-m.x,h.y-m.y)/c,y=Math.abs(t.getZoom()-a.zoom),b=o.duration??Math.min(2800,500+l*450+y*150),f={center:a.center,zoom:a.zoom,bearing:e.bearing,duration:b,essential:!0};if(l<=1.2&&y<=1.5){t.easeTo(f);return}const d=t.getBounds().extend(D.convert(i)),g=t.cameraForBounds(d,{padding:s,bearing:e.bearing});if(!g?.center||typeof g.zoom!="number"||g.zoom>=t.getZoom()-.2){t.easeTo(f);return}const L=w(t,a.zoom,g.zoom);if(L!==null){const _=Math.max(F,L*S),v=Math.round(b*A);t.flyTo({...f,curve:_,duration:v});return}t.easeTo(f)}
1
+ import{LngLatBounds as D,MercatorCoordinate as E}from"maplibre-gl";import{fpGeo as I}from"../../../data/fpGeo";import{svgArea as x}from"../../../data/svg";import{uiState as z}from"../../../store";import{convertLocalToGps as u}from"../../../utils/gps";import{planBearing as N}from"../../../utils/planBearing";export const MAP_BOUNDS_PADDING_FACTOR=3,MAP_BOUNDS_MIN_PADDING_DEGREES=.02,INITIAL_FIT_ZOOM_ADJUSTMENT=.15;const T=1.42,F=.35,S=.9,A=.85,P=8,B=.05;export function deriveVenueMapBounds(t){const n=[[x.min.x,x.min.y],[x.max.x,x.min.y],[x.max.x,x.max.y],[x.min.x,x.max.y]].map(([c,l])=>u(c,l,t));if(!n.every(([c,l])=>Number.isFinite(c)&&Number.isFinite(l)))return;const e=n.map(([c])=>c),o=n.map(([,c])=>c),i=Math.min(...e),r=Math.max(...e),s=Math.min(...o),a=Math.max(...o),m=Math.max((r-i)*MAP_BOUNDS_PADDING_FACTOR,MAP_BOUNDS_MIN_PADDING_DEGREES),h=Math.max((a-s)*MAP_BOUNDS_PADDING_FACTOR,MAP_BOUNDS_MIN_PADDING_DEGREES);return[[i-m,s-h],[r+m,a+h]]}function O(t,n,e,o){const i=Math.min(t.getZoom(),n),r=(e-i)*Math.min(1,o/T);return i+r>=t.getMinZoom()-B}function w(t,n,e){if(O(t,n,e,T))return T;if(!O(t,n,e,F))return null;let o=F,i=T;for(let r=0;r<P;r++){const s=(o+i)/2;O(t,n,e,s)?o=s:i=s}return o}export function getLocalRectGeoBounds(t,n){const e=[u(t.min.x,t.min.y,n),u(t.max.x,t.min.y,n),u(t.max.x,t.max.y,n),u(t.min.x,t.max.y,n)],o=e.map(([r])=>r),i=e.map(([,r])=>r);return[[Math.min(...o),Math.min(...i)],[Math.max(...o),Math.max(...i)]]}const R=512;export function cameraForLocalRect(t,n,e,o,i){const r=[u(t.min.x,t.min.y,n),u(t.max.x,t.min.y,n),u(t.max.x,t.max.y,n),u(t.min.x,t.max.y,n)].map(([M,p])=>E.fromLngLat({lng:M,lat:p}));if(!r.every(({x:M,y:p})=>Number.isFinite(M)&&Number.isFinite(p)))return null;const s=-e*Math.PI/180,a=Math.cos(s),m=Math.sin(s),h=r.map(({x:M,y:p})=>M*a-p*m),c=r.map(({x:M,y:p})=>M*m+p*a),l=Math.max(...h)-Math.min(...h),y=Math.max(...c)-Math.min(...c);if(l<=0||y<=0)return null;const b=o.width-i.left-i.right,f=o.height-i.top-i.bottom;if(b<=0||f<=0)return null;const d=Math.min(b/(l*R),f/(y*R));if(!(d>0))return null;const g=R*d,L=(Math.min(...h)+Math.max(...h))/2-(i.left-i.right)/2/g,_=(Math.min(...c)+Math.max(...c))/2-(i.top-i.bottom)/2/g,{lng:v,lat:C}=new E(L*a+_*m,-L*m+_*a).toLngLat();return{center:[v,C],zoom:Math.log2(d)}}function U(t,n){return{top:t.top+n.top,bottom:t.bottom+n.bottom,left:t.left+n.left,right:t.right+n.right}}export function getVisibleRectFitPadding(t=0){const n=z.canvasVisibleRectPx,e=z.screenSize;return n?{top:Math.max(0,n.min.y)+t,bottom:Math.max(0,e.height-n.max.y)+t,left:Math.max(0,n.min.x)+t,right:Math.max(0,e.width-n.max.x)+t}:{top:t,bottom:t,left:t,right:t}}export function isLngLatInVisibleViewport(t,n,e){const o=t.project(n),i=t.getCanvas();return o.x>=e.left&&o.x<=i.clientWidth-e.right&&o.y>=e.top&&o.y<=i.clientHeight-e.bottom}export function deriveGeoConfig(){if(!I?.properties?.config)return null;const t=I.properties.config,n=(t.p0.lng+t.p2.lng)/2,e=(t.p0.lat+t.p2.lat)/2,o=N(t.p0,t.p2),i=Number.isFinite(o)?o:t.bearing??0;return{center:[n,e],bearing:i,zoom:16,gpsConfig:t}}export function fitMapToLocalRect(t,n,e,o={}){if(!t||!n||!e||n.size.height===1/0||n.size.width===1/0||n.size.height<=0||n.size.width<=0)return;const i=getLocalRectGeoBounds(n,e.gpsConfig),r=t.getCanvas(),s=o.paddingPercent==null?getVisibleRectFitPadding(o.padding??50):U(getVisibleRectFitPadding(0),{top:r.clientHeight*o.paddingPercent,bottom:r.clientHeight*o.paddingPercent,left:r.clientWidth*o.paddingPercent,right:r.clientWidth*o.paddingPercent}),a=cameraForLocalRect(n,e.gpsConfig,e.bearing,{width:r.clientWidth,height:r.clientHeight},s);if(!a){t.fitBounds(i,{padding:s,bearing:e.bearing,essential:!0});return}const m=t.project(t.getCenter()),h=t.project(a.center),c=Math.max(t.getCanvas().clientWidth,t.getCanvas().clientHeight,1),l=Math.hypot(h.x-m.x,h.y-m.y)/c,y=Math.abs(t.getZoom()-a.zoom),b=o.duration??Math.min(2800,500+l*450+y*150),f={center:a.center,zoom:a.zoom,bearing:e.bearing,duration:b,essential:!0};if(l<=1.2&&y<=1.5){t.easeTo(f);return}const d=t.getBounds().extend(D.convert(i)),g=t.cameraForBounds(d,{padding:s,bearing:e.bearing});if(!g?.center||typeof g.zoom!="number"||g.zoom>=t.getZoom()-.2){t.easeTo(f);return}const L=w(t,a.zoom,g.zoom);if(L!==null){const _=Math.max(F,L*S),v=Math.round(b*A);t.flyTo({...f,curve:_,duration:v});return}t.easeTo(f)}
@@ -1 +1 @@
1
- import{jsx as o,jsxs as v}from"react/jsx-runtime";import{Overlay as y}from"@expofp/ui";import S from"classnames";import{observer as h}from"mobx-react-lite";import{useCallback as l,useMemo as a}from"react";import{overlayStore as m,uiState as e}from"../store";import{t as k}from"../utils/i18n";import C from"./Bookmarks";import g from"./Booth/Booth";import z from"./Category";import b from"./Event";import O from"./Exhibitor";import x from"./Filter";import M from"./Language";import P from"./Menu";import A from"./OverlayParticles";import w from"./RoutePlanner/RoutePlanner";import E from"./Search";import _ from"./Sessions";import j from"./Speaker";import F from"./Speakers";import R from"./TourPoints";import B from"./Tours";import I from"./Visited";import K from"./Wayfinding";const L={full:"full",medium:"medium",small:"medium"},N=t=>L[t],T=h(({isGDPR:t,consent:n})=>{const c=l(r=>{e.desiredOverlaySize=r},[]),d=l(r=>{e.setOverlayScrolled(r)},[]),p=N(e.overlaySize),f=a(()=>[e.list.type,e.details],[e.list.type,e.details]),u=a(()=>{const r={"-backdrop":e.canvasStarted&&e.shouldUseBackdrop&&!e.dimmed&&!e.galleryActive,"-no-transition":e.dimmed,"-gallery-active":e.galleryActive,collapsed:e.overlayCollapsed,kiosk:e.kiosk,start:e.overlayPosition==="left",bottom:e.overlayPosition!=="left",[e.overlaySize]:!0},i=S(r),s=e.overlayInterfaceClasses.join(" ");return s?`${i} ${s}`:i},[e.canvasStarted,e.shouldUseBackdrop,e.dimmed,e.galleryActive,e.overlayCollapsed,e.kiosk,e.inIdle,e.setKioskModeEnabled,e.overlayPosition,e.overlaySize,e.overlayInterfaceClasses]);return v(y,{open:e.isOverlayOpen,size:p,particles:e.isFeaturedExhibitorActive?o(A,{}):null,className:u,mediumSizeMultiplier:m.mediumSizeMultiplier,fullSizeOffset:m.fullSizeOffset,disableDrag:e.viewerMode&&e.menu,forceFull:e.viewerMode&&e.menu,scrollResetKey:f,noContentLabel:k("No content"),onChangeSize:c,onScrollStateChange:d,onScrollActivity:()=>window.__resett?.(),children:[o(P,{isGDPR:t,consent:n}),o(E,{}),o(O,{}),o(g,{}),o(C,{}),o(I,{}),o(M,{}),o(z,{}),o(K,{}),o(x,{}),o(_,{showFilters:!0}),o(F,{showFilters:!0}),o(B,{}),o(R,{}),o(w,{}),o(b,{}),o(j,{})]})});export default T;
1
+ import{jsx as o,jsxs as v}from"react/jsx-runtime";import{Overlay as y}from"@expofp/ui";import S from"classnames";import{observer as h}from"mobx-react-lite";import{useCallback as s,useMemo as a}from"react";import{overlayStore as m,uiState as e}from"../store";import{t as k}from"../utils/i18n";import z from"./Bookmarks";import C from"./Booth/Booth";import g from"./Category";import b from"./Event";import O from"./Exhibitor";import x from"./Filter";import M from"./Language";import P from"./Menu";import A from"./OverlayParticles";import w from"./RoutePlanner/RoutePlanner";import E from"./Search";import _ from"./Sessions";import j from"./Speaker";import F from"./Speakers";import R from"./TourPoints";import B from"./Tours";import I from"./Visited";import K from"./Wayfinding";const L={full:"full",medium:"medium",small:"medium"},N=t=>L[t],T=h(({isGDPR:t,consent:n})=>{const c=s(r=>{e.desiredOverlaySize=r},[]),d=s(r=>{e.setOverlayScrolled(r)},[]),p=e.overlaySize&&N(e.overlaySize),f=a(()=>[e.list.type,e.details],[e.list.type,e.details]),u=a(()=>{const r={"-backdrop":e.canvasStarted&&e.shouldUseBackdrop&&!e.dimmed&&!e.galleryActive,"-no-transition":e.dimmed,"-gallery-active":e.galleryActive,collapsed:e.overlayCollapsed,kiosk:e.kiosk,start:e.overlayPosition==="left",bottom:e.overlayPosition!=="left",...e.overlaySize&&{[e.overlaySize]:!0}},i=S(r),l=e.overlayInterfaceClasses.join(" ");return l?`${i} ${l}`:i},[e.canvasStarted,e.shouldUseBackdrop,e.dimmed,e.galleryActive,e.overlayCollapsed,e.kiosk,e.inIdle,e.setKioskModeEnabled,e.overlayPosition,e.overlaySize,e.overlayInterfaceClasses]);return v(y,{open:e.isOverlayOpen,size:p,particles:e.isFeaturedExhibitorActive?o(A,{}):null,className:u,mediumSizeMultiplier:m.mediumSizeMultiplier,fullSizeOffset:m.fullSizeOffset,disableDrag:e.viewerMode&&e.menu,forceFull:e.viewerMode&&e.menu,scrollResetKey:f,noContentLabel:k("No content"),onChangeSize:c,onScrollStateChange:d,onScrollActivity:()=>window.__resett?.(),children:[o(P,{isGDPR:t,consent:n}),o(E,{}),o(O,{}),o(C,{}),o(z,{}),o(I,{}),o(M,{}),o(g,{}),o(K,{}),o(x,{}),o(_,{showFilters:!0}),o(F,{showFilters:!0}),o(B,{}),o(R,{}),o(w,{}),o(b,{}),o(j,{})]})});export default T;
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  export default _default;
2
- declare function _default(): false;
3
+ declare function _default(): false | React.JSX.Element | null;
3
4
  //# sourceMappingURL=TourPoints.d.ts.map
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  export default _default;
2
- declare function _default(): boolean;
3
+ declare function _default(): false | React.JSX.Element;
3
4
  //# sourceMappingURL=Visited.d.ts.map
@@ -33,7 +33,7 @@ export default class FloorPlanLoader implements FloorPlan {
33
33
  onVisitedClick: (e: FloorPlanVisitedClickEvent) => void;
34
34
  onCategoryClick: (e: FloorPlanCategory) => void;
35
35
  onFpConfigured: () => void;
36
- onDirection: (e: FloorPlanDirectionEvent) => void;
36
+ onDirection: (e: FloorPlanDirectionEvent | null) => void;
37
37
  onDetails: (e: FloorPlanDetailsEvent) => void;
38
38
  onExhibitorCustomButtonClick: (e: FloorPlanCustomButtonEvent) => void;
39
39
  onGetCoordsClick: (e: FloorPlanGetCoordsEvent) => void;
@@ -1,5 +1,6 @@
1
1
  import { Box } from '@expofp/geometry';
2
- import { LayerDef } from '@expofp/renderer';
2
+ import { type LayerDef } from '@expofp/renderer';
3
+ import { type Floor } from '../types';
3
4
  export declare enum LayersMode {
4
5
  Default = 0,// one floor plans
5
6
  Separated = 1,// outdated
@@ -18,11 +19,11 @@ export declare class Layer {
18
19
  name: string;
19
20
  description: string;
20
21
  frozen: boolean;
21
- rect: Box;
22
- viewbox: Box;
22
+ rect: Box | null;
23
+ viewbox: Box | null;
23
24
  configured: boolean;
24
25
  childLayers: Layer[];
25
- rootParent: Layer;
26
+ rootParent: Layer | null;
26
27
  mode: LayerMode;
27
28
  children: LayerDef[];
28
29
  pathway?: boolean;
@@ -33,7 +34,7 @@ export declare class Layer {
33
34
  }
34
35
  export default class LayerStore {
35
36
  layers: Layer[];
36
- defaultLayer: Layer;
37
+ defaultLayer?: Layer;
37
38
  mode: LayersMode;
38
39
  layersLoaded: boolean;
39
40
  private updateVisibilityTimeout;
@@ -48,7 +49,7 @@ export default class LayerStore {
48
49
  })[];
49
50
  selectFloor(layer: Layer): void;
50
51
  updateVisibility(layerOrName: string | Layer, visible: boolean): void;
51
- findLayer(z: string | number): Layer;
52
+ findLayer(z: string | number | null | undefined): Layer | null;
52
53
  getPathwayList(): Layer[];
53
54
  showPathWay(name: string): Promise<void>;
54
55
  hidePathways(): void;
@@ -1 +1 @@
1
- import{__decorate as a}from"tslib";import{Box as y}from"@expofp/geometry";import{action as c,computed as f,observable as h,runInAction as m}from"mobx";import d from"../components/Map/drawing/config/config-load-layer";import{getFpSvgJs as v}from"../data/fp-payloads";import w from"../tools/settings";import{areLayersEnabled as b}from"../utils/areLayersEnabled";import{shortenName as g}from"../utils/shortenName";import s from".";const S=["money2020usa","rodion2","possible2025","2025virtuosotravelweek","zscalerskofy26","gamescom2025"];export var LayersMode;(function(i){i[i.Default=0]="Default",i[i.Separated=1]="Separated",i[i.Radio=2]="Radio",i[i.CheckBox=3]="CheckBox"})(LayersMode||(LayersMode={}));export var LayerMode;(function(i){i[i.Unset=0]="Unset",i[i.AlwaysVisible=1]="AlwaysVisible",i[i.AlwaysHidden=2]="AlwaysHidden",i[i.TurnedOn=3]="TurnedOn",i[i.TurnedOff=4]="TurnedOff"})(LayerMode||(LayerMode={}));export class Layer{constructor(){this.rect=null,this.viewbox=null,this.childLayers=[],this.rootParent=null,this.children=[]}get shortName(){return g(this.description)}}a([h],Layer.prototype,"loaded",void 0),a([h],Layer.prototype,"visible",void 0);export default class l{constructor(){this.layers=[],this.layersLoaded=!1,this.updateVisibilityTimeout=0,this.selectFloorTimeout=0}get visible(){return this.layers.filter(t=>t.frozen||t.visible)}get loaded(){return this.layers.filter(t=>t.loaded)}get rectangle(){var t=this.visible.filter(r=>!r.frozen).map(r=>r.viewbox??r.rect);return this.mode!==LayersMode.Radio||!t.length?null:y.fromUnion(...t)||null}get viewboxRectangle(){var t=this.visible.filter(r=>!r.frozen&&r.viewbox).map(r=>r.viewbox);return t.length&&y.fromUnion(...t)||null}get pathwayLayers(){return this.layers.filter(t=>t.pathway)}get floors(){if(!b())return[];const t=new Set(this.layers.filter(e=>e&&!e.frozen&&!e.rootParent&&!e.pathway).concat(s.routeStore.layers.filter(e=>e&&e.mode!==LayerMode.AlwaysHidden&&e.mode!==LayerMode.AlwaysVisible))),r=Array.from(t).reverse();return r.map((e,o)=>{const n=s.routeStore.layers.length>0&&s.routeStore.layers.indexOf(e)===-1,u=s.toursStore.tourLayers.length>0&&s.toursStore.tourLayers.indexOf(e)===-1;return{layer:e,name:e.name,shortName:e.shortName,description:e.description,active:e.visible,disabled:!!(n||u),index:e.floorIndex??r.length-o-1}})}selectFloor(t){if(this.selectFloorTimeout)return;this.selectFloorTimeout=setTimeout(()=>this.selectFloorTimeout=0,500);const r=this.layers.find(o=>o.description===t.description);if(!r)return;if(this.mode===LayersMode.Radio){if(this.updateVisibility(r,!0),s.maplibreStore.showMaplibre)return;if(!!v().__fpSettings?.fpVer||S.includes(w.EXPO)){const n=r.viewbox??r.rect;s.uiState.moveToRect=n}else{const n=this.layers.indexOf(this.layers.filter(p=>!p.frozen&&p.visible)[0]),u=this.layers.indexOf(r);if(n===u)return;s.uiState.zoomBy=u<n?.95:1.05}}else this.updateVisibility(r,!r.visible);const e=s.toursStore.getTourLayerInfo(r.name)||s.toursStore.getTourLayerInfo(r.description);if(e){this.showPathWay(e.id);return}s.toursStore.stopTour()}updateVisibility(t,r){if(this.mode===LayersMode.Radio&&!r)return;const e=t instanceof Layer?t:this.findLayer(t);if(!e||e.visible===r){e&&s.routeStore.currentRouteLayer!==e&&(s.routeStore.currentRouteLayer=e);return}d(e,s.rendererService).then(()=>{this.mode===LayersMode.Radio&&this.layers.filter(o=>!o.pathway).forEach(o=>{o.name!==e.name&&!o.frozen&&o.visible&&(o.visible=!1,o.childLayers.forEach(n=>{n.visible=!1}))}),e&&(e.visible=r,e.childLayers.forEach(o=>{o.visible=r}),r&&(s.routeStore.currentRouteLayer=e),typeof s.fp.onFloorActivated=="function"&&(clearTimeout(this.updateVisibilityTimeout),this.updateVisibilityTimeout=setTimeout(()=>{const o=s.fp.getFloors();s.fp.onFloorActivated(o.find(n=>n.name===e.name))})))})}findLayer(t){if(t==null)return null;const r=this.layers.filter(o=>!o.rootParent);if(typeof t=="number"&&(e=r.filter(o=>!o.frozen)[t],e))return e;t=t.toString().toLowerCase();var e=r.find(o=>{const n=(o.name.match(/(-?[0-9]+)/)||"")[0];return t===o?.name.toLowerCase()||t===o?.description.toLowerCase()||t===o?.shortName.toLowerCase()||t===n});return!e&&!/\D/.test(t)&&(e=r.filter(o=>!o.frozen)[parseInt(t)]),e}getPathwayList(){return this.layers.filter(t=>t.pathway)}async showPathWay(t){try{const r=this.findLayer(t);if(!r)throw new Error(`There is no pathway with this name. ${t}`);await d(r,s.rendererService);const e=this.getPathwayList();m(()=>{e.forEach(o=>{const n=o.name===t;o.visible=n,o.childLayers.forEach(u=>{u.visible=n})})})}catch(r){console.error("showPathWay",r)}}hidePathways(){this.getPathwayList().forEach(r=>{r.visible=!1,r.childLayers.forEach(e=>{e.visible=!1})})}}a([h],l.prototype,"layers",void 0),a([h],l.prototype,"defaultLayer",void 0),a([h],l.prototype,"mode",void 0),a([h],l.prototype,"layersLoaded",void 0),a([f({keepAlive:!0})],l.prototype,"visible",null),a([f({keepAlive:!0})],l.prototype,"loaded",null),a([f({keepAlive:!0})],l.prototype,"rectangle",null),a([f({keepAlive:!0})],l.prototype,"viewboxRectangle",null),a([f],l.prototype,"pathwayLayers",null),a([f],l.prototype,"floors",null),a([c],l.prototype,"selectFloor",null),a([c],l.prototype,"updateVisibility",null),a([c],l.prototype,"showPathWay",null),a([c],l.prototype,"hidePathways",null);
1
+ import{__decorate as a}from"tslib";import{Box as d}from"@expofp/geometry";import{action as c,computed as f,observable as h,runInAction as m}from"mobx";import y from"../components/Map/drawing/config/config-load-layer";import{getFpSvgJs as w}from"../data/fp-payloads";import b from"../tools/settings";import{areLayersEnabled as v}from"../utils/areLayersEnabled";import{shortenName as g}from"../utils/shortenName";import n from".";const x=["money2020usa","rodion2","possible2025","2025virtuosotravelweek","zscalerskofy26","gamescom2025"];export var LayersMode;(function(s){s[s.Default=0]="Default",s[s.Separated=1]="Separated",s[s.Radio=2]="Radio",s[s.CheckBox=3]="CheckBox"})(LayersMode||(LayersMode={}));export var LayerMode;(function(s){s[s.Unset=0]="Unset",s[s.AlwaysVisible=1]="AlwaysVisible",s[s.AlwaysHidden=2]="AlwaysHidden",s[s.TurnedOn=3]="TurnedOn",s[s.TurnedOff=4]="TurnedOff"})(LayerMode||(LayerMode={}));export class Layer{constructor(){this.basePriority=0,this.name="",this.description="",this.frozen=!1,this.rect=null,this.viewbox=null,this.configured=!1,this.childLayers=[],this.rootParent=null,this.mode=LayerMode.Unset,this.children=[],this.loaded=!1,this.visible=!1}get shortName(){return g(this.description)}}a([h],Layer.prototype,"loaded",void 0),a([h],Layer.prototype,"visible",void 0);export default class l{constructor(){this.layers=[],this.mode=LayersMode.Default,this.layersLoaded=!1,this.updateVisibilityTimeout=0,this.selectFloorTimeout=0}get visible(){return this.layers.filter(r=>r.frozen||r.visible)}get loaded(){return this.layers.filter(r=>r.loaded)}get rectangle(){const r=this.visible.filter(t=>!t.frozen).map(t=>t.viewbox??t.rect).filter(t=>!!t);return this.mode!==LayersMode.Radio||!r.length?null:d.fromUnion(...r)||null}get viewboxRectangle(){const r=this.visible.filter(t=>!t.frozen).map(t=>t.viewbox).filter(t=>!!t);return r.length&&d.fromUnion(...r)||null}get pathwayLayers(){return this.layers.filter(r=>r.pathway)}get floors(){if(!v())return[];const r=new Set(this.layers.filter(e=>e&&!e.frozen&&!e.rootParent&&!e.pathway).concat(n.routeStore.layers.filter(e=>e&&e.mode!==LayerMode.AlwaysHidden&&e.mode!==LayerMode.AlwaysVisible))),t=Array.from(r).reverse();return t.map((e,i)=>{const o=n.routeStore.layers.length>0&&n.routeStore.layers.indexOf(e)===-1,u=n.toursStore.tourLayers.length>0&&n.toursStore.tourLayers.indexOf(e)===-1;return{layer:e,name:e.name,shortName:e.shortName,description:e.description,active:e.visible,disabled:!!(o||u),index:e.floorIndex??t.length-i-1}})}selectFloor(r){if(this.selectFloorTimeout)return;this.selectFloorTimeout=window.setTimeout(()=>this.selectFloorTimeout=0,500);const t=this.layers.find(i=>i.description===r.description);if(!t)return;if(this.mode===LayersMode.Radio){if(this.updateVisibility(t,!0),n.maplibreStore.showMaplibre)return;if(!!w().__fpSettings?.fpVer||x.includes(b.EXPO)){const o=t.viewbox??t.rect;n.uiState.moveToRect=o}else{const o=this.layers.indexOf(this.layers.filter(p=>!p.frozen&&p.visible)[0]),u=this.layers.indexOf(t);if(o===u)return;n.uiState.zoomBy=u<o?.95:1.05}}else this.updateVisibility(t,!t.visible);const e=n.toursStore.getTourLayerInfo(t.name)||n.toursStore.getTourLayerInfo(t.description);if(e){this.showPathWay(e.id);return}n.toursStore.stopTour()}updateVisibility(r,t){if(this.mode===LayersMode.Radio&&!t)return;const e=r instanceof Layer?r:this.findLayer(r);if(!e||e.visible===t){e&&n.routeStore.currentRouteLayer!==e&&(n.routeStore.currentRouteLayer=e);return}y(e,n.rendererService).then(()=>{this.mode===LayersMode.Radio&&this.layers.filter(i=>!i.pathway).forEach(i=>{i.name!==e.name&&!i.frozen&&i.visible&&(i.visible=!1,i.childLayers.forEach(o=>{o.visible=!1}))}),e&&(e.visible=t,e.childLayers.forEach(i=>{i.visible=t}),t&&(n.routeStore.currentRouteLayer=e),typeof n.fp.onFloorActivated=="function"&&(clearTimeout(this.updateVisibilityTimeout),this.updateVisibilityTimeout=window.setTimeout(()=>{const i=n.fp.getFloors();n.fp.onFloorActivated(i.find(o=>o.name===e.name))})))})}findLayer(r){if(r==null)return null;const t=this.layers.filter(o=>!o.rootParent);if(typeof r=="number"){const o=t.filter(u=>!u.frozen)[r];if(o)return o}const e=r.toString().toLowerCase(),i=t.find(o=>{const u=(o.name.match(/(-?[0-9]+)/)||"")[0];return e===o?.name.toLowerCase()||e===o?.description.toLowerCase()||e===o?.shortName.toLowerCase()||e===u});return i||(/\D/.test(e)?null:t.filter(o=>!o.frozen)[parseInt(e)]??null)}getPathwayList(){return this.layers.filter(r=>r.pathway)}async showPathWay(r){try{const t=this.findLayer(r);if(!t)throw new Error(`There is no pathway with this name. ${r}`);await y(t,n.rendererService);const e=this.getPathwayList();m(()=>{e.forEach(i=>{const o=i.name===r;i.visible=o,i.childLayers.forEach(u=>{u.visible=o})})})}catch(t){console.error("showPathWay",t)}}hidePathways(){this.getPathwayList().forEach(t=>{t.visible=!1,t.childLayers.forEach(e=>{e.visible=!1})})}}a([h],l.prototype,"layers",void 0),a([h],l.prototype,"defaultLayer",void 0),a([h],l.prototype,"mode",void 0),a([h],l.prototype,"layersLoaded",void 0),a([f({keepAlive:!0})],l.prototype,"visible",null),a([f({keepAlive:!0})],l.prototype,"loaded",null),a([f({keepAlive:!0})],l.prototype,"rectangle",null),a([f({keepAlive:!0})],l.prototype,"viewboxRectangle",null),a([f],l.prototype,"pathwayLayers",null),a([f],l.prototype,"floors",null),a([c],l.prototype,"selectFloor",null),a([c],l.prototype,"updateVisibility",null),a([c],l.prototype,"showPathWay",null),a([c],l.prototype,"hidePathways",null);
@@ -1,28 +1,27 @@
1
- import { Point } from '@expofp/geometry';
2
- import { ArbitraryPoint, type RouteLine } from '../wayfinding';
3
- import { Booth } from './BoothStore';
4
- import { Exhibitor } from './ExhibitorStore';
5
- import { Layer } from './LayerStore';
6
- import RootStore from './RootStore';
1
+ import { type ArbitraryPoint, type RouteLine } from '../wayfinding';
2
+ import { type Booth } from './BoothStore';
3
+ import type { Exhibitor } from './ExhibitorStore';
4
+ import { type Layer } from './LayerStore';
5
+ import type RootStore from './RootStore';
7
6
  export default class RouteStore {
8
7
  rootStore: RootStore;
9
- cpTimeout: number;
8
+ cpTimeout: number | undefined;
10
9
  routeLines: RouteLine[];
11
- routeDistance: number;
12
- currentPosition: CurrentPosition;
10
+ routeDistance: number | null;
11
+ currentPosition: CurrentPosition | null;
13
12
  requestCompass: boolean;
14
13
  iconType: number;
15
- tempToBooth: Booth;
14
+ tempToBooth: Booth | null;
16
15
  focusEnabled: boolean;
17
- prevZ: string;
16
+ prevZ: string | null;
18
17
  markersData: MarkersData;
19
18
  prevMarkers: Marker[];
20
19
  /** Cancels the camera move still waiting for a floor to come on screen (see `revealLayer`). */
21
20
  private pendingReveal;
22
21
  showAccessible: boolean;
23
22
  onlyAccessible: boolean;
24
- currentRouteLayer: Layer;
25
- currentRouteExhibitor: Exhibitor;
23
+ currentRouteLayer: Layer | null;
24
+ currentRouteExhibitor: Exhibitor | null;
26
25
  constructor(rootStore: RootStore);
27
26
  get canFindLocation(): boolean;
28
27
  selectRoute(route: Route | null, resetList?: boolean, immediate?: boolean): void;
@@ -33,7 +32,7 @@ export default class RouteStore {
33
32
  setStartPoint(booth: Booth): void;
34
33
  get pathLayers(): {
35
34
  id: number;
36
- layer: Layer;
35
+ layer: Layer | null;
37
36
  }[];
38
37
  /**
39
38
  * Used only by the SDK `getBooth(RouteWaypoint)` path for coord-form
@@ -47,7 +46,7 @@ export default class RouteStore {
47
46
  get selectedMarkers(): Marker[];
48
47
  get layers(): Layer[];
49
48
  clickRoute(from: Booth, to: Booth): void;
50
- selectCurrentPosition(point: CurrentPosition, focus?: boolean, icon?: number): void;
49
+ selectCurrentPosition(point: CurrentPosition | null, focus?: boolean, icon?: number): void;
51
50
  findLocation(): void;
52
51
  /** The dot, plus — when it lies outside the drawing — enough of the nearest map edge for context. */
53
52
  private findLocationRect;
@@ -91,7 +90,8 @@ export declare class Route {
91
90
  waypoints?: Booth[] | undefined;
92
91
  constructor(from: Booth | ArbitraryPoint | null, to: Booth | ArbitraryPoint | null, waypoints?: Booth[] | undefined);
93
92
  }
94
- export declare class CurrentPosition extends Point {
93
+ /** Where the blue dot is: plan coordinates, the floor it sits on, and the bearing it faces. */
94
+ export declare class CurrentPosition {
95
95
  x: number;
96
96
  y: number;
97
97
  z?: number | string | undefined;
@@ -1 +1 @@
1
- import{__decorate as n}from"tslib";import{action as f,computed as b,observable as u}from"mobx";import{Box as R,Point as F,boxContainsPoint as G,pointDistance as L}from"@expofp/geometry";import c,{layersStore as g}from".";import{fpGeo as k}from"../data/fpGeo";import{getName as B}from"../components/Kiosk/SetKiosk";import{DEFAULT_UNITS as T,ORIENTATION_GRANTED_KEY as U}from"../constants";import E from"../data";import{getLayerSvg as $,svgArea as m}from"../data/svg";import{GaEventActions as V,sendEventToGa as K}from"../tools/gtag";import P from"../tools/logger";import{areLayersEnabled as W}from"../utils/areLayersEnabled";import{calcSpeed as w}from"../utils/calcSpeed";import{calcTravelTime as D}from"../utils/calcTravelTime";import{calculateRelativeBearing as Z,convertGpsToLocal as A,isValidPointCoords as I}from"../utils/gps";import{boothToEndpoint as C,buildRoute as q,CURRENT_LOCATION_NAME as j,CURRENT_POSITION_POINT_ID as X,isWayfindingReady as Y,KIOSK_ANCHOR_POINT_ID as H,toArbitraryPoint as M}from"../wayfinding";import{BoothBase as y}from"./BoothStore";import{uiState as p}from"./index";import{LayersMode as J}from"./LayerStore";import{revealLayer as N}from"./reveal-layer.js";const d=o=>typeof o=="string"?Number(o.replace(",",".")):o;export default class i{constructor(t){this.routeLines=[],this.routeDistance=null,this.currentPosition=null,this.requestCompass=!1,this.iconType=0,this.tempToBooth=null,this.focusEnabled=!0,this.prevZ=null,this.markersData={icons:[],markers:[]},this.prevMarkers=[],this.pendingReveal=null,this.showAccessible=!1,this.onlyAccessible=!1,this.currentRouteLayer=null,this.currentRouteExhibitor=null,this.routeUnits=T,this.isGpsTrackingEnabled=!0,this.rootStore=t,this.focusEnabled=!window.location.search}get canFindLocation(){return!!p.kioskData||!!this.currentPosition}selectRoute(t,e=!0,r=!1){if(e&&(p.list={type:"search",text:"",focused:!1}),t&&!t.from&&t.to){const l=this.resolveFallbackFrom();l&&(t=new Route(l,t.to,t.waypoints))}t?.from&&t?.to&&t.from===t.to&&(t=null);let s=[];t?.from&&t?.to&&window.setTimeout(()=>{this.rootStore.showMap()},navigator.userAgent.toLowerCase().indexOf("android")>-1?400:50),t?.from instanceof y&&t.from.visible&&s.push(t.from),t?.to instanceof y&&t.to.visible&&(this.tempToBooth=null,s.push(t.to)),!t&&c.fp.onDirection&&c.fp.onDirection(null);const a=()=>{if(this.rootStore.moveToList(s),p.details=t,t&&(!t.from||!t.to)&&c.showOverlay(),t?.to&&t?.from){const l=Q(t.from);l&&this.rootStore.layerStore.updateVisibility(l,!0)}if(!this.currentRouteLayer){const l=O(this.rootStore.layerStore,t?.from),h=O(this.rootStore.layerStore,t?.to);l?this.currentRouteLayer=l:h&&(this.currentRouteLayer=h)}e&&t?.from&&t?.to&&K(V.ClickDirections,`${t?.from?"From "+t.from.name:""} ${t?.to?"To "+t.to.name:""}`)};r?a():setTimeout(a,200)}rebuildRouteFromPosition(t){const e=p.selectedRoute;e?.to&&this.selectRoute(new Route(t,e.to,e.waypoints),!1,!0)}resolveFallbackFrom(){if(this.currentPosition)return M(this.currentPosition,j,X);const t=p.kioskData;return t?M({x:t.x,y:t.y,z:t.z},B(),H):null}setStartPoint(t){const e=p.selectedRoute;if(e?.to&&!e?.from&&t){const r=new Route(t,e.to,e.waypoints);this.selectRoute(r)}}get pathLayers(){return c.routeStore.routeLines?.map(t=>t.p0.layer)?.filter((t,e,r)=>r.indexOf(t)===e).map((t,e)=>({id:e+1,layer:c.layerStore.findLayer(t)}))}getNearestBooth(t){if(!t)return null;let e=this.rootStore.layerStore.findLayer(t.z);const r=t.lat&&t.lng?A(t,k.properties.config):t;return this.rootStore.boothStore.booths.filter(s=>g.mode===J.Default||!e?s.visible&&s.rect:s.rect&&(typeof t.z!="number"&&!t.z&&s.visible||e.name===s.layer?.name)).sort((s,a)=>L(r,s.rect.center)-L(r,a.rect.center))[0]||null}setMarkers(t){this.markersData.markers=(t?.markers??[]).map(tt),this.markersData.icons=t?.icons??[]}selectMarker(t,e){const r=this.markersData.markers.find(a=>a.id===t);this.markersData.markers.forEach(a=>a.active=!1),r&&(r.active=!0);let s=c.layerStore.findLayer(r?.z);if(e&&r){const a=c.rendererService.renderer;return s&&!s?.visible&&g.updateVisibility(s,!0),a?a.controls.panTo(r.x,r.y):(P.warn("Renderer is not initialized. Cannot pan to marker."),Promise.resolve())}return Promise.resolve()}get selectedMarkers(){return this.markersData.markers.filter(t=>t.active)}get layers(){var t=[];return c.routeStore.routeLines?.map(e=>e.p0.layer).forEach(e=>{t.indexOf(e)===-1&&t.push(e)}),t.map(e=>c.layerStore.layers.find(r=>r.name===e))}clickRoute(t,e){window.__resett&&window.__resett(),this.rootStore.uiState.menu=null,p.list.type==="route-planner"&&(p.list={type:"search",text:"",focused:!1}),this.selectRoute(new Route(t,e))}selectCurrentPosition(t,e=!0,r){clearTimeout(this.cpTimeout),t&&(t.x=d(t.x),t.y=d(t.y),t.lat=d(t.lat),t.lng=d(t.lng),W()||(t.z=null));const s=e&&this.rootStore.uiState.details&&!(this.rootStore.uiState.details instanceof Route),a=e&&!s&&(this.focusEnabled||this.prevZ!=t?.z);this.focusEnabled&&(this.focusEnabled=!1),this.prevZ=t?.z?.toString(),this.iconType=r?1:0;const l=t?et(t):null;if(!l){this.currentPosition=null;return}const h=c.layerStore.findLayer(t.z),x=new CurrentPosition(l.x,l.y,h?.name||this.currentRouteLayer?.name,Z(l),t.lat,t.lng);let v=!this.routeLines?.length;h&&this.routeLines?.length&&(v=!!this.routeLines.find(S=>S.p0.layer===h.name||S.p1.layer===h.name));const _=a&&v;this.currentPosition=x,_&&this.focusOnPosition(x,h),this.gpsEnabled||(this.cpTimeout=setTimeout(()=>{this.currentPosition&&this.selectCurrentPosition(null,!1)},30*1e3))}findLocation(){if(!this.canFindLocation)return;const t=this.currentPosition??p.kioskData;t&&(this.currentPosition&&localStorage.getItem(U)==="false"&&(c.routeStore.requestCompass=!0),this.pendingReveal?.(),this.pendingReveal=N({layer:c.layerStore.findLayer(t.z),show:e=>g.updateVisibility(e,!0),then:()=>{if(c.maplibreStore.showMaplibre){p.moveToLocation=!0;return}p.moveToRect=this.findLocationRect(t)}}))}findLocationRect(t){const e=R.fromCenter(t,{x:100,y:100});if(e.intersects(m))return e;const r=Math.max(m.min.x,Math.min(t.x,m.max.x)),s=Math.max(m.min.y,Math.min(t.y,m.max.y)),a=Math.min(m.size.width,m.size.height)*.3,l=R.fromCenter({x:r,y:s},{x:a,y:a}).intersection(m);return l?R.fromUnion(e,l):e}focusOnPosition(t,e){this.pendingReveal?.(),this.pendingReveal=N({layer:e,show:r=>g.updateVisibility(r,!0),then:()=>{if(c.maplibreStore.showMaplibre){p.moveToLocation=!0;return}const r=c.rendererService.renderer;if(!r){P.warn("Renderer is not initialized. Cannot pan to current position.");return}r.controls.panTo(t.x,t.y)}})}get routeInfo(){const t=this.routeDistance,e=this.routeUnits;return t?{distance:`${t}${e}`,units:e,time:D(t,w(e))}:null}updateRoute(t,e){!t?.length&&!this.routeLines.length||(this.routeLines=t,this.updateRoutePoints())}updateRouteDistance(t){if(t==null)return;const e=$(),r=(e.getAttribute("units")||T).toLowerCase?.().trim(),s=e.getAttribute("fp-ver")?.startsWith("5")??!1;this.routeDistance=Math.round(t/(s?1:10)),this.routeUnits=r,this.updateRoutePoints()}updateRoutePoints(){const t=p.selectedRoute,e=this.routeDistance,r=this.routeUnits;c.fp.onDirection&&setTimeout(()=>{c.fp.onDirection({from:z(t?.from??null),to:z(t?.to??null),lines:this.routeLines,distance:`${e}${r}`,units:r,time:D(e,w(r))})},200)}checkRoutes(){if(!Y()){console.warn("checkRoutes: wayfinding is not initialized \u2014 call createWayfinding() first. Skipping route check.");return}const t=c.boothStore.booths;console.info(`Route check started ${t.length}.... `);for(let e=0;e<t.length;e++){const r=t[e];for(let s=e+1;s<t.length;s++){const a=t[s];q(C(r),C(a)).lines.length||console.warn(`No route found from ${r.name} to ${a.name}`)}}console.info("Route check done....")}setGpsTrackingEnabled(t){this.isGpsTrackingEnabled=t}get gpsEnabled(){return E.autoTrackingGps&&this.isGpsTrackingEnabled&&!E.enableIPS}setOnlyAccessible(t){this.onlyAccessible=t}}n([u],i.prototype,"routeLines",void 0),n([u],i.prototype,"routeDistance",void 0),n([u],i.prototype,"currentPosition",void 0),n([u],i.prototype,"requestCompass",void 0),n([u],i.prototype,"iconType",void 0),n([u],i.prototype,"tempToBooth",void 0),n([u],i.prototype,"focusEnabled",void 0),n([u],i.prototype,"prevZ",void 0),n([u],i.prototype,"markersData",void 0),n([u],i.prototype,"prevMarkers",void 0),n([u],i.prototype,"showAccessible",void 0),n([u],i.prototype,"onlyAccessible",void 0),n([u],i.prototype,"currentRouteLayer",void 0),n([u],i.prototype,"currentRouteExhibitor",void 0),n([b],i.prototype,"canFindLocation",null),n([f],i.prototype,"selectRoute",null),n([f],i.prototype,"rebuildRouteFromPosition",null),n([f],i.prototype,"setStartPoint",null),n([b({keepAlive:!0})],i.prototype,"pathLayers",null),n([f],i.prototype,"setMarkers",null),n([f],i.prototype,"selectMarker",null),n([b({keepAlive:!0})],i.prototype,"selectedMarkers",null),n([b({keepAlive:!0})],i.prototype,"layers",null),n([f],i.prototype,"clickRoute",null),n([f],i.prototype,"selectCurrentPosition",null),n([f],i.prototype,"findLocation",null),n([u],i.prototype,"routeUnits",void 0),n([b],i.prototype,"routeInfo",null),n([f],i.prototype,"updateRoute",null),n([f],i.prototype,"updateRouteDistance",null),n([f],i.prototype,"updateRoutePoints",null),n([f],i.prototype,"checkRoutes",null),n([u],i.prototype,"isGpsTrackingEnabled",void 0),n([f],i.prototype,"setGpsTrackingEnabled",null),n([b({keepAlive:!0})],i.prototype,"gpsEnabled",null),n([f],i.prototype,"setOnlyAccessible",null);function Q(o){if(o)return o instanceof y?o.layer?.name:o.layer}function O(o,t){return t?t instanceof y?t.layer??null:o.findLayer(t.layer):null}function tt(o){return{...o,x:d(o.x),y:d(o.y),lat:d(o.lat),lng:d(o.lng)}}function et(o){let t=null,e=null;return k&&(t=k.properties.config),t&&G({min:t.p0,max:t.p2},o)?e={...o}:t&&I(o.lat)&&I(o.lng)?e=A(o,t):t||(e=o),e||null}export function findBooth(o){return c.boothStore.findBooth(o)||c.exhibitorStore.findExhibitor(o)?.booths[0]}export function findEntityByExternalId(o){const t=c.boothStore.boothByExternalId.get(o);if(t)return{type:"booth",entity:t};const e=c.exhibitorStore.exhibitorByExternalId.get(o);if(e)return{type:"exhibitor",entity:e}}export function separateExternalIds(o){const t=[],e=[];for(const r of o){const s=findEntityByExternalId(r);s&&(s.type==="booth"?t.push(r):e.push(r))}return{boothExternalIds:t,exhibitorExternalIds:e}}export function extractRoute(o,t,e){return new Route(findBooth(o)??null,findBooth(t)??null,e?.map(r=>findBooth(r)))}export class Route{constructor(t,e,r){this.from=t,this.to=e,this.waypoints=r;const s=t instanceof y?t.id:void 0,a=e instanceof y?e.id:void 0;this.waypoints=r?.filter(l=>l&&l.id!==s&&l.id!==a)}}function z(o){return o?o instanceof y?{id:o.id,name:o.name,externalId:o.externalId,layer:{name:o.layer?.name,description:o.layer?.description}}:{id:Number.MAX_SAFE_INTEGER,name:o.name,externalId:void 0,layer:{name:o.layer,description:void 0}}:null}export class CurrentPosition extends F{constructor(t,e,r,s,a,l){super(t,e),this.x=t,this.y=e,this.z=r,this.angle=s,this.lat=a,this.lng=l}}
1
+ import{__decorate as n}from"tslib";import{Box as k,boxContainsPoint as F,pointDistance as L}from"@expofp/geometry";import{action as f,computed as b,observable as u}from"mobx";import{getName as G}from"../components/Kiosk/SetKiosk";import{DEFAULT_UNITS as T,ORIENTATION_GRANTED_KEY as B}from"../constants";import E from"../data";import{fpGeo as P}from"../data/fpGeo";import{getLayerSvg as U,svgArea as h}from"../data/svg";import{GaEventActions as $,sendEventToGa as V}from"../tools/gtag";import w from"../tools/logger";import{areLayersEnabled as K}from"../utils/areLayersEnabled";import{calcSpeed as D}from"../utils/calcSpeed";import{calcTravelTime as A}from"../utils/calcTravelTime";import{calculateRelativeBearing as W,convertGpsToLocal as I,isValidPointCoords as g}from"../utils/gps";import{boothToEndpoint as C,buildRoute as Z,CURRENT_LOCATION_NAME as q,CURRENT_POSITION_POINT_ID as j,isWayfindingReady as X,KIOSK_ANCHOR_POINT_ID as Y,toArbitraryPoint as M}from"../wayfinding";import c,{layersStore as R,uiState as p}from".";import{BoothBase as y}from"./BoothStore";import{LayersMode as H}from"./LayerStore";import{revealLayer as N}from"./reveal-layer.js";function m(o){return typeof o=="string"?Number(o.replace(",",".")):o}export default class i{constructor(e){this.routeLines=[],this.routeDistance=null,this.currentPosition=null,this.requestCompass=!1,this.iconType=0,this.tempToBooth=null,this.focusEnabled=!0,this.prevZ=null,this.markersData={icons:[],markers:[]},this.prevMarkers=[],this.pendingReveal=null,this.showAccessible=!1,this.onlyAccessible=!1,this.currentRouteLayer=null,this.currentRouteExhibitor=null,this.routeUnits=T,this.isGpsTrackingEnabled=!0,this.rootStore=e,this.focusEnabled=!window.location.search}get canFindLocation(){return!!p.kioskData||!!this.currentPosition}selectRoute(e,t=!0,r=!1){if(t&&(p.list={type:"search",text:"",focused:!1}),e&&!e.from&&e.to){const s=this.resolveFallbackFrom();s&&(e=new Route(s,e.to,e.waypoints))}e?.from&&e?.to&&e.from===e.to&&(e=null);const l=[];e?.from&&e?.to&&window.setTimeout(()=>{this.rootStore.showMap()},navigator.userAgent.toLowerCase().indexOf("android")>-1?400:50),e?.from instanceof y&&e.from.visible&&l.push(e.from),e?.to instanceof y&&e.to.visible&&(this.tempToBooth=null,l.push(e.to)),!e&&c.fp.onDirection&&c.fp.onDirection(null);const a=()=>{if(this.rootStore.moveToList(l),p.details=e,e&&(!e.from||!e.to)&&c.showOverlay(),e?.to&&e?.from){const s=J(e.from);s&&this.rootStore.layerStore.updateVisibility(s,!0)}if(!this.currentRouteLayer){const s=O(this.rootStore.layerStore,e?.from),d=O(this.rootStore.layerStore,e?.to);s?this.currentRouteLayer=s:d&&(this.currentRouteLayer=d)}t&&e?.from&&e?.to&&V($.ClickDirections,`${e?.from?"From "+e.from.name:""} ${e?.to?"To "+e.to.name:""}`)};r?a():setTimeout(a,200)}rebuildRouteFromPosition(e){const t=p.selectedRoute;t?.to&&this.selectRoute(new Route(e,t.to,t.waypoints),!1,!0)}resolveFallbackFrom(){if(this.currentPosition)return M(this.currentPosition,q,j);const e=p.kioskData;return e?M({x:e.x,y:e.y,z:e.z??void 0},G(),Y):null}setStartPoint(e){const t=p.selectedRoute;if(t?.to&&!t?.from&&e){const r=new Route(e,t.to,t.waypoints);this.selectRoute(r)}}get pathLayers(){return c.routeStore.routeLines?.map(e=>e.p0.layer)?.filter((e,t,r)=>r.indexOf(e)===t).map((e,t)=>({id:t+1,layer:c.layerStore.findLayer(e)}))}getNearestBooth(e){if(!e)return null;const t=this.rootStore.layerStore.findLayer(e.z),r=P?.properties.config,l=!!(e.lat&&e.lng),a=r&&l?I(e,r):e;return!a||!g(a.x)||!g(a.y)?null:this.rootStore.boothStore.booths.filter(s=>R.mode===H.Default||!t?s.visible&&s.rect:s.rect&&(typeof e.z!="number"&&!e.z&&s.visible||t.name===s.layer?.name)).sort((s,d)=>L(a,s.rect.center)-L(a,d.rect.center))[0]||null}setMarkers(e){this.markersData.markers=(e?.markers??[]).map(Q),this.markersData.icons=e?.icons??[]}selectMarker(e,t){const r=this.markersData.markers.find(a=>a.id===e);this.markersData.markers.forEach(a=>a.active=!1),r&&(r.active=!0);const l=c.layerStore.findLayer(r?.z);if(t&&r){const a=c.rendererService.renderer;return l&&!l?.visible&&R.updateVisibility(l,!0),a?a.controls.panTo(r.x,r.y):(w.warn("Renderer is not initialized. Cannot pan to marker."),Promise.resolve())}return Promise.resolve()}get selectedMarkers(){return this.markersData.markers.filter(e=>e.active)}get layers(){const e=[];return c.routeStore.routeLines?.map(t=>t.p0.layer).forEach(t=>{e.indexOf(t)===-1&&e.push(t)}),e.map(t=>c.layerStore.layers.find(r=>r.name===t)).filter(t=>!!t)}clickRoute(e,t){window.__resett&&window.__resett(),this.rootStore.uiState.menu=!1,p.list.type==="route-planner"&&(p.list={type:"search",text:"",focused:!1}),this.selectRoute(new Route(e,t))}selectCurrentPosition(e,t=!0,r){clearTimeout(this.cpTimeout),e&&(e.x=m(e.x),e.y=m(e.y),e.lat!==void 0&&(e.lat=m(e.lat)),e.lng!==void 0&&(e.lng=m(e.lng)),K()||(e.z=void 0));const l=t&&this.rootStore.uiState.details&&!(this.rootStore.uiState.details instanceof Route),a=t&&!l&&(this.focusEnabled||this.prevZ!=e?.z);this.focusEnabled&&(this.focusEnabled=!1),this.prevZ=e?.z?.toString()??null,this.iconType=r?1:0;const s=e?ee(e):null;if(!e||!s){this.currentPosition=null;return}const d=c.layerStore.findLayer(e.z),x=new CurrentPosition(s.x,s.y,d?.name||this.currentRouteLayer?.name,W(s),e.lat,e.lng);let S=!this.routeLines?.length;d&&this.routeLines?.length&&(S=!!this.routeLines.find(v=>v.p0.layer===d.name||v.p1.layer===d.name));const _=a&&S;this.currentPosition=x,_&&this.focusOnPosition(x,d),this.gpsEnabled||(this.cpTimeout=setTimeout(()=>{this.currentPosition&&this.selectCurrentPosition(null,!1)},30*1e3))}findLocation(){if(!this.canFindLocation)return;const e=this.currentPosition??p.kioskData;e&&(this.currentPosition&&localStorage.getItem(B)==="false"&&(c.routeStore.requestCompass=!0),this.pendingReveal?.(),this.pendingReveal=N({layer:c.layerStore.findLayer(e.z),show:t=>R.updateVisibility(t,!0),then:()=>{if(c.maplibreStore.showMaplibre){p.moveToLocation=!0;return}p.moveToRect=this.findLocationRect(e)}}))}findLocationRect(e){const t=k.fromCenter(e,{x:100,y:100});if(t.intersects(h))return t;const r=Math.max(h.min.x,Math.min(e.x,h.max.x)),l=Math.max(h.min.y,Math.min(e.y,h.max.y)),a=Math.min(h.size.width,h.size.height)*.3,s=k.fromCenter({x:r,y:l},{x:a,y:a}).intersection(h);return s?k.fromUnion(t,s):t}focusOnPosition(e,t){this.pendingReveal?.(),this.pendingReveal=N({layer:t,show:r=>R.updateVisibility(r,!0),then:()=>{if(c.maplibreStore.showMaplibre){p.moveToLocation=!0;return}const r=c.rendererService.renderer;if(!r){w.warn("Renderer is not initialized. Cannot pan to current position.");return}r.controls.panTo(e.x,e.y)}})}get routeInfo(){const e=this.routeDistance,t=this.routeUnits;return e?{distance:`${e}${t}`,units:t,time:A(e,D(t))}:null}updateRoute(e,t){!e?.length&&!this.routeLines.length||(this.routeLines=e,this.updateRoutePoints())}updateRouteDistance(e){if(e==null)return;const t=U(),r=(t.getAttribute("units")||T).toLowerCase?.().trim(),l=t.getAttribute("fp-ver")?.startsWith("5")??!1;this.routeDistance=Math.round(e/(l?1:10)),this.routeUnits=r,this.updateRoutePoints()}updateRoutePoints(){const e=p.selectedRoute,t=this.routeDistance,r=this.routeUnits;c.fp.onDirection&&setTimeout(()=>{c.fp.onDirection({from:z(e?.from??null),to:z(e?.to??null),lines:this.routeLines,distance:t==null?"":`${t}${r}`,units:r,time:A(t??0,D(r))})},200)}checkRoutes(){if(!X()){console.warn("checkRoutes: wayfinding is not initialized \u2014 call createWayfinding() first. Skipping route check.");return}const e=c.boothStore.booths;console.info(`Route check started ${e.length}.... `);for(let t=0;t<e.length;t++){const r=e[t];for(let l=t+1;l<e.length;l++){const a=e[l];Z(C(r),C(a)).lines.length||console.warn(`No route found from ${r.name} to ${a.name}`)}}console.info("Route check done....")}setGpsTrackingEnabled(e){this.isGpsTrackingEnabled=e}get gpsEnabled(){return E.autoTrackingGps&&this.isGpsTrackingEnabled&&!E.enableIPS}setOnlyAccessible(e){this.onlyAccessible=e}}n([u],i.prototype,"routeLines",void 0),n([u],i.prototype,"routeDistance",void 0),n([u],i.prototype,"currentPosition",void 0),n([u],i.prototype,"requestCompass",void 0),n([u],i.prototype,"iconType",void 0),n([u],i.prototype,"tempToBooth",void 0),n([u],i.prototype,"focusEnabled",void 0),n([u],i.prototype,"prevZ",void 0),n([u],i.prototype,"markersData",void 0),n([u],i.prototype,"prevMarkers",void 0),n([u],i.prototype,"showAccessible",void 0),n([u],i.prototype,"onlyAccessible",void 0),n([u],i.prototype,"currentRouteLayer",void 0),n([u],i.prototype,"currentRouteExhibitor",void 0),n([b],i.prototype,"canFindLocation",null),n([f],i.prototype,"selectRoute",null),n([f],i.prototype,"rebuildRouteFromPosition",null),n([f],i.prototype,"setStartPoint",null),n([b({keepAlive:!0})],i.prototype,"pathLayers",null),n([f],i.prototype,"setMarkers",null),n([f],i.prototype,"selectMarker",null),n([b({keepAlive:!0})],i.prototype,"selectedMarkers",null),n([b({keepAlive:!0})],i.prototype,"layers",null),n([f],i.prototype,"clickRoute",null),n([f],i.prototype,"selectCurrentPosition",null),n([f],i.prototype,"findLocation",null),n([u],i.prototype,"routeUnits",void 0),n([b],i.prototype,"routeInfo",null),n([f],i.prototype,"updateRoute",null),n([f],i.prototype,"updateRouteDistance",null),n([f],i.prototype,"updateRoutePoints",null),n([f],i.prototype,"checkRoutes",null),n([u],i.prototype,"isGpsTrackingEnabled",void 0),n([f],i.prototype,"setGpsTrackingEnabled",null),n([b({keepAlive:!0})],i.prototype,"gpsEnabled",null),n([f],i.prototype,"setOnlyAccessible",null);function J(o){if(o)return o instanceof y?o.layer?.name:o.layer}function O(o,e){return e?e instanceof y?e.layer??null:o.findLayer(e.layer):null}function Q(o){return{...o,x:m(o.x),y:m(o.y),lat:o.lat===void 0?void 0:m(o.lat),lng:o.lng===void 0?void 0:m(o.lng)}}function ee(o){const e=P?.properties.config??null;let t=null;return e&&F({min:e.p0,max:e.p2},o)?t={...o}:e&&g(o.lat)&&g(o.lng)?t=I(o,e):e||(t=o),t||null}export function findBooth(o){return c.boothStore.findBooth(o)||c.exhibitorStore.findExhibitor(o)?.booths[0]}export function findEntityByExternalId(o){const e=c.boothStore.boothByExternalId.get(o);if(e)return{type:"booth",entity:e};const t=c.exhibitorStore.exhibitorByExternalId.get(o);if(t)return{type:"exhibitor",entity:t}}export function separateExternalIds(o){const e=[],t=[];for(const r of o){const l=findEntityByExternalId(r);l&&(l.type==="booth"?e.push(r):t.push(r))}return{boothExternalIds:e,exhibitorExternalIds:t}}export function extractRoute(o,e,t){return new Route(findBooth(o)??null,findBooth(e)??null,t?.map(r=>findBooth(r)).filter(r=>!!r))}export class Route{constructor(e,t,r){this.from=e,this.to=t,this.waypoints=r;const l=e instanceof y?e.id:void 0,a=t instanceof y?t.id:void 0;this.waypoints=r?.filter(s=>s&&s.id!==l&&s.id!==a)}}function z(o){return o?o instanceof y?{id:o.id,name:o.name,externalId:o.externalId,layer:{name:o.layer?.name,description:o.layer?.description}}:{id:Number.MAX_SAFE_INTEGER,name:o.name,externalId:void 0,layer:{name:o.layer,description:void 0}}:null}export class CurrentPosition{constructor(e,t,r,l,a,s){this.x=e,this.y=t,this.z=r,this.angle=l,this.lat=a,this.lng=s}}