@kuraykaraaslan/kui-viewer 0.1.0 → 0.1.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 (85) hide show
  1. package/README.md +9 -1
  2. package/dist/index.js +5276 -4787
  3. package/dist/index.js.map +1 -1
  4. package/dist/libs/three-helpers/selection-highlight.d.ts +7 -1
  5. package/dist/libs/three-helpers/selection-highlight.d.ts.map +1 -1
  6. package/dist/modules/clipping/clipping.service.d.ts +33 -1
  7. package/dist/modules/clipping/clipping.service.d.ts.map +1 -1
  8. package/dist/modules/clipping/clipping.store.d.ts +1 -0
  9. package/dist/modules/clipping/clipping.store.d.ts.map +1 -1
  10. package/dist/modules/clipping/clipping.types.d.ts +1 -0
  11. package/dist/modules/clipping/clipping.types.d.ts.map +1 -1
  12. package/dist/modules/domains/bim/extensions/BimClippingExtension.d.ts +4 -0
  13. package/dist/modules/domains/bim/extensions/BimClippingExtension.d.ts.map +1 -1
  14. package/dist/modules/domains/bim/extensions/BimMeasurementExtension.d.ts.map +1 -1
  15. package/dist/modules/domains/bim/extensions/BimVisibilityExtension.d.ts.map +1 -1
  16. package/dist/modules/domains/bim/ui/BcfDialog.constants.d.ts +3 -3
  17. package/dist/modules/domains/bim/ui/BcfDialog.constants.d.ts.map +1 -1
  18. package/dist/modules/domains/bim/ui/ClippingPanel.d.ts.map +1 -1
  19. package/dist/modules/domains/bim/ui/MeasurementToolbar.d.ts +5 -1
  20. package/dist/modules/domains/bim/ui/MeasurementToolbar.d.ts.map +1 -1
  21. package/dist/modules/domains/bim/ui/VisibilityToolbar.d.ts.map +1 -1
  22. package/dist/modules/extensions/ContextMenu/ContextMenuExtension.d.ts +11 -0
  23. package/dist/modules/extensions/ContextMenu/ContextMenuExtension.d.ts.map +1 -0
  24. package/dist/modules/extensions/Horizon/HorizonExtension.d.ts.map +1 -1
  25. package/dist/modules/extensions/IotSensors/IotSensorsExtension.d.ts.map +1 -1
  26. package/dist/modules/extensions/MapTile/MapTileExtension.mesh.d.ts.map +1 -1
  27. package/dist/modules/extensions/Picking/PickingExtension.d.ts +13 -0
  28. package/dist/modules/extensions/Picking/PickingExtension.d.ts.map +1 -0
  29. package/dist/modules/extensions/Snap/SnapExtension.d.ts +7 -0
  30. package/dist/modules/extensions/Snap/SnapExtension.d.ts.map +1 -0
  31. package/dist/modules/index.viewer-core.d.ts +1 -0
  32. package/dist/modules/index.viewer-core.d.ts.map +1 -1
  33. package/dist/modules/measurement/measurement.service.d.ts +8 -1
  34. package/dist/modules/measurement/measurement.service.d.ts.map +1 -1
  35. package/dist/modules/measurement/measurement.store.d.ts +6 -0
  36. package/dist/modules/measurement/measurement.store.d.ts.map +1 -1
  37. package/dist/modules/measurement/renderer.d.ts +3 -1
  38. package/dist/modules/measurement/renderer.d.ts.map +1 -1
  39. package/dist/modules/measurement/snap.d.ts +1 -4
  40. package/dist/modules/measurement/snap.d.ts.map +1 -1
  41. package/dist/modules/ui/Button.d.ts +11 -0
  42. package/dist/modules/ui/Button.d.ts.map +1 -0
  43. package/dist/modules/ui/index.d.ts +1 -0
  44. package/dist/modules/ui/index.d.ts.map +1 -1
  45. package/dist/modules/viewer-core/context-menu/context-menu.d.ts +20 -0
  46. package/dist/modules/viewer-core/context-menu/context-menu.d.ts.map +1 -0
  47. package/dist/modules/viewer-core/helpers/helpers.d.ts.map +1 -1
  48. package/dist/modules/viewer-core/input/input-handlers.d.ts +16 -2
  49. package/dist/modules/viewer-core/input/input-handlers.d.ts.map +1 -1
  50. package/dist/modules/viewer-core/input/input-manager.d.ts +11 -0
  51. package/dist/modules/viewer-core/input/input-manager.d.ts.map +1 -1
  52. package/dist/modules/viewer-core/input/input.store.d.ts +8 -0
  53. package/dist/modules/viewer-core/input/input.store.d.ts.map +1 -1
  54. package/dist/modules/viewer-core/input/layers/snap-layer.d.ts +11 -3
  55. package/dist/modules/viewer-core/input/layers/snap-layer.d.ts.map +1 -1
  56. package/dist/modules/viewer-core/input/mouse-manager.d.ts +5 -0
  57. package/dist/modules/viewer-core/input/mouse-manager.d.ts.map +1 -1
  58. package/dist/modules/viewer-core/input/snap-glyph-renderer.d.ts +7 -0
  59. package/dist/modules/viewer-core/input/snap-glyph-renderer.d.ts.map +1 -0
  60. package/dist/modules/viewer-core/modal/drag-controller.d.ts.map +1 -1
  61. package/dist/modules/viewer-core/modal/index.d.ts +1 -0
  62. package/dist/modules/viewer-core/modal/index.d.ts.map +1 -1
  63. package/dist/modules/viewer-core/modal/modal-window.chrome.d.ts.map +1 -1
  64. package/dist/modules/viewer-core/modal/modal-window.d.ts +1 -0
  65. package/dist/modules/viewer-core/modal/modal-window.d.ts.map +1 -1
  66. package/dist/modules/viewer-core/modal/open-or-focus-modal.d.ts +3 -0
  67. package/dist/modules/viewer-core/modal/open-or-focus-modal.d.ts.map +1 -0
  68. package/dist/modules/viewer-core/modal/styles.d.ts +1 -0
  69. package/dist/modules/viewer-core/modal/styles.d.ts.map +1 -1
  70. package/dist/modules/viewer-core/picking/picking.service.d.ts +13 -0
  71. package/dist/modules/viewer-core/picking/picking.service.d.ts.map +1 -1
  72. package/dist/modules/viewer-core/viewer/viewer.d.ts +18 -0
  73. package/dist/modules/viewer-core/viewer/viewer.d.ts.map +1 -1
  74. package/dist/modules/viewer-core/viewer/viewer.render-loop.d.ts +5 -0
  75. package/dist/modules/viewer-core/viewer/viewer.render-loop.d.ts.map +1 -1
  76. package/dist/modules/viewer-core/visibility/visibility.d.ts +14 -1
  77. package/dist/modules/viewer-core/visibility/visibility.d.ts.map +1 -1
  78. package/dist/modules/viewer-core/visibility/visibility.service.d.ts +1 -1
  79. package/dist/modules/viewer-core/visibility/visibility.service.d.ts.map +1 -1
  80. package/dist/react/index.js +2348 -2155
  81. package/dist/react/index.js.map +1 -1
  82. package/dist/styles.css +127 -15
  83. package/package.json +4 -1
  84. package/dist/libs/three-helpers/clipping-gizmo.d.ts +0 -5
  85. package/dist/libs/three-helpers/clipping-gizmo.d.ts.map +0 -1
@@ -1,9 +1,15 @@
1
1
  import { Mesh } from "three";
2
+ import type { BufferGeometry, Matrix4, Object3D } from "three";
2
3
  import { LineSegments2 } from "three/examples/jsm/lines/LineSegments2.js";
4
+ export interface HighlightTarget {
5
+ geometry: BufferGeometry;
6
+ matrixWorld: Matrix4;
7
+ parent: Object3D | null;
8
+ }
3
9
  export type HighlightOverlay = {
4
10
  fill: Mesh;
5
11
  edges: LineSegments2;
6
- attach: (target: Mesh) => void;
12
+ attach: (target: HighlightTarget) => void;
7
13
  detach: () => void;
8
14
  dispose: () => void;
9
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"selection-highlight.d.ts","sourceRoot":"","sources":["../../../libs/three-helpers/selection-highlight.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,IAAI,EAAoC,MAAM,OAAO,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAI1E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,wBAAgB,sBAAsB,IAAI,gBAAgB,CA2EzD"}
1
+ {"version":3,"file":"selection-highlight.d.ts","sourceRoot":"","sources":["../../../libs/three-helpers/selection-highlight.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,IAAI,EAAoC,MAAM,OAAO,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAW1E,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1C,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,wBAAgB,sBAAsB,IAAI,gBAAgB,CA2EzD"}
@@ -4,14 +4,46 @@ import type { Axis } from "./clipping.types";
4
4
  export type OrbitControlsLike = {
5
5
  enabled: boolean;
6
6
  };
7
+ export type GizmoMode = "translate" | "rotate";
7
8
  export default class ClippingService {
8
9
  private static planes;
9
10
  private static gizmos;
10
11
  private static materials;
11
12
  private static unsubscribe;
12
- static init(materials: Material[]): void;
13
+ private static invalidate;
14
+ private static readonly scratchNormal;
15
+ private static readonly scratchQuat;
16
+ /**
17
+ * @param invalidate Requests a repaint from the owning Viewer's on-demand
18
+ * render loop. Covers both the store-driven path (panel toggle/slider)
19
+ * and the TransformControls gizmo drag (which writes back into the
20
+ * store via `setValue`, routing through the same `apply()` below) —
21
+ * without it, dragging a clip plane would freeze the last-rendered
22
+ * frame instead of sweeping the cut live.
23
+ */
24
+ static init(materials: Material[], invalidate?: () => void): void;
25
+ /**
26
+ * Swap the live material list without re-subscribing — call whenever the
27
+ * scene's clippable content changes after `init()` (a new model loads,
28
+ * the demo placeholder scene resets) rather than calling `init()` again,
29
+ * which would leak a second `clippingStore` subscription (the first is
30
+ * never torn down). Re-applies the current store state immediately so
31
+ * already-enabled planes cut the newly swapped-in materials right away.
32
+ */
33
+ static setMaterials(materials: Material[]): void;
13
34
  private static apply;
35
+ private static resyncGizmoProxy;
14
36
  static attachGizmo(axis: Axis, renderer: WebGLRenderer, camera: Camera, scene: Scene, orbitControls: OrbitControlsLike): TransformControls;
37
+ /** Whether a TransformControls gizmo is currently attached for `axis`. */
38
+ static hasGizmo(axis: Axis): boolean;
39
+ /** Switch the attached gizmo between translate (default) and rotate.
40
+ * No-op if no gizmo is attached for `axis` — safe for a panel button to
41
+ * call unconditionally regardless of whether the axis is enabled. */
42
+ static setGizmoMode(axis: Axis, mode: GizmoMode): void;
43
+ /** Live gizmo mode for `axis`, or `null` if no gizmo is attached. A freshly
44
+ * attached gizmo always starts in "translate" — callers should re-read
45
+ * this rather than caching it across an enable/disable cycle. */
46
+ static getGizmoMode(axis: Axis): GizmoMode | null;
15
47
  static detachGizmo(axis: Axis): void;
16
48
  static dispose(): void;
17
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"clipping.service.d.ts","sourceRoot":"","sources":["../../../modules/clipping/clipping.service.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AAGrF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAW7C,MAAM,MAAM,iBAAiB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAgBrD,MAAM,CAAC,OAAO,OAAO,eAAe;IAIlC,OAAO,CAAC,MAAM,CAAC,MAAM,CAInB;IAEF,OAAO,CAAC,MAAM,CAAC,MAAM,CAAyC;IAC9D,OAAO,CAAC,MAAM,CAAC,SAAS,CAAkB;IAC1C,OAAO,CAAC,MAAM,CAAC,WAAW,CAA6B;IAEvD,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI;IAQxC,OAAO,CAAC,MAAM,CAAC,KAAK;IAqBpB,MAAM,CAAC,WAAW,CAChB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,iBAAiB,GAC/B,iBAAiB;IAoDpB,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAepC,MAAM,CAAC,OAAO,IAAI,IAAI;CAQvB"}
1
+ {"version":3,"file":"clipping.service.d.ts","sourceRoot":"","sources":["../../../modules/clipping/clipping.service.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AAGrF,OAAO,KAAK,EAAE,IAAI,EAAsB,MAAM,kBAAkB,CAAC;AAcjE,MAAM,MAAM,iBAAiB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAErD,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAoB/C,MAAM,CAAC,OAAO,OAAO,eAAe;IAIlC,OAAO,CAAC,MAAM,CAAC,MAAM,CAInB;IAEF,OAAO,CAAC,MAAM,CAAC,MAAM,CAAyC;IAC9D,OAAO,CAAC,MAAM,CAAC,SAAS,CAAkB;IAC1C,OAAO,CAAC,MAAM,CAAC,WAAW,CAA6B;IACvD,OAAO,CAAC,MAAM,CAAC,UAAU,CAAwB;IAIjD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAiB;IACtD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAEvD;;;;;;;OAOG;IACH,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,UAAU,GAAE,MAAM,IAAe,GAAG,IAAI;IAS3E;;;;;;;OAOG;IACH,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI;IAKhD,OAAO,CAAC,MAAM,CAAC,KAAK;IA+CpB,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAqB/B,MAAM,CAAC,WAAW,CAChB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,iBAAiB,GAC/B,iBAAiB;IAmFpB,0EAA0E;IAC1E,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO;IAIpC;;0EAEsE;IACtE,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IAMtD;;sEAEkE;IAClE,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI;IAKjD,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAyBpC,MAAM,CAAC,OAAO,IAAI,IAAI;CASvB"}
@@ -3,6 +3,7 @@ type ClippingStateAPI = {
3
3
  planes: Record<Axis, ClippingPlaneState>;
4
4
  setEnabled: (axis: Axis, enabled: boolean) => void;
5
5
  setValue: (axis: Axis, value: number) => void;
6
+ setNormal: (axis: Axis, normal: [number, number, number]) => void;
6
7
  reset: () => void;
7
8
  };
8
9
  export declare const clippingStore: import("zustand").StoreApi<ClippingStateAPI>;
@@ -1 +1 @@
1
- {"version":3,"file":"clipping.store.d.ts","sourceRoot":"","sources":["../../../modules/clipping/clipping.store.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEjE,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IACzC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACnD,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAUF,eAAO,MAAM,aAAa,8CAWvB,CAAC"}
1
+ {"version":3,"file":"clipping.store.d.ts","sourceRoot":"","sources":["../../../modules/clipping/clipping.store.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEjE,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IACzC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACnD,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAClE,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAUF,eAAO,MAAM,aAAa,8CAevB,CAAC"}
@@ -2,5 +2,6 @@ export type Axis = "x" | "y" | "z";
2
2
  export type ClippingPlaneState = {
3
3
  enabled: boolean;
4
4
  value: number;
5
+ normal?: [number, number, number];
5
6
  };
6
7
  //# sourceMappingURL=clipping.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"clipping.types.d.ts","sourceRoot":"","sources":["../../../modules/clipping/clipping.types.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEnC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,OAAO,CAAC;IAGjB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
1
+ {"version":3,"file":"clipping.types.d.ts","sourceRoot":"","sources":["../../../modules/clipping/clipping.types.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEnC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,OAAO,CAAC;IAKjB,KAAK,EAAE,MAAM,CAAC;IAId,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,CAAC"}
@@ -8,6 +8,10 @@ export declare class BimClippingExtension extends Extension<BimClippingOptions>
8
8
  static readonly id = "KUI.Bim.Clipping";
9
9
  load(): void;
10
10
  unload(): void;
11
+ /** Swap the clippable material list — call whenever the scene's content
12
+ * changes (a model loads/unloads, the demo placeholder scene rebuilds)
13
+ * so already-enabled planes keep cutting whatever is currently visible. */
14
+ setMaterials(materials: readonly Material[]): void;
11
15
  private openPanel;
12
16
  }
13
17
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"BimClippingExtension.d.ts","sourceRoot":"","sources":["../../../../../modules/domains/bim/extensions/BimClippingExtension.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAUrE,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IACzC,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAoDD,qBAAa,oBAAqB,SAAQ,SAAS,CAAC,kBAAkB,CAAC;IACrE,gBAAyB,EAAE,sBAAsB;IAEjD,IAAI,IAAI,IAAI;IAqCZ,MAAM,IAAI,IAAI;IAId,OAAO,CAAC,SAAS;CAkBlB"}
1
+ {"version":3,"file":"BimClippingExtension.d.ts","sourceRoot":"","sources":["../../../../../modules/domains/bim/extensions/BimClippingExtension.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAWrE,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IACzC,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAoDD,qBAAa,oBAAqB,SAAQ,SAAS,CAAC,kBAAkB,CAAC;IACrE,gBAAyB,EAAE,sBAAsB;IAEjD,IAAI,IAAI,IAAI;IA4EZ,MAAM,IAAI,IAAI;IAId;;gFAE4E;IAC5E,YAAY,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,GAAG,IAAI;IAIlD,OAAO,CAAC,SAAS;CAuBlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"BimMeasurementExtension.d.ts","sourceRoot":"","sources":["../../../../../modules/domains/bim/extensions/BimMeasurementExtension.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAiIrE,qBAAa,uBAAwB,SAAQ,SAAS;IACpD,gBAAyB,EAAE,yBAAyB;IAEpD,IAAI,IAAI,IAAI;IAmCZ,MAAM,IAAI,IAAI;IAId,OAAO,CAAC,SAAS;CAkBlB"}
1
+ {"version":3,"file":"BimMeasurementExtension.d.ts","sourceRoot":"","sources":["../../../../../modules/domains/bim/extensions/BimMeasurementExtension.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAuJrE,qBAAa,uBAAwB,SAAQ,SAAS;IACpD,gBAAyB,EAAE,yBAAyB;IAEpD,IAAI,IAAI,IAAI;IAoCZ,MAAM,IAAI,IAAI;IAId,OAAO,CAAC,SAAS;CAgBlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"BimVisibilityExtension.d.ts","sourceRoot":"","sources":["../../../../../modules/domains/bim/extensions/BimVisibilityExtension.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AA6GrE,qBAAa,sBAAuB,SAAQ,SAAS;IACnD,gBAAyB,EAAE,wBAAwB;IAEnD,IAAI,IAAI,IAAI;IA6BZ,MAAM,IAAI,IAAI;IAId,OAAO,CAAC,SAAS;CAkBlB"}
1
+ {"version":3,"file":"BimVisibilityExtension.d.ts","sourceRoot":"","sources":["../../../../../modules/domains/bim/extensions/BimVisibilityExtension.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AA8GrE,qBAAa,sBAAuB,SAAQ,SAAS;IACnD,gBAAyB,EAAE,wBAAwB;IAEnD,IAAI,IAAI,IAAI;IAgCZ,MAAM,IAAI,IAAI;IAId,OAAO,CAAC,SAAS;CAYlB"}
@@ -3,7 +3,7 @@ export declare const STATUS_OPTIONS: ReadonlyArray<{
3
3
  value: BcfStatus;
4
4
  label: string;
5
5
  }>;
6
- export declare const FIELD_BASE = "kuiviewer:kuiviewer:ll kui-vkuiviewer:r:roundkuiviewer:ui-viewer:bordkuiviewer:ui-viewekuiviewer:rder-kuiviewer:er kukuiviewer:ewer:bg-kuiviewer: kuiviewer:px-2kuiviewer:-viewer:py-1 kuiviewer:texkuiviewer: kuiviewer:text-forekuiviewer:nd kuiviewer:focus-visible:outline-none kuiviewer:focus-visible:ring-2 kuiviewer:focus-visible:ring-primary";
7
- export declare const BUTTON_BASE = "kuiviewer:rkuiviewer:ed kui-kuiviewer:er:border kui-kuiviewer:er:bordekuiviewer:rder kuiviewer:viewekuiviewer:-card kukuiviewer:ewer:px-3 kui-vkuiviewer:r:py-1 kuiviewer:text-sm kkuiviewer:iewer:hover:bg-muted kuiviewer:focus-visible:outline-none kuiviewer:focus-visible:ring-2 kuiviewer:focus-visible:ring-primary";
8
- export declare const PRIMARY_BUTTON = "kuiviewer:bg-pkuiviewer:ry kuiviewer:text-primary-foreground";
6
+ export declare const FIELD_BASE = "kuiviewer:w-full kuiviewer:rounded kuiviewer:border kuiviewer:border-border kuiviewer:bg-background kuiviewer:px-2 kuiviewer:py-1 kuiviewer:text-sm kuiviewer:text-foreground kuiviewer:focus-visible:outline-none kuiviewer:focus-visible:ring-2 kuiviewer:focus-visible:ring-primary";
7
+ export declare const BUTTON_BASE = "kuiviewer:rounded kuiviewer:border kuiviewer:border-border kuiviewer:bg-card kuiviewer:px-3 kuiviewer:py-1 kuiviewer:text-sm kuiviewer:hover:bg-muted kuiviewer:focus-visible:outline-none kuiviewer:focus-visible:ring-2 kuiviewer:focus-visible:ring-primary";
8
+ export declare const PRIMARY_BUTTON = "kuiviewer:bg-primary kuiviewer:text-primary-foreground";
9
9
  //# sourceMappingURL=BcfDialog.constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BcfDialog.constants.d.ts","sourceRoot":"","sources":["../../../../../modules/domains/bim/ui/BcfDialog.constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAK7E,CAAC;AAEF,eAAO,MAAM,UAAU,4VACoU,CAAC;AAE5V,eAAO,MAAM,WAAW,+TACsS,CAAC;AAE/T,eAAO,MAAM,cAAc,iEAAiE,CAAC"}
1
+ {"version":3,"file":"BcfDialog.constants.d.ts","sourceRoot":"","sources":["../../../../../modules/domains/bim/ui/BcfDialog.constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAK7E,CAAC;AAEF,eAAO,MAAM,UAAU,2RACmQ,CAAC;AAE3R,eAAO,MAAM,WAAW,mQAC0O,CAAC;AAEnQ,eAAO,MAAM,cAAc,2DAA2D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ClippingPanel.d.ts","sourceRoot":"","sources":["../../../../../modules/domains/bim/ui/ClippingPanel.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA4DD,wBAAgB,aAAa,CAAC,IAAI,GAAE,oBAAyB,GAAG;IAC9D,EAAE,EAAE,WAAW,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAkEA"}
1
+ {"version":3,"file":"ClippingPanel.d.ts","sourceRoot":"","sources":["../../../../../modules/domains/bim/ui/ClippingPanel.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAmGD,wBAAgB,aAAa,CAAC,IAAI,GAAE,oBAAyB,GAAG;IAC9D,EAAE,EAAE,WAAW,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAuFA"}
@@ -1,7 +1,11 @@
1
+ import type { InputManager } from "../../../viewer-core/input/input-manager";
1
2
  export interface MeasurementToolbarOptions {
2
3
  className?: string;
4
+ /** Required — without a wired InputManager the toolbar cannot start a
5
+ * CommandSession, so clicks in the 3D view would silently do nothing. */
6
+ input: Pick<InputManager, "invokeCommand" | "cancel">;
3
7
  }
4
- export declare function MeasurementToolbar(opts?: MeasurementToolbarOptions): {
8
+ export declare function MeasurementToolbar(opts: MeasurementToolbarOptions): {
5
9
  el: HTMLDivElement;
6
10
  dispose: () => void;
7
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MeasurementToolbar.d.ts","sourceRoot":"","sources":["../../../../../modules/domains/bim/ui/MeasurementToolbar.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAyBD,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,yBAA8B,GAAG;IACxE,EAAE,EAAE,cAAc,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAkFA"}
1
+ {"version":3,"file":"MeasurementToolbar.d.ts","sourceRoot":"","sources":["../../../../../modules/domains/bim/ui/MeasurementToolbar.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAI7E,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;8EAC0E;IAC1E,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,GAAG,QAAQ,CAAC,CAAC;CACvD;AAgCD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,GAAG;IACnE,EAAE,EAAE,cAAc,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAoHA"}
@@ -1 +1 @@
1
- {"version":3,"file":"VisibilityToolbar.d.ts","sourceRoot":"","sources":["../../../../../modules/domains/bim/ui/VisibilityToolbar.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoBD,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,wBAA6B,GAAG;IACtE,EAAE,EAAE,cAAc,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAuFA"}
1
+ {"version":3,"file":"VisibilityToolbar.d.ts","sourceRoot":"","sources":["../../../../../modules/domains/bim/ui/VisibilityToolbar.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsBD,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,wBAA6B,GAAG;IACtE,EAAE,EAAE,cAAc,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CA0GA"}
@@ -0,0 +1,11 @@
1
+ import { Extension } from "../../viewer-core/extension/extension";
2
+ export declare class ContextMenuExtension extends Extension {
3
+ static readonly id = "KUI.ContextMenu";
4
+ static readonly metadata: {
5
+ dependsOn: string[];
6
+ };
7
+ private currentMenu;
8
+ load(): void;
9
+ unload(): void;
10
+ }
11
+ //# sourceMappingURL=ContextMenuExtension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextMenuExtension.d.ts","sourceRoot":"","sources":["../../../../modules/extensions/ContextMenu/ContextMenuExtension.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AASlE,qBAAa,oBAAqB,SAAQ,SAAS;IACjD,gBAAyB,EAAE,qBAAqB;IAChD,gBAAyB,QAAQ;;MAAwC;IAEzE,OAAO,CAAC,WAAW,CAAkC;IAErD,IAAI,IAAI,IAAI;IAiCZ,MAAM,IAAI,IAAI;CAGf"}
@@ -1 +1 @@
1
- {"version":3,"file":"HorizonExtension.d.ts","sourceRoot":"","sources":["../../../../modules/extensions/Horizon/HorizonExtension.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAElE,UAAU,uBAAuB;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,sFAAsF;IACtF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,kDAAkD;IAClD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAID,qBAAa,gBAAiB,SAAQ,SAAS,CAAC,uBAAuB,CAAC;IACtE,gBAAyB,EAAE,iBAAiB;IAE5C,IAAI,IAAI,IAAI;IAoCZ,MAAM,IAAI,IAAI;IAId,uEAAuE;IACvE,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;CAUvD"}
1
+ {"version":3,"file":"HorizonExtension.d.ts","sourceRoot":"","sources":["../../../../modules/extensions/Horizon/HorizonExtension.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAElE,UAAU,uBAAuB;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,sFAAsF;IACtF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,kDAAkD;IAClD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAID,qBAAa,gBAAiB,SAAQ,SAAS,CAAC,uBAAuB,CAAC;IACtE,gBAAyB,EAAE,iBAAiB;IAE5C,IAAI,IAAI,IAAI;IAwCZ,MAAM,IAAI,IAAI;IAId,uEAAuE;IACvE,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;CAUvD"}
@@ -1 +1 @@
1
- {"version":3,"file":"IotSensorsExtension.d.ts","sourceRoot":"","sources":["../../../../modules/extensions/IotSensors/IotSensorsExtension.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAOlE,qBAAa,mBAAoB,SAAQ,SAAS;IAChD,gBAAyB,EAAE,oBAAoB;IAE/C,IAAI,IAAI,IAAI;IAgCZ,MAAM,IAAI,IAAI;CAIf"}
1
+ {"version":3,"file":"IotSensorsExtension.d.ts","sourceRoot":"","sources":["../../../../modules/extensions/IotSensors/IotSensorsExtension.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAOlE,qBAAa,mBAAoB,SAAQ,SAAS;IAChD,gBAAyB,EAAE,oBAAoB;IAE/C,IAAI,IAAI,IAAI;IAiCZ,MAAM,IAAI,IAAI;CAIf"}
@@ -1 +1 @@
1
- {"version":3,"file":"MapTileExtension.mesh.d.ts","sourceRoot":"","sources":["../../../../modules/extensions/MapTile/MapTileExtension.mesh.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAK5D,wBAAsB,cAAc,CAClC,GAAG,EAAE,WAAW,EAChB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,IAAI,CAAC,CAqFf;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,IAAI,CAuBN;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAQtD"}
1
+ {"version":3,"file":"MapTileExtension.mesh.d.ts","sourceRoot":"","sources":["../../../../modules/extensions/MapTile/MapTileExtension.mesh.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAK5D,wBAAsB,cAAc,CAClC,GAAG,EAAE,WAAW,EAChB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,IAAI,CAAC,CA0Ff;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,IAAI,CAuBN;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAQtD"}
@@ -0,0 +1,13 @@
1
+ import { Extension } from "../../viewer-core/extension/extension";
2
+ import { type PickHit } from "../../viewer-core/picking/picking.service";
3
+ export declare class PickingExtension extends Extension {
4
+ static readonly id = "KUI.Picking";
5
+ private readonly picking;
6
+ load(): void;
7
+ unload(): void;
8
+ /** One-shot raycast at the event's screen position — does not touch
9
+ * selectionStore (unlike the attached pointerdown/pointermove listeners).
10
+ * Used by ContextMenuExtension to resolve what's under a right-click. */
11
+ pickAt(event: PointerEvent | MouseEvent): PickHit | null;
12
+ }
13
+ //# sourceMappingURL=PickingExtension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PickingExtension.d.ts","sourceRoot":"","sources":["../../../../modules/extensions/Picking/PickingExtension.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAClE,OAAO,EAAW,KAAK,OAAO,EAAE,MAAM,2CAA2C,CAAC;AAElF,qBAAa,gBAAiB,SAAQ,SAAS;IAC7C,gBAAyB,EAAE,iBAAiB;IAE5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAEzC,IAAI,IAAI,IAAI;IASZ,MAAM,IAAI,IAAI;IAId;;8EAE0E;IAC1E,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,IAAI;CAQzD"}
@@ -0,0 +1,7 @@
1
+ import { Extension } from "../../viewer-core/extension/extension";
2
+ export declare class SnapExtension extends Extension {
3
+ static readonly id = "KUI.Snap";
4
+ load(): void;
5
+ unload(): void;
6
+ }
7
+ //# sourceMappingURL=SnapExtension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SnapExtension.d.ts","sourceRoot":"","sources":["../../../../modules/extensions/Snap/SnapExtension.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAsB,MAAM,uCAAuC,CAAC;AAoBtF,qBAAa,aAAc,SAAQ,SAAS;IAC1C,gBAAyB,EAAE,cAAc;IAEzC,IAAI,IAAI,IAAI;IAWZ,MAAM,IAAI,IAAI;CAGf"}
@@ -19,6 +19,7 @@ export { asModalId, asTabGroupId, asSplitId, type ModalId, type TabGroupId, type
19
19
  export { NavCubeExtension } from "./viewer-core/navcube/NavCubeExtension";
20
20
  export { ZoomSliderExtension } from "./viewer-core/zoom-slider/ZoomSliderExtension";
21
21
  export { GridExtension } from "./extensions/Grid/GridExtension";
22
+ export { SnapExtension } from "./extensions/Snap/SnapExtension";
22
23
  export { MapTileExtension } from "./extensions/MapTile/MapTileExtension";
23
24
  export { HorizonExtension } from "./extensions/Horizon/HorizonExtension";
24
25
  export { LandmarksExtension } from "./extensions/Landmarks/LandmarksExtension";
@@ -1 +1 @@
1
- {"version":3,"file":"index.viewer-core.d.ts","sourceRoot":"","sources":["../../modules/index.viewer-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.viewer-core.d.ts","sourceRoot":"","sources":["../../modules/index.viewer-core.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,14 @@ import type { Scene } from "three";
2
2
  export default class MeasurementService {
3
3
  private static scene;
4
4
  private static unsubscribe;
5
- static init(scene: Scene): void;
5
+ /**
6
+ * @param invalidate Requests a repaint from the owning Viewer's on-demand
7
+ * render loop. Every measurementStore mutation (a placed point, the
8
+ * hover-driven rubber-band preview, a completed measurement) needs one —
9
+ * without it the gizmo/label diff below would sit in the scene graph
10
+ * unseen until something unrelated happens to trigger a frame.
11
+ */
12
+ static init(scene: Scene, invalidate?: () => void): void;
6
13
  static dispose(): void;
7
14
  }
8
15
  //# sourceMappingURL=measurement.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"measurement.service.d.ts","sourceRoot":"","sources":["../../../modules/measurement/measurement.service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAInC,MAAM,CAAC,OAAO,OAAO,kBAAkB;IACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAsB;IAC1C,OAAO,CAAC,MAAM,CAAC,WAAW,CAA6B;IAEvD,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAK/B,MAAM,CAAC,OAAO,IAAI,IAAI;CAMvB"}
1
+ {"version":3,"file":"measurement.service.d.ts","sourceRoot":"","sources":["../../../modules/measurement/measurement.service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAInC,MAAM,CAAC,OAAO,OAAO,kBAAkB;IACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAsB;IAC1C,OAAO,CAAC,MAAM,CAAC,WAAW,CAA6B;IAEvD;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,GAAE,MAAM,IAAe,GAAG,IAAI;IAQlE,MAAM,CAAC,OAAO,IAAI,IAAI;CAMvB"}
@@ -3,14 +3,20 @@ import type { Measurement, MeasurementTool } from "./measurement.types";
3
3
  type State = {
4
4
  tool: MeasurementTool;
5
5
  pending: Vector3[];
6
+ /** Live cursor position while a point is in-flight (mirrored from
7
+ * `inputStore.hoverSnap.point` by the owning extension) — drives the
8
+ * rubber-band preview segment/polygon in the renderer. Null when idle. */
9
+ hover: Vector3 | null;
6
10
  measurements: Measurement[];
7
11
  setTool: (tool: MeasurementTool) => void;
8
12
  addPending: (point: Vector3) => void;
13
+ setHover: (point: Vector3 | null) => void;
9
14
  completePending: () => void;
10
15
  cancelPending: () => void;
11
16
  remove: (id: string) => void;
12
17
  clear: () => void;
13
18
  };
14
19
  export declare const measurementStore: import("zustand").StoreApi<State>;
20
+ export declare function computeMeasureValue(tool: MeasurementTool, pts: Vector3[]): number | null;
15
21
  export {};
16
22
  //# sourceMappingURL=measurement.store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"measurement.store.d.ts","sourceRoot":"","sources":["../../../modules/measurement/measurement.store.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAExE,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IACzC,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,gBAAgB,mCAyB1B,CAAC"}
1
+ {"version":3,"file":"measurement.store.d.ts","sourceRoot":"","sources":["../../../modules/measurement/measurement.store.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAExE,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB;;+EAE2E;IAC3E,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IACzC,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1C,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,gBAAgB,mCA4B1B,CAAC;AAsBJ,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI,CAiBxF"}
@@ -1,9 +1,11 @@
1
1
  import { Vector3 } from "three";
2
2
  import type { Scene } from "three";
3
- import type { Measurement } from "./measurement.types";
3
+ import type { Measurement, MeasurementTool } from "./measurement.types";
4
4
  type RenderState = {
5
5
  measurements: Measurement[];
6
6
  pending: Vector3[];
7
+ tool?: MeasurementTool;
8
+ hover?: Vector3 | null;
7
9
  };
8
10
  export declare const renderer: {
9
11
  sync(state: RenderState, scene: Scene): void;
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../modules/measurement/renderer.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAQnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAOvD,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,OAAO,EAAE,OAAO,EAAE,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,QAAQ;gBACP,WAAW,SAAS,KAAK,GAAG,IAAI;sBAqC1B,KAAK,GAAG,IAAI;CAG/B,CAAC;AAgBF,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAOlD;AAKD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAKhD;AAMD,wBAAgB,aAAa,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,EAAE,CAIvD"}
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../modules/measurement/renderer.ts"],"names":[],"mappings":"AAWA,OAAO,EAA+E,OAAO,EAAE,MAAM,OAAO,CAAC;AAC7G,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AASnC,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AA2DxE,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,QAAQ;gBACP,WAAW,SAAS,KAAK,GAAG,IAAI;sBA6E1B,KAAK,GAAG,IAAI;CAG/B,CAAC;AAuEF,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAElD;AAaD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAEhD;AAYD,wBAAgB,aAAa,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,EAAE,CAIvD"}
@@ -1,5 +1,6 @@
1
1
  import { Vector2, Vector3 } from "three";
2
2
  import type { Mesh, PerspectiveCamera, Scene } from "three";
3
+ export declare const SNAP_IGNORE_KEY = "snapIgnore";
3
4
  export type SnapKind = "vertex" | "edge" | "face";
4
5
  export type SnapResult = {
5
6
  worldPoint: Vector3;
@@ -9,8 +10,4 @@ export type SnapResult = {
9
10
  };
10
11
  export declare function snap(event: PointerEvent, canvas: HTMLCanvasElement, camera: PerspectiveCamera, scene: Scene): SnapResult | null;
11
12
  export declare function projectToScreen(world: Vector3, camera: PerspectiveCamera, canvas: HTMLCanvasElement): Vector2;
12
- export declare function classifyFeature(_target: {
13
- point: Vector3;
14
- faceIndex: number;
15
- }, _mesh: Mesh): SnapKind;
16
13
  //# sourceMappingURL=snap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"snap.d.ts","sourceRoot":"","sources":["../../../modules/measurement/snap.ts"],"names":[],"mappings":"AAYA,OAAO,EAAa,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAEV,IAAI,EACJ,iBAAiB,EACjB,KAAK,EACN,MAAM,OAAO,CAAC;AAKf,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,wBAAgB,IAAI,CAClB,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,KAAK,GACX,UAAU,GAAG,IAAI,CA2DnB;AAID,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAMT;AAKD,wBAAgB,eAAe,CAC7B,OAAO,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAC9C,KAAK,EAAE,IAAI,GACV,QAAQ,CAEV"}
1
+ {"version":3,"file":"snap.d.ts","sourceRoot":"","sources":["../../../modules/measurement/snap.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAa,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAGV,IAAI,EAEJ,iBAAiB,EACjB,KAAK,EACN,MAAM,OAAO,CAAC;AASf,eAAO,MAAM,eAAe,eAAe,CAAC;AAS5C,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,wBAAgB,IAAI,CAClB,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,KAAK,GACX,UAAU,GAAG,IAAI,CAgCnB;AA2DD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAMT"}
@@ -0,0 +1,11 @@
1
+ export type ButtonVariant = "default" | "active" | "ghost" | "danger";
2
+ /**
3
+ * Full className for a button in the given variant. Panels should call this
4
+ * on every state change and assign the result wholesale to `btn.className`
5
+ * (matching this codebase's established pattern — see MeasurementToolbar's
6
+ * `sync()` — rather than relying on CSS attribute-variant selectors like
7
+ * `aria-pressed:*`, which is easy to get subtly wrong when one state's pair
8
+ * is left incomplete).
9
+ */
10
+ export declare function buttonClass(variant?: ButtonVariant, extra?: string): string;
11
+ //# sourceMappingURL=Button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../modules/ui/Button.ts"],"names":[],"mappings":"AAwBA,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAsBtE;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,aAAyB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtF"}
@@ -4,4 +4,5 @@ export { Toggle, type ToggleOptions, type ToggleElement, } from "./Toggle";
4
4
  export { Slider, type SliderOptions, type SliderElement, } from "./Slider";
5
5
  export { Tree, type TreeOptions } from "./Tree";
6
6
  export { computeVirtualWindow, type VirtualWindow } from "./Tree.virtual";
7
+ export { buttonClass, type ButtonVariant } from "./Button";
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../modules/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,MAAM,EACN,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,MAAM,EACN,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../modules/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,MAAM,EACN,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,MAAM,EACN,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,20 @@
1
+ export interface ContextMenuItem {
2
+ readonly label: string;
3
+ readonly onClick: () => void;
4
+ readonly disabled?: boolean;
5
+ }
6
+ export interface ContextMenuOptions {
7
+ readonly items: readonly ContextMenuItem[];
8
+ /** Viewport-space (clientX/clientY) point to anchor the menu's top-left
9
+ * corner to — clamped to stay fully on-screen. */
10
+ readonly anchor: {
11
+ x: number;
12
+ y: number;
13
+ };
14
+ }
15
+ export interface ContextMenuHandle {
16
+ readonly el: HTMLElement;
17
+ readonly dispose: () => void;
18
+ }
19
+ export declare function openContextMenu(opts: ContextMenuOptions): ContextMenuHandle;
20
+ //# sourceMappingURL=context-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-menu.d.ts","sourceRoot":"","sources":["../../../../modules/viewer-core/context-menu/context-menu.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAC3C;uDACmD;IACnD,QAAQ,CAAC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AA6CD,wBAAgB,eAAe,CAAC,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,CAgE3E"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../modules/viewer-core/helpers/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC;IACvC,UAAU,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkDD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,IAAI,CAAC,EAAE,kBAAkB,GACxB,IAAI,CAuBN;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAyBtD"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../modules/viewer-core/helpers/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC;IACvC,UAAU,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkDD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,IAAI,CAAC,EAAE,kBAAkB,GACxB,IAAI,CAyBN;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAyBtD"}
@@ -2,14 +2,28 @@ import type { CommandSession } from "./command-session";
2
2
  import type { KeyboardManager } from "./keyboard-manager";
3
3
  import type { SnapLayer } from "./layers/snap-layer";
4
4
  import { type Prompt } from "./prompts";
5
+ import { type InputModes } from "./input.store";
5
6
  import type { InputManagerHost } from "./input-manager.types";
7
+ import type { ViewerEvents } from "../events/events";
8
+ /** Flips one persisted input mode (snap/ortho/polar/dyn), logs it to the
9
+ * command-line history, and emits `input:mode-changed` so the UI /
10
+ * extensions can observe the flip. Shared by the F3/F8/F10/F12 hotkeys
11
+ * (`registerBuiltInHotkeys` below) and any command that toggles a mode
12
+ * from the command line (e.g. `OSNAP`/`SNAP`). */
13
+ export declare function toggleMode(events: ViewerEvents, mode: keyof InputModes): void;
6
14
  /** Built-in mode toggles — F3/F8/F10/F12 match AutoCAD's status-bar
7
- * toggles. Each emits `input:mode-changed` so the UI / extensions can
8
- * observe the flip. */
15
+ * toggles. */
9
16
  export declare function registerBuiltInHotkeys(kbd: KeyboardManager, host: InputManagerHost): void;
10
17
  export declare function publishPrompt(prompt: Prompt): void;
11
18
  export declare function respondWithDefault(session: CommandSession | null, prompt: Prompt): Promise<void>;
12
19
  export declare function respondToTypedInput(session: CommandSession | null, prompt: Prompt, text: string): Promise<void>;
13
20
  export declare function handlePointerDown(session: CommandSession | null, snapLayer: SnapLayer, e: PointerEvent): Promise<void>;
21
+ /** Real-time cursor pose during an active "point" prompt — resolves through
22
+ * the snap layer (same path as the click) and publishes it as
23
+ * `inputStore.hoverSnap` so a rubber-band preview / snap-glyph / dynamic-
24
+ * input layer can react without the session responding to the prompt. Does
25
+ * not touch the session at all — only `handlePointerDown` advances the
26
+ * prompt. */
27
+ export declare function handlePointerMove(session: CommandSession | null, snapLayer: SnapLayer, e: PointerEvent): void;
14
28
  export declare function handleDoubleClick(session: CommandSession | null): Promise<void>;
15
29
  //# sourceMappingURL=input-handlers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-handlers.d.ts","sourceRoot":"","sources":["../../../../modules/viewer-core/input/input-handlers.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAEL,KAAK,MAAM,EAEZ,MAAM,WAAW,CAAC;AAInB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;wBAEwB;AACxB,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,gBAAgB,GACrB,IAAI,CAcN;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAUlD;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,cAAc,GAAG,IAAI,EAC9B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,cAAc,GAAG,IAAI,EAC9B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAwFf;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,cAAc,GAAG,IAAI,EAC9B,SAAS,EAAE,SAAS,EACpB,CAAC,EAAE,YAAY,GACd,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,cAAc,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAOf"}
1
+ {"version":3,"file":"input-handlers.d.ts","sourceRoot":"","sources":["../../../../modules/viewer-core/input/input-handlers.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAEL,KAAK,MAAM,EAEZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAG5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;;mDAImD;AACnD,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,UAAU,GAAG,IAAI,CAQ7E;AAED;eACe;AACf,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,gBAAgB,GACrB,IAAI,CAKN;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAUlD;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,cAAc,GAAG,IAAI,EAC9B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,cAAc,GAAG,IAAI,EAC9B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAwFf;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,cAAc,GAAG,IAAI,EAC9B,SAAS,EAAE,SAAS,EACpB,CAAC,EAAE,YAAY,GACd,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED;;;;;cAKc;AACd,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,cAAc,GAAG,IAAI,EAC9B,SAAS,EAAE,SAAS,EACpB,CAAC,EAAE,YAAY,GACd,IAAI,CAWN;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,cAAc,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAOf"}
@@ -50,9 +50,15 @@ export declare class InputManager {
50
50
  private readonly kbd;
51
51
  private readonly mouse;
52
52
  private session;
53
+ private pendingMoveEvent;
54
+ private moveScheduled;
53
55
  /** Late-bound from the CommandLine UI when it mounts. Until then, all
54
56
  * text input goes nowhere — toolbar + hotkey paths still work. */
55
57
  private commandLineBinding;
58
+ /** Late-bound from a context-menu extension (mirrors `commandLineBinding`).
59
+ * Until bound, right-click while idle is a no-op — the native browser
60
+ * menu still appears, since nothing here ever calls `preventDefault()`. */
61
+ private contextMenuHandler;
56
62
  constructor(host: InputManagerHost);
57
63
  registerCommand(cmd: Command): void;
58
64
  /** Snapshot of every registered command. */
@@ -67,7 +73,12 @@ export declare class InputManager {
67
73
  respondKeyword(keyword: string): void;
68
74
  registerHotkey(combo: string, target: string | HotkeyCallback): () => void;
69
75
  bindCommandLine(binding: CommandLineBinding): void;
76
+ /** Bind the idle right-click handler (a context menu). Only one binding
77
+ * is active at a time — a second call replaces the first, same as
78
+ * `bindCommandLine`. Pass `() => {}` to unbind. */
79
+ bindContextMenu(handler: (e: MouseEvent) => void): void;
70
80
  invokeCommand(id: string): Promise<void>;
81
+ private schedulePointerMove;
71
82
  cancel(): void;
72
83
  get activeCommandId(): string | null;
73
84
  /** Called from the command-line UI when the user presses Enter. */
@@ -1 +1 @@
1
- {"version":3,"file":"input-manager.d.ts","sourceRoot":"","sources":["../../../../modules/viewer-core/input/input-manager.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAyB,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAS1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAElF,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAElF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,qBAAa,YAAY;IACvB,QAAQ,CAAC,QAAQ,kBAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,OAAO,CAA+B;IAC9C;uEACmE;IACnE,OAAO,CAAC,kBAAkB,CAIxB;gBAEU,IAAI,EAAE,gBAAgB;IA2BlC,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAInC,4CAA4C;IAC5C,WAAW,IAAI,SAAS,OAAO,EAAE;IAIjC;;wCAEoC;IACpC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,EAAE;IAIxD;;mEAE+D;IAC/D,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKrC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,MAAM,IAAI;IAO1E,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAM5C,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgD9C,MAAM,IAAI,IAAI;IAMd,IAAI,eAAe,IAAI,MAAM,GAAG,IAAI,CAEnC;IAID,mEAAmE;IAC7D,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B7D,OAAO,IAAI,IAAI;CAKhB"}
1
+ {"version":3,"file":"input-manager.d.ts","sourceRoot":"","sources":["../../../../modules/viewer-core/input/input-manager.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAyB,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAS1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAElF,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAElF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,qBAAa,YAAY;IACvB,QAAQ,CAAC,QAAQ,kBAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,OAAO,CAA+B;IAG9C,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,aAAa,CAAS;IAC9B;uEACmE;IACnE,OAAO,CAAC,kBAAkB,CAIxB;IACF;;gFAE4E;IAC5E,OAAO,CAAC,kBAAkB,CAAqC;gBAEnD,IAAI,EAAE,gBAAgB;IA4BlC,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAInC,4CAA4C;IAC5C,WAAW,IAAI,SAAS,OAAO,EAAE;IAIjC;;wCAEoC;IACpC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,EAAE;IAIxD;;mEAE+D;IAC/D,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKrC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,MAAM,IAAI;IAO1E,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAIlD;;wDAEoD;IACpD,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAMjD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiD9C,OAAO,CAAC,mBAAmB;IAY3B,MAAM,IAAI,IAAI;IAMd,IAAI,eAAe,IAAI,MAAM,GAAG,IAAI,CAEnC;IAID,mEAAmE;IAC7D,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B7D,OAAO,IAAI,IAAI;CAKhB"}
@@ -1,4 +1,5 @@
1
1
  import type { Prompt } from "./prompts";
2
+ import type { SnapResolution } from "./layers/snap-layer";
2
3
  export interface InputModes {
3
4
  /** F3 — object snap toggle. */
4
5
  readonly snap: boolean;
@@ -29,6 +30,12 @@ interface InputStateAPI {
29
30
  readonly currentPrompt: Prompt | null;
30
31
  /** Last invoked command id — used by Enter-at-idle to repeat. */
31
32
  readonly lastCommandId: string | null;
33
+ /** Live snapped cursor position (+ snap kind) while a "point" prompt is
34
+ * active — the seam for a rubber-band preview / snap-glyph / dynamic-
35
+ * input layer. Null when no point prompt is pending, the pointer hasn't
36
+ * moved yet this prompt, or the cursor has no valid anchor (e.g. aimed
37
+ * above the horizon with nothing under it). */
38
+ readonly hoverSnap: SnapResolution | null;
32
39
  readonly modes: InputModes;
33
40
  readonly modifiers: InputModifiers;
34
41
  readonly history: readonly InputHistoryEntry[];
@@ -36,6 +43,7 @@ interface InputStateAPI {
36
43
  setActiveCommand: (id: string | null) => void;
37
44
  setCurrentPrompt: (p: Prompt | null) => void;
38
45
  setLastCommand: (id: string | null) => void;
46
+ setHoverSnap: (v: SnapResolution | null) => void;
39
47
  toggleMode: (m: keyof InputModes) => void;
40
48
  setMode: (m: keyof InputModes, on: boolean) => void;
41
49
  setModifier: (m: keyof InputModifiers, on: boolean) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"input.store.d.ts","sourceRoot":"","sources":["../../../../modules/viewer-core/input/input.store.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,WAAW,UAAU;IACzB,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,oDAAoD;IACpD,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE3C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;2EACuE;IACvE,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,aAAa;IACrB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,iEAAiE;IACjE,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAE/C,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,gBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7C,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,UAAU,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,UAAU,EAAE,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,cAAc,EAAE,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5D,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;IAC9D,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAKD,eAAO,MAAM,UAAU;;;;;;;;;;;;CAuCtB,CAAC"}
1
+ {"version":3,"file":"input.store.d.ts","sourceRoot":"","sources":["../../../../modules/viewer-core/input/input.store.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,WAAW,UAAU;IACzB,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,oDAAoD;IACpD,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE3C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;2EACuE;IACvE,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,aAAa;IACrB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,iEAAiE;IACjE,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC;;;;oDAIgD;IAChD,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAE/C,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,gBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7C,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,UAAU,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,UAAU,EAAE,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,cAAc,EAAE,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5D,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;IAC9D,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAKD,eAAO,MAAM,UAAU;;;;;;;;;;;;CAyCtB,CAAC"}