@eyeon/map 2.0.1 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -1
- package/dist/assets/MapViewer.css +1 -1
- package/dist/assets/index.css +1 -1
- package/dist/chunks/MapViewer.js +1988 -358
- package/dist/chunks/MapViewer.js.map +1 -1
- package/dist/chunks/graph-tools.js +202 -109
- package/dist/chunks/graph-tools.js.map +1 -1
- package/dist/chunks/stacking.js +1426 -0
- package/dist/chunks/stacking.js.map +1 -0
- package/dist/core/filletPolygon.d.ts +10 -0
- package/dist/core/filletPolygon.d.ts.map +1 -0
- package/dist/core/geometry/index.d.ts +41 -4
- package/dist/core/geometry/index.d.ts.map +1 -1
- package/dist/core/hostChrome.d.ts +20 -0
- package/dist/core/hostChrome.d.ts.map +1 -0
- package/dist/core/import/index.d.ts +52 -3
- package/dist/core/import/index.d.ts.map +1 -1
- package/dist/core/import/svgStyle.d.ts +21 -0
- package/dist/core/import/svgStyle.d.ts.map +1 -0
- package/dist/core/import/svgTransform.d.ts +49 -0
- package/dist/core/import/svgTransform.d.ts.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +89 -279
- package/dist/core/index.js.map +1 -1
- package/dist/core/layerStyles.d.ts +44 -0
- package/dist/core/layerStyles.d.ts.map +1 -0
- package/dist/core/mediaUrl.d.ts +3 -0
- package/dist/core/mediaUrl.d.ts.map +1 -0
- package/dist/core/outdoorDecoration.d.ts +16 -0
- package/dist/core/outdoorDecoration.d.ts.map +1 -0
- package/dist/core/publish/index.d.ts +8 -2
- package/dist/core/publish/index.d.ts.map +1 -1
- package/dist/core/routing/graph-tools.d.ts +28 -2
- package/dist/core/routing/graph-tools.d.ts.map +1 -1
- package/dist/core/routing/pathfinding.d.ts.map +1 -1
- package/dist/core/stacking.d.ts +61 -0
- package/dist/core/stacking.d.ts.map +1 -0
- package/dist/core/types.d.ts +31 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/editor/MapEditor.d.ts +28 -16
- package/dist/editor/MapEditor.d.ts.map +1 -1
- package/dist/editor/canvas/EditorCanvas.d.ts +56 -6
- package/dist/editor/canvas/EditorCanvas.d.ts.map +1 -1
- package/dist/editor/canvas/OutdoorSvgUnderlay.d.ts +7 -0
- package/dist/editor/canvas/OutdoorSvgUnderlay.d.ts.map +1 -0
- package/dist/editor/canvas/coords.d.ts +51 -0
- package/dist/editor/canvas/coords.d.ts.map +1 -0
- package/dist/editor/canvas/editorFill.d.ts +10 -0
- package/dist/editor/canvas/editorFill.d.ts.map +1 -0
- package/dist/editor/canvas/editorHover.d.ts +14 -0
- package/dist/editor/canvas/editorHover.d.ts.map +1 -0
- package/dist/editor/canvas/underlayHint.d.ts +5 -0
- package/dist/editor/canvas/underlayHint.d.ts.map +1 -0
- package/dist/editor/connectorAssignments.d.ts +64 -0
- package/dist/editor/connectorAssignments.d.ts.map +1 -0
- package/dist/editor/draftOps.d.ts +22 -0
- package/dist/editor/draftOps.d.ts.map +1 -0
- package/dist/editor/editorSectionReturn.d.ts +12 -0
- package/dist/editor/editorSectionReturn.d.ts.map +1 -0
- package/dist/editor/floorsListReturn.d.ts +5 -0
- package/dist/editor/floorsListReturn.d.ts.map +1 -0
- package/dist/editor/geometryEdit.d.ts +54 -0
- package/dist/editor/geometryEdit.d.ts.map +1 -0
- package/dist/editor/hexColor.d.ts +4 -0
- package/dist/editor/hexColor.d.ts.map +1 -0
- package/dist/editor/history.d.ts +31 -0
- package/dist/editor/history.d.ts.map +1 -0
- package/dist/editor/index.css +1497 -143
- package/dist/editor/index.d.ts +9 -3
- package/dist/editor/index.d.ts.map +1 -1
- package/dist/editor/index.js +6377 -601
- package/dist/editor/index.js.map +1 -1
- package/dist/editor/labelText.d.ts +15 -0
- package/dist/editor/labelText.d.ts.map +1 -0
- package/dist/editor/labels.d.ts +5 -0
- package/dist/editor/labels.d.ts.map +1 -0
- package/dist/editor/panels/ConnectorAssign.d.ts +12 -0
- package/dist/editor/panels/ConnectorAssign.d.ts.map +1 -0
- package/dist/editor/panels/FloorsPanel.d.ts +64 -0
- package/dist/editor/panels/FloorsPanel.d.ts.map +1 -0
- package/dist/editor/panels/ImportReviewPanel.d.ts +22 -0
- package/dist/editor/panels/ImportReviewPanel.d.ts.map +1 -0
- package/dist/editor/panels/Inspector.d.ts +6 -3
- package/dist/editor/panels/Inspector.d.ts.map +1 -1
- package/dist/editor/panels/LeftRail.d.ts +26 -11
- package/dist/editor/panels/LeftRail.d.ts.map +1 -1
- package/dist/editor/panels/PreviewOverlay.d.ts +11 -2
- package/dist/editor/panels/PreviewOverlay.d.ts.map +1 -1
- package/dist/editor/pathRings.d.ts +79 -0
- package/dist/editor/pathRings.d.ts.map +1 -0
- package/dist/editor/portalSurface.d.ts +37 -0
- package/dist/editor/portalSurface.d.ts.map +1 -0
- package/dist/editor/previewDocument.d.ts +9 -0
- package/dist/editor/previewDocument.d.ts.map +1 -0
- package/dist/editor/railAssignments.d.ts +22 -0
- package/dist/editor/railAssignments.d.ts.map +1 -0
- package/dist/editor/routeStubs.d.ts +103 -0
- package/dist/editor/routeStubs.d.ts.map +1 -0
- package/dist/editor/snapPoint.d.ts +5 -0
- package/dist/editor/snapPoint.d.ts.map +1 -0
- package/dist/editor/splitJoin.d.ts +78 -0
- package/dist/editor/splitJoin.d.ts.map +1 -0
- package/dist/editor/tools.d.ts +49 -0
- package/dist/editor/tools.d.ts.map +1 -0
- package/dist/test-maps/shops-at-south-town/BASE - Shops At South Town.ai +26703 -28
- package/dist/test-maps/shops-at-south-town/LF - Shops At South Town.ai +4459 -0
- package/dist/test-maps/shops-at-south-town/SVG/BASE - Shops At South Town.svg +567 -0
- package/dist/test-maps/shops-at-south-town/SVG/LF - Shops At South Town.svg +238 -0
- package/dist/test-maps/shops-at-south-town/SVG/UF - Shops At South Town.svg +276 -0
- package/dist/test-maps/shops-at-south-town/UF - Shops At South Town.ai +4131 -1
- package/dist/ui/ModernSelect.d.ts +14 -0
- package/dist/ui/ModernSelect.d.ts.map +1 -0
- package/dist/ui/selectSearch.d.ts +9 -0
- package/dist/ui/selectSearch.d.ts.map +1 -0
- package/dist/viewer/MapViewer.d.ts +14 -3
- package/dist/viewer/MapViewer.d.ts.map +1 -1
- package/dist/viewer/camera.d.ts +37 -0
- package/dist/viewer/camera.d.ts.map +1 -0
- package/dist/viewer/components/CameraRig.d.ts +18 -0
- package/dist/viewer/components/CameraRig.d.ts.map +1 -0
- package/dist/viewer/components/LevelMeshes.d.ts +6 -1
- package/dist/viewer/components/LevelMeshes.d.ts.map +1 -1
- package/dist/viewer/components/MapScene.d.ts +6 -1
- package/dist/viewer/components/MapScene.d.ts.map +1 -1
- package/dist/viewer/components/SvgVectorLayer.d.ts +18 -0
- package/dist/viewer/components/SvgVectorLayer.d.ts.map +1 -0
- package/dist/viewer/index.css +236 -37
- package/dist/viewer/index.d.ts +4 -0
- package/dist/viewer/index.d.ts.map +1 -1
- package/dist/viewer/index.js +9 -4
- package/dist/viewer/index.js.map +1 -1
- package/dist/viewer/ui/MapControls.d.ts +22 -0
- package/dist/viewer/ui/MapControls.d.ts.map +1 -0
- package/dist/viewer/ui/RuntimeChrome.d.ts +3 -3
- package/dist/viewer/ui/RuntimeChrome.d.ts.map +1 -1
- package/package.json +7 -3
- package/dist/chunks/pathfinding.js +0 -343
- package/dist/chunks/pathfinding.js.map +0 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { ModernSelectOption } from './selectSearch';
|
|
3
|
+
export type { ModernSelectOption } from './selectSearch';
|
|
4
|
+
export { filterModernSelectOptions } from './selectSearch';
|
|
5
|
+
export declare function ModernSelect({ value, options, onChange, disabled, placeholder, searchable, ariaLabel, }: {
|
|
6
|
+
value: string;
|
|
7
|
+
options: ModernSelectOption[];
|
|
8
|
+
onChange: (value: string) => void;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
placeholder?: string;
|
|
11
|
+
searchable?: boolean;
|
|
12
|
+
ariaLabel?: string;
|
|
13
|
+
}): React.JSX.Element;
|
|
14
|
+
//# sourceMappingURL=ModernSelect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModernSelect.d.ts","sourceRoot":"","sources":["../../src/ui/ModernSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAEjF,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAgB,EAChB,WAAuB,EACvB,UAAU,EACV,SAAS,GACV,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,qBA4KA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface ModernSelectOption {
|
|
2
|
+
value: string;
|
|
3
|
+
label: string;
|
|
4
|
+
}
|
|
5
|
+
/** Show a search field once a list is long enough to scan by eye. */
|
|
6
|
+
export declare const MODERN_SELECT_SEARCH_AFTER = 8;
|
|
7
|
+
export declare function filterModernSelectOptions(options: ModernSelectOption[], query: string): ModernSelectOption[];
|
|
8
|
+
export declare function modernSelectIsSearchable(optionCount: number, searchable?: boolean): boolean;
|
|
9
|
+
//# sourceMappingURL=selectSearch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectSearch.d.ts","sourceRoot":"","sources":["../../src/ui/selectSearch.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qEAAqE;AACrE,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,kBAAkB,EAAE,EAC7B,KAAK,EAAE,MAAM,GACZ,kBAAkB,EAAE,CAItB;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,OAAO,GACnB,OAAO,CAET"}
|
|
@@ -1,18 +1,29 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
import { PublishedDocument, ThemeDefaults } from '../core';
|
|
2
|
+
import { MapViewerHost, PublishedDocument, ThemeDefaults } from '../core';
|
|
3
3
|
export interface MapViewerProps {
|
|
4
4
|
/** Published (or draft) document. If omitted, fetched from webApiURI. */
|
|
5
5
|
document?: PublishedDocument | null;
|
|
6
6
|
webApiURI?: string;
|
|
7
7
|
/** Prefer fetching /v1/map/document */
|
|
8
8
|
centerId?: number;
|
|
9
|
-
|
|
9
|
+
/** Public / preview / kiosk surface. Never includes Map options (editor rail). */
|
|
10
|
+
host?: MapViewerHost;
|
|
10
11
|
kioskId?: number | null;
|
|
11
12
|
selectedRetailerId?: number | null;
|
|
12
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Media proxy base, appended with the encoded SVG URL (v1 `IMAGE_PROXY_URL`
|
|
15
|
+
* contract, e.g. `/eyeon-portal/media?url=`). Needed wherever the outdoor
|
|
16
|
+
* SVG origin sends no CORS headers.
|
|
17
|
+
*/
|
|
18
|
+
imageProxyUrl?: string | null;
|
|
13
19
|
themeOverrides?: Partial<ThemeDefaults>;
|
|
14
20
|
onExtractedAmenities?: (codes: string[]) => void;
|
|
15
21
|
onSelectShape?: (shapeId: number) => void;
|
|
22
|
+
/** Controlled floor when embedded (e.g. PORTAL default). */
|
|
23
|
+
activeLevelId?: number | null;
|
|
24
|
+
onActiveLevelChange?: (levelId: number) => void;
|
|
25
|
+
/** Click a store/amenity to route. Off when PORTAL is assigning. Default true. */
|
|
26
|
+
routeOnSelect?: boolean;
|
|
16
27
|
createRouteRef?: React.MutableRefObject<{
|
|
17
28
|
createRouteToStore: (retailerId: number) => void;
|
|
18
29
|
createRouteToAmenity: (amenityCode: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapViewer.d.ts","sourceRoot":"","sources":["../../src/viewer/MapViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"MapViewer.d.ts","sourceRoot":"","sources":["../../src/viewer/MapViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAC9E,OAAO,KAAK,EAEV,aAAa,EAEb,iBAAiB,EACjB,aAAa,EACd,MAAM,SAAS,CAAC;AAajB,OAAO,cAAc,CAAC;AAEtB,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACxC,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACjD,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,kFAAkF;IAClF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC;QACtC,kBAAkB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;QACjD,oBAAoB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;QACpD,UAAU,EAAE,MAAM,IAAI,CAAC;KACxB,GAAG,IAAI,CAAC,CAAC;IACV,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAqBD,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,qBAqR9C;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { SceneBounds, Vec2 } from '../core';
|
|
2
|
+
/**
|
|
3
|
+
* Stored geometry is raw SVG user space, where Y grows downward. The scene
|
|
4
|
+
* mirrors Y once so the camera can keep a conventional `up = [0, 1, 0]`.
|
|
5
|
+
*
|
|
6
|
+
* Do not "fix" orientation by setting `up = [0, -1, 0]` instead: three.js
|
|
7
|
+
* derives the camera's right axis from `up × forward`, so a negative up also
|
|
8
|
+
* mirrors X and the map renders rotated 180° rather than flipped.
|
|
9
|
+
*/
|
|
10
|
+
export declare const SCENE_FLIP_SCALE: [number, number, number];
|
|
11
|
+
/** Stored SVG-space point → view space, matching `SCENE_FLIP_SCALE`. */
|
|
12
|
+
export declare function dataToViewPoint(point: Vec2): Vec2;
|
|
13
|
+
/** Stored SVG-space bounds → view space, for camera and controls placement. */
|
|
14
|
+
export declare function viewBoundsFromData(bounds: SceneBounds): SceneBounds;
|
|
15
|
+
/**
|
|
16
|
+
* Fit an orthographic camera so the map fills the canvas on the limiting
|
|
17
|
+
* axis (width or height) with no extra inset.
|
|
18
|
+
*/
|
|
19
|
+
export declare function fitOrthoZoom(viewWidth: number, viewHeight: number, worldWidth: number, worldHeight: number): number;
|
|
20
|
+
export declare function boundsExtent(bounds: SceneBounds): {
|
|
21
|
+
width: number;
|
|
22
|
+
height: number;
|
|
23
|
+
};
|
|
24
|
+
export declare const VIEWER_ZOOM_ANIM_MS = 240;
|
|
25
|
+
export declare function easeOutCubic(t: number): number;
|
|
26
|
+
export declare function lerp(a: number, b: number, t: number): number;
|
|
27
|
+
export declare function nextOrthoZoom(current: number, direction: 1 | -1, step: number, min: number, max: number): number;
|
|
28
|
+
export declare function orbitMouseButtons(is3d: boolean): {
|
|
29
|
+
LEFT: number;
|
|
30
|
+
MIDDLE: number;
|
|
31
|
+
RIGHT: number;
|
|
32
|
+
};
|
|
33
|
+
export declare function orbitTouches(is3d: boolean): {
|
|
34
|
+
ONE: number;
|
|
35
|
+
TWO: number;
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=camera.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../src/viewer/camera.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEjD;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAc,CAAC;AAErE,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAEjD;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAOnE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,MAAM,CAIR;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAKnF;AAED,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,EACjB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,MAAM,CAIR;AAUD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAKA;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAKxE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { OrbitControls } from 'three-stdlib';
|
|
3
|
+
import { SceneBounds, ThemeDefaults } from '../../core';
|
|
4
|
+
export interface MapCameraHandle {
|
|
5
|
+
zoomIn: () => void;
|
|
6
|
+
zoomOut: () => void;
|
|
7
|
+
reset: () => void;
|
|
8
|
+
}
|
|
9
|
+
export interface CameraRigProps {
|
|
10
|
+
/** View-space bounds — already Y-flipped by the scene, so up is +Y. */
|
|
11
|
+
bounds: SceneBounds;
|
|
12
|
+
theme: ThemeDefaults;
|
|
13
|
+
is3d: boolean;
|
|
14
|
+
controlsRef: React.RefObject<OrbitControls | null>;
|
|
15
|
+
cameraRef?: React.Ref<MapCameraHandle | null>;
|
|
16
|
+
}
|
|
17
|
+
export declare function CameraRig({ bounds, theme, is3d, controlsRef, cameraRef, }: CameraRigProps): null;
|
|
18
|
+
//# sourceMappingURL=CameraRig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CameraRig.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/CameraRig.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8D,MAAM,OAAO,CAAC;AAEnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAU7D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACnD,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CAC/C;AAED,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,KAAK,EACL,IAAI,EACJ,WAAW,EACX,SAAS,GACV,EAAE,cAAc,QAsIhB"}
|
|
@@ -6,6 +6,11 @@ export interface LevelMeshesProps {
|
|
|
6
6
|
is3d: boolean;
|
|
7
7
|
selectedRetailerId?: number | null;
|
|
8
8
|
onSelectShape?: (shapeId: number) => void;
|
|
9
|
+
/**
|
|
10
|
+
* When true (outdoor with live SVG), only interactive shapes are drawn —
|
|
11
|
+
* decoration comes from SvgVectorLayer.
|
|
12
|
+
*/
|
|
13
|
+
interactiveOnly?: boolean;
|
|
9
14
|
}
|
|
10
|
-
export declare function LevelMeshes({ level, theme, is3d, selectedRetailerId, onSelectShape, }: LevelMeshesProps): React.JSX.Element;
|
|
15
|
+
export declare function LevelMeshes({ level, theme, is3d, selectedRetailerId, onSelectShape, interactiveOnly, }: LevelMeshesProps): React.JSX.Element;
|
|
11
16
|
//# sourceMappingURL=LevelMeshes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LevelMeshes.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/LevelMeshes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"LevelMeshes.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/LevelMeshes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAa,MAAM,YAAY,CAAC;AA4C3E,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,IAAI,EACJ,kBAAkB,EAClB,aAAa,EACb,eAAuB,GACxB,EAAE,gBAAgB,qBAgIlB"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
import { PathResult, PublishedDocument, ThemeDefaults } from '../../core';
|
|
3
|
+
import { MapCameraHandle } from './CameraRig';
|
|
3
4
|
export interface MapSceneProps {
|
|
4
5
|
doc: PublishedDocument;
|
|
5
6
|
theme: ThemeDefaults;
|
|
6
7
|
activeLevelId: number | null;
|
|
7
8
|
route: PathResult | null;
|
|
8
9
|
selectedRetailerId?: number | null;
|
|
10
|
+
cameraRef?: React.Ref<MapCameraHandle | null>;
|
|
9
11
|
onSelectShape?: (shapeId: number, levelId: number) => void;
|
|
12
|
+
imageProxyUrl?: string | null;
|
|
13
|
+
/** Keep pointer events inside the map canvas host so header/footer stay clickable. */
|
|
14
|
+
eventSource?: React.RefObject<HTMLElement | null>;
|
|
10
15
|
}
|
|
11
|
-
export declare function MapScene({ doc, theme, activeLevelId, route, selectedRetailerId, onSelectShape, }: MapSceneProps): React.JSX.Element;
|
|
16
|
+
export declare function MapScene({ doc, theme, activeLevelId, route, selectedRetailerId, cameraRef, onSelectShape, imageProxyUrl, eventSource, }: MapSceneProps): React.JSX.Element;
|
|
12
17
|
//# sourceMappingURL=MapScene.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapScene.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/MapScene.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"MapScene.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/MapScene.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAI/C,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAU/E,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAa9D,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,iBAAiB,CAAC;IACvB,KAAK,EAAE,aAAa,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAC9C,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,sFAAsF;IACtF,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CACnD;AAED,wBAAgB,QAAQ,CAAC,EACvB,GAAG,EACH,KAAK,EACL,aAAa,EACb,KAAK,EACL,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,aAAa,EACb,WAAW,GACZ,EAAE,aAAa,qBAoKf"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { resolveFetchUrl } from '../../core';
|
|
3
|
+
export { resolveFetchUrl };
|
|
4
|
+
export interface SvgVectorLayerProps {
|
|
5
|
+
url: string;
|
|
6
|
+
/** sourceSvgId values held in cm_shapes — skip drawing these (DB owns them). */
|
|
7
|
+
suppressIds?: ReadonlySet<string>;
|
|
8
|
+
imageProxyUrl?: string | null;
|
|
9
|
+
is3d?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Live outdoor SVG as real vector geometry (not a raster texture).
|
|
13
|
+
* Applies house-style colors for reserved layer names; otherwise keeps
|
|
14
|
+
* Illustrator fills. Skips route-path* and interactive ids owned by the DB.
|
|
15
|
+
* Coordinates stay in SVG user space — `MapScene` flips the whole scene.
|
|
16
|
+
*/
|
|
17
|
+
export declare function SvgVectorLayer({ url, suppressIds, imageProxyUrl, is3d, }: SvgVectorLayerProps): React.JSX.Element | null;
|
|
18
|
+
//# sourceMappingURL=SvgVectorLayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SvgVectorLayer.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/SvgVectorLayer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAG5D,OAAO,EAML,eAAe,EAEhB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,CAAC;AA4B3B,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,gFAAgF;IAChF,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAWD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,WAAW,EACX,aAAa,EACb,IAAY,GACb,EAAE,mBAAmB,4BAqHrB"}
|
package/dist/viewer/index.css
CHANGED
|
@@ -4,15 +4,28 @@
|
|
|
4
4
|
height: 100%;
|
|
5
5
|
min-height: 320px;
|
|
6
6
|
overflow: hidden;
|
|
7
|
-
background: var(--map-bg, #
|
|
8
|
-
font
|
|
7
|
+
background: var(--map-bg, #FFFFFF);
|
|
8
|
+
/* Inherit the host application's font; hosts may override with the variable. */
|
|
9
|
+
font-family: var(--eyeon-map-font-family, inherit);
|
|
9
10
|
font-size: 13px;
|
|
10
11
|
color: #0f172a;
|
|
11
12
|
}
|
|
12
13
|
|
|
14
|
+
.eyeon-map-viewer button,
|
|
15
|
+
.eyeon-map-viewer input,
|
|
16
|
+
.eyeon-map-viewer select,
|
|
17
|
+
.eyeon-map-viewer textarea {
|
|
18
|
+
font-family: inherit;
|
|
19
|
+
}
|
|
20
|
+
|
|
13
21
|
.eyeon-map-viewer__canvas {
|
|
14
22
|
position: absolute;
|
|
15
23
|
inset: 0;
|
|
24
|
+
cursor: grab;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.eyeon-map-viewer__canvas:active {
|
|
28
|
+
cursor: grabbing;
|
|
16
29
|
}
|
|
17
30
|
|
|
18
31
|
.eyeon-map-viewer__loading,
|
|
@@ -29,7 +42,7 @@
|
|
|
29
42
|
z-index: 2;
|
|
30
43
|
top: 12px;
|
|
31
44
|
left: 12px;
|
|
32
|
-
width: min(320px, calc(100% -
|
|
45
|
+
width: min(320px, calc(100% - 124px));
|
|
33
46
|
display: flex;
|
|
34
47
|
flex-direction: column;
|
|
35
48
|
gap: 8px;
|
|
@@ -46,16 +59,20 @@
|
|
|
46
59
|
gap: 8px;
|
|
47
60
|
}
|
|
48
61
|
|
|
49
|
-
.eyeon-map-chrome__search-
|
|
50
|
-
|
|
51
|
-
|
|
62
|
+
.eyeon-map-chrome__search-input {
|
|
63
|
+
width: 100%;
|
|
64
|
+
box-sizing: border-box;
|
|
65
|
+
border: 1px solid #e2e8f0;
|
|
52
66
|
border-radius: 8px;
|
|
53
67
|
background: #fff;
|
|
54
68
|
box-shadow: 0 1px 4px rgba(15, 23, 42, 0.12);
|
|
55
|
-
padding:
|
|
56
|
-
font-size:
|
|
57
|
-
|
|
58
|
-
|
|
69
|
+
padding: 10px 12px;
|
|
70
|
+
font-size: 13px;
|
|
71
|
+
outline: none;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.eyeon-map-chrome__search-input:focus {
|
|
75
|
+
border-color: #0763b1;
|
|
59
76
|
}
|
|
60
77
|
|
|
61
78
|
.eyeon-map-chrome__amenities {
|
|
@@ -69,6 +86,7 @@
|
|
|
69
86
|
}
|
|
70
87
|
|
|
71
88
|
.eyeon-map-chrome__amenity {
|
|
89
|
+
position: relative;
|
|
72
90
|
width: 40px;
|
|
73
91
|
height: 40px;
|
|
74
92
|
border: 0;
|
|
@@ -103,13 +121,10 @@
|
|
|
103
121
|
}
|
|
104
122
|
}
|
|
105
123
|
|
|
106
|
-
.eyeon-map-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
padding: 8px 10px;
|
|
111
|
-
font-size: 13px;
|
|
112
|
-
margin-bottom: 8px;
|
|
124
|
+
.eyeon-map-chrome__empty {
|
|
125
|
+
color: #64748b;
|
|
126
|
+
font-size: 12px;
|
|
127
|
+
padding: 8px 4px;
|
|
113
128
|
}
|
|
114
129
|
|
|
115
130
|
.eyeon-map-chrome__group-title {
|
|
@@ -133,7 +148,8 @@
|
|
|
133
148
|
font-size: 13px;
|
|
134
149
|
}
|
|
135
150
|
|
|
136
|
-
.eyeon-map-chrome__item:hover
|
|
151
|
+
.eyeon-map-chrome__item:hover,
|
|
152
|
+
.eyeon-map-chrome__item.is-selected {
|
|
137
153
|
background: #f1f5f9;
|
|
138
154
|
}
|
|
139
155
|
|
|
@@ -168,11 +184,8 @@
|
|
|
168
184
|
color: #475569;
|
|
169
185
|
}
|
|
170
186
|
|
|
171
|
-
.eyeon-map-chrome__route select {
|
|
172
|
-
|
|
173
|
-
padding: 6px;
|
|
174
|
-
border-radius: 6px;
|
|
175
|
-
border: 1px solid #e2e8f0;
|
|
187
|
+
.eyeon-map-chrome__route .eyeon-map-select {
|
|
188
|
+
width: 100%;
|
|
176
189
|
}
|
|
177
190
|
|
|
178
191
|
.eyeon-map-chrome__accessible {
|
|
@@ -182,29 +195,215 @@
|
|
|
182
195
|
font-weight: 500 !important;
|
|
183
196
|
}
|
|
184
197
|
|
|
185
|
-
.eyeon-map-
|
|
198
|
+
.eyeon-map-controls {
|
|
186
199
|
position: absolute;
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
200
|
+
inset: 0;
|
|
201
|
+
z-index: 3;
|
|
202
|
+
pointer-events: none;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
.eyeon-map-controls__stack {
|
|
206
|
+
pointer-events: auto;
|
|
207
|
+
position: absolute;
|
|
208
|
+
top: 10px;
|
|
209
|
+
right: 10px;
|
|
191
210
|
display: flex;
|
|
192
|
-
|
|
193
|
-
|
|
211
|
+
flex-direction: column;
|
|
212
|
+
gap: 8px;
|
|
213
|
+
width: 94px;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.eyeon-map-controls__floors {
|
|
217
|
+
display: flex;
|
|
218
|
+
flex-direction: column;
|
|
194
219
|
}
|
|
195
220
|
|
|
196
|
-
.eyeon-map-
|
|
221
|
+
.eyeon-map-controls__floor,
|
|
222
|
+
.eyeon-map-controls__reset,
|
|
223
|
+
.eyeon-map-controls__zoom-btn {
|
|
224
|
+
color: #fff;
|
|
225
|
+
background-color: #0763b1;
|
|
197
226
|
border: 0;
|
|
227
|
+
font-size: 11px;
|
|
228
|
+
font-weight: 500;
|
|
229
|
+
letter-spacing: 0.02em;
|
|
230
|
+
cursor: pointer;
|
|
231
|
+
transition: background-color 200ms;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.eyeon-map-controls__floor,
|
|
235
|
+
.eyeon-map-controls__reset {
|
|
236
|
+
width: 100%;
|
|
237
|
+
min-height: 27px;
|
|
238
|
+
padding: 6px 10px;
|
|
239
|
+
text-align: center;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.eyeon-map-controls__floor:hover,
|
|
243
|
+
.eyeon-map-controls__reset:hover,
|
|
244
|
+
.eyeon-map-controls__zoom-btn:hover {
|
|
245
|
+
background-color: #054983;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.eyeon-map-controls__floor.is-active {
|
|
249
|
+
background-color: #054983;
|
|
250
|
+
cursor: default;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.eyeon-map-controls__floor:first-child {
|
|
254
|
+
border-radius: 5px 5px 0 0;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
.eyeon-map-controls__floor:last-child {
|
|
258
|
+
border-radius: 0 0 5px 5px;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
.eyeon-map-controls__floor:only-child {
|
|
262
|
+
border-radius: 5px;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
.eyeon-map-controls__floor:not(:first-child):not(:last-child) {
|
|
266
|
+
border-radius: 0;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
.eyeon-map-controls__reset {
|
|
270
|
+
border-radius: 5px;
|
|
271
|
+
text-transform: uppercase;
|
|
272
|
+
letter-spacing: 0.05em;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
.eyeon-map-controls__zoom {
|
|
276
|
+
display: flex;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
.eyeon-map-controls__zoom-btn {
|
|
280
|
+
flex: 1;
|
|
281
|
+
height: 27px;
|
|
282
|
+
display: flex;
|
|
283
|
+
align-items: center;
|
|
284
|
+
justify-content: center;
|
|
285
|
+
font-size: 14px;
|
|
286
|
+
font-weight: 400;
|
|
287
|
+
padding: 0;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
.eyeon-map-controls__zoom-btn:first-child {
|
|
291
|
+
border-radius: 5px 0 0 5px;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.eyeon-map-controls__zoom-btn:last-child {
|
|
295
|
+
border-radius: 0 5px 5px 0;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
.eyeon-map-select {
|
|
299
|
+
position: relative;
|
|
300
|
+
width: 100%;
|
|
301
|
+
min-width: 0;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
.eyeon-map-select__trigger {
|
|
305
|
+
display: flex;
|
|
306
|
+
align-items: center;
|
|
307
|
+
justify-content: space-between;
|
|
308
|
+
gap: 8px;
|
|
309
|
+
width: 100%;
|
|
310
|
+
min-height: 32px;
|
|
311
|
+
padding: 6px 8px;
|
|
312
|
+
border: 1px solid #e2e8f0;
|
|
313
|
+
border-radius: 6px;
|
|
314
|
+
background: #fff;
|
|
315
|
+
color: #0f172a;
|
|
316
|
+
font: inherit;
|
|
317
|
+
font-size: 12px;
|
|
318
|
+
font-weight: 500;
|
|
319
|
+
text-align: left;
|
|
320
|
+
cursor: pointer;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
.eyeon-map-select__trigger:disabled {
|
|
324
|
+
opacity: 0.55;
|
|
325
|
+
cursor: not-allowed;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
.eyeon-map-select__trigger:not(:disabled):hover {
|
|
329
|
+
border-color: #cbd5e1;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
.eyeon-map-select__trigger span {
|
|
333
|
+
overflow: hidden;
|
|
334
|
+
text-overflow: ellipsis;
|
|
335
|
+
white-space: nowrap;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
.eyeon-map-select__placeholder {
|
|
339
|
+
color: #94a3b8;
|
|
340
|
+
font-weight: 400;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
.eyeon-map-select__chevron {
|
|
344
|
+
flex-shrink: 0;
|
|
345
|
+
color: #64748b;
|
|
346
|
+
opacity: 0.7;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
.eyeon-map-select__trigger[aria-expanded='true'] .eyeon-map-select__chevron {
|
|
350
|
+
transform: rotate(180deg);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
.eyeon-map-select__menu {
|
|
354
|
+
position: fixed;
|
|
355
|
+
z-index: 2147483000;
|
|
356
|
+
display: flex;
|
|
357
|
+
flex-direction: column;
|
|
358
|
+
overflow: hidden;
|
|
359
|
+
border: 1px solid #e2e8f0;
|
|
198
360
|
border-radius: 8px;
|
|
199
361
|
background: #fff;
|
|
200
|
-
box-shadow: 0
|
|
201
|
-
|
|
362
|
+
box-shadow: 0 10px 28px rgba(15, 23, 42, 0.14);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
.eyeon-map-select__search {
|
|
366
|
+
flex-shrink: 0;
|
|
367
|
+
margin: 6px 6px 0;
|
|
368
|
+
padding: 6px 8px;
|
|
369
|
+
border: 1px solid #e2e8f0;
|
|
370
|
+
border-radius: 6px;
|
|
371
|
+
font: inherit;
|
|
202
372
|
font-size: 12px;
|
|
203
|
-
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
.eyeon-map-select__list {
|
|
376
|
+
margin: 0;
|
|
377
|
+
padding: 4px;
|
|
378
|
+
overflow: auto;
|
|
379
|
+
list-style: none;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
.eyeon-map-select__option {
|
|
383
|
+
display: block;
|
|
384
|
+
width: 100%;
|
|
385
|
+
padding: 7px 10px;
|
|
386
|
+
border: 0;
|
|
387
|
+
border-radius: 6px;
|
|
388
|
+
background: transparent;
|
|
389
|
+
color: #0f172a;
|
|
390
|
+
font: inherit;
|
|
391
|
+
font-size: 12px;
|
|
392
|
+
text-align: left;
|
|
204
393
|
cursor: pointer;
|
|
205
394
|
}
|
|
206
395
|
|
|
207
|
-
.eyeon-map-
|
|
208
|
-
background:
|
|
209
|
-
|
|
396
|
+
.eyeon-map-select__option:hover {
|
|
397
|
+
background: #f1f5f9;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
.eyeon-map-select__option.is-active {
|
|
401
|
+
background: #e0f2fe;
|
|
402
|
+
font-weight: 600;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
.eyeon-map-select__empty {
|
|
406
|
+
padding: 8px 10px;
|
|
407
|
+
color: #94a3b8;
|
|
408
|
+
font-size: 12px;
|
|
210
409
|
}
|
package/dist/viewer/index.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
export { MapViewer, type MapViewerProps } from './MapViewer';
|
|
2
|
+
export type { MapViewerHost, MapHost, ViewerChrome } from '../core';
|
|
3
|
+
export { mapSurface, viewerChrome, isMapViewerHost } from '../core';
|
|
2
4
|
export { MapScene } from './components/MapScene';
|
|
3
5
|
export { RuntimeChrome } from './ui/RuntimeChrome';
|
|
6
|
+
export { MapControls, type MapControlsProps, type MapControlLevel } from './ui/MapControls';
|
|
7
|
+
export type { MapCameraHandle } from './components/CameraRig';
|
|
4
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/viewer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/viewer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC5F,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,cAAc,CAAC"}
|
package/dist/viewer/index.js
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import { M as r, a as
|
|
1
|
+
import { M as r, a as s, b as o, R as p } from "../chunks/MapViewer.js";
|
|
2
|
+
import { O as i, V as t, al as M } from "../chunks/stacking.js";
|
|
2
3
|
export {
|
|
3
|
-
r as
|
|
4
|
-
|
|
5
|
-
o as
|
|
4
|
+
r as MapControls,
|
|
5
|
+
s as MapScene,
|
|
6
|
+
o as MapViewer,
|
|
7
|
+
p as RuntimeChrome,
|
|
8
|
+
i as isMapViewerHost,
|
|
9
|
+
t as mapSurface,
|
|
10
|
+
M as viewerChrome
|
|
6
11
|
};
|
|
7
12
|
//# sourceMappingURL=index.js.map
|
package/dist/viewer/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { StackLevel } from '../../core';
|
|
3
|
+
export interface MapControlLevel {
|
|
4
|
+
id: number;
|
|
5
|
+
name: string;
|
|
6
|
+
}
|
|
7
|
+
export interface MapControlsProps {
|
|
8
|
+
levels: Array<MapControlLevel & Partial<StackLevel>>;
|
|
9
|
+
activeLevelId: number | null;
|
|
10
|
+
onActiveLevelChange: (id: number) => void;
|
|
11
|
+
onZoomIn: () => void;
|
|
12
|
+
onZoomOut: () => void;
|
|
13
|
+
onReset: () => void;
|
|
14
|
+
showFloors?: boolean;
|
|
15
|
+
showZoomReset?: boolean;
|
|
16
|
+
/** Override the viewer building-floor list (e.g. Edit Map + Outdoor). */
|
|
17
|
+
floorOptions?: MapControlLevel[];
|
|
18
|
+
/** Show the floor list even when there is only one floor. */
|
|
19
|
+
alwaysShowFloors?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function MapControls({ levels, activeLevelId, onActiveLevelChange, onZoomIn, onZoomOut, onReset, showFloors, showZoomReset, floorOptions, alwaysShowFloors, }: MapControlsProps): React.JSX.Element | null;
|
|
22
|
+
//# sourceMappingURL=MapControls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MapControls.d.ts","sourceRoot":"","sources":["../../../src/viewer/ui/MapControls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IACrD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yEAAyE;IACzE,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;IACjC,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,aAAa,EACb,mBAAmB,EACnB,QAAQ,EACR,SAAS,EACT,OAAO,EACP,UAAiB,EACjB,aAAoB,EACpB,YAAY,EACZ,gBAAwB,GACzB,EAAE,gBAAgB,4BAoElB"}
|
|
@@ -3,8 +3,6 @@ import { CmAmenityCatalogItem, PathResult, PublishedDocument } from '../../core'
|
|
|
3
3
|
export interface RuntimeChromeProps {
|
|
4
4
|
doc: PublishedDocument;
|
|
5
5
|
amenities: CmAmenityCatalogItem[];
|
|
6
|
-
searchOpen: boolean;
|
|
7
|
-
onSearchOpenChange: (open: boolean) => void;
|
|
8
6
|
activeLevelId: number | null;
|
|
9
7
|
onActiveLevelChange: (id: number) => void;
|
|
10
8
|
fromAnchorId: number | null;
|
|
@@ -14,6 +12,8 @@ export interface RuntimeChromeProps {
|
|
|
14
12
|
accessibleOnly: boolean;
|
|
15
13
|
onAccessibleOnlyChange: (v: boolean) => void;
|
|
16
14
|
route: PathResult | null;
|
|
15
|
+
showSearch?: boolean;
|
|
16
|
+
showAmenities?: boolean;
|
|
17
17
|
}
|
|
18
|
-
export declare function RuntimeChrome({ doc, amenities,
|
|
18
|
+
export declare function RuntimeChrome({ doc, amenities, onActiveLevelChange, fromAnchorId, toAnchorId, onFromChange, onToChange, accessibleOnly, onAccessibleOnlyChange, route, showSearch, showAmenities, }: RuntimeChromeProps): React.JSX.Element | null;
|
|
19
19
|
//# sourceMappingURL=RuntimeChrome.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeChrome.d.ts","sourceRoot":"","sources":["../../../src/viewer/ui/RuntimeChrome.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EACV,oBAAoB,EACpB,UAAU,EACV,iBAAiB,EAClB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"RuntimeChrome.d.ts","sourceRoot":"","sources":["../../../src/viewer/ui/RuntimeChrome.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EACV,oBAAoB,EACpB,UAAU,EACV,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,iBAAiB,CAAC;IACvB,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1C,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACxC,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAyBD,wBAAgB,aAAa,CAAC,EAC5B,GAAG,EACH,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,UAAU,EACV,cAAc,EACd,sBAAsB,EACtB,KAAK,EACL,UAAiB,EACjB,aAAoB,GACrB,EAAE,kBAAkB,4BAmMpB"}
|