@expofp/floorplan 3.9.0 → 3.10.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 (67) hide show
  1. package/dist/browser/{Button-D6kSs8oT.js → Button-CbNlJYq-.js} +5 -5
  2. package/dist/browser/{CookieConsent-COR-7PnR.js → CookieConsent-BVLqsKtm.js} +7 -7
  3. package/dist/browser/{Debug-hcVDK_6B.js → Debug-DniNgMUO.js} +7 -7
  4. package/dist/browser/{Demo-CXfqKcNa.js → Demo-BXOuVfdG.js} +9 -9
  5. package/dist/browser/{Free-UltUjcsW.js → Free-DbDrs1SH.js} +9 -9
  6. package/dist/browser/{Gallery-Dw_l4-HJ.js → Gallery-CK2yO-rS.js} +9 -9
  7. package/dist/browser/{GpsLoader-BeUr-tWe.js → GpsLoader-B5WB_xlb.js} +9 -9
  8. package/dist/browser/{KioskStore-rXGF6ISj.js → KioskStore-CzIrPa11.js} +3 -3
  9. package/dist/browser/{MaplibreAdapter-DBu4xFLx.js → MaplibreAdapter-CSa9XGJa.js} +921 -918
  10. package/dist/browser/{ModalContainer-CHubcxXg.js → ModalContainer-CduduGaw.js} +10 -10
  11. package/dist/browser/{PermissionNotice-Dcyf-h-X.js → PermissionNotice-B62dyKda.js} +6 -6
  12. package/dist/browser/{SetKioskMode-Dsaeb_7s.js → SetKioskMode-DvbL360U.js} +8 -8
  13. package/dist/browser/{ShowKiosk-B33TvvNh.js → ShowKiosk-CK47Q2V7.js} +10 -10
  14. package/dist/browser/{TouchHand-BglJHdqZ.js → TouchHand-BHu7qEu9.js} +4 -4
  15. package/dist/browser/{ViewerMenuPanel-6hwMrGsD.js → ViewerMenuPanel-TTUNLqUt.js} +9 -9
  16. package/dist/browser/{add-debug-secret-listener-CrjDiiDe.js → add-debug-secret-listener-DN1tIBbN.js} +1 -1
  17. package/dist/browser/{boolean-editor-B8TY5r_7.js → boolean-editor-CcJuEdkU.js} +9 -9
  18. package/dist/browser/{bootIntercom-BLVUFUo9.js → bootIntercom-DyEAiiah.js} +2 -2
  19. package/dist/browser/{browser-C0ZAqhfq.js → browser-Ctb0x-hW.js} +2 -2
  20. package/dist/browser/bundle.json +61 -61
  21. package/dist/browser/{classnames-CORO_J9N.js → classnames-CeriETl9.js} +2 -2
  22. package/dist/browser/{client-B8k3_zlK.js → client-hS_SUT9J.js} +4 -4
  23. package/dist/browser/{components-Br23UmiD.js → components-CcIkwnTn.js} +127 -126
  24. package/dist/browser/{createWayfinding-CywBuuhE.js → createWayfinding-D3oRCnRo.js} +6 -6
  25. package/dist/browser/{debug-overlay-OnJ9mpi3.js → debug-overlay-DBRVNju-.js} +10 -10
  26. package/dist/browser/{debug-ui-BGxXBqCM.js → debug-ui-Vy_hMYMs.js} +6 -6
  27. package/dist/browser/{dist-Bwo0bena.js → dist-Bimiy1i5.js} +5 -5
  28. package/dist/browser/{dist-DeenbCqa.js → dist-CyHdGr2I.js} +6 -6
  29. package/dist/browser/{dist-DJcDQ9wl.js → dist-D3O88lUU.js} +3 -3
  30. package/dist/browser/{efp-debug-init-D4xpSVxZ.js → efp-debug-init-C0HXaTIA.js} +2 -2
  31. package/dist/browser/{enum-editor-BtQ7q_B6.js → enum-editor-DkQTyshB.js} +11 -11
  32. package/dist/browser/{es5-DyYwMIHo.js → es5-BI29YLB7.js} +2 -2
  33. package/dist/browser/{event-not-found-DHZml9YG.js → event-not-found-C45GofSi.js} +1 -1
  34. package/dist/browser/{exports-BSvGPafo.js → exports-B2fVUjK8.js} +1 -1
  35. package/dist/browser/{favicon-7eGefoDS.js → favicon-CZB9txqZ.js} +1 -1
  36. package/dist/browser/{fetch-retry.umd-D4q_0lN2.js → fetch-retry.umd-C_1YSqZv.js} +2 -2
  37. package/dist/browser/{flex-BNMB3s0s.js → flex-C4nAB--c.js} +5 -5
  38. package/dist/browser/{floorplan.loader-C464BfTl.js → floorplan.loader-D9ci7TWk.js} +11 -11
  39. package/dist/browser/{floorplan.ready-F-rEW40x.js → floorplan.ready-Cou1AYpA.js} +12 -12
  40. package/dist/browser/{fuse-BOOzXNLy.js → fuse-DLH3KYAO.js} +2 -2
  41. package/dist/browser/{i18n-CJxFIIru.js → i18n-C0K3C5Jv.js} +4 -4
  42. package/dist/browser/index.js +12 -12
  43. package/dist/browser/{index.module-CkT4oOvs.js → index.module-BMETmKP4.js} +4 -4
  44. package/dist/browser/{is-webview-B86RAuQv.js → is-webview-CxvtAxIZ.js} +1 -1
  45. package/dist/browser/{jsx-runtime-3_7049j-.js → jsx-runtime-B9nB58Uq.js} +2 -2
  46. package/dist/browser/{lib-CjZn5G8Q.js → lib-CcxG8Udi.js} +4 -4
  47. package/dist/browser/{loadImage-CV72jhce.js → loadImage-B-fxupzg.js} +4 -4
  48. package/dist/browser/{logDeviceInfo-CH_mwixN.js → logDeviceInfo-kZTVPeyv.js} +9 -9
  49. package/dist/browser/{main-DBcClnTP.js → main-B_62LzEM.js} +1 -1
  50. package/dist/browser/{mobx-Cnc_mxKS.js → mobx-CUQ-tbco.js} +4 -4
  51. package/dist/browser/{particles.min-Bdddyoyn.js → particles.min-Csuxu9yr.js} +2 -2
  52. package/dist/browser/{prop-types-D9saedjy.js → prop-types-B7Gun2Sn.js} +2 -2
  53. package/dist/browser/{react-CtAjLpE4.js → react-ZKXuYPAa.js} +2 -2
  54. package/dist/browser/{react-dom-9Z9grXEI.js → react-dom-D82ielqJ.js} +3 -3
  55. package/dist/browser/{reset-all-settings-D2rGLtD9.js → reset-all-settings-BwbmLw6_.js} +7 -7
  56. package/dist/browser/{rolldown-runtime-6HCGHF5o.js → rolldown-runtime-75nnKCA3.js} +1 -1
  57. package/dist/browser/{settings-r2jCygEX.js → settings-CfbArDtc.js} +2 -2
  58. package/dist/browser/{settings-item-CmuDoi0N.js → settings-item-R9UibMb5.js} +6 -6
  59. package/dist/browser/{store-hsXE5nII.js → store-DANngpFy.js} +12 -12
  60. package/dist/browser/{string-editor-UncyEsWj.js → string-editor-CURRcjvv.js} +7 -7
  61. package/dist/browser/{theme-DmuulesT.js → theme-Nw3wi1eA.js} +8 -8
  62. package/dist/browser/{ui-CBeseOX-.js → ui-CzHA_XVw.js} +8 -8
  63. package/dist/browser/{useRenderTarget-C5lcypnV.js → useRenderTarget-KMx97ZHc.js} +4 -4
  64. package/dist/esm/components/Map/Map.js +1 -1
  65. package/dist/esm/components/Maplibre/MaplibreAdapter.js +1 -1
  66. package/dist/esm/data/Flags.d.ts +8 -0
  67. package/package.json +4 -4
@@ -1,16 +1,16 @@
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.9.0" };
4
+ e.SENTRY_RELEASE = { id: "3.10.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "9cdf6ee1-ca8c-43b1-b08c-7b3d7dde15e9", e._sentryDebugIdIdentifier = "sentry-dbid-9cdf6ee1-ca8c-43b1-b08c-7b3d7dde15e9");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-6HCGHF5o.js";
10
- import { t } from "./react-CtAjLpE4.js";
11
- import { t as n } from "./jsx-runtime-3_7049j-.js";
12
- import { c as r, l as i, t as a, u as o, y as s } from "./flex-BNMB3s0s.js";
13
- import { t as c } from "./classnames-CORO_J9N.js";
9
+ import { r as e } from "./rolldown-runtime-75nnKCA3.js";
10
+ import { t } from "./react-ZKXuYPAa.js";
11
+ import { t as n } from "./jsx-runtime-B9nB58Uq.js";
12
+ import { c as r, l as i, t as a, u as o, y as s } from "./flex-C4nAB--c.js";
13
+ import { t as c } from "./classnames-CeriETl9.js";
14
14
  //#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._925f851475345a9e5e368d312bb98178/node_modules/@radix-ui/themes/dist/esm/components/separator.props.js
15
15
  var l = /* @__PURE__ */ e(t()), u = /* @__PURE__ */ e(c()), d = {
16
16
  orientation: {
@@ -2,21 +2,21 @@ function __vite_inject_css__(css, id, forceLightDom){ if (typeof document==='un
2
2
  (function() {
3
3
  try {
4
4
  var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
5
- e.SENTRY_RELEASE = { id: "3.9.0" };
5
+ e.SENTRY_RELEASE = { id: "3.10.0" };
6
6
  var t = new e.Error().stack;
7
7
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "7ca500f2-ea63-4b2c-9fa8-624426543f42", e._sentryDebugIdIdentifier = "sentry-dbid-7ca500f2-ea63-4b2c-9fa8-624426543f42");
8
8
  } catch {}
9
9
  })();
10
- import { r as e, t } from "./rolldown-runtime-6HCGHF5o.js";
11
- import { t as n } from "./react-CtAjLpE4.js";
12
- import { i as r } from "./reset-all-settings-D2rGLtD9.js";
13
- import { t as i } from "./jsx-runtime-3_7049j-.js";
14
- import { _ as a, a as o, c as s, d as c, f as l, g as u, h as d, i as f, l as p, m, n as h, p as g, r as _, t as v, u as y } from "./loadImage-CV72jhce.js";
15
- import { t as b } from "./browser-C0ZAqhfq.js";
16
- import { B as x, C as S, G as C, H as w, L as T, M as E, Q as D, R as O, U as k, W as A, X as ee, Y as te, Z as ne, _ as j, a as re, at as ie, c as ae, d as M, et as oe, f as se, h as ce, it as le, j as ue, k as de, l as fe, lt as N, m as P, n as pe, o as me, ot as he, q as ge, r as _e, rt as ve, s as F, t as I, v as ye, y as be, z as xe } from "./i18n-CJxFIIru.js";
17
- import { t as L } from "./is-webview-B86RAuQv.js";
18
- import { t as Se } from "./classnames-CORO_J9N.js";
19
- import { t as Ce } from "./Button-D6kSs8oT.js";
10
+ import { r as e, t } from "./rolldown-runtime-75nnKCA3.js";
11
+ import { t as n } from "./react-ZKXuYPAa.js";
12
+ import { i as r } from "./reset-all-settings-BwbmLw6_.js";
13
+ import { t as i } from "./jsx-runtime-B9nB58Uq.js";
14
+ import { _ as a, a as o, c as s, d as c, f as l, g as u, h as d, i as f, l as p, m, n as h, p as g, r as _, t as v, u as y } from "./loadImage-B-fxupzg.js";
15
+ import { t as b } from "./browser-Ctb0x-hW.js";
16
+ import { B as x, C as S, G as C, H as w, L as T, M as E, Q as D, R as O, U as k, W as A, X as ee, Y as te, Z as ne, _ as j, a as re, at as ie, c as ae, d as M, et as oe, f as se, h as ce, it as le, j as ue, k as de, l as fe, lt as N, m as P, n as pe, o as me, ot as he, q as ge, r as _e, rt as ve, s as F, t as I, v as ye, y as be, z as xe } from "./i18n-C0K3C5Jv.js";
17
+ import { t as L } from "./is-webview-CxvtAxIZ.js";
18
+ import { t as Se } from "./classnames-CeriETl9.js";
19
+ import { t as Ce } from "./Button-CbNlJYq-.js";
20
20
  //#endregion
21
21
  //#region src/tools/settings.ts
22
22
  var we = /* @__PURE__ */ e((/* @__PURE__ */ t(((e, t) => {
@@ -35943,7 +35943,7 @@ var mz = (uz = class {
35943
35943
  }
35944
35944
  async buildEngine() {
35945
35945
  try {
35946
- let { default: e } = await import("./fuse-BOOzXNLy.js").then((e) => e.n);
35946
+ let { default: e } = await import("./fuse-DLH3KYAO.js").then((e) => e.n);
35947
35947
  be(() => {
35948
35948
  this.engine = new e([], {
35949
35949
  keys: this.keys,
@@ -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.9.0" };
4
+ e.SENTRY_RELEASE = { id: "3.10.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "888fc155-fb35-4159-9302-91880886e35d", e._sentryDebugIdIdentifier = "sentry-dbid-888fc155-fb35-4159-9302-91880886e35d");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-6HCGHF5o.js";
10
- import { t } from "./react-CtAjLpE4.js";
11
- import { t as n } from "./jsx-runtime-3_7049j-.js";
12
- import { D as r, i, l as a, n as o, s, u as c, y as l } from "./flex-BNMB3s0s.js";
13
- import { t as u } from "./classnames-CORO_J9N.js";
14
- import { t as d } from "./settings-item-CmuDoi0N.js";
9
+ import { r as e } from "./rolldown-runtime-75nnKCA3.js";
10
+ import { t } from "./react-ZKXuYPAa.js";
11
+ import { t as n } from "./jsx-runtime-B9nB58Uq.js";
12
+ import { D as r, i, l as a, n as o, s, u as c, y as l } from "./flex-C4nAB--c.js";
13
+ import { t as u } from "./classnames-CeriETl9.js";
14
+ import { t as d } from "./settings-item-R9UibMb5.js";
15
15
  //#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._925f851475345a9e5e368d312bb98178/node_modules/@radix-ui/themes/dist/esm/components/text-field.props.js
16
16
  var f = {
17
17
  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.9.0" };
4
+ e.SENTRY_RELEASE = { id: "3.10.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "b674b3f0-1e85-4d5b-b554-fb365f6d1945", e._sentryDebugIdIdentifier = "sentry-dbid-b674b3f0-1e85-4d5b-b554-fb365f6d1945");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-6HCGHF5o.js";
10
- import { t } from "./react-CtAjLpE4.js";
11
- import { t as n } from "./jsx-runtime-3_7049j-.js";
12
- import { t as r } from "./react-dom-9Z9grXEI.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-BNMB3s0s.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-DeenbCqa.js";
15
- import { t as y } from "./classnames-CORO_J9N.js";
9
+ import { r as e } from "./rolldown-runtime-75nnKCA3.js";
10
+ import { t } from "./react-ZKXuYPAa.js";
11
+ import { t as n } from "./jsx-runtime-B9nB58Uq.js";
12
+ import { t as r } from "./react-dom-D82ielqJ.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-C4nAB--c.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-CyHdGr2I.js";
15
+ import { t as y } from "./classnames-CeriETl9.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_070bcfa32421a5876e7dcb93369fcbee/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.9.0" };
4
+ e.SENTRY_RELEASE = { id: "3.10.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "43912113-9328-4069-8890-5091c8745c34", e._sentryDebugIdIdentifier = "sentry-dbid-43912113-9328-4069-8890-5091c8745c34");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-6HCGHF5o.js";
10
- import { a as t, r as n } from "./reset-all-settings-D2rGLtD9.js";
11
- import { t as r } from "./jsx-runtime-3_7049j-.js";
12
- import "./settings-r2jCygEX.js";
13
- import { t as i } from "./browser-C0ZAqhfq.js";
14
- import { t as a } from "./add-debug-secret-listener-CrjDiiDe.js";
9
+ import { r as e } from "./rolldown-runtime-75nnKCA3.js";
10
+ import { a as t, r as n } from "./reset-all-settings-BwbmLw6_.js";
11
+ import { t as r } from "./jsx-runtime-B9nB58Uq.js";
12
+ import "./settings-CfbArDtc.js";
13
+ import { t as i } from "./browser-Ctb0x-hW.js";
14
+ import { t as a } from "./add-debug-secret-listener-DN1tIBbN.js";
15
15
  //#region ../debug/src/lib/ui/render-debug-ui.tsx
16
16
  var o = /* @__PURE__ */ e(i(), 1), s = r(), c = !1;
17
17
  function l() {
@@ -26,7 +26,7 @@ function l() {
26
26
  }
27
27
  });
28
28
  let i = async (t) => {
29
- let { DebugUi: n } = await import("./debug-ui-BGxXBqCM.js"), { createRoot: i } = await import("./client-B8k3_zlK.js").then((t) => /* @__PURE__ */ e(t.default, 1)), a = document.createElement("div");
29
+ let { DebugUi: n } = await import("./debug-ui-Vy_hMYMs.js"), { createRoot: i } = await import("./client-hS_SUT9J.js").then((t) => /* @__PURE__ */ e(t.default, 1)), a = document.createElement("div");
30
30
  document.body.appendChild(a), i(a).render(/* @__PURE__ */ (0, s.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.9.0" };
4
+ e.SENTRY_RELEASE = { id: "3.10.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "d4febe97-784c-4cf8-93f1-f2e3b29f8347", e._sentryDebugIdIdentifier = "sentry-dbid-d4febe97-784c-4cf8-93f1-f2e3b29f8347");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-6HCGHF5o.js";
10
- import { t } from "./react-CtAjLpE4.js";
11
- import { s as n } from "./store-hsXE5nII.js";
9
+ import { r as e } from "./rolldown-runtime-75nnKCA3.js";
10
+ import { t } from "./react-ZKXuYPAa.js";
11
+ import { s as n } from "./store-DANngpFy.js";
12
12
  //#region src/utils/getRenderTargetFromRoot.ts
13
13
  var r = /* @__PURE__ */ e(t(), 1);
14
14
  function i(e) {
@@ -1 +1 @@
1
- import{jsx as C,jsxs as N,Fragment as ee}from"react/jsx-runtime";import{Box as k}from"@expofp/geometry";import oe from"classnames";import te from"color";import{observable as re,reaction as ne}from"mobx";import{useObserver as ie}from"mobx-react-lite";import{useEffect as ae,useMemo as se,useRef as S,useState as le}from"react";import{DEBUG_STORAGE_KEY as O}from"../../constants";import{fpGeo as me}from"../../data/fpGeo";import{svgArea as X}from"../../data/svg";import{boxToRenderer as L,createSceneDef as ce,mapRollSetting as U}from"../../renderer";import{pickDefaultScene as A,pickDefaultScenePoint as fe}from"../../renderer/engine-core/defs";import a,{boothStore as de,layersStore as h,uiState as o}from"../../store";import{BoothBase as j}from"../../store/BoothStore";import{Category as ue}from"../../store/CategoryStore";import{Exhibitor as Z}from"../../store/ExhibitorStore";import{LayerMode as x}from"../../store/LayerStore";import{CurrentPosition as pe,Route as he}from"../../store/RouteStore";import B from"../../tools/logger";import p from"../../tools/settings";import ve from"../../ui/Draggable";import{areLayersEnabled as ye}from"../../utils/areLayersEnabled";import{applyVenueDimValue as be,createDimmingAnimator as ge}from"../../utils/dimming";import{convertGpsToLocal as we}from"../../utils/gps";import y from"../../utils/is-debug";import{isPathwayLayer as $}from"../../utils/is-pathway-layer";import{useReaction as d}from"../../utils/mobx";import{createWayfinding as Se}from"../../wayfinding/createWayfinding";import K from"./booth-by-xy";import xe from"./drawing/config/config-all";import{configMarkers as Re,getMarkerFromClick as Te}from"./drawing/config/config-markers";import{loadLayersImages as Ce}from"./drawing/config/loadBoothsImages";import{useBuildRoute as ke}from"./traffic/useBuildRoute";import{useManageTraffic as Le}from"./traffic/useManageTraffic";const V=Number.isFinite(p.maxZoom);export default function Be(){let M={};const W="#ebebeb",v=S(),b=se(()=>re({moving:!1,prevLevel:a.layerStore.layers.find(e=>!e.frozen&&e.visible)}),[]),l=a.rendererService,R=S(ge(e=>be(l,e)));let s;const g=S(null),E=S(null);let P=null,z=null,I=!1;function _(){h.layers.forEach(e=>{e.configured=!1,e.children=[],e.loaded=!1})}const[H,q]=le(()=>typeof window<"u"&&window.localStorage?localStorage.getItem(O)!=="false":!0);d(()=>a.routeStore.currentRouteLayer,()=>{if(!l.scene||b.prevLevel===a.routeStore.currentRouteLayer)return;const e=l.scene.rootLayer.children.filter(t=>a.layerStore.floors.some(n=>t.name.includes(n.name)));let r=a.routeStore.currentRouteLayer.name;if(!e.find(t=>t.name===r))return;const i=e?.map(t=>(t.name===r&&(t.hidden=!1),t.name===b.prevLevel?.name&&(t.hidden=!0),t));b.prevLevel=a.routeStore.currentRouteLayer,l.update(...i)}),d(()=>o.centerMap,()=>{!o.centerMap||a.maplibreStore.showMaplibre||(s.controls.resetCamera({zoom:!!(o.list.type==="search"&&o.list.text)}),o.centerMap=!1)}),ae(()=>{if(!v.current)return;async function e(){_(),h.layersLoaded=!1;let r={};try{if(y){const t=document.createElement("canvas").getContext("webgl2"),n=t&&t.getExtension("EXT_disjoint_timer_query_webgl2"),m=(await import("stats-gl")).default,f=new m({trackGPU:n,horizontal:!0}),u=E.current;if(!u)throw new Error("memoryInfoPanel not found.");f.dom.style.position="relative",u.style.width=`${90*(n?3:2)}px`,u.style.height="48px",u.appendChild(f.dom),r={stats:f,memoryInfoPanel:u}}}catch(i){console.error(i)}s=l.create({canvas:v.current,ui:r}),g.current=s,ne(()=>o.canvasVisibleRectPx,(i,t)=>{i&&(s.visibleRect=L(i)),t.dispose()},{fireImmediately:!0}),xe(l).then(i=>{if(I||g.current!==s)return;y&&console.log("Renderer settings",s);const t=te(p.backgroundColor==="none"?W:p.backgroundColor).string();M=ce(i,X,t),l.start(M),R.current.setTarget(o.dimmed,{immediate:!0}),U(s,a.fp.enableRotation?1:0),V&&s.viewport.setMaxZoom(p.maxZoom),h.layersLoaded=!0,a.fp.onFpConfigured&&a.fp?.onFpConfigured(),P=Se(l),z=Re(l),Ce(l)}),s.events.addEventListener("pointer:move",({data:i})=>{if(o.setKioskModeEnabled)return;const{point:t,defs:n}=A(i),c=K(t.x,t.y),m=D(n[0]);o.hoveredBooth=c||m}),s.events.addEventListener("pointer:out",()=>{o.setKioskModeEnabled||(o.hoveredBooth=null)}),s.events.addEventListener("pointer:click",({data:i})=>{if(!o?.rootElement)return;window.__resett&&window.__resett(),o.overlayPosition==="bottom"&&o.overlaySize==="full"&&a.showMap();const{point:t,defs:n}=A(i),{x:c,y:m}=t;if(o.onGetCoordsClick){const w=a.layerStore.layers.find(T=>T.visible&&(T.mode===x.TurnedOn||T.mode===x.TurnedOff));o.onGetCoordsClick({x:c,y:m,z:w?.name||null})}if(o.setKioskModeEnabled)return;if(o.onMarkerClick){const w=Te(c,m,l.scale);y&&console.log("marker",w),o.onMarkerClick(w)}const f=K(t.x,t.y),u=D(n[0]);y&&console.log("boothIdFromClientXy",f,"boothByShape",u,"pointer:click point",t),a.clickBooth(f||u)}),s.events.addEventListener("navigation:change",()=>window.__resett&&window.__resett())}return e(),a.fp.getCenterCoordinates=Q,()=>J()},[]);function J(){I=!0,R.current.stop(),P?.(),z?.(),_(),h.layersLoaded=!1,l.disposeIfCurrent(g.current),g.current=null}function Q(){const e=v.current;if(!v.current)throw new Error("Canvas not ready");const r=fe(s.viewport.canvasToSvg({x:e.clientWidth/2,y:e.clientHeight/2})),t=a.layerStore.visible.find(n=>n.mode===x.TurnedOff||n.mode===x.TurnedOn)?.name||null;return{...r,z:t}}function D(e){return!e||!e.shape?null:de.booths.find(r=>r.shapes?.find(i=>i.shape==e.shape))}d(()=>o.zoomBy,()=>{if(!o.zoomBy||a.maplibreStore.showMaplibre)return;const e=o.zoomBy;s.controls.zoomBy(e),o.zoomBy=null}),d(()=>o.dimmed,e=>{R.current.setTarget(e)}),d(()=>o.details,()=>{if(!o.onDetails)return;if(!o.details){o.onDetails(null);return}var e=o.details;if(p.EXPO==="wineparis"&&(e instanceof Z&&(e=e.booths[0]),!e))return;let r=null,i=[];e instanceof Z?(r="exhibitor",i=e.booths.map(n=>n.name).sort((n,c)=>n==a.routeStore.tempToBooth?.name?-1:c==a.routeStore.tempToBooth?.name?1:0)):e instanceof j?(r="booth",i=[e.name]):e instanceof he?(r="route",i=[e.from?.name,e.to?.name].filter(n=>!!n)):e instanceof ue&&(r="category",i=e.exhibitors.map(n=>n.booths.map(c=>c.name)).flat());var t={type:r,name:e?.name,id:e?.id,externalId:e?.externalId,boothsNames:i};o.onDetails({...t,...r==="route"?{routeInfo:a.routeStore.routeInfo}:{}})}),d(()=>o.canvasVisibleRectPx,e=>{l.renderer&&(l.renderer.visibleRect=L(e))},{fireImmediately:!0}),d(()=>o.moveToRect,()=>{!o.moveToRect||a.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&&G(o.moveToRect),o.moveToRect=null)}),d(()=>o.rollReset,e=>{e&&(s.controls.resetCamera({roll:!0}),o.rollReset=!1)}),d(()=>o.moveToBooths,()=>{if(B.log("this.moveToBooths",o.moveToBooths),!o.moveToBooths||a.maplibreStore.showMaplibre)return;B.log("watched moveToBooths",o.moveToBooths);const e=o.moveToBooths.filter(r=>r.rect).map(r=>r.rect);e.length!==0&&(G(k.fromUnion(...e)),o.moveToBooths=null)}),d(()=>o.mapSettings,({zoomtime:e,center:r,centerxy:i,bearing:t,roll:n,z:c})=>{if(!(a.maplibreStore.showMaplibre||!l.renderer))try{e&&e!==o.defaultMapSettings.zoomtime&&l.renderer.controls.configure({zoomTime:e/1e3}),a.fp.enableRotation&&U(s,n);let m;if(r){const f=r.split(",").map(Number),u=new pe(void 0,void 0,void 0,void 0,f[0],f[1]);m=we(u,me.properties.config)}else if(i){const f=i.split(",").map(Number);m={x:f[0],y:f[1]}}c&&a.fp.activateFloor({name:c}),(m?.x||m?.y)&&l.renderer.controls.panTo(m.x,m.y),Number.isFinite(t)&&l.renderer.controls.rollTo(t)}catch(m){B.error("Error in mapSettings reaction",m)}}),ke({enabled:h.layersLoaded&&o.buildRoute,rendererService:l});const F="routes-api.expofp.com";Le({permission:h.layersLoaded,rendererService:l,dataJsonUrl:`https://${F}/v1/routes?expo=${p.EXPO}`,websocketUrl:`wss://${F}/locations?expo=${p.EXPO}`}),d(()=>a.layerStore.visible,e=>{if(!l.scene)return;const r=e.filter(n=>$(n.name)),t=l.scene.rootLayer.children.filter(n=>$(n.name));t.forEach(n=>{n.hidden=!r.find(c=>c.name===n.name)}),l.update(...t)});function G(e){let r=e;const i=Y(e,X),t=o.selectedRoute?.from,n=t instanceof j?t.layer?.name:t?.layer;o.kioskData&&(!ye()||n===a.routeStore.currentRouteLayer?.name)&&(r=k.fromUnion(e,new k(o.kioskData.x,o.kioskData.y,1,1)));const c=L(r),m={paddingPercent:i,maxZoom:V?void 0:10};if(o.shouldShiftMapRect){s.visibleRect.min={...s.visibleRect.min,x:s.visibleRect.min.x+o.overlayWidthPx},s.visibleRect=s.visibleRect;try{s.controls.zoomTo(c,m)}finally{s.visibleRect.min={...s.visibleRect.min,x:s.visibleRect.min.x-o.overlayWidthPx}}}else s.controls.zoomTo(c,m)}function Y(e,r){return!e||!r?0:(e.area/r.area>.1?15:25)/100}return ie(()=>N(ee,{children:[C("canvas",{style:{width:"100%",height:"100%"},ref:v,className:oe({map:!0,moving:b.moving,hidden:a.maplibreStore.showMaplibre}),children:"ExpoFP.com"}),y&&H&&N(ve,{className:"debug-fps",children:[C("div",{ref:E}),C("button",{onClick:()=>{typeof window<"u"&&window.localStorage&&localStorage.setItem(O,"false"),q(!1)},style:{padding:"4px 8px",fontSize:"11px",cursor:"pointer",backgroundColor:"#333",color:"#fff",border:"1px solid #555",width:"100%"},children:"Hide debug"})]})]}))}
1
+ import{jsx as C,jsxs as N,Fragment as oe}from"react/jsx-runtime";import{Box as k}from"@expofp/geometry";import te from"classnames";import re from"color";import{observable as ne,reaction as ie}from"mobx";import{useObserver as ae}from"mobx-react-lite";import{useEffect as se,useMemo as le,useRef as S,useState as me}from"react";import{DEBUG_STORAGE_KEY as O}from"../../constants";import ce from"../../data";import{fpGeo as fe}from"../../data/fpGeo";import{svgArea as X}from"../../data/svg";import{boxToRenderer as L,createSceneDef as de,mapRollSetting as U}from"../../renderer";import{pickDefaultScene as A,pickDefaultScenePoint as ue}from"../../renderer/engine-core/defs";import a,{boothStore as pe,layersStore as h,uiState as o}from"../../store";import{BoothBase as j}from"../../store/BoothStore";import{Category as he}from"../../store/CategoryStore";import{Exhibitor as Z}from"../../store/ExhibitorStore";import{LayerMode as R}from"../../store/LayerStore";import{CurrentPosition as ve,Route as ye}from"../../store/RouteStore";import B from"../../tools/logger";import p from"../../tools/settings";import be from"../../ui/Draggable";import{areLayersEnabled as ge}from"../../utils/areLayersEnabled";import{applyVenueDimValue as we,createDimmingAnimator as Se}from"../../utils/dimming";import{convertGpsToLocal as Re}from"../../utils/gps";import y from"../../utils/is-debug";import{isPathwayLayer as $}from"../../utils/is-pathway-layer";import{useReaction as d}from"../../utils/mobx";import{createWayfinding as xe}from"../../wayfinding/createWayfinding";import K from"./booth-by-xy";import Te from"./drawing/config/config-all";import{configMarkers as Ce,getMarkerFromClick as ke}from"./drawing/config/config-markers";import{loadLayersImages as Le}from"./drawing/config/loadBoothsImages";import{useBuildRoute as Be}from"./traffic/useBuildRoute";import{useManageTraffic as Ee}from"./traffic/useManageTraffic";const V=Number.isFinite(p.maxZoom);export default function Me(){let E={};const W="#ebebeb",v=S(),b=le(()=>ne({moving:!1,prevLevel:a.layerStore.layers.find(e=>!e.frozen&&e.visible)}),[]),l=a.rendererService,x=S(Se(e=>we(l,e)));let s;const g=S(null),M=S(null);let P=null,z=null,I=!1;function _(){h.layers.forEach(e=>{e.configured=!1,e.children=[],e.loaded=!1})}const[H,q]=me(()=>typeof window<"u"&&window.localStorage?localStorage.getItem(O)!=="false":!0);d(()=>a.routeStore.currentRouteLayer,()=>{if(!l.scene||b.prevLevel===a.routeStore.currentRouteLayer)return;const e=l.scene.rootLayer.children.filter(t=>a.layerStore.floors.some(n=>t.name.includes(n.name)));let r=a.routeStore.currentRouteLayer.name;if(!e.find(t=>t.name===r))return;const i=e?.map(t=>(t.name===r&&(t.hidden=!1),t.name===b.prevLevel?.name&&(t.hidden=!0),t));b.prevLevel=a.routeStore.currentRouteLayer,l.update(...i)}),d(()=>o.centerMap,()=>{!o.centerMap||a.maplibreStore.showMaplibre||(s.controls.resetCamera({zoom:!!(o.list.type==="search"&&o.list.text)}),o.centerMap=!1)}),se(()=>{if(!v.current)return;async function e(){_(),h.layersLoaded=!1;let r={};try{if(y){const t=document.createElement("canvas").getContext("webgl2"),n=t&&t.getExtension("EXT_disjoint_timer_query_webgl2"),m=(await import("stats-gl")).default,f=new m({trackGPU:n,horizontal:!0}),u=M.current;if(!u)throw new Error("memoryInfoPanel not found.");f.dom.style.position="relative",u.style.width=`${90*(n?3:2)}px`,u.style.height="48px",u.appendChild(f.dom),r={stats:f,memoryInfoPanel:u}}}catch(i){console.error(i)}s=l.create({canvas:v.current,ui:r}),g.current=s,ie(()=>o.canvasVisibleRectPx,(i,t)=>{i&&(s.visibleRect=L(i)),t.dispose()},{fireImmediately:!0}),Te(l).then(i=>{if(I||g.current!==s)return;y&&console.log("Renderer settings",s);const t=re(p.backgroundColor==="none"?W:p.backgroundColor).string();E=de(i,X,t),l.start(E),x.current.setTarget(o.dimmed,{immediate:!0}),U(s,a.fp.enableRotation?1:0),V&&s.viewport.setMaxZoom(p.maxZoom),h.layersLoaded=!0,a.fp.onFpConfigured&&a.fp?.onFpConfigured(),P=xe(l),z=Ce(l),Le(l)}),s.events.addEventListener("pointer:move",({data:i})=>{if(o.setKioskModeEnabled)return;const{point:t,defs:n}=A(i),c=K(t.x,t.y),m=D(n[0]);o.hoveredBooth=c||m}),s.events.addEventListener("pointer:out",()=>{o.setKioskModeEnabled||(o.hoveredBooth=null)}),s.events.addEventListener("pointer:click",({data:i})=>{if(!o?.rootElement)return;window.__resett&&window.__resett(),o.overlayPosition==="bottom"&&o.overlaySize==="full"&&a.showMap();const{point:t,defs:n}=A(i),{x:c,y:m}=t;if(o.onGetCoordsClick){const w=a.layerStore.layers.find(T=>T.visible&&(T.mode===R.TurnedOn||T.mode===R.TurnedOff));o.onGetCoordsClick({x:c,y:m,z:w?.name||null})}if(o.setKioskModeEnabled)return;if(o.onMarkerClick){const w=ke(c,m,l.scale);y&&console.log("marker",w),o.onMarkerClick(w)}const f=K(t.x,t.y),u=D(n[0]);y&&console.log("boothIdFromClientXy",f,"boothByShape",u,"pointer:click point",t),a.clickBooth(f||u)}),s.events.addEventListener("navigation:change",()=>window.__resett&&window.__resett())}return e(),a.fp.getCenterCoordinates=Q,()=>J()},[]);function J(){I=!0,x.current.stop(),P?.(),z?.(),_(),h.layersLoaded=!1,l.disposeIfCurrent(g.current),g.current=null}function Q(){const e=v.current;if(!v.current)throw new Error("Canvas not ready");const r=ue(s.viewport.canvasToSvg({x:e.clientWidth/2,y:e.clientHeight/2})),t=a.layerStore.visible.find(n=>n.mode===R.TurnedOff||n.mode===R.TurnedOn)?.name||null;return{...r,z:t}}function D(e){return!e||!e.shape?null:pe.booths.find(r=>r.shapes?.find(i=>i.shape==e.shape))}d(()=>o.zoomBy,()=>{if(!o.zoomBy||a.maplibreStore.showMaplibre)return;const e=o.zoomBy;s.controls.zoomBy(e),o.zoomBy=null}),d(()=>o.dimmed,e=>{x.current.setTarget(e)}),d(()=>o.details,()=>{if(!o.onDetails)return;if(!o.details){o.onDetails(null);return}var e=o.details;if(p.EXPO==="wineparis"&&(e instanceof Z&&(e=e.booths[0]),!e))return;let r=null,i=[];e instanceof Z?(r="exhibitor",i=e.booths.map(n=>n.name).sort((n,c)=>n==a.routeStore.tempToBooth?.name?-1:c==a.routeStore.tempToBooth?.name?1:0)):e instanceof j?(r="booth",i=[e.name]):e instanceof ye?(r="route",i=[e.from?.name,e.to?.name].filter(n=>!!n)):e instanceof he&&(r="category",i=e.exhibitors.map(n=>n.booths.map(c=>c.name)).flat());var t={type:r,name:e?.name,id:e?.id,externalId:e?.externalId,boothsNames:i};o.onDetails({...t,...r==="route"?{routeInfo:a.routeStore.routeInfo}:{}})}),d(()=>o.canvasVisibleRectPx,e=>{l.renderer&&(l.renderer.visibleRect=L(e))},{fireImmediately:!0}),d(()=>o.moveToRect,()=>{!o.moveToRect||a.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&&G(o.moveToRect),o.moveToRect=null)}),d(()=>o.rollReset,e=>{e&&(s.controls.resetCamera({roll:!0}),o.rollReset=!1)}),d(()=>o.moveToBooths,()=>{if(B.log("this.moveToBooths",o.moveToBooths),!o.moveToBooths||a.maplibreStore.showMaplibre)return;B.log("watched moveToBooths",o.moveToBooths);const e=o.moveToBooths.filter(r=>r.rect).map(r=>r.rect);e.length!==0&&(G(k.fromUnion(...e)),o.moveToBooths=null)}),d(()=>o.mapSettings,({zoomtime:e,center:r,centerxy:i,bearing:t,roll:n,z:c})=>{if(!(a.maplibreStore.showMaplibre||!l.renderer))try{e&&e!==o.defaultMapSettings.zoomtime&&l.renderer.controls.configure({zoomTime:e/1e3}),a.fp.enableRotation&&U(s,n);let m;if(r){const f=r.split(",").map(Number),u=new ve(void 0,void 0,void 0,void 0,f[0],f[1]);m=Re(u,fe.properties.config)}else if(i){const f=i.split(",").map(Number);m={x:f[0],y:f[1]}}c&&a.fp.activateFloor({name:c}),(m?.x||m?.y)&&l.renderer.controls.panTo(m.x,m.y),Number.isFinite(t)&&l.renderer.controls.rollTo(t)}catch(m){B.error("Error in mapSettings reaction",m)}}),Be({enabled:h.layersLoaded&&o.buildRoute,rendererService:l});const F="routes-api.expofp.com",Y=ce.flags?.busRoutes??!1;Ee({permission:h.layersLoaded&&Y,rendererService:l,dataJsonUrl:`https://${F}/v1/routes?expo=${p.EXPO}`,websocketUrl:`wss://${F}/locations?expo=${p.EXPO}`}),d(()=>a.layerStore.visible,e=>{if(!l.scene)return;const r=e.filter(n=>$(n.name)),t=l.scene.rootLayer.children.filter(n=>$(n.name));t.forEach(n=>{n.hidden=!r.find(c=>c.name===n.name)}),l.update(...t)});function G(e){let r=e;const i=ee(e,X),t=o.selectedRoute?.from,n=t instanceof j?t.layer?.name:t?.layer;o.kioskData&&(!ge()||n===a.routeStore.currentRouteLayer?.name)&&(r=k.fromUnion(e,new k(o.kioskData.x,o.kioskData.y,1,1)));const c=L(r),m={paddingPercent:i,maxZoom:V?void 0:10};if(o.shouldShiftMapRect){s.visibleRect.min={...s.visibleRect.min,x:s.visibleRect.min.x+o.overlayWidthPx},s.visibleRect=s.visibleRect;try{s.controls.zoomTo(c,m)}finally{s.visibleRect.min={...s.visibleRect.min,x:s.visibleRect.min.x-o.overlayWidthPx}}}else s.controls.zoomTo(c,m)}function ee(e,r){return!e||!r?0:(e.area/r.area>.1?15:25)/100}return ae(()=>N(oe,{children:[C("canvas",{style:{width:"100%",height:"100%"},ref:v,className:te({map:!0,moving:b.moving,hidden:a.maplibreStore.showMaplibre}),children:"ExpoFP.com"}),y&&H&&N(be,{className:"debug-fps",children:[C("div",{ref:M}),C("button",{onClick:()=>{typeof window<"u"&&window.localStorage&&localStorage.setItem(O,"false"),q(!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{jsx as V}from"react/jsx-runtime";import{degToRad as P}from"@expofp/geometry";import J from"color";import{runInAction as W}from"mobx";import{observer as X}from"mobx-react-lite";import{useCallback as E,useEffect as _,useMemo as d,useRef as p,useState as k}from"react";import{getLayerSvg as H,svgArea as x}from"../../data/svg";import{createSceneDef as K}from"../../renderer";import a,{uiState as g}from"../../store";import M from"../../tools/settings";import Z from"../Map/drawing/config/config-all";import{loadLayersImages as Q}from"../Map/drawing/config/loadBoothsImages";import{useBuildRoute as Y}from"../Map/traffic/useBuildRoute";import{useManageTraffic as q}from"../Map/traffic/useManageTraffic";import ee from"./MaplibreWrapper";import{useCameraReactions as re}from"./useCameraReactions";import{useDimming as oe}from"./useDimming";import{useLayerVisibilitySync as te}from"./useLayerVisibilitySync";import{useRendererEvents as ne}from"./useRendererEvents";import{useWayfindingAndMarkers as ae}from"./useWayfindingAndMarkers";import{deriveGeoConfig as ie,deriveVenueMapBounds as se,getLocalRectGeoBounds as le,getVisibleRectFitPadding as ce,INITIAL_FIT_ZOOM_ADJUSTMENT as fe}from"./utils/geo-config";import{applyMapOptions as I,DEFAULT_MAP_OPTIONS as ue,getTileSource as me,MAP_2D_OPTIONS as de}from"./utils/map-helpers";import{calculateTransformMatrix as pe}from"./utils/solver";const $="routes-api.expofp.com";function B(){W(()=>{a.layerStore.layers.forEach(i=>{i.configured=!1,i.children=[],i.loaded=!1}),a.layerStore.layersLoaded=!1})}function F(i,y){const s=[];for(const c of i.rollRegistry.invoke(y))Array.isArray(c)?s.push(...c):s.push(c);s.length&&i.update(...s)}const ge=X(function({viewMode:y}){const[s,c]=k(null),[T,h]=k(null),e=a.rendererService,D=p(null),l=p(null),R=p(null),L=p(null),r=d(()=>ie(),[]),f=d(()=>r?{center:r.center,bearing:r.bearing,zoom:r.zoom,bounds:le(x,r.gpsConfig),fitPadding:ce(0),zoomAdjustment:fe}:null,[r]),v=d(()=>r?pe(r.gpsConfig,H()?.getAttribute("units")):null,[r]),u=d(()=>({...y==="map2d"?de:ue,maxBounds:r?se(r.gpsConfig):void 0}),[r,y]),O=p(u),j=d(()=>me(),[]),{mapDimAnimatorRef:b,venueDimAnimatorRef:S,handleMapDimLayerReady:z}=oe(l,e);_(()=>{if(!r)return;let n=!1;B();const o=Z(e).then(t=>{if(n)return;const A=J(M.backgroundColor==="none"?"#ebebeb":M.backgroundColor).string(),G=K(t,x,A);c(G)}).catch(t=>{n||console.warn("Maplibre scene configuration failed.",t)}),C=b.current,m=S.current;return()=>{n=!0,B();const t=D.current;o.finally(()=>e.disposeIfCurrent(t)),R.current?.(),R.current=null,D.current=null,l.current=null,L.current=null,h(null),C?.stop(),m?.stop(),g.sceneDefReady=!1}},[r,b,e,S]);const N=E((n,o,C,m)=>{D.current=n,l.current=o,L.current=m,h(n),e.attach(n,C,m),I(o,O.current),b.current?.setTarget(g.dimmed,{immediate:!0}),S.current?.setTarget(g.dimmed,{immediate:!0}),R.current?.();const t=()=>F(e,P(o.getBearing()));o.on("rotate",t),o.on("rotateend",t),R.current=()=>{o.off("rotate",t),o.off("rotateend",t)},Q(e);const A=e.ptScaleRegistry.invoke(e.scale||1);A.length&&e.update(...A),F(e,P(o.getBearing())),a.layerStore.layersLoaded=!0,a.fp.onFpConfigured&&a.fp.onFpConfigured(),g.sceneDefReady=!0,m()},[e,b,S]);_(()=>{O.current=u,I(l.current,u,!0)},[u]),ne(T,e),ae(T,e),te(e,l,r),re(l,r),Y({enabled:a.layerStore.layersLoaded&&g.buildRoute,rendererService:e}),q({permission:a.layerStore.layersLoaded,rendererService:e,dataJsonUrl:`https://${$}/v1/routes?expo=${M.EXPO}`,websocketUrl:`wss://${$}/locations?expo=${M.EXPO}`});const U=E(n=>{console.warn("Maplibre map failed to load; falling back to floorplan mode.",n),a.maplibreStore.deactivateMaplibre()},[]);if(!r||!f||!v||!s)return null;const w=`${f.center.join(",")}:${f.bearing}:${f.zoom}`;return V(ee,{sceneDef:s,geoConfig:f,staticTransform:v,tileSource:j,mapOptions:u,onRendererReady:N,onMapDimLayerReady:z,onMapLoadError:U},w)});export default ge;
1
+ import{jsx as J}from"react/jsx-runtime";import{degToRad as E}from"@expofp/geometry";import W from"color";import{runInAction as X}from"mobx";import{observer as H}from"mobx-react-lite";import{useCallback as P,useEffect as _,useMemo as d,useRef as p,useState as k}from"react";import K from"../../data";import{getLayerSvg as Z,svgArea as x}from"../../data/svg";import{createSceneDef as Q}from"../../renderer";import a,{uiState as g}from"../../store";import M from"../../tools/settings";import Y from"../Map/drawing/config/config-all";import{loadLayersImages as q}from"../Map/drawing/config/loadBoothsImages";import{useBuildRoute as ee}from"../Map/traffic/useBuildRoute";import{useManageTraffic as re}from"../Map/traffic/useManageTraffic";import oe from"./MaplibreWrapper";import{useCameraReactions as te}from"./useCameraReactions";import{useDimming as ne}from"./useDimming";import{useLayerVisibilitySync as ae}from"./useLayerVisibilitySync";import{useRendererEvents as ie}from"./useRendererEvents";import{useWayfindingAndMarkers as se}from"./useWayfindingAndMarkers";import{deriveGeoConfig as le,deriveVenueMapBounds as ce,getLocalRectGeoBounds as ue,getVisibleRectFitPadding as fe,INITIAL_FIT_ZOOM_ADJUSTMENT as me}from"./utils/geo-config";import{applyMapOptions as I,DEFAULT_MAP_OPTIONS as de,getTileSource as pe,MAP_2D_OPTIONS as ge}from"./utils/map-helpers";import{calculateTransformMatrix as ye}from"./utils/solver";const $="routes-api.expofp.com";function B(){X(()=>{a.layerStore.layers.forEach(i=>{i.configured=!1,i.children=[],i.loaded=!1}),a.layerStore.layersLoaded=!1})}function F(i,y){const s=[];for(const c of i.rollRegistry.invoke(y))Array.isArray(c)?s.push(...c):s.push(c);s.length&&i.update(...s)}const Re=H(function({viewMode:y}){const[s,c]=k(null),[T,h]=k(null),e=a.rendererService,D=p(null),l=p(null),R=p(null),L=p(null),r=d(()=>le(),[]),u=d(()=>r?{center:r.center,bearing:r.bearing,zoom:r.zoom,bounds:ue(x,r.gpsConfig),fitPadding:fe(0),zoomAdjustment:me}:null,[r]),v=d(()=>r?ye(r.gpsConfig,Z()?.getAttribute("units")):null,[r]),f=d(()=>({...y==="map2d"?ge:de,maxBounds:r?ce(r.gpsConfig):void 0}),[r,y]),O=p(f),j=d(()=>pe(),[]),{mapDimAnimatorRef:b,venueDimAnimatorRef:S,handleMapDimLayerReady:z}=ne(l,e);_(()=>{if(!r)return;let n=!1;B();const o=Y(e).then(t=>{if(n)return;const A=W(M.backgroundColor==="none"?"#ebebeb":M.backgroundColor).string(),V=Q(t,x,A);c(V)}).catch(t=>{n||console.warn("Maplibre scene configuration failed.",t)}),C=b.current,m=S.current;return()=>{n=!0,B();const t=D.current;o.finally(()=>e.disposeIfCurrent(t)),R.current?.(),R.current=null,D.current=null,l.current=null,L.current=null,h(null),C?.stop(),m?.stop(),g.sceneDefReady=!1}},[r,b,e,S]);const N=P((n,o,C,m)=>{D.current=n,l.current=o,L.current=m,h(n),e.attach(n,C,m),I(o,O.current),b.current?.setTarget(g.dimmed,{immediate:!0}),S.current?.setTarget(g.dimmed,{immediate:!0}),R.current?.();const t=()=>F(e,E(o.getBearing()));o.on("rotate",t),o.on("rotateend",t),R.current=()=>{o.off("rotate",t),o.off("rotateend",t)},q(e);const A=e.ptScaleRegistry.invoke(e.scale||1);A.length&&e.update(...A),F(e,E(o.getBearing())),a.layerStore.layersLoaded=!0,a.fp.onFpConfigured&&a.fp.onFpConfigured(),g.sceneDefReady=!0,m()},[e,b,S]);_(()=>{O.current=f,I(l.current,f,!0)},[f]),ie(T,e),se(T,e),ae(e,l,r),te(l,r),ee({enabled:a.layerStore.layersLoaded&&g.buildRoute,rendererService:e});const U=K.flags?.busRoutes??!1;re({permission:a.layerStore.layersLoaded&&U,rendererService:e,dataJsonUrl:`https://${$}/v1/routes?expo=${M.EXPO}`,websocketUrl:`wss://${$}/locations?expo=${M.EXPO}`});const w=P(n=>{console.warn("Maplibre map failed to load; falling back to floorplan mode.",n),a.maplibreStore.deactivateMaplibre()},[]);if(!r||!u||!v||!s)return null;const G=`${u.center.join(",")}:${u.bearing}:${u.zoom}`;return J(oe,{sceneDef:s,geoConfig:u,staticTransform:v,tileSource:j,mapOptions:f,onRendererReady:N,onMapDimLayerReady:z,onMapLoadError:w},G)});export default Re;
@@ -7,5 +7,13 @@ export interface FloorPlanFlags {
7
7
  * Custom `setkiosk` phrase.
8
8
  */
9
9
  customSetKiosk?: string;
10
+ /**
11
+ * Enable live bus/transport routing on the floor plan.
12
+ *
13
+ * Disabled by default: most plans have no transit routes, and probing for
14
+ * them issues an extra HTTP request on every load. Set to `true` only for
15
+ * plans that actually provide bus routes.
16
+ */
17
+ busRoutes?: boolean;
10
18
  }
11
19
  //# sourceMappingURL=Flags.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expofp/floorplan",
3
- "version": "3.9.0",
3
+ "version": "3.10.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/expofp/efp-app.git",
@@ -72,9 +72,9 @@
72
72
  "tslib": "^2.3.0",
73
73
  "uuid": "^9.0.1",
74
74
  "zod": "4.3.5",
75
- "@expofp/debug": "3.9.0",
76
- "@expofp/geometry": "3.9.0",
77
- "@expofp/resolve": "3.9.0"
75
+ "@expofp/debug": "3.10.0",
76
+ "@expofp/geometry": "3.10.0",
77
+ "@expofp/resolve": "3.10.0"
78
78
  },
79
79
  "devDependencies": {
80
80
  "@babel/plugin-proposal-decorators": "^8.0.2",