@expofp/floorplan 3.11.4 → 3.11.5

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 (80) hide show
  1. package/dist/browser/{Button-D0XJdrdn.js → Button-cW8nOyr7.js} +5 -5
  2. package/dist/browser/{CookieConsent-Brv_nq6h.js → CookieConsent-DgvNz2-R.js} +7 -7
  3. package/dist/browser/{Debug-D6iorzRx.js → Debug-B8Gsofcy.js} +7 -7
  4. package/dist/browser/{Demo-BFkds3sz.js → Demo-BRgYJptn.js} +9 -9
  5. package/dist/browser/{Free-8fhoLZq3.js → Free-DL8lBmJq.js} +9 -9
  6. package/dist/browser/{Gallery-Bkw7PTuD.js → Gallery-BD-RLpir.js} +9 -9
  7. package/dist/browser/{GpsLoader-D3NOEBX_.js → GpsLoader-D-re9FTf.js} +9 -9
  8. package/dist/browser/{KioskStore-D-IdJNsm.js → KioskStore-BJNx5Tcr.js} +3 -3
  9. package/dist/browser/{MaplibreAdapter-DViLEEg2.js → MaplibreAdapter-1NqFsZM1.js} +9 -9
  10. package/dist/browser/{ModalContainer-BmK6b4Xr.js → ModalContainer-CW1LLEm-.js} +10 -10
  11. package/dist/browser/{PermissionNotice-DaW22nFB.js → PermissionNotice-Dsa-GqT0.js} +6 -6
  12. package/dist/browser/{SetKioskMode-DoLxTCwk.js → SetKioskMode-O-H81LeY.js} +8 -8
  13. package/dist/browser/{ShowKiosk-ahrRZBEM.js → ShowKiosk-DmHjLF6Y.js} +10 -10
  14. package/dist/browser/{TouchHand-DiZEj4E3.js → TouchHand-_BQthb0c.js} +4 -4
  15. package/dist/browser/{ViewerMenuPanel-jpttuaTR.js → ViewerMenuPanel-qLf3WyOW.js} +9 -9
  16. package/dist/browser/{add-debug-secret-listener-kC3f6MJ4.js → add-debug-secret-listener-DLshy8sj.js} +1 -1
  17. package/dist/browser/{boolean-editor-CcDvjf4v.js → boolean-editor-VUiLykpJ.js} +9 -9
  18. package/dist/browser/{bootIntercom-Oi72XwL8.js → bootIntercom-Btfot_oL.js} +2 -2
  19. package/dist/browser/{booth-by-xy-C1XUefrn.js → booth-by-xy-D6AXHHgL.js} +6 -6
  20. package/dist/browser/{browser-D6THuWbT.js → browser-DZs48Iz5.js} +2 -2
  21. package/dist/browser/bundle.json +61 -61
  22. package/dist/browser/{classnames-xSzwyH3V.js → classnames-Bs6fEBfQ.js} +2 -2
  23. package/dist/browser/{client-Ckc8k_0v.js → client-6N6uSJl-.js} +4 -4
  24. package/dist/browser/{components-BH4RkY32.js → components-ufUbszNV.js} +38 -38
  25. package/dist/browser/{debug-overlay-DxrSUZXf.js → debug-overlay-DGcVO6ry.js} +10 -10
  26. package/dist/browser/{debug-ui-C4ae5PSV.js → debug-ui-A_u8KPY6.js} +6 -6
  27. package/dist/browser/{dist-BPmrgSEF.js → dist-BHBdwYIm.js} +5 -5
  28. package/dist/browser/{dist-Zfy5CL23.js → dist-CjYIs-s0.js} +6 -6
  29. package/dist/browser/{dist-Rqo1w8-Y.js → dist-D2K_bZQY.js} +3 -3
  30. package/dist/browser/{efp-debug-init-Ce7Sn5D4.js → efp-debug-init-CkR453Xy.js} +2 -2
  31. package/dist/browser/{enum-editor-BN11d-BF.js → enum-editor-NNRkgdUY.js} +11 -11
  32. package/dist/browser/{es5-CPPzUHwL.js → es5-DCFcfU2R.js} +2 -2
  33. package/dist/browser/{event-not-found-BFguhOuR.js → event-not-found-D8HQ23ap.js} +1 -1
  34. package/dist/browser/{exports-D18J9L9n.js → exports-O8XjKvRg.js} +1 -1
  35. package/dist/browser/{favicon-B5pSo60G.js → favicon-BEHe-EI3.js} +1 -1
  36. package/dist/browser/{fetch-retry.umd-B7px5cGu.js → fetch-retry.umd-C3YzA_e2.js} +2 -2
  37. package/dist/browser/{flex-Bt8j36Vj.js → flex-DNr-nnJO.js} +5 -5
  38. package/dist/browser/{floorplan.loader-BbTBsOJs.js → floorplan.loader-BgmlRCqt.js} +11 -11
  39. package/dist/browser/{floorplan.ready-HD3RoMwn.js → floorplan.ready-C1Ko5LQv.js} +12 -12
  40. package/dist/browser/{fuse-z3xXFeAa.js → fuse-DFivryfG.js} +2 -2
  41. package/dist/browser/{i18n-YLuQJ6Oc.js → i18n-CtD4ktVP.js} +4 -4
  42. package/dist/browser/index.js +12 -12
  43. package/dist/browser/{index.module-5tkOFEgw.js → index.module-BFGHcA-z.js} +4 -4
  44. package/dist/browser/{is-webview-BYkrL6pb.js → is-webview-BGMbVT8P.js} +1 -1
  45. package/dist/browser/{jsx-runtime-DGPL0ZjM.js → jsx-runtime-DKfaEd8M.js} +2 -2
  46. package/dist/browser/{lib-Lwuwua_0.js → lib-DN41dFq1.js} +4 -4
  47. package/dist/browser/{loadImage-DOyxmnsK.js → loadImage-zScPwiNs.js} +4 -4
  48. package/dist/browser/{logDeviceInfo-BURl3UW3.js → logDeviceInfo-DwILNgjk.js} +9 -9
  49. package/dist/browser/{main-BP4cmOJh.js → main-DiIqziFi.js} +1 -1
  50. package/dist/browser/{mobx-CUylMOL2.js → mobx-BVz1d1Yv.js} +4 -4
  51. package/dist/browser/{particles.min-CriF9e2a.js → particles.min-DLmw35iw.js} +2 -2
  52. package/dist/browser/{prop-types-SLyJ9TBN.js → prop-types-BrRP9I8R.js} +2 -2
  53. package/dist/browser/{react-dom-CLSBRd0z.js → react-dom-Cp3zL50s.js} +3 -3
  54. package/dist/browser/{react-BF089r1n.js → react-u7dD7nVM.js} +2 -2
  55. package/dist/browser/{reset-all-settings-XZdnhflG.js → reset-all-settings-C84qUm-F.js} +7 -7
  56. package/dist/browser/{rolldown-runtime-BUvkcmtZ.js → rolldown-runtime-Dum_XGHV.js} +1 -1
  57. package/dist/browser/{settings-nBI2GMKk.js → settings-Dj2P9R9l.js} +2 -2
  58. package/dist/browser/{settings-item-BOe_N5Wb.js → settings-item-CTWwUwhU.js} +6 -6
  59. package/dist/browser/{store-DHs037e2.js → store-gsgcyMD-.js} +153 -104
  60. package/dist/browser/{string-editor-vL9bltq7.js → string-editor-zaEv64Fb.js} +7 -7
  61. package/dist/browser/{theme-CVNVmWhY.js → theme-kppufad8.js} +8 -8
  62. package/dist/browser/{ui-D8JhIh0k.js → ui-z6pxxEMr.js} +8 -8
  63. package/dist/browser/{useRenderTarget-CSwKYS8S.js → useRenderTarget-CBsqqPXa.js} +4 -4
  64. package/dist/esm/wayfinding/createWayfinding.d.ts +1 -1
  65. package/dist/esm/wayfinding/createWayfinding.js +1 -1
  66. package/dist/esm/wayfinding/renderer/createWayfindingRenderer.d.ts +5 -6
  67. package/dist/esm/wayfinding/renderer/createWayfindingRenderer.js +1 -1
  68. package/dist/esm/wayfinding/renderer/iconManager.d.ts +18 -12
  69. package/dist/esm/wayfinding/renderer/iconManager.js +1 -1
  70. package/dist/esm/wayfinding/renderer/index.d.ts +1 -1
  71. package/dist/esm/wayfinding/renderer/layerManager.d.ts +6 -7
  72. package/dist/esm/wayfinding/renderer/layerManager.js +1 -1
  73. package/dist/esm/{renderer/engine-core/animation.d.ts → wayfinding/renderer/lineAnimation.d.ts} +2 -2
  74. package/dist/esm/wayfinding/renderer/routeLineManager.d.ts +2 -3
  75. package/dist/esm/wayfinding/renderer/routeLineManager.js +1 -1
  76. package/dist/esm/wayfinding/renderer/trailManager.d.ts +11 -8
  77. package/dist/esm/wayfinding/renderer/trailManager.js +1 -1
  78. package/dist/esm/wayfinding/renderer/types.d.ts +53 -86
  79. package/package.json +4 -4
  80. /package/dist/esm/{renderer/engine-core/animation.js → wayfinding/renderer/lineAnimation.js} +0 -0
@@ -2,21 +2,21 @@ function __vite_inject_css__(css, id, forceLightDom){ if (typeof document==='un
2
2
  (function() {
3
3
  try {
4
4
  var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
5
- e.SENTRY_RELEASE = { id: "3.11.4" };
5
+ e.SENTRY_RELEASE = { id: "3.11.5" };
6
6
  var t = new e.Error().stack;
7
- t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "77426ca9-6d7f-49cb-8cbe-c6a6ee5b0cf5", e._sentryDebugIdIdentifier = "sentry-dbid-77426ca9-6d7f-49cb-8cbe-c6a6ee5b0cf5");
7
+ t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "3cf18cdf-4ff4-4fe9-84d6-ca76ef2b8a82", e._sentryDebugIdIdentifier = "sentry-dbid-3cf18cdf-4ff4-4fe9-84d6-ca76ef2b8a82");
8
8
  } catch {}
9
9
  })();
10
- import { r as e, t } from "./rolldown-runtime-BUvkcmtZ.js";
11
- import { t as n } from "./react-BF089r1n.js";
12
- import { i as r } from "./reset-all-settings-XZdnhflG.js";
13
- import { t as i } from "./jsx-runtime-DGPL0ZjM.js";
14
- import { _ as a, a as o, c as s, d as c, f as l, g as u, h as d, i as f, l as p, m, n as h, p as g, r as _, t as v, u as y } from "./loadImage-DOyxmnsK.js";
15
- import { t as b } from "./browser-D6THuWbT.js";
16
- import { B as x, C as S, G as C, H as w, L as T, M as E, Q as D, R as O, U as k, W as A, X as ee, Y as te, Z as ne, _ as j, a as re, at as ie, c as ae, d as M, et as oe, f as se, h as ce, it as le, j as ue, k as de, l as fe, lt as N, m as P, n as pe, o as me, ot as he, p as ge, q as _e, r as ve, rt as ye, s as F, t as be, v as xe, y as Se, z as I } from "./i18n-YLuQJ6Oc.js";
17
- import { t as Ce } from "./is-webview-BYkrL6pb.js";
18
- import { t as we } from "./classnames-xSzwyH3V.js";
19
- import { t as Te } from "./Button-D0XJdrdn.js";
10
+ import { r as e, t } from "./rolldown-runtime-Dum_XGHV.js";
11
+ import { t as n } from "./react-u7dD7nVM.js";
12
+ import { i as r } from "./reset-all-settings-C84qUm-F.js";
13
+ import { t as i } from "./jsx-runtime-DKfaEd8M.js";
14
+ import { _ as a, a as o, c as s, d as c, f as l, g as u, h as d, i as f, l as p, m, n as h, p as g, r as _, t as v, u as y } from "./loadImage-zScPwiNs.js";
15
+ import { t as b } from "./browser-DZs48Iz5.js";
16
+ import { B as x, C as S, G as C, H as w, L as T, M as E, Q as D, R as O, U as k, W as A, X as ee, Y as te, Z as ne, _ as j, a as re, at as ie, c as ae, d as M, et as oe, f as se, h as ce, it as le, j as ue, k as de, l as fe, lt as N, m as P, n as pe, o as me, ot as he, p as ge, q as _e, r as ve, rt as ye, s as F, t as be, v as xe, y as Se, z as I } from "./i18n-CtD4ktVP.js";
17
+ import { t as Ce } from "./is-webview-BGMbVT8P.js";
18
+ import { t as we } from "./classnames-Bs6fEBfQ.js";
19
+ import { t as Te } from "./Button-cW8nOyr7.js";
20
20
  //#endregion
21
21
  //#region src/tools/settings.ts
22
22
  var Ee = /* @__PURE__ */ e((/* @__PURE__ */ t(((e, t) => {
@@ -34758,31 +34758,30 @@ function jL(e, t) {
34758
34758
  n && n.delete(e), i.delete(e);
34759
34759
  }
34760
34760
  function c(r, i, a) {
34761
- var s, c, l;
34762
- let u = e.touchLayer(a.layer), d = rj(a.canvas, qA(a.x, a.y, a.canvas.width, a.canvas.height, t.scale, a.rotation), {
34761
+ var s, c, l, u;
34762
+ let d = e.touchLayer(a.layer), f = t.getScale(), p = t.createImageDef(a.canvas, new st({
34763
+ x: a.x,
34764
+ y: a.y
34765
+ }, {
34766
+ x: a.canvas.width * f,
34767
+ y: a.canvas.height * f
34768
+ }, a.rotation), {
34763
34769
  hidden: (s = a.hidden) == null ? !1 : s,
34764
34770
  dim: (c = a.dimmed) == null ? !1 : c,
34765
34771
  origin: a.origin
34766
34772
  });
34767
- u.children.push(d), t.onPtScale(r, (e) => {
34768
- let t = n.get(r);
34769
- if (!(!t || t.imageDef.hidden)) return t.imageDef.bounds = QA(qA(t.imageDef.bounds.center.x, t.imageDef.bounds.center.y, t.imageDef.source.width, t.imageDef.source.height, e, t.imageDef.bounds.rotation)), t.imageDef;
34770
- }), a.cardinalSnap && t.onRoll(r, (e) => {
34771
- let t = n.get(r);
34772
- if (!t) return;
34773
- let i = gj(e, t.imageDef.bounds.rotation);
34774
- if (i !== void 0) return t.imageDef.bounds.rotation += i, t.imageDef;
34775
- });
34776
- let f = {
34777
- imageDef: d,
34773
+ d.children.push(p);
34774
+ let m = {
34775
+ imageDef: p,
34778
34776
  layerName: a.layer,
34779
- callback: (l = a.onClick) == null ? null : l
34777
+ cardinalSnap: (l = a.cardinalSnap) == null ? !1 : l,
34778
+ callback: (u = a.onClick) == null ? null : u
34780
34779
  };
34781
- return n.set(r, f), o(i, r), f;
34780
+ return n.set(r, m), o(i, r), m;
34782
34781
  }
34783
- function l(r, i, a, o) {
34784
- let l = e.resolveLayer(a.layerName), u = l.children, d = u.indexOf(a.imageDef);
34785
- d >= 0 && u.splice(d, 1), e.touchedLayers.set(a.layerName, l), t.ptScaleRegistry.unregisterByName(r), t.rollRegistry.unregisterByName(r), n.delete(r), s(r), c(r, i, o);
34782
+ function l(t, r, i, a) {
34783
+ let o = e.resolveLayer(i.layerName), l = o.children, u = l.indexOf(i.imageDef);
34784
+ u >= 0 && l.splice(u, 1), e.touchedLayers.set(i.layerName, o), n.delete(t), s(t), c(t, r, a);
34786
34785
  }
34787
34786
  function u(n, r, i, a) {
34788
34787
  var o, s, c;
@@ -34791,7 +34790,14 @@ function jL(e, t) {
34791
34790
  l(n, r, i, a);
34792
34791
  return;
34793
34792
  }
34794
- i.imageDef.bounds = QA(qA(a.x, a.y, a.canvas.width, a.canvas.height, t.scale, a.rotation)), i.imageDef.hidden = (o = a.hidden) == null ? !1 : o, i.imageDef.dim = (s = a.dimmed) == null ? !1 : s, i.callback = (c = a.onClick) == null ? null : c, e.touchLayer(a.layer);
34793
+ let u = t.getScale();
34794
+ i.imageDef.bounds = t.rectToRenderer(new st({
34795
+ x: a.x,
34796
+ y: a.y
34797
+ }, {
34798
+ x: a.canvas.width * u,
34799
+ y: a.canvas.height * u
34800
+ }, a.rotation)), i.imageDef.hidden = (o = a.hidden) == null ? !1 : o, i.imageDef.dim = (s = a.dimmed) == null ? !1 : s, i.callback = (c = a.onClick) == null ? null : c, e.touchLayer(a.layer);
34795
34801
  }
34796
34802
  return {
34797
34803
  setIcon(t, r, i) {
@@ -34818,60 +34824,74 @@ function jL(e, t) {
34818
34824
  for (let t of n.values()) t.imageDef.hidden = !0, t.callback = null, e.touchedLayers.set(t.layerName, e.resolveLayer(t.layerName));
34819
34825
  },
34820
34826
  destroy() {
34821
- for (let e of n.keys()) t.ptScaleRegistry.unregisterByName(e), t.rollRegistry.unregisterByName(e);
34822
34827
  n.clear(), r.clear(), i.clear();
34823
34828
  },
34824
- handleClick({ data: e }) {
34825
- let { defs: t } = dj(e);
34826
- for (let e of n.values()) if (e.callback && !e.imageDef.hidden && t.includes(e.imageDef)) {
34827
- e.callback();
34828
- return;
34829
+ applyScale(e) {
34830
+ let r = [];
34831
+ for (let i of n.values()) {
34832
+ if (i.imageDef.hidden) continue;
34833
+ let { center: n, rotation: a } = i.imageDef.bounds;
34834
+ i.imageDef.bounds = t.rectToRenderer(new st({
34835
+ x: n.x,
34836
+ y: n.y
34837
+ }, {
34838
+ x: i.imageDef.source.width * e,
34839
+ y: i.imageDef.source.height * e
34840
+ }, a)), r.push(i.imageDef);
34829
34841
  }
34842
+ return r;
34830
34843
  },
34831
- handleHover({ data: e }) {
34832
- let r = t.renderer;
34833
- if (!r) return;
34834
- let { defs: i } = dj(e), a = !1;
34835
- for (let e of n.values()) if (e.callback && !e.imageDef.hidden && i.includes(e.imageDef)) {
34836
- a = !0;
34837
- break;
34844
+ applyRoll(e) {
34845
+ let r = [];
34846
+ for (let i of n.values()) {
34847
+ if (!i.cardinalSnap) continue;
34848
+ let n = t.getRotation(e, i.imageDef.bounds.rotation);
34849
+ n !== void 0 && (i.imageDef.bounds.rotation += n, r.push(i.imageDef));
34850
+ }
34851
+ return r;
34852
+ },
34853
+ handleClick(e) {
34854
+ for (let t of n.values()) if (t.callback && !t.imageDef.hidden && e.includes(t.imageDef)) {
34855
+ t.callback();
34856
+ return;
34838
34857
  }
34839
- r.canvas.style.cursor = a ? "pointer" : "";
34858
+ },
34859
+ handleHover(e) {
34860
+ for (let t of n.values()) if (t.callback && !t.imageDef.hidden && e.includes(t.imageDef)) return !0;
34861
+ return !1;
34840
34862
  }
34841
34863
  };
34842
34864
  }
34843
34865
  //#endregion
34844
34866
  //#region src/wayfinding/renderer/layerManager.ts
34845
34867
  function ML(e) {
34846
- let t = e.scene;
34847
- if (!t) throw Error("renderer: rendererService.scene is null — start RendererService before constructing renderer");
34848
- let n = t.rootLayer.children, r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map();
34868
+ let t = e.getLayers(), n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
34849
34869
  return {
34850
- touchedLayers: i,
34870
+ touchedLayers: r,
34851
34871
  resolveLayer(e) {
34852
- let t = r.get(e);
34853
- if (t) return t;
34854
- let i = n.find((t) => t.name === e);
34872
+ let r = n.get(e);
34873
+ if (r) return r;
34874
+ let i = t.find((t) => t.name === e);
34855
34875
  if (!i) throw Error(`renderer: layer "${e}" not found in scene`);
34856
- return r.set(e, i), i;
34876
+ return n.set(e, i), i;
34857
34877
  },
34858
34878
  touchLayer(e) {
34859
34879
  let t = this.resolveLayer(e);
34860
- return i.set(e, t), t;
34880
+ return r.set(e, t), t;
34861
34881
  },
34862
34882
  flush() {
34863
- if (i.size !== 0) {
34864
- for (let e of i.values()) e.children = [...e.children];
34865
- e.update(...i.values()), i.clear();
34883
+ if (r.size !== 0) {
34884
+ for (let e of r.values()) e.children = [...e.children];
34885
+ e.update(...r.values()), r.clear();
34866
34886
  }
34867
34887
  },
34868
34888
  destroy() {
34869
- i.clear(), r.clear();
34889
+ r.clear(), n.clear();
34870
34890
  }
34871
34891
  };
34872
34892
  }
34873
34893
  //#endregion
34874
- //#region src/renderer/engine-core/animation.ts
34894
+ //#region src/wayfinding/renderer/lineAnimation.ts
34875
34895
  function NL(e, t, n, r = 0) {
34876
34896
  let i = 0, a = 0, o = null, s = null;
34877
34897
  if (!e.length) return;
@@ -34953,18 +34973,18 @@ function PL(e, t, n) {
34953
34973
  i = d, a = f;
34954
34974
  let p = (l = c.resetAnimation) == null ? !0 : l, m = 0;
34955
34975
  r && (p || (m = r.getProgress()), r.stop(), r = null);
34956
- let h = o.map((e) => oj(e, n.passed)), g = s.map((e) => oj(e, n.remaining));
34976
+ let h = o.map((e) => n.createLineDef(e, t.passed)), g = s.map((e) => n.createLineDef(e, t.remaining));
34957
34977
  if (d.children = [...h, ...g], !g.length) {
34958
34978
  f.children = [];
34959
34979
  return;
34960
34980
  }
34961
34981
  let _ = g.map((e) => ({
34962
34982
  ...e,
34963
- color: n.active
34983
+ color: t.active
34964
34984
  }));
34965
- r = (u = NL(_, (e, n, r) => {
34966
- f.children = r ? [] : [..._.slice(0, n), e], t.update(f);
34967
- }, () => t.scale, m)) == null ? null : u;
34985
+ r = (u = NL(_, (e, t, r) => {
34986
+ f.children = r ? [] : [..._.slice(0, t), e], n.update(f);
34987
+ }, () => n.getScale(), m)) == null ? null : u;
34968
34988
  },
34969
34989
  clearLines() {
34970
34990
  r && (r.stop(), r = null), i && (i.children = [], e.touchedLayers.set(i.name, i)), a && (a.children = [], e.touchedLayers.set(a.name, a));
@@ -34979,46 +34999,54 @@ function PL(e, t, n) {
34979
34999
  var FL = 40;
34980
35000
  function IL(e, t) {
34981
35001
  let n = /* @__PURE__ */ new Map();
34982
- function r(e) {
34983
- return `trail#${e}`;
34984
- }
34985
- function i(t) {
35002
+ function r(t) {
34986
35003
  if (!t.dotDefs.length) return;
34987
35004
  let n = e.touchLayer(t.layerName), r = new Set(t.dotDefs);
34988
35005
  n.children = n.children.filter((e) => !r.has(e)), t.dotDefs = [];
34989
35006
  }
34990
- function a(n) {
34991
- let r = e.touchLayer(n.layerName), a = t.scale, o = FL * a, s = GI(n.from, n.to, o), c = n.canvas, l = s.map((e) => rj(c, qA(e.x, e.y, c.width, c.height, a)));
34992
- i(n), r.children.push(...l), n.dotDefs = l;
35007
+ function i(n, i) {
35008
+ let a = e.touchLayer(n.layerName), o = FL * i, s = GI(n.from, n.to, o), c = n.canvas, l = s.map((e) => t.createImageDef(c, new st({
35009
+ x: e.x,
35010
+ y: e.y
35011
+ }, {
35012
+ x: c.width * i,
35013
+ y: c.height * i
35014
+ })));
35015
+ r(n), a.children.push(...l), n.dotDefs = l;
34993
35016
  }
34994
- function o(e) {
34995
- let a = n.get(e);
34996
- a && (i(a), t.ptScaleRegistry.unregisterByName(r(e)), n.delete(e));
35017
+ function a(e) {
35018
+ let t = n.get(e);
35019
+ t && (r(t), n.delete(e));
34997
35020
  }
34998
35021
  return {
34999
- setTrail(i, s, c, l) {
35000
- if (s === null || c === null) {
35001
- o(i);
35022
+ setTrail(e, r, o, s) {
35023
+ if (r === null || o === null) {
35024
+ a(e);
35002
35025
  return;
35003
35026
  }
35004
- if (!l) throw Error(`renderer: setTrail("${i}") requires options when from/to are non-null`);
35005
- let u = n.get(i);
35006
- if (u) {
35007
- if (u.canvas !== l.canvas || u.layerName !== l.layer) throw Error(`renderer: trail "${i}" cannot change canvas or layer after first call`);
35008
- u.from = s, u.to = c, a(u);
35027
+ if (!s) throw Error(`renderer: setTrail("${e}") requires options when from/to are non-null`);
35028
+ let c = n.get(e);
35029
+ if (c) {
35030
+ if (c.canvas !== s.canvas || c.layerName !== s.layer) throw Error(`renderer: trail "${e}" cannot change canvas or layer after first call`);
35031
+ c.from = r, c.to = o, i(c, t.getScale());
35009
35032
  return;
35010
35033
  }
35011
- let d = {
35012
- from: s,
35013
- to: c,
35014
- canvas: l.canvas,
35015
- layerName: l.layer,
35034
+ let l = {
35035
+ from: r,
35036
+ to: o,
35037
+ canvas: s.canvas,
35038
+ layerName: s.layer,
35016
35039
  dotDefs: []
35017
35040
  };
35018
- n.set(i, d), t.onPtScale(r(i), () => (a(d), e.touchLayer(d.layerName))), a(d);
35041
+ n.set(e, l), i(l, t.getScale());
35042
+ },
35043
+ applyScale(t) {
35044
+ let r = /* @__PURE__ */ new Set();
35045
+ for (let a of n.values()) i(a, t), r.add(e.touchLayer(a.layerName));
35046
+ return [...r];
35019
35047
  },
35020
35048
  destroy() {
35021
- for (let e of [...n.keys()]) o(e);
35049
+ for (let e of [...n.keys()]) a(e);
35022
35050
  }
35023
35051
  };
35024
35052
  }
@@ -35033,25 +35061,24 @@ function RL(e, t = {}) {
35033
35061
  let n = {
35034
35062
  ...LL,
35035
35063
  ...t.colors
35036
- }, r = ML(e), i = jL(r, e), a = IL(r, e), o = PL(r, e, n), s = e.renderer;
35037
- if (!s) throw Error("renderer: rendererService.renderer is null — start RendererService before constructing renderer");
35038
- s.events.addEventListener("pointer:click", i.handleClick), s.events.addEventListener("pointer:move", i.handleHover);
35039
- let c = {
35064
+ }, r = ML(e), i = jL(r, e), a = IL(r, e), o = PL(r, n, e), s = {
35040
35065
  setIcon: i.setIcon,
35041
35066
  clearIcons: i.clearIcons,
35042
35067
  setTrail: a.setTrail,
35043
35068
  setRouteLines: o.setRouteLines,
35069
+ applyScale: (e) => [...i.applyScale(e), ...a.applyScale(e)],
35070
+ applyRoll: (e) => i.applyRoll(e),
35071
+ handleClick: (e) => i.handleClick(e),
35072
+ handleHover: (e) => i.handleHover(e),
35044
35073
  clearRoute() {
35045
35074
  o.clearLines(), a.destroy(), i.hideAll();
35046
35075
  },
35047
35076
  flush: r.flush,
35048
35077
  destroy() {
35049
- c.clearRoute();
35050
- let t = e.renderer;
35051
- t && (t.events.removeEventListener("pointer:click", i.handleClick), t.events.removeEventListener("pointer:move", i.handleHover)), i.destroy(), a.destroy(), o.destroy(), r.destroy();
35078
+ s.clearRoute(), i.destroy(), a.destroy(), o.destroy(), r.destroy();
35052
35079
  }
35053
35080
  };
35054
- return c;
35081
+ return s;
35055
35082
  }
35056
35083
  //#endregion
35057
35084
  //#region src/wayfinding/runtime/endpointView.ts
@@ -35413,7 +35440,19 @@ function rR(e, t) {
35413
35440
  let a = CF(), o = HI(a), s = yF({
35414
35441
  iconMap: t.fp.icons,
35415
35442
  pixelRatio: devicePixelRatio
35416
- }), c = RL(e), l = xF(t.layerStore, t.routeStore), u = {
35443
+ }), c = RL({
35444
+ createImageDef: rj,
35445
+ createLineDef: oj,
35446
+ getRotation: gj,
35447
+ rectToRenderer: QA,
35448
+ getScale: () => e.scale,
35449
+ getLayers: () => {
35450
+ let t = e.scene;
35451
+ if (!t) throw Error("renderer: rendererService.scene is null — start RendererService first");
35452
+ return t.rootLayer.children;
35453
+ },
35454
+ update: (...t) => e.update(...t)
35455
+ }), l = xF(t.layerStore, t.routeStore), u = {
35417
35456
  points: EL,
35418
35457
  trail: DL,
35419
35458
  lines: OL,
@@ -35456,11 +35495,21 @@ function rR(e, t) {
35456
35495
  layerStore: t.layerStore
35457
35496
  },
35458
35497
  rerouteThresholdSvg: m
35459
- });
35460
- t.routeStore.showAccessible = a.getLines().some((e) => e.unaccessible);
35461
- let g = { engine: o };
35462
- return $L = g, c.flush(), () => {
35463
- $L === g && ($L = null, t.routeStore.showAccessible = !1), h(), d.destroy();
35498
+ }), g = e.renderer;
35499
+ if (!g) throw Error("renderer: rendererService.renderer is null — start RendererService first");
35500
+ let _ = e.onPtScale("wayfinding", (t) => {
35501
+ let n = c.applyScale(t);
35502
+ n.length && e.update(...n);
35503
+ }), v = e.onRoll("wayfinding", (t) => {
35504
+ let n = c.applyRoll(t);
35505
+ n.length && e.update(...n);
35506
+ }), y = (e) => c.handleClick(dj(e.data).defs), b = (e) => {
35507
+ g.canvas.style.cursor = c.handleHover(dj(e.data).defs) ? "pointer" : "";
35508
+ };
35509
+ g.events.addEventListener("pointer:click", y), g.events.addEventListener("pointer:move", b), t.routeStore.showAccessible = a.getLines().some((e) => e.unaccessible);
35510
+ let x = { engine: o };
35511
+ return $L = x, c.flush(), () => {
35512
+ g.events.removeEventListener("pointer:click", y), g.events.removeEventListener("pointer:move", b), $L === x && ($L = null, _(), v(), t.routeStore.showAccessible = !1), h(), d.destroy();
35464
35513
  };
35465
35514
  }
35466
35515
  //#endregion
@@ -36837,7 +36886,7 @@ var cB = (iB = class {
36837
36886
  }
36838
36887
  async buildEngine() {
36839
36888
  try {
36840
- let { default: e } = await import("./fuse-z3xXFeAa.js").then((e) => e.n);
36889
+ let { default: e } = await import("./fuse-DFivryfG.js").then((e) => e.n);
36841
36890
  Se(() => {
36842
36891
  this.engine = new e([], {
36843
36892
  keys: this.keys,
@@ -1,17 +1,17 @@
1
1
  (function() {
2
2
  try {
3
3
  var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
4
- e.SENTRY_RELEASE = { id: "3.11.4" };
4
+ e.SENTRY_RELEASE = { id: "3.11.5" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "da8db9a3-7430-483e-912d-7db8503a8231", e._sentryDebugIdIdentifier = "sentry-dbid-da8db9a3-7430-483e-912d-7db8503a8231");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-BUvkcmtZ.js";
10
- import { t } from "./react-BF089r1n.js";
11
- import { t as n } from "./jsx-runtime-DGPL0ZjM.js";
12
- import { t as r } from "./classnames-xSzwyH3V.js";
13
- import { D as i, i as a, l as o, n as s, s as c, u as l, y as u } from "./flex-Bt8j36Vj.js";
14
- import { t as d } from "./settings-item-BOe_N5Wb.js";
9
+ import { r as e } from "./rolldown-runtime-Dum_XGHV.js";
10
+ import { t } from "./react-u7dD7nVM.js";
11
+ import { t as n } from "./jsx-runtime-DKfaEd8M.js";
12
+ import { t as r } from "./classnames-Bs6fEBfQ.js";
13
+ import { D as i, i as a, l as o, n as s, s as c, u as l, y as u } from "./flex-DNr-nnJO.js";
14
+ import { t as d } from "./settings-item-CTWwUwhU.js";
15
15
  //#region ../../node_modules/.pnpm/@radix-ui+themes@3.3.0_@types+react-dom@19.2.3_@types+react@19.2.17__@types+react@19.2._925f851475345a9e5e368d312bb98178/node_modules/@radix-ui/themes/dist/esm/components/text-field.props.js
16
16
  var f = {
17
17
  size: {
@@ -1,18 +1,18 @@
1
1
  (function() {
2
2
  try {
3
3
  var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
4
- e.SENTRY_RELEASE = { id: "3.11.4" };
4
+ e.SENTRY_RELEASE = { id: "3.11.5" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "79b39fdf-323b-4b9d-ac58-c9e7d1f5b025", e._sentryDebugIdIdentifier = "sentry-dbid-79b39fdf-323b-4b9d-ac58-c9e7d1f5b025");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-BUvkcmtZ.js";
10
- import { t } from "./react-BF089r1n.js";
11
- import { t as n } from "./jsx-runtime-DGPL0ZjM.js";
12
- import { t as r } from "./react-dom-CLSBRd0z.js";
13
- import { t as i } from "./classnames-xSzwyH3V.js";
14
- import { a, c as o, i as s, n as c, o as l, r as u, t as d } from "./dist-Zfy5CL23.js";
15
- import { C as f, E as p, O as m, T as h, _ as g, o as _, v, w as y } from "./flex-Bt8j36Vj.js";
9
+ import { r as e } from "./rolldown-runtime-Dum_XGHV.js";
10
+ import { t } from "./react-u7dD7nVM.js";
11
+ import { t as n } from "./jsx-runtime-DKfaEd8M.js";
12
+ import { t as r } from "./react-dom-Cp3zL50s.js";
13
+ import { t as i } from "./classnames-Bs6fEBfQ.js";
14
+ import { a, c as o, i as s, n as c, o as l, r as u, t as d } from "./dist-CjYIs-s0.js";
15
+ import { C as f, E as p, O as m, T as h, _ as g, o as _, v, w as y } from "./flex-DNr-nnJO.js";
16
16
  //#region ../../node_modules/.pnpm/@radix-ui+react-id@1.1.1_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-id/dist/index.mjs
17
17
  var b = n(), x = /* @__PURE__ */ e(t(), 1), S = x.useId || (() => void 0), C = 0;
18
18
  function w(e) {
@@ -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.11.4" };
4
+ e.SENTRY_RELEASE = { id: "3.11.5" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "43912113-9328-4069-8890-5091c8745c34", e._sentryDebugIdIdentifier = "sentry-dbid-43912113-9328-4069-8890-5091c8745c34");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-BUvkcmtZ.js";
10
- import { a as t, r as n } from "./reset-all-settings-XZdnhflG.js";
11
- import { t as r } from "./jsx-runtime-DGPL0ZjM.js";
12
- import "./settings-nBI2GMKk.js";
13
- import { t as i } from "./browser-D6THuWbT.js";
14
- import { t as a } from "./add-debug-secret-listener-kC3f6MJ4.js";
9
+ import { r as e } from "./rolldown-runtime-Dum_XGHV.js";
10
+ import { a as t, r as n } from "./reset-all-settings-C84qUm-F.js";
11
+ import { t as r } from "./jsx-runtime-DKfaEd8M.js";
12
+ import "./settings-Dj2P9R9l.js";
13
+ import { t as i } from "./browser-DZs48Iz5.js";
14
+ import { t as a } from "./add-debug-secret-listener-DLshy8sj.js";
15
15
  //#region ../debug/src/lib/ui/render-debug-ui.tsx
16
16
  var o = /* @__PURE__ */ e(i(), 1), s = r(), c = !1;
17
17
  function l() {
@@ -26,7 +26,7 @@ function l() {
26
26
  }
27
27
  });
28
28
  let i = async (t) => {
29
- let { DebugUi: n } = await import("./debug-ui-C4ae5PSV.js"), { createRoot: i } = await import("./client-Ckc8k_0v.js").then((t) => /* @__PURE__ */ e(t.default, 1)), a = document.createElement("div");
29
+ let { DebugUi: n } = await import("./debug-ui-A_u8KPY6.js"), { createRoot: i } = await import("./client-6N6uSJl-.js").then((t) => /* @__PURE__ */ e(t.default, 1)), a = document.createElement("div");
30
30
  document.body.appendChild(a), i(a).render(/* @__PURE__ */ (0, s.jsx)(n, {
31
31
  useDebugButtonState: r.useState,
32
32
  open: t
@@ -1,14 +1,14 @@
1
1
  (function() {
2
2
  try {
3
3
  var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
4
- e.SENTRY_RELEASE = { id: "3.11.4" };
4
+ e.SENTRY_RELEASE = { id: "3.11.5" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "d4febe97-784c-4cf8-93f1-f2e3b29f8347", e._sentryDebugIdIdentifier = "sentry-dbid-d4febe97-784c-4cf8-93f1-f2e3b29f8347");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-BUvkcmtZ.js";
10
- import { t } from "./react-BF089r1n.js";
11
- import { s as n } from "./store-DHs037e2.js";
9
+ import { r as e } from "./rolldown-runtime-Dum_XGHV.js";
10
+ import { t } from "./react-u7dD7nVM.js";
11
+ import { s as n } from "./store-gsgcyMD-.js";
12
12
  //#region src/utils/getRenderTargetFromRoot.ts
13
13
  var r = /* @__PURE__ */ e(t(), 1);
14
14
  function i(e) {
@@ -1,4 +1,4 @@
1
- import type { RendererService } from '../renderer';
1
+ import { type RendererService } from '../renderer';
2
2
  import type RootStore from '../store/RootStore';
3
3
  import { type Route, type RouteEndpoint } from './core';
4
4
  /** Whether `createWayfinding` has run and not yet been disposed. */
@@ -1 +1 @@
1
- import{fpGeo as c}from"../data/fpGeo";import{createCanvasIconProvider as E,createFloorContext as _,createGraphDataSource as A}from"./adapters";import{bindMobxReactions as T}from"./bindMobxReactions";import{createWayfindingEngine as W,getThresholdFromMetersToSvg as M,getThresholdSafe as N,resolveRerouteThresholdSvg as v,SNAP_THRESHOLD_METERS as x}from"./core";import{createKioskHandler as L}from"./handlers/kioskHandler";import{createYahHandler as I}from"./handlers/yahHandler";import{WF_CURRENT_POSITION_LAYER_NAME as P,WF_LINES_ANIMATED_LAYER_NAME as b,WF_LINES_LAYER_NAME as F,WF_POINTS_LAYER_NAME as k,WF_TRAIL_LAYER_NAME as C}from"./layers";import{createWayfindingRenderer as H}from"./renderer";import{createWayfindingRuntime as Y}from"./runtime/createWayfindingRuntime";let t=null;export function isWayfindingReady(){return t!==null}function w(){if(!t)throw new Error("Wayfinding is not initialized \u2014 call createWayfinding() first.");return t}export function buildRoute(n,e,i){return w().engine.buildRoute(n,e,i)}export function createWayfinding(n,e){const i=A(),s=W(i),p=E({iconMap:e.fp.icons,pixelRatio:devicePixelRatio}),r=H(n),l=_(e.layerStore,e.routeStore),a={points:k,trail:C,lines:F,linesAnimated:b,currentPosition:P},R=N(c?.properties?.config?.snapThreshold)||x,S=M({thresholdInMeters:R,gpsConfig:c?.properties?.config}),u=Y({engine:s,renderer:r,iconProvider:p,floorContext:l,layers:a,snapThreshold:S,onTransitionClick:o=>{o.role==="exit"&&e.layerStore.updateVisibility(o.targetLayer,!0)},onRouteUpdate:(o,d)=>{e.routeStore.updateRoute(o),d.isEmpty()||(e.uiState.moveToRect=d)},onRouteDistance:o=>e.routeStore.updateRouteDistance(o)}),g=L({renderer:r,kioskIconMap:e.fp.icons,layer:a.points}),m=I({renderer:r,iconMap:e.fp.icons,pixelRatio:devicePixelRatio,floorContext:l,layer:a.points}),y=v(c?.properties?.config),h=T({runtime:u,kioskHandler:g,yahHandler:m,stores:{routeStore:e.routeStore,uiState:e.uiState,layerStore:e.layerStore},rerouteThresholdSvg:y});e.routeStore.showAccessible=i.getLines().some(o=>o.unaccessible);const f={engine:s};return t=f,r.flush(),()=>{t===f&&(t=null,e.routeStore.showAccessible=!1),h(),u.destroy()}}
1
+ import{fpGeo as l}from"../data/fpGeo";import{createImageDef as M,createLineDef as W,getRotation as P,rectToRenderer as I}from"../renderer";import{pickDefaultScene as g}from"../renderer/engine-core/defs";import{createCanvasIconProvider as N,createFloorContext as k,createGraphDataSource as w}from"./adapters";import{bindMobxReactions as x}from"./bindMobxReactions";import{createWayfindingEngine as C,getThresholdFromMetersToSvg as D,getThresholdSafe as b,resolveRerouteThresholdSvg as F,SNAP_THRESHOLD_METERS as H}from"./core";import{createKioskHandler as Y}from"./handlers/kioskHandler";import{createYahHandler as O}from"./handlers/yahHandler";import{WF_CURRENT_POSITION_LAYER_NAME as G,WF_LINES_ANIMATED_LAYER_NAME as U,WF_LINES_LAYER_NAME as q,WF_POINTS_LAYER_NAME as z,WF_TRAIL_LAYER_NAME as K}from"./layers";import{createWayfindingRenderer as V}from"./renderer";import{createWayfindingRuntime as j}from"./runtime/createWayfindingRuntime";let a=null;export function isWayfindingReady(){return a!==null}function B(){if(!a)throw new Error("Wayfinding is not initialized \u2014 call createWayfinding() first.");return a}export function buildRoute(n,t,s){return B().engine.buildRoute(n,t,s)}export function createWayfinding(n,t){const s=w(),d=C(s),h=N({iconMap:t.fp.icons,pixelRatio:devicePixelRatio}),r=V({createImageDef:M,createLineDef:W,getRotation:P,rectToRenderer:I,getScale:()=>n.scale,getLayers:()=>{const e=n.scene;if(!e)throw new Error("renderer: rendererService.scene is null \u2014 start RendererService first");return e.rootLayer.children},update:(...e)=>n.update(...e)}),f=k(t.layerStore,t.routeStore),c={points:z,trail:K,lines:q,linesAnimated:U,currentPosition:G},y=b(l?.properties?.config?.snapThreshold)||H,S=D({thresholdInMeters:y,gpsConfig:l?.properties?.config}),p=j({engine:d,renderer:r,iconProvider:h,floorContext:f,layers:c,snapThreshold:S,onTransitionClick:e=>{e.role==="exit"&&t.layerStore.updateVisibility(e.targetLayer,!0)},onRouteUpdate:(e,o)=>{t.routeStore.updateRoute(e),o.isEmpty()||(t.uiState.moveToRect=o)},onRouteDistance:e=>t.routeStore.updateRouteDistance(e)}),E=Y({renderer:r,kioskIconMap:t.fp.icons,layer:c.points}),v=O({renderer:r,iconMap:t.fp.icons,pixelRatio:devicePixelRatio,floorContext:f,layer:c.points}),_=F(l?.properties?.config),L=x({runtime:p,kioskHandler:E,yahHandler:v,stores:{routeStore:t.routeStore,uiState:t.uiState,layerStore:t.layerStore},rerouteThresholdSvg:_}),i=n.renderer;if(!i)throw new Error("renderer: rendererService.renderer is null \u2014 start RendererService first");const A=n.onPtScale("wayfinding",e=>{const o=r.applyScale(e);o.length&&n.update(...o)}),T=n.onRoll("wayfinding",e=>{const o=r.applyRoll(e);o.length&&n.update(...o)}),u=e=>r.handleClick(g(e.data).defs),m=e=>{i.canvas.style.cursor=r.handleHover(g(e.data).defs)?"pointer":""};i.events.addEventListener("pointer:click",u),i.events.addEventListener("pointer:move",m),t.routeStore.showAccessible=s.getLines().some(e=>e.unaccessible);const R={engine:d};return a=R,r.flush(),()=>{i.events.removeEventListener("pointer:click",u),i.events.removeEventListener("pointer:move",m),a===R&&(a=null,A(),T(),t.routeStore.showAccessible=!1),L(),p.destroy()}}
@@ -1,14 +1,13 @@
1
- import type { RendererService } from '../../renderer';
2
- import type { WayfindingRenderer, WayfindingRendererConfig } from './types';
1
+ import type { RendererPort, WayfindingRenderer, WayfindingRendererConfig } from './types';
3
2
  /**
4
3
  * Create a {@link WayfindingRenderer} — the composition root that wires
5
4
  * together {@link LayerManager}, {@link IconManager}, {@link TrailManager},
6
5
  * and {@link RouteLineManager}.
7
6
  *
8
- * Registers `pointer:click` and `pointer:move` listeners on the renderer
9
- * canvas for icon interaction. Call `destroy()` to unregister them.
7
+ * Exposes `applyScale`/`applyRoll`/`handleClick`/`handleHover` for the app glue
8
+ * to drive from engine events.
10
9
  *
11
- * @throws If `rendererService.scene` or `rendererService.renderer` is null.
10
+ * @throws If `rendererPort.getLayers()` throws (e.g. the scene is not started).
12
11
  */
13
- export declare function createWayfindingRenderer(rendererService: RendererService, config?: WayfindingRendererConfig): WayfindingRenderer;
12
+ export declare function createWayfindingRenderer(rendererPort: RendererPort, config?: WayfindingRendererConfig): WayfindingRenderer;
14
13
  //# sourceMappingURL=createWayfindingRenderer.d.ts.map
@@ -1 +1 @@
1
- import{createIconManager as d}from"./iconManager";import{createLayerManager as m}from"./layerManager";import{createRouteLineManager as f}from"./routeLineManager";import{createTrailManager as u}from"./trailManager";const v={passed:"#B5B7BC",remaining:"#A4CCE2",active:"#0794EA"};export function createWayfindingRenderer(r,i={}){const l={...v,...i.colors},n=m(r),e=d(n,r),t=u(n,r),o=f(n,r,l),a=r.renderer;if(!a)throw new Error("renderer: rendererService.renderer is null \u2014 start RendererService before constructing renderer");a.events.addEventListener("pointer:click",e.handleClick),a.events.addEventListener("pointer:move",e.handleHover);const c={setIcon:e.setIcon,clearIcons:e.clearIcons,setTrail:t.setTrail,setRouteLines:o.setRouteLines,clearRoute(){o.clearLines(),t.destroy(),e.hideAll()},flush:n.flush,destroy(){c.clearRoute();const s=r.renderer;s&&(s.events.removeEventListener("pointer:click",e.handleClick),s.events.removeEventListener("pointer:move",e.handleHover)),e.destroy(),t.destroy(),o.destroy(),n.destroy()}};return c}
1
+ import{createIconManager as i}from"./iconManager";import{createLayerManager as p}from"./layerManager";import{createRouteLineManager as y}from"./routeLineManager";import{createTrailManager as d}from"./trailManager";const g={passed:"#B5B7BC",remaining:"#A4CCE2",active:"#0794EA"};export function createWayfindingRenderer(r,c={}){const s={...g,...c.colors},o=p(r),e=i(o,r),n=d(o,r),t=y(o,s,r),l={setIcon:e.setIcon,clearIcons:e.clearIcons,setTrail:n.setTrail,setRouteLines:t.setRouteLines,applyScale:a=>[...e.applyScale(a),...n.applyScale(a)],applyRoll:a=>e.applyRoll(a),handleClick:a=>e.handleClick(a),handleHover:a=>e.handleHover(a),clearRoute(){t.clearLines(),n.destroy(),e.hideAll()},flush:o.flush,destroy(){l.clearRoute(),e.destroy(),n.destroy(),t.destroy(),o.destroy()}};return l}
@@ -1,13 +1,15 @@
1
- import type { MouseEventData } from '@expofp/renderer';
2
- import { type RendererService } from '../../renderer';
1
+ import type { RenderableDef } from '@expofp/renderer';
3
2
  import type { LayerManager } from './layerManager';
4
- import type { IconConfig } from './types';
3
+ import type { IconConfig, RendererPort } from './types';
5
4
  /**
6
5
  * Manages `ImageDef` icons in the scene graph.
7
6
  *
8
- * Icons are keyed by `(name, key?)`. First `setIcon` creates the `ImageDef`
9
- * and registers scale/roll handlers; subsequent calls mutate in place.
10
- * Pass `config: null` to hide an icon without destroying it.
7
+ * Icons are keyed by `(name, key?)`. First `setIcon` creates the `ImageDef`;
8
+ * subsequent calls mutate in place. Pass `config: null` to hide an icon
9
+ * without destroying it.
10
+ *
11
+ * Exposes pure `applyScale`/`applyRoll`/`handleClick`/`handleHover` that the
12
+ * app glue drives from engine events.
11
13
  */
12
14
  export interface IconManager {
13
15
  /** Place, update, or hide an icon. See {@link WayfindingRenderer.setIcon}. */
@@ -16,16 +18,20 @@ export interface IconManager {
16
18
  clearIcons(names: string | readonly string[]): void;
17
19
  /** Hide every managed icon (used by `clearRoute`). */
18
20
  hideAll(): void;
19
- /** Unregister all scale/roll handlers and clear internal state. */
21
+ /** Clear internal state. */
20
22
  destroy(): void;
21
- /** Pointer click handler — fires the first matching icon's `onClick`. */
22
- handleClick(event: MouseEventData): void;
23
- /** Pointer move handler — sets cursor to "pointer" when hovering a clickable icon. */
24
- handleHover(event: MouseEventData): void;
23
+ /** Recompute bounds of all visible icons for `scale`; returns changed defs. */
24
+ applyScale(scale: number): RenderableDef[];
25
+ /** Apply camera roll to cardinal-snap icons; returns changed defs. */
26
+ applyRoll(cameraAngle: number): RenderableDef[];
27
+ /** Fire the first hit clickable icon's `onClick` from already-picked defs. */
28
+ handleClick(defs: readonly RenderableDef[]): void;
29
+ /** Whether a clickable icon is under the already-picked defs. */
30
+ handleHover(defs: readonly RenderableDef[]): boolean;
25
31
  }
26
32
  /**
27
33
  * Create an {@link IconManager} that places `ImageDef` icons into layers
28
34
  * managed by the given {@link LayerManager}.
29
35
  */
30
- export declare function createIconManager(layerManager: LayerManager, rendererService: RendererService): IconManager;
36
+ export declare function createIconManager(layerManager: LayerManager, rendererPort: RendererPort): IconManager;
31
37
  //# sourceMappingURL=iconManager.d.ts.map