@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
@@ -0,0 +1,5 @@
1
+ import { ShapeKind, UnitStatus } from '../core';
2
+ export declare const SHAPE_KIND_LABELS: Record<ShapeKind, string>;
3
+ export declare const UNIT_STATUS_LABELS: Record<UnitStatus, string>;
4
+ export declare function shapeKindLabel(kind: string): string;
5
+ //# sourceMappingURL=labels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../src/editor/labels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAkBvD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAKzD,CAAC;AAEF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD"}
@@ -0,0 +1,60 @@
1
+ import { default as React } from 'react';
2
+ import { CmBuilding, CmLevel } from '../../core';
3
+ export type CreateLevelInput = {
4
+ name: string;
5
+ kind: 'outdoor' | 'floor';
6
+ buildingId?: number | null;
7
+ file?: File;
8
+ onProgress?: (percent: number) => void;
9
+ };
10
+ export type UpdateLevelInput = {
11
+ levelId: number;
12
+ name?: string;
13
+ file?: File;
14
+ onProgress?: (percent: number) => void;
15
+ };
16
+ export type FloorsScreen = {
17
+ mode: 'list';
18
+ } | {
19
+ mode: 'add-base';
20
+ } | {
21
+ mode: 'add-floor';
22
+ } | {
23
+ mode: 'edit';
24
+ levelId: number;
25
+ };
26
+ export declare function floorsScreenTitle(screen: FloorsScreen, levels: Array<{
27
+ id: number;
28
+ kind: string;
29
+ }>): string;
30
+ /** Building floors only — Outdoor is a separate item and is not counted. */
31
+ export declare function visibleFloorCount(levels: Array<{
32
+ kind: string;
33
+ }>): number;
34
+ /** Insert `movedId` before or after `targetId`. Used by live floor reorder. */
35
+ export declare function placeLevelId(ids: number[], movedId: number, targetId: number, place: 'before' | 'after'): number[];
36
+ /** Move `movedId` to `toIndex` in the list with that id removed. */
37
+ export declare function moveLevelId(ids: number[], movedId: number, toIndex: number): number[];
38
+ export interface FloorsPanelProps {
39
+ levels: CmLevel[];
40
+ buildings: CmBuilding[];
41
+ /** Shapes already imported per level — drives delete and re-import copy. */
42
+ levelShapeCounts?: Record<number, number>;
43
+ canFloors: boolean;
44
+ screen: FloorsScreen;
45
+ onScreenChange: (screen: FloorsScreen) => void;
46
+ onCreateLevel?: (input: CreateLevelInput) => Promise<number | void>;
47
+ onUpdateLevel?: (input: UpdateLevelInput) => Promise<void>;
48
+ onDeleteLevel?: (levelId: number) => Promise<void>;
49
+ onReorderLevels?: (orderedIds: number[]) => Promise<void>;
50
+ }
51
+ export declare function deleteConfirmCopy(level: {
52
+ kind: string;
53
+ name: string;
54
+ }, shapeCount?: number): {
55
+ title: string;
56
+ body: string;
57
+ action: string;
58
+ };
59
+ export declare function FloorsPanel({ levels, buildings, levelShapeCounts, canFloors, screen, onScreenChange, onCreateLevel, onUpdateLevel, onDeleteLevel, onReorderLevels, }: FloorsPanelProps): React.JSX.Element;
60
+ //# sourceMappingURL=FloorsPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloorsPanel.d.ts","sourceRoot":"","sources":["../../../src/editor/panels/FloorsPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { default as React } from 'react';
2
+ import { ImportDiff } from '../../core';
3
+ export interface ImportReviewProps {
4
+ diff: ImportDiff;
5
+ viewBoxChanged?: boolean;
6
+ blockedMessage?: string | null;
7
+ busy?: boolean;
8
+ onApply: (payload: {
9
+ acceptAll: boolean;
10
+ remap: Array<{
11
+ fromShapeId: number;
12
+ toSourceSvgId: string;
13
+ }>;
14
+ }) => Promise<void> | void;
15
+ onCancel?: () => void;
16
+ }
17
+ /**
18
+ * Outdoor (or floor) re-upload review — shows added / orphaned / locked / drifted
19
+ * buckets before apply. Host wires POST .../import + .../import/apply.
20
+ */
21
+ export declare function ImportReviewPanel({ diff, viewBoxChanged, blockedMessage, busy, onApply, onCancel, }: ImportReviewProps): React.JSX.Element;
22
+ //# sourceMappingURL=ImportReviewPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImportReviewPanel.d.ts","sourceRoot":"","sources":["../../../src/editor/panels/ImportReviewPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,YAAY,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,CAAC,OAAO,EAAE;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,KAAK,EAAE,KAAK,CAAC;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,aAAa,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC9D,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAiBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,cAAsB,EACtB,cAAc,EACd,IAAY,EACZ,OAAO,EACP,QAAQ,GACT,EAAE,iBAAiB,qBAoJnB"}
@@ -4,11 +4,13 @@ export interface InspectorProps {
4
4
  shape: CmShape | null;
5
5
  assignment: CmShapeAssignment | null;
6
6
  amenities: CmAmenityCatalogItem[];
7
+ /** Other shape keys on the same level — used for uniqueness validation. */
8
+ levelShapeKeys?: string[];
7
9
  canEdit: boolean;
8
10
  onRename: (key: string) => void;
9
11
  onChangeKind: (kind: ShapeKind) => void;
12
+ onDelete?: () => void;
10
13
  onSaveAssignment: (assignment: CmShapeAssignment) => void;
11
- undoCount: number;
12
14
  }
13
- export declare function Inspector({ shape, assignment, amenities, canEdit, onRename, onChangeKind, onSaveAssignment, undoCount, }: InspectorProps): React.JSX.Element;
15
+ export declare function Inspector({ shape, assignment, amenities, levelShapeKeys, canEdit, onRename, onChangeKind, onDelete, onSaveAssignment, }: InspectorProps): React.JSX.Element;
14
16
  //# sourceMappingURL=Inspector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Inspector.d.ts","sourceRoot":"","sources":["../../../src/editor/panels/Inspector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,EACV,oBAAoB,EACpB,OAAO,EACP,iBAAiB,EACjB,SAAS,EAEV,MAAM,YAAY,CAAC;AA6BpB,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACxC,gBAAgB,EAAE,CAAC,UAAU,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC1D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,UAAU,EACV,SAAS,EACT,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,SAAS,GACV,EAAE,cAAc,qBA6KhB"}
1
+ {"version":3,"file":"Inspector.d.ts","sourceRoot":"","sources":["../../../src/editor/panels/Inspector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,EACV,oBAAoB,EACpB,OAAO,EACP,iBAAiB,EACjB,SAAS,EAEV,MAAM,YAAY,CAAC;AAMpB,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,2EAA2E;IAC3E,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,gBAAgB,EAAE,CAAC,UAAU,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC3D;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,UAAU,EACV,SAAS,EACT,cAAmB,EACnB,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,gBAAgB,GACjB,EAAE,cAAc,qBAuNhB"}
@@ -1,6 +1,9 @@
1
- import { default as React } from 'react';
1
+ import { default as React, ReactNode } from 'react';
2
2
  import { CmAmenityCatalogItem, CmLevel, CmBuilding, ThemeDefaults } from '../../core';
3
- export type RailTab = 'levels' | 'shapes' | 'routes' | 'amenities' | 'kiosks' | 'theme';
3
+ import { CreateLevelInput, UpdateLevelInput } from './FloorsPanel';
4
+ export type RailSection = 'floors' | 'stores' | 'amenities' | 'kiosks' | 'paths' | 'style' | 'selection' | 'edit-map';
5
+ /** @deprecated Use RailSection */
6
+ export type RailTab = RailSection;
4
7
  export interface LeftRailDraft {
5
8
  buildings: CmBuilding[];
6
9
  levels: CmLevel[];
@@ -9,6 +12,7 @@ export interface LeftRailDraft {
9
12
  levelId: number;
10
13
  key: string;
11
14
  kind: string;
15
+ orphanedAt?: string | null;
12
16
  }>;
13
17
  anchors: Array<{
14
18
  id: number;
@@ -20,17 +24,26 @@ export interface LeftRailDraft {
20
24
  amenities: CmAmenityCatalogItem[];
21
25
  }
22
26
  export interface LeftRailProps {
23
- tab: RailTab;
24
- onTabChange: (tab: RailTab) => void;
27
+ section: RailSection | null;
28
+ onSectionChange: (section: RailSection | null) => void;
25
29
  draft: LeftRailDraft;
26
30
  activeLevelId: number | null;
27
- onSelectLevel: (id: number) => void;
31
+ selectedShapeId: number | null;
32
+ onSelectShape: (id: number) => void;
28
33
  canFloors: boolean;
29
34
  canSettings: boolean;
30
35
  onImportSvg?: (levelId: number, file: File) => Promise<void>;
36
+ onCreateLevel?: (input: CreateLevelInput) => Promise<number | void>;
37
+ onUpdateLevel?: (input: UpdateLevelInput) => Promise<void>;
38
+ onDeleteLevel?: (levelId: number) => Promise<void>;
39
+ onReorderLevels?: (orderedIds: number[]) => Promise<void>;
31
40
  onAutoroute?: (levelId: number) => Promise<void>;
32
41
  theme: ThemeDefaults;
33
42
  onThemeChange: (partial: Partial<ThemeDefaults>) => void;
43
+ assignPanel: ReactNode;
44
+ /** Draw/tools UI for Edit Map (icons + inspector). */
45
+ editMapPanel?: ReactNode;
46
+ footer?: ReactNode;
34
47
  }
35
- export declare function LeftRail({ tab, onTabChange, draft, activeLevelId, onSelectLevel, canFloors, canSettings, onImportSvg, onAutoroute, theme, onThemeChange, }: LeftRailProps): React.JSX.Element;
48
+ export declare function LeftRail({ section, onSectionChange, draft, activeLevelId, selectedShapeId, onSelectShape, canFloors, canSettings, onCreateLevel, onUpdateLevel, onDeleteLevel, onReorderLevels, onAutoroute, theme, onThemeChange, assignPanel, editMapPanel, footer, }: LeftRailProps): React.JSX.Element;
36
49
  //# sourceMappingURL=LeftRail.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LeftRail.d.ts","sourceRoot":"","sources":["../../../src/editor/panels/LeftRail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EACV,oBAAoB,EACpB,OAAO,EACP,UAAU,EACV,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,OAAO,GACf,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,OAAO,CAAC;AAEZ,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1E,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7B,SAAS,EAAE,oBAAoB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,OAAO,CAAC;IACb,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,aAAa,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,KAAK,EAAE,aAAa,CAAC;IACrB,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;CAC1D;AAWD,wBAAgB,QAAQ,CAAC,EACvB,GAAG,EACH,WAAW,EACX,KAAK,EACL,aAAa,EACb,aAAa,EACb,SAAS,EACT,WAAW,EACX,WAAW,EACX,WAAW,EACX,KAAK,EACL,aAAa,GACd,EAAE,aAAa,qBAyKf"}
1
+ {"version":3,"file":"LeftRail.d.ts","sourceRoot":"","sources":["../../../src/editor/panels/LeftRail.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,15 @@
1
1
  import { default as React } from 'react';
2
- import { PublishedDocument } from '../../core';
3
- export declare function PreviewOverlay({ document }: {
2
+ import { MapViewerHost, PublishedDocument } from '../../core';
3
+ export declare function PreviewOverlay({ document, host, onSelectShape, activeLevelId, onActiveLevelChange, routeOnSelect, imageProxyUrl, }: {
4
4
  document: PublishedDocument;
5
+ /** Assign mode hides search. Public preview can be added later as WEBSITE. */
6
+ host?: Extract<MapViewerHost, 'PORTAL_ASSIGN' | 'WEBSITE'>;
7
+ onSelectShape?: (shapeId: number) => void;
8
+ activeLevelId?: number | null;
9
+ onActiveLevelChange?: (levelId: number) => void;
10
+ /** Default true (public navigate). False when assigning in PORTAL. */
11
+ routeOnSelect?: boolean;
12
+ /** Without this the outdoor SVG is fetched cross-origin and CORS blocks it. */
13
+ imageProxyUrl?: string | null;
5
14
  }): React.JSX.Element;
6
15
  //# sourceMappingURL=PreviewOverlay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewOverlay.d.ts","sourceRoot":"","sources":["../../../src/editor/panels/PreviewOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGpD,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,iBAAiB,CAAA;CAAE,qBAQ3E"}
1
+ {"version":3,"file":"PreviewOverlay.d.ts","sourceRoot":"","sources":["../../../src/editor/panels/PreviewOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGnE,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,IAAsB,EACtB,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,aAAa,GACd,EAAE;IACD,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,8EAA8E;IAC9E,IAAI,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,eAAe,GAAG,SAAS,CAAC,CAAC;IAC3D,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,sEAAsE;IACtE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,qBAiBA"}
@@ -0,0 +1,11 @@
1
+ import { MapEditorHost } from '../core';
2
+ import { RailSection } from './panels/LeftRail';
3
+ /** What occupies the PORTAL center pane (rail is always Map options). */
4
+ export type PortalCenterSurface = 'viewer' | 'editor';
5
+ /**
6
+ * PORTAL default is MapViewer (assign on the real map, no editor grid).
7
+ * Edit Map swaps in EditorCanvas + grid. Non-PORTAL editor hosts stay on
8
+ * the geometry canvas.
9
+ */
10
+ export declare function portalCenterSurface(host: MapEditorHost, section: RailSection | null): PortalCenterSurface;
11
+ //# sourceMappingURL=portalSurface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portalSurface.d.ts","sourceRoot":"","sources":["../../src/editor/portalSurface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,yEAAyE;AACzE,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,WAAW,GAAG,IAAI,GAC1B,mBAAmB,CAGrB"}
@@ -0,0 +1,9 @@
1
+ import { CmConnector, PublishedDocument } from '../core';
2
+ import { EditorDraftState } from './draftOps';
3
+ export declare function compileEditorPreview(draft: EditorDraftState, extras?: {
4
+ revisionId?: number;
5
+ revisionNumber?: number;
6
+ connectors?: CmConnector[];
7
+ publishedAt?: string;
8
+ }): PublishedDocument;
9
+ //# sourceMappingURL=previewDocument.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"previewDocument.d.ts","sourceRoot":"","sources":["../../src/editor/previewDocument.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,gBAAgB,EACvB,MAAM,CAAC,EAAE;IACP,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACA,iBAAiB,CA6BnB"}
@@ -0,0 +1,20 @@
1
+ import { default as React } from 'react';
2
+ export type EditorTool = 'select' | 'pan' | 'draw-unit' | 'draw-polygon' | 'draw-line' | 'draw-route';
3
+ export declare const EDITOR_TOOLS: Array<{
4
+ id: EditorTool;
5
+ label: string;
6
+ draw?: boolean;
7
+ }>;
8
+ export declare function toolHint(tool: EditorTool): string;
9
+ export interface EditorToolButtonsProps {
10
+ tool: EditorTool;
11
+ onToolChange: (tool: EditorTool) => void;
12
+ canEdit: boolean;
13
+ }
14
+ export declare function EditorToolButtons({ tool, onToolChange, canEdit, }: EditorToolButtonsProps): React.JSX.Element;
15
+ export interface JoinPointsButtonProps {
16
+ disabled: boolean;
17
+ onClick: () => void;
18
+ }
19
+ export declare function JoinPointsButton({ disabled, onClick }: JoinPointsButtonProps): React.JSX.Element;
20
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/editor/tools.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,KAAK,GACL,WAAW,GACX,cAAc,GACd,WAAW,GACX,YAAY,CAAC;AAEjB,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC;IAC/B,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAOA,CAAC;AAkHF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAejD;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,YAAY,EACZ,OAAO,GACR,EAAE,sBAAsB,qBAsBxB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,qBAAqB,qBAa5E"}