@expofp/floorplan 3.11.3 → 3.11.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/{Button-CWw2sVgd.js → Button-cW8nOyr7.js} +5 -5
- package/dist/browser/{CookieConsent-FeVIJ_Yk.js → CookieConsent-DgvNz2-R.js} +7 -7
- package/dist/browser/{Debug-CAteGKZH.js → Debug-B8Gsofcy.js} +7 -7
- package/dist/browser/{Demo-aIUISr3G.js → Demo-BRgYJptn.js} +13 -11
- package/dist/browser/{Free-C98X4LrP.js → Free-DL8lBmJq.js} +13 -11
- package/dist/browser/{Gallery-CWjQm4hj.js → Gallery-BD-RLpir.js} +9 -9
- package/dist/browser/{GpsLoader-BTo2dZds.js → GpsLoader-D-re9FTf.js} +9 -9
- package/dist/browser/{KioskStore-CX5ThkIn.js → KioskStore-BJNx5Tcr.js} +3 -3
- package/dist/browser/{MaplibreAdapter-CRcB_u5I.js → MaplibreAdapter-1NqFsZM1.js} +9 -9
- package/dist/browser/{ModalContainer-VauFMnIc.js → ModalContainer-CW1LLEm-.js} +10 -10
- package/dist/browser/{PermissionNotice-BSPFngCq.js → PermissionNotice-Dsa-GqT0.js} +6 -6
- package/dist/browser/{SetKioskMode-Dbd6T5-O.js → SetKioskMode-O-H81LeY.js} +8 -8
- package/dist/browser/{ShowKiosk-OuxwmOwy.js → ShowKiosk-DmHjLF6Y.js} +10 -10
- package/dist/browser/{TouchHand-Br-CwL-F.js → TouchHand-_BQthb0c.js} +4 -4
- package/dist/browser/{ViewerMenuPanel-DVByBv9z.js → ViewerMenuPanel-qLf3WyOW.js} +9 -9
- package/dist/browser/{add-debug-secret-listener-BR1iPsb9.js → add-debug-secret-listener-DLshy8sj.js} +1 -1
- package/dist/browser/{boolean-editor-DSTgDbmc.js → boolean-editor-VUiLykpJ.js} +9 -9
- package/dist/browser/{bootIntercom-CUea_DL-.js → bootIntercom-Btfot_oL.js} +2 -2
- package/dist/browser/{booth-by-xy-Bek_OU5N.js → booth-by-xy-D6AXHHgL.js} +6 -6
- package/dist/browser/{browser-BZR5FRBQ.js → browser-DZs48Iz5.js} +2 -2
- package/dist/browser/bundle.json +61 -61
- package/dist/browser/{classnames-KtBHe88l.js → classnames-Bs6fEBfQ.js} +2 -2
- package/dist/browser/{client-DJnYedJs.js → client-6N6uSJl-.js} +4 -4
- package/dist/browser/{components-CUaqFBY3.js → components-ufUbszNV.js} +631 -631
- package/dist/browser/{debug-overlay-2tBkBbRy.js → debug-overlay-DGcVO6ry.js} +10 -10
- package/dist/browser/{debug-ui-CP2nQv-1.js → debug-ui-A_u8KPY6.js} +6 -6
- package/dist/browser/{dist-CpM1INPI.js → dist-BHBdwYIm.js} +5 -5
- package/dist/browser/{dist-DlM1oWid.js → dist-CjYIs-s0.js} +6 -6
- package/dist/browser/{dist-DP9l2rrk.js → dist-D2K_bZQY.js} +3 -3
- package/dist/browser/{efp-debug-init-BH2nDNO5.js → efp-debug-init-CkR453Xy.js} +2 -2
- package/dist/browser/{enum-editor-B4p1ELb6.js → enum-editor-NNRkgdUY.js} +11 -11
- package/dist/browser/{es5-DdpBCK3Q.js → es5-DCFcfU2R.js} +2 -2
- package/dist/browser/{event-not-found-CWE-0MrG.js → event-not-found-D8HQ23ap.js} +1 -1
- package/dist/browser/{exports-B7NIvrUp.js → exports-O8XjKvRg.js} +1 -1
- package/dist/browser/{favicon-BOK9avcY.js → favicon-BEHe-EI3.js} +1 -1
- package/dist/browser/{fetch-retry.umd-CipkNsrX.js → fetch-retry.umd-C3YzA_e2.js} +2 -2
- package/dist/browser/{flex-B2wy4xSD.js → flex-DNr-nnJO.js} +5 -5
- package/dist/browser/{floorplan.loader-D3kQCb99.js → floorplan.loader-BgmlRCqt.js} +11 -11
- package/dist/browser/{floorplan.ready-B4mDkXRm.js → floorplan.ready-C1Ko5LQv.js} +12 -12
- package/dist/browser/{fuse-CqO1cqnn.js → fuse-DFivryfG.js} +2 -2
- package/dist/browser/{i18n-B_V1H0HQ.js → i18n-CtD4ktVP.js} +4 -4
- package/dist/browser/index.js +12 -12
- package/dist/browser/{index.module-D2erzLUJ.js → index.module-BFGHcA-z.js} +4 -4
- package/dist/browser/{is-webview-DGL-PdzN.js → is-webview-BGMbVT8P.js} +1 -1
- package/dist/browser/{jsx-runtime-uuMRT9NQ.js → jsx-runtime-DKfaEd8M.js} +2 -2
- package/dist/browser/{lib-osu8gY8B.js → lib-DN41dFq1.js} +4 -4
- package/dist/browser/{loadImage-m-4ixNVH.js → loadImage-zScPwiNs.js} +4 -4
- package/dist/browser/{logDeviceInfo-DRtA-dL6.js → logDeviceInfo-DwILNgjk.js} +9 -9
- package/dist/browser/{main-Bjk86dRG.js → main-DiIqziFi.js} +1 -1
- package/dist/browser/{mobx-CRjt7H7o.js → mobx-BVz1d1Yv.js} +4 -4
- package/dist/browser/{particles.min-CSGhGGgI.js → particles.min-DLmw35iw.js} +2 -2
- package/dist/browser/{prop-types-C3o0VrkV.js → prop-types-BrRP9I8R.js} +2 -2
- package/dist/browser/{react-dom-CKp4cqT6.js → react-dom-Cp3zL50s.js} +3 -3
- package/dist/browser/{react-B7FM7U0J.js → react-u7dD7nVM.js} +2 -2
- package/dist/browser/{reset-all-settings-CE8btvu_.js → reset-all-settings-C84qUm-F.js} +7 -7
- package/dist/browser/{rolldown-runtime-CyrAgb5O.js → rolldown-runtime-Dum_XGHV.js} +1 -1
- package/dist/browser/{settings-ZQMSNgyk.js → settings-Dj2P9R9l.js} +2 -2
- package/dist/browser/{settings-item-DYAlR7v3.js → settings-item-CTWwUwhU.js} +6 -6
- package/dist/browser/{store-Cufsn9Pk.js → store-gsgcyMD-.js} +266 -224
- package/dist/browser/{string-editor-NN8vdXTM.js → string-editor-zaEv64Fb.js} +7 -7
- package/dist/browser/{theme-7hRavfue.js → theme-kppufad8.js} +8 -8
- package/dist/browser/{ui-F8v9_gqS.js → ui-z6pxxEMr.js} +8 -8
- package/dist/browser/{useRenderTarget-CzK9YRAN.js → useRenderTarget-CBsqqPXa.js} +4 -4
- package/dist/esm/components/BaseFilterModal.js +1 -1
- package/dist/esm/components/Demo.js +1 -1
- package/dist/esm/components/Event.js +1 -1
- package/dist/esm/components/Exhibitor.js +1 -1
- package/dist/esm/components/Free.js +1 -1
- package/dist/esm/components/Layout.js +1 -1
- package/dist/esm/components/MobileToggleButtonContainer.d.ts +3 -0
- package/dist/esm/components/MobileToggleButtonContainer.js +1 -0
- package/dist/esm/components/MultiSelectGroupsContainer.d.ts +5 -0
- package/dist/esm/components/MultiSelectGroupsContainer.js +1 -0
- package/dist/esm/components/Schedule.js +1 -1
- package/dist/esm/components/SessionsFiltersModal.js +1 -1
- package/dist/esm/components/ShowMoreButtonContainer.d.ts +5 -0
- package/dist/esm/components/ShowMoreButtonContainer.js +1 -0
- package/dist/esm/components/SpeakersFiltersModal.js +1 -1
- package/dist/esm/components/index.d.ts +6 -5
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/store/UIState.d.ts +2 -2
- package/dist/esm/store/UIState.js +1 -1
- package/dist/esm/ui/MobileToggleButton/MobileToggleButton.d.ts +12 -0
- package/dist/esm/ui/MobileToggleButton/MobileToggleButton.js +1 -0
- package/dist/esm/ui/MobileToggleButton/index.d.ts +3 -0
- package/dist/esm/ui/MobileToggleButton/index.js +1 -0
- package/dist/esm/{components → ui/MultiSelectGroups}/MultiSelectGroups.d.ts +9 -5
- package/dist/esm/ui/MultiSelectGroups/MultiSelectGroups.js +1 -0
- package/dist/esm/ui/MultiSelectGroups/index.d.ts +3 -0
- package/dist/esm/ui/MultiSelectGroups/index.js +1 -0
- package/dist/esm/ui/ShowMoreButton/ShowMoreButton.d.ts +11 -0
- package/dist/esm/ui/ShowMoreButton/ShowMoreButton.js +1 -0
- package/dist/esm/ui/ShowMoreButton/index.d.ts +3 -0
- package/dist/esm/ui/ShowMoreButton/index.js +1 -0
- package/dist/esm/utils/lazy-qr-code.d.ts +3 -1
- package/dist/esm/wayfinding/createWayfinding.d.ts +1 -1
- package/dist/esm/wayfinding/createWayfinding.js +1 -1
- package/dist/esm/wayfinding/renderer/createWayfindingRenderer.d.ts +5 -6
- package/dist/esm/wayfinding/renderer/createWayfindingRenderer.js +1 -1
- package/dist/esm/wayfinding/renderer/iconManager.d.ts +18 -12
- package/dist/esm/wayfinding/renderer/iconManager.js +1 -1
- package/dist/esm/wayfinding/renderer/index.d.ts +1 -1
- package/dist/esm/wayfinding/renderer/layerManager.d.ts +6 -7
- package/dist/esm/wayfinding/renderer/layerManager.js +1 -1
- package/dist/esm/{renderer/engine-core/animation.d.ts → wayfinding/renderer/lineAnimation.d.ts} +2 -2
- package/dist/esm/wayfinding/renderer/routeLineManager.d.ts +2 -3
- package/dist/esm/wayfinding/renderer/routeLineManager.js +1 -1
- package/dist/esm/wayfinding/renderer/trailManager.d.ts +11 -8
- package/dist/esm/wayfinding/renderer/trailManager.js +1 -1
- package/dist/esm/wayfinding/renderer/types.d.ts +53 -86
- package/dist/esm/wayfinding/runtime/routeRenderData.js +1 -1
- package/package.json +4 -4
- package/dist/esm/components/LargeMessage.d.ts +0 -4
- package/dist/esm/components/LargeMessage.js +0 -1
- package/dist/esm/components/MobileToggleButton.d.ts +0 -5
- package/dist/esm/components/MobileToggleButton.js +0 -1
- package/dist/esm/components/MultiSelectGroups.js +0 -1
- package/dist/esm/components/ShowMoreButton.d.ts +0 -9
- package/dist/esm/components/ShowMoreButton.js +0 -1
- /package/dist/esm/{renderer/engine-core/animation.js → wayfinding/renderer/lineAnimation.js} +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { LayerDef } from '@expofp/renderer';
|
|
2
|
-
import type {
|
|
2
|
+
import type { RendererPort } from './types';
|
|
3
3
|
/**
|
|
4
4
|
* Manages scene layer resolution, caching, dirty-tracking, and flush.
|
|
5
5
|
*
|
|
6
|
-
* Layers are resolved by name from `
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* Layers are resolved by name from `rendererPort.getLayers()` and cached. `touchLayer`
|
|
7
|
+
* marks a layer as dirty; `flush` commits all dirty layers via `rendererPort.update`
|
|
8
|
+
* in a single call.
|
|
9
9
|
*/
|
|
10
10
|
export interface LayerManager {
|
|
11
11
|
/** Layers modified since the last {@link flush}. */
|
|
@@ -20,8 +20,7 @@ export interface LayerManager {
|
|
|
20
20
|
destroy(): void;
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
|
-
* Create a {@link LayerManager} bound to the given
|
|
24
|
-
* Throws if `rendererService.scene` is null.
|
|
23
|
+
* Create a {@link LayerManager} bound to the given {@link RendererPort}.
|
|
25
24
|
*/
|
|
26
|
-
export declare function createLayerManager(
|
|
25
|
+
export declare function createLayerManager(rendererPort: RendererPort): LayerManager;
|
|
27
26
|
//# sourceMappingURL=layerManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export function createLayerManager(
|
|
1
|
+
export function createLayerManager(s){const c=s.getLayers(),a=new Map,r=new Map;return{touchedLayers:r,resolveLayer(e){const t=a.get(e);if(t)return t;const n=c.find(o=>o.name===e);if(!n)throw new Error(`renderer: layer "${e}" not found in scene`);return a.set(e,n),n},touchLayer(e){const t=this.resolveLayer(e);return r.set(e,t),t},flush(){if(r.size!==0){for(const e of r.values())e.children=[...e.children];s.update(...r.values()),r.clear()}},destroy(){r.clear(),a.clear()}}}
|
package/dist/esm/{renderer/engine-core/animation.d.ts → wayfinding/renderer/lineAnimation.d.ts}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { LineDef } from '@expofp/renderer';
|
|
1
|
+
import type { LineDef } from '@expofp/renderer';
|
|
2
2
|
export interface AnimationHandle {
|
|
3
3
|
stop: () => void;
|
|
4
4
|
getProgress: () => number;
|
|
5
5
|
}
|
|
6
6
|
export declare function animateLineSegments(lineSegments: LineDef[], callback: (segment: LineDef, segmentIndex: number, reset: boolean) => void, getScale: () => number, startProgress?: number): AnimationHandle | undefined;
|
|
7
|
-
//# sourceMappingURL=
|
|
7
|
+
//# sourceMappingURL=lineAnimation.d.ts.map
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { type RendererService } from '../../renderer';
|
|
2
1
|
import type { LayerManager } from './layerManager';
|
|
3
|
-
import type { RouteColors } from './types';
|
|
2
|
+
import type { RendererPort, RouteColors } from './types';
|
|
4
3
|
/**
|
|
5
4
|
* Manages static route lines (passed + remaining) and an animated overlay
|
|
6
5
|
* on the remaining segment.
|
|
@@ -38,5 +37,5 @@ export interface RouteLineManager {
|
|
|
38
37
|
* Create a {@link RouteLineManager} that renders `LineDef` segments
|
|
39
38
|
* into layers managed by the given {@link LayerManager}.
|
|
40
39
|
*/
|
|
41
|
-
export declare function createRouteLineManager(layerManager: LayerManager,
|
|
40
|
+
export declare function createRouteLineManager(layerManager: LayerManager, colors: RouteColors, rendererPort: RendererPort): RouteLineManager;
|
|
42
41
|
//# sourceMappingURL=routeLineManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{animateLineSegments as D}from"./lineAnimation";export function createRouteLineManager(a,c,s){let e=null,n=null,i=null;return{setRouteLines(d,f,m){const L=a.touchLayer(m.linesLayer),l=a.touchLayer(m.animatedLinesLayer);n=L,i=l;const h=m.resetAnimation??!0;let u=0;e&&(h||(u=e.getProgress()),e.stop(),e=null);const p=d.map(t=>s.createLineDef(t,c.passed)),r=f.map(t=>s.createLineDef(t,c.remaining));if(L.children=[...p,...r],!r.length){l.children=[];return}const o=r.map(t=>({...t,color:c.active}));e=D(o,(t,y,g)=>{l.children=g?[]:[...o.slice(0,y),t],s.update(l)},()=>s.getScale(),u)??null},clearLines(){e&&(e.stop(),e=null),n&&(n.children=[],a.touchedLayers.set(n.name,n)),i&&(i.children=[],a.touchedLayers.set(i.name,i))},destroy(){this.clearLines()}}}
|
|
@@ -1,27 +1,30 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type Point2Like } from '@expofp/geometry';
|
|
2
|
+
import type { RenderableDef } from '@expofp/renderer';
|
|
2
3
|
import type { LayerManager } from './layerManager';
|
|
3
|
-
import type {
|
|
4
|
+
import type { RendererPort } from './types';
|
|
4
5
|
/**
|
|
5
6
|
* Manages named trails of evenly-spaced dots between two points.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
8
|
+
* On camera zoom the app glue calls `applyScale` so dots are recalculated and
|
|
9
|
+
* visual spacing stays constant.
|
|
9
10
|
*/
|
|
10
11
|
export interface TrailManager {
|
|
11
12
|
/**
|
|
12
13
|
* Place, update, or remove a named trail.
|
|
13
|
-
* Pass `from/to = null` to remove the trail
|
|
14
|
+
* Pass `from/to = null` to remove the trail.
|
|
14
15
|
*/
|
|
15
|
-
setTrail(name: string, from:
|
|
16
|
+
setTrail(name: string, from: Point2Like | null, to: Point2Like | null, options?: {
|
|
16
17
|
readonly canvas: HTMLCanvasElement;
|
|
17
18
|
readonly layer: string;
|
|
18
19
|
}): void;
|
|
19
|
-
/**
|
|
20
|
+
/** Redraw all trails for `scale`; returns changed layer defs. */
|
|
21
|
+
applyScale(scale: number): RenderableDef[];
|
|
22
|
+
/** Remove all trails. */
|
|
20
23
|
destroy(): void;
|
|
21
24
|
}
|
|
22
25
|
/**
|
|
23
26
|
* Create a {@link TrailManager} that renders dot trails into layers
|
|
24
27
|
* managed by the given {@link LayerManager}.
|
|
25
28
|
*/
|
|
26
|
-
export declare function createTrailManager(layerManager: LayerManager,
|
|
29
|
+
export declare function createTrailManager(layerManager: LayerManager, rendererPort: RendererPort): TrailManager;
|
|
27
30
|
//# sourceMappingURL=trailManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Rect as w}from"@expofp/geometry";import{computeTrailPoints as d}from"../core";const m=40;export function createTrailManager(c,l){const o=new Map;function f(e){if(!e.dotDefs.length)return;const t=c.touchLayer(e.layerName),r=new Set(e.dotDefs);t.children=t.children.filter(a=>!r.has(a)),e.dotDefs=[]}function i(e,t){const r=c.touchLayer(e.layerName),a=m*t,n=d(e.from,e.to,a),s=e.canvas,y=n.map(h=>l.createImageDef(s,new w({x:h.x,y:h.y},{x:s.width*t,y:s.height*t})));f(e),r.children.push(...y),e.dotDefs=y}function u(e){const t=o.get(e);t&&(f(t),o.delete(e))}return{setTrail(e,t,r,a){if(t===null||r===null){u(e);return}if(!a)throw new Error(`renderer: setTrail("${e}") requires options when from/to are non-null`);const n=o.get(e);if(n){if(n.canvas!==a.canvas||n.layerName!==a.layer)throw new Error(`renderer: trail "${e}" cannot change canvas or layer after first call`);n.from=t,n.to=r,i(n,l.getScale());return}const s={from:t,to:r,canvas:a.canvas,layerName:a.layer,dotDefs:[]};o.set(e,s),i(s,l.getScale())},applyScale(e){const t=new Set;for(const r of o.values())i(r,e),t.add(c.touchLayer(r.layerName));return[...t]},destroy(){for(const e of[...o.keys()])u(e)}}}
|
|
@@ -1,12 +1,30 @@
|
|
|
1
|
+
import type { Point2Like, Rect } from '@expofp/geometry';
|
|
2
|
+
import type { ImageDef, ImageSource, LayerDef, LineDef, RenderableDef } from '@expofp/renderer';
|
|
1
3
|
/**
|
|
2
|
-
* renderer
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Knows nothing about wayfinding domain (source/destination/transition/kiosk).
|
|
4
|
+
* The renderer this layer talks to, injected so it stays free of a concrete
|
|
5
|
+
* renderer. Typed only against `@expofp/renderer` / `@expofp/geometry` so it
|
|
6
|
+
* carries no dependency on `src/renderer`.
|
|
6
7
|
*/
|
|
7
|
-
export interface
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
export interface RendererPort {
|
|
9
|
+
createImageDef(source: ImageSource, bounds: Rect, options?: {
|
|
10
|
+
hidden?: boolean;
|
|
11
|
+
dim?: boolean;
|
|
12
|
+
interactive?: boolean;
|
|
13
|
+
origin?: [number, number];
|
|
14
|
+
}): ImageDef;
|
|
15
|
+
createLineDef(line: {
|
|
16
|
+
p0: Point2Like;
|
|
17
|
+
p1: Point2Like;
|
|
18
|
+
}, color?: string, width?: number): LineDef;
|
|
19
|
+
getRotation(newAngle: number, currentRotation: number): number | undefined;
|
|
20
|
+
/** Convert a geometry rect to the renderer's bounds rect (`ImageDef['bounds']`). */
|
|
21
|
+
rectToRenderer(rect: Rect): ImageDef['bounds'];
|
|
22
|
+
/** Current camera point-scale. */
|
|
23
|
+
getScale(): number;
|
|
24
|
+
/** Scene root-layer children, used to resolve wf layers by name. */
|
|
25
|
+
getLayers(): LayerDef[];
|
|
26
|
+
/** Commit changed defs/layers to the renderer. */
|
|
27
|
+
update(...defs: RenderableDef[]): void;
|
|
10
28
|
}
|
|
11
29
|
export interface RouteColors {
|
|
12
30
|
readonly passed: string;
|
|
@@ -56,107 +74,56 @@ export interface WayfindingRendererConfig {
|
|
|
56
74
|
/**
|
|
57
75
|
* WayfindingRenderer — generic ImageDef/LineDef renderer for wayfinding visuals.
|
|
58
76
|
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* to `RendererService`. The caller MUST call `flush()` after a batch of
|
|
63
|
-
* mutations to commit them. This lets the caller group many changes into
|
|
64
|
-
* one render frame.
|
|
65
|
-
*
|
|
66
|
-
* Exceptions: animation tick + camera-scale handlers update the renderer
|
|
67
|
-
* directly because they fire asynchronously, outside any caller batch.
|
|
77
|
+
* Mutators (`setIcon`/`clearIcons`/`setTrail`/`setRouteLines`/`clearRoute`) only
|
|
78
|
+
* mutate scene state; call `flush()` to commit a batch. The route animation tick
|
|
79
|
+
* updates the renderer directly, outside any batch.
|
|
68
80
|
*/
|
|
69
81
|
export interface WayfindingRenderer {
|
|
70
82
|
/**
|
|
71
|
-
* Place or update an icon by `name
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
* First call with a (name, key) pair creates an ImageDef in `config.layer`,
|
|
75
|
-
* registers a scale handler (and a roll handler if `cardinalSnap`), and
|
|
76
|
-
* stores the icon. Subsequent calls mutate the existing ImageDef in place
|
|
77
|
-
* (bounds, hidden, dim, onClick, source).
|
|
78
|
-
*
|
|
79
|
-
* Pass `config: null` to hide that icon (ImageDef stays alive for reuse).
|
|
80
|
-
*
|
|
81
|
-
* `config.layer` MUST stay stable for the same (name, key) — changing it
|
|
82
|
-
* after first call throws.
|
|
83
|
-
*
|
|
84
|
-
* **Buffered**: call `flush()` to commit.
|
|
83
|
+
* Place or update an icon by `(name, key)`. First call creates it in
|
|
84
|
+
* `config.layer`; later calls mutate in place. `config: null` hides it.
|
|
85
|
+
* `config.layer` must stay stable for a `(name, key)`. Buffered — `flush()` to commit.
|
|
85
86
|
*/
|
|
86
87
|
setIcon(name: string, config: IconConfig | null, key?: string | number): void;
|
|
87
|
-
/**
|
|
88
|
-
* Hide every icon that shares one of the given `names`. ImageDefs stay
|
|
89
|
-
* alive for reuse on next `setIcon`.
|
|
90
|
-
*
|
|
91
|
-
* **Buffered**: call `flush()` to commit.
|
|
92
|
-
*/
|
|
88
|
+
/** Hide every icon sharing one of `names` (kept alive for reuse). Buffered. */
|
|
93
89
|
clearIcons(names: string | readonly string[]): void;
|
|
94
90
|
/**
|
|
95
|
-
* Place or update a named trail
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
* calls with the same `name` reuse its scale handler and replace its dots.
|
|
99
|
-
*
|
|
100
|
-
* Dot interval is fixed (visual constant). Renderer regenerates dots
|
|
101
|
-
* whenever the camera scale changes — count adapts so spacing stays
|
|
102
|
-
* constant.
|
|
103
|
-
*
|
|
104
|
-
* `options` is required when `from`/`to` are non-null. Pass both as `null`
|
|
105
|
-
* to clear that trail (no `options` needed).
|
|
106
|
-
*
|
|
107
|
-
* `options.canvas` and `options.layer` MUST stay stable for a given
|
|
108
|
-
* `name` — changing them after first call throws.
|
|
109
|
-
*
|
|
110
|
-
* **Buffered**: call `flush()` to commit.
|
|
91
|
+
* Place or update a named dot trail between two points; `from/to = null`
|
|
92
|
+
* clears it. `options` required when non-null; `canvas`/`layer` must stay
|
|
93
|
+
* stable. Buffered — `flush()` to commit.
|
|
111
94
|
*/
|
|
112
|
-
setTrail(name: string, from:
|
|
95
|
+
setTrail(name: string, from: Point2Like | null, to: Point2Like | null, options?: {
|
|
113
96
|
readonly canvas: HTMLCanvasElement;
|
|
114
97
|
readonly layer: string;
|
|
115
98
|
}): void;
|
|
116
99
|
/**
|
|
117
|
-
* Replace
|
|
118
|
-
* animation
|
|
119
|
-
*
|
|
120
|
-
* **Buffered**: call `flush()` to commit. The animation tick itself
|
|
121
|
-
* updates the renderer directly (it runs async outside caller batches).
|
|
100
|
+
* Replace static route lines (passed + remaining) and (re)start the remaining
|
|
101
|
+
* animation. Buffered — `flush()` to commit.
|
|
122
102
|
*/
|
|
123
103
|
setRouteLines(passed: readonly {
|
|
124
|
-
readonly p0:
|
|
125
|
-
readonly p1:
|
|
104
|
+
readonly p0: Point2Like;
|
|
105
|
+
readonly p1: Point2Like;
|
|
126
106
|
}[], remaining: readonly {
|
|
127
|
-
readonly p0:
|
|
128
|
-
readonly p1:
|
|
107
|
+
readonly p0: Point2Like;
|
|
108
|
+
readonly p1: Point2Like;
|
|
129
109
|
}[], options: {
|
|
130
|
-
/**
|
|
131
|
-
* TODO(future): remove. renderer will create this layer
|
|
132
|
-
* dynamically inside `createWayfindingRenderer` — caller will no
|
|
133
|
-
* longer pass layer names per call.
|
|
134
|
-
*/
|
|
135
110
|
readonly linesLayer: string;
|
|
136
|
-
/**
|
|
137
|
-
* TODO(future): remove. Same as above — animated lines layer will
|
|
138
|
-
* be created in `createWayfindingRenderer`.
|
|
139
|
-
*/
|
|
140
111
|
readonly animatedLinesLayer: string;
|
|
141
112
|
readonly resetAnimation?: boolean;
|
|
142
113
|
}): void;
|
|
143
|
-
/**
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
114
|
+
/** Recompute icon/trail bounds for `scale`; returns changed defs to render. */
|
|
115
|
+
applyScale(scale: number): RenderableDef[];
|
|
116
|
+
/** Apply camera roll to cardinal-snap icons; returns changed defs to render. */
|
|
117
|
+
applyRoll(cameraAngle: number): RenderableDef[];
|
|
118
|
+
/** Fire the hit clickable icon's `onClick` from already-picked defs. */
|
|
119
|
+
handleClick(defs: readonly RenderableDef[]): void;
|
|
120
|
+
/** Whether a clickable icon is under the already-picked defs (for cursor). */
|
|
121
|
+
handleHover(defs: readonly RenderableDef[]): boolean;
|
|
122
|
+
/** Clear route lines, drop trails, hide icons. Buffered — `flush()` to commit. */
|
|
149
123
|
clearRoute(): void;
|
|
150
|
-
/**
|
|
151
|
-
* Commit all buffered mutations to `RendererService`. Pushes every layer
|
|
152
|
-
* touched since the last `flush()` (or since construction).
|
|
153
|
-
*/
|
|
124
|
+
/** Commit buffered mutations to the renderer (via the injected port). */
|
|
154
125
|
flush(): void;
|
|
155
|
-
/**
|
|
156
|
-
* Full teardown: `clearRoute()` + remove DOM listeners + unregister all
|
|
157
|
-
* scale and roll handlers. Does NOT call `flush()` — the renderer is
|
|
158
|
-
* going away, so committing pending changes is the caller's choice.
|
|
159
|
-
*/
|
|
126
|
+
/** Full teardown (managers cleared). Does NOT flush. */
|
|
160
127
|
destroy(): void;
|
|
161
128
|
}
|
|
162
129
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getRouteLength as
|
|
1
|
+
import{getRouteLength as u,normalizeRouteDirection as m,splitRouteByPoint as g}from"../core";export function computeRouteRenderData({routeLines:s,currentRouteLayer:r,from:a,to:c,snap:t}){const i=m(s.filter(n=>!n.virtual),a,c),o=n=>r===null?n:n.filter(p=>p.p0.layer===r);if(!t?.snapped)return{passed:[],remaining:o(i),distance:u(i)};const{passed:d,remaining:e}=g(i,t.snappedPoint),l=e!==i&&e.length>0?[{...e[0],p0:t.snappedPoint},...e.slice(1)]:e;return{passed:o(d),remaining:o(l),distance:t.distance}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expofp/floorplan",
|
|
3
|
-
"version": "3.11.
|
|
3
|
+
"version": "3.11.5",
|
|
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/debug": "3.11.
|
|
76
|
-
"@expofp/geometry": "3.11.
|
|
77
|
-
"@expofp/resolve": "3.11.
|
|
75
|
+
"@expofp/debug": "3.11.5",
|
|
76
|
+
"@expofp/geometry": "3.11.5",
|
|
77
|
+
"@expofp/resolve": "3.11.5"
|
|
78
78
|
},
|
|
79
79
|
"devDependencies": {
|
|
80
80
|
"@babel/plugin-proposal-decorators": "^8.0.2",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{jsx as o}from"react/jsx-runtime";import"./LargeMessage.scss";import{autorun as r,reaction as a}from"mobx";import{useLocalStore as l,useObserver as n}from"mobx-react-lite";import{uiState as i}from"../store";import m from"../tools/logger";import{useInit as u}from"../utils/mobx";const g=1e3;export default function f(){const e=l(()=>({shouldShow:!1,visible:!1,transitioning:!1}));return u(()=>{let t;a(()=>i.largeMessageLastSet,()=>{i.largeMessageLastSet&&(window.clearTimeout(t),m.log("Showing large message"),e.shouldShow=!0,t=window.setTimeout(()=>{e.shouldShow=!1},g))},{fireImmediately:!0});let s;r(()=>{window.clearTimeout(s),e.shouldShow?(e.transitioning=!0,s=window.setTimeout(()=>{e.visible=!0},1)):(e.visible=!1,s=window.setTimeout(()=>{e.transitioning=!1},1e3))})}),n(()=>i.largeMessage&&e.transitioning?o("div",{className:"large-message"+(e.visible?" -visible":""),children:o("div",{className:"large-message__text",children:i.largeMessage})}):null)}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{jsx as s,jsxs as u}from"react/jsx-runtime";import"./MobileToggleButton.scss";import m from"classnames";import{useObserver as p}from"mobx-react-lite";import{useCallback as c}from"react";import{LANGUAGE_TYPE as S}from"../constants";import t,{searchStore as b}from"../store";import{t as i}from"../utils/i18n";function f(){const o=c(()=>{t.uiState.isOverlayOpen&&t.uiState.overlaySize==="full"?t.uiState.desiredOverlaySize="small":b.openOverlayWithoutInputFocus()},[]);return p(()=>{const a=t.uiState.list.type==="route-planner";if(!(t.uiState.overlayPosition==="bottom"&&(a||!t.uiState.details&&!t.uiState.menu&&t.uiState.list.type!==S&&t.uiState.list.type!=="bookmarks"&&t.uiState.list.type!=="sessions")))return null;const e=!t.uiState.isOverlayOpen||t.uiState.overlaySize!=="full",l=e?i("List"):i("Map"),r=e?"is-list":"is-map",n=e?"icon-list":"icon-map";return u("button",{className:m("efp-mobile-toggle-button",{"is-with-banner":t.uiState.isBannerVisible},r),onClick:o,type:"button","aria-label":e?i("List"):i("Map"),children:[s("i",{className:n}),s("span",{className:"efp-mobile-toggle-button__text",children:l})]})})}export default f;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Fragment as F,jsx as i,jsxs as d}from"react/jsx-runtime";import"./MultiSelectGroups.scss";import v from"classnames";import{observer as I}from"mobx-react-lite";import M,{useCallback as h,useMemo as P,useState as q}from"react";import{t as N}from"../utils/i18n";import B from"./ShowMoreButton";const R=M.memo(({item:r,isSelected:s,variant:m,showCount:_,count:p,onClick:c,customRenderer:a})=>a?i(F,{children:a(r,s)}):d("button",{type:"button",className:v("multi-select-groups__item",{"is-selected":s,"is-disabled":r.disabled,[`multi-select-groups__item--${m}`]:m}),onClick:()=>!r.disabled&&c(r.id),disabled:r.disabled,"aria-pressed":s,children:[i("div",{className:"multi-select-groups__item-name",children:r.name}),_&&p>0&&i("span",{className:"multi-select-groups__item-count",children:p})]},r.id)),T=({groups:r=[],selectedIds:s=[],showItemCounts:m=!0,showGroupActions:_=!0,variant:p="default",maxItemsVisible:c=20,itemCountProvider:a,customItemRenderer:S,onChange:u})=>{const[G,x]=q(new Set),y=h(e=>{const t=s.includes(e)?s.filter(l=>l!==e):[...s,e];u(t)},[s,u]),A=h(e=>{const l=e.items.filter(n=>n.id&&!n.disabled).map(n=>n.id).filter(n=>!s.includes(n));l.length!==0&&u([...s,...l])},[s,u]),C=h(e=>{const t=new Set(e.items.map(n=>n.id)),l=s.filter(n=>!t.has(n));u(l)},[s,u]),k=h(e=>{x(t=>{const l=new Set(t);return l.has(e)?l.delete(e):l.add(e),l})},[]),j=e=>e.count!==void 0?e.count:e.countProvider?e.countProvider():a?a(e):0,f=P(()=>new Set(s),[s]);return!Array.isArray(r)||!r.length?null:i("div",{className:"multi-select-groups",children:i("div",{className:"multi-select-groups__list",children:r.map(e=>{if(!e?.groupName||!Array.isArray(e.items))return null;const t=e.items.filter(o=>o.id),l=t.filter(o=>f.has(o.id)),n=l.length===t.length&&t.length>0,E=l.length>0&&!n,g=G.has(e.groupName),b=g||t.length<=c?t:t.slice(0,c),w=t.length-b.length>0?t.slice(c).filter(o=>f.has(o.id)).length:0;return d("div",{className:v("multi-select-groups__group",{"multi-select-groups__group--full-width":e.fullWidth},e.customGroupClass),children:[d("div",{className:"multi-select-groups__group-header",children:[i("div",{className:"multi-select-groups__group-title",children:e.groupName}),_&&e.showGroupActions!==!1&&d("div",{className:"multi-select-groups__group-actions",children:[!n&&i("button",{type:"button",className:"multi-select-groups__action-btn",onClick:()=>A(e),children:N("Select all")}),(E||n)&&i("button",{type:"button",className:"multi-select-groups__action-btn",onClick:()=>C(e),children:N("Clear all")})]})]}),i("div",{className:"multi-select-groups__group-items",children:b.map(o=>i(R,{item:o,isSelected:f.has(o.id),variant:p,showCount:m,count:j(o),onClick:y,customRenderer:S},o.id))}),t.length>c&&i(B,{className:"multi-select-groups__show-more",expanded:g,onClick:()=>k(e.groupName),suffix:!g&&w>0&&d("span",{className:"multi-select-groups__show-more-badge",children:[w," ",N("selected")]})})]},e.groupName)})})})};export default I(T);
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import './ShowMoreButton.scss';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
interface ShowMoreButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'aria-expanded' | 'type'> {
|
|
4
|
-
expanded: boolean;
|
|
5
|
-
suffix?: React.ReactNode;
|
|
6
|
-
}
|
|
7
|
-
declare function ShowMoreButton({ expanded, className, suffix, ...props }: ShowMoreButtonProps): React.JSX.Element;
|
|
8
|
-
export default ShowMoreButton;
|
|
9
|
-
//# sourceMappingURL=ShowMoreButton.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{jsx as s,jsxs as n}from"react/jsx-runtime";import"./ShowMoreButton.scss";import m from"classnames";import{t}from"../utils/i18n";function i({expanded:o,className:r,suffix:e,...a}){return n("button",{...a,type:"button",className:m("show-more-button",{"is-expanded":o},r),"aria-expanded":o,children:[s("i",{className:"icon-chevron-down","aria-hidden":"true"}),s("span",{className:"show-more-button__label",children:o?t("Show less"):t("Show more")}),e]})}export default i;
|
/package/dist/esm/{renderer/engine-core/animation.js → wayfinding/renderer/lineAnimation.js}
RENAMED
|
File without changes
|