@expofp/floorplan 3.26.0 → 3.27.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-DI5g1CPS.js → Button-e8P-AcfW.js} +6 -6
- package/dist/browser/{CookieConsent-Qws_nQ3N.js → CookieConsent-DT6PZdD-.js} +8 -8
- package/dist/browser/{Debug-DTNPNDds.js → Debug-Btnxv9GC.js} +8 -8
- package/dist/browser/DebugTools-CH_HoQal.js +1922 -0
- package/dist/browser/{Demo-BDZjOBQc.js → Demo-DZoFFss-.js} +10 -10
- package/dist/browser/{Free-Cage9TkV.js → Free-DiFQkGSU.js} +10 -10
- package/dist/browser/{GalleryContainer-EeLKgziN.js → GalleryContainer-aJ6EZ5I3.js} +11 -11
- package/dist/browser/{GpsLoader-CJMX_mJN.js → GpsLoader-Bu9mBOam.js} +34 -34
- package/dist/browser/{KioskStore-BSza48xl.js → KioskStore-DUC4jNn0.js} +58 -107
- package/dist/browser/{MaplibreAdapter-evVQiVQj.js → MaplibreAdapter-DIlDXt73.js} +2056 -2141
- package/dist/browser/{ModalContainer-CTKDfIyR.js → ModalContainer-CVRxdpt2.js} +11 -11
- package/dist/browser/{PermissionNotice-O469DuWb.js → PermissionNotice-B5X5RQja.js} +7 -7
- package/dist/browser/SetKioskMode-BbDnU98F.js +48 -0
- package/dist/browser/{ShowKiosk-DumFiuHU.js → ShowKiosk-B7HfONvN.js} +11 -11
- package/dist/browser/{ViewerMenuPanel-ByFemA_T.js → ViewerMenuPanel-CT6kvVUw.js} +17 -17
- package/dist/browser/{add-debug-secret-listener-TLumKuSo.js → add-debug-secret-listener-Dvv-Pg0-.js} +1 -1
- package/dist/browser/{adopt-global-settings-ghJrZaU5.js → adopt-global-settings-CXzCKJtp.js} +10 -10
- package/dist/browser/{boolean-editor-WIpm-pFP.js → boolean-editor-CHMR9ZwP.js} +10 -10
- package/dist/browser/{bootIntercom-BR_Ehbyl.js → bootIntercom-DQcGuly8.js} +3 -3
- package/dist/browser/bundle.json +77 -65
- package/dist/browser/camera-events-BkrzcISl.js +18 -0
- package/dist/browser/{classnames-BmlkHMS8.js → classnames-BYuGpzao.js} +2 -2
- package/dist/browser/{client-CIHxJZmk.js → client-hxMr1frV.js} +793 -992
- package/dist/browser/{components-7lxOhyyi.js → components-DiB2l4Q7.js} +1952 -2013
- package/dist/browser/debug-context-CfyAAxAt.js +24315 -0
- package/dist/browser/{debug-overlay-B7jCqVlX.js → debug-overlay-PYUvPcx-.js} +11 -11
- package/dist/browser/{debug-ui-D1ApG52e.js → debug-ui-BXRAYxv6.js} +7 -7
- package/dist/browser/dimming-Dj-1kBgQ.js +1108 -0
- package/dist/browser/{dist-C67OkD_4.js → dist-30RVEJTr.js} +7 -7
- package/dist/browser/{dist-BrF5yJyj.js → dist-DgGMS59X.js} +6 -6
- package/dist/browser/{dist-CnpnDA-V.js → dist-opCvrhNh.js} +3 -3
- package/dist/browser/{efp-debug-init-BqEN61Fo.js → efp-debug-init-CYfrcz9M.js} +4 -4
- package/dist/browser/{enum-editor-Cy6VeZZd.js → enum-editor-BYO96W3-.js} +5 -5
- package/dist/browser/{es5-DyV1fctu.js → es5-Bpzk_wCi.js} +2 -2
- package/dist/browser/{event-not-found-BpFVdXz_.js → event-not-found-DEepFxEc.js} +1 -1
- package/dist/browser/{exports-C7NzL4lf.js → exports-Bo5VUoiX.js} +1 -1
- package/dist/browser/{favicon-BHscWjwp.js → favicon-Bf88cI9_.js} +1 -1
- package/dist/browser/{fetch-retry.umd-BytZeydp.js → fetch-retry.umd-D2BnNN8g.js} +2 -2
- package/dist/browser/{flex-BQBLAC6l.js → flex-B5cqWC1b.js} +6 -6
- package/dist/browser/{floorplan.loader-DkaQPhwC.js → floorplan.loader-D3lRYRJS.js} +10 -10
- package/dist/browser/{floorplan.ready-DwuXZphI.js → floorplan.ready-CsdDpbEv.js} +344 -308
- package/dist/browser/{fuse-DZTwJ52u.js → fuse-CzalO4Mu.js} +2 -2
- package/dist/browser/{i18n-Bcv8xw_q.js → i18n-D1sb3MoT.js} +5 -5
- package/dist/browser/index.js +14 -14
- package/dist/browser/{index.module-BFxDVa3K.js → index.module-JxYvexTC.js} +4 -4
- package/dist/browser/{integrateKiosk-VTNZSSfD.js → integrateKiosk-e4HqZu2W.js} +5 -5
- package/dist/browser/{is-webview-CjItzxdV.js → is-webview-ChPDTaTY.js} +1 -1
- package/dist/browser/{jsx-runtime-CT2c-IhD.js → jsx-runtime-Ca1Wj_4-.js} +2 -2
- package/dist/browser/{kiosk-record-v7r7q7t0.js → kiosk-record-C2cafcoW.js} +1 -1
- package/dist/browser/{lib-DGh8lZgT.js → lib-DXqE6M9Z.js} +3 -3
- package/dist/browser/{loadImage-a_ahClbD.js → loadImage-8qYzT9NG.js} +4 -4
- package/dist/browser/{logDeviceInfo-DHfa6NcE.js → logDeviceInfo-CF95RwQH.js} +9 -9
- package/dist/browser/{mobx-dAtztuiQ.js → mobx-B8aGIDdz.js} +7 -7
- package/dist/browser/{optional-boolean-editor-D43-yLO3.js → optional-boolean-editor-D02Q8KUS.js} +4 -4
- package/dist/browser/{optional-enum-editor-Cvn8TV-x.js → optional-enum-editor-RV_EKfNQ.js} +5 -5
- package/dist/browser/{optional-string-editor-sY0yVw_j.js → optional-string-editor-D_t_aZG2.js} +5 -5
- package/dist/browser/{particles.min-BD7iDSr6.js → particles.min-CDyH_67D.js} +2 -2
- package/dist/browser/{react-BJopqGbW.js → react-CDmIhEY6.js} +2 -2
- package/dist/browser/{react-dom-B77nDdqp.js → react-dom-PGvJwDoR.js} +3 -3
- package/dist/browser/{rolldown-runtime-BmHtYG9i.js → rolldown-runtime-CwqkRsWu.js} +1 -1
- package/dist/browser/scheduler-MBFOnOYr.js +212 -0
- package/dist/browser/{select-ByU-Ym6-.js → select-2x53pvd0.js} +11 -11
- package/dist/browser/{settings-CEH1i0Pj.js → settings-BCkl8gdb.js} +2 -2
- package/dist/browser/{settings-item-_PTji9Bz.js → settings-item-DT6Vnw06.js} +7 -7
- package/dist/browser/store-Dej5FGrq.js +31205 -0
- package/dist/browser/{string-editor-DaF1t7MK.js → string-editor-w9YDgRoR.js} +5 -5
- package/dist/browser/{text-field-XRLZPyNV.js → text-field-ricOc0h0.js} +6 -6
- package/dist/browser/{theme-D0OZcdto.js → theme-Ce7vpk9b.js} +9 -9
- package/dist/browser/{ui-7ozfXlN3.js → ui-PDV2rEkU.js} +9 -9
- package/dist/browser/{useRenderTarget-BG295f3e.js → useRenderTarget-DroCs5kL.js} +5 -5
- package/dist/browser/viewport-Jwms2MJD.js +41 -0
- package/dist/esm/components/Kiosk/KioskStore.d.ts +5 -2
- package/dist/esm/components/Kiosk/KioskStore.js +1 -1
- package/dist/esm/components/Kiosk/SetKioskMode.d.ts +1 -2
- package/dist/esm/components/Kiosk/SetKioskMode.js +1 -1
- package/dist/esm/components/Map/Map.d.ts +1 -1
- package/dist/esm/components/Map/Map.js +1 -1
- package/dist/esm/components/Map/MapCamera.d.ts +17 -0
- package/dist/esm/components/Map/MapCamera.js +1 -0
- package/dist/esm/components/Map/MapViewport.d.ts +12 -0
- package/dist/esm/components/Map/MapViewport.js +1 -0
- package/dist/esm/components/Map/booth-by-xy.d.ts +13 -0
- package/dist/esm/components/Map/booth-by-xy.js +1 -1
- package/dist/esm/components/Map/camera-events.d.ts +16 -0
- package/dist/esm/components/Map/camera-events.js +1 -0
- package/dist/esm/components/Map/camera.d.ts +48 -0
- package/dist/esm/components/Map/camera.js +1 -0
- package/dist/esm/components/Map/drawing/config/TextFitter.d.ts +1 -1
- package/dist/esm/components/Map/drawing/config/config-all.d.ts +1 -2
- package/dist/esm/components/Map/drawing/config/config-all.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-bg.d.ts +1 -2
- package/dist/esm/components/Map/drawing/config/config-bg.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-booth-badge.d.ts +70 -3
- package/dist/esm/components/Map/drawing/config/config-booth-badge.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-booth-bg.d.ts +3 -6
- package/dist/esm/components/Map/drawing/config/config-booth-bg.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-booth-bookmark.d.ts +11 -7
- package/dist/esm/components/Map/drawing/config/config-booth-bookmark.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-booth-border.d.ts +2 -3
- package/dist/esm/components/Map/drawing/config/config-booth-border.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-booth-labels-special.d.ts +16 -3
- package/dist/esm/components/Map/drawing/config/config-booth-labels-special.js +2 -2
- package/dist/esm/components/Map/drawing/config/config-booth-labels.d.ts +18 -4
- package/dist/esm/components/Map/drawing/config/config-booth-labels.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-booths.d.ts +1 -2
- package/dist/esm/components/Map/drawing/config/config-booths.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-load-layer.d.ts +1 -2
- package/dist/esm/components/Map/drawing/config/config-load-layer.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-markers.d.ts +23 -2
- package/dist/esm/components/Map/drawing/config/config-markers.js +1 -1
- package/dist/esm/components/Map/drawing/config/layer-images.d.ts +35 -0
- package/dist/esm/components/Map/drawing/config/layer-images.js +1 -0
- package/dist/esm/components/Map/drawing/config/loadBoothsImages.d.ts +38 -3
- package/dist/esm/components/Map/drawing/config/loadBoothsImages.js +1 -1
- package/dist/esm/components/Map/pointer.d.ts +73 -0
- package/dist/esm/components/Map/pointer.js +1 -0
- package/dist/esm/components/Map/scene.d.ts +20 -0
- package/dist/esm/components/Map/scene.js +1 -0
- package/dist/esm/components/Map/traffic/trafficLayers.d.ts +2 -7
- package/dist/esm/components/Map/traffic/trafficLayers.js +1 -1
- package/dist/esm/components/Map/traffic/useBuildRoute.d.ts +4 -3
- package/dist/esm/components/Map/traffic/useBuildRoute.js +6 -6
- package/dist/esm/components/Map/traffic/useManageTraffic.d.ts +4 -3
- package/dist/esm/components/Map/traffic/useManageTraffic.js +1 -1
- package/dist/esm/components/Map/viewport.d.ts +63 -0
- package/dist/esm/components/Map/viewport.js +1 -0
- package/dist/esm/components/Maplibre/MaplibreAdapter.d.ts +6 -2
- package/dist/esm/components/Maplibre/MaplibreAdapter.js +1 -1
- package/dist/esm/components/Maplibre/MaplibreWrapper.d.ts +30 -8
- package/dist/esm/components/Maplibre/MaplibreWrapper.js +1 -1
- package/dist/esm/components/Maplibre/useDimming.d.ts +2 -2
- package/dist/esm/components/Maplibre/useDimming.js +1 -1
- package/dist/esm/components/Maplibre/useKioskIdleEvents.d.ts +5 -6
- package/dist/esm/components/Maplibre/useLayerVisibilitySync.d.ts +2 -2
- package/dist/esm/components/Maplibre/useLayerVisibilitySync.js +1 -1
- package/dist/esm/components/Maplibre/usePoiMarkers.d.ts +1 -2
- package/dist/esm/components/Maplibre/useWayfindingAndMarkers.d.ts +8 -5
- package/dist/esm/components/Maplibre/useWayfindingAndMarkers.js +1 -1
- package/dist/esm/components/Maplibre/utils/layer-defs.d.ts +8 -3
- package/dist/esm/components/Maplibre/utils/layer-defs.js +1 -1
- package/dist/esm/components/Maplibre/utils/poi-marker-hit-test.d.ts +3 -3
- package/dist/esm/components/Ws.js +1 -1
- package/dist/esm/engine/defs.d.ts +30 -0
- package/dist/esm/engine/defs.js +3 -0
- package/dist/esm/engine/fonts.js +1 -0
- package/dist/esm/engine/update-def.d.ts +52 -0
- package/dist/esm/engine/update-def.js +1 -0
- package/dist/esm/engine/utils/rotation.d.ts +6 -0
- package/dist/esm/engine/utils/rotation.js +1 -0
- package/dist/esm/floorplan.ready.d.ts +2 -0
- package/dist/esm/floorplan.ready.js +1 -1
- package/dist/esm/store/BoothStore.d.ts +11 -0
- package/dist/esm/store/LayerStore.d.ts +2 -0
- package/dist/esm/store/LayerStore.js +1 -1
- package/dist/esm/store/RootStore.d.ts +0 -2
- package/dist/esm/store/RootStore.js +1 -1
- package/dist/esm/store/RouteStore.js +1 -1
- package/dist/esm/store/UIState.js +1 -1
- package/dist/esm/store/details-events.d.ts +11 -0
- package/dist/esm/store/details-events.js +1 -0
- package/dist/esm/store/init/init-booths.js +1 -1
- package/dist/esm/utils/dimming.d.ts +13 -2
- package/dist/esm/utils/dimming.js +1 -1
- package/dist/esm/utils/mobx.d.ts +2 -2
- package/dist/esm/utils/mobx.js +1 -1
- package/dist/esm/utils/scene-bounds.d.ts +1 -1
- package/dist/esm/utils/scene-bounds.js +1 -1
- package/dist/esm/wayfinding/adapters/canvasIconProvider.js +1 -1
- package/dist/esm/wayfinding/createWayfinding.d.ts +19 -2
- package/dist/esm/wayfinding/createWayfinding.js +1 -1
- package/package.json +11 -10
- package/dist/browser/SetKioskMode-DUk4c-Gs.js +0 -57
- package/dist/browser/booth-by-xy-CyZpg1Fn.js +0 -1130
- package/dist/browser/main-sUuehgQu.js +0 -289
- package/dist/browser/store-Oj0dGPnb.js +0 -41431
- package/dist/esm/components/Map/pointInConvexQuad.d.ts +0 -3
- package/dist/esm/components/Map/pointInConvexQuad.js +0 -1
- package/dist/esm/components/Map/visibleArea.d.ts +0 -16
- package/dist/esm/components/Map/visibleArea.js +0 -1
- package/dist/esm/components/Maplibre/useRendererEvents.d.ts +0 -9
- package/dist/esm/components/Maplibre/useRendererEvents.js +0 -1
- package/dist/esm/components/Maplibre/utils/update-pump.d.ts +0 -18
- package/dist/esm/components/Maplibre/utils/update-pump.js +0 -1
- package/dist/esm/renderer/HandlerRegistry.d.ts +0 -18
- package/dist/esm/renderer/HandlerRegistry.js +0 -1
- package/dist/esm/renderer/RendererService.d.ts +0 -44
- package/dist/esm/renderer/RendererService.js +0 -1
- package/dist/esm/renderer/engine-core/defs.d.ts +0 -40
- package/dist/esm/renderer/engine-core/defs.js +0 -3
- package/dist/esm/renderer/engine-core/fonts.js +0 -1
- package/dist/esm/renderer/engine-core/settings.d.ts +0 -4
- package/dist/esm/renderer/engine-core/settings.js +0 -1
- package/dist/esm/renderer/engine-core/types.d.ts +0 -50
- package/dist/esm/renderer/engine-core/types.js +0 -1
- package/dist/esm/renderer/engine-core/update-def.d.ts +0 -12
- package/dist/esm/renderer/engine-core/update-def.js +0 -1
- package/dist/esm/renderer/engine-core/utils/rotation.d.ts +0 -17
- package/dist/esm/renderer/engine-core/utils/rotation.js +0 -1
- package/dist/esm/renderer/index.d.ts +0 -19
- package/dist/esm/renderer/index.js +0 -1
- /package/dist/esm/{renderer/engine-core → engine}/canvases.d.ts +0 -0
- /package/dist/esm/{renderer/engine-core → engine}/canvases.js +0 -0
- /package/dist/esm/{renderer/engine-core → engine}/fonts.d.ts +0 -0
|
@@ -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.27.0" };
|
|
5
5
|
var t = new e.Error().stack;
|
|
6
|
-
t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "
|
|
6
|
+
t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "edf52ee9-f3a6-424f-a5ff-f0c8342333ab", e._sentryDebugIdIdentifier = "sentry-dbid-edf52ee9-f3a6-424f-a5ff-f0c8342333ab");
|
|
7
7
|
} catch {}
|
|
8
8
|
})();
|
|
9
|
-
import { t as e } from "./jsx-runtime-
|
|
10
|
-
import { t } from "./settings-item-
|
|
11
|
-
import { t as n } from "./text-field-
|
|
9
|
+
import { t as e } from "./jsx-runtime-Ca1Wj_4-.js";
|
|
10
|
+
import { t } from "./settings-item-DT6Vnw06.js";
|
|
11
|
+
import { t as n } from "./text-field-ricOc0h0.js";
|
|
12
12
|
//#region ../debug/src/lib/ui/string-editor.tsx
|
|
13
13
|
var r = e(), i = (e) => {
|
|
14
14
|
var i;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
(function() {
|
|
2
2
|
try {
|
|
3
3
|
var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
|
|
4
|
-
e.SENTRY_RELEASE = { id: "3.
|
|
4
|
+
e.SENTRY_RELEASE = { id: "3.27.0" };
|
|
5
5
|
var t = new e.Error().stack;
|
|
6
|
-
t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "
|
|
6
|
+
t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "b57a1337-f6ba-488a-8e6f-60f9358b45a2", e._sentryDebugIdIdentifier = "sentry-dbid-b57a1337-f6ba-488a-8e6f-60f9358b45a2");
|
|
7
7
|
} catch {}
|
|
8
8
|
})();
|
|
9
|
-
import { r as e } from "./rolldown-runtime-
|
|
10
|
-
import { t } from "./react-
|
|
11
|
-
import { D as n, i as r, l as i, n as a, s as o, u as s, y as c } from "./flex-
|
|
12
|
-
import { t as l } from "./classnames-
|
|
9
|
+
import { r as e } from "./rolldown-runtime-CwqkRsWu.js";
|
|
10
|
+
import { t } from "./react-CDmIhEY6.js";
|
|
11
|
+
import { D as n, i as r, l as i, n as a, s as o, u as s, y as c } from "./flex-B5cqWC1b.js";
|
|
12
|
+
import { t as l } from "./classnames-BYuGpzao.js";
|
|
13
13
|
//#region ../../node_modules/.pnpm/@radix-ui+themes@3.3.0_@types+react-dom@19.2.3_@types+react@19.2.17__@types+react@19.2._5ea800d4e947acedb1fa1275f1697b17/node_modules/@radix-ui/themes/dist/esm/components/text-field.props.js
|
|
14
14
|
var u = /* @__PURE__ */ e(t()), d = /* @__PURE__ */ e(l()), f = {
|
|
15
15
|
size: {
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
(function() {
|
|
2
2
|
try {
|
|
3
3
|
var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
|
|
4
|
-
e.SENTRY_RELEASE = { id: "3.
|
|
4
|
+
e.SENTRY_RELEASE = { id: "3.27.0" };
|
|
5
5
|
var t = new e.Error().stack;
|
|
6
|
-
t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "
|
|
6
|
+
t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "f5429b84-6f5b-4b20-898f-e5345902ef44", e._sentryDebugIdIdentifier = "sentry-dbid-f5429b84-6f5b-4b20-898f-e5345902ef44");
|
|
7
7
|
} catch {}
|
|
8
8
|
})();
|
|
9
|
-
import { r as e } from "./rolldown-runtime-
|
|
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-CwqkRsWu.js";
|
|
10
|
+
import { t } from "./react-CDmIhEY6.js";
|
|
11
|
+
import { t as n } from "./jsx-runtime-Ca1Wj_4-.js";
|
|
12
|
+
import { t as r } from "./react-dom-PGvJwDoR.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-B5cqWC1b.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-30RVEJTr.js";
|
|
15
|
+
import { t as y } from "./classnames-BYuGpzao.js";
|
|
16
16
|
//#region ../../node_modules/.pnpm/@radix-ui+react-visually-hidden@1.2.3_@types+react-dom@19.2.3_@types+react@19.2.17__@ty_cffccd7838985066e8e1d993b5cb6017/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs
|
|
17
17
|
var b = /* @__PURE__ */ e(r(), 1), x = /* @__PURE__ */ e(t(), 1), S = n(), C = Object.freeze({
|
|
18
18
|
position: "absolute",
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
(function() {
|
|
2
2
|
try {
|
|
3
3
|
var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
|
|
4
|
-
e.SENTRY_RELEASE = { id: "3.
|
|
4
|
+
e.SENTRY_RELEASE = { id: "3.27.0" };
|
|
5
5
|
var t = new e.Error().stack;
|
|
6
|
-
t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "
|
|
6
|
+
t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "cbb5c555-77ff-4375-8420-80c8ae476dcf", e._sentryDebugIdIdentifier = "sentry-dbid-cbb5c555-77ff-4375-8420-80c8ae476dcf");
|
|
7
7
|
} catch {}
|
|
8
8
|
})();
|
|
9
|
-
import { r as e } from "./rolldown-runtime-
|
|
10
|
-
import { a as t, i as n, s as r } from "./efp-debug-init-
|
|
11
|
-
import { a as i, i as a } from "./adopt-global-settings-
|
|
12
|
-
import { t as o } from "./jsx-runtime-
|
|
13
|
-
import "./settings-
|
|
14
|
-
import { t as s } from "./add-debug-secret-listener-
|
|
9
|
+
import { r as e } from "./rolldown-runtime-CwqkRsWu.js";
|
|
10
|
+
import { a as t, i as n, s as r } from "./efp-debug-init-CYfrcz9M.js";
|
|
11
|
+
import { a as i, i as a } from "./adopt-global-settings-CXzCKJtp.js";
|
|
12
|
+
import { t as o } from "./jsx-runtime-Ca1Wj_4-.js";
|
|
13
|
+
import "./settings-BCkl8gdb.js";
|
|
14
|
+
import { t as s } from "./add-debug-secret-listener-Dvv-Pg0-.js";
|
|
15
15
|
//#region ../debug/src/lib/ui/render-debug-ui.tsx
|
|
16
16
|
var c = /* @__PURE__ */ e(r(), 1), l = o(), u = !1;
|
|
17
17
|
function d() {
|
|
@@ -26,7 +26,7 @@ function d() {
|
|
|
26
26
|
}
|
|
27
27
|
});
|
|
28
28
|
let o = async (t) => {
|
|
29
|
-
let { DebugUi: n } = await import("./debug-ui-
|
|
29
|
+
let { DebugUi: n } = await import("./debug-ui-BXRAYxv6.js"), { createRoot: i } = await import("./client-hxMr1frV.js").then((t) => /* @__PURE__ */ e(t.t(), 1)), a = document.createElement("div");
|
|
30
30
|
document.body.appendChild(a), i(a).render(/* @__PURE__ */ (0, l.jsx)(n, {
|
|
31
31
|
useDebugButtonState: r.useState,
|
|
32
32
|
open: t
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
(function() {
|
|
2
2
|
try {
|
|
3
3
|
var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
|
|
4
|
-
e.SENTRY_RELEASE = { id: "3.
|
|
4
|
+
e.SENTRY_RELEASE = { id: "3.27.0" };
|
|
5
5
|
var t = new e.Error().stack;
|
|
6
|
-
t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "
|
|
6
|
+
t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "39485aff-c926-4ecb-9ba3-8a127a388075", e._sentryDebugIdIdentifier = "sentry-dbid-39485aff-c926-4ecb-9ba3-8a127a388075");
|
|
7
7
|
} catch {}
|
|
8
8
|
})();
|
|
9
|
-
import { r as e } from "./rolldown-runtime-
|
|
10
|
-
import { t } from "./react-
|
|
11
|
-
import { l as n } from "./store-
|
|
9
|
+
import { r as e } from "./rolldown-runtime-CwqkRsWu.js";
|
|
10
|
+
import { t } from "./react-CDmIhEY6.js";
|
|
11
|
+
import { l as n } from "./store-Dej5FGrq.js";
|
|
12
12
|
//#region ../ui/src/shared/activeElement.ts
|
|
13
13
|
var r = (e) => !!e && "activeElement" in e;
|
|
14
14
|
function i(e) {
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
(function() {
|
|
2
|
+
try {
|
|
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.27.0" };
|
|
5
|
+
var t = new e.Error().stack;
|
|
6
|
+
t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "df793f8e-2c61-4fcc-bf8c-e603b2d7b174", e._sentryDebugIdIdentifier = "sentry-dbid-df793f8e-2c61-4fcc-bf8c-e603b2d7b174");
|
|
7
|
+
} catch {}
|
|
8
|
+
})();
|
|
9
|
+
import { c as e, vt as t } from "./store-Dej5FGrq.js";
|
|
10
|
+
//#region src/components/Map/viewport.ts
|
|
11
|
+
function n(e) {
|
|
12
|
+
return {
|
|
13
|
+
canvasToPlan: (t) => e.current.api.canvasToPlan(t),
|
|
14
|
+
planToCanvas: (t) => e.current.api.planToCanvas(t),
|
|
15
|
+
isVisible: (t) => e.current.api.isVisible(t)
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function r(e) {
|
|
19
|
+
a = e;
|
|
20
|
+
}
|
|
21
|
+
function i() {
|
|
22
|
+
return a;
|
|
23
|
+
}
|
|
24
|
+
var a;
|
|
25
|
+
function o(n) {
|
|
26
|
+
let r = i();
|
|
27
|
+
if (!n || !r) throw Error("Canvas not ready");
|
|
28
|
+
let a = r.canvasToPlan({
|
|
29
|
+
x: n.clientWidth / 2,
|
|
30
|
+
y: n.clientHeight / 2
|
|
31
|
+
});
|
|
32
|
+
if (!a) throw Error("The camera is not looking at the plan");
|
|
33
|
+
let o = e.layerStore.visible.find((e) => e.mode === t.TurnedOff || e.mode === t.TurnedOn);
|
|
34
|
+
return {
|
|
35
|
+
x: a.x,
|
|
36
|
+
y: a.y,
|
|
37
|
+
z: (o == null ? void 0 : o.name) || null
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { r as i, n, i as r, o as t };
|
|
@@ -4,7 +4,6 @@ import { type SetKioskChangeEvent } from './SetKiosk/types';
|
|
|
4
4
|
declare class KioskStore {
|
|
5
5
|
get kiosk(): Kiosk | null;
|
|
6
6
|
setKiosk(kiosk: Kiosk | null): void;
|
|
7
|
-
get renderer(): import("@expofp/renderer").Renderer | null;
|
|
8
7
|
private getCameraState;
|
|
9
8
|
savedKiosk: Kiosk | null;
|
|
10
9
|
get hasUnsavedChanges(): boolean;
|
|
@@ -23,7 +22,11 @@ declare class KioskStore {
|
|
|
23
22
|
*/
|
|
24
23
|
private resetMaplibreCamera;
|
|
25
24
|
private waitForMaplibreCameraPort;
|
|
26
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Restores the home framing on the floor plan. The plan's own camera takes it whenever it is up;
|
|
27
|
+
* without one mounted there is nothing to move.
|
|
28
|
+
*/
|
|
29
|
+
private resetPlanCamera;
|
|
27
30
|
restoreData(): void;
|
|
28
31
|
handleSetupReady(): void;
|
|
29
32
|
handleClose(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__decorate as
|
|
1
|
+
import{__decorate as i}from"tslib";import{action as o,computed as h,observable as k,toJS as c,when as S}from"mobx";import a from"../../store";import{areLayersEnabled as g}from"../../utils/areLayersEnabled";import{t as m}from"../../utils/i18n";import{mapCamera as d}from"../Map/camera";import{mapViewport as f}from"../Map/viewport";import{getPtScaleZoomRatio as C,toFiniteNumber as u}from"./kiosk-record";import{updateKiosk as y}from"./kioskApi";import{getSavedKiosk as M,removeKiosk as K,saveKiosk as P}from"./SetKiosk";const b=2e4;class s{constructor(){this.savedKiosk=null,this.statusMessages=[],this.statusMessageTimer=0,this.isResettingCamera=!1}get kiosk(){return a.uiState.kioskData}setKiosk(e){a.uiState.setKioskData(e)}getCameraState(){if(a.maplibreStore.showMaplibre){const t=a.maplibreStore.cameraPort?.getCameraState();return t?{mapCenterLng:t.lng,mapCenterLat:t.lat,mapZoom:t.zoom,mapBearingDegrees:t.bearing,mapPitchDegrees:t.pitch}:{}}const e=d()?.state();return e?{mapInitialPtScale:this.initialPtScale,mapPtScale:e.pixelSize,mapCenterX:e.center.x,mapCenterY:e.center.y,mapRollDegrees:e.roll,mapPitch:e.pitch}:{}}get hasUnsavedChanges(){const e=this.savedKiosk,t=c(this.kiosk);if(!t||!e)return!!t!=!!e;const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!0;for(const l of n)if(!(l in t)||e[l]!==t[l])return!0;return!1}addStatusMessage(e){this.statusMessages=[{...e,id:Date.now()}],this.startCleanupMessages()}clearStatusMessages(){this.statusMessages=[]}startCleanupMessages(){clearTimeout(this.statusMessageTimer),this.statusMessageTimer=window.setTimeout(()=>this.clearStatusMessages(),1e3)}async resetCamera(){if(!this.isResettingCamera){this.isResettingCamera=!0;try{if(a.maplibreStore.showMaplibre&&await this.resetMaplibreCamera())return;await this.resetPlanCamera()}finally{this.isResettingCamera=!1}}}async resetMaplibreCamera(){const e=await this.waitForMaplibreCameraPort();if(!e)return!1;const t=this.kiosk;t?.z!=null&&a.fp.activateFloor({name:String(t.z)});const n=u(t?.mapCenterLng),r=u(t?.mapCenterLat),l=u(t?.mapZoom);return n===void 0||r===void 0||l===void 0?(e.resetPitch(),a.uiState.fitBounds(),!0):(e.applyCameraState({lng:n,lat:r,zoom:l,bearing:u(t?.mapBearingDegrees),pitch:u(t?.mapPitchDegrees)}),!0)}async waitForMaplibreCameraPort(){const{maplibreStore:e}=a;if(e.cameraPort)return e.cameraPort;try{await S(()=>!!e.cameraPort||!e.showMaplibre,{timeout:b})}catch{return null}return e.cameraPort}async resetPlanCamera(){const e=d();if(!e)return;const t=this.kiosk;await e.api.reset({pan:!0,zoom:!0,roll:!0,pitch:!0},{immediate:!0}),t?.z!=null&&a.fp.activateFloor({name:String(t.z)});const n=C(t);n!==void 0&&await e.api.zoomBy(n,{immediate:!0});const r=u(t?.mapCenterX),l=u(t?.mapCenterY);r!==void 0&&l!==void 0&&await e.api.panTo({x:r,y:l},{immediate:!0});const p=u(t?.mapRollDegrees);p!==void 0&&await e.api.rollTo(p,{immediate:!0})}restoreData(){const e=M();e&&(this.setKiosk(e),this.savedKiosk=e,a.uiState.kiosk=!0)}handleSetupReady(){this.restoreData(),a.uiState.kiosk=!0,a.uiState.hideFreeOrDemo=!0,a.uiState.setForceDim(!0),a.searchStore.setSearchText(""),a.searchStore.setFocused(!1),this.resetCamera()}handleClose(){this.setKiosk(null),a.uiState.setForceDim(!1),a.uiState.enableSetKioskMode(!1),a.searchStore.closeSearch()}handleDelete(){K(),this.setKiosk(null),a.uiState.resetMapSettings(),a.uiState.resetUIScale(),this.addStatusMessage({variant:"success",title:m("Deleted")})}handleSave(){const e=f();if(!e)return;const t=c(this.kiosk);if(!t)return;const n=this.getCameraState(),r={...t,...n};if(!e.isVisible({x:r.x,y:r.y})){this.addStatusMessage({variant:"error",title:m("Kiosk not visible")});return}this.setKiosk(r),P(r),y(r,"https://app.expofp.com/"),a.uiState.setUIScale(r.uiScale,!0),this.addStatusMessage({variant:"success",title:m("Saved")}),this.savedKiosk=r}delayChange(e){requestAnimationFrame(()=>e?.())}handleChange(e){const t=c(this.kiosk);t&&(Number.isFinite(e.angle)&&this.setKiosk({...t,heading:e.angle}),Number.isFinite(e.scale)&&(this.setKiosk({...t,uiScale:e.scale}),this.delayChange(()=>a.uiState.setUIScale(e.scale,!1))),Number.isFinite(e.percent)&&this.setKiosk({...t,iconSizePercent:e.percent}))}setInitialPtScale(e){if(this.initialPtScale)return;this.initialPtScale=e;const t=c(this.kiosk);t&&this.setKiosk({...t,mapInitialPtScale:e})}handleClick(e){const t=c(this.kiosk),n=a.fp.getFloors(),r=g()?n.find(p=>p.active)?.name??null:null,l=a.uiState.uiScale;this.setKiosk({...t,x:e.x,y:e.y,z:r,uiScale:t?.uiScale||l,heading:t?.heading||0,iconSizePercent:t?.iconSizePercent||100,...this.getCameraState()})}handleNavigationChange(){const e=c(this.kiosk);e&&this.setKiosk({...e,...this.getCameraState()})}}i([h({keepAlive:!0})],s.prototype,"kiosk",null),i([o],s.prototype,"setKiosk",null),i([k],s.prototype,"savedKiosk",void 0),i([h({keepAlive:!0})],s.prototype,"hasUnsavedChanges",null),i([k],s.prototype,"statusMessages",void 0),i([o],s.prototype,"addStatusMessage",null),i([o],s.prototype,"clearStatusMessages",null),i([o],s.prototype,"startCleanupMessages",null),i([o],s.prototype,"resetCamera",null),i([o],s.prototype,"restoreData",null),i([o],s.prototype,"handleSetupReady",null),i([o],s.prototype,"handleClose",null),i([o],s.prototype,"handleDelete",null),i([o],s.prototype,"handleSave",null),i([o],s.prototype,"handleChange",null),i([o],s.prototype,"setInitialPtScale",null),i([o],s.prototype,"handleClick",null),i([o],s.prototype,"handleNavigationChange",null);export default new s;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as n}from"react/jsx-runtime";import{observer as r}from"mobx-react-lite";import{useEffect as i}from"react";import s from"../../store";import{useInit as l}from"../../utils/mobx";import{mapCamera as m}from"../Map/camera";import{onCameraMoved as S}from"../Map/camera-events";import{setPlanClickListener as t}from"../Map/pointer";import e from"./KioskStore";import c from"./SetKiosk";const d=r(()=>{l(()=>{Promise.resolve().then(()=>e.handleSetupReady())}),i(()=>{const a=m()?.state();a&&e.setInitialPtScale(a.pixelSize)},[]),i(()=>(t(a=>e.handleClick(a)),()=>t()),[]),i(()=>S(()=>e.handleNavigationChange()),[]);const o=!!e.kiosk;return n(c,{isSaveDisabled:o?!e.hasUnsavedChanges:!0,isDeleteDisabled:!o,areControlsDisabled:!o,confirmOnClose:o?e.hasUnsavedChanges:!1,angle:e.kiosk?.heading||0,uiScale:e.kiosk?.uiScale||s.uiState.uiScale,minUiScale:s.uiState.minUIScale,maxUiScale:s.uiState.maxUIScale,uiScaleStep:.01,iconSizePercent:e.kiosk?.iconSizePercent||100,isInfoVisible:!o,statusMessages:e.statusMessages,onClose:()=>e.handleClose(),onDelete:()=>e.handleDelete(),onSave:()=>e.handleSave(),onChange:a=>e.handleChange(a)})});export default d;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export default function Map(): import("react").JSX.Element;
|
|
1
|
+
export default function Map(): import("react").JSX.Element | null;
|
|
2
2
|
//# sourceMappingURL=Map.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jsx as S,jsxs as P}from"react/jsx-runtime";import{Renderer as _,update as h}from"@expofp/renderer";import F from"classnames";import{observable as D}from"mobx";import{useObserver as b}from"mobx-react-lite";import{useEffect as g,useMemo as N,useRef as y,useState as O}from"react";import z from"../../data";import{svgArea as k}from"../../data/svg";import{createSceneDef as j}from"../../engine/defs";import i,{layersStore as d,uiState as m}from"../../store";import f from"../../tools/settings";import{applyVenueDim as I,createDimmingAnimator as V}from"../../utils/dimming";import Z from"../../utils/is-debug";import{isPathwayLayer as x}from"../../utils/is-pathway-layer";import{useReaction as v}from"../../utils/mobx";import{createWayfinding as $}from"../../wayfinding";import U from"./drawing/config/config-all";import{configMarkers as W}from"./drawing/config/config-markers";import{loadLayersImages as X}from"./drawing/config/loadBoothsImages";import{MapCamera as B}from"./MapCamera";import{MapViewport as H}from"./MapViewport";import{clearSelection as G}from"./pointer";import{setMapScene as E}from"./scene";import{useBuildRoute as J}from"./traffic/useBuildRoute";import{useManageTraffic as q}from"./traffic/useManageTraffic";import{centerCoordinates as K}from"./viewport";const Q="#ebebeb",C="routes-api.expofp.com",Y=1e4;function ee(t){return Number.isFinite(f.maxZoom)?f.maxZoom:t.viewbox.size.width>Y?100:35}function re(){if(!i.fp.enableRotation)return!1;const t=m.mapSettings.roll;return t===void 0||Number(t)===1}function oe(){return f.EXPO==="imexamerica25-3d"?!0:void 0}function te(){const t=m.mapSettings.zoomtime;if(!(!t||t===m.defaultMapSettings.zoomtime))return{zoomTime:t/1e3}}export default function ne(){const t=y(null),l=N(()=>D({moving:!1,prevLevel:i.layerStore.layers.find(r=>!r.frozen&&r.visible)}),[]),[o,T]=O(void 0),c=y(null),p=y(null);function R(){d.layers.forEach(r=>{r.configured=!1,r.children=[],r.loaded=!1})}g(()=>{let r=!1;return R(),d.layersLoaded=!1,U().then(({layers:s,cleanup:a})=>{if(r){a();return}p.current=a;const n=f.backgroundColor==="none"?Q:f.backgroundColor,e=j(s,k,n);T(e),E(e),c.current=V(u=>{I(e,u)&&h(e.rootLayer)}),c.current.setTarget(m.dimmed,{immediate:!0}),d.layersLoaded=!0,i.fp.onFpConfigured&&i.fp.onFpConfigured(),X()}),()=>{r=!0,p.current?.(),p.current=null,c.current?.stop(),c.current=null,E(void 0),R()}},[]),v(()=>m.dimmed,r=>{c.current?.setTarget(r)}),g(()=>{i.fp.getCenterCoordinates=()=>K(t.current)},[]),g(()=>{if(!o)return;const r=$({scene:o,store:i,canvas:t}),s=W({scene:o});return()=>{r(),s()}},[o]),v(()=>i.routeStore.currentRouteLayer,()=>{const r=i.routeStore.currentRouteLayer;if(!o||!r||l.prevLevel===r)return;const s=o.rootLayer.children.filter(e=>i.layerStore.floors.some(u=>e.name.includes(u.name))),a=r.name;if(!s.find(e=>e.name===a))return;const n=[];s.forEach(e=>{e.name===a&&e.hidden!==!1&&(e.hidden=!1,n.push(e)),e.name===l.prevLevel?.name&&e.hidden!==!0&&(e.hidden=!0,n.push(e))}),l.prevLevel=r,n.length&&h(...n)},void 0,[o]),v(()=>i.layerStore.visible,r=>{if(!o)return;const s=r.filter(e=>x(e.name)),a=o.rootLayer.children,n=[];for(const e of a){if(!x(e.name))continue;const u=!s.find(A=>A.name===e.name);e.hidden!==u&&(e.hidden=u,n.push(e))}n.length&&h(...n)},void 0,[o]);const L=b(()=>d.layersLoaded),M=b(()=>!!m.buildRoute);J({enabled:L&&M,scene:o});const w=z.busRoutes??!1;return q({permission:L&&w,scene:o,dataJsonUrl:`https://${C}/v1/routes?expo=${f.EXPO}`,websocketUrl:`wss://${C}/locations?expo=${f.EXPO}`}),b(()=>o?P(_,{debug:Z,style:{width:"100%",height:"100%"},ref:t,className:F({map:!0}),scene:o,maxZoom:ee(o),bounds:d.bounds,controls:{roll:re(),pitch:oe()},smoothTime:te(),visibleRect:m.canvasVisibleRectPx,onPointerMissed:G,children:[S(B,{}),S(H,{})]}):null)}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Everything that moves the plan's camera on the store's say-so, and the camera itself handed out to
|
|
3
|
+
* the SDK that lives outside React.
|
|
4
|
+
*
|
|
5
|
+
* Rendered **inside** `<Renderer>`, which is what lets it hold the camera: the renderer publishes it
|
|
6
|
+
* through a hook, and a hook only resolves in a component R3F has mounted under the canvas. That is
|
|
7
|
+
* the whole reason `Map` is split in two — the outer half watches the stores and builds the scene,
|
|
8
|
+
* this half drives what the stores ask for. The plan's coordinate conversions go out the same way
|
|
9
|
+
* but from `MapViewport`, which the MapLibre view mounts too.
|
|
10
|
+
*
|
|
11
|
+
* Each of the store's command flags is a one-shot: it is read, acted on, and cleared, exactly as the
|
|
12
|
+
* imperative map read them. None of them check for MapLibre any more — `Layout` unmounts the plan
|
|
13
|
+
* entirely in that mode, so there is nothing here to guard.
|
|
14
|
+
* @returns Nothing; this renders no scene node.
|
|
15
|
+
*/
|
|
16
|
+
export declare function MapCamera(): null;
|
|
17
|
+
//# sourceMappingURL=MapCamera.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Box as s}from"@expofp/geometry";import{useCameraAPI as h,useCameraMoveStart as y,useCameraState as x}from"@expofp/renderer";import{useEffect as R,useLayoutEffect as T,useRef as B,useState as M}from"react";import{fpGeo as P}from"../../data/fpGeo";import{svgArea as S}from"../../data/svg";import p,{uiState as r}from"../../store";import{BoothBase as C}from"../../store/BoothStore";import d from"../../tools/logger";import F from"../../tools/settings";import{areLayersEnabled as w}from"../../utils/areLayersEnabled";import{parseNumberPair as l}from"../../utils/camera-map-settings";import{convertGpsToLocal as z}from"../../utils/gps";import{useReaction as f}from"../../utils/mobx";import{createMapCamera as E,setMapCamera as v}from"./camera";import{notifyCameraMoved as N}from"./camera-events";import{resetExternalOverlay as b}from"./pointer";export function MapCamera(){const o=h(),n=x(),t=B({api:o,state:n}),[a]=M(()=>E(t));return T(()=>{t.current={api:o,state:n}}),R(()=>(v(a),()=>v(void 0)),[a]),y(()=>{b(),N()}),f(()=>r.zoomBy,e=>{e&&(t.current.api.zoomBy(e),r.zoomBy=null)},void 0,[]),f(()=>r.rollReset,e=>{e&&(t.current.api.reset({roll:!0}),r.rollReset=!1)},void 0,[]),f(()=>r.centerMap,e=>{e&&(t.current.api.reset({zoom:!!(r.list.type==="search"&&r.list.text)}),r.centerMap=!1)},void 0,[]),f(()=>r.moveToRect,e=>{if(!e)return;const{width:m,height:i}=e.size;m>0&&i>0&&Number.isFinite(m)&&Number.isFinite(i)&&g(t.current.api,e,r.moveToRectPaddingPercent??void 0),r.moveToRect=null,r.moveToRectPaddingPercent=null},void 0,[]),f(()=>r.moveToBooths,e=>{if(!e)return;d.log("watched moveToBooths",e);const m=e.filter(i=>i.rect).map(i=>i.rect);m.length&&g(t.current.api,s.fromUnion(...m)),r.moveToBooths=null},void 0,[]),f(()=>r.mapSettings,({center:e,centerxy:m,bearing:i,z:c})=>{try{c&&p.fp.activateFloor({name:c});const u=A(e,m);u&&t.current.api.panTo(u),Number.isFinite(i)&&t.current.api.rollTo(i)}catch(u){d.error("Error in mapSettings reaction",u)}},void 0,[]),null}function g(o,n,t){o.zoomTo(L(n),{padding:t??G(n,S),maxZoom:Number.isFinite(F.maxZoom)?void 0:10,within:k()})}function k(){const o=r.canvasVisibleRectPx;return r.shouldShiftMapRect?s.fromMinMax({x:o.min.x+r.overlayWidthPx,y:o.min.y},o.max):o}function L(o){const n=r.kioskData;if(!n)return o;const t=r.selectedRoute?.from,a=t instanceof C?t.layer?.name:t?.layer;return(w()?a===p.routeStore.currentRouteLayer?.name:!0)?s.fromUnion(o,new s(n.x,n.y,1,1)):o}function G(o,n){return!o||!n?0:(o.area/n.area>.1?15:25)/100}function A(o,n){if(o){const a=l(o);if(!a)return;const e=P?.properties?.config;if(!e)throw new Error("Map center given in GPS, but the plan has no GPS config");return z({lat:a[0],lng:a[1]},e)??void 0}const t=l(n);if(t)return{x:t[0],y:t[1]}}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hands the plan's coordinate conversions out to the SDK that lives outside React.
|
|
3
|
+
*
|
|
4
|
+
* Rendered **inside** `<Renderer>`, which is what lets it hold them: `useViewport` only resolves in
|
|
5
|
+
* a component R3F has mounted under the canvas. A component of its own rather than another job for
|
|
6
|
+
* `MapCamera` because the conversions outlive that split — they depend on the scene's `Space` and
|
|
7
|
+
* the camera three is drawing with, and on nothing that steers the camera, so they are just as
|
|
8
|
+
* available in external mode, where MapLibre owns the camera and `MapCamera` is not mounted at all.
|
|
9
|
+
* @returns Nothing; this renders no scene node.
|
|
10
|
+
*/
|
|
11
|
+
export declare function MapViewport(): null;
|
|
12
|
+
//# sourceMappingURL=MapViewport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useViewport as p}from"@expofp/renderer";import{useEffect as i,useLayoutEffect as n,useRef as u,useState as f}from"react";import{createMapViewport as a,setMapViewport as o}from"./viewport";export function MapViewport(){const e=p(),t=u({api:e}),[r]=f(()=>a(t));return n(()=>{t.current={api:e}}),i(()=>(o(r),()=>o(void 0)),[r]),null}
|
|
@@ -1,3 +1,16 @@
|
|
|
1
1
|
import type { Booth } from '../../store/BoothStore';
|
|
2
|
+
/**
|
|
3
|
+
* Starts keeping the hit-test index current with the stores, and returns the disposer.
|
|
4
|
+
*
|
|
5
|
+
* Called from the instance wiring (`floorplan.ready`) rather than run at module scope: this module
|
|
6
|
+
* sits inside the store ↔ components import cycle (the store's own modules reach it through the
|
|
7
|
+
* config chain), and `reaction` reads its expression the moment it is created — at module scope
|
|
8
|
+
* that is `boothStore` still in its temporal dead zone. Bound at init, every store exists;
|
|
9
|
+
* `fireImmediately` buckets whatever a remount finds already loaded, and the reaction tracks
|
|
10
|
+
* changes from there exactly as before. One binding serves both map modes — the MapLibre path
|
|
11
|
+
* resolves outdoor-PoI booths through this index too.
|
|
12
|
+
* @returns Disposes the reaction.
|
|
13
|
+
*/
|
|
14
|
+
export declare function bindBoothHitTest(): () => void;
|
|
2
15
|
export default function getBoothIdFromClientXy(clientX: number, clientY: number): Booth | null;
|
|
3
16
|
//# sourceMappingURL=booth-by-xy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Box as
|
|
1
|
+
import{Box as y,Polygon as v,Rect as I}from"@expofp/geometry";import{reaction as z}from"mobx";import{getTrianglesFromFpPaths as X}from"../../data/svg";import{boothStore as b,layersStore as d}from"../../store";import{LayersMode as A}from"../../store/LayerStore";import B from"../../tools/logger";let x=[],g=new Map,u=null,w=[];function F(){const l=b.booths.filter(t=>t.visible&&t.rect&&t.rect.size.width>0&&t.rect.size.height>0);if(x=[],u=null,g=new Map,w=l.filter(t=>t.paths),!l.length)return;const c=[];let r=1/0,n=1/0,f=-1/0,e=-1/0;for(const t of l){const a=t.rotate?new I(t.rect.center,t.rect.size,t.rotate):null,o=a?a.bounds:t.rect;c.push({booth:t,shape:a??t.rect,bounds:o}),o.min.x<r&&(r=o.min.x),o.min.y<n&&(n=o.min.y),o.max.x>f&&(f=o.max.x),o.max.y>e&&(e=o.max.y)}const i=y.fromMinMax({x:r,y:n},{x:f,y:e}),s=2,m=Math.ceil(i.size.width/s),h=Math.ceil(i.size.height/s);for(let t=0;t<s;t++)for(let a=0;a<s;a++){const o=i.min.x+t*m,M=i.min.y+a*h,p=new y(o,M,m,h);x.push(p),g.set(p,c.filter(P=>p.intersects(P.bounds)))}B.log("hover segmentToHitAreas",g)}export function bindBoothHitTest(){return z(()=>[b.booths,d.loaded,d.visible],()=>F(),{fireImmediately:!0})}function H(l,c){const r={x:l,y:c};let n;u&&u.containsPoint(r)?n=u:n=x.find(e=>e.containsPoint(r)),n&&(u=n);const f=n?g.get(n):void 0;if(f){const e=f.filter(i=>i.booth.visible&&i.shape.containsPoint(r));if(e.length)return(e.length>1?e.sort((s,m)=>s.booth.rect.area-m.booth.rect.area)[0]:e[0]).booth}for(const e of w)if(e.visible)for(const i of e.paths)for(const s of X(i.index,d.mode!==A.Default?e.layer.name:"")){const m=s.map(h=>({x:h[0],y:h[1]}));if(v.fromConvexRing(m).containsPoint(r))return e}return null}export default function S(l,c){return H(l,c)}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A camera-movement signal for the parts of the SDK that are not components.
|
|
3
|
+
*
|
|
4
|
+
* `MapCamera` notifies from the controls' own update event — the same signal the imperative
|
|
5
|
+
* renderer published as `navigation:change` — and the kiosk setup screen listens to know the
|
|
6
|
+
* operator has framed a new home view. Deliberately minimal: no payload, because every consumer
|
|
7
|
+
* reads what it needs (`mapCamera().state()`) at the moment it cares.
|
|
8
|
+
* @param listener - Called after every camera movement while subscribed.
|
|
9
|
+
* @returns An unsubscribe function.
|
|
10
|
+
*/
|
|
11
|
+
export declare function onCameraMoved(listener: () => void): () => void;
|
|
12
|
+
/**
|
|
13
|
+
* Reports that the camera moved. Called by the mounted map; nothing else should.
|
|
14
|
+
*/
|
|
15
|
+
export declare function notifyCameraMoved(): void;
|
|
16
|
+
//# sourceMappingURL=camera-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function onCameraMoved(e){return o.add(e),()=>o.delete(e)}export function notifyCameraMoved(){for(const e of o)e()}const o=new Set;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type CameraAPI, type CameraState } from '@expofp/renderer';
|
|
2
|
+
/** The plan's camera, as the parts of the SDK that live outside React reach it. */
|
|
3
|
+
export interface MapCameraHandle {
|
|
4
|
+
/** Moving the camera. */
|
|
5
|
+
readonly api: CameraAPI;
|
|
6
|
+
/** Reading where it is, at the moment of asking. */
|
|
7
|
+
state(): CameraState;
|
|
8
|
+
}
|
|
9
|
+
/** What the mounted map holds, and hands the handle below a live view of. */
|
|
10
|
+
export interface MountedCamera {
|
|
11
|
+
/** The camera commands, as the renderer last handed them over. */
|
|
12
|
+
api: CameraAPI;
|
|
13
|
+
/** The camera reader, likewise. */
|
|
14
|
+
state: () => CameraState;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Wraps the map's live camera in a handle whose identity never changes.
|
|
18
|
+
*
|
|
19
|
+
* The renderer's hooks return a fresh object on every render, deliberately — it memoizes nothing, so
|
|
20
|
+
* that the cost of a settled identity is paid by whoever knows how often they render. That is this
|
|
21
|
+
* map: it reads them through a ref, and hands out this one object for the life of the mount, so
|
|
22
|
+
* nothing outside React ever holds a stale command.
|
|
23
|
+
* @param camera - A live view of what the mounted map holds.
|
|
24
|
+
* @returns The handle to publish.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createMapCamera(camera: {
|
|
27
|
+
readonly current: MountedCamera;
|
|
28
|
+
}): MapCameraHandle;
|
|
29
|
+
/**
|
|
30
|
+
* Publishes the plan's camera, for as long as the map is on screen.
|
|
31
|
+
*
|
|
32
|
+
* The same inversion {@link setMarkerResolver} performs, and for the same reason: the renderer's
|
|
33
|
+
* camera is reached through hooks, which only resolve inside a component mounted under
|
|
34
|
+
* `<Renderer>` — and that is deliberate, since it is what stops anything touching the camera
|
|
35
|
+
* before the canvas exists. The SDK's own methods, the kiosk store and the route store are not
|
|
36
|
+
* components and cannot hold a hook, so `MapCamera` hands the camera out here once it is safe.
|
|
37
|
+
* @param camera - The camera; omitted to unpublish it as the map unmounts.
|
|
38
|
+
*/
|
|
39
|
+
export declare function setMapCamera(camera?: MapCameraHandle): void;
|
|
40
|
+
/**
|
|
41
|
+
* The plan's camera, if the map is on screen.
|
|
42
|
+
*
|
|
43
|
+
* Absent before the canvas has mounted, and in MapLibre mode, where the map is unmounted entirely
|
|
44
|
+
* and the imperative renderer drives the embed instead.
|
|
45
|
+
* @returns The camera, or `undefined`.
|
|
46
|
+
*/
|
|
47
|
+
export declare function mapCamera(): MapCameraHandle | undefined;
|
|
48
|
+
//# sourceMappingURL=camera.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function createMapCamera(t){return{get api(){return t.current.api},state:()=>t.current.state()}}export function setMapCamera(t){e=t}export function mapCamera(){return e}let e;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type LayerDef } from '@expofp/renderer';
|
|
2
|
-
|
|
3
|
-
export default function configAll(rendererService: RendererService): Promise<{
|
|
2
|
+
export default function configAll(): Promise<{
|
|
4
3
|
layers: LayerDef[];
|
|
5
4
|
cleanup: () => void;
|
|
6
5
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createLayerDef as
|
|
1
|
+
import{createLayerDef as e}from"../../../../engine/defs";import n from"../../../../store";import{isPathwayLayer as E}from"../../../../utils/is-pathway-layer";import{WF_CURRENT_POSITION_LAYER_NAME as d,WF_LINES_ANIMATED_LAYER_NAME as N,WF_LINES_LAYER_NAME as u,WF_POINTS_LAYER_NAME as R,WF_TRAIL_LAYER_NAME as h}from"../../../../wayfinding/layers";import{createTrafficLayers as M}from"../../traffic/trafficLayers";import{configBoothsBadges as w}from"./config-booth-badge";import I from"./config-load-layer";import{MARKER_LAYER_NAME as P}from"./config-markers";export default function S(){const{defaultLayer:a}=n.layerStore;let{layers:o}=n.layerStore;if(a){const r=[...o],s=o.indexOf(a);r.splice(s,1),o=[a,...r]}const L=o.filter(r=>!r.rootParent).map(r=>I(r));return Promise.all(L).then(r=>{const s=e(R,[],{dim:0}),l=e(u,[],{dim:0}),c=e(P,[]),y=e(h,[],{dim:0}),p=e(N,[],{dim:0}),_=e(d,[],{dim:0}),i=[],f=[];for(const t of r.flat())E(t.name)?(t.dim=0,f.push(t)):i.push(t);const{layer:m,cleanup:A}=w("root",n.boothStore.booths);return{layers:[...i,...m?[m]:[],...f,...M(),c,y,l,p,s,_],cleanup:A}})}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { LayerDef } from '@expofp/renderer';
|
|
2
|
-
import { PathInfo } from '../../../../renderer/engine-core/types';
|
|
3
2
|
import { Layer } from '../../../../store/LayerStore';
|
|
4
|
-
import { ShapeBgDef } from '../../../../types/drawing.types';
|
|
3
|
+
import { PathInfo, ShapeBgDef } from '../../../../types/drawing.types';
|
|
5
4
|
export declare const BG_LAYER_NAME = "bg";
|
|
6
5
|
export declare const FG_LAYER_NAME = "fg";
|
|
7
6
|
export default function configBg(layer: Layer): Promise<LayerDef>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{select as
|
|
1
|
+
import{select as m}from"d3-selection";import{getLayerSvg as p,gtePathByIndex as g}from"../../../../data/svg";import{meshToShapeDef as h,rectToShapeDef as c}from"../../../../engine/defs";import u from"../../../../store";import{LayersMode as x}from"../../../../store/LayerStore";export const BG_LAYER_NAME="bg",FG_LAYER_NAME="fg";export default async function b(e){let r=[],l=[];const n=[],a=m(p(e)).select(`[data-layer="${e.name}"]`),f=a.selectAll(":scope > *:not([data-tagname='efp-booth']):not(g[data-is-editable='false']) path, :scope > path").nodes(),d=a.selectAll(":scope g[data-layer] > g[data-is-editable='false'] path, :scope > g[data-is-editable='false'] path, :scope > path[data-tagname='ptext']").nodes(),i=u.layerStore.mode!==x.Default?e.rootParent?.name||e.name:"";for(const t of f){const s=+t.getAttribute("data-index");let o;t.tagName==="path"&&s!==-1?o=buildPathDef({color:t.style.fill,index:s},i):t.tagName==="rect"&&(o=c(t)),o&&r.push(o)}for(const t of d){const s=+t.getAttribute("data-index");let o;t.tagName==="path"&&s!==-1?o=buildPathDef({color:t.style.fill,index:s},i):t.tagName==="rect"&&(o=c(t)),o&&l.push(o)}return n.push({name:BG_LAYER_NAME,children:r}),n.push({name:FG_LAYER_NAME,children:l}),Promise.resolve({name:e.name,children:n.filter(t=>t.children.length)})}export function buildPathDef(e,r){if(e.index===-1||Number.isNaN(e.index))return;(!e.color||e.color==="none")&&(e.color="transparent");const l=parseInt(e.index.toString()),n=g(l,r),a=h(n,e.color);return a.unblinking=e.unblinking,a}
|
|
@@ -1,12 +1,79 @@
|
|
|
1
1
|
import { type LayerDef, type ShapeDef, type TextDef } from '@expofp/renderer';
|
|
2
|
-
import { type RendererService } from '../../../../renderer';
|
|
3
2
|
import { type Booth, RegularBooth } from '../../../../store/BoothStore';
|
|
4
|
-
export declare function createBoothBadge(
|
|
3
|
+
export declare function createBoothBadge(booth: RegularBooth): {
|
|
5
4
|
bg: ShapeDef;
|
|
6
5
|
text: TextDef;
|
|
7
6
|
dispose: () => void;
|
|
8
7
|
};
|
|
9
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Lays a booth's badge out as the plan zooms: the background rect, and the booth number inside it.
|
|
10
|
+
*
|
|
11
|
+
* One instance per badge, holding the geometry the layout reads — where the badge is anchored inside
|
|
12
|
+
* the booth's footprint, its size at scale 1, and the scale beyond which it would spill out of the
|
|
13
|
+
* polygon. The defs' `onScale` closures delegate to the two methods here.
|
|
14
|
+
*/
|
|
15
|
+
export declare class BoothBadgeDrawer {
|
|
16
|
+
private readonly placement;
|
|
17
|
+
/**
|
|
18
|
+
* @param placement - Everything the layout reads: the booth, where the badge is anchored, its size
|
|
19
|
+
* at scale 1, the booth's rotation, the scale it may not exceed, the pixel ratio its font is
|
|
20
|
+
* authored against, and the two defs it writes.
|
|
21
|
+
*/
|
|
22
|
+
constructor(placement: BadgePlacement);
|
|
23
|
+
/**
|
|
24
|
+
* Lays the background rect out for a new pixel size.
|
|
25
|
+
* @param pixelSize - Plan units per device pixel.
|
|
26
|
+
* @returns The background unless its floor is switched off — the rect is kept current either
|
|
27
|
+
* way, so showing it draws the right size straight away.
|
|
28
|
+
*/
|
|
29
|
+
layOutBg(pixelSize: number): ShapeDef[];
|
|
30
|
+
/**
|
|
31
|
+
* Lays the booth number out for a new pixel size. The font stops growing at the scale the badge
|
|
32
|
+
* itself stops growing, so the text never outgrows the rect around it.
|
|
33
|
+
* @param pixelSize - Plan units per device pixel.
|
|
34
|
+
* @returns The text unless its floor is switched off, as for the background.
|
|
35
|
+
*/
|
|
36
|
+
layOutText(pixelSize: number): TextDef[];
|
|
37
|
+
/**
|
|
38
|
+
* The badge's rect at a pixel size, clamped to what fits inside the booth.
|
|
39
|
+
*
|
|
40
|
+
* The anchor is in world space and names the badge's top-left corner, so the center is
|
|
41
|
+
* `anchor + R(rotation) · (w/2, h/2)`; the renderer then rotates the badge about that center, which
|
|
42
|
+
* lands it where the anchor says.
|
|
43
|
+
* @param pixelSize - Plan units per device pixel.
|
|
44
|
+
* @returns The rect.
|
|
45
|
+
*/
|
|
46
|
+
private rectScaled;
|
|
47
|
+
/**
|
|
48
|
+
* Whether the badge's floor is switched off, which hides it wherever it sits.
|
|
49
|
+
* @returns Whether to hide it.
|
|
50
|
+
*/
|
|
51
|
+
private isHidden;
|
|
52
|
+
}
|
|
53
|
+
/** Everything {@link BoothBadgeDrawer} needs to place a badge, gathered once when it is built. */
|
|
54
|
+
export interface BadgePlacement {
|
|
55
|
+
/** The booth the badge belongs to; its layer's visibility decides whether the badge is drawn. */
|
|
56
|
+
booth: RegularBooth;
|
|
57
|
+
/** Where the badge's top-left corner sits on the plan, before rotation. */
|
|
58
|
+
anchor: {
|
|
59
|
+
x: number;
|
|
60
|
+
y: number;
|
|
61
|
+
};
|
|
62
|
+
/** The badge's width and height at scale 1. */
|
|
63
|
+
source: {
|
|
64
|
+
x: number;
|
|
65
|
+
y: number;
|
|
66
|
+
};
|
|
67
|
+
/** The booth's rotation, in radians. */
|
|
68
|
+
rotation: number;
|
|
69
|
+
/** The largest scale that still fits inside the booth's footprint. */
|
|
70
|
+
maxScale: number;
|
|
71
|
+
/** The badge's background rect. */
|
|
72
|
+
bg: ShapeDef;
|
|
73
|
+
/** The booth number drawn inside it. */
|
|
74
|
+
text: TextDef;
|
|
75
|
+
}
|
|
76
|
+
export declare function configBoothsBadges(layerName: string, booths: Booth[]): {
|
|
10
77
|
layer: LayerDef | null;
|
|
11
78
|
cleanup: () => void;
|
|
12
79
|
};
|