@expofp/floorplan 3.1.6 → 3.1.8

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 (51) hide show
  1. package/dist/browser/{CookieConsent-BQRtYE9s.js → CookieConsent-BWIz5A9p.js} +34 -32
  2. package/dist/browser/{Debug-CqIDicZk.js → Debug-Dc-CpIuW.js} +6 -6
  3. package/dist/browser/{Demo-DHwBBvDj.js → Demo-C-gDoJHz.js} +8 -8
  4. package/dist/browser/{Free-CGFqucK0.js → Free-B_Nc0lBV.js} +8 -8
  5. package/dist/browser/{Gallery-brxxV-es.js → Gallery-NW3tpm3U.js} +8 -8
  6. package/dist/browser/{GpsLoader-huNG_SEW.js → GpsLoader-BgtxLTgL.js} +8 -8
  7. package/dist/browser/{KioskStore-OxVGiMqM.js → KioskStore-O9lcbMgO.js} +3 -3
  8. package/dist/browser/{Mapbox-B6Bc6kvJ.js → Mapbox-n8XdO_JZ.js} +8 -8
  9. package/dist/browser/{SetKioskMode-kMWI1Ank.js → SetKioskMode-BSrhzr-T.js} +7 -7
  10. package/dist/browser/{ShowKiosk-BIauf0VT.js → ShowKiosk-ChdkT29W.js} +9 -9
  11. package/dist/browser/{ThreeComponent-BB2oeLUQ.js → ThreeComponent-C9NgJy3L.js} +9 -9
  12. package/dist/browser/{TouchHand-s_3z3HHs.js → TouchHand-j9wM9VIW.js} +4 -4
  13. package/dist/browser/{ViewerMenuPanel-DmR7UZRv.js → ViewerMenuPanel-B-eQvgxu.js} +7 -7
  14. package/dist/browser/{add-debug-secret-listener-DzCEnj9u.js → add-debug-secret-listener-hyBkCStK.js} +1 -1
  15. package/dist/browser/{boolean-editor-7sR_iyHL.js → boolean-editor-CtepaQAf.js} +6 -6
  16. package/dist/browser/{bootIntercom-CdouL-BE.js → bootIntercom-CWJHIFsy.js} +1 -1
  17. package/dist/browser/bundle.json +44 -44
  18. package/dist/browser/{chunk-5s3M-J3g.js → chunk-CmzsSKsP.js} +1 -1
  19. package/dist/browser/{classnames-DLZ1u1dy.js → classnames-CV7GydgO.js} +2 -2
  20. package/dist/browser/{client-D37dTvOp.js → client-CW46IlZK.js} +4 -4
  21. package/dist/browser/{data-CGWR_QAC.js → data-BFFP23Yx.js} +3 -3
  22. package/dist/browser/{debug-overlay-C0eS2gGV.js → debug-overlay-DK1IpDkH.js} +8 -8
  23. package/dist/browser/{debug-ui-CC3jwsbR.js → debug-ui-Bk_cgOg0.js} +6 -6
  24. package/dist/browser/{dist-DshHlWqx.js → dist-msXGDyJE.js} +5 -5
  25. package/dist/browser/{exports-DotumsAg.js → exports-CWJfbRRi.js} +1 -1
  26. package/dist/browser/{favicon-DMl0QnQC.js → favicon-Dx5hE2TC.js} +1 -1
  27. package/dist/browser/{fetch-retry.umd-DIvq8vBo.js → fetch-retry.umd--f_V0nbP.js} +2 -2
  28. package/dist/browser/{flex-CvtwJKEH.js → flex-DayQlZNC.js} +6 -6
  29. package/dist/browser/{floorplan.loader-DNg31ZpC.js → floorplan.loader-ChwMFO3K.js} +9 -9
  30. package/dist/browser/{floorplan.ready-CcU0CPvR.js → floorplan.ready-DH6TL_BA.js} +10 -10
  31. package/dist/browser/fuse-Cx2xVr92.js +1177 -0
  32. package/dist/browser/index.js +11 -11
  33. package/dist/browser/{is-debug-DTyH3H5u.js → is-debug-DeMC2fj6.js} +2 -2
  34. package/dist/browser/{jsx-runtime-DGpX2A7L.js → jsx-runtime-CeW-_L98.js} +2 -2
  35. package/dist/browser/{lib-o2gJt9qP.js → lib-ouUEfatK.js} +4 -4
  36. package/dist/browser/{main-D8Wb0Q22.js → main-C8DYHeS3.js} +1 -1
  37. package/dist/browser/{mobx-TBqijVh8.js → mobx-BTzRLiLH.js} +4 -4
  38. package/dist/browser/{particles.min-Doq-QEvC.js → particles.min-CuOEuyDw.js} +2 -2
  39. package/dist/browser/{prop-types-Ca2dELmw.js → prop-types-CkH4l5ny.js} +2 -2
  40. package/dist/browser/{react-CeEvNmEB.js → react-_GkslNER.js} +2 -2
  41. package/dist/browser/{react-dom-BB0C4Sxg.js → react-dom-Cq9do5W9.js} +3 -3
  42. package/dist/browser/{reset-all-settings-BAfPvEum.js → reset-all-settings-hgrZphbe.js} +1 -1
  43. package/dist/browser/{settings-VfT-AYP7.js → settings-BIMaTEyo.js} +6 -6
  44. package/dist/browser/{src-BLrvRGCp.js → src-BGoCtwZn.js} +4 -4
  45. package/dist/browser/{store-DZdC2ZQ6.js → store-B0ML_owv.js} +14 -11
  46. package/dist/browser/{ui-Dyvo4yyp.js → ui-vdOqnu50.js} +6 -6
  47. package/dist/esm/components/Map/drawing/config/loadBoothsImages.js +1 -1
  48. package/dist/esm/components/Map/traffic/useManageTraffic.js +1 -1
  49. package/dist/esm/renderer/engine-core/utils/rotation.js +1 -1
  50. package/package.json +4 -4
  51. package/dist/browser/fuse-FpOCifji.js +0 -887
@@ -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.1.6" };
4
+ e.SENTRY_RELEASE = { id: "3.1.8" };
5
5
  var t = new e.Error().stack;
6
- t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "dcd83088-ae27-411a-a252-f84a8bc065fa", e._sentryDebugIdIdentifier = "sentry-dbid-dcd83088-ae27-411a-a252-f84a8bc065fa");
6
+ t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "63ff9726-16ec-41de-9e42-14ed158803af", e._sentryDebugIdIdentifier = "sentry-dbid-63ff9726-16ec-41de-9e42-14ed158803af");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./chunk-5s3M-J3g.js";
10
- import { Et as t } from "./is-debug-DTyH3H5u.js";
11
- import { a as n, t as r } from "./floorplan.loader-DNg31ZpC.js";
9
+ import { r as e } from "./chunk-CmzsSKsP.js";
10
+ import { Et as t } from "./is-debug-DeMC2fj6.js";
11
+ import { a as n, t as r } from "./floorplan.loader-ChwMFO3K.js";
12
12
  //#region ../utils/src/lib/deep-freeze.ts
13
13
  function i(e) {
14
14
  return typeof e != "object" || !e ? e : (Object.getOwnPropertyNames(e).forEach((t) => {
@@ -19,7 +19,7 @@ function i(e) {
19
19
  //#endregion
20
20
  //#region ../utils/src/lib/fetch-with-retry.ts
21
21
  var a, o = async function(...t) {
22
- return a || (a = typeof window < "u" && typeof document < "u" ? window.fetch.bind(window) : (await import("./fetch-retry.umd-DIvq8vBo.js").then((t) => /* @__PURE__ */ e(t.default, 1))).default(globalThis.fetch)), a(...t);
22
+ return a || (a = typeof window < "u" && typeof document < "u" ? window.fetch.bind(window) : (await import("./fetch-retry.umd--f_V0nbP.js").then((t) => /* @__PURE__ */ e(t.default, 1))).default(globalThis.fetch)), a(...t);
23
23
  };
24
24
  //#endregion
25
25
  //#region ../utils/src/lib/import-node-module.ts
@@ -88,7 +88,7 @@ function y() {
88
88
  e.name = "viewport", e.content = "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no", document.head.appendChild(e);
89
89
  }
90
90
  let e = () => !!document.querySelector("link[rel=\"icon\"]");
91
- e() || import("./favicon-DMl0QnQC.js").then(({ default: t }) => {
91
+ e() || import("./favicon-Dx5hE2TC.js").then(({ default: t }) => {
92
92
  if (e()) return;
93
93
  let n = document.createElement("link");
94
94
  n.rel = "icon", n.type = "image/png", n.href = t, document.head.appendChild(n);
@@ -98,10 +98,10 @@ function y() {
98
98
  //#region src/_misc_to_move/logBuildInfoImpl.ts
99
99
  function b() {
100
100
  let e = {
101
- version: "3.1.6",
102
- commit: "cce11b89b",
101
+ version: "3.1.8",
102
+ commit: "1293e97f5",
103
103
  branch: "vite-main",
104
- built: "2026-05-04T12:43:26.661Z"
104
+ built: "2026-05-04T20:20:04.434Z"
105
105
  };
106
106
  if (e) {
107
107
  let t = new Date(e.built);
@@ -141,7 +141,7 @@ async function C(e, t) {
141
141
  ...n,
142
142
  element: a
143
143
  }), l = window.___fpResolve;
144
- return window.___fp = c, l && (c.ready.then(() => l(c)), delete window.___fpResolve), c.ready.then(() => window.dispatchEvent(new CustomEvent("expofp:ready", { detail: { floorplan: c } }))), import("./src-BLrvRGCp.js").then(({ initDebug: e }) => e()).catch(() => {}), c;
144
+ return window.___fp = c, l && (c.ready.then(() => l(c)), delete window.___fpResolve), c.ready.then(() => window.dispatchEvent(new CustomEvent("expofp:ready", { detail: { floorplan: c } }))), import("./src-BGoCtwZn.js").then(({ initDebug: e }) => e()).catch(() => {}), c;
145
145
  }
146
146
  function w(e) {
147
147
  if (!document.adoptedStyleSheets) return;
@@ -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.1.6" };
4
+ e.SENTRY_RELEASE = { id: "3.1.8" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "7f70a974-17d7-4e3e-a930-88c4acc453e1", e._sentryDebugIdIdentifier = "sentry-dbid-7f70a974-17d7-4e3e-a930-88c4acc453e1");
7
7
  } catch {}
8
8
  })();
9
- import { r as e, t } from "./chunk-5s3M-J3g.js";
9
+ import { r as e, t } from "./chunk-CmzsSKsP.js";
10
10
  //#region ../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js
11
11
  var n = /* @__PURE__ */ t(((e, t) => {
12
12
  var n = 1e3, r = n * 60, i = r * 60, a = i * 24, o = a * 7, s = a * 365.25;
@@ -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.1.6" };
4
+ e.SENTRY_RELEASE = { id: "3.1.8" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "185fe5dc-6878-459f-9755-10bdfd6a9608", e._sentryDebugIdIdentifier = "sentry-dbid-185fe5dc-6878-459f-9755-10bdfd6a9608");
7
7
  } catch {}
8
8
  })();
9
- import { t as e } from "./chunk-5s3M-J3g.js";
9
+ import { t as e } from "./chunk-CmzsSKsP.js";
10
10
  //#region ../../node_modules/.pnpm/react@19.2.5/node_modules/react/cjs/react-jsx-runtime.production.js
11
11
  var t = /* @__PURE__ */ e(((e) => {
12
12
  var t = Symbol.for("react.transitional.element"), n = Symbol.for("react.fragment");
@@ -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.1.6" };
4
+ e.SENTRY_RELEASE = { id: "3.1.8" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "1bdbedd4-2bb9-4fab-8f4e-326dd66fac98", e._sentryDebugIdIdentifier = "sentry-dbid-1bdbedd4-2bb9-4fab-8f4e-326dd66fac98");
7
7
  } catch {}
8
8
  })();
9
- import { t as e } from "./chunk-5s3M-J3g.js";
10
- import { t } from "./react-CeEvNmEB.js";
11
- import { t as n } from "./prop-types-Ca2dELmw.js";
9
+ import { t as e } from "./chunk-CmzsSKsP.js";
10
+ import { t } from "./react-_GkslNER.js";
11
+ import { t as n } from "./prop-types-CkH4l5ny.js";
12
12
  //#region ../../node_modules/.pnpm/qr.js@0.0.0/node_modules/qr.js/lib/ErrorCorrectLevel.js
13
13
  var r = /* @__PURE__ */ e(((e, t) => {
14
14
  t.exports = {
@@ -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.1.6" };
5
+ e.SENTRY_RELEASE = { id: "3.1.8" };
6
6
  var t = new e.Error().stack;
7
7
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "a5190037-4ae1-4b9d-9ef7-d38ebd0da919", e._sentryDebugIdIdentifier = "sentry-dbid-a5190037-4ae1-4b9d-9ef7-d38ebd0da919");
8
8
  } catch {}
@@ -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.1.6" };
4
+ e.SENTRY_RELEASE = { id: "3.1.8" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "5502080e-bef5-4a57-9d7d-8a45c2ec4b84", e._sentryDebugIdIdentifier = "sentry-dbid-5502080e-bef5-4a57-9d7d-8a45c2ec4b84");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./chunk-5s3M-J3g.js";
10
- import { m as t, y as n } from "./is-debug-DTyH3H5u.js";
11
- import { t as r } from "./react-CeEvNmEB.js";
9
+ import { r as e } from "./chunk-CmzsSKsP.js";
10
+ import { m as t, y as n } from "./is-debug-DeMC2fj6.js";
11
+ import { t as r } from "./react-_GkslNER.js";
12
12
  //#region src/utils/mobx.ts
13
13
  var i = /* @__PURE__ */ e(r(), 1);
14
14
  function a(e, n) {
@@ -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.1.6" };
4
+ e.SENTRY_RELEASE = { id: "3.1.8" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "77712fd0-4322-49b1-965e-1ad73d7fb0ee", e._sentryDebugIdIdentifier = "sentry-dbid-77712fd0-4322-49b1-965e-1ad73d7fb0ee");
7
7
  } catch {}
8
8
  })();
9
- import { t as e } from "./chunk-5s3M-J3g.js";
9
+ import { t as e } from "./chunk-CmzsSKsP.js";
10
10
  //#region ../../node_modules/.pnpm/particlesjs@https+++codeload.github.com+evgenyt1+particles.js+tar.gz+bcda28ac7422659d702713184cf1171b1673c248/node_modules/particlesjs/dist/particles.min.js
11
11
  var t = /* @__PURE__ */ e(((e, t) => {
12
12
  var n = function(e, t) {
@@ -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.1.6" };
4
+ e.SENTRY_RELEASE = { id: "3.1.8" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "53a9f97f-ec73-4665-8fad-4f690eff0e29", e._sentryDebugIdIdentifier = "sentry-dbid-53a9f97f-ec73-4665-8fad-4f690eff0e29");
7
7
  } catch {}
8
8
  })();
9
- import { t as e } from "./chunk-5s3M-J3g.js";
9
+ import { t as e } from "./chunk-CmzsSKsP.js";
10
10
  //#region ../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/lib/ReactPropTypesSecret.js
11
11
  var t = /* @__PURE__ */ e(((e, t) => {
12
12
  t.exports = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";
@@ -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.1.6" };
4
+ e.SENTRY_RELEASE = { id: "3.1.8" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "f08151ab-17da-4df3-8641-ede95d910845", e._sentryDebugIdIdentifier = "sentry-dbid-f08151ab-17da-4df3-8641-ede95d910845");
7
7
  } catch {}
8
8
  })();
9
- import { t as e } from "./chunk-5s3M-J3g.js";
9
+ import { t as e } from "./chunk-CmzsSKsP.js";
10
10
  //#region ../../node_modules/.pnpm/react@19.2.5/node_modules/react/cjs/react.production.js
11
11
  var t = /* @__PURE__ */ e(((e) => {
12
12
  var t = Symbol.for("react.transitional.element"), n = Symbol.for("react.portal"), r = Symbol.for("react.fragment"), i = Symbol.for("react.strict_mode"), a = Symbol.for("react.profiler"), o = Symbol.for("react.consumer"), s = Symbol.for("react.context"), c = Symbol.for("react.forward_ref"), l = Symbol.for("react.suspense"), u = Symbol.for("react.memo"), d = Symbol.for("react.lazy"), f = Symbol.for("react.activity"), p = Symbol.iterator;
@@ -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.1.6" };
4
+ e.SENTRY_RELEASE = { id: "3.1.8" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "1bad5344-0d18-49d7-92f3-094b72b90faf", e._sentryDebugIdIdentifier = "sentry-dbid-1bad5344-0d18-49d7-92f3-094b72b90faf");
7
7
  } catch {}
8
8
  })();
9
- import { t as e } from "./chunk-5s3M-J3g.js";
10
- import { t } from "./react-CeEvNmEB.js";
9
+ import { t as e } from "./chunk-CmzsSKsP.js";
10
+ import { t } from "./react-_GkslNER.js";
11
11
  //#region ../../node_modules/.pnpm/react-dom@19.2.5_react@19.2.5/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.1.6" };
5
+ e.SENTRY_RELEASE = { id: "3.1.8" };
6
6
  var t = new e.Error().stack;
7
7
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "c0f1ac4c-d5ed-4e69-8554-7916bf87e3ee", e._sentryDebugIdIdentifier = "sentry-dbid-c0f1ac4c-d5ed-4e69-8554-7916bf87e3ee");
8
8
  } catch {}
@@ -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.1.6" };
4
+ e.SENTRY_RELEASE = { id: "3.1.8" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "f814f1eb-8b45-4ebe-9d75-3170e178d083", e._sentryDebugIdIdentifier = "sentry-dbid-f814f1eb-8b45-4ebe-9d75-3170e178d083");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./chunk-5s3M-J3g.js";
10
- import { t } from "./react-CeEvNmEB.js";
11
- import { t as n } from "./jsx-runtime-DGpX2A7L.js";
12
- import { n as r, r as i } from "./reset-all-settings-BAfPvEum.js";
9
+ import { r as e } from "./chunk-CmzsSKsP.js";
10
+ import { t } from "./react-_GkslNER.js";
11
+ import { t as n } from "./jsx-runtime-CeW-_L98.js";
12
+ import { n as r, r as i } from "./reset-all-settings-hgrZphbe.js";
13
13
  //#region ../debug/src/lib/settings/register-setting.tsx
14
14
  var a = /* @__PURE__ */ e(t(), 1), o = n(), s = "efp-local-storage";
15
15
  function c(e, t, n, c) {
@@ -63,7 +63,7 @@ function u(e) {
63
63
  //#endregion
64
64
  //#region ../debug/src/lib/settings/register-boolean-setting.ts
65
65
  function d(e) {
66
- return c(e, !1, a.lazy(() => import("./boolean-editor-7sR_iyHL.js").then((e) => ({ default: e.BooleanEditor }))));
66
+ return c(e, !1, a.lazy(() => import("./boolean-editor-CtepaQAf.js").then((e) => ({ default: e.BooleanEditor }))));
67
67
  }
68
68
  //#endregion
69
69
  export { c as n, d as t };
@@ -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.1.6" };
4
+ e.SENTRY_RELEASE = { id: "3.1.8" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "296827ff-4fe5-4907-9b96-cec1ee89058c", e._sentryDebugIdIdentifier = "sentry-dbid-296827ff-4fe5-4907-9b96-cec1ee89058c");
7
7
  } catch {}
8
8
  })();
9
- import "./reset-all-settings-BAfPvEum.js";
10
- import "./settings-VfT-AYP7.js";
9
+ import "./reset-all-settings-hgrZphbe.js";
10
+ import "./settings-BIMaTEyo.js";
11
11
  //#region ../debug/src/lib/init-debug.tsx
12
12
  var e = !1;
13
13
  function t() {
14
- e || (e = !0, !(typeof window > "u" && typeof document > "u") && import("./ui-Dyvo4yyp.js").then(({ renderDebugUi: e }) => {
14
+ e || (e = !0, !(typeof window > "u" && typeof document > "u") && import("./ui-vdOqnu50.js").then(({ renderDebugUi: e }) => {
15
15
  e();
16
16
  }).catch(() => {}));
17
17
  }
@@ -2,16 +2,16 @@ function __vite_inject_css__(css, id, forceLightDom){ if (typeof document==='un
2
2
  (function() {
3
3
  try {
4
4
  var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
5
- e.SENTRY_RELEASE = { id: "3.1.6" };
5
+ e.SENTRY_RELEASE = { id: "3.1.8" };
6
6
  var t = new e.Error().stack;
7
- t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "9ac08e03-9f1e-4686-ba05-0c79e562e821", e._sentryDebugIdIdentifier = "sentry-dbid-9ac08e03-9f1e-4686-ba05-0c79e562e821");
7
+ t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "9362bda3-1ded-47a2-b95e-d9146b3e1e87", e._sentryDebugIdIdentifier = "sentry-dbid-9362bda3-1ded-47a2-b95e-d9146b3e1e87");
8
8
  } catch {}
9
9
  })();
10
- import { r as e, t } from "./chunk-5s3M-J3g.js";
11
- import { $ as n, C as r, D as i, E as a, Et as o, F as s, G as c, H as l, I as u, K as d, L as f, M as p, N as m, O as h, P as g, St as _, Tt as v, W as y, Y as b, _ as x, a as S, b as C, bt as w, c as T, d as E, dt as D, et as O, f as k, ft as ee, g as te, gt as ne, h as A, i as re, j as ie, l as ae, lt as oe, m as se, mt as ce, n as le, o as ue, ot as de, p as j, pt as fe, q as pe, r as me, st as he, t as ge, u as M, v as N, x as _e, xt as ve, y as P, yt as ye } from "./is-debug-DTyH3H5u.js";
12
- import { t as be } from "./react-CeEvNmEB.js";
13
- import { t as xe } from "./jsx-runtime-DGpX2A7L.js";
14
- import { t as Se } from "./classnames-DLZ1u1dy.js";
10
+ import { r as e, t } from "./chunk-CmzsSKsP.js";
11
+ import { $ as n, C as r, D as i, E as a, Et as o, F as s, G as c, H as l, I as u, K as d, L as f, M as p, N as m, O as h, P as g, St as _, Tt as v, W as y, Y as b, _ as x, a as S, b as C, bt as w, c as T, d as E, dt as D, et as O, f as k, ft as ee, g as te, gt as ne, h as A, i as re, j as ie, l as ae, lt as oe, m as se, mt as ce, n as le, o as ue, ot as de, p as j, pt as fe, q as pe, r as me, st as he, t as ge, u as M, v as N, x as _e, xt as ve, y as P, yt as ye } from "./is-debug-DeMC2fj6.js";
12
+ import { t as be } from "./react-_GkslNER.js";
13
+ import { t as xe } from "./jsx-runtime-CeW-_L98.js";
14
+ import { t as Se } from "./classnames-CV7GydgO.js";
15
15
  //#region ../../node_modules/.pnpm/mobx-react-lite@1.5.2_mobx@5.15.7_react@19.2.5/node_modules/mobx-react-lite/dist/index.module.js
16
16
  var Ce = /* @__PURE__ */ e(be());
17
17
  if (!Ce.useState) throw Error("mobx-react-lite requires React with Hooks support");
@@ -27223,8 +27223,11 @@ function YD(e, t, n, r) {
27223
27223
  //#region src/renderer/engine-core/utils/rotation.ts
27224
27224
  function XD(e, t) {
27225
27225
  if (!t) return !1;
27226
- let n = ZD(e, e.rotation + Math.PI / 2), r = ZD(t), i = Math.min(...r.map((e) => e.x)), a = Math.max(...r.map((e) => e.x)), o = Math.min(...r.map((e) => e.y)), s = Math.max(...r.map((e) => e.y));
27227
- return n.every((e) => e.x >= i && e.x <= a && e.y >= o && e.y <= s);
27226
+ let n = Math.cos(t.rotation), r = Math.sin(t.rotation), i = t.size.x / 2, a = t.size.y / 2;
27227
+ return ZD(e, e.rotation + Math.PI / 2).every((e) => {
27228
+ let o = e.x - t.center.x, s = e.y - t.center.y, c = o * n + s * r, l = s * n - o * r;
27229
+ return Math.abs(c) <= i && Math.abs(l) <= a;
27230
+ });
27228
27231
  }
27229
27232
  function ZD(e, t = e.rotation) {
27230
27233
  let n = e.size.x / 2, r = e.size.y / 2, i = Math.sin(t), a = Math.cos(t), o = e.center.x, s = e.center.y;
@@ -28042,7 +28045,7 @@ async function rk(e) {
28042
28045
  let { shape: a, parentRect: o } = i[n], s = XD(a.bounds, o);
28043
28046
  if (!r.name.includes("Pathway_")) {
28044
28047
  let t = s ? "image-rotate" : "image-flip";
28045
- e.onRoll(`${t}-${name}-${n}`, s ? (e) => $D(a, e) : (e) => QD(a, e));
28048
+ e.onRoll(`${t}-${r.name}-${n}`, s ? (e) => $D(a, e) : (e) => QD(a, e));
28046
28049
  }
28047
28050
  t.push(a);
28048
28051
  }
@@ -34215,7 +34218,7 @@ var hL = (dL = class {
34215
34218
  }
34216
34219
  async buildEngine() {
34217
34220
  try {
34218
- let { default: e } = await import("./fuse-FpOCifji.js").then((e) => e.n);
34221
+ let { default: e } = await import("./fuse-Cx2xVr92.js").then((e) => e.n);
34219
34222
  C(() => {
34220
34223
  this.engine = new e([], {
34221
34224
  keys: this.keys,
@@ -1,22 +1,22 @@
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.1.6" };
4
+ e.SENTRY_RELEASE = { id: "3.1.8" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "366e3673-c350-4f8b-b0f3-9cc93894014c", e._sentryDebugIdIdentifier = "sentry-dbid-366e3673-c350-4f8b-b0f3-9cc93894014c");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./chunk-5s3M-J3g.js";
10
- import { t } from "./jsx-runtime-DGpX2A7L.js";
11
- import { t as n } from "./settings-VfT-AYP7.js";
12
- import { t as r } from "./add-debug-secret-listener-DzCEnj9u.js";
9
+ import { r as e } from "./chunk-CmzsSKsP.js";
10
+ import { t } from "./jsx-runtime-CeW-_L98.js";
11
+ import { t as n } from "./settings-BIMaTEyo.js";
12
+ import { t as r } from "./add-debug-secret-listener-hyBkCStK.js";
13
13
  //#region ../debug/src/lib/ui/render-debug-ui.tsx
14
14
  var i = t(), a = !1;
15
15
  function o() {
16
16
  if (a) return;
17
17
  a = !0;
18
18
  let t = n("Show Debug Button Overlay"), o = async (n) => {
19
- let { DebugUi: r } = await import("./debug-ui-CC3jwsbR.js"), { createRoot: a } = await import("./client-D37dTvOp.js").then((t) => /* @__PURE__ */ e(t.default, 1)), o = document.createElement("div");
19
+ let { DebugUi: r } = await import("./debug-ui-Bk_cgOg0.js"), { createRoot: a } = await import("./client-CW46IlZK.js").then((t) => /* @__PURE__ */ e(t.default, 1)), o = document.createElement("div");
20
20
  document.body.appendChild(o), a(o).render(/* @__PURE__ */ (0, i.jsx)(r, {
21
21
  useDebugButtonState: t.useState,
22
22
  open: n
@@ -1 +1 @@
1
- import{getLayerSvg as f}from"../../../../data/svg";import{select as h}from"d3";import{getLogoUrl as d}from"../../../../utils/getLogoUrl";import{flipImageDef as u,isInnerInsideOuter as y}from"../../../../renderer";import{SEPARATOR as w}from"../../../../constants";import{rotateImageDef as x}from"../../../../renderer/engine-core/utils/rotation";export async function loadLayersImages(t){const n=t.layerImagesRegistry.invoke();await Promise.all(n.map(async e=>{const l=await e;if(!l)return;const{layer:i,children:o}=l;if(o.length){const a=[];for(let r=0;r<o.length;r++){const{shape:s,parentRect:c}=o[r],g=y(s.bounds,c);if(!i.name.includes("Pathway_")){const m=g?"image-rotate":"image-flip";t.onRoll(`${m}-${name}-${r}`,g?p=>x(s,p):p=>u(s,p))}a.push(s)}i.children.push(...a),t.update(i)}}))}export const getImageLayerName=t=>`${t}${w}images`;export function mapBoothsLogos(t){return new Map(t.map(n=>{const e=n.rect&&n.exhibitors.find(l=>l.logoInBooth&&l.logo);return e?[n.id,{preferred:d(e.logo),fallback:e.logo}]:null}).filter(Boolean))}export function getLayerIcons(t){const n=h(f(t)).select(`[data-layer="${t.name}"]`);return(window.__fpVersion>5?n.selectAll(":scope > image, :scope > g:not([data-layer]) image").nodes():n.selectAll(":scope > g[data-is-editable='false'] image").nodes()).filter(Boolean)}export function createBoothImg(t,n){const e=t.rect,l=e.h?e.w/e.h:1,i=n.height?n.width/n.height:1;let o,a,r;const s=.9;l>i?(a=e.h*s,o=a*i):(o=e.w*s,a=o/i);const c=t.rotate||0;i>=2&&!c&&e.h>=e.w*2?(a=e.w*s,o=a*i,r=-90):r=-c*180/Math.PI,o>e.w&&(o=e.w,a=o/i),a>e.h&&(a=e.h,o=a*i);const g=e.cx-o/2,m=e.cy-a/2;return{name:t.slug,bounds:{x:g,y:m,width:o,height:a,angle:r},htmlImage:n,booth:t}}
1
+ import{getLayerSvg as f}from"../../../../data/svg";import{select as h}from"d3";import{getLogoUrl as d}from"../../../../utils/getLogoUrl";import{flipImageDef as u,isInnerInsideOuter as y}from"../../../../renderer";import{SEPARATOR as w}from"../../../../constants";import{rotateImageDef as x}from"../../../../renderer/engine-core/utils/rotation";export async function loadLayersImages(t){const n=t.layerImagesRegistry.invoke();await Promise.all(n.map(async e=>{const l=await e;if(!l)return;const{layer:i,children:o}=l;if(o.length){const a=[];for(let r=0;r<o.length;r++){const{shape:s,parentRect:c}=o[r],g=y(s.bounds,c);if(!i.name.includes("Pathway_")){const m=g?"image-rotate":"image-flip";t.onRoll(`${m}-${i.name}-${r}`,g?p=>x(s,p):p=>u(s,p))}a.push(s)}i.children.push(...a),t.update(i)}}))}export const getImageLayerName=t=>`${t}${w}images`;export function mapBoothsLogos(t){return new Map(t.map(n=>{const e=n.rect&&n.exhibitors.find(l=>l.logoInBooth&&l.logo);return e?[n.id,{preferred:d(e.logo),fallback:e.logo}]:null}).filter(Boolean))}export function getLayerIcons(t){const n=h(f(t)).select(`[data-layer="${t.name}"]`);return(window.__fpVersion>5?n.selectAll(":scope > image, :scope > g:not([data-layer]) image").nodes():n.selectAll(":scope > g[data-is-editable='false'] image").nodes()).filter(Boolean)}export function createBoothImg(t,n){const e=t.rect,l=e.h?e.w/e.h:1,i=n.height?n.width/n.height:1;let o,a,r;const s=.9;l>i?(a=e.h*s,o=a*i):(o=e.w*s,a=o/i);const c=t.rotate||0;i>=2&&!c&&e.h>=e.w*2?(a=e.w*s,o=a*i,r=-90):r=-c*180/Math.PI,o>e.w&&(o=e.w,a=o/i),a>e.h&&(a=e.h,o=a*i);const g=e.cx-o/2,m=e.cy-a/2;return{name:t.slug,bounds:{x:g,y:m,width:o,height:a,angle:r},htmlImage:n,booth:t}}
@@ -1 +1 @@
1
- import{useEffect as yt,useRef as L}from"react";import{getBounds as k}from"../../../renderer";import{getRouteLayerRegex as pt,getRouteStopLayerRegex as wt,TRAFFIC_VEHICLES as xt}from"./trafficLayers";import{loadImage as Et}from"../../../utils/loadImage";import{createImageCanvas as It}from"../drawing/config/canvases";import{UpdateQueue as Mt}from"./UpdateQueue";import Lt from"../../../tools/base-runtime-url";import{toRadians as bt}from"../../../utils/math";import{isDefaultScene as Rt}from"../../../renderer/engine-core/defs";const tt=2,Ft=tt*3.5,G=tt*12,it=G*.7,At=8,Tt="transport_locations",Pt=150,et="#a4aab6",at=1e3,vt=2e4,ut=500;export function useManageTraffic({permission:e,rendererService:n,dataJsonUrl:c,websocketUrl:i}){const t=L(window.devicePixelRatio),s=L(new Map),o=L(new Map),r=L(),y=L(),f=L(performance.now()),M=L(1),w=L(new Mt),A=L(new Map),x=L(),g=L(at),p=L(new Map),a=L();yt(()=>{async function S(){if(!(!e||!n.scene))try{let h;try{h=await(await fetch(c,{method:"GET",headers:{"Content-Type":"application/json"}})).json()}catch(u){console.warn("useManageTraffic failed to get JSON",u)}if(!h||h?.disabled||h?.error)return;t.current=lt(n.scale);const V=new Map(h.routes.map(({id:u,color:E})=>[u,E])),C=n.scene.rootLayer.children,W=new Map;V.forEach(u=>{W.set(u,Ct({radius:Ft,color:u,scale:window.devicePixelRatio}))});const z=pt(),Y=C.filter(u=>z.test(u.name)),B=wt(),U=C.filter(u=>B.test(u.name));h.routes.slice(0,Y.length).forEach(({id:u,color:E,path:R,stops:D,hiddenPoints:I},d)=>{A.current.set(u,R);const T=Y[d];if(T){const N=new Map(I?.map(l=>[ot(l),l])??[]);for(let l=1;l<R.length;l++){const O=R[l-1],H=R[l];N.has(ot(O))||N.has(ot(H))||T.children.push({points:[O,H],color:E,width:tt})}T.children.length&&w.current.add(()=>n.update(T))}const m=U[d];if(m&&D?.length){const N=W.get(E);D.forEach(l=>{m.children.push({source:N,bounds:k(l.x,l.y,N.width,N.height,t.current)})}),m.children.length&&w.current.add(()=>n.update(m))}});const $=C.find(u=>u.name===xt),X=new Map;x.current=({ptScale:u,sceneId:E})=>{try{if(!Rt(E))return;t.current=lt(u);const R=[];for(let I=0;I<U.length;I++){const d=U[I].children;for(let T=0;T<d.length;T++){const m=d[T];m.bounds=k(m.bounds.center.x,m.bounds.center.y,m.source.width,m.source.height,t.current,m.bounds.rotation),R.push(m)}}const D=[...s.current.values()];for(let I=0;I<D.length;I++){const d=D[I];d.bounds=k(d.bounds.center.x,d.bounds.center.y,d.source.width,d.source.height,t.current,d.bounds.rotation)}w.current.add(()=>n.update(...R,...D))}catch(R){console.error("ptscale",R)}},n.renderer.events.addEventListener("viewport:ptscale",x.current),V.forEach((u,E)=>{X.set(E,ht({id:E,width:G,height:G,color:u,scale:window.devicePixelRatio}))}),X.set(et,ht({id:"orphan",width:G,height:G,color:et,scale:window.devicePixelRatio}));let j=null;try{const u=await Et(`${Lt}icons/bus-white.svg`);j=It(u,it,it,window.devicePixelRatio)}catch(u){console.error(u)}y.current=u=>{try{const E=JSON.parse(u.data);if(E.type!==Tt)return;const R=u.timeStamp||performance.now();M.current=Math.round(R-f.current),f.current=R;const D=Math.max(M.current??ut,ut),I=o.current,d=s.current,T=$.children,m=w.current;let N=!1;E.data.forEach(({id:l,x:O,y:H,route_id:ct,hidden:gt})=>{if(I.has(l)&&(I.get(l)?.(),I.delete(l)),gt&&d.has(l)&&d.has(Q(l))){const P=d.get(l);P.hidden=!0;const F=d.get(Q(l));F.hidden=!0,m.add(()=>n.update(P,F));return}if(p.current.set(l,performance.now()),!d.has(l)){const P=X.get(ct)||X.get(et),F={id:l,source:P,bounds:k(O,H,P.width,P.height,t.current,0)};if(d.set(l,F),j){const q=Q(l),rt={id:q,source:j,bounds:k(O,H,j.width,j.height,t.current,0)};j.setAttribute("id",q),d.set(q,rt),T.push(F,rt)}else T.push(F);N=!0;return}const Z=d.get(l),st=d.get(Q(l)),mt=Z.bounds.center,K=St(mt,{x:O,y:H},A.current.get(ct));if(K.reduce((P,F,q)=>q===0?P:P+nt(K[q-1],F),0)>=Pt||document.hidden)dt({rendererService:n,updateQueue:m,vehicle:Z,vehicleFinery:st,x:O,y:H,scale:t.current,angle:_t(Z.bounds.center,{x:O,y:H})});else{const P=Dt(K,D,F=>{dt({rendererService:n,updateQueue:m,vehicle:Z,vehicleFinery:st,x:F.x,y:F.y,scale:t.current,angle:F.angle})});I.set(l,P)}}),N&&m.add(()=>n.update($))}catch(E){console.error("handleSocketMessage",E)}},v(),_(h.config?(Number(h.config.vehicle_inactive_interval)||20)*1e3:vt)}catch(h){console.warn(h)}}S();function v(){r.current?.readyState===WebSocket.OPEN||r.current?.readyState===WebSocket.CONNECTING||(r.current=new WebSocket(i),r.current.onmessage=y.current,r.current.onopen=()=>{g.current=at},r.current.onclose=()=>{if(!navigator.onLine)return;setTimeout(v,g.current);const h=3e4;g.current=Math.min(g.current*2,h)})}function b(){v()}window.addEventListener("online",b);function _(h){clearInterval(a.current),a.current=window.setInterval(()=>{const V=performance.now(),C=[],W=[];p.current.forEach((z,Y)=>{if(V-z<h)return;const B=s.current.get(Y);B&&(B.hidden=!0,W.push(B),C.push(Y));const U=Q(Y),$=s.current.get(U);$&&($.hidden=!0,W.push($),C.push(U))}),W.length&&w.current.add(()=>n.update(...W)),C.forEach(z=>p.current.delete(z))},h)}return()=>{x.current&&n.renderer&&n.renderer.events.removeEventListener("viewport:ptscale",x.current),o.current.forEach(h=>h?.()),o.current.clear(),s.current.clear(),w.current.destroy(),window.removeEventListener("online",b),clearInterval(a.current)}},[e,n,c,i])}function lt(e){return Math.min(e||window.devicePixelRatio,At)}function _t(e,n){return Math.atan2(n.y-e.y,n.x-e.x)}function Ct({radius:e,scale:n,color:c}){const i=document.createElement("canvas"),t=i.getContext("2d");t.imageSmoothingEnabled=!1;const s=Math.ceil(e*2*n),o=s/2,r=e*.78,y=e*.33;return i.width=s,i.height=s,t.translate(o,o),t.scale(n,n),t.beginPath(),t.arc(0,0,e,0,2*Math.PI),t.fillStyle="#FFFFFF",t.fill(),t.beginPath(),t.arc(0,0,r,0,2*Math.PI),t.fillStyle=c,t.fill(),t.beginPath(),t.arc(0,0,y,0,2*Math.PI),t.fillStyle="#FFFFFF",t.fill(),i}function ht({id:e,width:n,height:c,color:i,scale:t}){const s=2*t,o=n/2*t,r=c*t,y=.6,f=.01,M=r*y,w=r,A=8*t,x=w+s+M/2+A*2,g=o*2+M+s+A*2,p=document.createElement("canvas");p.setAttribute("id",e),p.width=x,p.height=g;const a=p.getContext("2d"),S=x/2,v=g/2;a.save(),a.translate(S,v),a.rotate(-Math.PI/2),a.translate(-S,-v);const b=S,_=v-w/2+o,h=_+M;return a.shadowColor="rgba(16, 24, 40, 0.2)",a.shadowBlur=A/2,a.beginPath(),a.arc(b,_,o,Math.PI,0,!1),a.bezierCurveTo(b+o,_+r*.3,b+f*o,h,b,h),a.bezierCurveTo(b-f*o,h,b-o,_+r*.3,b-o,_),a.closePath(),a.fillStyle=i,a.fill(),a.strokeStyle="#FFFFFF",a.lineWidth=s,a.stroke(),a.restore(),p}function nt(e,n){return Math.hypot(e.x-n.x,e.y-n.y)}function Q(e){return`${e}_finery`}function dt({rendererService:e,updateQueue:n,vehicle:c,vehicleFinery:i,x:t,y:s,scale:o,angle:r}){c.bounds=k(t,s,c.source.width,c.source.height,o,r),c.hidden=!1,i?(i.bounds=k(t,s,i.source.width,i.source.height,o,bt(e.angle)),i.hidden=!1,n.add(()=>e.update(i,c))):n.add(()=>e.update(c))}function J(e,n,c){return{x:e.x+(n.x-e.x)*c,y:e.y+(n.y-e.y)*c}}function ft(e,n){let c=1/0,i={index:0,t:0};for(let t=0;t<n.length-1;t++){const s=n[t],o=n[t+1],r=o.x-s.x,y=o.y-s.y,f=r*r+y*y,M=f?((e.x-s.x)*r+(e.y-s.y)*y)/f:0,w=Math.max(0,Math.min(1,M)),A=J(s,o,w),x=nt(e,A);x<c&&(c=x,i={index:t,t:w})}return i}function Nt(e,n,c){const i=nt(e,n),t=Math.max(2,Math.ceil(i/c)+1),s=[];for(let o=0;o<t;o++){const r=o/(t-1),y=J(e,n,r);s.push({x:y.x,y:y.y})}return s}function St(e,n,c){if(!c||!c.length)return Nt(e,n,10);const i=ft(e,c),t=ft(n,c),s=[],o=r=>s.push({x:r.x,y:r.y});i.index+1<c.length?o(J(c[i.index],c[i.index+1],i.t)):o(c[i.index]);for(let r=i.index+1;r<=t.index&&r<c.length;r++)o(c[r]);return t.index+1<c.length?o(J(c[t.index],c[t.index+1],t.t)):o(c[t.index]),s}function Dt(e,n,c,i){if(e.length<2)return()=>{};let t=null,s;const o=[];let r=0;for(let f=0;f<e.length-1;f++){const M=Math.hypot(e[f+1].x-e[f].x,e[f+1].y-e[f].y);o.push(M),r+=M}const y=f=>{t||(t=f);const M=f-t,w=Math.min(M/n,1),A=w*r;let x=0,g=0;for(;g<o.length&&x+o[g]<A;)x+=o[g],g++;g>=o.length&&(g=o.length-1);const p=e[g],a=e[Math.min(g+1,e.length-1)],S=o[g]||0,v=S===0?0:(A-x)/S,b=p.x+(a.x-p.x)*v,_=p.y+(a.y-p.y)*v,h=a.x-p.x,V=a.y-p.y,C=h===0&&V===0?0:Math.atan2(V,h);c({x:b,y:_,angle:C}),w<1?s=requestAnimationFrame(y):i&&i()};return s=requestAnimationFrame(y),()=>{s&&cancelAnimationFrame(s)}}function ot(e){return`${e.x},${e.y}`}
1
+ import{useEffect as yt,useRef as L}from"react";import{getBounds as k}from"../../../renderer";import{getRouteLayerRegex as pt,getRouteStopLayerRegex as wt,TRAFFIC_VEHICLES as xt}from"./trafficLayers";import{loadImage as Et}from"../../../utils/loadImage";import{createImageCanvas as It}from"../drawing/config/canvases";import{UpdateQueue as Mt}from"./UpdateQueue";import Lt from"../../../tools/base-runtime-url";import{toRadians as bt}from"../../../utils/math";import{isDefaultScene as Rt}from"../../../renderer/engine-core/defs";const tt=2,Ft=tt*3.5,G=tt*12,it=G*.7,At=8,Tt="transport_locations",Pt=150,et="#a4aab6",at=1e3,vt=2e4,ut=500;export function useManageTraffic({permission:e,rendererService:n,dataJsonUrl:c,websocketUrl:i}){const t=L(window.devicePixelRatio),s=L(new Map),o=L(new Map),r=L(),y=L(),f=L(performance.now()),M=L(1),w=L(new Mt),A=L(new Map),x=L(),g=L(at),p=L(new Map),u=L();yt(()=>{async function S(){if(!(!e||!n.scene))try{let h;try{const a=await fetch(c,{method:"GET",headers:{"Content-Type":"application/json"}});if(!a.ok||a.status===204)return;h=await a.json()}catch(a){console.warn("useManageTraffic failed to get JSON",a)}if(!h||h?.disabled||h?.error)return;t.current=lt(n.scale);const V=new Map(h.routes.map(({id:a,color:E})=>[a,E])),C=n.scene.rootLayer.children,W=new Map;V.forEach(a=>{W.set(a,Ct({radius:Ft,color:a,scale:window.devicePixelRatio}))});const z=pt(),Y=C.filter(a=>z.test(a.name)),B=wt(),U=C.filter(a=>B.test(a.name));h.routes.slice(0,Y.length).forEach(({id:a,color:E,path:R,stops:D,hiddenPoints:I},d)=>{A.current.set(a,R);const T=Y[d];if(T){const N=new Map(I?.map(l=>[ot(l),l])??[]);for(let l=1;l<R.length;l++){const O=R[l-1],H=R[l];N.has(ot(O))||N.has(ot(H))||T.children.push({points:[O,H],color:E,width:tt})}T.children.length&&w.current.add(()=>n.update(T))}const m=U[d];if(m&&D?.length){const N=W.get(E);D.forEach(l=>{m.children.push({source:N,bounds:k(l.x,l.y,N.width,N.height,t.current)})}),m.children.length&&w.current.add(()=>n.update(m))}});const $=C.find(a=>a.name===xt),X=new Map;x.current=({ptScale:a,sceneId:E})=>{try{if(!Rt(E))return;t.current=lt(a);const R=[];for(let I=0;I<U.length;I++){const d=U[I].children;for(let T=0;T<d.length;T++){const m=d[T];m.bounds=k(m.bounds.center.x,m.bounds.center.y,m.source.width,m.source.height,t.current,m.bounds.rotation),R.push(m)}}const D=[...s.current.values()];for(let I=0;I<D.length;I++){const d=D[I];d.bounds=k(d.bounds.center.x,d.bounds.center.y,d.source.width,d.source.height,t.current,d.bounds.rotation)}w.current.add(()=>n.update(...R,...D))}catch(R){console.error("ptscale",R)}},n.renderer.events.addEventListener("viewport:ptscale",x.current),V.forEach((a,E)=>{X.set(E,ht({id:E,width:G,height:G,color:a,scale:window.devicePixelRatio}))}),X.set(et,ht({id:"orphan",width:G,height:G,color:et,scale:window.devicePixelRatio}));let j=null;try{const a=await Et(`${Lt}icons/bus-white.svg`);j=It(a,it,it,window.devicePixelRatio)}catch(a){console.error(a)}y.current=a=>{try{const E=JSON.parse(a.data);if(E.type!==Tt)return;const R=a.timeStamp||performance.now();M.current=Math.round(R-f.current),f.current=R;const D=Math.max(M.current??ut,ut),I=o.current,d=s.current,T=$.children,m=w.current;let N=!1;E.data.forEach(({id:l,x:O,y:H,route_id:ct,hidden:gt})=>{if(I.has(l)&&(I.get(l)?.(),I.delete(l)),gt&&d.has(l)&&d.has(Q(l))){const P=d.get(l);P.hidden=!0;const F=d.get(Q(l));F.hidden=!0,m.add(()=>n.update(P,F));return}if(p.current.set(l,performance.now()),!d.has(l)){const P=X.get(ct)||X.get(et),F={id:l,source:P,bounds:k(O,H,P.width,P.height,t.current,0)};if(d.set(l,F),j){const q=Q(l),rt={id:q,source:j,bounds:k(O,H,j.width,j.height,t.current,0)};j.setAttribute("id",q),d.set(q,rt),T.push(F,rt)}else T.push(F);N=!0;return}const Z=d.get(l),st=d.get(Q(l)),mt=Z.bounds.center,K=St(mt,{x:O,y:H},A.current.get(ct));if(K.reduce((P,F,q)=>q===0?P:P+nt(K[q-1],F),0)>=Pt||document.hidden)dt({rendererService:n,updateQueue:m,vehicle:Z,vehicleFinery:st,x:O,y:H,scale:t.current,angle:_t(Z.bounds.center,{x:O,y:H})});else{const P=Dt(K,D,F=>{dt({rendererService:n,updateQueue:m,vehicle:Z,vehicleFinery:st,x:F.x,y:F.y,scale:t.current,angle:F.angle})});I.set(l,P)}}),N&&m.add(()=>n.update($))}catch(E){console.error("handleSocketMessage",E)}},v(),_(h.config?(Number(h.config.vehicle_inactive_interval)||20)*1e3:vt)}catch(h){console.warn(h)}}S();function v(){r.current?.readyState===WebSocket.OPEN||r.current?.readyState===WebSocket.CONNECTING||(r.current=new WebSocket(i),r.current.onmessage=y.current,r.current.onopen=()=>{g.current=at},r.current.onclose=()=>{if(!navigator.onLine)return;setTimeout(v,g.current);const h=3e4;g.current=Math.min(g.current*2,h)})}function b(){v()}window.addEventListener("online",b);function _(h){clearInterval(u.current),u.current=window.setInterval(()=>{const V=performance.now(),C=[],W=[];p.current.forEach((z,Y)=>{if(V-z<h)return;const B=s.current.get(Y);B&&(B.hidden=!0,W.push(B),C.push(Y));const U=Q(Y),$=s.current.get(U);$&&($.hidden=!0,W.push($),C.push(U))}),W.length&&w.current.add(()=>n.update(...W)),C.forEach(z=>p.current.delete(z))},h)}return()=>{x.current&&n.renderer&&n.renderer.events.removeEventListener("viewport:ptscale",x.current),o.current.forEach(h=>h?.()),o.current.clear(),s.current.clear(),w.current.destroy(),window.removeEventListener("online",b),clearInterval(u.current)}},[e,n,c,i])}function lt(e){return Math.min(e||window.devicePixelRatio,At)}function _t(e,n){return Math.atan2(n.y-e.y,n.x-e.x)}function Ct({radius:e,scale:n,color:c}){const i=document.createElement("canvas"),t=i.getContext("2d");t.imageSmoothingEnabled=!1;const s=Math.ceil(e*2*n),o=s/2,r=e*.78,y=e*.33;return i.width=s,i.height=s,t.translate(o,o),t.scale(n,n),t.beginPath(),t.arc(0,0,e,0,2*Math.PI),t.fillStyle="#FFFFFF",t.fill(),t.beginPath(),t.arc(0,0,r,0,2*Math.PI),t.fillStyle=c,t.fill(),t.beginPath(),t.arc(0,0,y,0,2*Math.PI),t.fillStyle="#FFFFFF",t.fill(),i}function ht({id:e,width:n,height:c,color:i,scale:t}){const s=2*t,o=n/2*t,r=c*t,y=.6,f=.01,M=r*y,w=r,A=8*t,x=w+s+M/2+A*2,g=o*2+M+s+A*2,p=document.createElement("canvas");p.setAttribute("id",e),p.width=x,p.height=g;const u=p.getContext("2d"),S=x/2,v=g/2;u.save(),u.translate(S,v),u.rotate(-Math.PI/2),u.translate(-S,-v);const b=S,_=v-w/2+o,h=_+M;return u.shadowColor="rgba(16, 24, 40, 0.2)",u.shadowBlur=A/2,u.beginPath(),u.arc(b,_,o,Math.PI,0,!1),u.bezierCurveTo(b+o,_+r*.3,b+f*o,h,b,h),u.bezierCurveTo(b-f*o,h,b-o,_+r*.3,b-o,_),u.closePath(),u.fillStyle=i,u.fill(),u.strokeStyle="#FFFFFF",u.lineWidth=s,u.stroke(),u.restore(),p}function nt(e,n){return Math.hypot(e.x-n.x,e.y-n.y)}function Q(e){return`${e}_finery`}function dt({rendererService:e,updateQueue:n,vehicle:c,vehicleFinery:i,x:t,y:s,scale:o,angle:r}){c.bounds=k(t,s,c.source.width,c.source.height,o,r),c.hidden=!1,i?(i.bounds=k(t,s,i.source.width,i.source.height,o,bt(e.angle)),i.hidden=!1,n.add(()=>e.update(i,c))):n.add(()=>e.update(c))}function J(e,n,c){return{x:e.x+(n.x-e.x)*c,y:e.y+(n.y-e.y)*c}}function ft(e,n){let c=1/0,i={index:0,t:0};for(let t=0;t<n.length-1;t++){const s=n[t],o=n[t+1],r=o.x-s.x,y=o.y-s.y,f=r*r+y*y,M=f?((e.x-s.x)*r+(e.y-s.y)*y)/f:0,w=Math.max(0,Math.min(1,M)),A=J(s,o,w),x=nt(e,A);x<c&&(c=x,i={index:t,t:w})}return i}function Nt(e,n,c){const i=nt(e,n),t=Math.max(2,Math.ceil(i/c)+1),s=[];for(let o=0;o<t;o++){const r=o/(t-1),y=J(e,n,r);s.push({x:y.x,y:y.y})}return s}function St(e,n,c){if(!c||!c.length)return Nt(e,n,10);const i=ft(e,c),t=ft(n,c),s=[],o=r=>s.push({x:r.x,y:r.y});i.index+1<c.length?o(J(c[i.index],c[i.index+1],i.t)):o(c[i.index]);for(let r=i.index+1;r<=t.index&&r<c.length;r++)o(c[r]);return t.index+1<c.length?o(J(c[t.index],c[t.index+1],t.t)):o(c[t.index]),s}function Dt(e,n,c,i){if(e.length<2)return()=>{};let t=null,s;const o=[];let r=0;for(let f=0;f<e.length-1;f++){const M=Math.hypot(e[f+1].x-e[f].x,e[f+1].y-e[f].y);o.push(M),r+=M}const y=f=>{t||(t=f);const M=f-t,w=Math.min(M/n,1),A=w*r;let x=0,g=0;for(;g<o.length&&x+o[g]<A;)x+=o[g],g++;g>=o.length&&(g=o.length-1);const p=e[g],u=e[Math.min(g+1,e.length-1)],S=o[g]||0,v=S===0?0:(A-x)/S,b=p.x+(u.x-p.x)*v,_=p.y+(u.y-p.y)*v,h=u.x-p.x,V=u.y-p.y,C=h===0&&V===0?0:Math.atan2(V,h);c({x:b,y:_,angle:C}),w<1?s=requestAnimationFrame(y):i&&i()};return s=requestAnimationFrame(y),()=>{s&&cancelAnimationFrame(s)}}function ot(e){return`${e.x},${e.y}`}
@@ -1 +1 @@
1
- import{flipAngle as y,getRotation as d,shouldFlip as h}from"../update-def";export function isInnerInsideOuter(t,s){if(!s)return!1;const o=u(t,t.rotation+Math.PI/2),r=u(s),c=Math.min(...r.map(n=>n.x)),a=Math.max(...r.map(n=>n.x)),i=Math.min(...r.map(n=>n.y)),x=Math.max(...r.map(n=>n.y));return o.every(n=>n.x>=c&&n.x<=a&&n.y>=i&&n.y<=x)}function u(t,s=t.rotation){const o=t.size.x/2,r=t.size.y/2,c=Math.sin(s),a=Math.cos(s),i=t.center.x,x=t.center.y;return[{x:-o,y:-r},{x:o,y:-r},{x:o,y:r},{x:-o,y:r}].map(e=>({x:i+e.x*a-e.y*c,y:x+e.x*c+e.y*a}))}export function flipImageDef(t,s){const o=t.bounds.rotation;return h(s,o)&&(t.bounds.rotation=y(t.bounds.rotation)),t}export function rotateImageDef(t,s){const o=d(s,t.bounds.rotation);return o!==void 0&&(t.bounds.rotation=t.bounds.rotation+o),t}
1
+ import{flipAngle as h,getRotation as y,shouldFlip as u}from"../update-def";export function isInnerInsideOuter(t,n){if(!n)return!1;const o=Math.cos(n.rotation),s=Math.sin(n.rotation),i=n.size.x/2,r=n.size.y/2;return f(t,t.rotation+Math.PI/2).every(e=>{const a=e.x-n.center.x,x=e.y-n.center.y,c=a*o+x*s,d=x*o-a*s;return Math.abs(c)<=i&&Math.abs(d)<=r})}function f(t,n=t.rotation){const o=t.size.x/2,s=t.size.y/2,i=Math.sin(n),r=Math.cos(n),e=t.center.x,a=t.center.y;return[{x:-o,y:-s},{x:o,y:-s},{x:o,y:s},{x:-o,y:s}].map(c=>({x:e+c.x*r-c.y*i,y:a+c.x*i+c.y*r}))}export function flipImageDef(t,n){const o=t.bounds.rotation;return u(n,o)&&(t.bounds.rotation=h(t.bounds.rotation)),t}export function rotateImageDef(t,n){const o=y(n,t.bounds.rotation);return o!==void 0&&(t.bounds.rotation=t.bounds.rotation+o),t}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expofp/floorplan",
3
- "version": "3.1.6",
3
+ "version": "3.1.8",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/expofp/efp-app.git",
@@ -50,7 +50,7 @@
50
50
  "debug": "^4.4.3",
51
51
  "deepmerge": "^4.2.2",
52
52
  "fontfaceobserver": "^2.3.0",
53
- "fuse.js": "^7.1.0",
53
+ "fuse.js": "7.3.0",
54
54
  "history": "^4.10.1",
55
55
  "i18next": "^19.4.4",
56
56
  "jspdf": "^1.5.3",
@@ -76,8 +76,8 @@
76
76
  "twgl.js": "^4.14.0",
77
77
  "uuid": "^9.0.1",
78
78
  "zod": "4.3.5",
79
- "@expofp/resolve": "3.1.6",
80
- "@expofp/debug": "3.1.6"
79
+ "@expofp/resolve": "3.1.8",
80
+ "@expofp/debug": "3.1.8"
81
81
  },
82
82
  "devDependencies": {
83
83
  "@babel/plugin-proposal-decorators": "^7.29.0",