@expofp/floorplan 3.28.2 → 3.28.3

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 (78) hide show
  1. package/dist/browser/{Button-Bv5RpJor.js → Button-Coh7q_DI.js} +5 -5
  2. package/dist/browser/{CookieConsent-DJaq6pNa.js → CookieConsent-j1ipRXTj.js} +7 -7
  3. package/dist/browser/{Debug-B4ydseJj.js → Debug-BU_LYkwF.js} +7 -7
  4. package/dist/browser/{DebugTools-RUzVzNoh.js → DebugTools-DXiyWDhX.js} +6 -6
  5. package/dist/browser/{Demo-Bkpm2IX-.js → Demo-DrtsEare.js} +9 -9
  6. package/dist/browser/{Free-DsJYbiCw.js → Free-C3Wjdjdq.js} +9 -9
  7. package/dist/browser/{GalleryContainer-D1Fa1Q7E.js → GalleryContainer-C3iBxaZn.js} +10 -10
  8. package/dist/browser/{GpsLoader-Du8WHeI4.js → GpsLoader-C5BKW26I.js} +10 -10
  9. package/dist/browser/{KioskStore-CODjghrS.js → KioskStore-DPC-3m9q.js} +5 -5
  10. package/dist/browser/{MaplibreAdapter-sdwLBbMP.js → MaplibreAdapter-CqOBdz25.js} +11 -11
  11. package/dist/browser/{ModalContainer-CWXfGwhW.js → ModalContainer-BZxG9MJw.js} +10 -10
  12. package/dist/browser/{PermissionNotice-B9n2Qw3Q.js → PermissionNotice-39lUAu-m.js} +6 -6
  13. package/dist/browser/{SetKioskMode-JmW37RfD.js → SetKioskMode-xG3fZ6xr.js} +9 -9
  14. package/dist/browser/{ShowKiosk-LjjIcPu_.js → ShowKiosk-CmvZtesx.js} +10 -10
  15. package/dist/browser/{ViewerMenuPanel-CsLSYG6O.js → ViewerMenuPanel-DU_urcM9.js} +9 -9
  16. package/dist/browser/{add-debug-secret-listener-1oZIL3tj.js → add-debug-secret-listener-DStP82Xa.js} +1 -1
  17. package/dist/browser/{adopt-global-settings-zrJJwx4u.js → adopt-global-settings-DR4ZSA9m.js} +9 -9
  18. package/dist/browser/{boolean-editor--CRuWrdg.js → boolean-editor-BVGfJeiC.js} +9 -9
  19. package/dist/browser/{bootIntercom-no0v2GoZ.js → bootIntercom-xqHoo_gz.js} +2 -2
  20. package/dist/browser/bundle.json +69 -69
  21. package/dist/browser/{camera-events-BKVLhJHi.js → camera-events-bN1K0dRW.js} +1 -1
  22. package/dist/browser/{classnames-CKzd-pYu.js → classnames-CXGWo8aH.js} +2 -2
  23. package/dist/browser/{client-CDJSeX9q.js → client-CuvC5nj8.js} +5 -5
  24. package/dist/browser/{components-VrpWbQn4.js → components-CNxmdbeV.js} +37 -37
  25. package/dist/browser/{debug-context-BTuw-R-T.js → debug-context-CuoJeRPl.js} +5 -5
  26. package/dist/browser/{debug-overlay-ZBJzN9c5.js → debug-overlay-xUfCfGkl.js} +10 -10
  27. package/dist/browser/{debug-ui-B1EVyH87.js → debug-ui-Bzlcuehu.js} +6 -6
  28. package/dist/browser/{dimming-BTEBlKp0.js → dimming-CIMGmpWl.js} +7 -7
  29. package/dist/browser/{dist-BH4KGhDp.js → dist-Bl5ybYSW.js} +6 -6
  30. package/dist/browser/{dist-DCybr-U2.js → dist-D2w6YsHQ.js} +5 -5
  31. package/dist/browser/{dist-D_ltId_h.js → dist-D7ZFTk7I.js} +3 -3
  32. package/dist/browser/{efp-debug-init-DKoKNwQT.js → efp-debug-init-DSb7RulJ.js} +3 -3
  33. package/dist/browser/{enum-editor-10yKnYsR.js → enum-editor-Cs-ygRd8.js} +4 -4
  34. package/dist/browser/{es5-CRt0vWhJ.js → es5-DNYtcQ-c.js} +2 -2
  35. package/dist/browser/{event-not-found-B4x1GtCp.js → event-not-found-BlHpQwmn.js} +1 -1
  36. package/dist/browser/{exports-AL81Kp5n.js → exports-9iMM3XEX.js} +1 -1
  37. package/dist/browser/{favicon-B3qp-OIF.js → favicon-eqHI8xVh.js} +1 -1
  38. package/dist/browser/{fetch-retry.umd-BYIjFEks.js → fetch-retry.umd-DVMFpnep.js} +2 -2
  39. package/dist/browser/{flex-IFQ6qq6n.js → flex-CoxCoAmj.js} +5 -5
  40. package/dist/browser/{floorplan.loader-Vyrlw2mc.js → floorplan.loader-D5sL01CC.js} +10 -10
  41. package/dist/browser/{floorplan.ready-tUYdae31.js → floorplan.ready-B4mAWUqB.js} +14 -14
  42. package/dist/browser/{fuse-Bp4dfT-N.js → fuse-Drqz8ttC.js} +2 -2
  43. package/dist/browser/{i18n-C-Td8a4C.js → i18n-m4Ja_btd.js} +7 -7
  44. package/dist/browser/index.html +11 -4
  45. package/dist/browser/index.js +14 -14
  46. package/dist/browser/{index.module-BxARfYtV.js → index.module-D7vtUUo8.js} +4 -4
  47. package/dist/browser/{integrateKiosk-zN54hSva.js → integrateKiosk-BsZQLDc2.js} +4 -4
  48. package/dist/browser/{is-webview-BU4BEuUX.js → is-webview-1SiAcgKc.js} +1 -1
  49. package/dist/browser/{jsx-runtime-C9H_hyCm.js → jsx-runtime-Dv2r57MK.js} +2 -2
  50. package/dist/browser/{kiosk-record-BNuBW1GF.js → kiosk-record-E1YVbTzJ.js} +1 -1
  51. package/dist/browser/{lib-yRuMRo5H.js → lib-CSXPQkHU.js} +3 -3
  52. package/dist/browser/{loadImage-DVwxuWs9.js → loadImage-BvP0FnnL.js} +4 -4
  53. package/dist/browser/{logDeviceInfo-QXC617oc.js → logDeviceInfo-BDvzGnfT.js} +9 -9
  54. package/dist/browser/{mobx-BaqoIfAa.js → mobx-BUccMluP.js} +4 -4
  55. package/dist/browser/{optional-boolean-editor-D_IntWjZ.js → optional-boolean-editor-CPoKrNvB.js} +3 -3
  56. package/dist/browser/{optional-enum-editor-Ld2tzBKf.js → optional-enum-editor-B_7_ZPy-.js} +4 -4
  57. package/dist/browser/{optional-string-editor-DUyn-SkM.js → optional-string-editor-CkJ5fL1p.js} +4 -4
  58. package/dist/browser/{particles.min-Bb3NtrKq.js → particles.min-IdgtSwWV.js} +2 -2
  59. package/dist/browser/{react-DQeN1yhx.js → react-B1BglGm0.js} +2 -2
  60. package/dist/browser/{react-dom-CkDZMXHe.js → react-dom-BhdL-d2L.js} +3 -3
  61. package/dist/browser/{rolldown-runtime-CO5r0keB.js → rolldown-runtime-D3fbr5gg.js} +1 -1
  62. package/dist/browser/{scheduler-CkdtYwXf.js → scheduler-BoBjt-tw.js} +2 -2
  63. package/dist/browser/{select-CMZRoMk5.js → select-BF1LF8_K.js} +10 -10
  64. package/dist/browser/{settings-DlDF6Wfd.js → settings-U7Zg7UQz.js} +2 -2
  65. package/dist/browser/{settings-item-Ms5dFhL2.js → settings-item-kKhjUmc_.js} +6 -6
  66. package/dist/browser/{store-BGLp0W4j.js → store-BAxxXJC1.js} +1233 -1231
  67. package/dist/browser/{string-editor-yLX7Vemf.js → string-editor-BmUo74PT.js} +4 -4
  68. package/dist/browser/{text-field-DksUfwZs.js → text-field-D00wdoGW.js} +5 -5
  69. package/dist/browser/{theme-B0VBWwqc.js → theme-r_iPBO3b.js} +8 -8
  70. package/dist/browser/{ui-BbY5WwJ6.js → ui-BW8jA-DQ.js} +8 -8
  71. package/dist/browser/{useRenderTarget-D2Xxv5qu.js → useRenderTarget-DaMQU-Wc.js} +4 -4
  72. package/dist/browser/{viewport-BcCAkm7S.js → viewport-BcJm0QMy.js} +2 -2
  73. package/dist/esm/components/Map/drawing/config/config-load-layer.js +1 -1
  74. package/dist/esm/components/Map/drawing/config/layer-models.d.ts +31 -0
  75. package/dist/esm/components/Map/drawing/config/layer-models.js +1 -0
  76. package/dist/esm/components/Map/drawing/config/loadBoothsImages.d.ts +1 -25
  77. package/dist/esm/components/Map/drawing/config/loadBoothsImages.js +1 -1
  78. package/package.json +10 -10
@@ -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.28.2" };
4
+ e.SENTRY_RELEASE = { id: "3.28.3" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "edf52ee9-f3a6-424f-a5ff-f0c8342333ab", e._sentryDebugIdIdentifier = "sentry-dbid-edf52ee9-f3a6-424f-a5ff-f0c8342333ab");
7
7
  } catch {}
8
8
  })();
9
- import { t as e } from "./jsx-runtime-C9H_hyCm.js";
10
- import { t } from "./settings-item-Ms5dFhL2.js";
11
- import { t as n } from "./text-field-DksUfwZs.js";
9
+ import { t as e } from "./jsx-runtime-Dv2r57MK.js";
10
+ import { t } from "./settings-item-kKhjUmc_.js";
11
+ import { t as n } from "./text-field-D00wdoGW.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.28.2" };
4
+ e.SENTRY_RELEASE = { id: "3.28.3" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "b57a1337-f6ba-488a-8e6f-60f9358b45a2", e._sentryDebugIdIdentifier = "sentry-dbid-b57a1337-f6ba-488a-8e6f-60f9358b45a2");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-CO5r0keB.js";
10
- import { t } from "./react-DQeN1yhx.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-IFQ6qq6n.js";
12
- import { t as l } from "./classnames-CKzd-pYu.js";
9
+ import { r as e } from "./rolldown-runtime-D3fbr5gg.js";
10
+ import { t } from "./react-B1BglGm0.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-CoxCoAmj.js";
12
+ import { t as l } from "./classnames-CXGWo8aH.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.28.2" };
4
+ e.SENTRY_RELEASE = { id: "3.28.3" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "f5429b84-6f5b-4b20-898f-e5345902ef44", e._sentryDebugIdIdentifier = "sentry-dbid-f5429b84-6f5b-4b20-898f-e5345902ef44");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-CO5r0keB.js";
10
- import { t } from "./react-DQeN1yhx.js";
11
- import { t as n } from "./jsx-runtime-C9H_hyCm.js";
12
- import { t as r } from "./react-dom-CkDZMXHe.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-IFQ6qq6n.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-BH4KGhDp.js";
15
- import { t as y } from "./classnames-CKzd-pYu.js";
9
+ import { r as e } from "./rolldown-runtime-D3fbr5gg.js";
10
+ import { t } from "./react-B1BglGm0.js";
11
+ import { t as n } from "./jsx-runtime-Dv2r57MK.js";
12
+ import { t as r } from "./react-dom-BhdL-d2L.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-CoxCoAmj.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-Bl5ybYSW.js";
15
+ import { t as y } from "./classnames-CXGWo8aH.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.28.2" };
4
+ e.SENTRY_RELEASE = { id: "3.28.3" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "cbb5c555-77ff-4375-8420-80c8ae476dcf", e._sentryDebugIdIdentifier = "sentry-dbid-cbb5c555-77ff-4375-8420-80c8ae476dcf");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-CO5r0keB.js";
10
- import { a as t, i as n, s as r } from "./efp-debug-init-DKoKNwQT.js";
11
- import { a as i, i as a } from "./adopt-global-settings-zrJJwx4u.js";
12
- import { t as o } from "./jsx-runtime-C9H_hyCm.js";
13
- import "./settings-DlDF6Wfd.js";
14
- import { t as s } from "./add-debug-secret-listener-1oZIL3tj.js";
9
+ import { r as e } from "./rolldown-runtime-D3fbr5gg.js";
10
+ import { a as t, i as n, s as r } from "./efp-debug-init-DSb7RulJ.js";
11
+ import { a as i, i as a } from "./adopt-global-settings-DR4ZSA9m.js";
12
+ import { t as o } from "./jsx-runtime-Dv2r57MK.js";
13
+ import "./settings-U7Zg7UQz.js";
14
+ import { t as s } from "./add-debug-secret-listener-DStP82Xa.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-B1EVyH87.js"), { createRoot: i } = await import("./client-CDJSeX9q.js").then((t) => /* @__PURE__ */ e(t.t(), 1)), a = document.createElement("div");
29
+ let { DebugUi: n } = await import("./debug-ui-Bzlcuehu.js"), { createRoot: i } = await import("./client-CuvC5nj8.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.28.2" };
4
+ e.SENTRY_RELEASE = { id: "3.28.3" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "39485aff-c926-4ecb-9ba3-8a127a388075", e._sentryDebugIdIdentifier = "sentry-dbid-39485aff-c926-4ecb-9ba3-8a127a388075");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-CO5r0keB.js";
10
- import { t } from "./react-DQeN1yhx.js";
11
- import { l as n } from "./store-BGLp0W4j.js";
9
+ import { r as e } from "./rolldown-runtime-D3fbr5gg.js";
10
+ import { t } from "./react-B1BglGm0.js";
11
+ import { l as n } from "./store-BAxxXJC1.js";
12
12
  //#region ../ui/src/shared/activeElement.ts
13
13
  var r = (e) => !!e && "activeElement" in e;
14
14
  function i(e) {
@@ -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.28.2" };
4
+ e.SENTRY_RELEASE = { id: "3.28.3" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "df793f8e-2c61-4fcc-bf8c-e603b2d7b174", e._sentryDebugIdIdentifier = "sentry-dbid-df793f8e-2c61-4fcc-bf8c-e603b2d7b174");
7
7
  } catch {}
8
8
  })();
9
- import { c as e, vt as t } from "./store-BGLp0W4j.js";
9
+ import { c as e, vt as t } from "./store-BAxxXJC1.js";
10
10
  //#region src/components/Map/viewport.ts
11
11
  function n(e) {
12
12
  return {
@@ -1 +1 @@
1
- import{getConfig as T}from"@expofp/config";import{degToRad as v,Rect as D}from"@expofp/geometry";import{resolve as F}from"@expofp/resolve";import{BOOTHS_PAINTER_MARKER as G,SEPARATOR as m}from"../../../../constants";import{getFpPaths as H}from"../../../../data/fp-payloads";import{createImageDef as k,createLayerDef as g}from"../../../../engine/defs";import s,{boothStore as K}from"../../../../store";import Y from"../../../../store/init/init-booths";import{getChildLayers as j}from"../../../../store/init/init-layers";import{LayersMode as J}from"../../../../store/LayerStore";import{chunkArray as U}from"../../../../utils";import{loadIcons as Z}from"../../../../utils/imageloader";import q,{BG_LAYER_NAME as R,FG_LAYER_NAME as $}from"./config-bg";import z,{BOOTHS_CHUNK_SIZE as Q}from"./config-booths";import{configOutdoorPoiLayer as V}from"./config-outdoor-poi";import{registerLayerImages as W}from"./layer-images";import{createModelDefFromElement as X,getImageLayerName as ee,getLayerGraphics as oe,getModelLayerName as re}from"./loadBoothsImages";function te(e){return e.childLayers.length?e.childLayers:j(e,e.basePriority,15).layers}function S(e,c){return new Promise(async f=>{let r=[];const a=Y(s,e);if(V(e,a)){e.loaded=!0,e.configured=!0,e.children=[],f(g(e.name,[],{hidden:!0}));return}const i=await q(e),n=[],h=U(a,Q),d=K.booths.filter(o=>o.rect&&(!o.layer||o.layer===e||o.layer.childLayers.includes(e))&&o.exhibitors.find(t=>!!t.logoInBooth&&!!t.logo?.url)&&!s.uiState.hideLogoInBooth),B=new Map(d.map(o=>[o.id,o.noLabels]));d.forEach(o=>o.noLabels=!0),a.length&&h.forEach((o,t)=>{n.push(z(`${e.name}${m}${G}${m}${t}`,o))}),d.forEach(o=>{o.noLabels=B.get(o.id)}),e.loaded=!0;const u=i.children.find(o=>o.name===R),y=i.children.find(o=>o.name===$),p=ee(e.name),{icons:l,models:I}=oe(e),L={name:p,children:[]},b={name:re(e.name),children:I.map(X)};l.length&&W(p,async()=>{const o=await Z(l),t=[];for(const A of o.filter(Boolean)){const{bounds:{x:E,y:P,height:M,angle:N,width:_},htmlImage:C}=A,O=D.fromMinMax({x:E,y:P},{x:E+_,y:P+M},v(N)),x=k(C,O);t.push({shape:x})}return{layer:L,children:t}}),u&&r.push({...u,name:`${i.name}${m}${R}`}),n.length&&r.push(...n),y&&r.push({...y,name:`${i.name}${m}${$}`}),l.length&&r.push(L),b.children.length&&r.push(b);const w=e.childLayers.sort((o,t)=>o.basePriority-t.basePriority).map(async o=>S(o,!0));Promise.all(w).then(o=>{const t=o.flat();t.length&&r.push(...t),e.children=r,e.configured=!0,f(g(e.name,r,{hidden:!c}))})})}export default async function ne(e){return e.configured?g(e.name,e.children,{hidden:!e.visible}):new Promise(async(c,f)=>{if(s.layerStore.mode!==J.Default&&!H(e.name)&&!e.rootParent)try{const n=T().fpSvgLayerJsRefs[e.name];n&&await F(n)}catch(n){console.warn(`Layer data not loaded: ${e.name}`,n)}const r=te(e);r.length&&(e.childLayers=r);const{layers:a}=s.layerStore;s.layerStore.layers=[...a,...r.filter(n=>!a.some(h=>h.name===n.name))];const i=await S(e,e.visible);c(i)})}
1
+ import{getConfig as T}from"@expofp/config";import{degToRad as v,Rect as D}from"@expofp/geometry";import{resolve as F}from"@expofp/resolve";import{BOOTHS_PAINTER_MARKER as G,SEPARATOR as m}from"../../../../constants";import{getFpPaths as H}from"../../../../data/fp-payloads";import{createImageDef as k,createLayerDef as g}from"../../../../engine/defs";import s,{boothStore as K}from"../../../../store";import Y from"../../../../store/init/init-booths";import{getChildLayers as j}from"../../../../store/init/init-layers";import{LayersMode as J}from"../../../../store/LayerStore";import{chunkArray as U}from"../../../../utils";import{loadIcons as Z}from"../../../../utils/imageloader";import q,{BG_LAYER_NAME as R,FG_LAYER_NAME as $}from"./config-bg";import z,{BOOTHS_CHUNK_SIZE as Q}from"./config-booths";import{configOutdoorPoiLayer as V}from"./config-outdoor-poi";import{registerLayerImages as W}from"./layer-images";import{createModelDefFromElement as X}from"./layer-models";import{getImageLayerName as ee,getLayerGraphics as oe,getModelLayerName as re}from"./loadBoothsImages";function te(e){return e.childLayers.length?e.childLayers:j(e,e.basePriority,15).layers}function S(e,c){return new Promise(async f=>{let r=[];const a=Y(s,e);if(V(e,a)){e.loaded=!0,e.configured=!0,e.children=[],f(g(e.name,[],{hidden:!0}));return}const i=await q(e),n=[],h=U(a,Q),d=K.booths.filter(o=>o.rect&&(!o.layer||o.layer===e||o.layer.childLayers.includes(e))&&o.exhibitors.find(t=>!!t.logoInBooth&&!!t.logo?.url)&&!s.uiState.hideLogoInBooth),B=new Map(d.map(o=>[o.id,o.noLabels]));d.forEach(o=>o.noLabels=!0),a.length&&h.forEach((o,t)=>{n.push(z(`${e.name}${m}${G}${m}${t}`,o))}),d.forEach(o=>{o.noLabels=B.get(o.id)}),e.loaded=!0;const u=i.children.find(o=>o.name===R),p=i.children.find(o=>o.name===$),y=ee(e.name),{icons:l,models:I}=oe(e),L={name:y,children:[]},b={name:re(e.name),children:I.map(X)};l.length&&W(y,async()=>{const o=await Z(l),t=[];for(const A of o.filter(Boolean)){const{bounds:{x:E,y:P,height:M,angle:N,width:_},htmlImage:C}=A,O=D.fromMinMax({x:E,y:P},{x:E+_,y:P+M},v(N)),x=k(C,O);t.push({shape:x})}return{layer:L,children:t}}),u&&r.push({...u,name:`${i.name}${m}${R}`}),n.length&&r.push(...n),p&&r.push({...p,name:`${i.name}${m}${$}`}),l.length&&r.push(L),b.children.length&&r.push(b);const w=e.childLayers.sort((o,t)=>o.basePriority-t.basePriority).map(async o=>S(o,!0));Promise.all(w).then(o=>{const t=o.flat();t.length&&r.push(...t),e.children=r,e.configured=!0,f(g(e.name,r,{hidden:!c}))})})}export default async function ne(e){return e.configured?g(e.name,e.children,{hidden:!e.visible}):new Promise(async(c,f)=>{if(s.layerStore.mode!==J.Default&&!H(e.name)&&!e.rootParent)try{const n=T().fpSvgLayerJsRefs[e.name];n&&await F(n)}catch(n){console.warn(`Layer data not loaded: ${e.name}`,n)}const r=te(e);r.length&&(e.childLayers=r);const{layers:a}=s.layerStore;s.layerStore.layers=[...a,...r.filter(n=>!a.some(h=>h.name===n.name))];const i=await S(e,e.visible);c(i)})}
@@ -0,0 +1,31 @@
1
+ import { type ModelDef } from '@expofp/renderer';
2
+ /**
3
+ * The attribute that turns a designer `<image>` into a 3D model: the URL of a
4
+ * .glb/.gltf, authored relative to the drawing. `@expofp/config` rebases it
5
+ * with every other asset URL the drawing carries when the payload loads, so
6
+ * what arrives here is already resolved — absolute for a live load,
7
+ * page-relative or rooted for an offline copy.
8
+ */
9
+ export declare const MODEL_3D_ATTRIBUTE = "data-model-3d";
10
+ /**
11
+ * The rotation an element's `transform` carries, in radians.
12
+ *
13
+ * Only the first transform in the list is read, which is what the designer emits. It inherits the
14
+ * assumption `loadIcons` has always made: an SVG `rotate(a, cx, cy)` is treated as pivoting about
15
+ * the element's own center, because that is what a geometry `Rect` does. A transform with a
16
+ * different pivot is placed wrongly — pre-existing behavior, recorded rather than fixed here.
17
+ * @param element - The graphic to read.
18
+ * @returns The rotation in radians, positive = clockwise.
19
+ */
20
+ export declare function svgTransformRotation(element: SVGGraphicsElement): number;
21
+ /**
22
+ * Builds a {@link ModelDef} from an `<image>` carrying {@link MODEL_3D_ATTRIBUTE}.
23
+ *
24
+ * Bounds come from the element's own x/y/width/height — `Box.fromSvg` reads an `<image>` as readily
25
+ * as a `<rect>` — combined with its transform's rotation. The URL is taken verbatim: the drawing
26
+ * reaches the runtime with its asset URLs already resolved.
27
+ * @param element - The placeholder image.
28
+ * @returns The model def.
29
+ */
30
+ export declare function createModelDefFromElement(element: SVGImageElement): ModelDef;
31
+ //# sourceMappingURL=layer-models.d.ts.map
@@ -0,0 +1 @@
1
+ import{Box as t,degToRad as n,Rect as a}from"@expofp/geometry";export const MODEL_3D_ATTRIBUTE="data-model-3d";export function svgTransformRotation(o){return n(o.transform?.animVal[0]?.angle??0)}export function createModelDefFromElement(o){const r=t.fromSvg(o);return{url:o.getAttribute(MODEL_3D_ATTRIBUTE)??"",bounds:a.fromMinMax(r.min,r.max,svgTransformRotation(o))}}
@@ -1,14 +1,11 @@
1
1
  import { Rect } from '@expofp/geometry';
2
- import { ModelDef } from '@expofp/renderer';
3
2
  import { type Booth } from '../../../../store/BoothStore';
4
3
  import { type Layer } from '../../../../store/LayerStore';
5
- import { ImageUrls } from '../../../../utils/loadImagesInBatches';
4
+ import type { ImageUrls } from '../../../../utils/loadImagesInBatches';
6
5
  export declare function loadLayersImages(): Promise<void>;
7
6
  export declare const getImageLayerName: (layerName: string) => string;
8
7
  export declare const getModelLayerName: (layerName: string) => string;
9
8
  export declare function mapBoothsLogos(booths: Booth[]): Map<number, ImageUrls>;
10
- /** The attribute that turns a designer `<image>` into a 3D model: a relative URL to a .glb/.gltf. */
11
- export declare const MODEL_3D_ATTRIBUTE = "data-model-3d";
12
9
  /**
13
10
  * A layer's designer images, split by what they actually are. An `<image>` carrying
14
11
  * {@link MODEL_3D_ATTRIBUTE} is a placeholder for a 3D model, so it must be kept out of image
@@ -21,27 +18,6 @@ export interface LayerGraphics {
21
18
  models: SVGImageElement[];
22
19
  }
23
20
  export declare function getLayerGraphics(layer: Layer): LayerGraphics;
24
- /**
25
- * The rotation an SVG graphic carries, in radians.
26
- *
27
- * Shared by icons and models so the two cannot drift. It inherits the assumption `loadIcons` has
28
- * always made: an SVG `rotate(a, cx, cy)` is treated as pivoting about the element's own center,
29
- * because that is what a geometry `Rect` does. A transform with a different pivot is placed wrongly —
30
- * pre-existing behavior, recorded rather than fixed here.
31
- * @param element - The graphic to read.
32
- * @returns The rotation in radians, positive = clockwise.
33
- */
34
- export declare function graphicRotation(element: SVGGraphicsElement): number;
35
- /**
36
- * Builds a {@link ModelDef} from an `<image>` carrying {@link MODEL_3D_ATTRIBUTE}.
37
- *
38
- * Bounds come from the element's own x/y/width/height — `Box.fromSvg` reads an `<image>` as readily
39
- * as a `<rect>` — combined with its transform's rotation. The URL is relative to the plan's data
40
- * base, the same resolution ordinary image hrefs get.
41
- * @param element - The placeholder image.
42
- * @returns The model def.
43
- */
44
- export declare function createModelDefFromElement(element: SVGImageElement): ModelDef;
45
21
  export interface BoothImg {
46
22
  booth: Booth;
47
23
  name?: string;
@@ -1 +1 @@
1
- import{Box as u,degToRad as d,radToDeg as h,Rect as g}from"@expofp/geometry";import{update as x}from"@expofp/renderer";import{select as y}from"d3";import{SEPARATOR as p}from"../../../../constants";import{getFpSvgJs as R}from"../../../../data/fp-payloads";import{getLayerSvg as A}from"../../../../data/svg";import{flipImageDef as L,isInnerInsideOuter as w,rotateImageDef as B}from"../../../../engine/utils/rotation";import{getLogoUrl as T}from"../../../../utils/getLogoUrl";import{invokeLayerImages as _}from"./layer-images";export async function loadLayersImages(){const e=_();await Promise.all(e.map(async o=>{const r=await o;if(!r)return;const{layer:n,children:a}=r;if(a.length){const c=[];for(const s of a){const{shape:t,parentRect:i}=s,m=w(t.bounds,i);n.name.includes("Pathway_")||(t.onRoll=m?({roll:l})=>B(t,l)?[t]:void 0:({roll:l})=>L(t,l)?[t]:void 0),c.push(t)}n.children.push(...c),x(n)}}))}export const getImageLayerName=e=>`${e}${p}images`,getModelLayerName=e=>`${e}${p}models`;export function mapBoothsLogos(e){return new Map(e.map(o=>{const r=o.rect&&o.exhibitors.find(n=>n.logoInBooth&&n.logo);return r?[o.id,{preferred:T(r.logo),fallback:r.logo.url}]:null}).filter(Boolean))}export const MODEL_3D_ATTRIBUTE="data-model-3d";export function getLayerGraphics(e){const o=y(A(e)).select(`[data-layer="${e.name}"]`),r=(R().__fpVersion>5?o.selectAll(":scope > image, :scope > g:not([data-layer]) image").nodes():o.selectAll(":scope > g[data-is-editable='false'] image").nodes()).filter(Boolean),n=[],a=[];for(const c of r)(c.hasAttribute(MODEL_3D_ATTRIBUTE)?a:n).push(c);return{icons:n,models:a}}export function graphicRotation(e){return d(e.transform?.animVal[0]?.angle??0)}export function createModelDefFromElement(e){const o=u.fromSvg(e);return{url:D(e.getAttribute(MODEL_3D_ATTRIBUTE)),bounds:g.fromMinMax(o.min,o.max,graphicRotation(e))}}function D(e){return!e?.startsWith("data:")&&e?.indexOf("://")===-1?window.__dataUrlBase+e:e}export function createBoothImg(e,o){const r=e.rect,n=r.size.width,a=r.size.height,c=a?n/a:1,s=o.height?o.width/o.height:1;let t,i,m;const l=.9;c>s?(i=a*l,t=i*s):(t=n*l,i=t/s);const f=e.rotate||0;return s>=2&&!f&&a>=n*2?(i=n*l,t=i*s,m=-90):m=h(f),t>n&&(t=n,i=t/s),i>a&&(i=a,t=i*s),{name:e.slug,bounds:new g(r.center,{x:t,y:i},d(m),e.elevation),htmlImage:o,booth:e}}
1
+ import{degToRad as p,radToDeg as d,Rect as u}from"@expofp/geometry";import{update as h}from"@expofp/renderer";import{select as y}from"d3";import{SEPARATOR as g}from"../../../../constants";import{getFpSvgJs as L}from"../../../../data/fp-payloads";import{getLayerSvg as R}from"../../../../data/svg";import{flipImageDef as A,isInnerInsideOuter as x,rotateImageDef as T}from"../../../../engine/utils/rotation";import{getLogoUrl as w}from"../../../../utils/getLogoUrl";import{invokeLayerImages as I}from"./layer-images";import{MODEL_3D_ATTRIBUTE as B}from"./layer-models";export async function loadLayersImages(){const t=I();await Promise.all(t.map(async r=>{const s=await r;if(!s)return;const{layer:e,children:n}=s;if(n.length){const c=[];for(const a of n){const{shape:o,parentRect:i}=a,m=x(o.bounds,i);e.name.includes("Pathway_")||(o.onRoll=m?({roll:l})=>T(o,l)?[o]:void 0:({roll:l})=>A(o,l)?[o]:void 0),c.push(o)}e.children.push(...c),h(e)}}))}export const getImageLayerName=t=>`${t}${g}images`,getModelLayerName=t=>`${t}${g}models`;export function mapBoothsLogos(t){const r=new Map;for(const s of t){if(!s.rect)continue;const e=s.exhibitors.find(n=>n.logoInBooth&&n.logo)?.logo;e&&r.set(s.id,{preferred:w(e),fallback:e.url})}return r}export function getLayerGraphics(t){const r=y(R(t)).select(`[data-layer="${t.name}"]`),s=((L().__fpVersion??0)>5?r.selectAll(":scope > image, :scope > g:not([data-layer]) image").nodes():r.selectAll(":scope > g[data-is-editable='false'] image").nodes()).filter(Boolean),e=[],n=[];for(const c of s)(c.hasAttribute(B)?n:e).push(c);return{icons:e,models:n}}export function createBoothImg(t,r){const s=t.rect,e=s.size.width,n=s.size.height,c=n?e/n:1,a=r.height?r.width/r.height:1;let o,i,m;const l=.9;c>a?(i=n*l,o=i*a):(o=e*l,i=o/a);const f=t.rotate||0;return a>=2&&!f&&n>=e*2?(i=e*l,o=i*a,m=-90):m=d(f),o>e&&(o=e,i=o/a),i>n&&(i=n,o=i*a),{name:t.slug,bounds:new u(s.center,{x:o,y:i},p(m),t.elevation),htmlImage:r,booth:t}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expofp/floorplan",
3
- "version": "3.28.2",
3
+ "version": "3.28.3",
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.28.2",
73
- "@expofp/debug": "3.28.2",
74
- "@expofp/geometry": "3.28.2",
75
- "@expofp/renderer": "3.28.2",
76
- "@expofp/resolve": "3.28.2",
77
- "@expofp/schema": "3.28.2",
78
- "@expofp/ui": "3.28.2",
79
- "@expofp/utils": "3.28.2",
80
- "@expofp/wayfinding": "3.28.2"
72
+ "@expofp/config": "3.28.3",
73
+ "@expofp/debug": "3.28.3",
74
+ "@expofp/geometry": "3.28.3",
75
+ "@expofp/renderer": "3.28.3",
76
+ "@expofp/resolve": "3.28.3",
77
+ "@expofp/schema": "3.28.3",
78
+ "@expofp/ui": "3.28.3",
79
+ "@expofp/utils": "3.28.3",
80
+ "@expofp/wayfinding": "3.28.3"
81
81
  },
82
82
  "devDependencies": {
83
83
  "@babel/plugin-proposal-decorators": "^8.0.2",