@expofp/floorplan 3.3.3 → 3.3.4

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 (69) hide show
  1. package/dist/browser/{CookieConsent-sDQo-0EJ.js → CookieConsent-BD8YYuAz.js} +8 -8
  2. package/dist/browser/{Debug-CvLDmNtf.js → Debug-CTM7bwcB.js} +7 -7
  3. package/dist/browser/{Demo-BIN-9Byl.js → Demo-8RLpvYDl.js} +11 -11
  4. package/dist/browser/{Free-B8eGBqQQ.js → Free-D9owazfY.js} +11 -11
  5. package/dist/browser/{Gallery-DjZBpRHt.js → Gallery-B_VEe-6K.js} +23 -23
  6. package/dist/browser/{GpsLoader-Cz3_mR5n.js → GpsLoader-zJZWRNUV.js} +10 -10
  7. package/dist/browser/{KioskStore-BrU77o4M.js → KioskStore-BTvpoCJ5.js} +21 -21
  8. package/dist/browser/{Mapbox--eEzdKzE.js → Mapbox-C5s0yWnS.js} +18 -18
  9. package/dist/browser/{Modal-Ct18MJ2q.js → Modal-C2P-Safy.js} +10 -10
  10. package/dist/browser/{SetKioskMode-fzX9PYsw.js → SetKioskMode-DbRSyXis.js} +10 -10
  11. package/dist/browser/{ShowKiosk-BPjI2SkF.js → ShowKiosk-DvvNsJ8c.js} +10 -10
  12. package/dist/browser/{ThreeComponent-BojqEwAn.js → ThreeComponent-BP2wGaGL.js} +225 -225
  13. package/dist/browser/{TouchHand-z3nuPt79.js → TouchHand-BiltNw_w.js} +4 -4
  14. package/dist/browser/{ViewerMenuPanel-C9M519BJ.js → ViewerMenuPanel-DvAFtsKx.js} +15 -15
  15. package/dist/browser/{add-debug-secret-listener-BYvcWOzn.js → add-debug-secret-listener-DHEcvtA7.js} +1 -1
  16. package/dist/browser/{boolean-editor-8waRPQEr.js → boolean-editor-zBsLiQBV.js} +10 -10
  17. package/dist/browser/{bootIntercom-DzT_cyct.js → bootIntercom-DOwpR7wA.js} +2 -2
  18. package/dist/browser/{box-CKMi11kW.js → box-_8KyVthZ.js} +9 -9
  19. package/dist/browser/{browser-B-790CcS.js → browser-B7rRKgxm.js} +2 -2
  20. package/dist/browser/bundle.json +58 -58
  21. package/dist/browser/{classnames-DGR7_2nj.js → classnames-BbE3xWS9.js} +2 -2
  22. package/dist/browser/{client-DT-y1DeS.js → client-ZIZPbd_y.js} +4 -4
  23. package/dist/browser/{components-B1ZCX-HW.js → components-CxP0qrt5.js} +1143 -1144
  24. package/dist/browser/{data-C2NVC4p9.js → data-BwmCMKib.js} +42 -42
  25. package/dist/browser/{debug-overlay-D3ZEN2MQ.js → debug-overlay-CD1OCYlN.js} +14 -14
  26. package/dist/browser/{debug-ui-BWf7qN43.js → debug-ui-CwnXUUdQ.js} +6 -6
  27. package/dist/browser/{dist-BaBzquX7.js → dist-B6Kvkpry.js} +3 -3
  28. package/dist/browser/{dist-CjRG98JL.js → dist-BVboNkqG.js} +5 -5
  29. package/dist/browser/{dist-1jedMzCr.js → dist-C1crA21V.js} +6 -6
  30. package/dist/browser/{efp-debug-init-BubqdIhG.js → efp-debug-init-CawoA29J.js} +2 -2
  31. package/dist/browser/{enum-editor-DWVGeYhf.js → enum-editor-DDiuz8v4.js} +11 -11
  32. package/dist/browser/{event-not-found-Bx-96RVJ.js → event-not-found-DXmhN-MG.js} +1 -1
  33. package/dist/browser/{exports-Q5c6UR9n.js → exports-DxmlGvNc.js} +1 -1
  34. package/dist/browser/{favicon-D2fxzTMc.js → favicon-CiNbY-5U.js} +1 -1
  35. package/dist/browser/{fetch-retry.umd-aiO6wAJB.js → fetch-retry.umd-B3Gup1vr.js} +2 -2
  36. package/dist/browser/{flex-sSVaNy3T.js → flex-CexXP66N.js} +6 -6
  37. package/dist/browser/{flex.props-SiNz5QyC.js → flex.props-DLRw9CIt.js} +2 -2
  38. package/dist/browser/{floorplan.loader-B-Rc04Er.js → floorplan.loader-D1X7IsEm.js} +11 -11
  39. package/dist/browser/{floorplan.ready-CjCBCs5T.js → floorplan.ready-B32jn3wC.js} +50 -50
  40. package/dist/browser/{fuse-CXHmdv2L.js → fuse-B5kCip9y.js} +2 -2
  41. package/dist/browser/{i18n-CiGhzuUP.js → i18n-B4OJR1P_.js} +3 -3
  42. package/dist/browser/index.js +12 -12
  43. package/dist/browser/{jsx-runtime-Bi7TFNQo.js → jsx-runtime-De0ydnJ4.js} +2 -2
  44. package/dist/browser/{lib-oDcliKSv.js → lib-DDsC1-MJ.js} +4 -4
  45. package/dist/browser/{main-B3R1fH3d.js → main-ChyUxDJA.js} +1 -1
  46. package/dist/browser/{mobx-Bj9LG1de.js → mobx-DbnxgSWu.js} +4 -4
  47. package/dist/browser/{particles.min-CK-8rQBr.js → particles.min-YXbpub8s.js} +2 -2
  48. package/dist/browser/{prop-types-AS5miMZ3.js → prop-types-Dv7mT1jM.js} +2 -2
  49. package/dist/browser/{react-BpsVpEVJ.js → react-CHpF4LsC.js} +2 -2
  50. package/dist/browser/{react-dom-BHBh-OG9.js → react-dom-QQ4-yNjm.js} +3 -3
  51. package/dist/browser/{reset-all-settings-DvRmbTat.js → reset-all-settings-Cg_t_zGK.js} +7 -7
  52. package/dist/browser/{rolldown-runtime-C3VsPfIL.js → rolldown-runtime-B9peA1Y2.js} +1 -1
  53. package/dist/browser/{settings-DBqcM4FB.js → settings-Be0SGjUE.js} +2 -2
  54. package/dist/browser/{settings-item-CJR1RTD_.js → settings-item-DiHeZyGy.js} +6 -6
  55. package/dist/browser/{storage-PQ1MxWOw.js → storage-Dbmy0e3X.js} +2 -2
  56. package/dist/browser/{store-CDrDmuZ_.js → store-B0U5c4wN.js} +4987 -4962
  57. package/dist/browser/{string-editor-CdCxvEYj.js → string-editor-0xudUhbB.js} +8 -8
  58. package/dist/browser/{theme-BzWIgyGm.js → theme-t-nmlm7h.js} +11 -11
  59. package/dist/browser/{ui-KNQmMyHk.js → ui-4ob-MDOh.js} +8 -8
  60. package/dist/browser/{useRenderTarget-BC6yDEQY.js → useRenderTarget-DAX0rrFI.js} +4 -4
  61. package/dist/esm/components/Map/Map.js +1 -1
  62. package/dist/esm/components/Map/drawing/config/config-all.js +1 -1
  63. package/dist/esm/components/Map/drawing/config/config-booth-badge.js +1 -1
  64. package/dist/esm/components/Map/drawing/config/config-booth-labels.d.ts +7 -0
  65. package/dist/esm/components/Map/drawing/config/config-booth-labels.js +1 -1
  66. package/dist/esm/store/init/init-layers.js +1 -1
  67. package/dist/esm/utils/is-pathway-layer.d.ts +2 -0
  68. package/dist/esm/utils/is-pathway-layer.js +1 -0
  69. package/package.json +3 -3
@@ -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.3.3" };
4
+ e.SENTRY_RELEASE = { id: "3.3.4" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "cd480886-739a-4a03-b71c-754ed9c72382", e._sentryDebugIdIdentifier = "sentry-dbid-cd480886-739a-4a03-b71c-754ed9c72382");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-C3VsPfIL.js";
10
- import { t } from "./react-BpsVpEVJ.js";
11
- import { t as n } from "./jsx-runtime-Bi7TFNQo.js";
12
- import { E as r, c as i, l as a, o, r as s, v as c } from "./box-CKMi11kW.js";
13
- import { t as l } from "./classnames-DGR7_2nj.js";
14
- import { t as u } from "./flex.props-SiNz5QyC.js";
15
- import { t as d } from "./settings-item-CJR1RTD_.js";
9
+ import { r as e } from "./rolldown-runtime-B9peA1Y2.js";
10
+ import { t } from "./react-CHpF4LsC.js";
11
+ import { t as n } from "./jsx-runtime-De0ydnJ4.js";
12
+ import { E as r, c as i, l as a, o, r as s, v as c } from "./box-_8KyVthZ.js";
13
+ import { t as l } from "./classnames-BbE3xWS9.js";
14
+ import { t as u } from "./flex.props-DLRw9CIt.js";
15
+ import { t as d } from "./settings-item-DiHeZyGy.js";
16
16
  //#region ../../node_modules/.pnpm/@radix-ui+themes@3.3.0_@types+react-dom@19.2.3_@types+react@19.2.15__@types+react@19.2._ac899fea414b44484ec07dc0c111a714/node_modules/@radix-ui/themes/dist/esm/components/text-field.props.js
17
17
  var f = {
18
18
  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.3.3" };
4
+ e.SENTRY_RELEASE = { id: "3.3.4" };
5
5
  var t = new e.Error().stack;
6
- t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "3f32cbe3-f0e0-43de-b820-425477bb3610", e._sentryDebugIdIdentifier = "sentry-dbid-3f32cbe3-f0e0-43de-b820-425477bb3610");
6
+ t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "dff1ee57-bb59-416e-95ac-bc354cf80471", e._sentryDebugIdIdentifier = "sentry-dbid-dff1ee57-bb59-416e-95ac-bc354cf80471");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-C3VsPfIL.js";
10
- import { t } from "./react-BpsVpEVJ.js";
11
- import { t as n } from "./jsx-runtime-Bi7TFNQo.js";
12
- import { t as r } from "./react-dom-BHBh-OG9.js";
13
- import { C as i, D as a, S as o, T as s, _ as c, a as l, g as u, w as d } from "./box-CKMi11kW.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-1jedMzCr.js";
15
- import { t as y } from "./classnames-DGR7_2nj.js";
9
+ import { r as e } from "./rolldown-runtime-B9peA1Y2.js";
10
+ import { t } from "./react-CHpF4LsC.js";
11
+ import { t as n } from "./jsx-runtime-De0ydnJ4.js";
12
+ import { t as r } from "./react-dom-QQ4-yNjm.js";
13
+ import { C as i, D as a, S as o, T as s, _ as c, a as l, g as u, w as d } from "./box-_8KyVthZ.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-C1crA21V.js";
15
+ import { t as y } from "./classnames-BbE3xWS9.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.15__@ty_df31f7659159064425103695f04b2f6c/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",
@@ -1351,7 +1351,7 @@ var jn = function(e) {
1351
1351
  }
1352
1352
  }
1353
1353
  };
1354
- }, Mn = /* @__PURE__ */ new Set(["left", "top"]);
1354
+ }, Mn = /*#__PURE__*/ new Set(["left", "top"]);
1355
1355
  async function Nn(e, t) {
1356
1356
  let { placement: n, platform: r, elements: i } = e, a = await (r.isRTL == null ? void 0 : r.isRTL(i.floating)), o = W(n), s = on(n), c = G(n) === "y", l = Mn.has(o) ? -1 : 1, u = a && c ? -1 : 1, d = U(t, e), { mainAxis: f, crossAxis: p, alignmentAxis: m } = typeof d == "number" ? {
1357
1357
  mainAxis: d,
@@ -1601,7 +1601,7 @@ function ir(e) {
1601
1601
  y: s
1602
1602
  };
1603
1603
  }
1604
- var ar = /* @__PURE__ */ H(0);
1604
+ var ar = /*#__PURE__*/ H(0);
1605
1605
  function or(e) {
1606
1606
  let t = K(e);
1607
1607
  return !Xn() || !t.visualViewport ? ar : {
@@ -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.3.3" };
4
+ e.SENTRY_RELEASE = { id: "3.3.4" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "11c667ee-f279-40ae-b116-af84691ecf19", e._sentryDebugIdIdentifier = "sentry-dbid-11c667ee-f279-40ae-b116-af84691ecf19");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-C3VsPfIL.js";
10
- import { i as t, r as n } from "./reset-all-settings-DvRmbTat.js";
11
- import { t as r } from "./jsx-runtime-Bi7TFNQo.js";
12
- import "./settings-DBqcM4FB.js";
13
- import { t as i } from "./browser-B-790CcS.js";
14
- import { t as a } from "./add-debug-secret-listener-BYvcWOzn.js";
9
+ import { r as e } from "./rolldown-runtime-B9peA1Y2.js";
10
+ import { i as t, r as n } from "./reset-all-settings-Cg_t_zGK.js";
11
+ import { t as r } from "./jsx-runtime-De0ydnJ4.js";
12
+ import "./settings-Be0SGjUE.js";
13
+ import { t as i } from "./browser-B7rRKgxm.js";
14
+ import { t as a } from "./add-debug-secret-listener-DHEcvtA7.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-BWf7qN43.js"), { createRoot: i } = await import("./client-DT-y1DeS.js").then((t) => /* @__PURE__ */ e(t.default, 1)), a = document.createElement("div");
29
+ let { DebugUi: n } = await import("./debug-ui-CwnXUUdQ.js"), { createRoot: i } = await import("./client-ZIZPbd_y.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.3.3" };
4
+ e.SENTRY_RELEASE = { id: "3.3.4" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "efd08859-ff4a-4f73-977e-4ad657829cfc", e._sentryDebugIdIdentifier = "sentry-dbid-efd08859-ff4a-4f73-977e-4ad657829cfc");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-C3VsPfIL.js";
10
- import { t } from "./react-BpsVpEVJ.js";
11
- import { s as n } from "./store-CDrDmuZ_.js";
9
+ import { r as e } from "./rolldown-runtime-B9peA1Y2.js";
10
+ import { t } from "./react-CHpF4LsC.js";
11
+ import { s as n } from "./store-B0U5c4wN.js";
12
12
  //#region src/utils/getRenderTargetFromRoot.ts
13
13
  var r = /* @__PURE__ */ e(t(), 1);
14
14
  function i(e) {
@@ -1 +1 @@
1
- import{jsx as S,jsxs as I,Fragment as H}from"react/jsx-runtime";import{useObserver as Y}from"mobx-react-lite";import q from"classnames";import{useEffect as J,useMemo as Q,useRef as z,useState as ee}from"react";import{observable as oe}from"mobx";import i,{boothStore as te,layersStore as R,uiState as e}from"../../store";import re from"./drawing/config/config-all";import{useReaction as d}from"../../utils/mobx";import{LayerMode as g}from"../../store/LayerStore";import p from"../../tools/settings";import{Rect as x}from"./drawing/config/Rect";import C from"../../core/Rect";import{Exhibitor as F}from"../../store/ExhibitorStore";import{BoothBase as ne}from"../../store/BoothStore";import{CurrentPosition as ie,Route as ae}from"../../store/RouteStore";import{Category as se}from"../../store/CategoryStore";import T from"../../tools/logger";import{svgArea as D}from"../../data/svg";import{configMarkers as le,getMarkerFromClick as me}from"./drawing/config/config-markers";import ce from"color";import{createWayfinding as fe}from"../../wayfinding/createWayfinding";import{createSceneDef as de}from"../../renderer";import{convertGpsToLocal as ue}from"../../utils/gps";import{fpGeo as pe}from"../../data/fpGeo";import v from"../../utils/is-debug";import{Draggable as he}from"../Draggable";import{useBuildRoute as ve}from"./traffic/useBuildRoute";import{useManageTraffic as be}from"./traffic/useManageTraffic";import{DEBUG_STORAGE_KEY as G,PATHWAY_KEY as N}from"../../constants";import O from"./booth-by-xy";import{mapRollSetting as X}from"../../renderer";import{loadLayersImages as ye}from"./drawing/config/loadBoothsImages";import{areLayersEnabled as ge}from"../../utils/areLayersEnabled";import{pickDefaultScene as A,pickDefaultScenePoint as xe}from"../../renderer/engine-core/defs";const j=Number.isFinite(p.maxZoom);export default function we(){let k={};const K="#ebebeb",h=z(),b=Q(()=>oe({moving:!1,prevLevel:i.layerStore.layers.find(o=>!o.frozen&&o.visible)}),[]),s=i.rendererService;let l;const L=z(null);let B=null,M=null;const[U,V]=ee(()=>typeof window<"u"&&window.localStorage?localStorage.getItem(G)!=="false":!0);d(()=>i.routeStore.currentRouteLayer,()=>{if(!s.scene||b.prevLevel===i.routeStore.currentRouteLayer)return;const o=s.scene.rootLayer.children.filter(r=>i.layerStore.floors.some(n=>r.name.includes(n.name)));let t=i.routeStore.currentRouteLayer.name;if(!o.find(r=>r.name===t))return;const a=o?.map(r=>(r.name===t&&(r.hidden=!1),r.name===b.prevLevel?.name&&(r.hidden=!0),r));b.prevLevel=i.routeStore.currentRouteLayer,s.update(...a)}),d(()=>e.centerMap,()=>{!e.centerMap||i.mapboxStore.showMapbox||(l.controls.resetCamera({zoom:!!(e.list.type==="search"&&e.list.text)}),e.centerMap=!1)}),J(()=>{if(!h.current)return;async function o(){let t={};try{if(v){const r=document.createElement("canvas").getContext("webgl2"),n=r&&r.getExtension("EXT_disjoint_timer_query_webgl2"),m=(await import("stats-gl")).default,f=new m({trackGPU:n,horizontal:!0}),u=L.current;if(!u)throw new Error("memoryInfoPanel not found.");f.dom.style.position="relative",u.style.width=`${90*(n?3:2)}px`,u.style.height="48px",u.appendChild(f.dom),t={stats:f,memoryInfoPanel:u}}}catch(a){console.error(a)}l=s.create({canvas:h.current,ui:t}),e.canvasVisibleRectPx&&(l.visibleRect=x.fromCoreRect(e.canvasVisibleRectPx)),re(s).then(a=>{v&&console.log("Renderer settings",l);const r=ce(p.backgroundColor==="none"?K:p.backgroundColor).string("rgba");k=de(a,x.fromCoreRect(D),r),s.start(k),X(l,i.fp.enableRotation?1:0),j&&l.viewport.setMaxZoom(p.maxZoom),R.layersLoaded=!0,i.fp.onFpConfigured&&i.fp?.onFpConfigured(),B=fe(s),M=le(s),ye(s)}),l.events.addEventListener("pointer:move",({data:a})=>{if(e.setKioskModeEnabled)return;const{point:r,defs:n}=A(a),c=O(r.x,r.y),m=E(n[0]);e.hoveredBooth=c||m}),l.events.addEventListener("pointer:out",()=>{e.setKioskModeEnabled||(e.hoveredBooth=null)}),l.events.addEventListener("pointer:click",({data:a})=>{if(!e?.rootElement)return;window.__resett&&window.__resett(),e.overlayPosition==="bottom"&&e.overlaySize==="full"&&i.showMap();const{point:r,defs:n}=A(a),{x:c,y:m}=r;if(e.onGetCoordsClick){const y=i.layerStore.layers.find(w=>w.visible&&(w.mode===g.TurnedOn||w.mode===g.TurnedOff));e.onGetCoordsClick({x:c,y:m,z:y?.name||null})}if(e.setKioskModeEnabled)return;if(e.onMarkerClick){const y=me(c,m,s.scale);v&&console.log("marker",y),e.onMarkerClick(y)}const f=O(r.x,r.y),u=E(n[0]);v&&console.log("boothIdFromClientXy",f,"boothByShape",u,"pointer:click point",r),i.clickBooth(f||u)}),l.events.addEventListener("navigation:change",()=>window.__resett&&window.__resett())}return o(),i.fp.getCenterCoordinates=Z,()=>W()},[]);function W(){B?.(),M?.(),s.dispose()}function Z(){const o=h.current;if(!h.current)throw new Error("Canvas not ready");const t=xe(l.viewport.canvasToSvg({x:o.clientWidth/2,y:o.clientHeight/2})),r=i.layerStore.visible.find(n=>n.mode===g.TurnedOff||n.mode===g.TurnedOn)?.name||null;return{...t,z:r}}function E(o){return!o||!o.shape?null:te.booths.find(t=>t.shapes?.find(a=>a.shape==o.shape))}d(()=>e.zoomBy,()=>{if(!e.zoomBy||i.mapboxStore.showMapbox)return;const o=e.zoomBy;l.controls.zoomBy(o),e.zoomBy=null}),d(()=>e.dimmed,o=>{if(!s.scene)return;const t=s.scene.rootLayer;t.dim!==o&&(t.dim=o,s.update(t))}),d(()=>e.details,()=>{if(!e.onDetails)return;if(!e.details){e.onDetails(null);return}var o=e.details;if(p.EXPO==="wineparis"&&(o instanceof F&&(o=o.booths[0]),!o))return;let t=null,a=[];o instanceof F?(t="exhibitor",a=o.booths.map(n=>n.name).sort((n,c)=>n==i.routeStore.tempToBooth?.name?-1:c==i.routeStore.tempToBooth?.name?1:0)):o instanceof ne?(t="booth",a=[o.name]):o instanceof ae?(t="route",a=[o.from?.name,o.to?.name].filter(n=>!!n)):o instanceof se&&(t="category",a=o.exhibitors.map(n=>n.booths.map(c=>c.name)).flat());var r={type:t,name:o?.name,id:o?.id,externalId:o?.externalId,boothsNames:a};e.onDetails({...r,...t==="route"?{routeInfo:i.routeStore.routeInfo}:{}})}),d(()=>e.canvasVisibleRectPx,()=>{s.renderer&&(s.renderer.visibleRect=x.fromCoreRect(e.canvasVisibleRectPx))},{fireImmediately:!0}),d(()=>e.moveToRect,()=>{!e.moveToRect||i.mapboxStore.showMapbox||(e.moveToRect&&e.moveToRect.h!==1/0&&e.moveToRect.w!==1/0&&e.moveToRect.h>0&&e.moveToRect.w>0&&_(e.moveToRect),e.moveToRect=null)}),d(()=>e.rollReset,o=>{o&&(l.controls.resetCamera({roll:!0}),e.rollReset=!1)}),d(()=>e.moveToBooths,()=>{if(T.log("this.moveToBooths",e.moveToBooths),!e.moveToBooths||i.mapboxStore.showMapbox)return;T.log("watched moveToBooths",e.moveToBooths);const o=e.moveToBooths.filter(t=>t.rect).map(t=>t.rect);o.length!==0&&(_(C.fromMultiple(o)),e.moveToBooths=null)}),d(()=>e.mapSettings,({zoomtime:o,center:t,centerxy:a,bearing:r,roll:n,z:c})=>{if(!(i.mapboxStore.showMapbox||!s.renderer))try{o&&o!==e.defaultMapSettings.zoomtime&&s.renderer.controls.configure({zoomTime:o/1e3}),i.fp.enableRotation&&X(l,n);let m;if(t){const f=t.split(",").map(Number),u=new ie(void 0,void 0,void 0,void 0,f[0],f[1]);m=ue(u,pe.properties.config)}else if(a){const f=a.split(",").map(Number);m={x:f[0],y:f[1]}}c&&i.fp.activateFloor({name:c}),(m?.x||m?.y)&&s.renderer.controls.panTo(m.x,m.y),Number.isFinite(r)&&s.renderer.controls.rollTo(r)}catch(m){T.error("Error in mapSettings reaction",m)}}),ve({enabled:R.layersLoaded&&e.buildRoute,rendererService:s});const P="routes-api.expofp.com";be({permission:R.layersLoaded,rendererService:s,dataJsonUrl:`https://${P}/v1/routes?expo=${p.EXPO}`,websocketUrl:`wss://${P}/locations?expo=${p.EXPO}`}),d(()=>i.layerStore.visible,o=>{if(!s.scene)return;const t=o.filter(n=>n.name.toLowerCase().includes(N)),r=s.scene.rootLayer.children.filter(n=>n.name.toLowerCase().includes(N));r.forEach(n=>{n.hidden=!t.find(c=>c.name===n.name)}),s.update(...r)});function _(o){let t=o;const a=$(o,D);e.kioskData&&(!ge()||i.routeStore.defaultFrom?.layer?.name===i.routeStore.currentRouteLayer?.name)&&(t=C.fromMultiple([o,C.fromXywh(e.kioskData.x,e.kioskData.y,1,1)]));const r=x.fromCoreRect(t),n={paddingPercent:a,maxZoom:j?void 0:10};if(e.shouldShiftMapRect){l.visibleRect.min={...l.visibleRect.min,x:l.visibleRect.min.x+e.overlayWidthPx},l.visibleRect=l.visibleRect;try{l.controls.zoomTo(r,n)}finally{l.visibleRect.min={...l.visibleRect.min,x:l.visibleRect.min.x-e.overlayWidthPx}}}else l.controls.zoomTo(r,n)}function $(o,t){return!o||!t?0:(o.w*o.h/(t.h*t.w)>.1?15:25)/100}return Y(()=>I(H,{children:[S("canvas",{style:{width:"100%",height:"100%"},ref:h,className:q({map:!0,moving:b.moving,hidden:i.mapboxStore.showMapbox}),children:"ExpoFP.com"}),v&&U&&I(he,{className:"debug-fps",children:[S("div",{ref:L}),S("button",{onClick:()=>{typeof window<"u"&&window.localStorage&&localStorage.setItem(G,"false"),V(!1)},style:{padding:"4px 8px",fontSize:"11px",cursor:"pointer",backgroundColor:"#333",color:"#fff",border:"1px solid #555",width:"100%"},children:"Hide debug"})]})]}))}
1
+ import{jsx as S,jsxs as I,Fragment as H}from"react/jsx-runtime";import{useObserver as q}from"mobx-react-lite";import J from"classnames";import{useEffect as Q,useMemo as Y,useRef as z,useState as ee}from"react";import{observable as oe}from"mobx";import i,{boothStore as te,layersStore as R,uiState as e}from"../../store";import re from"./drawing/config/config-all";import{useReaction as d}from"../../utils/mobx";import{LayerMode as g}from"../../store/LayerStore";import p from"../../tools/settings";import{Rect as x}from"./drawing/config/Rect";import C from"../../core/Rect";import{Exhibitor as F}from"../../store/ExhibitorStore";import{BoothBase as ne}from"../../store/BoothStore";import{CurrentPosition as ie,Route as ae}from"../../store/RouteStore";import{Category as se}from"../../store/CategoryStore";import T from"../../tools/logger";import{svgArea as D}from"../../data/svg";import{configMarkers as le,getMarkerFromClick as me}from"./drawing/config/config-markers";import ce from"color";import{createWayfinding as fe}from"../../wayfinding/createWayfinding";import{createSceneDef as de}from"../../renderer";import{convertGpsToLocal as ue}from"../../utils/gps";import{fpGeo as pe}from"../../data/fpGeo";import v from"../../utils/is-debug";import{Draggable as he}from"../Draggable";import{useBuildRoute as ve}from"./traffic/useBuildRoute";import{useManageTraffic as be}from"./traffic/useManageTraffic";import{DEBUG_STORAGE_KEY as G}from"../../constants";import{isPathwayLayer as N}from"../../utils/is-pathway-layer";import O from"./booth-by-xy";import{mapRollSetting as X}from"../../renderer";import{loadLayersImages as ye}from"./drawing/config/loadBoothsImages";import{areLayersEnabled as ge}from"../../utils/areLayersEnabled";import{pickDefaultScene as j,pickDefaultScenePoint as xe}from"../../renderer/engine-core/defs";const U=Number.isFinite(p.maxZoom);export default function we(){let k={};const V="#ebebeb",h=z(),b=Y(()=>oe({moving:!1,prevLevel:i.layerStore.layers.find(o=>!o.frozen&&o.visible)}),[]),s=i.rendererService;let l;const L=z(null);let B=null,M=null;const[Z,$]=ee(()=>typeof window<"u"&&window.localStorage?localStorage.getItem(G)!=="false":!0);d(()=>i.routeStore.currentRouteLayer,()=>{if(!s.scene||b.prevLevel===i.routeStore.currentRouteLayer)return;const o=s.scene.rootLayer.children.filter(r=>i.layerStore.floors.some(n=>r.name.includes(n.name)));let t=i.routeStore.currentRouteLayer.name;if(!o.find(r=>r.name===t))return;const a=o?.map(r=>(r.name===t&&(r.hidden=!1),r.name===b.prevLevel?.name&&(r.hidden=!0),r));b.prevLevel=i.routeStore.currentRouteLayer,s.update(...a)}),d(()=>e.centerMap,()=>{!e.centerMap||i.mapboxStore.showMapbox||(l.controls.resetCamera({zoom:!!(e.list.type==="search"&&e.list.text)}),e.centerMap=!1)}),Q(()=>{if(!h.current)return;async function o(){let t={};try{if(v){const r=document.createElement("canvas").getContext("webgl2"),n=r&&r.getExtension("EXT_disjoint_timer_query_webgl2"),m=(await import("stats-gl")).default,f=new m({trackGPU:n,horizontal:!0}),u=L.current;if(!u)throw new Error("memoryInfoPanel not found.");f.dom.style.position="relative",u.style.width=`${90*(n?3:2)}px`,u.style.height="48px",u.appendChild(f.dom),t={stats:f,memoryInfoPanel:u}}}catch(a){console.error(a)}l=s.create({canvas:h.current,ui:t}),e.canvasVisibleRectPx&&(l.visibleRect=x.fromCoreRect(e.canvasVisibleRectPx)),re(s).then(a=>{v&&console.log("Renderer settings",l);const r=ce(p.backgroundColor==="none"?V:p.backgroundColor).string("rgba");k=de(a,x.fromCoreRect(D),r),s.start(k),X(l,i.fp.enableRotation?1:0),U&&l.viewport.setMaxZoom(p.maxZoom),R.layersLoaded=!0,i.fp.onFpConfigured&&i.fp?.onFpConfigured(),B=fe(s),M=le(s),ye(s)}),l.events.addEventListener("pointer:move",({data:a})=>{if(e.setKioskModeEnabled)return;const{point:r,defs:n}=j(a),c=O(r.x,r.y),m=E(n[0]);e.hoveredBooth=c||m}),l.events.addEventListener("pointer:out",()=>{e.setKioskModeEnabled||(e.hoveredBooth=null)}),l.events.addEventListener("pointer:click",({data:a})=>{if(!e?.rootElement)return;window.__resett&&window.__resett(),e.overlayPosition==="bottom"&&e.overlaySize==="full"&&i.showMap();const{point:r,defs:n}=j(a),{x:c,y:m}=r;if(e.onGetCoordsClick){const y=i.layerStore.layers.find(w=>w.visible&&(w.mode===g.TurnedOn||w.mode===g.TurnedOff));e.onGetCoordsClick({x:c,y:m,z:y?.name||null})}if(e.setKioskModeEnabled)return;if(e.onMarkerClick){const y=me(c,m,s.scale);v&&console.log("marker",y),e.onMarkerClick(y)}const f=O(r.x,r.y),u=E(n[0]);v&&console.log("boothIdFromClientXy",f,"boothByShape",u,"pointer:click point",r),i.clickBooth(f||u)}),l.events.addEventListener("navigation:change",()=>window.__resett&&window.__resett())}return o(),i.fp.getCenterCoordinates=K,()=>A()},[]);function A(){B?.(),M?.(),s.dispose()}function K(){const o=h.current;if(!h.current)throw new Error("Canvas not ready");const t=xe(l.viewport.canvasToSvg({x:o.clientWidth/2,y:o.clientHeight/2})),r=i.layerStore.visible.find(n=>n.mode===g.TurnedOff||n.mode===g.TurnedOn)?.name||null;return{...t,z:r}}function E(o){return!o||!o.shape?null:te.booths.find(t=>t.shapes?.find(a=>a.shape==o.shape))}d(()=>e.zoomBy,()=>{if(!e.zoomBy||i.mapboxStore.showMapbox)return;const o=e.zoomBy;l.controls.zoomBy(o),e.zoomBy=null}),d(()=>e.dimmed,o=>{if(!s.scene)return;const t=s.scene.rootLayer;t.dim!==o&&(t.dim=o,s.update(t))}),d(()=>e.details,()=>{if(!e.onDetails)return;if(!e.details){e.onDetails(null);return}var o=e.details;if(p.EXPO==="wineparis"&&(o instanceof F&&(o=o.booths[0]),!o))return;let t=null,a=[];o instanceof F?(t="exhibitor",a=o.booths.map(n=>n.name).sort((n,c)=>n==i.routeStore.tempToBooth?.name?-1:c==i.routeStore.tempToBooth?.name?1:0)):o instanceof ne?(t="booth",a=[o.name]):o instanceof ae?(t="route",a=[o.from?.name,o.to?.name].filter(n=>!!n)):o instanceof se&&(t="category",a=o.exhibitors.map(n=>n.booths.map(c=>c.name)).flat());var r={type:t,name:o?.name,id:o?.id,externalId:o?.externalId,boothsNames:a};e.onDetails({...r,...t==="route"?{routeInfo:i.routeStore.routeInfo}:{}})}),d(()=>e.canvasVisibleRectPx,()=>{s.renderer&&(s.renderer.visibleRect=x.fromCoreRect(e.canvasVisibleRectPx))},{fireImmediately:!0}),d(()=>e.moveToRect,()=>{!e.moveToRect||i.mapboxStore.showMapbox||(e.moveToRect&&e.moveToRect.h!==1/0&&e.moveToRect.w!==1/0&&e.moveToRect.h>0&&e.moveToRect.w>0&&_(e.moveToRect),e.moveToRect=null)}),d(()=>e.rollReset,o=>{o&&(l.controls.resetCamera({roll:!0}),e.rollReset=!1)}),d(()=>e.moveToBooths,()=>{if(T.log("this.moveToBooths",e.moveToBooths),!e.moveToBooths||i.mapboxStore.showMapbox)return;T.log("watched moveToBooths",e.moveToBooths);const o=e.moveToBooths.filter(t=>t.rect).map(t=>t.rect);o.length!==0&&(_(C.fromMultiple(o)),e.moveToBooths=null)}),d(()=>e.mapSettings,({zoomtime:o,center:t,centerxy:a,bearing:r,roll:n,z:c})=>{if(!(i.mapboxStore.showMapbox||!s.renderer))try{o&&o!==e.defaultMapSettings.zoomtime&&s.renderer.controls.configure({zoomTime:o/1e3}),i.fp.enableRotation&&X(l,n);let m;if(t){const f=t.split(",").map(Number),u=new ie(void 0,void 0,void 0,void 0,f[0],f[1]);m=ue(u,pe.properties.config)}else if(a){const f=a.split(",").map(Number);m={x:f[0],y:f[1]}}c&&i.fp.activateFloor({name:c}),(m?.x||m?.y)&&s.renderer.controls.panTo(m.x,m.y),Number.isFinite(r)&&s.renderer.controls.rollTo(r)}catch(m){T.error("Error in mapSettings reaction",m)}}),ve({enabled:R.layersLoaded&&e.buildRoute,rendererService:s});const P="routes-api.expofp.com";be({permission:R.layersLoaded,rendererService:s,dataJsonUrl:`https://${P}/v1/routes?expo=${p.EXPO}`,websocketUrl:`wss://${P}/locations?expo=${p.EXPO}`}),d(()=>i.layerStore.visible,o=>{if(!s.scene)return;const t=o.filter(n=>N(n.name)),r=s.scene.rootLayer.children.filter(n=>N(n.name));r.forEach(n=>{n.hidden=!t.find(c=>c.name===n.name)}),s.update(...r)});function _(o){let t=o;const a=W(o,D);e.kioskData&&(!ge()||i.routeStore.defaultFrom?.layer?.name===i.routeStore.currentRouteLayer?.name)&&(t=C.fromMultiple([o,C.fromXywh(e.kioskData.x,e.kioskData.y,1,1)]));const r=x.fromCoreRect(t),n={paddingPercent:a,maxZoom:U?void 0:10};if(e.shouldShiftMapRect){l.visibleRect.min={...l.visibleRect.min,x:l.visibleRect.min.x+e.overlayWidthPx},l.visibleRect=l.visibleRect;try{l.controls.zoomTo(r,n)}finally{l.visibleRect.min={...l.visibleRect.min,x:l.visibleRect.min.x-e.overlayWidthPx}}}else l.controls.zoomTo(r,n)}function W(o,t){return!o||!t?0:(o.w*o.h/(t.h*t.w)>.1?15:25)/100}return q(()=>I(H,{children:[S("canvas",{style:{width:"100%",height:"100%"},ref:h,className:J({map:!0,moving:b.moving,hidden:i.mapboxStore.showMapbox}),children:"ExpoFP.com"}),v&&Z&&I(he,{className:"debug-fps",children:[S("div",{ref:L}),S("button",{onClick:()=>{typeof window<"u"&&window.localStorage&&localStorage.setItem(G,"false"),$(!1)},style:{padding:"4px 8px",fontSize:"11px",cursor:"pointer",backgroundColor:"#333",color:"#fff",border:"1px solid #555",width:"100%"},children:"Hide debug"})]})]}))}
@@ -1 +1 @@
1
- import c from"../../../../store";import E from"./config-load-layer";import{createLayerDef as t}from"../../../../renderer";import{WF_LINES_ANIMATED_LAYER_NAME as _,WF_LINES_LAYER_NAME as d,WF_POINTS_LAYER_NAME as p,WF_TRAIL_LAYER_NAME as y}from"../../../../wayfinding/layers";import{MARKER_LAYER_NAME as N}from"./config-markers";import{createTrafficLayers as R}from"../../traffic/trafficLayers";import{PATHWAY_KEY as u}from"../../../../constants";import{configBoothsBadges as M}from"./config-booth-badge";export default function Y(f){let{layers:r,defaultLayer:s}=c.layerStore;if(s){const o=[].concat(r),e=r.find(i=>i===s),a=r.indexOf(e);o.splice(a,1),r=[e].concat(o)}const L=r.filter(o=>!o.rootParent).map(o=>E(o,f));return Promise.all(L).then(o=>{const e=t(p,[],{dim:!1,interactive:!0}),a=t(d,[],{dim:!1}),i=t(N,[]),l=t(y,[],{dim:!1}),A=t(_,[],{dim:!1});o.forEach(m=>{m.name.toLowerCase().includes(u)&&(m.dim=!1)});const n=M(f,"root",c.boothStore.booths);return[...o.flat(),...n?[n]:[],...R(),i,l,a,A,e]})}
1
+ import L from"../../../../store";import _ from"./config-load-layer";import{createLayerDef as t}from"../../../../renderer";import{WF_LINES_ANIMATED_LAYER_NAME as d,WF_LINES_LAYER_NAME as E,WF_POINTS_LAYER_NAME as N,WF_TRAIL_LAYER_NAME as h}from"../../../../wayfinding/layers";import{MARKER_LAYER_NAME as u}from"./config-markers";import{createTrafficLayers as R}from"../../traffic/trafficLayers";import{configBoothsBadges as M}from"./config-booth-badge";import{isPathwayLayer as w}from"../../../../utils/is-pathway-layer";export default function I(i){let{layers:r,defaultLayer:n}=L.layerStore;if(n){const o=[].concat(r),e=r.find(f=>f===n),s=r.indexOf(e);o.splice(s,1),r=[e].concat(o)}const y=r.filter(o=>!o.rootParent).map(o=>_(o,i));return Promise.all(y).then(o=>{const e=t(N,[],{dim:!1,interactive:!0}),s=t(E,[],{dim:!1}),f=t(u,[]),p=t(h,[],{dim:!1}),A=t(d,[],{dim:!1}),m=[],c=[];for(const a of o.flat())w(a.name)?(a.dim=!1,c.push(a)):m.push(a);const l=M(i,"root",L.boothStore.booths);return[...m,...l?[l]:[],...c,...R(),f,p,s,A,e]})}
@@ -1 +1 @@
1
- import{RegularBooth as Z}from"../../../../store/BoothStore";import{Rect as v}from"./Rect";import{getFontUrlByWeight as j}from"./config-booth-labels";import q from"color";import U from"../../../../tools/settings";import{boothStore as J,uiState as K}from"../../../../store";import{reaction as X}from"mobx";import{createShapeDef as Q,createTextDef as V,createTextDefLines as tt}from"../../../../renderer";import{getContrastTextColor as nt}from"../../../../utils/getContrastTextColor";import{getFont as et}from"./canvases";import{getTrianglesFromFpPaths as ot}from"../../../../data/svg";import{pointInTriangle as it}from"../../../../utils/geometry";import{SEPARATOR as M}from"../../../../constants";import rt from"../../../../data";const k=400,st=.5,ct=.3,N=15,ft=24,L=30,at=12,lt=12,z=.8,Y=document.createElement("canvas").getContext("2d");function dt(t){return t.length<=N?t:t.slice(0,N-1)+"\u2026"}function b(t){if(!t.paths?.length)return[];const n=t.layer?.name||"",e=[];for(const o of t.paths)for(const s of ot(o.index,n))e.push(s);return e}function ut(t){const n=b(t);if(!n.length)return null;let e=1/0,o=1/0,s=-1/0,r=-1/0;for(const c of n)for(const i of c)i[0]<e&&(e=i[0]),i[1]<o&&(o=i[1]),i[0]>s&&(s=i[0]),i[1]>r&&(r=i[1]);return isFinite(e)?{x1:e,y1:o,w:s-e,h:r-o}:null}function T(t,n,e){for(const o of e)if(it(t,n,o))return!0;return!1}function mt(t,n,e,o,s,r){if(!t.length||!T(n,e,t))return r;let c=0,i=r;const p=10;for(let h=0;h<p;h++){const u=(c+i)/2,m=o*u,l=s*u;T(n+m,e,t)&&T(n,e+l,t)&&T(n+m,e+l,t)?c=u:i=u}return c}function gt(t){return ut(t)??t.rect}function ht(t,n,e,o){const s=gt(t);if(n.length){const m=new Set;let l=null,g=1/0;for(const E of n)for(const x of E){const _=`${x[0]},${x[1]}`;if(m.has(_))continue;m.add(_);const B=x[0]+e,y=x[1]+e;if(T(B,y,n)){const I=B-s.x1+(y-s.y1);I<g&&(g=I,l={x:B,y})}}if(l)return l}const r=t.rect.x1+e,c=t.rect.y1+e;if(!o)return{x:r,y:c};const i=Math.cos(o),p=Math.sin(o),h=r-t.rect.cx,u=c-t.rect.cy;return{x:t.rect.cx+h*i-u*p,y:t.rect.cy+h*p+u*i}}function C(t){return t&&t!=="none"?t:void 0}function xt(t){const n=C(t.borderColor)||C(U.boothBorderColor)||U.colors.booths.default;return t.paths?.length>1&&C(t.paths[t.paths.length-1].color)||n}export function createBoothBadge(t,n){const e=dt(n.title||n.name),o=xt(n),s=nt(q(o).hex()),r=window.devicePixelRatio||1,c=et(L,k);Y.font=c;const i=Y.measureText(e).width,p=Math.ceil(i+at*2),h=L+lt*2,u=(n.borderWidth||J.borderWidth)/2,m=p*z,l=h*z,g=n.rotate?-n.rotate:0,E=n.rect.w,x=n.rect.h,_=Math.min(E>0?E*st/m:1/0,x>0?x*ct/l:1/0),B=b(n),{x:y,y:I}=ht(n,B,u,g),G=mt(B,y,I,m,l,_),P=Math.cos(g),$=Math.sin(g),S=(f,A)=>{const D=f/2,R=A/2,F=y+D*P-R*$,O=I+D*$+R*P;return new v({x:F-D,y:O-R},{x:F+D,y:O+R},g)},H=f=>{const A=Math.min(f,G);return S(m*A,l*A)},W=j(k,t.fontUrls),d=Q(S(1,1),o);d.hidden=!0,d.dim=n.skipDim?!1:void 0;const a=V(tt([[e],[]],s,0,[W,W]),S(1,1),[0,0],{horizontal:"center",vertical:"center"});a.hidden=!0,a.dim=n.skipDim?!1:void 0;const w=()=>!!(n.layer&&!n.layer.visible);return X(()=>n.skipDim,f=>{d.dim=f?!1:void 0,a.dim=f?!1:void 0,t.update(d,a)}),X(()=>n.layer?.visible??!0,f=>{d.hidden=!f,a.hidden=!f,t.update(d,a)}),t.onPtScale(`badge-bg-${n.id}`,f=>(d.shape=H(f),d.hidden=w(),d)),t.onPtScale(`badge-text-${n.id}`,f=>{const A=Math.min(f,G);return a.lines[0].fontSize=ft/r*A,a.bounds=H(f),a.hidden=w(),a}),{bg:d,text:a}}export function configBoothsBadges(t,n,e){if(rt.hideExhibitorBoothNumber)return null;const o=[],s=[];for(const r of e)if(r instanceof Z&&r.noLabels&&!K.hideLogoInBooth&&r.exhibitors.some(c=>c.logoInBooth&&c.logo)){const{bg:c,text:i}=createBoothBadge(t,r);o.push(c),s.push(i)}return o.length?{name:`${n}${M}badges`,children:[{name:`${n}${M}badgeBgs`,children:o},{name:`${n}${M}badgeTexts`,children:s}]}:null}
1
+ import{RegularBooth as Z}from"../../../../store/BoothStore";import{Rect as v}from"./Rect";import{getBadgeFontWeight as j,getFontUrlByWeight as q}from"./config-booth-labels";import J from"color";import X from"../../../../tools/settings";import{boothStore as K,uiState as Q}from"../../../../store";import{reaction as k}from"mobx";import{createShapeDef as V,createTextDef as tt,createTextDefLines as nt}from"../../../../renderer";import{getContrastTextColor as et}from"../../../../utils/getContrastTextColor";import{getFont as ot}from"./canvases";import{getTrianglesFromFpPaths as it}from"../../../../data/svg";import{pointInTriangle as rt}from"../../../../utils/geometry";import{SEPARATOR as M}from"../../../../constants";import st from"../../../../data";const ct=.5,ft=.3,L=15,at=24,N=30,lt=12,dt=12,z=.8,Y=document.createElement("canvas").getContext("2d");function ut(t){return t.length<=L?t:t.slice(0,L-1)+"\u2026"}function b(t){if(!t.paths?.length)return[];const n=t.layer?.name||"",e=[];for(const o of t.paths)for(const c of it(o.index,n))e.push(c);return e}function gt(t){const n=b(t);if(!n.length)return null;let e=1/0,o=1/0,c=-1/0,r=-1/0;for(const s of n)for(const i of s)i[0]<e&&(e=i[0]),i[1]<o&&(o=i[1]),i[0]>c&&(c=i[0]),i[1]>r&&(r=i[1]);return isFinite(e)?{x1:e,y1:o,w:c-e,h:r-o}:null}function _(t,n,e){for(const o of e)if(rt(t,n,o))return!0;return!1}function mt(t,n,e,o,c,r){if(!t.length||!_(n,e,t))return r;let s=0,i=r;const p=10;for(let g=0;g<p;g++){const u=(s+i)/2,m=o*u,l=c*u;_(n+m,e,t)&&_(n,e+l,t)&&_(n+m,e+l,t)?s=u:i=u}return s}function ht(t){return gt(t)??t.rect}function xt(t,n,e,o){const c=ht(t);if(n.length){const m=new Set;let l=null,h=1/0;for(const B of n)for(const x of B){const I=`${x[0]},${x[1]}`;if(m.has(I))continue;m.add(I);const T=x[0]+e,y=x[1]+e;if(_(T,y,n)){const E=T-c.x1+(y-c.y1);E<h&&(h=E,l={x:T,y})}}if(l)return l}const r=t.rect.x1+e,s=t.rect.y1+e;if(!o)return{x:r,y:s};const i=Math.cos(o),p=Math.sin(o),g=r-t.rect.cx,u=s-t.rect.cy;return{x:t.rect.cx+g*i-u*p,y:t.rect.cy+g*p+u*i}}function C(t){return t&&t!=="none"?t:void 0}function pt(t){const n=C(t.borderColor)||C(X.boothBorderColor)||X.colors.booths.default;return t.paths?.length>1&&C(t.paths[t.paths.length-1].color)||n}export function createBoothBadge(t,n){const e=ut(n.title||n.name),o=pt(n),c=et(J(o).hex()),r=window.devicePixelRatio||1,s=j(),i=ot(N,s);Y.font=i;const p=Y.measureText(e).width,g=Math.ceil(p+lt*2),u=N+dt*2,m=(n.borderWidth||K.borderWidth)/2,l=g*z,h=u*z,B=n.rotate?-n.rotate:0,x=n.rect.w,I=n.rect.h,T=Math.min(x>0?x*ct/l:1/0,I>0?I*ft/h:1/0),y=b(n),{x:E,y:G}=xt(n,y,m,B),P=mt(y,E,G,l,h,T),W=Math.cos(B),$=Math.sin(B),S=(f,A)=>{const D=f/2,R=A/2,O=E+D*W-R*$,U=G+D*$+R*W;return new v({x:O-D,y:U-R},{x:O+D,y:U+R},B)},w=f=>{const A=Math.min(f,P);return S(l*A,h*A)},F=q(s,t.fontUrls),d=V(S(1,1),o);d.hidden=!0,d.dim=n.skipDim?!1:void 0;const a=tt(nt([[e],[]],c,0,[F,F]),S(1,1),[0,0],{horizontal:"center",vertical:"center"});a.hidden=!0,a.dim=n.skipDim?!1:void 0;const H=()=>!!(n.layer&&!n.layer.visible);return k(()=>n.skipDim,f=>{d.dim=f?!1:void 0,a.dim=f?!1:void 0,t.update(d,a)}),k(()=>n.layer?.visible??!0,f=>{d.hidden=!f,a.hidden=!f,t.update(d,a)}),t.onPtScale(`badge-bg-${n.id}`,f=>(d.shape=w(f),d.hidden=H(),d)),t.onPtScale(`badge-text-${n.id}`,f=>{const A=Math.min(f,P);return a.lines[0].fontSize=at/r*A,a.bounds=w(f),a.hidden=H(),a}),{bg:d,text:a}}export function configBoothsBadges(t,n,e){if(st.hideExhibitorBoothNumber)return null;const o=[],c=[];for(const r of e)if(r instanceof Z&&r.noLabels&&!Q.hideLogoInBooth&&r.exhibitors.some(s=>s.logoInBooth&&s.logo)){const{bg:s,text:i}=createBoothBadge(t,r);o.push(s),c.push(i)}return o.length?{name:`${n}${M}badges`,children:[{name:`${n}${M}badgeBgs`,children:o},{name:`${n}${M}badgeTexts`,children:c}]}:null}
@@ -13,6 +13,13 @@ export default function configBoothLabels(rendererService: RendererService, boot
13
13
  export declare function getMinZoomFactorForDot(scaleFactors: number[]): number;
14
14
  export declare const isDirectionsMode: () => boolean;
15
15
  export declare function getFontUrlByWeight(weight: number, customFonts?: CustomFonts[], style?: string): string;
16
+ type LabelFontWeights = {
17
+ main: number;
18
+ details: number;
19
+ };
20
+ export declare function getBoothLabelWeights(): LabelFontWeights;
21
+ export declare function getExhibitorLabelWeights(): LabelFontWeights;
22
+ export declare function getBadgeFontWeight(): number;
16
23
  export declare class BoothLabelDrawer extends BoothDrawerBaseWithoutPainter {
17
24
  protected readonly rendererService: RendererService;
18
25
  protected canvasRect: RectShape;
@@ -1 +1 @@
1
- import{layersStore as O,uiState as p}from"../../../../store";import{RegularBooth as H,SpecialBooth as I}from"../../../../store/BoothStore";import x from"../../../../tools/settings";import V from"../../../../utils/is-mobile";import U from"../../../../utils/is-webview";import{Rect as E}from"./Rect";import u from"../../../../data";import{BoothDrawerBaseWithoutPainter as Z}from"./BoothDrawerBase";import{getFont as M}from"./canvases";import{isArabicText as X}from"../../../../utils/rtl";import{t as L}from"../../../../utils/i18n";import{reaction as B}from"mobx";import{createTextDef as G,createTextDefLines as Y,updateLinesScale as $,updateTextDefRotation as k,getRotation as q,createShapeDot as j,DEFAULT_FONT_LIGHT_URL as J,DEFAULT_FONT_URL as _,getRollValue as K,updateRectRotation as Q}from"../../../../renderer";import{FONT_WEIGHT_PRIMARY_BOOTH as ee,FONT_WEIGHT_PRIMARY_EXHIBITOR as te,FONT_WEIGHT_SECONDARY_BOOTH as ie,FONT_WEIGHT_SECONDARY_EXHIBITOR as se}from"../../../../constants";let v=x.boothLabelColor;x.EXPO==="tqs2021"&&(v="#000");const b=V||U,D=h=>h.replace(" ","").substring(0,4).replace(/[0-9]/g,"3").replace(/[A-Z]/gi,"A"),P=document.createElement("canvas").getContext("2d");export default function oe(h,e){if(!(!(e instanceof H)||e.noLabels))return new BoothLabelDrawer(h,e)}export function getMinZoomFactorForDot(h){return Array.isArray(h)&&h.length>0?Math.max(...h.map(e=>e)):typeof h=="number"?h:-0}export const isDirectionsMode=()=>!!(p.selectedRoute?.from&&p.selectedRoute?.to);export function getFontUrlByWeight(h,e=[],t="normal"){return[...e,{weight:500,url:_,style:"normal"},{weight:300,url:J,style:"normal"}].find(i=>+i.weight===h&&i.style===t)?.url||_}const z="Details";export class BoothLabelDrawer extends Z{rendererService;canvasRect;paddingScaled;padding;minZoomDotVisible;maxZoomDotVisible;exh;shapeLabel;shapeDot;fontSizes;lines;topLeftAlignment;centerAlignment;prefixes;fontUrls;constructor(e,t){if(super(t),this.rendererService=e,this.canvasRect=E.fromCoreRect(t.rect,t.rotate),this.paddingScaled=[4,4],this.padding=(t.borderWidth||x.boothBorderWidth)/2,this.topLeftAlignment={horizontal:p.rtl?"right":"left",vertical:"top"},this.centerAlignment={horizontal:"center",vertical:"center"},this.prefixes=b?[{fontSize:7,name:"XS",short:!0},{fontSize:10,name:"S",short:!0},{fontSize:16,name:z,short:!1}]:[{fontSize:7,name:"XS",short:!0},{fontSize:10,name:"S",short:!0},{fontSize:12,name:"M",short:!0},{fontSize:14,name:"L",short:!0},{fontSize:18,name:z,short:!1}],t instanceof I)return;this.exh=u.hideExhibitors?[]:u.onlyFeaturedExhibitors?t.exhibitors.filter(i=>i.featured):t.exhibitors,b&&this.optimizationLevel()>=3&&(this.prefixes=this.prefixes.filter(i=>i.name!=="S")),this.createLines(),this.calculateFontSizeFactors(),this.shapeLabel=G(Y(this.lines,this.booth.labelColor||v,0,this.fontUrls),E.fromCoreRect(this.booth.rect,this.booth.rotate),[...this.paddingScaled],{horizontal:"left",vertical:"top"}),this.getShapeDot();const r=i=>{const o=this.lines[1]??[],s=this.fontSizes[1]??[];if(x.EXPO!=="wineparis2026"){const m=this.exh.length?this.topLeftAlignment:o.length?i<s[s.length-1].scaleFactor?this.topLeftAlignment:this.centerAlignment:this.topLeftAlignment;this.shapeLabel.alignment=m}if(!$(this.shapeLabel.lines,i,this.fontSizes,this.booth.name))return;const l=this.paddingScaled[0]*i+this.padding,d=this.paddingScaled[1]*i+this.padding;return this.shapeLabel.padding[0]=l,this.shapeLabel.padding[1]=d,this.shapeLabel},a=i=>{const o=i>=this.minZoomDotVisible&&i<=this.maxZoomDotVisible,s=this.shapeDot.source.width*i,n=this.shapeDot.source.height*i;if(!(!o&&this.shapeDot.hidden))return this.shapeDot.bounds.size={x:s,y:n},this.shapeDot.hidden=!o,this.shapeDot};B(()=>[this.booth.skipDim,p.selectedRoute,O.layersLoaded],()=>{if(!O.layersLoaded)return;const i=isDirectionsMode();this.shapeLabel.dim=i||this.booth.skipDim?!1:void 0,this.shapeDot.dim=i||this.booth.skipDim?!1:void 0,this.rendererService.update(this.shapeLabel,this.shapeDot)}),B(()=>p.mapSettings,({roll:i})=>{K(i)&&this.rendererService.onRoll(`booth-roll-${t.id}`,o=>{const s=q(o,this.shapeLabel.bounds.rotation),{size:n}=this.canvasRect;return s!==void 0&&(this.shapeLabel=k(this.shapeLabel,s),!this.shapeLabel.hidden&&!this.exh.length&&n.x!==n.y&&(this.canvasRect=Q(this.canvasRect,s),this.calculateFontSizeFactors(),r(this.rendererService.scale),a(this.rendererService.scale))),[this.shapeLabel,this.shapeDot]})}),this.rendererService.onPtScale(`booth-label-${t.id}`,r),this.rendererService.onPtScale(`booth-dot-${t.id}`,a)}getShape(){return[this.shapeLabel,this.shapeDot]}getShapeDot(){this.shapeDot=j(this.canvasRect,this.booth.labelColor||v),this.shapeDot.hidden=!0,this.maxZoomDotVisible=Math.min(this.canvasRect.size.x/this.shapeDot.source.width,this.canvasRect.size.y/this.shapeDot.source.height)}createLines(){const e=this.booth,t=[],r=[],a=b&&this.optimizationLevel()>=3?1:3;if(this.exh.length){const i=e.exhibitors.filter(s=>s.order===0),o=e.exhibitors.filter(s=>s.order);if(i.length>0)t.push(...i.map(s=>s.name));else if(u.onlyFeaturedExhibitors)t.push(...e.exhibitors.filter(s=>s.featured).map(s=>s.name));else if(o.length>0){t.push(...o.map(n=>n.name));const s=e.exhibitors.filter(n=>n.order===void 0);s.length>0&&t.push(L("and {{moreCount}} more",{moreCount:s.length}))}else e.exhibitors.length>a?t.push(`${e.exhibitors.length} ${u.exhibitorTermPlural}`):t.push(...e.exhibitors.map(s=>s.name));r.push(e.title||e.name)}else{const i=!!e.exhibitors.length;t.push(e.title||e.name),e.onHold?r.push(L("On Hold")):e.reserved?r.push(L("Reserved")):i||r.push(...e.exhibitors.map(o=>o.name).sort((o,s)=>o>s?1:-1)),e.size&&r.push(e.size.indexOf("/")>-1?e.size.substring(0,e.size.indexOf("/")).trim():e.size),e.price&&e.price!=="0"&&!p.previewMode&&r.push(e.price)}p.rtl&&t.forEach((i,o)=>{(i.endsWith(".")||i.endsWith("!")||i.endsWith("?"))&&(t[o]=t[o]+"\u200F"),X(i)&&(t[o]=t[o]+" ")}),this.lines=[t,r]}calculateFontSizeFactors(){let[e,t]=this.lines;const r=this.canvasRect,a=[],i=[],o=this.prefixes.slice(0,this.exh.length?this.prefixes.length:this.prefixes.length-1);let s=500,n=300;this.exh.length?(s=Number(getComputedStyle(document.body).getPropertyValue(te))||s,n=Number(getComputedStyle(document.body).getPropertyValue(se))||n):(s=Number(getComputedStyle(document.body).getPropertyValue(ee))||s,n=Number(getComputedStyle(document.body).getPropertyValue(ie))||n);for(const{fontSize:l,short:d}of o){const m=l*devicePixelRatio,R=.9*l*devicePixelRatio,f=M(m,s),y=M(R,n),F=u.hideExhibitorBoothNumber||d;let T,A,S,g;if(this.exh.length)d?t=[]:t=this.lines[1],S=Math.max(...e.map(c=>this.measureText(c,f).width),...t.map(c=>this.measureText(c,y).width)),T=Math.max(...e.map(c=>this.exh.length?this.measureText(D(c),f).width:this.measureText(D(c),f).width+3+3),...t.map(c=>this.measureText(D(c),y).width)),g=m*e.length+R*t.length+devicePixelRatio*(e.length+t.length)+3,A=F?g/e.length:null;else{const c=e[0].replace(/[0-9]/g,"3").replace(/[A-Z]/g,"A"),N=4;S=this.measureText(c,f).width+3+3,g=m+N}const W=r.size.x/(T||S),C=r.size.y/(A||g),w=Math.min(W,C);a.push({scaleFactor:w,value:l}),!F&&i.push({scaleFactor:w,value:.9*l})}if(!this.exh.length){const l=a[a.length-1],d=this.prefixes.find(m=>m.name===z);a.push({scaleFactor:l.scaleFactor/1.8,value:d.fontSize}),i.push({scaleFactor:l.scaleFactor/1.8,value:d.fontSize*(b?1:.9)})}this.fontUrls=[getFontUrlByWeight(s,this.rendererService.fontUrls),getFontUrlByWeight(n,this.rendererService.fontUrls)],this.minZoomDotVisible=getMinZoomFactorForDot(a.map(l=>l.scaleFactor)),this.fontSizes=[a,i]}calcArea(e,t){return Math.floor(Math.max(0,e)*Math.max(0,t)/1e3)}optimizationLevel(){return Math.min(u.viewOptimizationLevel?u.viewOptimizationLevel:Math.floor(this.calcArea(this.canvasRect.size.x,this.canvasRect.size.y)/5e3),3)}measureText(e,t){return P.font=t,P.measureText(e)}}
1
+ import{layersStore as E,uiState as p}from"../../../../store";import{RegularBooth as N,SpecialBooth as U}from"../../../../store/BoothStore";import x from"../../../../tools/settings";import V from"../../../../utils/is-mobile";import Z from"../../../../utils/is-webview";import{Rect as W}from"./Rect";import f from"../../../../data";import{BoothDrawerBaseWithoutPainter as X}from"./BoothDrawerBase";import{getFont as B}from"./canvases";import{isArabicText as G}from"../../../../utils/rtl";import{t as v}from"../../../../utils/i18n";import{reaction as M}from"mobx";import{createTextDef as Y,createTextDefLines as $,updateLinesScale as k,updateTextDefRotation as q,getRotation as j,createShapeDot as J,DEFAULT_FONT_LIGHT_URL as K,DEFAULT_FONT_URL as _,getRollValue as Q,updateRectRotation as ee}from"../../../../renderer";import{FONT_WEIGHT_PRIMARY_BOOTH as te,FONT_WEIGHT_PRIMARY_EXHIBITOR as ie,FONT_WEIGHT_SECONDARY_BOOTH as se,FONT_WEIGHT_SECONDARY_EXHIBITOR as oe}from"../../../../constants";let D=x.boothLabelColor;x.EXPO==="tqs2021"&&(D="#000");const b=V||Z,z=r=>r.replace(" ","").substring(0,4).replace(/[0-9]/g,"3").replace(/[A-Z]/gi,"A"),C=document.createElement("canvas").getContext("2d");export default function ne(r,e){if(!(!(e instanceof N)||e.noLabels))return new BoothLabelDrawer(r,e)}export function getMinZoomFactorForDot(r){return Array.isArray(r)&&r.length>0?Math.max(...r.map(e=>e)):typeof r=="number"?r:-0}export const isDirectionsMode=()=>!!(p.selectedRoute?.from&&p.selectedRoute?.to);export function getFontUrlByWeight(r,e=[],t="normal"){return[...e,{weight:500,url:_,style:"normal"},{weight:300,url:K,style:"normal"}].find(i=>+i.weight===r&&i.style===t)?.url||_}function S(r,e){return Number(getComputedStyle(document.body).getPropertyValue(r))||e}export function getBoothLabelWeights(){return{main:S(te,500),details:S(se,300)}}export function getExhibitorLabelWeights(){return{main:S(ie,500),details:S(oe,300)}}export function getBadgeFontWeight(){return getExhibitorLabelWeights().details}const R="Details";export class BoothLabelDrawer extends X{rendererService;canvasRect;paddingScaled;padding;minZoomDotVisible;maxZoomDotVisible;exh;shapeLabel;shapeDot;fontSizes;lines;topLeftAlignment;centerAlignment;prefixes;fontUrls;constructor(e,t){if(super(t),this.rendererService=e,this.canvasRect=W.fromCoreRect(t.rect,t.rotate),this.paddingScaled=[4,4],this.padding=(t.borderWidth||x.boothBorderWidth)/2,this.topLeftAlignment={horizontal:p.rtl?"right":"left",vertical:"top"},this.centerAlignment={horizontal:"center",vertical:"center"},this.prefixes=b?[{fontSize:7,name:"XS",short:!0},{fontSize:10,name:"S",short:!0},{fontSize:16,name:R,short:!1}]:[{fontSize:7,name:"XS",short:!0},{fontSize:10,name:"S",short:!0},{fontSize:12,name:"M",short:!0},{fontSize:14,name:"L",short:!0},{fontSize:18,name:R,short:!1}],t instanceof U)return;this.exh=f.hideExhibitors?[]:f.onlyFeaturedExhibitors?t.exhibitors.filter(i=>i.featured):t.exhibitors,b&&this.optimizationLevel()>=3&&(this.prefixes=this.prefixes.filter(i=>i.name!=="S")),this.createLines(),this.calculateFontSizeFactors(),this.shapeLabel=Y($(this.lines,this.booth.labelColor||D,0,this.fontUrls),W.fromCoreRect(this.booth.rect,this.booth.rotate),[...this.paddingScaled],{horizontal:"left",vertical:"top"}),this.getShapeDot();const n=i=>{const o=this.lines[1]??[],s=this.fontSizes[1]??[];if(x.EXPO!=="wineparis2026"){const m=this.exh.length?this.topLeftAlignment:o.length?i<s[s.length-1].scaleFactor?this.topLeftAlignment:this.centerAlignment:this.topLeftAlignment;this.shapeLabel.alignment=m}if(!k(this.shapeLabel.lines,i,this.fontSizes,this.booth.name))return;const l=this.paddingScaled[0]*i+this.padding,d=this.paddingScaled[1]*i+this.padding;return this.shapeLabel.padding[0]=l,this.shapeLabel.padding[1]=d,this.shapeLabel},h=i=>{const o=i>=this.minZoomDotVisible&&i<=this.maxZoomDotVisible,s=this.shapeDot.source.width*i,a=this.shapeDot.source.height*i;if(!(!o&&this.shapeDot.hidden))return this.shapeDot.bounds.size={x:s,y:a},this.shapeDot.hidden=!o,this.shapeDot};M(()=>[this.booth.skipDim,p.selectedRoute,E.layersLoaded],()=>{if(!E.layersLoaded)return;const i=isDirectionsMode();this.shapeLabel.dim=i||this.booth.skipDim?!1:void 0,this.shapeDot.dim=i||this.booth.skipDim?!1:void 0,this.rendererService.update(this.shapeLabel,this.shapeDot)}),M(()=>p.mapSettings,({roll:i})=>{Q(i)&&this.rendererService.onRoll(`booth-roll-${t.id}`,o=>{const s=j(o,this.shapeLabel.bounds.rotation),{size:a}=this.canvasRect;return s!==void 0&&(this.shapeLabel=q(this.shapeLabel,s),!this.shapeLabel.hidden&&!this.exh.length&&a.x!==a.y&&(this.canvasRect=ee(this.canvasRect,s),this.calculateFontSizeFactors(),n(this.rendererService.scale),h(this.rendererService.scale))),[this.shapeLabel,this.shapeDot]})}),this.rendererService.onPtScale(`booth-label-${t.id}`,n),this.rendererService.onPtScale(`booth-dot-${t.id}`,h)}getShape(){return[this.shapeLabel,this.shapeDot]}getShapeDot(){this.shapeDot=J(this.canvasRect,this.booth.labelColor||D),this.shapeDot.hidden=!0,this.maxZoomDotVisible=Math.min(this.canvasRect.size.x/this.shapeDot.source.width,this.canvasRect.size.y/this.shapeDot.source.height)}createLines(){const e=this.booth,t=[],n=[],h=b&&this.optimizationLevel()>=3?1:3;if(this.exh.length){const i=e.exhibitors.filter(s=>s.order===0),o=e.exhibitors.filter(s=>s.order);if(i.length>0)t.push(...i.map(s=>s.name));else if(f.onlyFeaturedExhibitors)t.push(...e.exhibitors.filter(s=>s.featured).map(s=>s.name));else if(o.length>0){t.push(...o.map(a=>a.name));const s=e.exhibitors.filter(a=>a.order===void 0);s.length>0&&t.push(v("and {{moreCount}} more",{moreCount:s.length}))}else e.exhibitors.length>h?t.push(`${e.exhibitors.length} ${f.exhibitorTermPlural}`):t.push(...e.exhibitors.map(s=>s.name));n.push(e.title||e.name)}else{const i=!!e.exhibitors.length;t.push(e.title||e.name),e.onHold?n.push(v("On Hold")):e.reserved?n.push(v("Reserved")):i||n.push(...e.exhibitors.map(o=>o.name).sort((o,s)=>o>s?1:-1)),e.size&&n.push(e.size.indexOf("/")>-1?e.size.substring(0,e.size.indexOf("/")).trim():e.size),e.price&&e.price!=="0"&&!p.previewMode&&n.push(e.price)}p.rtl&&t.forEach((i,o)=>{(i.endsWith(".")||i.endsWith("!")||i.endsWith("?"))&&(t[o]=t[o]+"\u200F"),G(i)&&(t[o]=t[o]+" ")}),this.lines=[t,n]}calculateFontSizeFactors(){let[e,t]=this.lines;const n=this.canvasRect,h=[],i=[],o=this.prefixes.slice(0,this.exh.length?this.prefixes.length:this.prefixes.length-1),{main:s,details:a}=this.exh.length?getExhibitorLabelWeights():getBoothLabelWeights();for(const{fontSize:l,short:d}of o){const m=l*devicePixelRatio,F=.9*l*devicePixelRatio,u=B(m,s),T=B(F,a),y=f.hideExhibitorBoothNumber||d;let A,w,L,g;if(this.exh.length)d?t=[]:t=this.lines[1],L=Math.max(...e.map(c=>this.measureText(c,u).width),...t.map(c=>this.measureText(c,T).width)),A=Math.max(...e.map(c=>this.exh.length?this.measureText(z(c),u).width:this.measureText(z(c),u).width+3+3),...t.map(c=>this.measureText(z(c),T).width)),g=m*e.length+F*t.length+devicePixelRatio*(e.length+t.length)+3,w=y?g/e.length:null;else{const c=e[0].replace(/[0-9]/g,"3").replace(/[A-Z]/g,"A"),P=4;L=this.measureText(c,u).width+3+3,g=m+P}const H=n.size.x/(A||L),I=n.size.y/(w||g),O=Math.min(H,I);h.push({scaleFactor:O,value:l}),!y&&i.push({scaleFactor:O,value:.9*l})}if(!this.exh.length){const l=h[h.length-1],d=this.prefixes.find(m=>m.name===R);h.push({scaleFactor:l.scaleFactor/1.8,value:d.fontSize}),i.push({scaleFactor:l.scaleFactor/1.8,value:d.fontSize*(b?1:.9)})}this.fontUrls=[getFontUrlByWeight(s,this.rendererService.fontUrls),getFontUrlByWeight(a,this.rendererService.fontUrls)],this.minZoomDotVisible=getMinZoomFactorForDot(h.map(l=>l.scaleFactor)),this.fontSizes=[h,i]}calcArea(e,t){return Math.floor(Math.max(0,e)*Math.max(0,t)/1e3)}optimizationLevel(){return Math.min(f.viewOptimizationLevel?f.viewOptimizationLevel:Math.floor(this.calcArea(this.canvasRect.size.x,this.canvasRect.size.y)/5e3),3)}measureText(e,t){return C.font=t,C.measureText(e)}}
@@ -1 +1 @@
1
- import{getLayerSvg as b}from"../../data/svg";import{select as h}from"d3";import{floors as y}from"../../data/svg";import{Layer as c,LayerMode as n,LayersMode as u}from"../LayerStore";import{PATHWAY_KEY as w}from"../../constants";const p=1e3;export function getChildLayers(o,a,l){const f=[];let d=a;return h(b(o)).selectAll(`svg [data-layer="${o.name}"] > [data-layer]`).nodes().filter(i=>i.childNodes.length).forEach(i=>{const e=i.getAttribute("data-layer");let t=new c;t.name=i.getAttribute("data-layer"),t.visible=o.visible,t.description=i.getAttribute("data-layer-description")||e,t.frozen=i.getAttribute("data-layer-isfrozen")==="true",t.rect=o.rect,t.viewbox=o.viewbox,t.mode=n.Unset,t.rootParent=o.rootParent?o.rootParent:o;const r=getChildLayers(t,d,l);d=r.priority+l,t.basePriority=d,r.layers.length&&(t.childLayers=r.layers,f.push(...r.layers)),f.push(t)}),{layers:f,priority:d}}export default function v(o){const{layerStore:a}=o,l=window.__fpLayers;a.mode=window.__fpLayersMode||u.Default;const f=new URLSearchParams(window.location.search).get("layer"),d=(e,t)=>f?t.toLowerCase()===f.toLowerCase():a.mode!==u.Default?e.mode==n.TurnedOn:e.visible;let s=[],i=0;l?l.forEach(e=>{i+=p;let t=new c;t.name=e.name,t.description=e.description,t.frozen=e.frozen,t.visible=d(e,t.shortName),t.rect=e.rect,t.viewbox=e.viewbox,t.mode=e.mode||n.Unset,t.basePriority=i,t.floorIndex=e.floorIndex,s.push(t)}):h(b()).selectAll("svg > [data-layer]").nodes().filter(e=>e.childNodes.length).forEach(e=>{const t=e.getAttribute("data-layer");if(!t.startsWith("WF")){i+=p;let r=new c;r.name=t,r.visible=!0,r.description=e.getAttribute("data-layer-description")||t,r.frozen=e.getAttribute("data-layer-isfrozen")==="true",r.rect=y.filter(m=>m.name===r.name||m.name===r.description)[0]?.rect,r.mode=n.Unset,r.basePriority=i,s.push(r)}}),a.mode!==u.Default&&s.forEach(e=>{e.mode===n.AlwaysHidden?(e.frozen=!0,e.visible=!1):e.mode===n.AlwaysVisible?e.frozen=e.visible=!0:e.mode===n.TurnedOff?(e.frozen=!1,e.visible=!1):e.mode===n.TurnedOn&&(e.frozen=!1,e.visible=!0)});try{s.forEach(e=>{e.name.toLowerCase().includes(w)&&(e.frozen=!1,e.visible=!1,e.pathway=!0)})}catch(e){console.warn(e)}s=s.filter(e=>e.pathway||!e.frozen||e.frozen&&e.visible),a.defaultLayer=s.find(e=>e.name===window.__fpDefaultLayer),a.layers=[...a.layers,...s]}
1
+ import{getLayerSvg as b}from"../../data/svg";import{select as y}from"d3";import{floors as p}from"../../data/svg";import{Layer as c,LayerMode as n,LayersMode as u}from"../LayerStore";import{isPathwayLayer as w}from"../../utils/is-pathway-layer";const h=1e3;export function getChildLayers(o,a,l){const f=[];let d=a;return y(b(o)).selectAll(`svg [data-layer="${o.name}"] > [data-layer]`).nodes().filter(i=>i.childNodes.length).forEach(i=>{const e=i.getAttribute("data-layer");let t=new c;t.name=i.getAttribute("data-layer"),t.visible=o.visible,t.description=i.getAttribute("data-layer-description")||e,t.frozen=i.getAttribute("data-layer-isfrozen")==="true",t.rect=o.rect,t.viewbox=o.viewbox,t.mode=n.Unset,t.rootParent=o.rootParent?o.rootParent:o;const r=getChildLayers(t,d,l);d=r.priority+l,t.basePriority=d,r.layers.length&&(t.childLayers=r.layers,f.push(...r.layers)),f.push(t)}),{layers:f,priority:d}}export default function v(o){const{layerStore:a}=o,l=window.__fpLayers;a.mode=window.__fpLayersMode||u.Default;const f=new URLSearchParams(window.location.search).get("layer"),d=(e,t)=>f?t.toLowerCase()===f.toLowerCase():a.mode!==u.Default?e.mode==n.TurnedOn:e.visible;let s=[],i=0;l?l.forEach(e=>{i+=h;let t=new c;t.name=e.name,t.description=e.description,t.frozen=e.frozen,t.visible=d(e,t.shortName),t.rect=e.rect,t.viewbox=e.viewbox,t.mode=e.mode||n.Unset,t.basePriority=i,t.floorIndex=e.floorIndex,s.push(t)}):y(b()).selectAll("svg > [data-layer]").nodes().filter(e=>e.childNodes.length).forEach(e=>{const t=e.getAttribute("data-layer");if(!t.startsWith("WF")){i+=h;let r=new c;r.name=t,r.visible=!0,r.description=e.getAttribute("data-layer-description")||t,r.frozen=e.getAttribute("data-layer-isfrozen")==="true",r.rect=p.filter(m=>m.name===r.name||m.name===r.description)[0]?.rect,r.mode=n.Unset,r.basePriority=i,s.push(r)}}),a.mode!==u.Default&&s.forEach(e=>{e.mode===n.AlwaysHidden?(e.frozen=!0,e.visible=!1):e.mode===n.AlwaysVisible?e.frozen=e.visible=!0:e.mode===n.TurnedOff?(e.frozen=!1,e.visible=!1):e.mode===n.TurnedOn&&(e.frozen=!1,e.visible=!0)});try{s.forEach(e=>{w(e.name)&&(e.frozen=!1,e.visible=!1,e.pathway=!0)})}catch(e){console.warn(e)}s=s.filter(e=>e.pathway||!e.frozen||e.frozen&&e.visible),a.defaultLayer=s.find(e=>e.name===window.__fpDefaultLayer),a.layers=[...a.layers,...s]}
@@ -0,0 +1,2 @@
1
+ export declare function isPathwayLayer(name: string): boolean;
2
+ //# sourceMappingURL=is-pathway-layer.d.ts.map
@@ -0,0 +1 @@
1
+ import{PATHWAY_KEY as e}from"../constants";export function isPathwayLayer(r){return r.toLowerCase().includes(e)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expofp/floorplan",
3
- "version": "3.3.3",
3
+ "version": "3.3.4",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/expofp/efp-app.git",
@@ -75,8 +75,8 @@
75
75
  "twgl.js": "^4.14.0",
76
76
  "uuid": "^9.0.1",
77
77
  "zod": "4.3.5",
78
- "@expofp/debug": "3.3.3",
79
- "@expofp/resolve": "3.3.3"
78
+ "@expofp/debug": "3.3.4",
79
+ "@expofp/resolve": "3.3.4"
80
80
  },
81
81
  "devDependencies": {
82
82
  "@babel/plugin-proposal-decorators": "^7.29.7",