@expofp/floorplan 3.45.0 → 3.45.2

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 (101) hide show
  1. package/dist/browser/{Button-6lV64H09.js → Button-Crfda6Lz.js} +5 -5
  2. package/dist/browser/{CookieConsent-k11VHxoM.js → CookieConsent-2RwTH-WJ.js} +7 -7
  3. package/dist/browser/{Debug-DbfbGWb0.js → Debug-Kc7acuW6.js} +7 -7
  4. package/dist/browser/{DebugTools-BjHOBi_k.js → DebugTools-Bcy_rIA6.js} +6 -6
  5. package/dist/browser/{Demo-CrFjKybB.js → Demo-DtKyfXaG.js} +9 -9
  6. package/dist/browser/{Free-4IN6GHrY.js → Free-DIldGHdP.js} +10 -10
  7. package/dist/browser/{GalleryContainer-BWd-8Nhp.js → GalleryContainer-BkkCj4Od.js} +11 -11
  8. package/dist/browser/{GpsLoader-C43ADyfU.js → GpsLoader-Ddbsa0Xv.js} +13 -13
  9. package/dist/browser/{KioskStore-0xBjJ9AG.js → KioskStore-l3coFOMN.js} +10 -10
  10. package/dist/browser/{LayerStore-BifpIwHB.js → LayerStore-Clz_ooRC.js} +40 -40
  11. package/dist/browser/{MaplibreAdapter-CxETR3-R.js → MaplibreAdapter-CcyHg1C8.js} +486 -496
  12. package/dist/browser/{ModalContainer-IvkrtwT_.js → ModalContainer-BQgezeI0.js} +10 -10
  13. package/dist/browser/{PermissionNotice-C4Nu1dPO.js → PermissionNotice-CfNcWjwj.js} +6 -6
  14. package/dist/browser/{RouteStore-ltbgXRLP.js → RouteStore-DmI3xo6Y.js} +24 -24
  15. package/dist/browser/{SetKioskMode-BWzFzO_Q.js → SetKioskMode-CEKnGx3s.js} +11 -11
  16. package/dist/browser/{ShowKiosk-BYOTTOrX.js → ShowKiosk-DX5_HdN1.js} +11 -11
  17. package/dist/browser/{UIState-BG-A7rPb.js → UIState-BtsQF4Qd.js} +20 -20
  18. package/dist/browser/{ViewerMenuPanel-DscD3jCY.js → ViewerMenuPanel-DE1PS7On.js} +10 -10
  19. package/dist/browser/{add-debug-secret-listener-qgQOxLV_.js → add-debug-secret-listener-DrTVYjLv.js} +1 -1
  20. package/dist/browser/{adopt-global-settings-CB1YrOJs.js → adopt-global-settings-D3Ezjf-T.js} +9 -9
  21. package/dist/browser/{boolean-editor-DcFqYLg6.js → boolean-editor-BWZ5tP5I.js} +9 -9
  22. package/dist/browser/{bootIntercom-DJEOZaFU.js → bootIntercom-BYA7uJn4.js} +2 -2
  23. package/dist/browser/bundle.json +87 -87
  24. package/dist/browser/{camera-events-BwP3bfY4.js → camera-events-JR26Hdcu.js} +1 -1
  25. package/dist/browser/{classnames-C6CE8V3C.js → classnames-CCXT3oJS.js} +2 -2
  26. package/dist/browser/{client-B42ooBdH.js → client-Dn9Zr5pe.js} +5 -5
  27. package/dist/browser/{components-DelXq6ex.js → components-xHw_gBa5.js} +651 -666
  28. package/dist/browser/{create-live-plan-jO-YW94S.js → create-live-plan-DDxPT-Pe.js} +45 -45
  29. package/dist/browser/{debug-context-BFAUm0Rv.js → debug-context-CcikkQPi.js} +5 -5
  30. package/dist/browser/{debug-overlay-0pLu5_hz.js → debug-overlay-BlVOrhsh.js} +10 -10
  31. package/dist/browser/{debug-ui-CPF3Fr0y.js → debug-ui-ByJjooBA.js} +6 -6
  32. package/dist/browser/{dist-D7lv86ly.js → dist-Cf6IReKz.js} +3 -3
  33. package/dist/browser/{dist-BImkgFoY.js → dist-D5tNj-0Y.js} +6 -6
  34. package/dist/browser/{dist-5MtJlmvC.js → dist-zf4NxUGc.js} +5 -5
  35. package/dist/browser/{efp-debug-init-DBnQHIuj.js → efp-debug-init-al55q10u.js} +3 -3
  36. package/dist/browser/{enum-editor-wagTer9Z.js → enum-editor-BBB3sWCH.js} +4 -4
  37. package/dist/browser/{es5-ClZJZH3H.js → es5-CVG4aGRa.js} +2 -2
  38. package/dist/browser/{event-head-Dvg64Dl9.js → event-head-DyDtmXOE.js} +1 -1
  39. package/dist/browser/{event-not-found-CmHnmais.js → event-not-found-DQhH655U.js} +3 -3
  40. package/dist/browser/{event-scoped-cache-blYstzYW.js → event-scoped-cache-BRqlbRWj.js} +3 -3
  41. package/dist/browser/{expofpUrl-D99TqyHD.js → expofpUrl-Cnkbj5KP.js} +1 -1
  42. package/dist/browser/{exports-BBJtyyI0.js → exports-CriZf319.js} +1 -1
  43. package/dist/browser/{favicon-Bac0ZnSB.js → favicon-BN2jB3cD.js} +1 -1
  44. package/dist/browser/{fetch-retry.umd-Dkr69k7z.js → fetch-retry.umd-TufkXQUc.js} +2 -2
  45. package/dist/browser/{flex-2znF0sHW.js → flex-Co7qWs_0.js} +5 -5
  46. package/dist/browser/{floorplan.loader-B2NptbPQ.js → floorplan.loader-uU5jSX4L.js} +12 -12
  47. package/dist/browser/{floorplan.ready-DTyG-lkM.js → floorplan.ready-DpsnIaye.js} +309 -309
  48. package/dist/browser/{useManageTraffic-C-4Maw9l.js → framing-rect-BR93grUW.js} +218 -199
  49. package/dist/browser/{freeBanner-yyOqSdAy.js → freeBanner-oBXl72SS.js} +2 -2
  50. package/dist/browser/{fuse-x_QTzSiL.js → fuse-Dm-WhNtD.js} +2 -2
  51. package/dist/browser/{i18n-CLEztXjo.js → i18n-Brp2h-sf.js} +1629 -1629
  52. package/dist/browser/index.js +65 -65
  53. package/dist/browser/{index.module-C9C4kJk7.js → index.module-kQtZEvIK.js} +4 -4
  54. package/dist/browser/{init-ui-rxZzKF4X.js → init-ui-CtgiMn-b.js} +10 -10
  55. package/dist/browser/{integrateKiosk-DsU-d7uk.js → integrateKiosk-Ci0Kelz8.js} +5 -5
  56. package/dist/browser/{is-debug-Bnj4naYd.js → is-debug-Dl85G8le.js} +4 -4
  57. package/dist/browser/{is-own-domain-DNjOZllq.js → is-own-domain-rn4zdSxw.js} +1 -1
  58. package/dist/browser/{is-webview-Drer0GOu.js → is-webview-BcPE_KnA.js} +1 -1
  59. package/dist/browser/{jsx-runtime-DB8EwfzE.js → jsx-runtime-DjUvqNZ4.js} +2 -2
  60. package/dist/browser/{kiosk-mode-B89VL0oY.js → kiosk-mode-CgDJr0Cy.js} +3 -3
  61. package/dist/browser/{kiosk-record-rnTon4Lp.js → kiosk-record-DSAURYxo.js} +1 -1
  62. package/dist/browser/{kioskApi-opoHdUqq.js → kioskApi-BpS2oCDp.js} +7 -7
  63. package/dist/browser/{lib-eiqwFHwk.js → lib-D722Pg4z.js} +3 -3
  64. package/dist/browser/{loadImage-BS80HTUK.js → loadImage-7lVuG7mT.js} +1 -1
  65. package/dist/browser/{logDeviceInfo-BqSbYo5l.js → logDeviceInfo-dGpUXc_1.js} +9 -9
  66. package/dist/browser/{mobx-9NGoPiek.js → mobx-C7iTPB-l.js} +4 -4
  67. package/dist/browser/{mobx.module-BP1vMHLz.js → mobx.module-BnXrY7HW.js} +1 -1
  68. package/dist/browser/{optional-boolean-editor-D6hR19BE.js → optional-boolean-editor-BwkRtcEs.js} +3 -3
  69. package/dist/browser/{optional-enum-editor-BQPM-fRt.js → optional-enum-editor-DiYEddI4.js} +4 -4
  70. package/dist/browser/{optional-string-editor-DUXoDnXB.js → optional-string-editor-BRCJlGU6.js} +4 -4
  71. package/dist/browser/{particles.min-CBeInmmW.js → particles.min-Cyv2g1i1.js} +2 -2
  72. package/dist/browser/{react-Dg88gKA7.js → react-GM02QWsb.js} +2 -2
  73. package/dist/browser/{react-dom-C3PpoQeD.js → react-dom-B8t0es6H.js} +3 -3
  74. package/dist/browser/{rolldown-runtime-C7pJ6q0h.js → rolldown-runtime-BE0XSRfw.js} +1 -1
  75. package/dist/browser/{scene-CV1XFwO9.js → scene-DWydbLeX.js} +2 -2
  76. package/dist/browser/{scheduler-D-EvNbvQ.js → scheduler-DPogrQnC.js} +2 -2
  77. package/dist/browser/{select-CQPuihmE.js → select-hn9vWuOi.js} +10 -10
  78. package/dist/browser/{settings-BBn9P5W0.js → settings-CFSsnNiW.js} +2 -2
  79. package/dist/browser/{settings-item-BOVedxqA.js → settings-item-B78SzeBC.js} +6 -6
  80. package/dist/browser/{store-D73yMRu5.js → store-_wn5u-g_.js} +2 -2
  81. package/dist/browser/{string-editor-Drmcb4Uw.js → string-editor-DG_fQEtF.js} +4 -4
  82. package/dist/browser/{text-field-CnzYOUfF.js → text-field-MkszrHMN.js} +5 -5
  83. package/dist/browser/{theme-B4d7ReQC.js → theme-GhRMjRAR.js} +8 -8
  84. package/dist/browser/{ui-DQ22eDdk.js → ui-R9Wb5JLi.js} +8 -8
  85. package/dist/browser/{useRenderTarget-BaCkqntS.js → useRenderTarget-CmmLzvq6.js} +4 -4
  86. package/dist/browser/{viewport-CcbGLmJI.js → viewport-P1Fw2W4S.js} +3 -3
  87. package/dist/browser/{wayfinding-4TI6Xwmj.js → wayfinding-CtfrReXU.js} +5 -5
  88. package/dist/esm/components/Layout.js +1 -1
  89. package/dist/esm/components/Map/MapCamera.js +1 -1
  90. package/dist/esm/components/Map/framing-rect.d.ts +16 -0
  91. package/dist/esm/components/Map/framing-rect.js +1 -0
  92. package/dist/esm/components/Map/with-kiosk.d.ts +11 -0
  93. package/dist/esm/components/Map/with-kiosk.js +1 -0
  94. package/dist/esm/components/Maplibre/useCameraReactions.js +1 -1
  95. package/dist/esm/components/Maplibre/utils/geo-config.d.ts +4 -7
  96. package/dist/esm/components/Maplibre/utils/geo-config.js +1 -1
  97. package/dist/esm/constants.d.ts +1 -0
  98. package/dist/esm/constants.js +1 -1
  99. package/dist/esm/load.js +2 -2
  100. package/dist/esm/store/UIState.d.ts +5 -5
  101. package/package.json +10 -10
@@ -1,13 +1,13 @@
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.45.0" };
4
+ e.SENTRY_RELEASE = { id: "3.45.2" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "a30dd810-d46b-41cd-8f48-f437f01c8a16", e._sentryDebugIdIdentifier = "sentry-dbid-a30dd810-d46b-41cd-8f48-f437f01c8a16");
7
7
  } catch {}
8
8
  })();
9
- import { t as e } from "./rolldown-runtime-C7pJ6q0h.js";
10
- import { t } from "./react-Dg88gKA7.js";
9
+ import { t as e } from "./rolldown-runtime-BE0XSRfw.js";
10
+ import { t } from "./react-GM02QWsb.js";
11
11
  //#region ../../node_modules/.pnpm/react-dom@19.2.8_react@19.2.8/node_modules/react-dom/cjs/react-dom.production.js
12
12
  var n = /* @__PURE__ */ e(((e) => {
13
13
  var n = t();
@@ -2,7 +2,7 @@
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.45.0" };
5
+ e.SENTRY_RELEASE = { id: "3.45.2" };
6
6
  var t = new e.Error().stack;
7
7
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "4a11513d-0070-4205-b636-a85d593cfa99", e._sentryDebugIdIdentifier = "sentry-dbid-4a11513d-0070-4205-b636-a85d593cfa99");
8
8
  } catch {}
@@ -1,12 +1,12 @@
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.45.0" };
4
+ e.SENTRY_RELEASE = { id: "3.45.2" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "d62a004f-7cd3-4da9-9e42-e432ca2b1d1b", e._sentryDebugIdIdentifier = "sentry-dbid-d62a004f-7cd3-4da9-9e42-e432ca2b1d1b");
7
7
  } catch {}
8
8
  })();
9
- import { Xt as e, Yt as t, gt as n, ht as r, pt as i } from "./LayerStore-BifpIwHB.js";
9
+ import { Xt as e, Yt as t, gt as n, ht as r, pt as i } from "./LayerStore-Clz_ooRC.js";
10
10
  //#region src/utils/scene-bounds.ts
11
11
  var a = "areamap";
12
12
  function o(o) {
@@ -1,12 +1,12 @@
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.45.0" };
4
+ e.SENTRY_RELEASE = { id: "3.45.2" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "743837e7-93f1-4f1c-aefc-675d73ee4f63", e._sentryDebugIdIdentifier = "sentry-dbid-743837e7-93f1-4f1c-aefc-675d73ee4f63");
7
7
  } catch {}
8
8
  })();
9
- import { t as e } from "./rolldown-runtime-C7pJ6q0h.js";
9
+ import { t as e } from "./rolldown-runtime-BE0XSRfw.js";
10
10
  //#region ../../node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.js
11
11
  var t = /* @__PURE__ */ e(((e) => {
12
12
  function t(e, t) {
@@ -1,20 +1,20 @@
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.45.0" };
4
+ e.SENTRY_RELEASE = { id: "3.45.2" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "e90304f6-bccd-4aaf-a0cc-062a075f78bf", e._sentryDebugIdIdentifier = "sentry-dbid-e90304f6-bccd-4aaf-a0cc-062a075f78bf");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-C7pJ6q0h.js";
10
- import { t } from "./react-Dg88gKA7.js";
11
- import { t as n } from "./jsx-runtime-DB8EwfzE.js";
12
- import { t as r } from "./react-dom-C3PpoQeD.js";
13
- import { O as i, T as a, g as o, l as s, s as c, u as l, y as u } from "./flex-2znF0sHW.js";
14
- import { i as d, n as f, o as p, r as m, s as h } from "./dist-BImkgFoY.js";
15
- import { _ as g, a as _, b as v, c as y, d as b, f as x, g as S, h as C, i as w, l as T, m as E, n as D, o as O, p as k, r as A, s as j, t as ee, u as te, v as ne } from "./theme-B4d7ReQC.js";
16
- import { t as M } from "./dist-D7lv86ly.js";
17
- import { t as N } from "./classnames-C6CE8V3C.js";
9
+ import { r as e } from "./rolldown-runtime-BE0XSRfw.js";
10
+ import { t } from "./react-GM02QWsb.js";
11
+ import { t as n } from "./jsx-runtime-DjUvqNZ4.js";
12
+ import { t as r } from "./react-dom-B8t0es6H.js";
13
+ import { O as i, T as a, g as o, l as s, s as c, u as l, y as u } from "./flex-Co7qWs_0.js";
14
+ import { i as d, n as f, o as p, r as m, s as h } from "./dist-D5tNj-0Y.js";
15
+ import { _ as g, a as _, b as v, c as y, d as b, f as x, g as S, h as C, i as w, l as T, m as E, n as D, o as O, p as k, r as A, s as j, t as ee, u as te, v as ne } from "./theme-GhRMjRAR.js";
16
+ import { t as M } from "./dist-Cf6IReKz.js";
17
+ import { t as N } from "./classnames-CCXT3oJS.js";
18
18
  //#region ../../node_modules/.pnpm/@radix-ui+number@1.1.1/node_modules/@radix-ui/number/dist/index.mjs
19
19
  var P = /* @__PURE__ */ e(t(), 1);
20
20
  function re(e, [t, n]) {
@@ -1,9 +1,9 @@
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.45.0" };
4
+ e.SENTRY_RELEASE = { id: "3.45.2" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "8b6ee49c-19c3-4811-99e0-0515eca1da1f", e._sentryDebugIdIdentifier = "sentry-dbid-8b6ee49c-19c3-4811-99e0-0515eca1da1f");
7
7
  } catch {}
8
8
  })();
9
- import "./adopt-global-settings-CB1YrOJs.js";
9
+ import "./adopt-global-settings-D3Ezjf-T.js";
@@ -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.45.0" };
4
+ e.SENTRY_RELEASE = { id: "3.45.2" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "12edc63f-e6e7-4dfc-9a76-31666c53718c", e._sentryDebugIdIdentifier = "sentry-dbid-12edc63f-e6e7-4dfc-9a76-31666c53718c");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-C7pJ6q0h.js";
10
- import { t } from "./react-Dg88gKA7.js";
11
- import { t as n } from "./jsx-runtime-DB8EwfzE.js";
12
- import { c as r, l as i, t as a, u as o, y as s } from "./flex-2znF0sHW.js";
13
- import { t as c } from "./classnames-C6CE8V3C.js";
9
+ import { r as e } from "./rolldown-runtime-BE0XSRfw.js";
10
+ import { t } from "./react-GM02QWsb.js";
11
+ import { t as n } from "./jsx-runtime-DjUvqNZ4.js";
12
+ import { c as r, l as i, t as a, u as o, y as s } from "./flex-Co7qWs_0.js";
13
+ import { t as c } from "./classnames-CCXT3oJS.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._5ea800d4e947acedb1fa1275f1697b17/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: {
@@ -1,12 +1,12 @@
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.45.0" };
4
+ e.SENTRY_RELEASE = { id: "3.45.2" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "6d823a43-fa42-42af-9c05-a4ee303c909d", e._sentryDebugIdIdentifier = "sentry-dbid-6d823a43-fa42-42af-9c05-a4ee303c909d");
7
7
  } catch {}
8
8
  })();
9
- import { o as e } from "./mobx.module-BP1vMHLz.js";
9
+ import { o as e } from "./mobx.module-BnXrY7HW.js";
10
10
  //#region src/utils/swappable-proxy.ts
11
11
  function t(e, t) {
12
12
  let n = () => {
@@ -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.45.0" };
4
+ e.SENTRY_RELEASE = { id: "3.45.2" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "bae75e1e-5013-4517-a846-519e3920f180", e._sentryDebugIdIdentifier = "sentry-dbid-bae75e1e-5013-4517-a846-519e3920f180");
7
7
  } catch {}
8
8
  })();
9
- import { t as e } from "./jsx-runtime-DB8EwfzE.js";
10
- import { t } from "./settings-item-BOVedxqA.js";
11
- import { t as n } from "./text-field-CnzYOUfF.js";
9
+ import { t as e } from "./jsx-runtime-DjUvqNZ4.js";
10
+ import { t } from "./settings-item-B78SzeBC.js";
11
+ import { t as n } from "./text-field-MkszrHMN.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.45.0" };
4
+ e.SENTRY_RELEASE = { id: "3.45.2" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "7cff17ce-12f6-438a-9ef4-00cf6a0b1475", e._sentryDebugIdIdentifier = "sentry-dbid-7cff17ce-12f6-438a-9ef4-00cf6a0b1475");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-C7pJ6q0h.js";
10
- import { t } from "./react-Dg88gKA7.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-2znF0sHW.js";
12
- import { t as l } from "./classnames-C6CE8V3C.js";
9
+ import { r as e } from "./rolldown-runtime-BE0XSRfw.js";
10
+ import { t } from "./react-GM02QWsb.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-Co7qWs_0.js";
12
+ import { t as l } from "./classnames-CCXT3oJS.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.45.0" };
4
+ e.SENTRY_RELEASE = { id: "3.45.2" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "507523b1-aa12-4507-b680-c254edab8300", e._sentryDebugIdIdentifier = "sentry-dbid-507523b1-aa12-4507-b680-c254edab8300");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-C7pJ6q0h.js";
10
- import { t } from "./react-Dg88gKA7.js";
11
- import { t as n } from "./jsx-runtime-DB8EwfzE.js";
12
- import { t as r } from "./react-dom-C3PpoQeD.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-2znF0sHW.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-BImkgFoY.js";
15
- import { t as y } from "./classnames-C6CE8V3C.js";
9
+ import { r as e } from "./rolldown-runtime-BE0XSRfw.js";
10
+ import { t } from "./react-GM02QWsb.js";
11
+ import { t as n } from "./jsx-runtime-DjUvqNZ4.js";
12
+ import { t as r } from "./react-dom-B8t0es6H.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-Co7qWs_0.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-D5tNj-0Y.js";
15
+ import { t as y } from "./classnames-CCXT3oJS.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.45.0" };
4
+ e.SENTRY_RELEASE = { id: "3.45.2" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "c331f3d0-af7b-4caa-8d8a-4bf8b2b6fc89", e._sentryDebugIdIdentifier = "sentry-dbid-c331f3d0-af7b-4caa-8d8a-4bf8b2b6fc89");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-C7pJ6q0h.js";
10
- import { a as t, i as n, s as r } from "./efp-debug-init-DBnQHIuj.js";
11
- import { a as i, i as a } from "./adopt-global-settings-CB1YrOJs.js";
12
- import { t as o } from "./jsx-runtime-DB8EwfzE.js";
13
- import "./settings-BBn9P5W0.js";
14
- import { t as s } from "./add-debug-secret-listener-qgQOxLV_.js";
9
+ import { r as e } from "./rolldown-runtime-BE0XSRfw.js";
10
+ import { a as t, i as n, s as r } from "./efp-debug-init-al55q10u.js";
11
+ import { a as i, i as a } from "./adopt-global-settings-D3Ezjf-T.js";
12
+ import { t as o } from "./jsx-runtime-DjUvqNZ4.js";
13
+ import "./settings-CFSsnNiW.js";
14
+ import { t as s } from "./add-debug-secret-listener-DrTVYjLv.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-CPF3Fr0y.js"), { createRoot: i } = await import("./client-B42ooBdH.js").then((t) => /* @__PURE__ */ e(t.t(), 1)), a = document.createElement("div");
29
+ let { DebugUi: n } = await import("./debug-ui-ByJjooBA.js"), { createRoot: i } = await import("./client-Dn9Zr5pe.js").then((t) => /* @__PURE__ */ e(t.t(), 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.45.0" };
4
+ e.SENTRY_RELEASE = { id: "3.45.2" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "1e89fc3a-fa3d-42bb-94d8-f0f786d433ec", e._sentryDebugIdIdentifier = "sentry-dbid-1e89fc3a-fa3d-42bb-94d8-f0f786d433ec");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-C7pJ6q0h.js";
10
- import { t } from "./react-Dg88gKA7.js";
11
- import { u as n } from "./store-D73yMRu5.js";
9
+ import { r as e } from "./rolldown-runtime-BE0XSRfw.js";
10
+ import { t } from "./react-GM02QWsb.js";
11
+ import { u as n } from "./store-_wn5u-g_.js";
12
12
  //#region ../ui/src/shared/activeElement.ts
13
13
  var r = (e) => !!e && "activeElement" in e;
14
14
  function i(e) {
@@ -1,13 +1,13 @@
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.45.0" };
4
+ e.SENTRY_RELEASE = { id: "3.45.2" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "cd544147-31ec-4446-b8a2-8021e027057b", e._sentryDebugIdIdentifier = "sentry-dbid-cd544147-31ec-4446-b8a2-8021e027057b");
7
7
  } catch {}
8
8
  })();
9
- import { l as e } from "./store-D73yMRu5.js";
10
- import { t } from "./LayerStore-BifpIwHB.js";
9
+ import { l as e } from "./store-_wn5u-g_.js";
10
+ import { t } from "./LayerStore-Clz_ooRC.js";
11
11
  //#region src/components/Map/viewport.ts
12
12
  function n(e) {
13
13
  return {
@@ -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.45.0" };
4
+ e.SENTRY_RELEASE = { id: "3.45.2" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "87608407-0c87-4a9d-80e4-b8d7cec1d3f0", e._sentryDebugIdIdentifier = "sentry-dbid-87608407-0c87-4a9d-80e4-b8d7cec1d3f0");
7
7
  } catch {}
8
8
  })();
9
- import { r as e, t } from "./rolldown-runtime-C7pJ6q0h.js";
10
- import { o as n } from "./is-debug-Bnj4naYd.js";
11
- import { i as r, l as i } from "./mobx.module-BP1vMHLz.js";
12
- import { $t as a, Ct as o, Dt as s, Et as c, Ot as l, Ut as u, Wt as d, Xt as f, _t as p, an as m, cn as h, ft as g, nn as _, nt as v, on as y, rn as b, sn as x, tn as S, vt as C, wt as w, xt as T, yt as E } from "./LayerStore-BifpIwHB.js";
9
+ import { r as e, t } from "./rolldown-runtime-BE0XSRfw.js";
10
+ import { o as n } from "./is-debug-Dl85G8le.js";
11
+ import { i as r, l as i } from "./mobx.module-BnXrY7HW.js";
12
+ import { $t as a, Ct as o, Dt as s, Et as c, Ot as l, Ut as u, Wt as d, Xt as f, _t as p, an as m, cn as h, ft as g, nn as _, nt as v, on as y, rn as b, sn as x, tn as S, vt as C, wt as w, xt as T, yt as E } from "./LayerStore-Clz_ooRC.js";
13
13
  //#region ../geometry/src/lib/geo.ts
14
14
  var D = 6371e3;
15
15
  function O(e, t) {
@@ -1 +1 @@
1
- import{jsx as o,jsxs as x}from"react/jsx-runtime";import"@styles/main.scss";import"./Layout.scss";import{Spinner as R}from"@expofp/ui";import B from"classnames";import{observer as L}from"mobx-react-lite";import r,{Suspense as n,useEffect as G,useState as k}from"react";import t,{layersStore as f,uiState as e}from"../store";import{LayersMode as C}from"../store/LayerStore";import{checkUserIsGDPR as F,GaEventActions as d,hasUserConsent as T,sendEventToGa as s,setConsentSettings as S,setCookieConsent as b}from"../tools/gtag";import j from"../tools/settings";import u from"../tools/track-event";import{isWebGlSupported as A}from"../utils";import{t as P}from"../utils/i18n";import V from"../utils/is-debug";import{useReaction as l}from"../utils/mobx";import{CategoryFilterModal as H}from"./CategoryFilterModal";import I from"./ErrorBoundary";import $ from"./GlobalErrorMessage";import K from"./HeatmapLegendContainer";import N from"./IntercomLauncher";import _ from"./LevelSelectorContainer";import U from"./LogoOverlay";import W from"./Map/Map";import q from"./MapControlsContainer";import X from"./MobileToggleButtonContainer";import Y from"./OverlayContainer";import J from"./SearchBox";import Q from"./SearchButtons/SearchButtons";import Z from"./SessionsFiltersModal";import ee from"./ShareContainer";import oe from"./SpeakersFiltersModal";import te from"./Ws";const ie=r.lazy(()=>import("./Demo")),re=r.lazy(()=>import("./Free")),ae=r.lazy(()=>import("./Debug")),ne=r.lazy(()=>import("./Maplibre/MaplibreAdapter")),le=r.lazy(()=>import("./ModalContainer")),se=r.lazy(()=>import("./CookieConsent")),me=r.lazy(()=>import("./GpsLoader")),de=r.lazy(()=>import("./Kiosk/SetKioskMode")),pe=r.lazy(()=>import("./Kiosk/ShowKiosk"));export default L(function({offHistory:w,consent:p}){const[y,c]=k(!1),[z,M]=k(!1),h=t.maplibreStore.showMaplibre,O=e.searchButtonsOverride!==!1&&(!e.noOverlay||e.overlayOnDemand),g=!e.noOverlay||e.overlayOnDemand&&(z||e.isOverlayOpen);let m=null;e.bannerType==="demo"?m=o(ie,{}):e.bannerType==="free"&&(m=o(re,{}));const E=()=>{b(!0),S(),t.uiState.hideCookieConsent=!0},D=()=>{b(!1),S(),t.uiState.hideCookieConsent=!0};G(()=>{async function i(){const a=await F();c(!!(a||a===null))}T(p)?c(!0):i()},[]),l(()=>e.isOverlayOpen,i=>i&&M(!0)),l(()=>e.selectedExhibitor,i=>{const a=t.heatmapStore.forceTrack;if(t.heatmapStore.forceTrack=null,a&&a.exhibitor===i){s(a.action,a.label);return}i&&(u("exview",i.id),s(d.ViewExhibitor,i.name))}),l(()=>e.selectedBooth,i=>i?.name&&s(d.ViewBooth,i.name)),l(()=>e.selectedCategory,i=>i?.name&&s(d.ViewCategory,i?.name)),l(()=>e.selectedEventItem,i=>{i?.name&&(u("sesview",i.name),s(d.ViewExhibitor,i.name))}),l(()=>e.selectedSpeaker,i=>{i?.name&&u("spkview",i.name)});const v=!e.hideCookieConsent&&!e.kiosk&&y&&p==="ask";return o("div",{id:"efp-layout",className:B("layout",{"efp-kiosk":e.kiosk,"efp-kiosk-route-active":e.kiosk&&e.selectedRoute?.from&&e.selectedRoute?.to,"efp-layers-mode":t.layerStore.mode,"efp-ws-mode":e.wsShown,"efp-no-overlay":e.overlayHiddenNow,"efp-overlay-on-demand":e.overlayOnDemand,"efp-top-banner":e.bannerType==="free"&&!e.freeBannerDismissed,"efp-viewer-mode":e.viewerMode}),dir:e.rtl?"rtl":"ltr",style:{"--ui-scale":e.uiScale.toString()},children:x("div",{className:`layout__fixed expo-${j.EXPO} overlay-${t.uiState.overlayPosition}`,children:[(f.mode===C.Radio||f.mode===C.CheckBox)&&!e.floorsControlHidden&&t.initialized&&o(_,{}),g&&t.initialized&&o(Y,{isGDPR:y,consent:p}),t.initialized&&o(U,{}),(!e.noOverlay||e.overlayOnDemand&&e.isOverlayOpen)&&t.initialized&&!(e.viewerMode&&e.menu)&&o(J,{}),O&&t.initialized&&o(Q,{}),!e.noOverlay&&t.initialized&&o(X,{}),!e.mapControlsHidden&&t.initialized&&o(q,{}),o(N,{}),!e.hideHeaderLogo&&t.initialized&&o(te,{}),t.routeStore.gpsEnabled&&o(me,{requestCompassAllowed:!v}),A&&!h&&o(W,{}),h&&o(I,{children:o(n,{fallback:o("div",{}),children:o(ne,{viewMode:t.maplibreStore.mapViewMode})})}),m&&!e.hideFreeOrDemo&&!e.heatmap?o(n,{fallback:null,children:m}):null,v&&o(n,{fallback:null,children:o(se,{link:"https://expofp.com/pages/viewer-cookie-consent",onAccept:E,onReject:D})}),V?o(n,{fallback:null,children:o(ae,{})}):null,e.modalActive.share?o(n,{fallback:null,children:o(le,{variant:"share",ariaLabel:P("Share"),open:e.modalActive.share,onClose:()=>t.toggleModal("share"),children:o(ee,{title:e.selectedExhibitor?.name||e.selectedEventItem?.name||"",url:w?`${window.location.origin}?${encodeURI(e.selectedExhibitor?.slug||e.selectedEventItem?.slug)}`:window.location.href})})}):null,e.heatmap||e.heatmapYah?o(K,{style:{left:`calc(50% + ${t.uiState.mapVisibleStart/2}px)`},className:e.responsiveClass}):null,o(R,{active:!f.layersLoaded}),o("div",{id:"fps"}),t.initialized&&o(H,{}),t.initialized&&o(Z,{store:t.sessionsFilterStore}),t.initialized&&o(oe,{store:t.speakerFilterStore}),o($,{}),t.initialized&&e.setKioskModeEnabled&&o(n,{fallback:null,children:o(de,{})}),t.initialized&&!e.setKioskModeEnabled&&o(n,{fallback:null,children:o(pe,{})})]})})});
1
+ import{jsx as o,jsxs as R}from"react/jsx-runtime";import"@styles/main.scss";import"./Layout.scss";import{Spinner as L}from"@expofp/ui";import A from"classnames";import{observer as B}from"mobx-react-lite";import i,{Suspense as n,useEffect as G,useState as k}from"react";import{RUNTIME_LOADER_SPINNER_CLASS as T}from"../constants.js";import t,{layersStore as f,uiState as e}from"../store";import{LayersMode as S}from"../store/LayerStore";import{checkUserIsGDPR as F,GaEventActions as p,hasUserConsent as I,sendEventToGa as s,setConsentSettings as C,setCookieConsent as b}from"../tools/gtag";import N from"../tools/settings";import u from"../tools/track-event";import{isWebGlSupported as P}from"../utils";import{t as _}from"../utils/i18n";import j from"../utils/is-debug";import{useReaction as l}from"../utils/mobx";import{CategoryFilterModal as V}from"./CategoryFilterModal";import $ from"./ErrorBoundary";import H from"./GlobalErrorMessage";import K from"./HeatmapLegendContainer";import U from"./IntercomLauncher";import q from"./LevelSelectorContainer";import W from"./LogoOverlay";import X from"./Map/Map";import Y from"./MapControlsContainer";import J from"./MobileToggleButtonContainer";import Q from"./OverlayContainer";import Z from"./SearchBox";import ee from"./SearchButtons/SearchButtons";import oe from"./SessionsFiltersModal";import te from"./ShareContainer";import re from"./SpeakersFiltersModal";import ie from"./Ws";const ae=i.lazy(()=>import("./Demo")),ne=i.lazy(()=>import("./Free")),le=i.lazy(()=>import("./Debug")),se=i.lazy(()=>import("./Maplibre/MaplibreAdapter")),me=i.lazy(()=>import("./ModalContainer")),de=i.lazy(()=>import("./CookieConsent")),pe=i.lazy(()=>import("./GpsLoader")),ce=i.lazy(()=>import("./Kiosk/SetKioskMode")),fe=i.lazy(()=>import("./Kiosk/ShowKiosk"));export default B(function({offHistory:w,consent:m}){const[y,c]=k(!1),[M,z]=k(!1),v=t.maplibreStore.showMaplibre,O=!f.layersLoaded&&!t.fp.element.querySelector(`.${T}`),g=e.searchButtonsOverride!==!1&&(!e.noOverlay||e.overlayOnDemand),E=!e.noOverlay||e.overlayOnDemand&&(M||e.isOverlayOpen);let d=null;e.bannerType==="demo"?d=o(ae,{}):e.bannerType==="free"&&(d=o(ne,{}));const D=()=>{b(!0),C(),t.uiState.hideCookieConsent=!0},x=()=>{b(!1),C(),t.uiState.hideCookieConsent=!0};G(()=>{async function r(){const a=await F();c(!!(a||a===null))}I(m)?c(!0):r()},[m]),l(()=>e.isOverlayOpen,r=>r&&z(!0)),l(()=>e.selectedExhibitor,r=>{const a=t.heatmapStore.forceTrack;if(t.heatmapStore.forceTrack=null,a&&a.exhibitor===r){s(a.action,a.label);return}r&&(u("exview",r.id),s(p.ViewExhibitor,r.name))}),l(()=>e.selectedBooth,r=>r?.name&&s(p.ViewBooth,r.name)),l(()=>e.selectedCategory,r=>r?.name&&s(p.ViewCategory,r?.name)),l(()=>e.selectedEventItem,r=>{r?.name&&(u("sesview",r.name),s(p.ViewExhibitor,r.name))}),l(()=>e.selectedSpeaker,r=>{r?.name&&u("spkview",r.name)});const h=!e.hideCookieConsent&&!e.kiosk&&y&&m==="ask";return o("div",{id:"efp-layout",className:A("layout",{"efp-kiosk":e.kiosk,"efp-kiosk-route-active":e.kiosk&&e.selectedRoute?.from&&e.selectedRoute?.to,"efp-layers-mode":t.layerStore.mode,"efp-ws-mode":e.wsShown,"efp-no-overlay":e.overlayHiddenNow,"efp-overlay-on-demand":e.overlayOnDemand,"efp-top-banner":e.bannerType==="free"&&!e.freeBannerDismissed,"efp-viewer-mode":e.viewerMode}),dir:e.rtl?"rtl":"ltr",style:{"--ui-scale":e.uiScale.toString()},children:R("div",{className:`layout__fixed expo-${N.EXPO} overlay-${t.uiState.overlayPosition}`,children:[(f.mode===S.Radio||f.mode===S.CheckBox)&&!e.floorsControlHidden&&t.initialized&&o(q,{}),E&&t.initialized&&o(Q,{isGDPR:y,consent:m}),t.initialized&&o(W,{}),(!e.noOverlay||e.overlayOnDemand&&e.isOverlayOpen)&&t.initialized&&!(e.viewerMode&&e.menu)&&o(Z,{}),g&&t.initialized&&o(ee,{}),!e.noOverlay&&t.initialized&&o(J,{}),!e.mapControlsHidden&&t.initialized&&o(Y,{}),o(U,{}),!e.hideHeaderLogo&&t.initialized&&o(ie,{}),t.routeStore.gpsEnabled&&o(pe,{requestCompassAllowed:!h}),P&&!v&&o(X,{}),v&&o($,{children:o(n,{fallback:o("div",{}),children:o(se,{viewMode:t.maplibreStore.mapViewMode})})}),d&&!e.hideFreeOrDemo&&!e.heatmap?o(n,{fallback:null,children:d}):null,h&&o(n,{fallback:null,children:o(de,{link:"https://expofp.com/pages/viewer-cookie-consent",onAccept:D,onReject:x})}),j?o(n,{fallback:null,children:o(le,{})}):null,e.modalActive.share?o(n,{fallback:null,children:o(me,{variant:"share",ariaLabel:_("Share"),open:e.modalActive.share,onClose:()=>t.toggleModal("share"),children:o(te,{title:e.selectedExhibitor?.name||e.selectedEventItem?.name||"",url:w?`${window.location.origin}?${encodeURI(String(e.selectedExhibitor?.slug||e.selectedEventItem?.slug))}`:window.location.href})})}):null,e.heatmap||e.heatmapYah?o(K,{style:{left:`calc(50% + ${t.uiState.mapVisibleStart/2}px)`},className:e.responsiveClass}):null,o(L,{active:O}),o("div",{id:"fps"}),t.initialized&&o(V,{}),t.initialized&&o(oe,{store:t.sessionsFilterStore}),t.initialized&&o(re,{store:t.speakerFilterStore}),o(H,{}),t.initialized&&e.setKioskModeEnabled&&o(n,{fallback:null,children:o(ce,{})}),t.initialized&&!e.setKioskModeEnabled&&o(n,{fallback:null,children:o(fe,{})})]})})});
@@ -1 +1 @@
1
- import{Box as s}from"@expofp/geometry";import{useCameraAPI as g,useCameraGesture as x,useCameraMoveEnd as R,useCameraState as T}from"@expofp/renderer";import{useEffect as B,useLayoutEffect as M,useRef as P,useState as S}from"react";import{getFpGeo as F}from"../../data/fpGeo.js";import{getSvgArea as C}from"../../data/svg.js";import l,{uiState as e}from"../../store";import{BoothBase as w}from"../../store/BoothStore";import d from"../../tools/logger";import E from"../../tools/settings";import{areLayersEnabled as N}from"../../utils/areLayersEnabled";import{parseNumberPair as v}from"../../utils/camera-map-settings";import{convertGpsToLocal as z}from"../../utils/gps";import{useOneShotReaction as f}from"../../utils/mobx";import{createMapCamera as b,setMapCamera as h}from"./camera";import{notifyCameraMoved as k}from"./camera-events";import{resetExternalOverlay as G}from"./pointer";export function MapCamera(){const t=g(),n=T(),r=P({api:t,state:n}),[a]=S(()=>b(r));return M(()=>{r.current={api:t,state:n}}),B(()=>(h(a),()=>h(void 0)),[a]),x(()=>G()),R(()=>k()),f(()=>e.zoomBy,o=>{o&&(r.current.api.zoomBy(o),e.zoomBy=null)},[]),f(()=>e.rollReset,o=>{o&&(r.current.api.reset({roll:!0}),e.rollReset=!1)},[]),f(()=>e.centerMap,o=>{o&&(r.current.api.reset({zoom:!!(e.list.type==="search"&&e.list.text)}),e.centerMap=!1)},[]),f(()=>e.moveToRect,o=>{if(!o)return;const{width:m,height:i}=o.size;m>0&&i>0&&Number.isFinite(m)&&Number.isFinite(i)&&y(r.current.api,o,e.moveToRectPaddingPercent??void 0),e.moveToRect=null,e.moveToRectPaddingPercent=null},[]),f(()=>e.moveToBooths,o=>{if(!o)return;d.log("watched moveToBooths",o);const m=o.filter(i=>i.rect).map(i=>i.rect);m.length&&y(r.current.api,s.fromUnion(...m)),e.moveToBooths=null},[]),f(()=>e.mapSettings,({center:o,centerxy:m,bearing:i,pitchdegrees:c,z:p})=>{try{p&&l.fp.activateFloor({name:p});const u=U(o,m);u&&r.current.api.panTo(u),i!==void 0&&Number.isFinite(i)&&r.current.api.rollTo(i),c!=null&&Number.isFinite(c)&&r.current.api.pitchTo(c,{immediate:!e.animatePitch})}catch(u){d.error("Error in mapSettings reaction",u)}},[]),null}function y(t,n,r){t.zoomTo(A(n),{padding:r??O(n,C()),maxZoom:Number.isFinite(E.maxZoom)?void 0:10,within:L()})}function L(){const t=e.canvasVisibleRectPx;return e.shouldShiftMapRect?s.fromMinMax({x:t.min.x+e.overlayWidthPx,y:t.min.y},t.max):t}function A(t){const n=e.kioskData;if(!n)return t;const r=e.selectedRoute?.from,a=r instanceof w?r.layer?.name:r?.layer;return(N()?a===l.routeStore.currentRouteLayer?.name:!0)?s.fromUnion(t,new s(n.x,n.y,1,1)):t}function O(t,n){return!t||!n?0:(t.area/n.area>.1?15:25)/100}function U(t,n){if(t){const a=v(t);if(!a)return;const o=F()?.properties?.config;if(!o)throw new Error("Map center given in GPS, but the plan has no GPS config");return z({lat:a[0],lng:a[1]},o)??void 0}const r=v(n);if(r)return{x:r[0],y:r[1]}}
1
+ import{Box as g}from"@expofp/geometry";import{useCameraAPI as h,useCameraGesture as T,useCameraMoveEnd as R,useCameraState as y}from"@expofp/renderer";import{useEffect as B,useLayoutEffect as C,useRef as P,useState as S}from"react";import{getFpGeo as x}from"../../data/fpGeo.js";import{getSvgArea as F}from"../../data/svg.js";import M,{uiState as o}from"../../store";import c from"../../tools/logger";import w from"../../tools/settings";import{parseNumberPair as d}from"../../utils/camera-map-settings";import{convertGpsToLocal as z}from"../../utils/gps";import{useOneShotReaction as f}from"../../utils/mobx";import{createMapCamera as E,setMapCamera as l}from"./camera";import{notifyCameraMoved as N}from"./camera-events";import{framingRect as G}from"./framing-rect.js";import{resetExternalOverlay as b}from"./pointer";import{withKiosk as A}from"./with-kiosk.js";export function MapCamera(){const t=h(),i=y(),r=P({api:t,state:i}),[m]=S(()=>E(r));return C(()=>{r.current={api:t,state:i}}),B(()=>(l(m),()=>l(void 0)),[m]),T(()=>b()),R(()=>N()),f(()=>o.zoomBy,e=>{e&&(r.current.api.zoomBy(e),o.zoomBy=null)},[]),f(()=>o.rollReset,e=>{e&&(r.current.api.reset({roll:!0}),o.rollReset=!1)},[]),f(()=>o.centerMap,e=>{e&&(r.current.api.reset({zoom:!!(o.list.type==="search"&&o.list.text)}),o.centerMap=!1)},[]),f(()=>o.moveToRect,e=>{if(!e)return;const{width:a,height:n}=e.size;a>0&&n>0&&Number.isFinite(a)&&Number.isFinite(n)&&v(r.current.api,e,o.moveToRectPaddingPercent??void 0),o.moveToRect=null,o.moveToRectPaddingPercent=null},[]),f(()=>o.moveToBooths,e=>{if(!e)return;c.log("watched moveToBooths",e);const a=e.filter(n=>n.rect).map(n=>n.rect);a.length&&v(r.current.api,g.fromUnion(...a)),o.moveToBooths=null},[]),f(()=>o.mapSettings,({center:e,centerxy:a,bearing:n,pitchdegrees:s,z:p})=>{try{p&&M.fp.activateFloor({name:p});const u=O(e,a);u&&r.current.api.panTo(u),n!==void 0&&Number.isFinite(n)&&r.current.api.rollTo(n),s!=null&&Number.isFinite(s)&&r.current.api.pitchTo(s,{immediate:!o.animatePitch})}catch(u){c.error("Error in mapSettings reaction",u)}},[]),null}function v(t,i,r){t.zoomTo(A(i),{padding:r??L(i,F()),maxZoom:Number.isFinite(w.maxZoom)?void 0:10,within:G()})}function L(t,i){return!t||!i?0:(t.area/i.area>.1?15:25)/100}function O(t,i){if(t){const m=d(t);if(!m)return;const e=x()?.properties?.config;if(!e)throw new Error("Map center given in GPS, but the plan has no GPS config");return z({lat:m[0],lng:m[1]},e)??void 0}const r=d(i);if(r)return{x:r[0],y:r[1]}}
@@ -0,0 +1,16 @@
1
+ import { Box } from '@expofp/geometry';
2
+ /**
3
+ * The part of the canvas a command should frame into: what the user can see of the plan, narrowed by
4
+ * an overlay sat over it.
5
+ *
6
+ * Composed here rather than kept on the store, because nothing observes it — it is read once, by the
7
+ * command about to run. `canvasVisibleRectPx` is where the plan is *drawn* and does have observers;
8
+ * widening that would slide the plan every time a details panel opened, where this only moves where
9
+ * a `zoomTo` puts its target. The imperative renderer got the same effect by shifting the visible
10
+ * rect around each call and putting it back in a `finally`.
11
+ *
12
+ * Shared by both views, so a command frames into the same region with and without MapLibre.
13
+ * @returns The region, in css pixels from the canvas's top-left corner.
14
+ */
15
+ export declare function framingRect(): Box;
16
+ //# sourceMappingURL=framing-rect.d.ts.map
@@ -0,0 +1 @@
1
+ import{Box as r}from"@expofp/geometry";import{uiState as i}from"../../store";export function framingRect(){const t=i.canvasVisibleRectPx;return i.shouldShiftMapRect?i.rtl?r.fromMinMax(t.min,{x:t.max.x-i.overlayWidthPx,y:t.max.y}):r.fromMinMax({x:t.min.x+i.overlayWidthPx,y:t.min.y},t.max):t}
@@ -0,0 +1,11 @@
1
+ import { Box } from '@expofp/geometry';
2
+ /**
3
+ * The box to frame, widened to keep the kiosk in view when it stands on the floor being shown.
4
+ *
5
+ * Shared by both views, like `framingRect()`: the route's own bounds stop at the walkway nearest
6
+ * the kiosk, so without this the kiosk and the trail leading from it fall outside the frame.
7
+ * @param rect - What was asked for, in plan units.
8
+ * @returns The box to frame.
9
+ */
10
+ export declare function withKiosk(rect: Box): Box;
11
+ //# sourceMappingURL=with-kiosk.d.ts.map
@@ -0,0 +1 @@
1
+ import{Box as t}from"@expofp/geometry";import e,{uiState as n}from"../../store";import{areLayersEnabled as i}from"../../utils/areLayersEnabled.js";export function withKiosk(r){const o=n.kioskData;return!o||!(i()?o.z===e.routeStore.currentRouteLayer?.name:!0)?r:t.fromUnion(r,new t(o.x,o.y,1,1))}
@@ -1 +1 @@
1
- import{Box as h}from"@expofp/geometry";import{getSvgArea as f,isSvgAreaExplicit as v}from"../../data/svg.js";import u,{uiState as s}from"../../store";import{convertLocalToGps as T}from"../../utils/gps";import{useReaction as l}from"../../utils/mobx";import{expandRectByPercent as y,getVenueFitMarginPercent as b,resolveVenueFitRect as S}from"../../utils/scene-bounds";import{fitMapToLocalRect as d,getVisibleRectFitPadding as x,isLngLatInVisibleViewport as O}from"./utils/geo-config";const a=s,g=15,M=24,L=20;function R(e){return y(e,b(e,f())).expand(L)}function B(e,r){return Math.min(Math.max(r,e.getMinZoom()),e.getMaxZoom())}function I(e,r,m){if(m.length!==1)return!1;const o=m[0]?.id,t=u.poiMarkerStore.markers.find(c=>c.boothId===o);if(!t)return!1;const n=T(t.center.x,t.center.y,r.gpsConfig),i=x(M);return O(e,n,i)||e.easeTo({center:n,zoom:B(e,g),bearing:r.bearing,duration:500,essential:!0}),!0}export function useCameraReactions(e,r,m){l(()=>a.moveToBooths,o=>{const t=e.current;if(!o||!t||!r)return;const n=o.filter(c=>c.rect);if(n.length===0)return;if(I(t,r,n)){a.moveToBooths=null;return}const i=h.fromUnion(...n.map(c=>c.rect));d(t,R(i),r),a.moveToBooths=null}),l(()=>a.moveToRect,o=>{const t=e.current;!o||!t||!r||(d(t,o,r,{paddingPercent:a.moveToRectPaddingPercent}),a.moveToRect=null,a.moveToRectPaddingPercent=null)}),l(()=>a.zoomBy,o=>{const t=e.current;!o||!t||(t.flyTo({zoom:t.getZoom()+(o>1?.5:-.5),animate:!0,duration:500}),a.zoomBy=null)}),l(()=>[s.moveToLocation,u.maplibreStore.cameraPort,u.routeStore.currentPosition],([o])=>{if(!o)return;const t=e.current,n=u.routeStore.currentPosition;if(!n){s.moveToLocation=!1;return}if(!t)return;const{lng:i,lat:c}=n,P=typeof i=="number"&&Number.isFinite(i)&&typeof c=="number"&&Number.isFinite(c);s.moveToLocation=!1;let p;if(P)p=[i,c];else{if(!r)return;p=T(n.x,n.y,r.gpsConfig)}t.flyTo({center:p,animate:!0,duration:1e3})}),l(()=>s.centerMap,o=>{const t=e.current;if(!o||!t||!r)return;if(!(s.list.type==="search"&&!s.list.text)){const{rect:i}=S({layerViewbox:u.layerStore.viewboxRectangle,explicitArea:v()?f():null,layerRectangle:u.layerStore.rectangle,sceneDef:m,svgArea:f()});d(t,i,r)}s.centerMap=!1})}
1
+ import{Box as b}from"@expofp/geometry";import{getSvgArea as d,isSvgAreaExplicit as g}from"../../data/svg.js";import u,{uiState as s}from"../../store";import{convertLocalToGps as P}from"../../utils/gps";import{useReaction as m}from"../../utils/mobx";import{expandRectByPercent as y,getVenueFitMarginPercent as T,resolveVenueFitRect as S}from"../../utils/scene-bounds";import{withKiosk as x}from"../Map/with-kiosk.js";import{fitMapToLocalRect as h,getVisibleRectFitPadding as O,isLngLatInVisibleViewport as v}from"./utils/geo-config";const a=s,M=15,L=24,B=20;function I(r){return y(r,T(r,d())).expand(B)}function R(r,o){return Math.min(Math.max(o,r.getMinZoom()),r.getMaxZoom())}function _(r,o,f){if(f.length!==1)return!1;const e=f[0]?.id,t=u.poiMarkerStore.markers.find(c=>c.boothId===e);if(!t)return!1;const n=P(t.center.x,t.center.y,o.gpsConfig),i=O(L);return v(r,n,i)||r.easeTo({center:n,zoom:R(r,M),bearing:o.bearing,duration:500,essential:!0}),!0}export function useCameraReactions(r,o,f){m(()=>a.moveToBooths,e=>{const t=r.current;if(!e||!t||!o)return;const n=e.filter(c=>c.rect);if(n.length===0)return;if(_(t,o,n)){a.moveToBooths=null;return}const i=b.fromUnion(...n.map(c=>c.rect));h(t,I(i),o),a.moveToBooths=null}),m(()=>a.moveToRect,e=>{const t=r.current;if(!e||!t||!o)return;const{width:n,height:i}=e.size,c=n>0&&i>0?x(e):e,p=a.moveToRectPaddingPercent??T(e,d()),l=y(c,p/(1-2*p));h(t,l,o,{padding:0}),a.moveToRect=null,a.moveToRectPaddingPercent=null}),m(()=>a.zoomBy,e=>{const t=r.current;!e||!t||(t.flyTo({zoom:t.getZoom()+(e>1?.5:-.5),animate:!0,duration:500}),a.zoomBy=null)}),m(()=>[s.moveToLocation,u.maplibreStore.cameraPort,u.routeStore.currentPosition],([e])=>{if(!e)return;const t=r.current,n=u.routeStore.currentPosition;if(!n){s.moveToLocation=!1;return}if(!t)return;const{lng:i,lat:c}=n,p=typeof i=="number"&&Number.isFinite(i)&&typeof c=="number"&&Number.isFinite(c);s.moveToLocation=!1;let l;if(p)l=[i,c];else{if(!o)return;l=P(n.x,n.y,o.gpsConfig)}t.flyTo({center:l,animate:!0,duration:1e3})}),m(()=>s.centerMap,e=>{const t=r.current;if(!e||!t||!o)return;if(!(s.list.type==="search"&&!s.list.text)){const{rect:i}=S({layerViewbox:u.layerStore.viewboxRectangle,explicitArea:g()?d():null,layerRectangle:u.layerStore.rectangle,sceneDef:f,svgArea:d()});h(t,i,o)}s.centerMap=!1})}
@@ -13,14 +13,11 @@ export interface CameraPaddingOptions {
13
13
  }
14
14
  export interface FitMapOptions {
15
15
  duration?: number;
16
- /** Breathing room around the rect, in CSS pixels per side. */
17
- padding?: number;
18
16
  /**
19
- * Breathing room as a fraction of the canvas per side, overriding `padding`
20
- * when set — the form Fit-to-screen speaks, so the legacy renderer and the map
21
- * pad a venue fit by the same proportion rather than by the same pixel count.
17
+ * Breathing room around the rect, in CSS pixels per side. A margin meant as a share of the
18
+ * framing region is grown into the rect by the caller instead (the `moveToRect` reaction).
22
19
  */
23
- paddingPercent?: number | null;
20
+ padding?: number;
24
21
  }
25
22
  export declare const MAP_BOUNDS_PADDING_FACTOR = 3;
26
23
  export declare const MAP_BOUNDS_MIN_PADDING_DEGREES = 0.02;
@@ -52,7 +49,7 @@ export declare function cameraForLocalRect(rect: Box, config: TransformGeoConfig
52
49
  center: [number, number];
53
50
  zoom: number;
54
51
  } | null;
55
- export declare function getVisibleRectFitPadding(extraPadding?: number): CameraPaddingOptions;
52
+ export declare function getVisibleRectFitPadding(extraPadding?: number, visibleRect?: Box): CameraPaddingOptions;
56
53
  /** Whether a lng/lat projects inside the visible viewport, inset by `padding`. */
57
54
  export declare function isLngLatInVisibleViewport(map: MaplibreMap, lngLat: [number, number], padding: CameraPaddingOptions): boolean;
58
55
  /** Geographic configuration from fpGeo data; null when unavailable. */
@@ -1 +1 @@
1
- import{LngLatBounds as S,MercatorCoordinate as R}from"maplibre-gl";import{getFpGeo as z}from"../../../data/fpGeo.js";import{getSvgArea as A}from"../../../data/svg.js";import{uiState as E}from"../../../store";import{convertLocalToGps as x}from"../../../utils/gps";import{planBearing as C}from"../../../utils/planBearing";export const MAP_BOUNDS_PADDING_FACTOR=3,MAP_BOUNDS_MIN_PADDING_DEGREES=.02,INITIAL_FIT_ZOOM_ADJUSTMENT=.15;const _=1.42,v=.35,D=.9,N=.85,P=8,B=.05;export function deriveVenueMapBounds(t){const n=A(),e=[[n.min.x,n.min.y],[n.max.x,n.min.y],[n.max.x,n.max.y],[n.min.x,n.max.y]].map(([c,u])=>x(c,u,t));if(!e.every(([c,u])=>Number.isFinite(c)&&Number.isFinite(u)))return;const o=e.map(([c])=>c),i=e.map(([,c])=>c),r=Math.min(...o),s=Math.max(...o),a=Math.min(...i),m=Math.max(...i),h=Math.max((s-r)*MAP_BOUNDS_PADDING_FACTOR,MAP_BOUNDS_MIN_PADDING_DEGREES),l=Math.max((m-a)*MAP_BOUNDS_PADDING_FACTOR,MAP_BOUNDS_MIN_PADDING_DEGREES);return[[r-h,a-l],[s+h,m+l]]}function F(t,n,e,o){const i=Math.min(t.getZoom(),n),r=(e-i)*Math.min(1,o/_);return i+r>=t.getMinZoom()-B}function w(t,n,e){if(F(t,n,e,_))return _;if(!F(t,n,e,v))return null;let o=v,i=_;for(let r=0;r<P;r++){const s=(o+i)/2;F(t,n,e,s)?o=s:i=s}return o}export function getLocalRectGeoBounds(t,n){const e=[x(t.min.x,t.min.y,n),x(t.max.x,t.min.y,n),x(t.max.x,t.max.y,n),x(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 O=512;export function cameraForLocalRect(t,n,e,o,i){const r=[x(t.min.x,t.min.y,n),x(t.max.x,t.min.y,n),x(t.max.x,t.max.y,n),x(t.min.x,t.max.y,n)].map(([M,p])=>R.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),l=r.map(({x:M,y:p})=>M*m+p*a),c=Math.max(...h)-Math.min(...h),u=Math.max(...l)-Math.min(...l);if(c<=0||u<=0)return null;const y=o.width-i.left-i.right,f=o.height-i.top-i.bottom;if(y<=0||f<=0)return null;const b=Math.min(y/(c*O),f/(u*O));if(!(b>0))return null;const g=O*b,d=(Math.min(...h)+Math.max(...h))/2-(i.left-i.right)/2/g,L=(Math.min(...l)+Math.max(...l))/2-(i.top-i.bottom)/2/g,{lng:T,lat:I}=new R(d*a+L*m,-d*m+L*a).toLngLat();return{center:[T,I],zoom:Math.log2(b)}}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=E.canvasVisibleRectPx,e=E.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(){const t=z()?.properties?.config;if(!t)return null;const n=(t.p0.lng+t.p2.lng)/2,e=(t.p0.lat+t.p2.lat)/2,o=C(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),l=Math.max(t.getCanvas().clientWidth,t.getCanvas().clientHeight,1),c=Math.hypot(h.x-m.x,h.y-m.y)/l,u=Math.abs(t.getZoom()-a.zoom),y=o.duration??Math.min(2800,500+c*450+u*150),f={center:a.center,zoom:a.zoom,bearing:e.bearing,duration:y,essential:!0};if(c<=1.2&&u<=1.5){t.easeTo(f);return}const b=t.getBounds().extend(S.convert(i)),g=t.cameraForBounds(b,{padding:s,bearing:e.bearing});if(!g?.center||typeof g.zoom!="number"||g.zoom>=t.getZoom()-.2){t.easeTo(f);return}const d=w(t,a.zoom,g.zoom);if(d!==null){const L=Math.max(v,d*D),T=Math.round(y*N);t.flyTo({...f,curve:L,duration:T});return}t.easeTo(f)}
1
+ import{LngLatBounds as A,MercatorCoordinate as S}from"maplibre-gl";import{getFpGeo as C}from"../../../data/fpGeo.js";import{getSvgArea as D}from"../../../data/svg.js";import{uiState as v}from"../../../store";import{convertLocalToGps as x}from"../../../utils/gps";import{planBearing as N}from"../../../utils/planBearing";import{framingRect as R}from"../../Map/framing-rect.js";export const MAP_BOUNDS_PADDING_FACTOR=3,MAP_BOUNDS_MIN_PADDING_DEGREES=.02,INITIAL_FIT_ZOOM_ADJUSTMENT=.15;const b=1.42,O=.35,d=.9,B=.85,w=8,U=.05;export function deriveVenueMapBounds(t){const n=D(),o=[[n.min.x,n.min.y],[n.max.x,n.min.y],[n.max.x,n.max.y],[n.min.x,n.max.y]].map(([c,l])=>x(c,l,t));if(!o.every(([c,l])=>Number.isFinite(c)&&Number.isFinite(l)))return;const i=o.map(([c])=>c),e=o.map(([,c])=>c),s=Math.min(...i),r=Math.max(...i),a=Math.min(...e),m=Math.max(...e),h=Math.max((r-s)*MAP_BOUNDS_PADDING_FACTOR,MAP_BOUNDS_MIN_PADDING_DEGREES),u=Math.max((m-a)*MAP_BOUNDS_PADDING_FACTOR,MAP_BOUNDS_MIN_PADDING_DEGREES);return[[s-h,a-u],[r+h,m+u]]}function E(t,n,o,i){const e=Math.min(t.getZoom(),n),s=(o-e)*Math.min(1,i/b);return e+s>=t.getMinZoom()-U}function V(t,n,o){if(E(t,n,o,b))return b;if(!E(t,n,o,O))return null;let i=O,e=b;for(let s=0;s<w;s++){const r=(i+e)/2;E(t,n,o,r)?i=r:e=r}return i}export function getLocalRectGeoBounds(t,n){const o=[x(t.min.x,t.min.y,n),x(t.max.x,t.min.y,n),x(t.max.x,t.max.y,n),x(t.min.x,t.max.y,n)],i=o.map(([s])=>s),e=o.map(([,s])=>s);return[[Math.min(...i),Math.min(...e)],[Math.max(...i),Math.max(...e)]]}const I=512;export function cameraForLocalRect(t,n,o,i,e){const s=[x(t.min.x,t.min.y,n),x(t.max.x,t.min.y,n),x(t.max.x,t.max.y,n),x(t.min.x,t.max.y,n)].map(([g,p])=>S.fromLngLat({lng:g,lat:p}));if(!s.every(({x:g,y:p})=>Number.isFinite(g)&&Number.isFinite(p)))return null;const r=-o*Math.PI/180,a=Math.cos(r),m=Math.sin(r),h=s.map(({x:g,y:p})=>g*a-p*m),u=s.map(({x:g,y:p})=>g*m+p*a),c=Math.max(...h)-Math.min(...h),l=Math.max(...u)-Math.min(...u);if(c<=0||l<=0)return null;const y=i.width-e.left-e.right,f=i.height-e.top-e.bottom;if(y<=0||f<=0)return null;const L=Math.min(y/(c*I),f/(l*I));if(!(L>0))return null;const M=I*L,_=(Math.min(...h)+Math.max(...h))/2-(e.left-e.right)/2/M,T=(Math.min(...u)+Math.max(...u))/2-(e.top-e.bottom)/2/M,{lng:F,lat:z}=new S(_*a+T*m,-_*m+T*a).toLngLat();return{center:[F,z],zoom:Math.log2(L)}}export function getVisibleRectFitPadding(t=0,n=v.canvasVisibleRectPx){const o=v.screenSize;return n?{top:Math.max(0,n.min.y)+t,bottom:Math.max(0,o.height-n.max.y)+t,left:Math.max(0,n.min.x)+t,right:Math.max(0,o.width-n.max.x)+t}:{top:t,bottom:t,left:t,right:t}}export function isLngLatInVisibleViewport(t,n,o){const i=t.project(n),e=t.getCanvas();return i.x>=o.left&&i.x<=e.clientWidth-o.right&&i.y>=o.top&&i.y<=e.clientHeight-o.bottom}export function deriveGeoConfig(){const t=C()?.properties?.config;if(!t)return null;const n=(t.p0.lng+t.p2.lng)/2,o=(t.p0.lat+t.p2.lat)/2,i=N(t.p0,t.p2),e=Number.isFinite(i)?i:t.bearing??0;return{center:[n,o],bearing:e,zoom:16,gpsConfig:t}}export function fitMapToLocalRect(t,n,o,i={}){if(!t||!n||!o||n.size.height===1/0||n.size.width===1/0||n.size.height<=0||n.size.width<=0)return;const e=getLocalRectGeoBounds(n,o.gpsConfig),s=t.getCanvas(),r=getVisibleRectFitPadding(i.padding??50,R()),a=cameraForLocalRect(n,o.gpsConfig,o.bearing,{width:s.clientWidth,height:s.clientHeight},r);if(!a){t.fitBounds(e,{padding:r,bearing:o.bearing,essential:!0});return}const m=t.project(t.getCenter()),h=t.project(a.center),u=Math.max(t.getCanvas().clientWidth,t.getCanvas().clientHeight,1),c=Math.hypot(h.x-m.x,h.y-m.y)/u,l=Math.abs(t.getZoom()-a.zoom),y=i.duration??Math.min(2800,500+c*450+l*150),f={center:a.center,zoom:a.zoom,bearing:o.bearing,duration:y,essential:!0};if(c<=1.2&&l<=1.5){t.easeTo(f);return}const L=t.getBounds().extend(A.convert(e)),M=t.cameraForBounds(L,{padding:r,bearing:o.bearing});if(!M?.center||typeof M.zoom!="number"||M.zoom>=t.getZoom()-.2){t.easeTo(f);return}const _=V(t,a.zoom,M.zoom);if(_!==null){const T=Math.max(O,_*d),F=Math.round(y*B);t.flyTo({...f,curve:T,duration:F});return}t.easeTo(f)}
@@ -1,5 +1,6 @@
1
1
  export declare const VISIBILITY_STORAGE_KEY = "___visibility";
2
2
  export declare const PREVIEW_MODE_ATTRIBUTE = "data-preview-mode";
3
+ export declare const RUNTIME_LOADER_SPINNER_CLASS = "efp-runtime-loader-spinner";
3
4
  export declare const BOOTHS_PAINTER_MARKER = "booths";
4
5
  export declare const SEPARATOR = ":";
5
6
  export declare const OUTDOOR_LAYER_PREFIX = "Outdoor";
@@ -1 +1 @@
1
- export const VISIBILITY_STORAGE_KEY="___visibility",PREVIEW_MODE_ATTRIBUTE="data-preview-mode",BOOTHS_PAINTER_MARKER="booths",SEPARATOR=":",OUTDOOR_LAYER_PREFIX="Outdoor",POI_CLUSTER_RADIUS_PX=50,POI_CLUSTER_MIN_POINTS=3,POI_MARKER_PIN_WIDTH_PX=40,POI_SELECTED_PIN_WIDTH_PX=40,POI_PIN_DEFAULT_COLOR="#ea4236",POI_CLUSTER_SIZE_PX=36,POI_CLUSTER_COLOR="rgba(234, 66, 54, 0.85)",POI_CLUSTER_STROKE_COLOR="#ffffff",POI_CLUSTER_STROKE_WIDTH_PX=2,POI_CLUSTER_TEXT_SIZE_PX=14,LAYER_LOGOS_MARKER="logos",LAYER_ICONS_MARKER="icons",STRING_META_DELIMITER="$$",KIOSK_ENABLE_KEY="kiosk",SET_KIOSK_KEY="setkiosk",BOOKMARK_PAINTER_MARKER="booth-bookmark",DEBUG_KEY="debug",DEBUG_STORAGE_KEY="efp-debugMode",DEFAULT_UNITS="ft",PATHWAY_KEY="pathway",CACHE_DURATION=1e3,MOBILE_BREAKPOINT=768,LANGUAGE_TYPE="language",MAX_ROUTE_WAYPOINTS=8,VIEWER_MODE_STORAGE_KEY="efp-viewerMode",LEGACY_VIEWER_MODE_STORAGE_KEY="___viewer_mode",PREVIEW_MODE_STORAGE_KEY="efp-previewMode",LEGACY_PREVIEW_MODE_STORAGE_KEY="___preview_mode",UI_SCALE_STORAGE_KEY="efp-uiScale",LEGACY_UI_SCALE_STORAGE_KEY="___ui-scale",FONT_FACE="--expofp-font-face",FONT_WEIGHT_PRIMARY_BOOTH="--expofp-booth-main-weight",FONT_WEIGHT_SECONDARY_BOOTH="--expofp-booth-details-weight",FONT_WEIGHT_PRIMARY_EXHIBITOR="--expofp-exhibitor-main-weight",FONT_WEIGHT_SECONDARY_EXHIBITOR="--expofp-exhibitor-details-weight",FONT_WEIGHT_PRIMARY_SPECIAL="--expofp-booth-special-weight",ORIENTATION_GRANTED_KEY="efp-compass-permission-granted";
1
+ export const VISIBILITY_STORAGE_KEY="___visibility",PREVIEW_MODE_ATTRIBUTE="data-preview-mode",RUNTIME_LOADER_SPINNER_CLASS="efp-runtime-loader-spinner",BOOTHS_PAINTER_MARKER="booths",SEPARATOR=":",OUTDOOR_LAYER_PREFIX="Outdoor",POI_CLUSTER_RADIUS_PX=50,POI_CLUSTER_MIN_POINTS=3,POI_MARKER_PIN_WIDTH_PX=40,POI_SELECTED_PIN_WIDTH_PX=40,POI_PIN_DEFAULT_COLOR="#ea4236",POI_CLUSTER_SIZE_PX=36,POI_CLUSTER_COLOR="rgba(234, 66, 54, 0.85)",POI_CLUSTER_STROKE_COLOR="#ffffff",POI_CLUSTER_STROKE_WIDTH_PX=2,POI_CLUSTER_TEXT_SIZE_PX=14,LAYER_LOGOS_MARKER="logos",LAYER_ICONS_MARKER="icons",STRING_META_DELIMITER="$$",KIOSK_ENABLE_KEY="kiosk",SET_KIOSK_KEY="setkiosk",BOOKMARK_PAINTER_MARKER="booth-bookmark",DEBUG_KEY="debug",DEBUG_STORAGE_KEY="efp-debugMode",DEFAULT_UNITS="ft",PATHWAY_KEY="pathway",CACHE_DURATION=1e3,MOBILE_BREAKPOINT=768,LANGUAGE_TYPE="language",MAX_ROUTE_WAYPOINTS=8,VIEWER_MODE_STORAGE_KEY="efp-viewerMode",LEGACY_VIEWER_MODE_STORAGE_KEY="___viewer_mode",PREVIEW_MODE_STORAGE_KEY="efp-previewMode",LEGACY_PREVIEW_MODE_STORAGE_KEY="___preview_mode",UI_SCALE_STORAGE_KEY="efp-uiScale",LEGACY_UI_SCALE_STORAGE_KEY="___ui-scale",FONT_FACE="--expofp-font-face",FONT_WEIGHT_PRIMARY_BOOTH="--expofp-booth-main-weight",FONT_WEIGHT_SECONDARY_BOOTH="--expofp-booth-details-weight",FONT_WEIGHT_PRIMARY_EXHIBITOR="--expofp-exhibitor-main-weight",FONT_WEIGHT_SECONDARY_EXHIBITOR="--expofp-exhibitor-details-weight",FONT_WEIGHT_PRIMARY_SPECIAL="--expofp-booth-special-weight",ORIENTATION_GRANTED_KEY="efp-compass-permission-granted";
package/dist/esm/load.js CHANGED
@@ -1,4 +1,4 @@
1
- import"./utils/silence-mobx-react-lite-warning";import{applyIntents as m,loadConfig as p,setConfig as u}from"@expofp/config";import{safeLocalStorage as h}from"@expofp/utils";import l from"debug";import{initHtmlHead as y}from"./_misc_to_move/initHtmlHead";import{logBuildInfo as w}from"./_misc_to_move/logBuildInfo";import v from"./floorplan.loader";import{claimPlanSlot as g,disposePlan as E,registerPlanDisposer as S}from"./plan-lifecycle.js";import c from"./tools/report-error.js";import{brand as k}from"./utils/brand";import{applyEventHead as b,buildEventHead as x}from"./utils/event-head";import{formatEventTitle as _}from"./utils/event-title";import $ from"./utils/is-own-domain";import{migrateLegacyStorageKeys as B}from"./utils/legacy-storage-keys";const s=l("efp:load");export async function load(r,e={}){g();try{return await C(r,e)}catch(n){try{E()}catch(o){s("teardown after a failed load:",o)}throw n}}async function C(r,e={}){window.addEventListener("error",c),S(()=>window.removeEventListener("error",c)),y(),w(),l("efp:device").enabled&&import("./_misc_to_move/logDeviceInfo").then(t=>t.logDeviceInfo()).catch(()=>{});const n=e.element;let o;if(typeof n=="string"){const t=document.querySelector(n);if(!t)throw new Error(`Element not found for selector: ${n}`);o=t}else n?o=n:(o=document.getElementById("floorplan"),o||(o=document.createElement("div"),R(o),document.body.appendChild(o)));L(),o.setAttribute("data-efp-floorplan-defaults",""),document.documentElement.style.overscrollBehavior||="none",document.body.style.overscrollBehavior||="none",requestAnimationFrame(()=>{o.style.backgroundColor="#ebebeb"}),B();let a;try{if(a=await p(r,e,window.location.search,h()??void 0),!a.fpSvgJsRef)throw new Error("No floor plan drawing: the manifest must set `legacyDataUrlBase` (live event) or `fpSvgJsRef` (offline copy)")}catch(t){const{showEventNotFound:f}=await import("./tools/event-not-found");throw f(o),t}if(s("config",a),u(a),$){const t=_(a,k);t&&(document.title=t),b(document,x(a),`${window.location.origin}/`)}const i=new v(e,o),d=window.___fpResolve;return window.___fp=i,d&&(i.ready.then(()=>d(i)).catch(t=>s("placeholder resolve skipped:",t)),delete window.___fpResolve),i.ready.then(()=>{const t=new CustomEvent("expofp:ready",{detail:{floorplan:i}});window.__expofpReady=t,window.dispatchEvent(t)}).catch(t=>s("ready event skipped:",t)),i.ready.then(()=>m(i,a.intents)).catch(t=>s("config intents skipped:",t)),i}function L(){const r="efp-floorplan-defaults";if(document.getElementById(r))return;const e=document.createElement("style");e.id=r,e.textContent=`
1
+ import"./utils/silence-mobx-react-lite-warning";import{applyIntents as m,loadConfig as p,setConfig as u}from"@expofp/config";import{safeLocalStorage as h}from"@expofp/utils";import l from"debug";import{initHtmlHead as y}from"./_misc_to_move/initHtmlHead";import{logBuildInfo as w}from"./_misc_to_move/logBuildInfo";import{RUNTIME_LOADER_SPINNER_CLASS as v}from"./constants.js";import g from"./floorplan.loader";import{claimPlanSlot as E,disposePlan as S,registerPlanDisposer as k}from"./plan-lifecycle.js";import c from"./tools/report-error.js";import{brand as b}from"./utils/brand";import{applyEventHead as _,buildEventHead as x}from"./utils/event-head";import{formatEventTitle as $}from"./utils/event-title";import R from"./utils/is-own-domain";import{migrateLegacyStorageKeys as L}from"./utils/legacy-storage-keys";const s=l("efp:load");export async function load(r,e={}){E();try{return await C(r,e)}catch(n){try{S()}catch(o){s("teardown after a failed load:",o)}throw n}}async function C(r,e={}){window.addEventListener("error",c),k(()=>window.removeEventListener("error",c)),y(),w(),l("efp:device").enabled&&import("./_misc_to_move/logDeviceInfo").then(t=>t.logDeviceInfo()).catch(()=>{});const n=e.element;let o;if(typeof n=="string"){const t=document.querySelector(n);if(!t)throw new Error(`Element not found for selector: ${n}`);o=t}else n?o=n:(o=document.getElementById("floorplan"),o||(o=document.createElement("div"),I(o),document.body.appendChild(o)));B(),o.setAttribute("data-efp-floorplan-defaults",""),document.documentElement.style.overscrollBehavior||="none",document.body.style.overscrollBehavior||="none",requestAnimationFrame(()=>{o.style.backgroundColor="#ebebeb"}),L();let a;try{if(a=await p(r,e,window.location.search,h()??void 0),!a.fpSvgJsRef)throw new Error("No floor plan drawing: the manifest must set `legacyDataUrlBase` (live event) or `fpSvgJsRef` (offline copy)")}catch(t){const{showEventNotFound:f}=await import("./tools/event-not-found");throw f(o),t}if(s("config",a),u(a),R){const t=$(a,b);t&&(document.title=t),_(document,x(a),`${window.location.origin}/`)}const i=new g(e,o),d=window.___fpResolve;return window.___fp=i,d&&(i.ready.then(()=>d(i)).catch(t=>s("placeholder resolve skipped:",t)),delete window.___fpResolve),i.ready.then(()=>{const t=new CustomEvent("expofp:ready",{detail:{floorplan:i}});window.__expofpReady=t,window.dispatchEvent(t)}).catch(t=>s("ready event skipped:",t)),i.ready.then(()=>m(i,a.intents)).catch(t=>s("config intents skipped:",t)),i}function B(){const r="efp-floorplan-defaults";if(document.getElementById(r))return;const e=document.createElement("style");e.id=r,e.textContent=`
2
2
  [data-efp-floorplan-defaults] {
3
3
  position: fixed;
4
4
  top: 0;
@@ -10,7 +10,7 @@ import"./utils/silence-mobx-react-lite-warning";import{applyIntents as m,loadCon
10
10
  overscroll-behavior: none;
11
11
  background: #fff;
12
12
  transition: background-color 2s ease;
13
- }`,document.head.prepend(e)}function R(r){if(!document.adoptedStyleSheets)return;const e="efp-runtime-loader-spinner",n=`
13
+ }`,document.head.prepend(e)}function I(r){if(!document.adoptedStyleSheets)return;const e=v,n=`
14
14
  .${e} {
15
15
  position: fixed;
16
16
  top: 50%;
@@ -42,11 +42,11 @@ export default class UIState {
42
42
  moveToBooths: Booth[] | null;
43
43
  moveToRect: Box | null;
44
44
  /**
45
- * Breathing room the pending `moveToRect` wants, as a fraction of the viewport
46
- * per side. `null` leaves each renderer on its own default — the adaptive
47
- * 15%/25% for the legacy one, a fixed inset for the map. Fit-to-screen sets 0:
48
- * its rect is the framing itself, so padding it would zoom past the authored
49
- * viewbox.
45
+ * Breathing room the pending `moveToRect` wants, as a fraction of the framing
46
+ * region per side — the visible map less the side panel, in both renderers.
47
+ * `null` leaves it to the adaptive 15%/25% rule, which both renderers apply.
48
+ * Fit-to-screen sets 0: its rect is the framing itself, so padding it would
49
+ * zoom past the authored viewbox.
50
50
  */
51
51
  moveToRectPaddingPercent: number | null;
52
52
  moveToLocation: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expofp/floorplan",
3
- "version": "3.45.0",
3
+ "version": "3.45.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/expofp/efp-app.git",
@@ -69,15 +69,15 @@
69
69
  "tslib": "^2.3.0",
70
70
  "uuid": "^9.0.1",
71
71
  "zod": "4.4.3",
72
- "@expofp/config": "3.45.0",
73
- "@expofp/debug": "3.45.0",
74
- "@expofp/geometry": "3.45.0",
75
- "@expofp/renderer": "3.45.0",
76
- "@expofp/resolve": "3.45.0",
77
- "@expofp/ui": "3.45.0",
78
- "@expofp/utils": "3.45.0",
79
- "@expofp/wayfinding": "3.45.0",
80
- "@expofp/schema": "3.45.0"
72
+ "@expofp/config": "3.45.2",
73
+ "@expofp/debug": "3.45.2",
74
+ "@expofp/geometry": "3.45.2",
75
+ "@expofp/renderer": "3.45.2",
76
+ "@expofp/resolve": "3.45.2",
77
+ "@expofp/schema": "3.45.2",
78
+ "@expofp/ui": "3.45.2",
79
+ "@expofp/utils": "3.45.2",
80
+ "@expofp/wayfinding": "3.45.2"
81
81
  },
82
82
  "devDependencies": {
83
83
  "@babel/plugin-proposal-decorators": "^8.0.2",