@expofp/floorplan 3.8.0 → 3.10.0
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.
- package/dist/browser/{Button-1J9oictV.js → Button-CbNlJYq-.js} +5 -5
- package/dist/browser/{CookieConsent-DIB9ja_x.js → CookieConsent-BVLqsKtm.js} +7 -7
- package/dist/browser/{Debug-Dj0pjQgz.js → Debug-DniNgMUO.js} +7 -7
- package/dist/browser/{Demo-DFFTbr3B.js → Demo-BXOuVfdG.js} +9 -9
- package/dist/browser/{Free-VNovKWeM.js → Free-DbDrs1SH.js} +9 -9
- package/dist/browser/{Gallery-CsjJODa1.js → Gallery-CK2yO-rS.js} +9 -9
- package/dist/browser/{GpsLoader-LtDTQ04B.js → GpsLoader-B5WB_xlb.js} +26 -26
- package/dist/browser/{KioskStore-BlqVE5Em.js → KioskStore-CzIrPa11.js} +47 -47
- package/dist/browser/{MaplibreAdapter-BdhppB5g.js → MaplibreAdapter-CSa9XGJa.js} +921 -918
- package/dist/browser/{ModalContainer-B3TzgHkN.js → ModalContainer-CduduGaw.js} +10 -10
- package/dist/browser/{PermissionNotice-CFzmPPcM.js → PermissionNotice-B62dyKda.js} +6 -6
- package/dist/browser/{SetKioskMode-BmGR1XVY.js → SetKioskMode-DvbL360U.js} +8 -8
- package/dist/browser/{ShowKiosk-zlmmcHhV.js → ShowKiosk-CK47Q2V7.js} +11 -11
- package/dist/browser/{TouchHand-CJVe9zjZ.js → TouchHand-BHu7qEu9.js} +4 -4
- package/dist/browser/{ViewerMenuPanel-BWULAn9z.js → ViewerMenuPanel-TTUNLqUt.js} +9 -9
- package/dist/browser/{add-debug-secret-listener-BmN449zK.js → add-debug-secret-listener-DN1tIBbN.js} +1 -1
- package/dist/browser/{boolean-editor-DfnwzSdd.js → boolean-editor-CcJuEdkU.js} +9 -9
- package/dist/browser/{bootIntercom-Dm7ltiQq.js → bootIntercom-DyEAiiah.js} +2 -2
- package/dist/browser/{browser-BHxQ7Crl.js → browser-Ctb0x-hW.js} +2 -2
- package/dist/browser/bundle.json +61 -61
- package/dist/browser/{classnames-CYIl-Aml.js → classnames-CeriETl9.js} +2 -2
- package/dist/browser/{client-C9cyInZ3.js → client-hS_SUT9J.js} +4 -4
- package/dist/browser/{components-CGrjy21U.js → components-CcIkwnTn.js} +338 -337
- package/dist/browser/{createWayfinding-BiBK6J8p.js → createWayfinding-D3oRCnRo.js} +87 -87
- package/dist/browser/{debug-overlay-DDKkKZ7_.js → debug-overlay-DBRVNju-.js} +10 -10
- package/dist/browser/{debug-ui-CKdNfGUm.js → debug-ui-Vy_hMYMs.js} +6 -6
- package/dist/browser/{dist-Y5bXC6OR.js → dist-Bimiy1i5.js} +5 -5
- package/dist/browser/{dist-Sr-nbWel.js → dist-CyHdGr2I.js} +6 -6
- package/dist/browser/{dist-Dveh_M6J.js → dist-D3O88lUU.js} +3 -3
- package/dist/browser/{efp-debug-init-QlttX6qg.js → efp-debug-init-C0HXaTIA.js} +2 -2
- package/dist/browser/{enum-editor-D8AUxIjM.js → enum-editor-DkQTyshB.js} +11 -11
- package/dist/browser/{es5-DM_2dLMc.js → es5-BI29YLB7.js} +2 -2
- package/dist/browser/{event-not-found-BzZrJTbo.js → event-not-found-C45GofSi.js} +1 -1
- package/dist/browser/{exports-C77c46fn.js → exports-B2fVUjK8.js} +1 -1
- package/dist/browser/{favicon-CLXnJgR0.js → favicon-CZB9txqZ.js} +1 -1
- package/dist/browser/{fetch-retry.umd-DIeR-B1a.js → fetch-retry.umd-C_1YSqZv.js} +2 -2
- package/dist/browser/{flex-B9_T4ILl.js → flex-C4nAB--c.js} +5 -5
- package/dist/browser/{floorplan.loader-DBLUmBct.js → floorplan.loader-D9ci7TWk.js} +45 -45
- package/dist/browser/{floorplan.ready-C_Yqubo7.js → floorplan.ready-Cou1AYpA.js} +21 -21
- package/dist/browser/{fuse-BA9FAI84.js → fuse-DLH3KYAO.js} +2 -2
- package/dist/browser/{i18n-i9ni8Aks.js → i18n-C0K3C5Jv.js} +9 -9
- package/dist/browser/index.js +12 -12
- package/dist/browser/{index.module-DPZn4TXU.js → index.module-BMETmKP4.js} +26 -26
- package/dist/browser/{is-webview-Dy8i33Cj.js → is-webview-CxvtAxIZ.js} +1 -1
- package/dist/browser/{jsx-runtime-DzGUGvz-.js → jsx-runtime-B9nB58Uq.js} +2 -2
- package/dist/browser/{lib-BHciLO67.js → lib-CcxG8Udi.js} +4 -4
- package/dist/browser/{loadImage-Kl5pv_Gu.js → loadImage-B-fxupzg.js} +5 -5
- package/dist/browser/locales/ar.json +4 -1
- package/dist/browser/locales/da.json +4 -1
- package/dist/browser/locales/de.json +4 -1
- package/dist/browser/locales/es.json +4 -1
- package/dist/browser/locales/fr.json +4 -1
- package/dist/browser/locales/he.json +4 -1
- package/dist/browser/locales/it.json +4 -1
- package/dist/browser/locales/kk.json +4 -1
- package/dist/browser/locales/ko.json +4 -1
- package/dist/browser/locales/mn.json +4 -1
- package/dist/browser/locales/nl.json +4 -1
- package/dist/browser/locales/pl.json +4 -1
- package/dist/browser/locales/pt.json +4 -1
- package/dist/browser/locales/ru.json +4 -1
- package/dist/browser/locales/sv.json +4 -1
- package/dist/browser/locales/th.json +4 -1
- package/dist/browser/locales/tr.json +4 -1
- package/dist/browser/locales/uk.json +4 -1
- package/dist/browser/locales/vi.json +4 -1
- package/dist/browser/locales/zh.json +4 -1
- package/dist/browser/{logDeviceInfo-CS0Fd9Bz.js → logDeviceInfo-kZTVPeyv.js} +9 -9
- package/dist/browser/{main-CnhK8g8p.js → main-B_62LzEM.js} +1 -1
- package/dist/browser/{mobx-MDNY-J4R.js → mobx-CUQ-tbco.js} +8 -8
- package/dist/browser/{particles.min-BfWO2YCb.js → particles.min-Csuxu9yr.js} +2 -2
- package/dist/browser/{prop-types-8OQVQO5z.js → prop-types-B7Gun2Sn.js} +2 -2
- package/dist/browser/{react-BHziDcUN.js → react-ZKXuYPAa.js} +2 -2
- package/dist/browser/{react-dom-B2YH_-FW.js → react-dom-D82ielqJ.js} +3 -3
- package/dist/browser/{reset-all-settings-DhiQzgYR.js → reset-all-settings-BwbmLw6_.js} +7 -7
- package/dist/browser/{rolldown-runtime-kNW8iHBm.js → rolldown-runtime-75nnKCA3.js} +1 -1
- package/dist/browser/{settings-Cu5Wcs8p.js → settings-CfbArDtc.js} +2 -2
- package/dist/browser/{settings-item-v4B4uQdw.js → settings-item-R9UibMb5.js} +6 -6
- package/dist/browser/{store-pynNgMKs.js → store-DANngpFy.js} +4967 -4967
- package/dist/browser/{string-editor-DpTkbez0.js → string-editor-CURRcjvv.js} +7 -7
- package/dist/browser/{theme-BOa5CSxW.js → theme-Nw3wi1eA.js} +8 -8
- package/dist/browser/{ui-Bq-HLu6b.js → ui-CzHA_XVw.js} +8 -8
- package/dist/browser/{useRenderTarget-l4FhOrhr.js → useRenderTarget-KMx97ZHc.js} +4 -4
- package/dist/esm/components/Map/Map.js +1 -1
- package/dist/esm/components/Maplibre/MaplibreAdapter.js +1 -1
- package/dist/esm/data/Flags.d.ts +8 -0
- package/dist/esm/store/search-buttons/SearchButtonsFactory.js +1 -1
- package/dist/esm/utils/i18n.d.ts +9 -0
- package/dist/esm/utils/i18n.js +1 -1
- package/package.json +4 -4
|
@@ -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.
|
|
4
|
+
e.SENTRY_RELEASE = { id: "3.10.0" };
|
|
5
5
|
var t = new e.Error().stack;
|
|
6
6
|
t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "888fc155-fb35-4159-9302-91880886e35d", e._sentryDebugIdIdentifier = "sentry-dbid-888fc155-fb35-4159-9302-91880886e35d");
|
|
7
7
|
} catch {}
|
|
8
8
|
})();
|
|
9
|
-
import { r as e } from "./rolldown-runtime-
|
|
10
|
-
import { t } from "./react-
|
|
11
|
-
import { t as n } from "./jsx-runtime-
|
|
12
|
-
import { D as r, i, l as a, n as o, s, u as c, y as l } from "./flex-
|
|
13
|
-
import { t as u } from "./classnames-
|
|
14
|
-
import { t as d } from "./settings-item-
|
|
9
|
+
import { r as e } from "./rolldown-runtime-75nnKCA3.js";
|
|
10
|
+
import { t } from "./react-ZKXuYPAa.js";
|
|
11
|
+
import { t as n } from "./jsx-runtime-B9nB58Uq.js";
|
|
12
|
+
import { D as r, i, l as a, n as o, s, u as c, y as l } from "./flex-C4nAB--c.js";
|
|
13
|
+
import { t as u } from "./classnames-CeriETl9.js";
|
|
14
|
+
import { t as d } from "./settings-item-R9UibMb5.js";
|
|
15
15
|
//#region ../../node_modules/.pnpm/@radix-ui+themes@3.3.0_@types+react-dom@19.2.3_@types+react@19.2.17__@types+react@19.2._925f851475345a9e5e368d312bb98178/node_modules/@radix-ui/themes/dist/esm/components/text-field.props.js
|
|
16
16
|
var f = {
|
|
17
17
|
size: {
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
(function() {
|
|
2
2
|
try {
|
|
3
3
|
var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
|
|
4
|
-
e.SENTRY_RELEASE = { id: "3.
|
|
4
|
+
e.SENTRY_RELEASE = { id: "3.10.0" };
|
|
5
5
|
var t = new e.Error().stack;
|
|
6
6
|
t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "b674b3f0-1e85-4d5b-b554-fb365f6d1945", e._sentryDebugIdIdentifier = "sentry-dbid-b674b3f0-1e85-4d5b-b554-fb365f6d1945");
|
|
7
7
|
} catch {}
|
|
8
8
|
})();
|
|
9
|
-
import { r as e } from "./rolldown-runtime-
|
|
10
|
-
import { t } from "./react-
|
|
11
|
-
import { t as n } from "./jsx-runtime-
|
|
12
|
-
import { t as r } from "./react-dom-
|
|
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-
|
|
14
|
-
import { c as f, i as p, n as m, o as h, r as g, s as _, t as v } from "./dist-
|
|
15
|
-
import { t as y } from "./classnames-
|
|
9
|
+
import { r as e } from "./rolldown-runtime-75nnKCA3.js";
|
|
10
|
+
import { t } from "./react-ZKXuYPAa.js";
|
|
11
|
+
import { t as n } from "./jsx-runtime-B9nB58Uq.js";
|
|
12
|
+
import { t as r } from "./react-dom-D82ielqJ.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-C4nAB--c.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-CyHdGr2I.js";
|
|
15
|
+
import { t as y } from "./classnames-CeriETl9.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_070bcfa32421a5876e7dcb93369fcbee/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.
|
|
4
|
+
e.SENTRY_RELEASE = { id: "3.10.0" };
|
|
5
5
|
var t = new e.Error().stack;
|
|
6
6
|
t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "43912113-9328-4069-8890-5091c8745c34", e._sentryDebugIdIdentifier = "sentry-dbid-43912113-9328-4069-8890-5091c8745c34");
|
|
7
7
|
} catch {}
|
|
8
8
|
})();
|
|
9
|
-
import { r as e } from "./rolldown-runtime-
|
|
10
|
-
import { a as t, r as n } from "./reset-all-settings-
|
|
11
|
-
import { t as r } from "./jsx-runtime-
|
|
12
|
-
import "./settings-
|
|
13
|
-
import { t as i } from "./browser-
|
|
14
|
-
import { t as a } from "./add-debug-secret-listener-
|
|
9
|
+
import { r as e } from "./rolldown-runtime-75nnKCA3.js";
|
|
10
|
+
import { a as t, r as n } from "./reset-all-settings-BwbmLw6_.js";
|
|
11
|
+
import { t as r } from "./jsx-runtime-B9nB58Uq.js";
|
|
12
|
+
import "./settings-CfbArDtc.js";
|
|
13
|
+
import { t as i } from "./browser-Ctb0x-hW.js";
|
|
14
|
+
import { t as a } from "./add-debug-secret-listener-DN1tIBbN.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-
|
|
29
|
+
let { DebugUi: n } = await import("./debug-ui-Vy_hMYMs.js"), { createRoot: i } = await import("./client-hS_SUT9J.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.
|
|
4
|
+
e.SENTRY_RELEASE = { id: "3.10.0" };
|
|
5
5
|
var t = new e.Error().stack;
|
|
6
6
|
t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "d4febe97-784c-4cf8-93f1-f2e3b29f8347", e._sentryDebugIdIdentifier = "sentry-dbid-d4febe97-784c-4cf8-93f1-f2e3b29f8347");
|
|
7
7
|
} catch {}
|
|
8
8
|
})();
|
|
9
|
-
import { r as e } from "./rolldown-runtime-
|
|
10
|
-
import { t } from "./react-
|
|
11
|
-
import { s as n } from "./store-
|
|
9
|
+
import { r as e } from "./rolldown-runtime-75nnKCA3.js";
|
|
10
|
+
import { t } from "./react-ZKXuYPAa.js";
|
|
11
|
+
import { s as n } from "./store-DANngpFy.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 C,jsxs as N,Fragment as
|
|
1
|
+
import{jsx as C,jsxs as N,Fragment as oe}from"react/jsx-runtime";import{Box as k}from"@expofp/geometry";import te from"classnames";import re from"color";import{observable as ne,reaction as ie}from"mobx";import{useObserver as ae}from"mobx-react-lite";import{useEffect as se,useMemo as le,useRef as S,useState as me}from"react";import{DEBUG_STORAGE_KEY as O}from"../../constants";import ce from"../../data";import{fpGeo as fe}from"../../data/fpGeo";import{svgArea as X}from"../../data/svg";import{boxToRenderer as L,createSceneDef as de,mapRollSetting as U}from"../../renderer";import{pickDefaultScene as A,pickDefaultScenePoint as ue}from"../../renderer/engine-core/defs";import a,{boothStore as pe,layersStore as h,uiState as o}from"../../store";import{BoothBase as j}from"../../store/BoothStore";import{Category as he}from"../../store/CategoryStore";import{Exhibitor as Z}from"../../store/ExhibitorStore";import{LayerMode as R}from"../../store/LayerStore";import{CurrentPosition as ve,Route as ye}from"../../store/RouteStore";import B from"../../tools/logger";import p from"../../tools/settings";import be from"../../ui/Draggable";import{areLayersEnabled as ge}from"../../utils/areLayersEnabled";import{applyVenueDimValue as we,createDimmingAnimator as Se}from"../../utils/dimming";import{convertGpsToLocal as Re}from"../../utils/gps";import y from"../../utils/is-debug";import{isPathwayLayer as $}from"../../utils/is-pathway-layer";import{useReaction as d}from"../../utils/mobx";import{createWayfinding as xe}from"../../wayfinding/createWayfinding";import K from"./booth-by-xy";import Te from"./drawing/config/config-all";import{configMarkers as Ce,getMarkerFromClick as ke}from"./drawing/config/config-markers";import{loadLayersImages as Le}from"./drawing/config/loadBoothsImages";import{useBuildRoute as Be}from"./traffic/useBuildRoute";import{useManageTraffic as Ee}from"./traffic/useManageTraffic";const V=Number.isFinite(p.maxZoom);export default function Me(){let E={};const W="#ebebeb",v=S(),b=le(()=>ne({moving:!1,prevLevel:a.layerStore.layers.find(e=>!e.frozen&&e.visible)}),[]),l=a.rendererService,x=S(Se(e=>we(l,e)));let s;const g=S(null),M=S(null);let P=null,z=null,I=!1;function _(){h.layers.forEach(e=>{e.configured=!1,e.children=[],e.loaded=!1})}const[H,q]=me(()=>typeof window<"u"&&window.localStorage?localStorage.getItem(O)!=="false":!0);d(()=>a.routeStore.currentRouteLayer,()=>{if(!l.scene||b.prevLevel===a.routeStore.currentRouteLayer)return;const e=l.scene.rootLayer.children.filter(t=>a.layerStore.floors.some(n=>t.name.includes(n.name)));let r=a.routeStore.currentRouteLayer.name;if(!e.find(t=>t.name===r))return;const i=e?.map(t=>(t.name===r&&(t.hidden=!1),t.name===b.prevLevel?.name&&(t.hidden=!0),t));b.prevLevel=a.routeStore.currentRouteLayer,l.update(...i)}),d(()=>o.centerMap,()=>{!o.centerMap||a.maplibreStore.showMaplibre||(s.controls.resetCamera({zoom:!!(o.list.type==="search"&&o.list.text)}),o.centerMap=!1)}),se(()=>{if(!v.current)return;async function e(){_(),h.layersLoaded=!1;let r={};try{if(y){const t=document.createElement("canvas").getContext("webgl2"),n=t&&t.getExtension("EXT_disjoint_timer_query_webgl2"),m=(await import("stats-gl")).default,f=new m({trackGPU:n,horizontal:!0}),u=M.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),r={stats:f,memoryInfoPanel:u}}}catch(i){console.error(i)}s=l.create({canvas:v.current,ui:r}),g.current=s,ie(()=>o.canvasVisibleRectPx,(i,t)=>{i&&(s.visibleRect=L(i)),t.dispose()},{fireImmediately:!0}),Te(l).then(i=>{if(I||g.current!==s)return;y&&console.log("Renderer settings",s);const t=re(p.backgroundColor==="none"?W:p.backgroundColor).string();E=de(i,X,t),l.start(E),x.current.setTarget(o.dimmed,{immediate:!0}),U(s,a.fp.enableRotation?1:0),V&&s.viewport.setMaxZoom(p.maxZoom),h.layersLoaded=!0,a.fp.onFpConfigured&&a.fp?.onFpConfigured(),P=xe(l),z=Ce(l),Le(l)}),s.events.addEventListener("pointer:move",({data:i})=>{if(o.setKioskModeEnabled)return;const{point:t,defs:n}=A(i),c=K(t.x,t.y),m=D(n[0]);o.hoveredBooth=c||m}),s.events.addEventListener("pointer:out",()=>{o.setKioskModeEnabled||(o.hoveredBooth=null)}),s.events.addEventListener("pointer:click",({data:i})=>{if(!o?.rootElement)return;window.__resett&&window.__resett(),o.overlayPosition==="bottom"&&o.overlaySize==="full"&&a.showMap();const{point:t,defs:n}=A(i),{x:c,y:m}=t;if(o.onGetCoordsClick){const w=a.layerStore.layers.find(T=>T.visible&&(T.mode===R.TurnedOn||T.mode===R.TurnedOff));o.onGetCoordsClick({x:c,y:m,z:w?.name||null})}if(o.setKioskModeEnabled)return;if(o.onMarkerClick){const w=ke(c,m,l.scale);y&&console.log("marker",w),o.onMarkerClick(w)}const f=K(t.x,t.y),u=D(n[0]);y&&console.log("boothIdFromClientXy",f,"boothByShape",u,"pointer:click point",t),a.clickBooth(f||u)}),s.events.addEventListener("navigation:change",()=>window.__resett&&window.__resett())}return e(),a.fp.getCenterCoordinates=Q,()=>J()},[]);function J(){I=!0,x.current.stop(),P?.(),z?.(),_(),h.layersLoaded=!1,l.disposeIfCurrent(g.current),g.current=null}function Q(){const e=v.current;if(!v.current)throw new Error("Canvas not ready");const r=ue(s.viewport.canvasToSvg({x:e.clientWidth/2,y:e.clientHeight/2})),t=a.layerStore.visible.find(n=>n.mode===R.TurnedOff||n.mode===R.TurnedOn)?.name||null;return{...r,z:t}}function D(e){return!e||!e.shape?null:pe.booths.find(r=>r.shapes?.find(i=>i.shape==e.shape))}d(()=>o.zoomBy,()=>{if(!o.zoomBy||a.maplibreStore.showMaplibre)return;const e=o.zoomBy;s.controls.zoomBy(e),o.zoomBy=null}),d(()=>o.dimmed,e=>{x.current.setTarget(e)}),d(()=>o.details,()=>{if(!o.onDetails)return;if(!o.details){o.onDetails(null);return}var e=o.details;if(p.EXPO==="wineparis"&&(e instanceof Z&&(e=e.booths[0]),!e))return;let r=null,i=[];e instanceof Z?(r="exhibitor",i=e.booths.map(n=>n.name).sort((n,c)=>n==a.routeStore.tempToBooth?.name?-1:c==a.routeStore.tempToBooth?.name?1:0)):e instanceof j?(r="booth",i=[e.name]):e instanceof ye?(r="route",i=[e.from?.name,e.to?.name].filter(n=>!!n)):e instanceof he&&(r="category",i=e.exhibitors.map(n=>n.booths.map(c=>c.name)).flat());var t={type:r,name:e?.name,id:e?.id,externalId:e?.externalId,boothsNames:i};o.onDetails({...t,...r==="route"?{routeInfo:a.routeStore.routeInfo}:{}})}),d(()=>o.canvasVisibleRectPx,e=>{l.renderer&&(l.renderer.visibleRect=L(e))},{fireImmediately:!0}),d(()=>o.moveToRect,()=>{!o.moveToRect||a.maplibreStore.showMaplibre||(o.moveToRect&&o.moveToRect.size.height!==1/0&&o.moveToRect.size.width!==1/0&&o.moveToRect.size.height>0&&o.moveToRect.size.width>0&&G(o.moveToRect),o.moveToRect=null)}),d(()=>o.rollReset,e=>{e&&(s.controls.resetCamera({roll:!0}),o.rollReset=!1)}),d(()=>o.moveToBooths,()=>{if(B.log("this.moveToBooths",o.moveToBooths),!o.moveToBooths||a.maplibreStore.showMaplibre)return;B.log("watched moveToBooths",o.moveToBooths);const e=o.moveToBooths.filter(r=>r.rect).map(r=>r.rect);e.length!==0&&(G(k.fromUnion(...e)),o.moveToBooths=null)}),d(()=>o.mapSettings,({zoomtime:e,center:r,centerxy:i,bearing:t,roll:n,z:c})=>{if(!(a.maplibreStore.showMaplibre||!l.renderer))try{e&&e!==o.defaultMapSettings.zoomtime&&l.renderer.controls.configure({zoomTime:e/1e3}),a.fp.enableRotation&&U(s,n);let m;if(r){const f=r.split(",").map(Number),u=new ve(void 0,void 0,void 0,void 0,f[0],f[1]);m=Re(u,fe.properties.config)}else if(i){const f=i.split(",").map(Number);m={x:f[0],y:f[1]}}c&&a.fp.activateFloor({name:c}),(m?.x||m?.y)&&l.renderer.controls.panTo(m.x,m.y),Number.isFinite(t)&&l.renderer.controls.rollTo(t)}catch(m){B.error("Error in mapSettings reaction",m)}}),Be({enabled:h.layersLoaded&&o.buildRoute,rendererService:l});const F="routes-api.expofp.com",Y=ce.flags?.busRoutes??!1;Ee({permission:h.layersLoaded&&Y,rendererService:l,dataJsonUrl:`https://${F}/v1/routes?expo=${p.EXPO}`,websocketUrl:`wss://${F}/locations?expo=${p.EXPO}`}),d(()=>a.layerStore.visible,e=>{if(!l.scene)return;const r=e.filter(n=>$(n.name)),t=l.scene.rootLayer.children.filter(n=>$(n.name));t.forEach(n=>{n.hidden=!r.find(c=>c.name===n.name)}),l.update(...t)});function G(e){let r=e;const i=ee(e,X),t=o.selectedRoute?.from,n=t instanceof j?t.layer?.name:t?.layer;o.kioskData&&(!ge()||n===a.routeStore.currentRouteLayer?.name)&&(r=k.fromUnion(e,new k(o.kioskData.x,o.kioskData.y,1,1)));const c=L(r),m={paddingPercent:i,maxZoom:V?void 0:10};if(o.shouldShiftMapRect){s.visibleRect.min={...s.visibleRect.min,x:s.visibleRect.min.x+o.overlayWidthPx},s.visibleRect=s.visibleRect;try{s.controls.zoomTo(c,m)}finally{s.visibleRect.min={...s.visibleRect.min,x:s.visibleRect.min.x-o.overlayWidthPx}}}else s.controls.zoomTo(c,m)}function ee(e,r){return!e||!r?0:(e.area/r.area>.1?15:25)/100}return ae(()=>N(oe,{children:[C("canvas",{style:{width:"100%",height:"100%"},ref:v,className:te({map:!0,moving:b.moving,hidden:a.maplibreStore.showMaplibre}),children:"ExpoFP.com"}),y&&H&&N(be,{className:"debug-fps",children:[C("div",{ref:M}),C("button",{onClick:()=>{typeof window<"u"&&window.localStorage&&localStorage.setItem(O,"false"),q(!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{jsx as
|
|
1
|
+
import{jsx as J}from"react/jsx-runtime";import{degToRad as E}from"@expofp/geometry";import W from"color";import{runInAction as X}from"mobx";import{observer as H}from"mobx-react-lite";import{useCallback as P,useEffect as _,useMemo as d,useRef as p,useState as k}from"react";import K from"../../data";import{getLayerSvg as Z,svgArea as x}from"../../data/svg";import{createSceneDef as Q}from"../../renderer";import a,{uiState as g}from"../../store";import M from"../../tools/settings";import Y from"../Map/drawing/config/config-all";import{loadLayersImages as q}from"../Map/drawing/config/loadBoothsImages";import{useBuildRoute as ee}from"../Map/traffic/useBuildRoute";import{useManageTraffic as re}from"../Map/traffic/useManageTraffic";import oe from"./MaplibreWrapper";import{useCameraReactions as te}from"./useCameraReactions";import{useDimming as ne}from"./useDimming";import{useLayerVisibilitySync as ae}from"./useLayerVisibilitySync";import{useRendererEvents as ie}from"./useRendererEvents";import{useWayfindingAndMarkers as se}from"./useWayfindingAndMarkers";import{deriveGeoConfig as le,deriveVenueMapBounds as ce,getLocalRectGeoBounds as ue,getVisibleRectFitPadding as fe,INITIAL_FIT_ZOOM_ADJUSTMENT as me}from"./utils/geo-config";import{applyMapOptions as I,DEFAULT_MAP_OPTIONS as de,getTileSource as pe,MAP_2D_OPTIONS as ge}from"./utils/map-helpers";import{calculateTransformMatrix as ye}from"./utils/solver";const $="routes-api.expofp.com";function B(){X(()=>{a.layerStore.layers.forEach(i=>{i.configured=!1,i.children=[],i.loaded=!1}),a.layerStore.layersLoaded=!1})}function F(i,y){const s=[];for(const c of i.rollRegistry.invoke(y))Array.isArray(c)?s.push(...c):s.push(c);s.length&&i.update(...s)}const Re=H(function({viewMode:y}){const[s,c]=k(null),[T,h]=k(null),e=a.rendererService,D=p(null),l=p(null),R=p(null),L=p(null),r=d(()=>le(),[]),u=d(()=>r?{center:r.center,bearing:r.bearing,zoom:r.zoom,bounds:ue(x,r.gpsConfig),fitPadding:fe(0),zoomAdjustment:me}:null,[r]),v=d(()=>r?ye(r.gpsConfig,Z()?.getAttribute("units")):null,[r]),f=d(()=>({...y==="map2d"?ge:de,maxBounds:r?ce(r.gpsConfig):void 0}),[r,y]),O=p(f),j=d(()=>pe(),[]),{mapDimAnimatorRef:b,venueDimAnimatorRef:S,handleMapDimLayerReady:z}=ne(l,e);_(()=>{if(!r)return;let n=!1;B();const o=Y(e).then(t=>{if(n)return;const A=W(M.backgroundColor==="none"?"#ebebeb":M.backgroundColor).string(),V=Q(t,x,A);c(V)}).catch(t=>{n||console.warn("Maplibre scene configuration failed.",t)}),C=b.current,m=S.current;return()=>{n=!0,B();const t=D.current;o.finally(()=>e.disposeIfCurrent(t)),R.current?.(),R.current=null,D.current=null,l.current=null,L.current=null,h(null),C?.stop(),m?.stop(),g.sceneDefReady=!1}},[r,b,e,S]);const N=P((n,o,C,m)=>{D.current=n,l.current=o,L.current=m,h(n),e.attach(n,C,m),I(o,O.current),b.current?.setTarget(g.dimmed,{immediate:!0}),S.current?.setTarget(g.dimmed,{immediate:!0}),R.current?.();const t=()=>F(e,E(o.getBearing()));o.on("rotate",t),o.on("rotateend",t),R.current=()=>{o.off("rotate",t),o.off("rotateend",t)},q(e);const A=e.ptScaleRegistry.invoke(e.scale||1);A.length&&e.update(...A),F(e,E(o.getBearing())),a.layerStore.layersLoaded=!0,a.fp.onFpConfigured&&a.fp.onFpConfigured(),g.sceneDefReady=!0,m()},[e,b,S]);_(()=>{O.current=f,I(l.current,f,!0)},[f]),ie(T,e),se(T,e),ae(e,l,r),te(l,r),ee({enabled:a.layerStore.layersLoaded&&g.buildRoute,rendererService:e});const U=K.flags?.busRoutes??!1;re({permission:a.layerStore.layersLoaded&&U,rendererService:e,dataJsonUrl:`https://${$}/v1/routes?expo=${M.EXPO}`,websocketUrl:`wss://${$}/locations?expo=${M.EXPO}`});const w=P(n=>{console.warn("Maplibre map failed to load; falling back to floorplan mode.",n),a.maplibreStore.deactivateMaplibre()},[]);if(!r||!u||!v||!s)return null;const G=`${u.center.join(",")}:${u.bearing}:${u.zoom}`;return J(oe,{sceneDef:s,geoConfig:u,staticTransform:v,tileSource:j,mapOptions:f,onRendererReady:N,onMapDimLayerReady:z,onMapLoadError:w},G)});export default Re;
|
package/dist/esm/data/Flags.d.ts
CHANGED
|
@@ -7,5 +7,13 @@ export interface FloorPlanFlags {
|
|
|
7
7
|
* Custom `setkiosk` phrase.
|
|
8
8
|
*/
|
|
9
9
|
customSetKiosk?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Enable live bus/transport routing on the floor plan.
|
|
12
|
+
*
|
|
13
|
+
* Disabled by default: most plans have no transit routes, and probing for
|
|
14
|
+
* them issues an extra HTTP request on every load. Set to `true` only for
|
|
15
|
+
* plans that actually provide bus routes.
|
|
16
|
+
*/
|
|
17
|
+
busRoutes?: boolean;
|
|
10
18
|
}
|
|
11
19
|
//# sourceMappingURL=Flags.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import h from"../../data";import{getContrastTextColor as l}from"../../utils/getContrastTextColor";import{BUTTON_ICONS as u,PREFIXES as a,SearchButtonType as i}from"./constants";export class SearchButtonsFactory{rootStore;state;actions;buttonFactories;constructor(t,e,o){this.rootStore=t,this.state=e,this.actions=o,this.buttonFactories={[i.BOOKMARKS]:r=>this.createBookmarksButton(r),[i.VISITED]:r=>this.createVisitedButton(r),[i.CATEGORIES]:r=>this.createCategoriesButton(r),[i.SESSIONS]:r=>this.createSessionsButton(r),[i.TOURS]:r=>this.createGuidedToursButton(r),[i.POI_TYPE]:r=>this.createPoiTypeButton(r),[i.POI_TYPES]:r=>this.createPoiTypesButton(r),[i.LINK]:r=>this.createLinkButton(r),[i.EXHIBITORS]:r=>this.createExhibitorsButton(r)}}createButtons(t){return this.dedupeButtons(t).filter(e=>e.visible).map(e=>({button:this.createButton(e),order:e.order??Number.MAX_SAFE_INTEGER})).filter(e=>e.button!==null).sort((e,o)=>e.order-o.order).map(e=>e.button)}createButton(t){const e=this.buttonFactories[t.type];return e?e(t):null}createBaseButton(t){const e=t.color&&t.color.toUpperCase()!=="#FFFFFF";return{id:t.id||`${t.type}_${t.name}`,label:
|
|
1
|
+
import h from"../../data";import{getContrastTextColor as l}from"../../utils/getContrastTextColor";import{tIfExists as d}from"../../utils/i18n";import{BUTTON_ICONS as u,PREFIXES as a,SearchButtonType as i}from"./constants";export class SearchButtonsFactory{rootStore;state;actions;buttonFactories;constructor(t,e,o){this.rootStore=t,this.state=e,this.actions=o,this.buttonFactories={[i.BOOKMARKS]:r=>this.createBookmarksButton(r),[i.VISITED]:r=>this.createVisitedButton(r),[i.CATEGORIES]:r=>this.createCategoriesButton(r),[i.SESSIONS]:r=>this.createSessionsButton(r),[i.TOURS]:r=>this.createGuidedToursButton(r),[i.POI_TYPE]:r=>this.createPoiTypeButton(r),[i.POI_TYPES]:r=>this.createPoiTypesButton(r),[i.LINK]:r=>this.createLinkButton(r),[i.EXHIBITORS]:r=>this.createExhibitorsButton(r)}}createButtons(t){return this.dedupeButtons(t).filter(e=>e.visible).map(e=>({button:this.createButton(e),order:e.order??Number.MAX_SAFE_INTEGER})).filter(e=>e.button!==null).sort((e,o)=>e.order-o.order).map(e=>e.button)}createButton(t){const e=this.buttonFactories[t.type];return e?e(t):null}createBaseButton(t){const e=t.color&&t.color.toUpperCase()!=="#FFFFFF",o=d(t.name);return{id:t.id||`${t.type}_${t.name}`,label:o,text:o,enabled:!0,isDimmed:!1,isClickable:!0,backgroundColor:e?t.color:void 0,textColor:e&&t.color?l(t.color):void 0}}createButtonId(t,e){return e.id||`${t}${e.name}`}createBookmarksButton(t){const{uiState:e}=this.rootStore;return e.kiosk||e.disableBookmarked||h.hideBookmarks?null:{...this.createBaseButton(t),id:i.BOOKMARKS,icon:u.BOOKMARKS,active:e.list.type==="bookmarks",count:this.countBookmarks(),onClick:()=>this.actions.handleSearchButtonClick(i.BOOKMARKS)}}createVisitedButton(t){const{uiState:e}=this.rootStore;return e.kiosk?null:{...this.createBaseButton(t),id:i.VISITED,icon:u.VISITED,active:e.list.type==="visited",count:this.countVisited(),onClick:()=>this.actions.handleSearchButtonClick(i.VISITED)}}createCategoriesButton(t){if(!t.children?.length){const n=this.getCategoriesTotalCount();return n>0?this.createSimpleCategoriesButton(t,n):null}const e=(t.children||[]).filter(n=>n.visible);if(e.length===0)return null;const o=this.createButtonId(a.CATEGORIES,t),r=e.filter(n=>n.type==="categories"),s=this.countCategories(r);return{...this.createBaseButton(t),id:o,active:this.state.searchShortcutState.activeParentId===o,count:s,showZeroCount:!0,onClick:()=>this.actions.handleExtendedSearchButtonClick(o)}}createSimpleCategoriesButton(t,e){const{uiState:o}=this.rootStore,r=o.selectedCategoryFilters.length>0?o.selectedCategoryFilters.length:e;return{...this.createBaseButton(t),id:i.CATEGORIES,active:o.selectedCategoryFilters.length>0&&!this.state.searchShortcutState.activeParentId,count:r,showZeroCount:!0,onClick:()=>this.actions.handleSearchButtonClick(i.CATEGORIES)}}createSessionsButton(t){const{uiState:e}=this.rootStore,o=this.getSessionsTotalCount();return o===0?null:{...this.createBaseButton(t),id:i.SESSIONS,icon:u.SESSIONS,active:e.list.type==="sessions",count:o,showZeroCount:!0,hasSubButtons:!0,onClick:()=>this.actions.handleSessionsClick()}}createGuidedToursButton(t){const{uiState:e}=this.rootStore,o=this.getGuidedToursTotalCount();return o===0?null:{...this.createBaseButton(t),id:"guided_tours",active:e.list.type==="tours"||e.list.type==="multi-point-tour",count:o,showZeroCount:!0,onClick:()=>this.actions.handleSearchButtonClick("guided_tours")}}createPoiTypeButton(t){const e=this.rootStore.poiTypeStore.poiTypes.find(s=>s.name===t.name);if(!e)return null;const o=`${a.POI_TYPE}${e.id}`,r=this.getPoiTypeTotalCount(e.id);return r===0?null:{...this.createBaseButton(t),id:o,active:this.state.activePoiFilterId===o,count:r,showZeroCount:!0,onClick:()=>this.actions.handleSearchButtonClick(o)}}createPoiTypesButton(t){if(!t.children?.length)return this.createPoiTypeButton(t);const e=t.children.filter(n=>n.visible);if(e.length===0)return null;if(this.shouldFlattenToSinglePoiType(e,t))return this.createPoiTypeButton(t);const o=e.filter(n=>n.type!=="link"),r=this.countPoiTypes(o),s=this.createButtonId(a.POI_TYPES,t);return{...this.createBaseButton(t),id:s,active:this.state.searchShortcutState.activeParentId===s,count:r,showZeroCount:!0,onClick:()=>this.actions.handleExtendedSearchButtonClick(s)}}shouldFlattenToSinglePoiType(t,e){return t.length===1&&t[0].type==="poi_types"&&t[0].name===e.name}createLinkButton(t){const e=this.createButtonId(a.LINK,t);return{...this.createBaseButton(t),id:e,active:!1,onClick:()=>this.actions.handleExtendedSearchButtonClick(e)}}createExhibitorsButton(t){const{uiState:e}=this.rootStore,o=this.getExhibitorsTotalCount();return o===0?null:{...this.createBaseButton(t),id:i.EXHIBITORS,icon:u.EXHIBITORS,active:e.list.type==="exhibitors",count:o,showZeroCount:!0,onClick:()=>this.actions.handleSearchButtonClick(i.EXHIBITORS)}}countCategories(t){const{categoryById:e}=this.rootStore.categoryStore,o=new Set;return t.forEach(r=>{if(r.type!=="categories")return;const s=e.get(Number(r.id));s&&s.exhibitors.forEach(n=>o.add(n.id))}),o.size}countPoiTypes(t){return t.reduce((e,o)=>{if(o.type!=="poi_types")return e;if(o.count!==void 0)return e+o.count;const r=Number(o.id),s=this.rootStore.poiTypeStore.poiTypes.find(n=>n.id===r);if(s){const n=this.rootStore.boothStore.booths.filter(c=>c.poiTypeId===s.id).length;return e+n}return e},0)}dedupeButtons(t){const e=new Set;return t.filter(o=>{const r=`${o.type}_${o.name}`;return e.has(r)?!1:(e.add(r),!0)})}countBookmarks(){return this.rootStore.exhibitorStore.bookmarked.length+this.rootStore.eventStore.bookmarked.length+this.rootStore.speakerStore.bookmarked.length+this.rootStore.boothStore.booths.filter(t=>t.exhibitors.length===0&&t.bookmarkedDirectly).length}countVisited(){return this.rootStore.exhibitorStore.visited.length+this.rootStore.eventStore.visited.length}getSessionsTotalCount(){return this.rootStore.eventStore.eventItems.length}getGuidedToursTotalCount(){return this.rootStore.toursStore.hasTours?this.rootStore.toursStore.tourItems.length:0}getCategoriesTotalCount(){return this.rootStore.categoryStore.categories.filter(t=>t.exhibitors.length>0).length}getPoiTypeTotalCount(t){return this.rootStore.boothStore.booths.filter(e=>e.poiTypeId===t).length}getExhibitorsTotalCount(){return this.rootStore.exhibitorStore.exhibitors.length}}
|
package/dist/esm/utils/i18n.d.ts
CHANGED
|
@@ -3,6 +3,15 @@ export declare const getLocale: () => string;
|
|
|
3
3
|
export declare const getLocales: () => readonly Language[];
|
|
4
4
|
export declare const hasLocale: (id: string | undefined) => id is string;
|
|
5
5
|
export declare const t: (template: string, options?: any) => string;
|
|
6
|
+
/**
|
|
7
|
+
* Like {@link t}, but only looks the string up when a matching key exists in the
|
|
8
|
+
* active locale; otherwise it returns the string verbatim. Use for values that
|
|
9
|
+
* may be organizer-authored (e.g. search-button names): built-in labels still
|
|
10
|
+
* localize and react to language switches, while custom names pass through
|
|
11
|
+
* without tripping saveMissing / missingKeyHandler (console noise + extra work)
|
|
12
|
+
* in non-English locales.
|
|
13
|
+
*/
|
|
14
|
+
export declare const tIfExists: (template: string, options?: any) => string;
|
|
6
15
|
export declare const initI18n: () => Promise<TFunction>;
|
|
7
16
|
export declare const setLocale: (id: string) => Promise<void>;
|
|
8
17
|
export declare const resetLocale: () => Promise<void>;
|
package/dist/esm/utils/i18n.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import s from"i18next";import{observable as u}from"mobx";import{LANGUAGE_TYPE as y}from"../constants";import f from"../locales";import x from"../tools/base-runtime-url";import{loadJson as S}from"../tools/loaders";import{isLocalStorageAvailable as i}from"./localStorage";const n="en",c="efp-locale",g="language",l=u.box(n),m=u.array([],{deep:!1}),d=e=>S(`${x}locales/${e}.json`),w=()=>{if(!i)return null;const e=localStorage.getItem(c),o=localStorage.getItem(g);return o&&localStorage.removeItem(g),e||(o&&localStorage.setItem(c,o),o)},p=()=>{const e=window.__data,o=navigator.languages?.[0]||navigator.language,a=Object.keys(f).find(r=>o.startsWith(r));return(w()||e?.locale||a||n).toLowerCase()};export const getLocale=()=>l.get(),getLocales=()=>m,hasLocale=e=>m.some(o=>o.id===e),t=(e,o)=>(l.get(),s.t(e,o)),tIfExists=(e,o)=>(l.get(),s.exists(e,o)?s.t(e,o):e),initI18n=async()=>{m.replace(Object.entries(f).sort(([a],[r])=>a.localeCompare(r)).map(([a,r])=>({id:a,name:r,entity:{type:y}})));let e=p();const o={};if(e!==n)try{o[e]={translation:await d(e)}}catch(a){console.error(`Unable to load "${e}" localization, falling back to "${n}".`,a),e=n}return l.set(e),s.init({resources:o,lng:e,keySeparator:!1,saveMissing:e!==n,missingKeyHandler:(a,r,L,b)=>console.debug(`i18n missing key: '${a[0]}:${r}:${L}', fallback: '${b}'`)})},setLocale=async e=>{const o=e.toLowerCase();try{o!==n&&!s.hasResourceBundle(o,"translation")&&s.addResourceBundle(o,"translation",await d(o),!0,!0),await s.changeLanguage(o),l.set(o),i&&localStorage.setItem(c,o)}catch(a){console.error(`Failed to switch language to "${o}":`,a)}},resetLocale=async()=>(i&&(localStorage.removeItem(c),localStorage.removeItem(g)),setLocale(p()));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expofp/floorplan",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.10.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/expofp/efp-app.git",
|
|
@@ -72,9 +72,9 @@
|
|
|
72
72
|
"tslib": "^2.3.0",
|
|
73
73
|
"uuid": "^9.0.1",
|
|
74
74
|
"zod": "4.3.5",
|
|
75
|
-
"@expofp/
|
|
76
|
-
"@expofp/
|
|
77
|
-
"@expofp/
|
|
75
|
+
"@expofp/debug": "3.10.0",
|
|
76
|
+
"@expofp/geometry": "3.10.0",
|
|
77
|
+
"@expofp/resolve": "3.10.0"
|
|
78
78
|
},
|
|
79
79
|
"devDependencies": {
|
|
80
80
|
"@babel/plugin-proposal-decorators": "^8.0.2",
|