@eyeon/map 2.0.3 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/dist/assets/MapViewer.css +1 -1
  2. package/dist/assets/index.css +1 -1
  3. package/dist/chunks/MapViewer.js +2558 -1431
  4. package/dist/chunks/MapViewer.js.map +1 -1
  5. package/dist/chunks/stacking.js +1262 -745
  6. package/dist/chunks/stacking.js.map +1 -1
  7. package/dist/chunks/wheelZoom.js +259 -0
  8. package/dist/chunks/wheelZoom.js.map +1 -0
  9. package/dist/core/assignment.d.ts +107 -0
  10. package/dist/core/assignment.d.ts.map +1 -0
  11. package/dist/core/color.d.ts +5 -0
  12. package/dist/core/color.d.ts.map +1 -0
  13. package/dist/core/entranceIcon.d.ts +12 -0
  14. package/dist/core/entranceIcon.d.ts.map +1 -0
  15. package/dist/core/hostChrome.d.ts +2 -4
  16. package/dist/core/hostChrome.d.ts.map +1 -1
  17. package/dist/core/index.d.ts +6 -0
  18. package/dist/core/index.d.ts.map +1 -1
  19. package/dist/core/index.js +161 -89
  20. package/dist/core/labelAlign.d.ts +7 -0
  21. package/dist/core/labelAlign.d.ts.map +1 -0
  22. package/dist/core/layerStyles.d.ts +41 -7
  23. package/dist/core/layerStyles.d.ts.map +1 -1
  24. package/dist/core/outdoorDecoration.d.ts +2 -1
  25. package/dist/core/outdoorDecoration.d.ts.map +1 -1
  26. package/dist/core/publish/index.d.ts +6 -4
  27. package/dist/core/publish/index.d.ts.map +1 -1
  28. package/dist/core/stacking.d.ts +50 -3
  29. package/dist/core/stacking.d.ts.map +1 -1
  30. package/dist/core/types.d.ts +29 -1
  31. package/dist/core/types.d.ts.map +1 -1
  32. package/dist/core/voids.d.ts +41 -0
  33. package/dist/core/voids.d.ts.map +1 -0
  34. package/dist/core/wheelZoom.d.ts +30 -0
  35. package/dist/core/wheelZoom.d.ts.map +1 -0
  36. package/dist/editor/FieldResetButton.d.ts +7 -0
  37. package/dist/editor/FieldResetButton.d.ts.map +1 -0
  38. package/dist/editor/MapEditor.d.ts +12 -2
  39. package/dist/editor/MapEditor.d.ts.map +1 -1
  40. package/dist/editor/canvas/EditorCanvas.d.ts +6 -2
  41. package/dist/editor/canvas/EditorCanvas.d.ts.map +1 -1
  42. package/dist/editor/canvas/OutdoorSvgUnderlay.d.ts +3 -1
  43. package/dist/editor/canvas/OutdoorSvgUnderlay.d.ts.map +1 -1
  44. package/dist/editor/canvas/coords.d.ts +26 -3
  45. package/dist/editor/canvas/coords.d.ts.map +1 -1
  46. package/dist/editor/canvas/editorFill.d.ts +3 -1
  47. package/dist/editor/canvas/editorFill.d.ts.map +1 -1
  48. package/dist/editor/canvas/editorHover.d.ts +4 -0
  49. package/dist/editor/canvas/editorHover.d.ts.map +1 -1
  50. package/dist/editor/canvas/underlayHint.d.ts +8 -0
  51. package/dist/editor/canvas/underlayHint.d.ts.map +1 -1
  52. package/dist/editor/connectorAssignments.d.ts +61 -0
  53. package/dist/editor/connectorAssignments.d.ts.map +1 -1
  54. package/dist/editor/draftOps.d.ts +8 -0
  55. package/dist/editor/draftOps.d.ts.map +1 -1
  56. package/dist/editor/editorSectionReturn.d.ts.map +1 -1
  57. package/dist/editor/ellipseDraw.d.ts +12 -0
  58. package/dist/editor/ellipseDraw.d.ts.map +1 -0
  59. package/dist/editor/entranceIcon.d.ts +15 -0
  60. package/dist/editor/entranceIcon.d.ts.map +1 -0
  61. package/dist/editor/hexColor.d.ts +2 -0
  62. package/dist/editor/hexColor.d.ts.map +1 -1
  63. package/dist/editor/index.css +824 -72
  64. package/dist/editor/index.d.ts +2 -0
  65. package/dist/editor/index.d.ts.map +1 -1
  66. package/dist/editor/index.js +6711 -4161
  67. package/dist/editor/index.js.map +1 -1
  68. package/dist/editor/labelText.d.ts +12 -2
  69. package/dist/editor/labelText.d.ts.map +1 -1
  70. package/dist/editor/labels.d.ts +8 -0
  71. package/dist/editor/labels.d.ts.map +1 -1
  72. package/dist/editor/panels/AssignForm.d.ts +17 -0
  73. package/dist/editor/panels/AssignForm.d.ts.map +1 -0
  74. package/dist/editor/panels/AssignmentStyleFields.d.ts +14 -0
  75. package/dist/editor/panels/AssignmentStyleFields.d.ts.map +1 -0
  76. package/dist/editor/panels/BulkAssignForm.d.ts +11 -0
  77. package/dist/editor/panels/BulkAssignForm.d.ts.map +1 -0
  78. package/dist/editor/panels/CatalogKioskForm.d.ts +18 -0
  79. package/dist/editor/panels/CatalogKioskForm.d.ts.map +1 -0
  80. package/dist/editor/panels/ConnectorAssign.d.ts +6 -2
  81. package/dist/editor/panels/ConnectorAssign.d.ts.map +1 -1
  82. package/dist/editor/panels/CopyToLevelButton.d.ts +10 -0
  83. package/dist/editor/panels/CopyToLevelButton.d.ts.map +1 -0
  84. package/dist/editor/panels/EntranceIconForm.d.ts +11 -0
  85. package/dist/editor/panels/EntranceIconForm.d.ts.map +1 -0
  86. package/dist/editor/panels/Inspector.d.ts +24 -3
  87. package/dist/editor/panels/Inspector.d.ts.map +1 -1
  88. package/dist/editor/panels/LeftRail.d.ts +17 -6
  89. package/dist/editor/panels/LeftRail.d.ts.map +1 -1
  90. package/dist/editor/panels/PreviewOverlay.d.ts +9 -3
  91. package/dist/editor/panels/PreviewOverlay.d.ts.map +1 -1
  92. package/dist/editor/panels/TextLabelForm.d.ts +11 -0
  93. package/dist/editor/panels/TextLabelForm.d.ts.map +1 -0
  94. package/dist/editor/panels/formRows.d.ts +41 -0
  95. package/dist/editor/panels/formRows.d.ts.map +1 -0
  96. package/dist/editor/portalSurface.d.ts +10 -2
  97. package/dist/editor/portalSurface.d.ts.map +1 -1
  98. package/dist/editor/previewDocument.d.ts +2 -1
  99. package/dist/editor/previewDocument.d.ts.map +1 -1
  100. package/dist/editor/railAssignments.d.ts +9 -2
  101. package/dist/editor/railAssignments.d.ts.map +1 -1
  102. package/dist/editor/railKiosks.d.ts +27 -0
  103. package/dist/editor/railKiosks.d.ts.map +1 -0
  104. package/dist/editor/railListCopy.d.ts +31 -0
  105. package/dist/editor/railListCopy.d.ts.map +1 -0
  106. package/dist/editor/routeStubs.d.ts +1 -1
  107. package/dist/editor/routeStubs.d.ts.map +1 -1
  108. package/dist/editor/shapeCopy.d.ts +40 -0
  109. package/dist/editor/shapeCopy.d.ts.map +1 -0
  110. package/dist/editor/shapeSelection.d.ts +6 -0
  111. package/dist/editor/shapeSelection.d.ts.map +1 -0
  112. package/dist/editor/tools.d.ts +12 -2
  113. package/dist/editor/tools.d.ts.map +1 -1
  114. package/dist/fonts/assets.d.ts +4 -0
  115. package/dist/fonts/mapFont.d.ts +5 -0
  116. package/dist/fonts/mapFont.d.ts.map +1 -0
  117. package/dist/fonts/mapFontUrl.d.ts +8 -0
  118. package/dist/fonts/mapFontUrl.d.ts.map +1 -0
  119. package/dist/specialIcons.d.ts +39 -0
  120. package/dist/specialIcons.d.ts.map +1 -0
  121. package/dist/ui/ModernSelect.d.ts.map +1 -1
  122. package/dist/ui/selectSearch.d.ts +3 -0
  123. package/dist/ui/selectSearch.d.ts.map +1 -1
  124. package/dist/viewer/MapViewer.d.ts +14 -1
  125. package/dist/viewer/MapViewer.d.ts.map +1 -1
  126. package/dist/viewer/camera.d.ts +82 -1
  127. package/dist/viewer/camera.d.ts.map +1 -1
  128. package/dist/viewer/components/CameraRig.d.ts +18 -1
  129. package/dist/viewer/components/CameraRig.d.ts.map +1 -1
  130. package/dist/viewer/components/LevelMeshes.d.ts +15 -4
  131. package/dist/viewer/components/LevelMeshes.d.ts.map +1 -1
  132. package/dist/viewer/components/MapScene.d.ts +10 -4
  133. package/dist/viewer/components/MapScene.d.ts.map +1 -1
  134. package/dist/viewer/components/OpeningWell.d.ts +7 -0
  135. package/dist/viewer/components/OpeningWell.d.ts.map +1 -0
  136. package/dist/viewer/components/RouteLine.d.ts.map +1 -1
  137. package/dist/viewer/components/SvgVectorLayer.d.ts +3 -1
  138. package/dist/viewer/components/SvgVectorLayer.d.ts.map +1 -1
  139. package/dist/viewer/components/openingGeometry.d.ts +7 -0
  140. package/dist/viewer/components/openingGeometry.d.ts.map +1 -0
  141. package/dist/viewer/index.css +151 -19
  142. package/dist/viewer/index.js +3 -3
  143. package/dist/viewer/pointer.d.ts +26 -0
  144. package/dist/viewer/pointer.d.ts.map +1 -0
  145. package/dist/viewer/ui/MapControls.d.ts.map +1 -1
  146. package/dist/viewer/ui/RuntimeChrome.d.ts.map +1 -1
  147. package/package.json +4 -2
  148. package/dist/chunks/graph-tools.js +0 -246
  149. package/dist/chunks/graph-tools.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"routeStubs.d.ts","sourceRoot":"","sources":["../../src/editor/routeStubs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,OAAO,EACP,QAAQ,EACR,WAAW,EACX,OAAO,EACP,SAAS,EACT,IAAI,EACL,MAAM,SAAS,CAAC;AAUjB,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC;;;GAGG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,OAAO,CASxE;AAED;;;GAGG;AACH,oFAAoF;AACpF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,eAAe,EAAE,IAAI,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,OAAO,CAAC;CAC3B,GAAG,YAAY,GAAG,gBAAgB,CAKlC;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,IAAI,GAAG,IAAI,EAClB,KAAK,EAAE,IAAI,GACV;IAAE,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAAA;CAAE,CAGlE;AAED,0EAA0E;AAC1E,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,EAC7B,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,GAC1B;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG,IAAI,CAIjC;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAE1D;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CACnC,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAET;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,CAE9D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAI,CAUtE;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC,GAC/C,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,SAAS,CAAC,GAAG,SAAS,CAE9C;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,GAAG,YAAY,CAAC,CAAC,GAC7D,OAAO,CAIT;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,GAAG,YAAY,CAAC,CAAC,EAC9D,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,OAAO,CAMT;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACrE;IACE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,IAAI,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAUN,kFAAkF;AAClF,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,EAC5D,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,IAAI,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAC5D,GAAG,CAAC,MAAM,CAAC,CAYb;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,IAAI,EACX,OAAO,EAAE,QAAQ,EAAE,EACnB,KAAK,EAAE,WAAW,EAAE,EACpB,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,EAC/B,OAAO,EAAE,MAAM,GACd,eAAe,GAAG,IAAI,CA0CxB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,MAAM,CAAC;CACvB;AAqBD,6FAA6F;AAC7F,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,IAAI,CAAC;CACd,GAAG;IAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAmBvC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,EAAE,CAsEjF;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,GAAG,YAAY,CAAC,CAAC,EAC9D,OAAO,EAAE,MAAM,MAAM,GACpB,OAAO,GAAG,IAAI,CAOhB;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,IAAI,CAAC;IACZ,OAAO,EAAE,MAAM,MAAM,CAAC;CACvB,GAAG;IAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CA6BzC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,WAAW,EAAE,EACpB,OAAO,EAAE,MAAM,MAAM,GACpB,OAAO,EAAE,CA4BX"}
1
+ {"version":3,"file":"routeStubs.d.ts","sourceRoot":"","sources":["../../src/editor/routeStubs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { BatchOp, CmShape, CmShapeAssignment, ShapeGeometry } from '../core';
2
+ /** No 0/O/1/I/L — keeps IDs short and easy to read. */
3
+ export declare const SHAPE_KEY_ALPHABET = "abcdefghjkmnpqrstuvwxyz23456789";
4
+ export declare const SHAPE_KEY_SUFFIX_LENGTH = 4;
5
+ export declare function shapeKeyPrefix(kind: string): string;
6
+ export declare function randomShapeKeySuffix(length?: number): string;
7
+ /** True for the short IDs we mint (`unit-k4n8`), not SVG ids like `unit-101`. */
8
+ export declare function isAllocatedShapeKey(key: string): boolean;
9
+ export declare function liveShapeKeysOnLevel(shapes: Array<{
10
+ levelId: number;
11
+ key: string;
12
+ orphanedAt?: string | null;
13
+ }>, levelId: number): string[];
14
+ export declare function copyDestinationLevels<T extends {
15
+ id: number;
16
+ }>(levels: T[], currentLevelId: number): T[];
17
+ /**
18
+ * Mint a short unique key for a new or copied shape.
19
+ * `suffix` is injectable so tests can pin the random part.
20
+ */
21
+ export declare function allocShapeKey(kind: string, taken: Iterable<string>, suffix?: () => string): string;
22
+ export declare function cloneShapeGeometry(geometry: ShapeGeometry): ShapeGeometry;
23
+ export declare function copyShapeToLevelOps(args: {
24
+ shape: CmShape;
25
+ assignment?: CmShapeAssignment | null;
26
+ targetLevelId: number;
27
+ shapes: Array<{
28
+ id: number;
29
+ levelId: number;
30
+ key: string;
31
+ orphanedAt?: string | null;
32
+ }>;
33
+ allocId: () => number;
34
+ allocKey?: (kind: string, taken: Iterable<string>) => string;
35
+ }): {
36
+ ops: BatchOp[];
37
+ shapeId: number;
38
+ key: string;
39
+ } | null;
40
+ //# sourceMappingURL=shapeCopy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shapeCopy.d.ts","sourceRoot":"","sources":["../../src/editor/shapeCopy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,OAAO,EACP,iBAAiB,EACjB,aAAa,EAEd,MAAM,SAAS,CAAC;AAuBjB,uDAAuD;AACvD,eAAO,MAAM,kBAAkB,oCAAoC,CAAC;AACpE,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,oBAAoB,CAClC,MAAM,SAA0B,GAC/B,MAAM,CAQR;AAID,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC,EACF,OAAO,EAAE,MAAM,GACd,MAAM,EAAE,CAIV;AAED,wBAAgB,qBAAqB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAC5D,MAAM,EAAE,CAAC,EAAE,EACX,cAAc,EAAE,MAAM,GACrB,CAAC,EAAE,CAEL;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,MAAM,GAAE,MAAM,MAA6B,GAC1C,MAAM,CAUR;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,CAOzE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC;CAC9D,GAAG;IAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgC1D"}
@@ -0,0 +1,6 @@
1
+ export type ShapeSelectOpts = {
2
+ additive?: boolean;
3
+ };
4
+ /** Plain click replaces; Shift-click toggles the id in the set. */
5
+ export declare function nextSelectedShapeIds(current: number[], id: number | null, opts?: ShapeSelectOpts): number[];
6
+ //# sourceMappingURL=shapeSelection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shapeSelection.d.ts","sourceRoot":"","sources":["../../src/editor/shapeSelection.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAErD,mEAAmE;AACnE,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EAAE,EACjB,EAAE,EAAE,MAAM,GAAG,IAAI,EACjB,IAAI,CAAC,EAAE,eAAe,GACrB,MAAM,EAAE,CAKV"}
@@ -1,5 +1,5 @@
1
1
  import { default as React } from 'react';
2
- export type EditorTool = 'select' | 'pan' | 'draw-unit' | 'draw-polygon' | 'draw-line' | 'curve' | 'split-join' | 'draw-text' | 'draw-route' | 'create-route' | 'create-route-multi';
2
+ export type EditorTool = 'select' | 'pan' | 'draw-unit' | 'draw-polygon' | 'draw-circle' | 'draw-void' | 'draw-void-circle' | 'curve' | 'split-join' | 'draw-text' | 'draw-entrance' | 'draw-route' | 'create-route' | 'create-route-multi';
3
3
  export declare const EDITOR_TOOLS: Array<{
4
4
  id: EditorTool;
5
5
  label: string;
@@ -8,6 +8,8 @@ export declare const EDITOR_TOOLS: Array<{
8
8
  group?: 'map' | 'route';
9
9
  /** When set, the label is shown beside the icon instead of only as a tooltip. */
10
10
  caption?: string;
11
+ /** Draw a toolbar separator immediately before this tool. */
12
+ sepBefore?: boolean;
11
13
  }>;
12
14
  export declare function isRouteTool(tool: string): boolean;
13
15
  /** Empty-canvas clicks start a new path with Create Route or Multi Route. */
@@ -19,6 +21,14 @@ export declare function nextRouteChainAnchor(tool: string, endAnchorId: number |
19
21
  /** Select and Curve can click a shape to make it the edit target. */
20
22
  export declare function canSelectShapes(tool: EditorTool): boolean;
21
23
  export declare function isSplitJoinTool(tool: EditorTool): boolean;
24
+ /** Click-to-place closed polygons — stores or atrium openings. */
25
+ export declare function isPolygonDrawTool(tool: EditorTool): boolean;
26
+ /** Click-drag oval / circle — stores or Open to Below. */
27
+ export declare function isEllipseDrawTool(tool: EditorTool): boolean;
28
+ /** Rectangle, polygon, circle, and Open to Below — plus cursor for placement. */
29
+ export declare function isShapeDrawTool(tool: EditorTool): boolean;
30
+ /** Click-to-place text or entrance stamps. */
31
+ export declare function isStampDrawTool(tool: EditorTool): boolean;
22
32
  /** Click two open ends to join them — Select after a split, or Split / Join. */
23
33
  export declare function canJoinOpenEnds(tool: EditorTool): boolean;
24
34
  /** Corner anchors — Select, Curve, and Split / Join. */
@@ -29,7 +39,7 @@ export declare function showsCurveHandles(tool: EditorTool): boolean;
29
39
  export declare function emptyCanvasDragPans(tool: EditorTool): boolean;
30
40
  /** Create Route or Multi Route again returns to Select. */
31
41
  export declare function nextEditorTool(current: EditorTool, next: EditorTool): EditorTool;
32
- export declare function toolHint(tool: EditorTool): string;
42
+ export declare function toolHint(tool: EditorTool, group?: 'map' | 'route'): string;
33
43
  export interface EditorToolButtonsProps {
34
44
  tool: EditorTool;
35
45
  onToolChange: (tool: EditorTool) => void;
@@ -1 +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,OAAO,GACP,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,cAAc,GACd,oBAAoB,CAAC;AAEzB,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC;IAC/B,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iEAAiE;IACjE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;IACxB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CA2BA,CAAC;AAEF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMjD;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,uEAAuE;AACvE,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACrC,MAAM,GAAG,IAAI,CAGf;AAmQD,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAEzD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAEzD;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAEzD;AAED,wDAAwD;AACxD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAE3D;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAE3D;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAQ7D;AAED,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAGhF;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CA0BjD;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,gFAAgF;IAChF,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;CACzB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,KAAK,GACN,EAAE,sBAAsB,qBAyCxB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,OAAO,EACP,QAAgB,EAChB,MAAM,EACN,MAAM,GACP,EAAE,yBAAyB,qBAyB3B"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/editor/tools.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ declare module '*.woff?url' {
2
+ const url: string;
3
+ export default url;
4
+ }
@@ -0,0 +1,5 @@
1
+ /** CSS family — same Montserrat as admin-portal / Edit Map chrome. */
2
+ export declare const MAP_FONT_FAMILY = "Montserrat, sans-serif";
3
+ /** Shared by Edit Map SVG tspans and default-map troika `<Text>`. */
4
+ export declare const MAP_LABEL_LINE_HEIGHT = 1.15;
5
+ //# sourceMappingURL=mapFont.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapFont.d.ts","sourceRoot":"","sources":["../../src/fonts/mapFont.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAExD,qEAAqE;AACrE,eAAO,MAAM,qBAAqB,OAAO,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Troika (drei `<Text>`) cannot use CSS `font-family`; it needs a font file.
3
+ * Latin 400 WOFF, same face as `@fontsource/montserrat` / admin-portal.
4
+ */
5
+ export declare const MAP_FONT_URL: string;
6
+ /** Register Montserrat so SVG + canvas measurement match the 3D overlay. */
7
+ export declare function ensureMapFont(): void;
8
+ //# sourceMappingURL=mapFontUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapFontUrl.d.ts","sourceRoot":"","sources":["../../src/fonts/mapFontUrl.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,YAAY,QAAa,CAAC;AAIvC,4EAA4E;AAC5E,wBAAgB,aAAa,IAAI,IAAI,CASpC"}
@@ -0,0 +1,39 @@
1
+ import { AllAmenities, AssignAmenities, getAmenityByType, getMapSpecialSvg, isAssignAmenity, mapSpecialSvgToDataUrl, recolorMapSvg } from '../../threejs-map/src/amenities.ts';
2
+ import { CmAmenityCatalogItem, CmShapeAssignment } from './core';
3
+ export { AllAmenities, AssignAmenities, getAmenityByType, isAssignAmenity, getMapSpecialSvg, mapSpecialSvgToDataUrl, recolorMapSvg, };
4
+ export declare function entranceIconDataUrl(color?: string | null): string | undefined;
5
+ /** v1 amenity list for the assign dropdown — elevator / escalator are separate modules. */
6
+ export declare function amenityAssignOptions(): {
7
+ value: string;
8
+ label: string;
9
+ }[];
10
+ export declare function amenityTypeFromCatalogId(amenityId: number | null | undefined, amenities: CmAmenityCatalogItem[]): string;
11
+ export declare function amenityCatalogIdForType(type: string, amenities: CmAmenityCatalogItem[]): number | null;
12
+ export declare function assignmentSpecialIconDataUrl(assignment: CmShapeAssignment | null | undefined, amenities: Array<{
13
+ id: number;
14
+ code: string;
15
+ }>, color?: string | null): string | undefined;
16
+ export type ConnectorSpecialKind = 'escalator' | 'elevator';
17
+ /** Escalator / elevator SVG ids from the floor file (`escalator-5-up-start`). */
18
+ export declare function connectorSpecialKind(shape: {
19
+ key: string;
20
+ sourceSvgId?: string | null;
21
+ }): ConnectorSpecialKind | null;
22
+ export declare function connectorSpecialIconDataUrl(kind: ConnectorSpecialKind, assigned: boolean, color?: string | null): string | undefined;
23
+ /** Landings that belong to a linked escalator ride / elevator shaft. */
24
+ export declare function assignedConnectorShapeIds(anchors: Array<{
25
+ shapeId?: number | null;
26
+ connectorId?: number | null;
27
+ }>): Set<number>;
28
+ /**
29
+ * Map overlay: only a linked landing gets an icon. Unassigned escalators
30
+ * (and elevators) stay as empty polygons so the floor is not covered in gray
31
+ * markers.
32
+ */
33
+ export declare function connectorMapIconKind(shape: {
34
+ id: number;
35
+ key: string;
36
+ sourceSvgId?: string | null;
37
+ orphanedAt?: string | Date | null;
38
+ }, assignedShapeIds: Set<number>): ConnectorSpecialKind | null;
39
+ //# sourceMappingURL=specialIcons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specialIcons.d.ts","sourceRoot":"","sources":["../src/specialIcons.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,aAAa,EACd,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAGtE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,GACd,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAI7E;AAED,2FAA2F;AAC3F,wBAAgB,oBAAoB,IAAI;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAKzE;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,SAAS,EAAE,oBAAoB,EAAE,GAChC,MAAM,CAGR;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,oBAAoB,EAAE,GAChC,MAAM,GAAG,IAAI,CAKf;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EAChD,SAAS,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC9C,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACpB,MAAM,GAAG,SAAS,CAMpB;AAED,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,UAAU,CAAC;AAK5D,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,GAAG,oBAAoB,GAAG,IAAI,CAQ9B;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAE,OAAO,EACjB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACpB,MAAM,GAAG,SAAS,CASpB;AAED,wEAAwE;AACxE,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,KAAK,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,GACvE,GAAG,CAAC,MAAM,CAAC,CAQb;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE;IACL,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;CACnC,EACD,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC5B,oBAAoB,GAAG,IAAI,CAK7B"}
@@ -1 +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"}
1
+ {"version":3,"file":"ModernSelect.d.ts","sourceRoot":"","sources":["../../src/ui/ModernSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmE,MAAM,OAAO,CAAC;AAExF,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;AAuB3D,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,qBAuSA"}
@@ -1,6 +1,9 @@
1
1
  export interface ModernSelectOption {
2
2
  value: string;
3
3
  label: string;
4
+ hint?: string;
5
+ iconUrl?: string;
6
+ iconMuted?: boolean;
4
7
  }
5
8
  /** Show a search field once a list is long enough to scan by eye. */
6
9
  export declare const MODERN_SELECT_SEARCH_AFTER = 8;
@@ -1 +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
+ {"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;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,qEAAqE;AACrE,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,kBAAkB,EAAE,EAC7B,KAAK,EAAE,MAAM,GACZ,kBAAkB,EAAE,CAOtB;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,OAAO,GACnB,OAAO,CAET"}
@@ -18,7 +18,20 @@ export interface MapViewerProps {
18
18
  imageProxyUrl?: string | null;
19
19
  themeOverrides?: Partial<ThemeDefaults>;
20
20
  onExtractedAmenities?: (codes: string[]) => void;
21
- onSelectShape?: (shapeId: number) => void;
21
+ onSelectShape?: (shapeId: number | null, opts?: {
22
+ additive?: boolean;
23
+ }) => void;
24
+ /** Zoom to this shape (PORTAL default-map assign). */
25
+ selectedShapeId?: number | null;
26
+ /** Extra selected shapes when Shift-selecting in PORTAL assign. */
27
+ selectedShapeIds?: number[];
28
+ /** Highlight from the Map options list (same fill as pointer hover). */
29
+ hoveredShapeId?: number | null;
30
+ /**
31
+ * Bump when staff pick a row in the rail so the camera re-frames even if
32
+ * the same shape is already selected.
33
+ */
34
+ focusNonce?: number;
22
35
  /** Controlled floor when embedded (e.g. PORTAL default). */
23
36
  activeLevelId?: number | null;
24
37
  onActiveLevelChange?: (levelId: number) => void;
@@ -1 +1 @@
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"}
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;AAuBjB,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,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAChF,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,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;AAuBD,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,qBAyV9C;AAED,eAAe,SAAS,CAAC"}
@@ -1,4 +1,4 @@
1
- import { SceneBounds, Vec2 } from '../core';
1
+ import { BBox, LevelTransform, SceneBounds, Vec2 } from '../core';
2
2
  /**
3
3
  * Stored geometry is raw SVG user space, where Y grows downward. The scene
4
4
  * mirrors Y once so the camera can keep a conventional `up = [0, 1, 0]`.
@@ -22,9 +22,89 @@ export declare function boundsExtent(bounds: SceneBounds): {
22
22
  height: number;
23
23
  };
24
24
  export declare const VIEWER_ZOOM_ANIM_MS = 240;
25
+ /**
26
+ * Selection pan/zoom. v1 used 0.2s of linear travel (`CAMERA.animSpeed`).
27
+ * Ease-in-out over 200ms bunched the motion into the last frames and looked
28
+ * like a snap; ease-out over 400ms reads as a short, smooth glide.
29
+ */
30
+ export declare const VIEWER_FOCUS_ANIM_MS = 400;
31
+ /** Extra space around a small focused shape so it does not fill the canvas. */
32
+ export declare const FOCUS_BOUNDS_PADDING = 1;
33
+ /**
34
+ * Padding for a large store (extent ≥ `FOCUS_LARGE_EXTENT`).
35
+ * 2.0 → the store occupies about a third of the frame, so neighbors stay visible.
36
+ */
37
+ export declare const FOCUS_LARGE_PADDING = 2;
38
+ /** World size at which padding reaches `FOCUS_LARGE_PADDING`. */
39
+ export declare const FOCUS_LARGE_EXTENT = 400;
40
+ /**
41
+ * Padding stays tight until this size (typical small store). Kiosks and
42
+ * amenities below this still zoom closer via `FOCUS_MIN_EXTENT`.
43
+ */
44
+ export declare const FOCUS_PAD_SMALL_EXTENT = 80;
45
+ /**
46
+ * Floor for the framed world size. Tiny amenities keep neighbors in view
47
+ * instead of filling the canvas; anything larger frames to its own bbox.
48
+ */
49
+ export declare const FOCUS_MIN_EXTENT = 52;
50
+ /**
51
+ * Click-to-focus cap vs the full-map fit. A typical store stays at a
52
+ * neighborhood view; 64× filled the canvas on the default assign map.
53
+ */
54
+ export declare const FOCUS_MAX_ZOOM_MULTIPLE = 8;
55
+ /**
56
+ * Tiny kiosks/amenities may go closer than a store so they stay readable.
57
+ * Still far below a canvas-filling close-up.
58
+ */
59
+ export declare const FOCUS_SMALL_MAX_ZOOM_MULTIPLE = 14;
60
+ /** Manual +/− ceiling, independent of selection focus. */
61
+ export declare const VIEWER_MAX_ZOOM_MULTIPLE = 16;
62
+ /** More margin as the store grows so a department store is not edge-to-edge. */
63
+ export declare function focusPaddingRatio(width: number, height: number, paddingRatio?: number, smallExtent?: number, largePadding?: number, largeExtent?: number): number;
64
+ /**
65
+ * Expand a shape's bounds for a "click to assign" camera frame.
66
+ * Small units keep a tighter frame; large stores pull the camera back.
67
+ */
68
+ export declare function paddedFocusBounds(bounds: SceneBounds, paddingRatio?: number, minExtent?: number): SceneBounds;
69
+ /**
70
+ * How far a click may zoom relative to the fitted map. Smaller padded
71
+ * frames (kiosks) get more zoom; store-sized frames stay at 8×.
72
+ */
73
+ export declare function focusMaxZoomMultiple(paddedWidth: number, paddedHeight: number, typicalMultiple?: number, smallMultiple?: number): number;
74
+ export declare function clampFocusZoom(shapeFitZoom: number, mapFitZoom: number, maxMultiple?: number): number;
75
+ type FocusLevel = {
76
+ shapes: Array<{
77
+ id: number;
78
+ bbox: BBox;
79
+ }>;
80
+ transform: LevelTransform;
81
+ };
82
+ /** Stable key so adding/removing a Shift-selected shape re-frames the camera. */
83
+ export declare function selectionFocusKey(shapeIds: number[]): string | null;
84
+ /** View-space frame for one or more published shapes. */
85
+ export declare function viewFocusBoundsForShapes(levels: FocusLevel[], shapeIds: number[]): SceneBounds | null;
86
+ /** View-space frame for a published shape, ready for `CameraRig.focusBounds`. */
87
+ export declare function viewFocusBoundsForShape(levels: FocusLevel[], shapeId: number): SceneBounds | null;
25
88
  export declare function easeOutCubic(t: number): number;
89
+ /** Symmetric ease so a selection pan is visible the whole way, like v1's lerp. */
90
+ export declare function easeInOutCubic(t: number): number;
26
91
  export declare function lerp(a: number, b: number, t: number): number;
92
+ export interface CameraPose {
93
+ zoom: number;
94
+ position: [number, number, number];
95
+ target: [number, number, number];
96
+ }
97
+ /** Interpolate zoom + pan/orbit for a smooth +/− / Reset / selection focus. */
98
+ export declare function interpolateCameraPose(from: CameraPose, to: CameraPose, t: number, ease?: (t: number) => number): CameraPose;
99
+ export declare function cameraPosesNear(a: CameraPose, b: CameraPose, epsilon?: number): boolean;
27
100
  export declare function nextOrthoZoom(current: number, direction: 1 | -1, step: number, min: number, max: number): number;
101
+ /**
102
+ * Wheel zoom keeps the pointer over the same map point (Google Maps-style).
103
+ * Speed is three-stdlib `pow(0.95, zoomSpeed)` per event — same helper as
104
+ * Edit Map / Wayfinding (`nextZoomFromWheel`).
105
+ * +/− still zooms about the view centre because those buttons have no cursor.
106
+ */
107
+ export declare const ORBIT_ZOOM_TO_CURSOR = true;
28
108
  export declare function orbitMouseButtons(is3d: boolean): {
29
109
  LEFT: number;
30
110
  MIDDLE: number;
@@ -34,4 +114,5 @@ export declare function orbitTouches(is3d: boolean): {
34
114
  ONE: number;
35
115
  TWO: number;
36
116
  };
117
+ export {};
37
118
  //# sourceMappingURL=camera.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../src/viewer/camera.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,20 @@ export interface MapCameraHandle {
5
5
  zoomIn: () => void;
6
6
  zoomOut: () => void;
7
7
  reset: () => void;
8
+ /** View-space bounds (already Y-flipped). Animates pan + zoom onto the shape. */
9
+ focusBounds: (focus: SceneBounds) => void;
8
10
  }
11
+ /** Survives Canvas / camera remounts so Settings color tweaks keep the view. */
12
+ export interface CameraViewSnapshot {
13
+ is3d: boolean;
14
+ boundsKey: string;
15
+ zoom: number;
16
+ position: [number, number, number];
17
+ target: [number, number, number];
18
+ userAdjusted: boolean;
19
+ focusKey?: string | number | null;
20
+ }
21
+ export declare function cameraBoundsKey(bounds: SceneBounds, is3d: boolean): string;
9
22
  export interface CameraRigProps {
10
23
  /** View-space bounds — already Y-flipped by the scene, so up is +Y. */
11
24
  bounds: SceneBounds;
@@ -13,6 +26,10 @@ export interface CameraRigProps {
13
26
  is3d: boolean;
14
27
  controlsRef: React.RefObject<OrbitControls | null>;
15
28
  cameraRef?: React.Ref<MapCameraHandle | null>;
29
+ persistedViewRef: React.MutableRefObject<CameraViewSnapshot | null>;
30
+ /** Selection key; when it changes the camera eases onto `focusViewBounds`. */
31
+ focusKey?: string | number | null;
32
+ focusViewBounds?: SceneBounds | null;
16
33
  }
17
- export declare function CameraRig({ bounds, theme, is3d, controlsRef, cameraRef, }: CameraRigProps): null;
34
+ export declare function CameraRig({ bounds, theme, is3d, controlsRef, cameraRef, persistedViewRef, focusKey, focusViewBounds, }: CameraRigProps): null;
18
35
  //# sourceMappingURL=CameraRig.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"CameraRig.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/CameraRig.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+E,MAAM,OAAO,CAAC;AAEpG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAiB7D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,iFAAiF;IACjF,WAAW,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CAC3C;AAED,gFAAgF;AAChF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAW1E;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;IAC9C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IACpE,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClC,eAAe,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CACtC;AAED,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,KAAK,EACL,IAAI,EACJ,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,QAAe,EACf,eAAsB,GACvB,EAAE,cAAc,QAibhB"}
@@ -1,16 +1,27 @@
1
1
  import { default as React } from 'react';
2
- import { PublishedLevel, ThemeDefaults } from '../../core';
2
+ import { CmAmenityCatalogItem, PublishedLevel, ThemeDefaults } from '../../core';
3
3
  export interface LevelMeshesProps {
4
4
  level: PublishedLevel;
5
5
  theme: ThemeDefaults;
6
6
  is3d: boolean;
7
- selectedRetailerId?: number | null;
8
- onSelectShape?: (shapeId: number) => void;
7
+ onSelectShape?: (shapeId: number | null, opts?: {
8
+ additive?: boolean;
9
+ }) => void;
10
+ /** Assign-map selection — same highlight as hover so staff can see the set. */
11
+ selectedShapeIds?: readonly number[];
12
+ /** Rail / search hover — same darker fill as pointer hover. */
13
+ hoveredShapeId?: number | null;
14
+ /** Host that owns pointer events (and therefore the CSS cursor). */
15
+ eventSource?: React.RefObject<HTMLElement | null>;
9
16
  /**
10
17
  * When true (outdoor with live SVG), only interactive shapes are drawn —
11
18
  * decoration comes from SvgVectorLayer.
12
19
  */
13
20
  interactiveOnly?: boolean;
21
+ /** Same media proxy as outdoor SVGs — retailer logos are often cross-origin. */
22
+ imageProxyUrl?: string | null;
23
+ /** Published amenity catalog — used to resolve v1 amenity icons by code. */
24
+ amenities?: CmAmenityCatalogItem[];
14
25
  }
15
- export declare function LevelMeshes({ level, theme, is3d, selectedRetailerId, onSelectShape, interactiveOnly, }: LevelMeshesProps): React.JSX.Element;
26
+ export declare function LevelMeshes({ level, theme, is3d, onSelectShape, selectedShapeIds, hoveredShapeId: hoveredShapeIdProp, eventSource, interactiveOnly, imageProxyUrl, amenities, }: LevelMeshesProps): React.JSX.Element;
16
27
  //# 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;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
+ {"version":3,"file":"LevelMeshes.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/LevelMeshes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAG5D,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,aAAa,EAEd,MAAM,YAAY,CAAC;AA+EpB,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAChF,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,oEAAoE;IACpE,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAClD;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,4EAA4E;IAC5E,SAAS,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACpC;AAgCD,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,IAAI,EACJ,aAAa,EACb,gBAAqB,EACrB,cAAc,EAAE,kBAAyB,EACzC,WAAW,EACX,eAAuB,EACvB,aAAoB,EACpB,SAAc,GACf,EAAE,gBAAgB,qBA6TlB"}
@@ -1,17 +1,23 @@
1
1
  import { default as React } from 'react';
2
- import { PathResult, PublishedDocument, ThemeDefaults } from '../../core';
2
+ import { PathResult, PublishedDocument, SceneBounds, ThemeDefaults } from '../../core';
3
3
  import { MapCameraHandle } from './CameraRig';
4
4
  export interface MapSceneProps {
5
5
  doc: PublishedDocument;
6
6
  theme: ThemeDefaults;
7
7
  activeLevelId: number | null;
8
8
  route: PathResult | null;
9
- selectedRetailerId?: number | null;
9
+ selectedShapeId?: number | null;
10
+ selectedShapeIds?: number[];
11
+ hoveredShapeId?: number | null;
12
+ focusKey?: string | number | null;
13
+ focusViewBounds?: SceneBounds | null;
10
14
  cameraRef?: React.Ref<MapCameraHandle | null>;
11
- onSelectShape?: (shapeId: number, levelId: number) => void;
15
+ onSelectShape?: (shapeId: number | null, levelId: number, opts?: {
16
+ additive?: boolean;
17
+ }) => void;
12
18
  imageProxyUrl?: string | null;
13
19
  /** Keep pointer events inside the map canvas host so header/footer stay clickable. */
14
20
  eventSource?: React.RefObject<HTMLElement | null>;
15
21
  }
16
- export declare function MapScene({ doc, theme, activeLevelId, route, selectedRetailerId, cameraRef, onSelectShape, imageProxyUrl, eventSource, }: MapSceneProps): React.JSX.Element;
22
+ export declare function MapScene({ doc, theme, activeLevelId, route, selectedShapeId, selectedShapeIds, hoveredShapeId, focusKey, focusViewBounds, cameraRef, onSelectShape, imageProxyUrl, eventSource, }: MapSceneProps): React.JSX.Element;
17
23
  //# 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,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"}
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,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAW5F,OAAO,EAAsC,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAevF,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,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClC,eAAe,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAC9C,aAAa,CAAC,EAAE,CACd,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,KAC1B,IAAI,CAAC;IACV,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,eAAe,EACf,gBAAgB,EAChB,cAAqB,EACrB,QAAQ,EACR,eAAe,EACf,SAAS,EACT,aAAa,EACb,aAAa,EACb,WAAW,GACZ,EAAE,aAAa,qBAsNf"}
@@ -0,0 +1,7 @@
1
+ import { default as React } from 'react';
2
+ import { Vec2 } from '../../core';
3
+ export declare function OpeningWells({ polygons, }: {
4
+ polygons: Vec2[][];
5
+ is3d?: boolean;
6
+ }): React.JSX.Element | null;
7
+ //# sourceMappingURL=OpeningWell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpeningWell.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/OpeningWell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAElD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AA2HvC,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,4BASA"}
@@ -1 +1 @@
1
- {"version":3,"file":"RouteLine.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/RouteLine.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,aAAa,EACb,KAAK,GACN,EAAE;IACD,KAAK,EAAE,UAAU,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf,4BAgBA"}
1
+ {"version":3,"file":"RouteLine.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/RouteLine.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,aAAa,EACb,KAAK,GACN,EAAE;IACD,KAAK,EAAE,UAAU,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf,4BAmBA"}
@@ -7,6 +7,8 @@ export interface SvgVectorLayerProps {
7
7
  suppressIds?: ReadonlySet<string>;
8
8
  imageProxyUrl?: string | null;
9
9
  is3d?: boolean;
10
+ /** Settings overrides for house outdoor colors. */
11
+ theme?: Partial<Record<string, string>> | null;
10
12
  }
11
13
  /**
12
14
  * Live outdoor SVG as real vector geometry (not a raster texture).
@@ -14,5 +16,5 @@ export interface SvgVectorLayerProps {
14
16
  * Illustrator fills. Skips route-path* and interactive ids owned by the DB.
15
17
  * Coordinates stay in SVG user space — `MapScene` flips the whole scene.
16
18
  */
17
- export declare function SvgVectorLayer({ url, suppressIds, imageProxyUrl, is3d, }: SvgVectorLayerProps): React.JSX.Element | null;
19
+ export declare function SvgVectorLayer({ url, suppressIds, imageProxyUrl, is3d, theme, }: SvgVectorLayerProps): React.JSX.Element | null;
18
20
  //# sourceMappingURL=SvgVectorLayer.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"SvgVectorLayer.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/SvgVectorLayer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAG5D,OAAO,EAOL,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;IACf,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;CAChD;AAWD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,WAAW,EACX,aAAa,EACb,IAAY,EACZ,KAAK,GACN,EAAE,mBAAmB,4BAgIrB"}
@@ -0,0 +1,7 @@
1
+ import { Vec2 } from '../../core';
2
+ import * as THREE from 'three';
3
+ export declare function polygonToThreeShape(points: Vec2[]): THREE.Shape | null;
4
+ export declare function polygonToThreePath(points: Vec2[]): THREE.Path | null;
5
+ /** Punch overlapping openings out of a slab polygon. */
6
+ export declare function slabShapeWithHoles(outer: Vec2[], holes: Vec2[][]): THREE.Shape | null;
7
+ //# sourceMappingURL=openingGeometry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openingGeometry.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/openingGeometry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAStE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,CASpE;AAED,wDAAwD;AACxD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,IAAI,EAAE,EACb,KAAK,EAAE,IAAI,EAAE,EAAE,GACd,KAAK,CAAC,KAAK,GAAG,IAAI,CAQpB"}