@eyeon/map 2.0.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/README.md +18 -1
  2. package/dist/assets/MapViewer.css +1 -1
  3. package/dist/assets/index.css +1 -1
  4. package/dist/chunks/MapViewer.js +1745 -356
  5. package/dist/chunks/MapViewer.js.map +1 -1
  6. package/dist/chunks/stacking.js +1321 -0
  7. package/dist/chunks/stacking.js.map +1 -0
  8. package/dist/core/geometry/index.d.ts +41 -4
  9. package/dist/core/geometry/index.d.ts.map +1 -1
  10. package/dist/core/hostChrome.d.ts +20 -0
  11. package/dist/core/hostChrome.d.ts.map +1 -0
  12. package/dist/core/import/index.d.ts +48 -3
  13. package/dist/core/import/index.d.ts.map +1 -1
  14. package/dist/core/import/svgStyle.d.ts +21 -0
  15. package/dist/core/import/svgStyle.d.ts.map +1 -0
  16. package/dist/core/import/svgTransform.d.ts +49 -0
  17. package/dist/core/import/svgTransform.d.ts.map +1 -0
  18. package/dist/core/index.d.ts +3 -0
  19. package/dist/core/index.d.ts.map +1 -1
  20. package/dist/core/index.js +207 -266
  21. package/dist/core/index.js.map +1 -1
  22. package/dist/core/layerStyles.d.ts +28 -0
  23. package/dist/core/layerStyles.d.ts.map +1 -0
  24. package/dist/core/publish/index.d.ts +8 -2
  25. package/dist/core/publish/index.d.ts.map +1 -1
  26. package/dist/core/routing/graph-tools.d.ts +5 -1
  27. package/dist/core/routing/graph-tools.d.ts.map +1 -1
  28. package/dist/core/stacking.d.ts +61 -0
  29. package/dist/core/stacking.d.ts.map +1 -0
  30. package/dist/core/types.d.ts +27 -0
  31. package/dist/core/types.d.ts.map +1 -1
  32. package/dist/editor/MapEditor.d.ts +28 -16
  33. package/dist/editor/MapEditor.d.ts.map +1 -1
  34. package/dist/editor/canvas/EditorCanvas.d.ts +15 -3
  35. package/dist/editor/canvas/EditorCanvas.d.ts.map +1 -1
  36. package/dist/editor/canvas/coords.d.ts +21 -0
  37. package/dist/editor/canvas/coords.d.ts.map +1 -0
  38. package/dist/editor/draftOps.d.ts +19 -0
  39. package/dist/editor/draftOps.d.ts.map +1 -0
  40. package/dist/editor/geometryEdit.d.ts +34 -0
  41. package/dist/editor/geometryEdit.d.ts.map +1 -0
  42. package/dist/editor/index.css +1281 -145
  43. package/dist/editor/index.d.ts +8 -2
  44. package/dist/editor/index.d.ts.map +1 -1
  45. package/dist/editor/index.js +2293 -585
  46. package/dist/editor/index.js.map +1 -1
  47. package/dist/editor/labels.d.ts +5 -0
  48. package/dist/editor/labels.d.ts.map +1 -0
  49. package/dist/editor/panels/FloorsPanel.d.ts +60 -0
  50. package/dist/editor/panels/FloorsPanel.d.ts.map +1 -0
  51. package/dist/editor/panels/ImportReviewPanel.d.ts +22 -0
  52. package/dist/editor/panels/ImportReviewPanel.d.ts.map +1 -0
  53. package/dist/editor/panels/Inspector.d.ts +4 -2
  54. package/dist/editor/panels/Inspector.d.ts.map +1 -1
  55. package/dist/editor/panels/LeftRail.d.ts +19 -6
  56. package/dist/editor/panels/LeftRail.d.ts.map +1 -1
  57. package/dist/editor/panels/PreviewOverlay.d.ts +11 -2
  58. package/dist/editor/panels/PreviewOverlay.d.ts.map +1 -1
  59. package/dist/editor/portalSurface.d.ts +11 -0
  60. package/dist/editor/portalSurface.d.ts.map +1 -0
  61. package/dist/editor/previewDocument.d.ts +9 -0
  62. package/dist/editor/previewDocument.d.ts.map +1 -0
  63. package/dist/editor/tools.d.ts +20 -0
  64. package/dist/editor/tools.d.ts.map +1 -0
  65. package/dist/test-maps/shops-at-south-town/BASE - Shops At South Town.ai +26780 -26
  66. package/dist/test-maps/shops-at-south-town/LF - Shops At South Town.ai +4487 -2
  67. package/dist/test-maps/shops-at-south-town/SVG/BASE - Shops At South Town.svg +567 -0
  68. package/dist/test-maps/shops-at-south-town/SVG/LF - Shops At South Town.svg +238 -0
  69. package/dist/test-maps/shops-at-south-town/SVG/UF - Shops At South Town.svg +276 -0
  70. package/dist/test-maps/shops-at-south-town/UF - Shops At South Town.ai +4228 -1
  71. package/dist/viewer/MapViewer.d.ts +14 -3
  72. package/dist/viewer/MapViewer.d.ts.map +1 -1
  73. package/dist/viewer/camera.d.ts +34 -0
  74. package/dist/viewer/camera.d.ts.map +1 -0
  75. package/dist/viewer/components/CameraRig.d.ts +18 -0
  76. package/dist/viewer/components/CameraRig.d.ts.map +1 -0
  77. package/dist/viewer/components/LevelMeshes.d.ts +6 -1
  78. package/dist/viewer/components/LevelMeshes.d.ts.map +1 -1
  79. package/dist/viewer/components/MapScene.d.ts +6 -1
  80. package/dist/viewer/components/MapScene.d.ts.map +1 -1
  81. package/dist/viewer/components/SvgVectorLayer.d.ts +18 -0
  82. package/dist/viewer/components/SvgVectorLayer.d.ts.map +1 -0
  83. package/dist/viewer/index.css +124 -35
  84. package/dist/viewer/index.d.ts +4 -0
  85. package/dist/viewer/index.d.ts.map +1 -1
  86. package/dist/viewer/index.js +9 -4
  87. package/dist/viewer/index.js.map +1 -1
  88. package/dist/viewer/ui/MapControls.d.ts +14 -0
  89. package/dist/viewer/ui/MapControls.d.ts.map +1 -0
  90. package/dist/viewer/ui/RuntimeChrome.d.ts +3 -3
  91. package/dist/viewer/ui/RuntimeChrome.d.ts.map +1 -1
  92. package/package.json +17 -7
  93. package/dist/chunks/graph-tools.js +0 -153
  94. package/dist/chunks/graph-tools.js.map +0 -1
  95. package/dist/chunks/pathfinding.js +0 -343
  96. package/dist/chunks/pathfinding.js.map +0 -1
@@ -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
- role?: 'WP_SITE' | 'DISPLAY_APP' | 'PORTAL_PREVIEW' | 'DEMO';
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
- imageProxyUrl?: string;
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,KAAiD,MAAM,OAAO,CAAC;AACtE,OAAO,KAAK,EAGV,iBAAiB,EACjB,aAAa,EACd,MAAM,SAAS,CAAC;AAIjB,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,IAAI,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,gBAAgB,GAAG,MAAM,CAAC;IAC7D,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,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,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;AAWD,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,qBAuO9C;AAED,eAAe,SAAS,CAAC"}
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,34 @@
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 function nextOrthoZoom(current: number, direction: 1 | -1, step: number, min: number, max: number): number;
25
+ export declare function orbitMouseButtons(is3d: boolean): {
26
+ LEFT: number;
27
+ MIDDLE: number;
28
+ RIGHT: number;
29
+ };
30
+ export declare function orbitTouches(is3d: boolean): {
31
+ ONE: number;
32
+ TWO: number;
33
+ };
34
+ //# 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,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;AAG7D,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,QAuFhB"}
@@ -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;AAEvC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAa,MAAM,YAAY,CAAC;AAsC3E,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;CAC3C;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,IAAI,EACJ,kBAAkB,EAClB,aAAa,GACd,EAAE,gBAAgB,qBA2FlB"}
1
+ {"version":3,"file":"LevelMeshes.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/LevelMeshes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAa,MAAM,YAAY,CAAC;AAuC3E,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,qBA8FlB"}
@@ -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,KAAkB,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAI/E,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,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5D;AAED,wBAAgB,QAAQ,CAAC,EACvB,GAAG,EACH,KAAK,EACL,aAAa,EACb,KAAK,EACL,kBAAkB,EAClB,aAAa,GACd,EAAE,aAAa,qBAkFf"}
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;AAK/E,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAU9D,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,qBA0If"}
@@ -0,0 +1,18 @@
1
+ import { default as React } from 'react';
2
+ /** Same contract as v1 `getMediaProxyUrl`: proxy base + encoded URL, no query key. */
3
+ export declare function resolveFetchUrl(url: string, imageProxyUrl?: string | null): string;
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;AAoC5D,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGlF;AAED,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,4BAkHrB"}
@@ -4,15 +4,28 @@
4
4
  height: 100%;
5
5
  min-height: 320px;
6
6
  overflow: hidden;
7
- background: var(--map-bg, #f5f5f5);
8
- font-family: system-ui, -apple-system, sans-serif;
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% - 24px));
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-toggle {
50
- align-self: flex-start;
51
- border: 0;
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: 8px 12px;
56
- font-size: 12px;
57
- font-weight: 600;
58
- cursor: pointer;
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-chrome__search-input {
107
- width: 100%;
108
- border: 1px solid #e2e8f0;
109
- border-radius: 8px;
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
 
@@ -182,29 +198,102 @@
182
198
  font-weight: 500 !important;
183
199
  }
184
200
 
185
- .eyeon-map-chrome__floors {
201
+ .eyeon-map-controls {
202
+ position: absolute;
203
+ inset: 0;
204
+ z-index: 3;
205
+ pointer-events: none;
206
+ }
207
+
208
+ .eyeon-map-controls__stack {
209
+ pointer-events: auto;
186
210
  position: absolute;
187
- right: 12px;
188
- bottom: 12px;
189
- left: auto;
190
- top: auto;
211
+ top: 10px;
212
+ right: 10px;
191
213
  display: flex;
192
- gap: 6px;
193
- width: auto;
214
+ flex-direction: column;
215
+ gap: 8px;
216
+ width: 94px;
194
217
  }
195
218
 
196
- .eyeon-map-chrome__floor {
219
+ .eyeon-map-controls__floors {
220
+ display: flex;
221
+ flex-direction: column;
222
+ }
223
+
224
+ .eyeon-map-controls__floor,
225
+ .eyeon-map-controls__reset,
226
+ .eyeon-map-controls__zoom-btn {
227
+ color: #fff;
228
+ background-color: #0763b1;
197
229
  border: 0;
198
- border-radius: 8px;
199
- background: #fff;
200
- box-shadow: 0 1px 4px rgba(15, 23, 42, 0.12);
201
- padding: 8px 10px;
202
- font-size: 12px;
203
- font-weight: 600;
230
+ font-size: 11px;
231
+ font-weight: 500;
232
+ letter-spacing: 0.02em;
204
233
  cursor: pointer;
234
+ transition: background-color 200ms;
205
235
  }
206
236
 
207
- .eyeon-map-chrome__floor.is-active {
208
- background: var(--map-accent, #2563eb);
209
- color: #fff;
237
+ .eyeon-map-controls__floor,
238
+ .eyeon-map-controls__reset {
239
+ width: 100%;
240
+ min-height: 27px;
241
+ padding: 6px 10px;
242
+ text-align: center;
243
+ }
244
+
245
+ .eyeon-map-controls__floor:hover,
246
+ .eyeon-map-controls__reset:hover,
247
+ .eyeon-map-controls__zoom-btn:hover {
248
+ background-color: #054983;
249
+ }
250
+
251
+ .eyeon-map-controls__floor.is-active {
252
+ background-color: #054983;
253
+ cursor: default;
254
+ }
255
+
256
+ .eyeon-map-controls__floor:first-child {
257
+ border-radius: 5px 5px 0 0;
258
+ }
259
+
260
+ .eyeon-map-controls__floor:last-child {
261
+ border-radius: 0 0 5px 5px;
262
+ }
263
+
264
+ .eyeon-map-controls__floor:only-child {
265
+ border-radius: 5px;
266
+ }
267
+
268
+ .eyeon-map-controls__floor:not(:first-child):not(:last-child) {
269
+ border-radius: 0;
270
+ }
271
+
272
+ .eyeon-map-controls__reset {
273
+ border-radius: 5px;
274
+ text-transform: uppercase;
275
+ letter-spacing: 0.05em;
276
+ }
277
+
278
+ .eyeon-map-controls__zoom {
279
+ display: flex;
280
+ }
281
+
282
+ .eyeon-map-controls__zoom-btn {
283
+ flex: 1;
284
+ height: 27px;
285
+ display: flex;
286
+ align-items: center;
287
+ justify-content: center;
288
+ font-size: 14px;
289
+ font-weight: 400;
290
+ padding: 0;
291
+ }
292
+
293
+ .eyeon-map-controls__zoom-btn:first-child {
294
+ border-radius: 5px 0 0 5px;
295
+ }
296
+
297
+ .eyeon-map-controls__zoom-btn:last-child {
298
+ border-radius: 0 5px 5px 0;
210
299
  }
@@ -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 } 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,MAAM,kBAAkB,CAAC;AACtE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,cAAc,CAAC"}
@@ -1,7 +1,12 @@
1
- import { M as r, a as m, R as o } from "../chunks/MapViewer.js";
1
+ import { M as r, a as s, b as o, R as m } from "../chunks/MapViewer.js";
2
+ import { i, m as t, v as M } from "../chunks/stacking.js";
2
3
  export {
3
- r as MapScene,
4
- m as MapViewer,
5
- o as RuntimeChrome
4
+ r as MapControls,
5
+ s as MapScene,
6
+ o as MapViewer,
7
+ m as RuntimeChrome,
8
+ i as isMapViewerHost,
9
+ t as mapSurface,
10
+ M as viewerChrome
6
11
  };
7
12
  //# sourceMappingURL=index.js.map
@@ -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,14 @@
1
+ import { default as React } from 'react';
2
+ import { PublishedLevel } from '../../core';
3
+ export interface MapControlsProps {
4
+ levels: PublishedLevel[];
5
+ activeLevelId: number | null;
6
+ onActiveLevelChange: (id: number) => void;
7
+ onZoomIn: () => void;
8
+ onZoomOut: () => void;
9
+ onReset: () => void;
10
+ showFloors?: boolean;
11
+ showZoomReset?: boolean;
12
+ }
13
+ export declare function MapControls({ levels, activeLevelId, onActiveLevelChange, onZoomIn, onZoomOut, onReset, showFloors, showZoomReset, }: MapControlsProps): React.JSX.Element | null;
14
+ //# 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,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,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;CACzB;AAED,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,aAAa,EACb,mBAAmB,EACnB,QAAQ,EACR,SAAS,EACT,OAAO,EACP,UAAiB,EACjB,aAAoB,GACrB,EAAE,gBAAgB,4BAiElB"}
@@ -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, searchOpen, onSearchOpenChange, activeLevelId, onActiveLevelChange, fromAnchorId, toAnchorId, onFromChange, onToChange, accessibleOnly, onAccessibleOnlyChange, route, }: RuntimeChromeProps): React.JSX.Element;
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;AAEpB,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,iBAAiB,CAAC;IACvB,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,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;CAC1B;AAWD,wBAAgB,aAAa,CAAC,EAC5B,GAAG,EACH,SAAS,EACT,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,UAAU,EACV,cAAc,EACd,sBAAsB,EACtB,KAAK,GACN,EAAE,kBAAkB,qBAgNpB"}
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;AAEpB,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,4BAuMpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eyeon/map",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
4
  "description": "EyeOn Center Map v2 — core, viewer, and editor",
5
5
  "author": "EyeOn LLC",
6
6
  "license": "UNLICENSED",
@@ -16,11 +16,15 @@
16
16
  "exports": {
17
17
  ".": {
18
18
  "types": "./dist/core/index.d.ts",
19
- "import": "./dist/core/index.js"
19
+ "require": "./dist/core/index.js",
20
+ "import": "./dist/core/index.js",
21
+ "default": "./dist/core/index.js"
20
22
  },
21
23
  "./core": {
22
24
  "types": "./dist/core/index.d.ts",
23
- "import": "./dist/core/index.js"
25
+ "require": "./dist/core/index.js",
26
+ "import": "./dist/core/index.js",
27
+ "default": "./dist/core/index.js"
24
28
  },
25
29
  "./viewer": {
26
30
  "types": "./dist/viewer/index.d.ts",
@@ -58,9 +62,15 @@
58
62
  "three": "^0.180.0"
59
63
  },
60
64
  "peerDependenciesMeta": {
61
- "@react-three/drei": { "optional": true },
62
- "@react-three/fiber": { "optional": true },
63
- "three": { "optional": true }
65
+ "@react-three/drei": {
66
+ "optional": true
67
+ },
68
+ "@react-three/fiber": {
69
+ "optional": true
70
+ },
71
+ "three": {
72
+ "optional": true
73
+ }
64
74
  },
65
75
  "devDependencies": {
66
76
  "@react-three/drei": "10.7.6",
@@ -78,4 +88,4 @@
78
88
  "vite-plugin-dts": "^4.2.3",
79
89
  "vitest": "^2.1.0"
80
90
  }
81
- }
91
+ }