@expofp/floorplan 3.45.0 → 3.45.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dist/browser/{Button-6lV64H09.js → Button-Dcwu_Erq.js} +5 -5
  2. package/dist/browser/{CookieConsent-k11VHxoM.js → CookieConsent-DGTw9yBm.js} +7 -7
  3. package/dist/browser/{Debug-DbfbGWb0.js → Debug-JZ9md0eP.js} +7 -7
  4. package/dist/browser/{DebugTools-BjHOBi_k.js → DebugTools-CratPuV3.js} +6 -6
  5. package/dist/browser/{Demo-CrFjKybB.js → Demo-CUmjH8Ho.js} +9 -9
  6. package/dist/browser/{Free-4IN6GHrY.js → Free-DsJz0sgq.js} +10 -10
  7. package/dist/browser/{GalleryContainer-BWd-8Nhp.js → GalleryContainer-CEdKWbFL.js} +11 -11
  8. package/dist/browser/{GpsLoader-C43ADyfU.js → GpsLoader-CpihsOIR.js} +13 -13
  9. package/dist/browser/{KioskStore-0xBjJ9AG.js → KioskStore-C_LBovdc.js} +9 -9
  10. package/dist/browser/{LayerStore-BifpIwHB.js → LayerStore-91e6BAzl.js} +16 -16
  11. package/dist/browser/{MaplibreAdapter-CxETR3-R.js → MaplibreAdapter-9qou3kuu.js} +486 -496
  12. package/dist/browser/{ModalContainer-IvkrtwT_.js → ModalContainer-BXfF2Q_j.js} +10 -10
  13. package/dist/browser/{PermissionNotice-C4Nu1dPO.js → PermissionNotice-Cs-hDB1d.js} +6 -6
  14. package/dist/browser/{RouteStore-ltbgXRLP.js → RouteStore-CDPMgE4a.js} +9 -9
  15. package/dist/browser/{SetKioskMode-BWzFzO_Q.js → SetKioskMode-3qeyrZoQ.js} +11 -11
  16. package/dist/browser/{ShowKiosk-BYOTTOrX.js → ShowKiosk-kOOPVQEC.js} +10 -10
  17. package/dist/browser/{UIState-BG-A7rPb.js → UIState-CruLIa-8.js} +13 -13
  18. package/dist/browser/{ViewerMenuPanel-DscD3jCY.js → ViewerMenuPanel-KKVazBcQ.js} +10 -10
  19. package/dist/browser/{add-debug-secret-listener-qgQOxLV_.js → add-debug-secret-listener-Dk6I0moa.js} +1 -1
  20. package/dist/browser/{adopt-global-settings-CB1YrOJs.js → adopt-global-settings-y2ubRt8B.js} +9 -9
  21. package/dist/browser/{boolean-editor-DcFqYLg6.js → boolean-editor-DkLLh76y.js} +9 -9
  22. package/dist/browser/{bootIntercom-DJEOZaFU.js → bootIntercom-5AKlon7N.js} +2 -2
  23. package/dist/browser/bundle.json +87 -87
  24. package/dist/browser/{camera-events-BwP3bfY4.js → camera-events-DbMaLp1j.js} +1 -1
  25. package/dist/browser/{classnames-C6CE8V3C.js → classnames-Cjhuw82Y.js} +2 -2
  26. package/dist/browser/{client-B42ooBdH.js → client-DEugfaqe.js} +5 -5
  27. package/dist/browser/{components-DelXq6ex.js → components-BOe9R3hC.js} +687 -701
  28. package/dist/browser/{create-live-plan-jO-YW94S.js → create-live-plan-643NFN4Y.js} +13 -13
  29. package/dist/browser/{debug-context-BFAUm0Rv.js → debug-context-Ctd_2DsZ.js} +5 -5
  30. package/dist/browser/{debug-overlay-0pLu5_hz.js → debug-overlay-CNtn-y2A.js} +10 -10
  31. package/dist/browser/{debug-ui-CPF3Fr0y.js → debug-ui-BFrAXZTt.js} +6 -6
  32. package/dist/browser/{dist-5MtJlmvC.js → dist-BeUUWH0c.js} +5 -5
  33. package/dist/browser/{dist-D7lv86ly.js → dist-CwAXjSKp.js} +3 -3
  34. package/dist/browser/{dist-BImkgFoY.js → dist-oubL2fXt.js} +6 -6
  35. package/dist/browser/{efp-debug-init-DBnQHIuj.js → efp-debug-init-DxqSbETg.js} +3 -3
  36. package/dist/browser/{enum-editor-wagTer9Z.js → enum-editor-px6vgaqK.js} +4 -4
  37. package/dist/browser/{es5-ClZJZH3H.js → es5-CH_bA74p.js} +2 -2
  38. package/dist/browser/{event-head-Dvg64Dl9.js → event-head-CDMutSDx.js} +1 -1
  39. package/dist/browser/{event-not-found-CmHnmais.js → event-not-found-kZi9Tm3H.js} +3 -3
  40. package/dist/browser/{event-scoped-cache-blYstzYW.js → event-scoped-cache-Dn2rQ3T_.js} +2 -2
  41. package/dist/browser/{expofpUrl-D99TqyHD.js → expofpUrl-CAzeD2_k.js} +1 -1
  42. package/dist/browser/{exports-BBJtyyI0.js → exports-7gqjmj0R.js} +1 -1
  43. package/dist/browser/{favicon-Bac0ZnSB.js → favicon-wPU50D_T.js} +1 -1
  44. package/dist/browser/{fetch-retry.umd-Dkr69k7z.js → fetch-retry.umd-DvG22Oyz.js} +2 -2
  45. package/dist/browser/{flex-2znF0sHW.js → flex-BBkw01oJ.js} +5 -5
  46. package/dist/browser/{floorplan.loader-B2NptbPQ.js → floorplan.loader-DHlIL2Jh.js} +12 -12
  47. package/dist/browser/{floorplan.ready-DTyG-lkM.js → floorplan.ready-D6sP5Dzi.js} +23 -23
  48. package/dist/browser/{useManageTraffic-C-4Maw9l.js → framing-rect-BTvtbCvd.js} +218 -199
  49. package/dist/browser/{freeBanner-yyOqSdAy.js → freeBanner-BLieMmCe.js} +2 -2
  50. package/dist/browser/{fuse-x_QTzSiL.js → fuse-BYZURCHm.js} +2 -2
  51. package/dist/browser/{i18n-CLEztXjo.js → i18n-UxIFjlzb.js} +6 -6
  52. package/dist/browser/index.js +17 -17
  53. package/dist/browser/{index.module-C9C4kJk7.js → index.module-gZhGxKYh.js} +4 -4
  54. package/dist/browser/{init-ui-rxZzKF4X.js → init-ui-DqN9Ga2O.js} +9 -9
  55. package/dist/browser/{integrateKiosk-DsU-d7uk.js → integrateKiosk-D-BA3s4g.js} +5 -5
  56. package/dist/browser/{is-debug-Bnj4naYd.js → is-debug-Bm0SoIKk.js} +4 -4
  57. package/dist/browser/{is-own-domain-DNjOZllq.js → is-own-domain-BeUqGWxA.js} +1 -1
  58. package/dist/browser/{is-webview-Drer0GOu.js → is-webview-D8PFcU-t.js} +1 -1
  59. package/dist/browser/{jsx-runtime-DB8EwfzE.js → jsx-runtime--7WN7ch2.js} +2 -2
  60. package/dist/browser/{kiosk-mode-B89VL0oY.js → kiosk-mode-XRBIqAOG.js} +3 -3
  61. package/dist/browser/{kiosk-record-rnTon4Lp.js → kiosk-record-lQMkL50s.js} +1 -1
  62. package/dist/browser/{kioskApi-opoHdUqq.js → kioskApi-D-yj1FWd.js} +7 -7
  63. package/dist/browser/{lib-eiqwFHwk.js → lib-Bga7_H1q.js} +3 -3
  64. package/dist/browser/{loadImage-BS80HTUK.js → loadImage-CmdsQylv.js} +1 -1
  65. package/dist/browser/{logDeviceInfo-BqSbYo5l.js → logDeviceInfo-CY7UomaF.js} +9 -9
  66. package/dist/browser/{mobx-9NGoPiek.js → mobx-Bx4ZGHQ6.js} +4 -4
  67. package/dist/browser/{mobx.module-BP1vMHLz.js → mobx.module-Ct-ywxj5.js} +1 -1
  68. package/dist/browser/{optional-boolean-editor-D6hR19BE.js → optional-boolean-editor-DJnmDRzX.js} +3 -3
  69. package/dist/browser/{optional-enum-editor-BQPM-fRt.js → optional-enum-editor--vIuPZNm.js} +4 -4
  70. package/dist/browser/{optional-string-editor-DUXoDnXB.js → optional-string-editor-BRFjphR8.js} +4 -4
  71. package/dist/browser/{particles.min-CBeInmmW.js → particles.min-BnHTt56K.js} +2 -2
  72. package/dist/browser/{react-Dg88gKA7.js → react-Bjt3-m5k.js} +2 -2
  73. package/dist/browser/{react-dom-C3PpoQeD.js → react-dom-vr2-i-5R.js} +3 -3
  74. package/dist/browser/{rolldown-runtime-C7pJ6q0h.js → rolldown-runtime-Cscki9eS.js} +1 -1
  75. package/dist/browser/{scene-CV1XFwO9.js → scene-Db6sOX9h.js} +2 -2
  76. package/dist/browser/{scheduler-D-EvNbvQ.js → scheduler-CFHtYDYI.js} +2 -2
  77. package/dist/browser/{select-CQPuihmE.js → select-C9rxTFpi.js} +10 -10
  78. package/dist/browser/{settings-BBn9P5W0.js → settings-D7YmKLIx.js} +2 -2
  79. package/dist/browser/{settings-item-BOVedxqA.js → settings-item-BNXaf4NN.js} +6 -6
  80. package/dist/browser/{store-D73yMRu5.js → store-BFM5M0Uq.js} +2 -2
  81. package/dist/browser/{string-editor-Drmcb4Uw.js → string-editor-D2J_ipcW.js} +4 -4
  82. package/dist/browser/{text-field-CnzYOUfF.js → text-field-DjQ_BeUk.js} +5 -5
  83. package/dist/browser/{theme-B4d7ReQC.js → theme-C5g_OQXn.js} +8 -8
  84. package/dist/browser/{ui-DQ22eDdk.js → ui-642bT-_c.js} +8 -8
  85. package/dist/browser/{useRenderTarget-BaCkqntS.js → useRenderTarget-BAEuBxcJ.js} +4 -4
  86. package/dist/browser/{viewport-CcbGLmJI.js → viewport-DmBpectu.js} +3 -3
  87. package/dist/browser/{wayfinding-4TI6Xwmj.js → wayfinding-FHTu4Wgf.js} +5 -5
  88. package/dist/esm/components/Map/MapCamera.js +1 -1
  89. package/dist/esm/components/Map/framing-rect.d.ts +16 -0
  90. package/dist/esm/components/Map/framing-rect.js +1 -0
  91. package/dist/esm/components/Map/with-kiosk.d.ts +11 -0
  92. package/dist/esm/components/Map/with-kiosk.js +1 -0
  93. package/dist/esm/components/Maplibre/useCameraReactions.js +1 -1
  94. package/dist/esm/components/Maplibre/utils/geo-config.d.ts +4 -7
  95. package/dist/esm/components/Maplibre/utils/geo-config.js +1 -1
  96. package/dist/esm/store/UIState.d.ts +5 -5
  97. package/package.json +10 -10
@@ -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.1" };
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-y2ubRt8B.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.1" };
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-Cscki9eS.js";
10
+ import { t } from "./react-Bjt3-m5k.js";
11
+ import { t as n } from "./jsx-runtime--7WN7ch2.js";
12
+ import { c as r, l as i, t as a, u as o, y as s } from "./flex-BBkw01oJ.js";
13
+ import { t as c } from "./classnames-Cjhuw82Y.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.1" };
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-Ct-ywxj5.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.1" };
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--7WN7ch2.js";
10
+ import { t } from "./settings-item-BNXaf4NN.js";
11
+ import { t as n } from "./text-field-DjQ_BeUk.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.1" };
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-Cscki9eS.js";
10
+ import { t } from "./react-Bjt3-m5k.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-BBkw01oJ.js";
12
+ import { t as l } from "./classnames-Cjhuw82Y.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.1" };
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-Cscki9eS.js";
10
+ import { t } from "./react-Bjt3-m5k.js";
11
+ import { t as n } from "./jsx-runtime--7WN7ch2.js";
12
+ import { t as r } from "./react-dom-vr2-i-5R.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-BBkw01oJ.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-oubL2fXt.js";
15
+ import { t as y } from "./classnames-Cjhuw82Y.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.1" };
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-Cscki9eS.js";
10
+ import { a as t, i as n, s as r } from "./efp-debug-init-DxqSbETg.js";
11
+ import { a as i, i as a } from "./adopt-global-settings-y2ubRt8B.js";
12
+ import { t as o } from "./jsx-runtime--7WN7ch2.js";
13
+ import "./settings-D7YmKLIx.js";
14
+ import { t as s } from "./add-debug-secret-listener-Dk6I0moa.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-BFrAXZTt.js"), { createRoot: i } = await import("./client-DEugfaqe.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.1" };
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-Cscki9eS.js";
10
+ import { t } from "./react-Bjt3-m5k.js";
11
+ import { u as n } from "./store-BFM5M0Uq.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.1" };
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-BFM5M0Uq.js";
10
+ import { t } from "./LayerStore-91e6BAzl.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.1" };
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-Cscki9eS.js";
10
+ import { o as n } from "./is-debug-Bm0SoIKk.js";
11
+ import { i as r, l as i } from "./mobx.module-Ct-ywxj5.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-91e6BAzl.js";
13
13
  //#region ../geometry/src/lib/geo.ts
14
14
  var D = 6371e3;
15
15
  function O(e, t) {
@@ -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)}
@@ -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.1",
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.1",
73
+ "@expofp/debug": "3.45.1",
74
+ "@expofp/geometry": "3.45.1",
75
+ "@expofp/renderer": "3.45.1",
76
+ "@expofp/resolve": "3.45.1",
77
+ "@expofp/schema": "3.45.1",
78
+ "@expofp/ui": "3.45.1",
79
+ "@expofp/utils": "3.45.1",
80
+ "@expofp/wayfinding": "3.45.1"
81
81
  },
82
82
  "devDependencies": {
83
83
  "@babel/plugin-proposal-decorators": "^8.0.2",