@thatopen/components 3.4.0 → 3.4.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.
package/dist/index.d.ts CHANGED
@@ -80,10 +80,7 @@ export declare type AngleAnnotationEvent =
80
80
  type: "ESCAPE";
81
81
  };
82
82
 
83
- /**
84
- * Global drawing system that manages angle dimension annotations across all
85
- * {@link TechnicalDrawing} instances.
86
- */
83
+ /** Global drawing system that manages angle dimension annotations across all {@link TechnicalDrawing} instances. */
87
84
  export declare class AngleAnnotations extends AnnotationSystem<AngleAnnotationSystem> implements Transitionable<AngleAnnotationState, AngleAnnotationEvent>, Disposable_2 {
88
85
  enabled: boolean;
89
86
  readonly _item: AngleAnnotation;
@@ -157,17 +154,10 @@ declare interface AngleAnnotationSystem {
157
154
  handle: "pointA" | "vertex" | "pointB";
158
155
  }
159
156
 
160
- /**
161
- * Pure state transition function for the angle dimension tool.
162
- * Returns the **same state reference** when no transition applies.
163
- */
157
+ /** Pure state transition function for the angle dimension tool. */
164
158
  export declare function angleDimensionMachine(state: AngleAnnotationState, event: AngleAnnotationEvent): AngleAnnotationState;
165
159
 
166
- /**
167
- * A single annotation entry stored in {@link DrawingAnnotations}.
168
- * Bundles the owning system, the annotation data, and its Three.js group
169
- * so that any lookup by UUID gives full access to all three.
170
- */
160
+ /** A single annotation entry stored in {@link DrawingAnnotations}, bundling the owning system, the annotation data, and its Three.js group. */
171
161
  export declare interface AnnotationEntry {
172
162
  /** The system that created and owns this annotation. */
173
163
  system: AnnotationSystem<any>;
@@ -178,13 +168,8 @@ export declare interface AnnotationEntry {
178
168
  }
179
169
 
180
170
  /**
181
- * Abstract base for all annotation sub-systems operating on a
182
- * {@link TechnicalDrawing}. Provides the full CRUD lifecycle, material caches,
183
- * preview geometry, and automatic style-reactivity so subclasses only need to
184
- * implement geometry construction and handle-picking.
185
- *
186
- * @typeParam TSystem - A {@link DrawingSystemDescriptor} that declares the item,
187
- * data, style, and handle types for this specific system.
171
+ * Abstract base for all annotation sub-systems operating on a {@link TechnicalDrawing}.
172
+ * @typeParam TSystem - A {@link DrawingSystemDescriptor} that declares the item, data, style, and handle types for this specific system.
188
173
  */
189
174
  declare abstract class AnnotationSystem<TSystem extends DrawingSystemDescriptor> {
190
175
  protected readonly _components: Components;
@@ -262,10 +247,7 @@ declare abstract class AnnotationSystem<TSystem extends DrawingSystemDescriptor>
262
247
  export { AnnotationSystem }
263
248
  export { AnnotationSystem as DrawingSystem }
264
249
 
265
- /**
266
- * Closed arrowhead tick — two wing lines plus a base line connecting them,
267
- * forming a triangle outline (tip → wing1, tip → wing2, wing1 → wing2).
268
- */
250
+ /** Closed arrowhead tick — two wing lines plus a base line connecting them. */
269
251
  export declare const ArrowTick: LineTickBuilder;
270
252
 
271
253
  /**
@@ -301,13 +283,7 @@ export declare class AsyncEvent<T> {
301
283
  private handlers;
302
284
  }
303
285
 
304
- /**
305
- * Minimal interface for a translate-only gizmo that can be configured and
306
- * attached to one of the helper's control handles.
307
- *
308
- * Satisfied by `THREE.TransformControls` without a direct import, keeping
309
- * this class free of DOM dependencies.
310
- */
286
+ /** Minimal interface for a translate-only gizmo that can be configured and attached to one of the helper's control handles. */
311
287
  export declare interface AxisGizmoLike {
312
288
  attach(object: THREE.Object3D): void;
313
289
  setSpace(space: "world" | "local"): void;
@@ -338,10 +314,7 @@ export declare abstract class Base {
338
314
  isSerializable: () => this is Serializable<any, Record<string, any>>;
339
315
  }
340
316
 
341
- /**
342
- * Minimum style contract shared by every annotation system.
343
- * All per-system style interfaces must extend this.
344
- */
317
+ /** Minimum style contract shared by every annotation system. */
345
318
  export declare interface BaseAnnotationStyle {
346
319
  /** Line and text color as a hex number (e.g. `0xff0000`). */
347
320
  color: number;
@@ -837,32 +810,7 @@ export declare interface BCFViewpoint {
837
810
  bitmaps?: ViewpointBitmap[];
838
811
  }
839
812
 
840
- /**
841
- * Global drawing system that manages block insertions across all
842
- * {@link TechnicalDrawing} instances.
843
- *
844
- * A **block** is a named, reusable geometry definition (e.g. a furniture symbol
845
- * or a detail imported from a DXF). Multiple insertions of the same block share
846
- * the same `THREE.BufferGeometry`, so only the transform (position, rotation,
847
- * scale) differs per instance.
848
- *
849
- * Register via {@link TechnicalDrawings.use}:
850
- * ```ts
851
- * const blocks = techDrawings.use(BlockAnnotations);
852
- * ```
853
- *
854
- * Typical workflow:
855
- * ```ts
856
- * // 1. Project external geometry to drawing space
857
- * const projected = TechnicalDrawing.toDrawingSpace(ifcLines, drawing);
858
- *
859
- * // 2. Register the block definition (global — do this once)
860
- * blocks.define("CHAIR", { lines: projected.geometry });
861
- *
862
- * // 3. Insert on any drawing
863
- * blocks.add(drawing, { blockName: "CHAIR", position, rotation: 0, scale: 1, style: "default" });
864
- * ```
865
- */
813
+ /** Global drawing system that manages block insertions across all {@link TechnicalDrawing} instances. */
866
814
  export declare class BlockAnnotations extends AnnotationSystem<BlockAnnotationsSystem> implements Disposable_2 {
867
815
  enabled: boolean;
868
816
  readonly _item: BlockInsertion;
@@ -872,6 +820,29 @@ export declare class BlockAnnotations extends AnnotationSystem<BlockAnnotationsS
872
820
  * Register via {@link define}. Geometry is shared across all drawings and insertions.
873
821
  */
874
822
  readonly definitions: FRAGS.DataMap<string, BlockDefinition>;
823
+ /**
824
+ * A **block** is a named, reusable geometry definition (e.g. a furniture symbol
825
+ * or a detail imported from a DXF). Multiple insertions of the same block share
826
+ * the same `THREE.BufferGeometry`, so only the transform (position, rotation,
827
+ * scale) differs per instance.
828
+ *
829
+ * Register via {@link TechnicalDrawings.use}:
830
+ * ```ts
831
+ * const blocks = techDrawings.use(BlockAnnotations);
832
+ * ```
833
+ *
834
+ * Typical workflow:
835
+ * ```ts
836
+ * // 1. Project external geometry to drawing space
837
+ * const projected = TechnicalDrawing.toDrawingSpace(ifcLines, drawing);
838
+ *
839
+ * // 2. Register the block definition (global — do this once)
840
+ * blocks.define("CHAIR", { lines: projected.geometry });
841
+ *
842
+ * // 3. Insert on any drawing
843
+ * blocks.add(drawing, { blockName: "CHAIR", position, rotation: 0, scale: 1, style: "default" });
844
+ * ```
845
+ */
875
846
  constructor(components: Components);
876
847
  pickHandle(_drawing: TechnicalDrawing, _ray: THREE.Ray, _threshold?: number): {
877
848
  uuid: string;
@@ -902,14 +873,7 @@ declare interface BlockAnnotationsSystem {
902
873
  handle: "position" | "rotation" | "scale";
903
874
  }
904
875
 
905
- /**
906
- * The geometry content of a named block.
907
- * At least one of `lines` or `mesh` must be provided.
908
- *
909
- * - `lines` — `BufferGeometry` rendered as `LineSegments` (wire outlines).
910
- * - `mesh` — `BufferGeometry` rendered as a filled `THREE.Mesh` (e.g. hatches
911
- * or solid fills imported from DXF `SOLID`/`HATCH` entities).
912
- */
876
+ /** The geometry content of a named block. At least one of `lines` or `mesh` must be provided. */
913
877
  export declare interface BlockDefinition {
914
878
  /** Line geometry for `LineSegments`. */
915
879
  lines?: THREE.BufferGeometry;
@@ -917,10 +881,7 @@ export declare interface BlockDefinition {
917
881
  mesh?: THREE.BufferGeometry;
918
882
  }
919
883
 
920
- /**
921
- * A single placed instance of a named block definition.
922
- * All coordinates are in drawing local space (XZ plane, Y = 0).
923
- */
884
+ /** A single placed instance of a named block definition. */
924
885
  export declare interface BlockInsertion {
925
886
  /** Unique identifier for this insertion. */
926
887
  uuid: string;
@@ -939,11 +900,7 @@ export declare interface BlockInsertion {
939
900
  /** Editable fields of {@link BlockInsertion} — everything except the `uuid`. */
940
901
  export declare type BlockInsertionData = Omit<BlockInsertion, "uuid">;
941
902
 
942
- /**
943
- * Style for a {@link BlockAnnotations} system.
944
- * `textOffset` and `fontSize` are unused for blocks but required by
945
- * {@link BaseAnnotationStyle} — set them to `0` in the default style.
946
- */
903
+ /** Style for a {@link BlockAnnotations} system. */
947
904
  export declare interface BlockStyle extends BaseAnnotationStyle {
948
905
  }
949
906
 
@@ -1019,43 +976,19 @@ export declare class BoundingBoxer extends Component implements Disposable_2 {
1019
976
  */
1020
977
  export declare function buildAnglePositions(dim: AngleAnnotation, style: AngleAnnotationStyle): number[];
1021
978
 
1022
- /**
1023
- * Builds vertex positions for the live preview during `positioningArc`.
1024
- * Uses the cursor distance from the vertex as the arc radius.
1025
- */
979
+ /** Builds vertex positions for the live preview during `positioningArc`. */
1026
980
  export declare function buildAnglePreviewPositions(pointA: THREE.Vector3, vertex: THREE.Vector3, pointB: THREE.Vector3, cursor: THREE.Vector3 | null, style: AngleAnnotationStyle, flipped?: boolean): number[];
1027
981
 
1028
- /**
1029
- * Builds the flat vertex positions for a committed callout annotation:
1030
- * enclosure outline + attachment-to-elbow line + elbow-to-extensionEnd line
1031
- * + optional tick at `extensionEnd`.
1032
- */
982
+ /** Builds the flat vertex positions for a committed callout annotation. */
1033
983
  export declare function buildCalloutPositions(ann: CalloutAnnotation, style: CalloutAnnotationStyle): number[];
1034
984
 
1035
- /**
1036
- * Builds vertex positions for the live preview during interactive placement.
1037
- * During `awaitingRadius`, `cursor` is treated as the SE corner of the enclosure
1038
- * so halfW/halfH are derived live from the delta to `center`.
1039
- */
985
+ /** Builds vertex positions for the live preview during interactive placement. */
1040
986
  export declare function buildCalloutPreviewPositions(kind: "awaitingRadius" | "awaitingElbow" | "awaitingExtension", center: THREE.Vector3, halfW: number, halfH: number, elbow: THREE.Vector3 | null, cursor: THREE.Vector3 | null, style: CalloutAnnotationStyle): number[];
1041
987
 
1042
- /**
1043
- * Builds the flat vertex positions (x,y,z triplets) for a single committed
1044
- * linear dimension. The result can be passed directly to a
1045
- * `THREE.BufferAttribute`.
1046
- *
1047
- * The geometry lives in drawing local space (XZ plane, Y = 0) and consists of:
1048
- * - Extension line from pointA
1049
- * - Extension line from pointB
1050
- * - Dimension line connecting both extension line ends
1051
- * - Tick geometry at each end of the dimension line (from `style.tick`)
1052
- */
988
+ /** Builds the flat vertex positions (x,y,z triplets) for a single committed linear dimension. */
1053
989
  export declare function buildDimensionPositions(dim: LinearAnnotation, style: LinearAnnotationStyle): number[];
1054
990
 
1055
- /**
1056
- * Builds an array of {@link LinearAnnotation}s from consecutive point pairs,
1057
- * all sharing the same perpendicular offset.
1058
- */
991
+ /** Builds an array of {@link LinearAnnotation}s from consecutive point pairs, all sharing the same perpendicular offset. */
1059
992
  export declare function buildDimensions(points: THREE.Vector3[], offset: number): LinearAnnotation[];
1060
993
 
1061
994
  /**
@@ -1068,31 +1001,16 @@ export declare function buildLeaderPositions(ann: LeaderAnnotation, style: Leade
1068
1001
  */
1069
1002
  export declare function buildLeaderPreviewPositions(kind: "placingElbow" | "placingExtension", arrowTip: THREE.Vector3, elbow: THREE.Vector3 | null, cursor: THREE.Vector3 | null, style: LeaderAnnotationStyle): number[];
1070
1003
 
1071
- /**
1072
- * Builds the flat vertex positions for a live dimension preview.
1073
- *
1074
- * During `placingPoints`: lines connecting all placed points plus a line
1075
- * to the cursor.
1076
- * During `positioningOffset`: a full dimension preview using the cursor as
1077
- * the offset reference, rendered with the active style's tick.
1078
- */
1004
+ /** Builds the flat vertex positions for a live dimension preview. */
1079
1005
  export declare function buildPreviewPositions(kind: "placingPoints" | "positioningOffset", points: THREE.Vector3[], cursor: THREE.Vector3 | null, style: LinearAnnotationStyle): number[];
1080
1006
 
1081
1007
  /**
1082
1008
  * Builds the `LineSegments` position array for a committed slope annotation.
1083
- *
1084
- * The geometry consists of:
1085
- * - **Shaft**: tail → tip
1086
- * - **Tick**: geometry produced by `style.tick` at the downhill tip
1087
- *
1088
1009
  * @returns A flat `Float32Array` of XYZ triplets (vertex pairs for `LineSegments`).
1089
1010
  */
1090
1011
  export declare function buildSlopePositions(ann: SlopeAnnotation, style: SlopeAnnotationStyle): Float32Array;
1091
1012
 
1092
- /**
1093
- * The committed data for a single callout annotation.
1094
- * All coordinates are in drawing local space (XZ plane, Y = 0).
1095
- */
1013
+ /** The committed data for a single callout annotation. */
1096
1014
  export declare interface CalloutAnnotation {
1097
1015
  /** Unique identifier. */
1098
1016
  uuid: string;
@@ -1141,16 +1059,10 @@ export declare type CalloutAnnotationEvent =
1141
1059
  type: "ESCAPE";
1142
1060
  };
1143
1061
 
1144
- /**
1145
- * Pure state transition function for the callout annotation tool.
1146
- * Returns the **same state reference** when no transition applies.
1147
- */
1062
+ /** Pure state transition function for the callout annotation tool. */
1148
1063
  export declare function calloutAnnotationMachine(state: CalloutAnnotationState, event: CalloutAnnotationEvent): CalloutAnnotationState;
1149
1064
 
1150
- /**
1151
- * Global drawing system that manages callout annotations across all
1152
- * {@link TechnicalDrawing} instances.
1153
- */
1065
+ /** Global drawing system that manages callout annotations across all {@link TechnicalDrawing} instances. */
1154
1066
  export declare class CalloutAnnotations extends AnnotationSystem<CalloutAnnotationSystem> implements Transitionable<CalloutAnnotationState, CalloutAnnotationEvent>, Disposable_2 {
1155
1067
  enabled: boolean;
1156
1068
  readonly _item: CalloutAnnotation;
@@ -1257,11 +1169,7 @@ export declare interface CameraControllable {
1257
1169
  */
1258
1170
  export declare type CameraProjection = "Perspective" | "Orthographic";
1259
1171
 
1260
- /**
1261
- * Elliptical enclosure — an ellipse approximated with line segments centred on
1262
- * `center`, with semi-axis `halfW` on X and `halfH` on Z.
1263
- * When `halfW === halfH` the result is a circle.
1264
- */
1172
+ /** Elliptical enclosure — an ellipse approximated with line segments centred on `center`. */
1265
1173
  export declare const CircleEnclosure: EnclosureBuilder;
1266
1174
 
1267
1175
  /**
@@ -1615,10 +1523,7 @@ declare type ClipperConfigType = {
1615
1523
  size: NumberSettingControl;
1616
1524
  };
1617
1525
 
1618
- /**
1619
- * Revision-cloud enclosure — a bumpy rectangle centred on `center`.
1620
- * Width = 2 × halfW, height = 2 × halfH.
1621
- */
1526
+ /** Revision-cloud enclosure — a bumpy rectangle centred on `center`. */
1622
1527
  export declare const CloudEnclosure: EnclosureBuilder;
1623
1528
 
1624
1529
  export declare interface ColorSettingsControl {
@@ -1763,45 +1668,21 @@ export declare class Components implements Disposable_2 {
1763
1668
  }
1764
1669
 
1765
1670
  /**
1766
- * Computes a local-to-world transformation matrix that maps a technical
1767
- * drawing's local coordinate system onto a target plane in 3D world space.
1768
- *
1769
- * Given three point pairs — each pair being a point on the drawing (local
1770
- * space) and its corresponding point in the 3D world — the function returns
1771
- * the `THREE.Matrix4` that, when applied to the drawing's container, will
1772
- * align the drawing to the target plane.
1773
- *
1774
- * The transformation encodes **translation**, **rotation**, and **uniform
1775
- * scale** (derived from the ratio of world vs drawing distances between the
1776
- * first pair of points, which handles unit mismatches such as mm vs m).
1777
- *
1671
+ * Computes a local-to-world transformation matrix that maps a technical drawing's local coordinate system onto a target plane in 3D world space.
1778
1672
  * @throws If either set of points is collinear (cannot define a plane).
1779
1673
  * @throws If either set contains a degenerate first pair (zero distance).
1780
- *
1781
1674
  * @param drawingPoints - Three non-collinear points in drawing local space.
1782
1675
  * @param worldPoints - Three corresponding non-collinear points in world space.
1783
1676
  */
1784
1677
  export declare function computeAlignmentMatrix(drawingPoints: THREE.Vector3[], worldPoints: THREE.Vector3[]): THREE.Matrix4;
1785
1678
 
1786
- /**
1787
- * Returns the angle in radians between the two rays defined by the dimension.
1788
- * Result is in [0, π].
1789
- */
1679
+ /** Returns the angle in radians between the two rays defined by the dimension. */
1790
1680
  export declare function computeAngle(dim: AngleAnnotation): number;
1791
1681
 
1792
- /**
1793
- * Returns the angle (in radians, in the XZ plane) of the bisector ray between
1794
- * the two measured rays. Useful for positioning the text label.
1795
- */
1682
+ /** Returns the angle (in radians, in the XZ plane) of the bisector ray between the two measured rays. */
1796
1683
  export declare function computeBisectorAngle(dim: AngleAnnotation): number;
1797
1684
 
1798
- /**
1799
- * Computes the signed offset from a cursor position to the measurement axis
1800
- * defined by the first and last points.
1801
- *
1802
- * The offset is measured perpendicular to the `(points[0] → points[last])`
1803
- * direction, which is the direction along the measured lines (lineDir).
1804
- */
1685
+ /** Computes the signed offset from a cursor position to the measurement axis defined by the first and last points. */
1805
1686
  export declare function computeOffset(points: THREE.Vector3[], cursor: THREE.Vector3): number;
1806
1687
 
1807
1688
  /**
@@ -2083,21 +1964,10 @@ export declare class DataSet<T> extends Set<T> {
2083
1964
  dispose(): void;
2084
1965
  }
2085
1966
 
2086
- /**
2087
- * Diagonal slash tick (architectural style).
2088
- * A single line crossing the dimension endpoint at 45° relative to the
2089
- * dimension line direction.
2090
- */
1967
+ /** Diagonal slash tick (architectural style). */
2091
1968
  export declare const DiagonalTick: LineTickBuilder;
2092
1969
 
2093
- /**
2094
- * Defines how a measured value (in drawing-space metres) is converted to a
2095
- * display string. Pass one of the {@link Units} presets or build your own.
2096
- *
2097
- * ```ts
2098
- * dims.styles.get("default")!.unit = OBC.Units.cm;
2099
- * ```
2100
- */
1970
+ /** Defines how a measured value (in drawing-space metres) is converted to a display string. */
2101
1971
  export declare interface DimensionUnit {
2102
1972
  /** Multiplier applied to the raw metre value before display. */
2103
1973
  factor: number;
@@ -2242,31 +2112,27 @@ export declare interface DocumentReference {
2242
2112
  description?: string;
2243
2113
  }
2244
2114
 
2245
- /**
2246
- * Dot tick — a small circle drawn with line segments at the endpoint.
2247
- * Standard ISO tick for radius and diameter dimensions.
2248
- * The circle is centred on the endpoint and independent of line direction.
2249
- */
2115
+ /** Dot tick — a small circle drawn with line segments at the endpoint. */
2250
2116
  export declare const DotTick: LineTickBuilder;
2251
2117
 
2252
- /**
2253
- * Flat annotation store for a {@link TechnicalDrawing}, keyed by UUID.
2254
- *
2255
- * Each entry bundles the owning system, the data, and the Three.js group —
2256
- * so a single `drawing.annotations.get(uuid)` gives full access to all three.
2257
- *
2258
- * Systems write here when they create or update annotations; consumers read
2259
- * from here or subscribe to system-level events (`onCommit`, `onDelete`).
2260
- *
2261
- * ```ts
2262
- * // Get everything for a known UUID
2263
- * const { system, data, three } = drawing.annotations.get(uuid)!;
2264
- *
2265
- * // Iterate all annotations owned by a specific system
2266
- * for (const [uuid, dim] of drawing.annotations.getBySystem(dims)) { ... }
2267
- * ```
2268
- */
2118
+ /** Flat annotation store for a {@link TechnicalDrawing}, keyed by UUID. */
2269
2119
  export declare class DrawingAnnotations extends FRAGS.DataMap<string, AnnotationEntry> {
2120
+ /**
2121
+ * Each entry bundles the owning system, the data, and the Three.js group —
2122
+ * so a single `drawing.annotations.get(uuid)` gives full access to all three.
2123
+ *
2124
+ * Systems write here when they create or update annotations; consumers read
2125
+ * from here or subscribe to system-level events (`onCommit`, `onDelete`).
2126
+ *
2127
+ * ```ts
2128
+ * // Get everything for a known UUID
2129
+ * const { system, data, three } = drawing.annotations.get(uuid)!;
2130
+ *
2131
+ * // Iterate all annotations owned by a specific system
2132
+ * for (const [uuid, dim] of drawing.annotations.getBySystem(dims)) { ... }
2133
+ * ```
2134
+ */
2135
+ constructor();
2270
2136
  /**
2271
2137
  * Returns a snapshot map of `uuid → item` for all annotations owned by
2272
2138
  * `system` on this drawing. Filters the flat store by system identity.
@@ -2285,10 +2151,7 @@ export declare class DrawingAnnotations extends FRAGS.DataMap<string, Annotation
2285
2151
  }): Map<string, T>;
2286
2152
  }
2287
2153
 
2288
- /**
2289
- * Result of a successful raycast against a {@link TechnicalDrawing}.
2290
- * The `point` is in the drawing's **local coordinate space** (XZ plane, Y = 0).
2291
- */
2154
+ /** Result of a successful raycast against a {@link TechnicalDrawing}. */
2292
2155
  export declare interface DrawingIntersection {
2293
2156
  /** Hit position in drawing local space (X right, Z down-screen, Y = 0). */
2294
2157
  point: THREE.Vector3;
@@ -2306,10 +2169,7 @@ export declare interface DrawingIntersection {
2306
2169
  line: THREE.Line3 | null;
2307
2170
  }
2308
2171
 
2309
- /**
2310
- * A named organizational layer on a {@link TechnicalDrawing}.
2311
- * Mirrors the layer concept in CAD applications (AutoCAD, DXF, etc.).
2312
- */
2172
+ /** A named organizational layer on a {@link TechnicalDrawing}. */
2313
2173
  export declare interface DrawingLayer {
2314
2174
  /** Unique name identifying this layer. */
2315
2175
  name: string;
@@ -2328,28 +2188,27 @@ export declare interface DrawingLayer {
2328
2188
  material: THREE.LineBasicMaterial;
2329
2189
  }
2330
2190
 
2331
- /**
2332
- * Manages the named layers of a {@link TechnicalDrawing}.
2333
- *
2334
- * Accessible via `drawing.layers`. Each layer owns a `THREE.LineBasicMaterial`
2335
- * that is shared across all projection `LineSegments` assigned to it —
2336
- * mutating the material (e.g. via {@link setColor}) is reflected on every line
2337
- * immediately without any scene traversal. Annotation systems always use their
2338
- * own style material and are not affected by layer materials.
2339
- *
2340
- * Extends `DataMap<string, DrawingLayer>` so consumers get reactive events
2341
- * (`onItemSet`, `onItemDeleted`, …) directly on `drawing.layers`.
2342
- *
2343
- * Layer `"0"` always exists and cannot be removed.
2344
- *
2345
- * ```ts
2346
- * drawing.layers.create("walls", { material: new THREE.LineBasicMaterial({ color: 0x333333 }) });
2347
- * drawing.layers.setColor("walls", 0x888888);
2348
- * drawing.layers.setVisibility("walls", false);
2349
- * ```
2350
- */
2191
+ /** Manages the named layers of a {@link TechnicalDrawing}. */
2351
2192
  export declare class DrawingLayers extends FRAGS.DataMap<string, DrawingLayer> {
2352
2193
  private readonly _container;
2194
+ /**
2195
+ * Accessible via `drawing.layers`. Each layer owns a `THREE.LineBasicMaterial`
2196
+ * that is shared across all projection `LineSegments` assigned to it —
2197
+ * mutating the material (e.g. via {@link setColor}) is reflected on every line
2198
+ * immediately without any scene traversal. Annotation systems always use their
2199
+ * own style material and are not affected by layer materials.
2200
+ *
2201
+ * Extends `DataMap<string, DrawingLayer>` so consumers get reactive events
2202
+ * (`onItemSet`, `onItemDeleted`, …) directly on `drawing.layers`.
2203
+ *
2204
+ * Layer `"0"` always exists and cannot be removed.
2205
+ *
2206
+ * ```ts
2207
+ * drawing.layers.create("walls", { material: new THREE.LineBasicMaterial({ color: 0x333333 }) });
2208
+ * drawing.layers.setColor("walls", 0x888888);
2209
+ * drawing.layers.setVisibility("walls", false);
2210
+ * ```
2211
+ */
2353
2212
  constructor(container: THREE.Group);
2354
2213
  /**
2355
2214
  * Creates a new layer. If a layer with the same name already exists, returns
@@ -2421,20 +2280,7 @@ declare interface DrawingProjectionSource {
2421
2280
  far: number;
2422
2281
  }
2423
2282
 
2424
- /**
2425
- * "Type bag" descriptor that fully parameterises an annotation system.
2426
- * Each system declares a concrete interface extending this.
2427
- *
2428
- * ```ts
2429
- * interface LinearAnnotationSystem extends DrawingSystemDescriptor {
2430
- * item: LinearAnnotation;
2431
- * data: LinearAnnotationData;
2432
- * style: LinearAnnotationStyle;
2433
- * handle: "pointA" | "pointB" | "offset";
2434
- * }
2435
- * class LinearAnnotations extends AnnotationSystem<LinearAnnotationSystem> { ... }
2436
- * ```
2437
- */
2283
+ /** "Type bag" descriptor that fully parameterises an annotation system. */
2438
2284
  export declare interface DrawingSystemDescriptor {
2439
2285
  item: {
2440
2286
  uuid: string;
@@ -2445,21 +2291,7 @@ export declare interface DrawingSystemDescriptor {
2445
2291
  handle: string;
2446
2292
  }
2447
2293
 
2448
- /**
2449
- * Represents a framed orthographic window into a {@link TechnicalDrawing}.
2450
- *
2451
- * The viewport lives in the drawing's local coordinate system (XZ plane, Y = 0).
2452
- * Its {@link camera} must be added as a child of the drawing's container so that
2453
- * any world-space transform applied to the container automatically moves the camera.
2454
- *
2455
- * The camera uses **layer 1** exclusively, so only geometry explicitly assigned
2456
- * to layer 1 (projection lines, dimensions) is visible in paper-space renders.
2457
- *
2458
- * Local coordinate convention:
2459
- * - X right → world +X
2460
- * - Y up (screen) → world -Z
2461
- * - Normal (out of plane) → world +Y
2462
- */
2294
+ /** Represents a framed orthographic window into a {@link TechnicalDrawing}. */
2463
2295
  export declare class DrawingViewport {
2464
2296
  /** Unique identifier for this viewport instance. */
2465
2297
  readonly uuid: string;
@@ -2527,6 +2359,19 @@ export declare class DrawingViewport {
2527
2359
  get localYAxis(): THREE.Vector3;
2528
2360
  /** Drawing plane normal (world +Y). */
2529
2361
  get normal(): THREE.Vector3;
2362
+ /**
2363
+ * The viewport lives in the drawing's local coordinate system (XZ plane, Y = 0).
2364
+ * Its {@link camera} must be added as a child of the drawing's container so that
2365
+ * any world-space transform applied to the container automatically moves the camera.
2366
+ *
2367
+ * The camera uses **layer 1** exclusively, so only geometry explicitly assigned
2368
+ * to layer 1 (projection lines, dimensions) is visible in paper-space renders.
2369
+ *
2370
+ * Local coordinate convention:
2371
+ * - X right → world +X
2372
+ * - Y up (screen) → world -Z
2373
+ * - Normal (out of plane) → world +Y
2374
+ */
2530
2375
  constructor(config: DrawingViewportConfig);
2531
2376
  /* Excluded from this release type: setContainer */
2532
2377
  /**
@@ -2567,44 +2412,7 @@ export declare interface DrawingViewportConfig {
2567
2412
  name?: string;
2568
2413
  }
2569
2414
 
2570
- /**
2571
- * Visualises the bounds of a `DrawingViewport` as a rectangle in the 3D scene.
2572
- *
2573
- * Works exactly like the built-in Three.js helpers (e.g. `THREE.CameraHelper`):
2574
- * the result is a plain `THREE.Group` you can add wherever you like in the scene
2575
- * graph. It renders on **layer 0**, so it is visible to the perspective camera
2576
- * but invisible to the viewport's own orthographic camera (which only renders
2577
- * layer 1).
2578
- *
2579
- * Typically you do not construct this directly — use
2580
- * `DrawingViewport.helperVisible = true` instead, which attaches the helper to
2581
- * the drawing container automatically.
2582
- *
2583
- * When {@link editable} is `true`, two kinds of interaction are enabled:
2584
- *
2585
- * - **Resize** — hover one of the eight handle spheres (corners + edge midpoints)
2586
- * and drag to resize the viewport in that direction.
2587
- * - **Move** — hover the border rectangle itself and drag to translate the
2588
- * entire viewport while keeping its width and height constant.
2589
- *
2590
- * In both cases the border and the hovered element turn orange as visual
2591
- * feedback, and {@link isDragging} becomes `true` for the duration of the drag.
2592
- *
2593
- * The class contains no browser API references and is safe in Node.js
2594
- * environments; the consumer forwards events:
2595
- *
2596
- * ```ts
2597
- * container.addEventListener("mousemove", (e) => {
2598
- * raycaster.setFromCamera(getNDC(e), camera);
2599
- * viewport.helper.onPointerMove(raycaster.ray);
2600
- * });
2601
- * container.addEventListener("mousedown", (e) => {
2602
- * raycaster.setFromCamera(getNDC(e), camera);
2603
- * viewport.helper.onPointerDown(raycaster.ray);
2604
- * });
2605
- * container.addEventListener("mouseup", () => viewport.helper.onPointerUp());
2606
- * ```
2607
- */
2415
+ /** Visualises the bounds of a `DrawingViewport` as a rectangle in the 3D scene. */
2608
2416
  export declare class DrawingViewportHelper extends THREE.Group {
2609
2417
  private readonly _viewport;
2610
2418
  private readonly _border;
@@ -2637,6 +2445,42 @@ export declare class DrawingViewportHelper extends THREE.Group {
2637
2445
  set movable(value: boolean);
2638
2446
  /** `true` while either a resize or a move drag is in progress. */
2639
2447
  get isDragging(): boolean;
2448
+ /**
2449
+ * Works exactly like the built-in Three.js helpers (e.g. `THREE.CameraHelper`):
2450
+ * the result is a plain `THREE.Group` you can add wherever you like in the scene
2451
+ * graph. It renders on **layer 0**, so it is visible to the perspective camera
2452
+ * but invisible to the viewport's own orthographic camera (which only renders
2453
+ * layer 1).
2454
+ *
2455
+ * Typically you do not construct this directly — use
2456
+ * `DrawingViewport.helperVisible = true` instead, which attaches the helper to
2457
+ * the drawing container automatically.
2458
+ *
2459
+ * When {@link editable} is `true`, two kinds of interaction are enabled:
2460
+ *
2461
+ * - **Resize** — hover one of the eight handle spheres (corners + edge midpoints)
2462
+ * and drag to resize the viewport in that direction.
2463
+ * - **Move** — hover the border rectangle itself and drag to translate the
2464
+ * entire viewport while keeping its width and height constant.
2465
+ *
2466
+ * In both cases the border and the hovered element turn orange as visual
2467
+ * feedback, and {@link isDragging} becomes `true` for the duration of the drag.
2468
+ *
2469
+ * The class contains no browser API references and is safe in Node.js
2470
+ * environments; the consumer forwards events:
2471
+ *
2472
+ * ```ts
2473
+ * container.addEventListener("mousemove", (e) => {
2474
+ * raycaster.setFromCamera(getNDC(e), camera);
2475
+ * viewport.helper.onPointerMove(raycaster.ray);
2476
+ * });
2477
+ * container.addEventListener("mousedown", (e) => {
2478
+ * raycaster.setFromCamera(getNDC(e), camera);
2479
+ * viewport.helper.onPointerDown(raycaster.ray);
2480
+ * });
2481
+ * container.addEventListener("mouseup", () => viewport.helper.onPointerUp());
2482
+ * ```
2483
+ */
2640
2484
  constructor(viewport: ViewportBoundsController);
2641
2485
  /**
2642
2486
  * Rebuilds the border geometry and repositions all handles to match the
@@ -2678,19 +2522,18 @@ export declare class DrawingViewportHelper extends THREE.Group {
2678
2522
  private _setBorderHover;
2679
2523
  }
2680
2524
 
2681
- /**
2682
- * Manages the viewports of a {@link TechnicalDrawing}.
2683
- *
2684
- * Accessible via `drawing.viewports`. Extends `DataMap` so consumers get
2685
- * reactive events (`onItemSet`, `onBeforeDelete`, …) for free.
2686
- *
2687
- * ```ts
2688
- * const vp = drawing.viewports.create({ left: -1, right: 5, top: 1, bottom: -4 });
2689
- * drawing.viewports.delete(vp.uuid); // disposes and removes
2690
- * ```
2691
- */
2525
+ /** Manages the viewports of a {@link TechnicalDrawing}. */
2692
2526
  export declare class DrawingViewports extends FRAGS.DataMap<string, DrawingViewport> {
2693
2527
  private readonly _container;
2528
+ /**
2529
+ * Accessible via `drawing.viewports`. Extends `DataMap` so consumers get
2530
+ * reactive events (`onItemSet`, `onBeforeDelete`, …) for free.
2531
+ *
2532
+ * ```ts
2533
+ * const vp = drawing.viewports.create({ left: -1, right: 5, top: 1, bottom: -4 });
2534
+ * drawing.viewports.delete(vp.uuid); // disposes and removes
2535
+ * ```
2536
+ */
2694
2537
  constructor(container: THREE.Group);
2695
2538
  /**
2696
2539
  * Creates a new {@link DrawingViewport}, adds its camera to the drawing
@@ -2708,16 +2551,7 @@ export declare interface DxfDrawingEntry {
2708
2551
  viewports: DxfViewportEntry[];
2709
2552
  }
2710
2553
 
2711
- /**
2712
- * Serializes {@link TechnicalDrawing} content to DXF format (AC1015 / AutoCAD R2000).
2713
- *
2714
- * Used through {@link DxfManager}:
2715
- * ```ts
2716
- * const dxf = components.get(OBC.DxfManager).exporter.export([
2717
- * { drawing, viewports: [{ viewport, x: 10, y: 10 }] },
2718
- * ], { widthMm: 420, heightMm: 297, margin: 10 });
2719
- * ```
2720
- */
2554
+ /** Serializes {@link TechnicalDrawing} content to DXF format (AC1015 / AutoCAD R2000). */
2721
2555
  export declare class DxfExporter {
2722
2556
  private readonly _components;
2723
2557
  /** Decimal places used when formatting measurement text in DXF. */
@@ -2737,6 +2571,14 @@ export declare class DxfExporter {
2737
2571
  private _paperSlot;
2738
2572
  private readonly _annotationLayers;
2739
2573
  private readonly _systemExporters;
2574
+ /**
2575
+ * Used through {@link DxfManager}:
2576
+ * ```ts
2577
+ * const dxf = components.get(OBC.DxfManager).exporter.export([
2578
+ * { drawing, viewports: [{ viewport, x: 10, y: 10 }] },
2579
+ * ], { widthMm: 420, heightMm: 297, margin: 10 });
2580
+ * ```
2581
+ */
2740
2582
  constructor(_components: Components);
2741
2583
  /**
2742
2584
  * Registers a custom DXF exporter for a {@link DrawingSystem} subclass.
@@ -2809,19 +2651,18 @@ export declare class DxfExporter {
2809
2651
  private _makeContext;
2810
2652
  }
2811
2653
 
2812
- /**
2813
- * Manages DXF import and export for technical drawings.
2814
- *
2815
- * ```ts
2816
- * const manager = components.get(OBC.DxfManager);
2817
- * const dxf = manager.exporter.export([{ drawing, viewports: [{ viewport }] }]);
2818
- * ```
2819
- */
2654
+ /** Manages DXF import and export for technical drawings. */
2820
2655
  export declare class DxfManager extends Component {
2821
2656
  static readonly uuid: "e9a2c3d4-5f67-4b89-a012-1c3d5e7f9b2a";
2822
2657
  enabled: boolean;
2823
2658
  /** Handles DXF serialisation of {@link TechnicalDrawing} content. */
2824
2659
  readonly exporter: DxfExporter;
2660
+ /**
2661
+ * ```ts
2662
+ * const manager = components.get(OBC.DxfManager);
2663
+ * const dxf = manager.exporter.export([{ drawing, viewports: [{ viewport }] }]);
2664
+ * ```
2665
+ */
2825
2666
  constructor(components: Components);
2826
2667
  }
2827
2668
 
@@ -2867,10 +2708,7 @@ export declare interface DxfWriteContext {
2867
2708
  textAngle(dx: number, dz: number): number;
2868
2709
  }
2869
2710
 
2870
- /**
2871
- * Result of an edge projection, containing visible/hidden geometries
2872
- * and a mapping from group indices to model item identifiers.
2873
- */
2711
+ /** Result of an edge projection, containing visible/hidden geometries and a mapping from group indices to model item identifiers. */
2874
2712
  export declare interface EdgeProjectionResult {
2875
2713
  /** Line segment geometry for visible edges. Has a `group` vertex attribute with group indices. */
2876
2714
  visible: THREE.BufferGeometry;
@@ -2883,11 +2721,7 @@ export declare interface EdgeProjectionResult {
2883
2721
  }>;
2884
2722
  }
2885
2723
 
2886
- /**
2887
- * Component that generates 2D edge projections from fragment model items.
2888
- * It takes a ModelIdMap, converts items to meshes, and runs them through
2889
- * the three-edge-projection library to produce visible/hidden line segment geometries.
2890
- */
2724
+ /** Component that generates 2D edge projections from fragment model items. */
2891
2725
  export declare class EdgeProjector extends Component implements Disposable_2 {
2892
2726
  static readonly uuid: "f2e76c3a-8b1d-4d5e-9a3f-7c6b2d4e8f1a";
2893
2727
  enabled: boolean;
@@ -2942,14 +2776,7 @@ export declare class EdgeProjector extends Component implements Disposable_2 {
2942
2776
  dispose(): void;
2943
2777
  }
2944
2778
 
2945
- /**
2946
- * Defines a closed shape (cloud, rectangle, circle, etc.) that forms the
2947
- * body of a callout annotation.
2948
- *
2949
- * `buildGeometry` returns flat XYZ triplet pairs suitable for `THREE.LineSegments`.
2950
- * `getAttachmentPoint` returns the point on the enclosure boundary in the
2951
- * given direction — needed because non-circular shapes have non-radial boundaries.
2952
- */
2779
+ /** Defines a closed shape (cloud, rectangle, circle, etc.) that forms the body of a callout annotation. */
2953
2780
  export declare type EnclosureBuilder = {
2954
2781
  /** Returns flat XYZ line-segment pairs forming the enclosure outline. */
2955
2782
  buildGeometry: (center: THREE.Vector3, halfW: number, halfH: number) => number[];
@@ -3202,24 +3029,13 @@ export declare class FastModelPickers extends Component implements Disposable_2
3202
3029
  dispose(): void;
3203
3030
  }
3204
3031
 
3205
- /**
3206
- * Filled arrowhead tick (solid triangle, requires a `THREE.Mesh`).
3207
- * Use this as `meshTick` on a style — pair with `NoTick` as `tick` if you
3208
- * want only the filled shape and no line arrowhead.
3209
- */
3032
+ /** Filled arrowhead tick (solid triangle, requires a `THREE.Mesh`). */
3210
3033
  export declare const FilledArrowTick: MeshTickBuilder;
3211
3034
 
3212
- /**
3213
- * Filled circle tick (solid disc, requires a `THREE.Mesh`).
3214
- * The disc is centred on the endpoint and approximated with 16 triangles.
3215
- */
3035
+ /** Filled circle tick (solid disc, requires a `THREE.Mesh`). */
3216
3036
  export declare const FilledCircleTick: MeshTickBuilder;
3217
3037
 
3218
- /**
3219
- * Filled square tick (solid square, requires a `THREE.Mesh`).
3220
- * The square is centred on the endpoint and oriented along the dimension line.
3221
- * Common in structural and steel drawings.
3222
- */
3038
+ /** Filled square tick (solid square, requires a `THREE.Mesh`). */
3223
3039
  export declare const FilledSquareTick: MeshTickBuilder;
3224
3040
 
3225
3041
  /**
@@ -3309,9 +3125,21 @@ export declare class FirstPersonMode implements NavigationMode {
3309
3125
  export declare function formatSlope(slope: number, format: SlopeFormat): string;
3310
3126
 
3311
3127
  /**
3312
- * Component to load, delete and manage [fragments](https://github.com/ThatOpen/engine_fragment) efficiently. 📕 [Tutorial](https://docs.thatopen.com/Tutorials/Components/Core/FragmentsManager). 📘 [API](https://docs.thatopen.com/api/@thatopen/components/classes/FragmentsManager).
3128
+ * Component to load, delete and manage [fragments](https://github.com/ThatOpen/engine_fragment) efficiently. 📕 [Tutorial](https://docs.thatopen.com/Tutorials/Components/Core/FragmentsManager). 📘 [API](https://docs.thatopen.com/api/@thatopen/components/classes/FragmentsManager). Before calling {@link FragmentsManager.init}, you need a URL for the fragments worker. The recommended way to get it is {@link FragmentsManager.getWorker}, which fetches the version-matched worker from unpkg.
3313
3129
  */
3314
3130
  export declare class FragmentsManager extends Component implements Disposable_2 {
3131
+ /**
3132
+ * Returns a blob URL for the fragments worker matching the installed
3133
+ * `@thatopen/fragments` version. Delegates to {@link FRAGS.FragmentsModels.getWorker}.
3134
+ * This is the recommended way to obtain the URL passed to {@link FragmentsManager.init}.
3135
+ *
3136
+ * @example
3137
+ * ```ts
3138
+ * const fragments = components.get(OBC.FragmentsManager);
3139
+ * fragments.init(await OBC.FragmentsManager.getWorker());
3140
+ * ```
3141
+ */
3142
+ static getWorker(): Promise<string>;
3315
3143
  /**
3316
3144
  * A unique identifier for the component.
3317
3145
  * This UUID is used to register the component within the Components system.
@@ -3340,6 +3168,13 @@ export declare class FragmentsManager extends Component implements Disposable_2
3340
3168
  constructor(components: Components);
3341
3169
  /** {@link Disposable.dispose} */
3342
3170
  dispose(): void;
3171
+ /**
3172
+ * Initializes the fragments core with the given worker URL.
3173
+ * The recommended way to obtain the URL is {@link FragmentsManager.getWorker}:
3174
+ * ```ts
3175
+ * fragments.init(await OBC.FragmentsManager.getWorker());
3176
+ * ```
3177
+ */
3343
3178
  init(workerURL: string, options?: {
3344
3179
  classicWorker?: boolean;
3345
3180
  }): void;
@@ -3395,20 +3230,13 @@ export declare class FragmentsManager extends Component implements Disposable_2
3395
3230
  applyBaseCoordinateSystem(object: THREE.Object3D | THREE.Vector3, originalCoordinateSystem?: THREE.Matrix4): THREE.Matrix4;
3396
3231
  }
3397
3232
 
3398
- /**
3399
- * Returns the tip position and inward tangent direction for each tick endpoint
3400
- * of an angle dimension arc. Used by {@link AngleDimensions} to build
3401
- * `meshTick` geometry.
3402
- */
3233
+ /** Returns the tip position and inward tangent direction for each tick endpoint of an angle dimension arc. */
3403
3234
  export declare function getAngleTickEndpoints(dim: AngleAnnotation): Array<{
3404
3235
  tip: THREE.Vector3;
3405
3236
  dir: THREE.Vector3;
3406
3237
  }>;
3407
3238
 
3408
- /**
3409
- * Returns the tip position and inward direction for each tick endpoint of a
3410
- * linear dimension. Used by {@link LinearDimensions} to build `meshTick` geometry.
3411
- */
3239
+ /** Returns the tip position and inward direction for each tick endpoint of a linear dimension. */
3412
3240
  export declare function getDimensionTickEndpoints(dim: LinearAnnotation): Array<{
3413
3241
  tip: THREE.Vector3;
3414
3242
  dir: THREE.Vector3;
@@ -4065,10 +3893,7 @@ export declare class ItemsFinder extends Component implements Serializable<Seria
4065
3893
  };
4066
3894
  }
4067
3895
 
4068
- /**
4069
- * The committed data for a single leader annotation.
4070
- * Stored in drawing local space (XZ plane, Y = 0).
4071
- */
3896
+ /** The committed data for a single leader annotation. */
4072
3897
  export declare interface LeaderAnnotation {
4073
3898
  /** Unique identifier. */
4074
3899
  uuid: string;
@@ -4112,16 +3937,10 @@ export declare type LeaderAnnotationEvent =
4112
3937
  type: "ESCAPE";
4113
3938
  };
4114
3939
 
4115
- /**
4116
- * Pure state transition function for the leader annotation tool.
4117
- * Returns the **same state reference** when no transition applies.
4118
- */
3940
+ /** Pure state transition function for the leader annotation tool. */
4119
3941
  export declare function leaderAnnotationMachine(state: LeaderAnnotationState, event: LeaderAnnotationEvent): LeaderAnnotationState;
4120
3942
 
4121
- /**
4122
- * Global drawing system that manages leader (arrow + text) annotations across
4123
- * all {@link TechnicalDrawing} instances.
4124
- */
3943
+ /** Global drawing system that manages leader (arrow + text) annotations across all {@link TechnicalDrawing} instances. */
4125
3944
  export declare class LeaderAnnotations extends AnnotationSystem<LeaderAnnotationSystem> implements Transitionable<LeaderAnnotationState, LeaderAnnotationEvent>, Disposable_2 {
4126
3945
  enabled: boolean;
4127
3946
  readonly _item: LeaderAnnotation;
@@ -4212,10 +4031,7 @@ declare interface LeaderAnnotationSystem {
4212
4031
  handle: "elbow" | "extensionEnd";
4213
4032
  }
4214
4033
 
4215
- /**
4216
- * The committed data for a single linear annotation.
4217
- * Stored in drawing local space (XZ plane, Y = 0).
4218
- */
4034
+ /** The committed data for a single linear annotation. */
4219
4035
  export declare interface LinearAnnotation {
4220
4036
  /** Unique identifier. */
4221
4037
  uuid: string;
@@ -4279,10 +4095,7 @@ export declare type LinearAnnotationEvent =
4279
4095
  type: "ESCAPE";
4280
4096
  };
4281
4097
 
4282
- /**
4283
- * Global drawing system that manages linear dimension annotations across all
4284
- * {@link TechnicalDrawing} instances.
4285
- */
4098
+ /** Global drawing system that manages linear dimension annotations across all {@link TechnicalDrawing} instances. */
4286
4099
  export declare class LinearAnnotations extends AnnotationSystem<LinearAnnotationSystem> implements Transitionable<LinearAnnotationState, LinearAnnotationEvent>, Disposable_2 {
4287
4100
  enabled: boolean;
4288
4101
  readonly _item: LinearAnnotation;
@@ -4367,20 +4180,11 @@ declare interface LinearAnnotationSystem {
4367
4180
  handle: "pointA" | "pointB" | "offset";
4368
4181
  }
4369
4182
 
4370
- /**
4371
- * Pure state transition function for the linear dimension tool.
4372
- *
4373
- * Given the current state and an incoming event, returns the next state.
4374
- * Returns the **same state reference** when no transition applies (caller can
4375
- * skip re-renders with a `===` check).
4376
- */
4183
+ /** Pure state transition function for the linear dimension tool. */
4377
4184
  export declare function linearDimensionMachine(state: LinearAnnotationState, event: LinearAnnotationEvent): LinearAnnotationState;
4378
4185
 
4379
4186
  /**
4380
- * A function that produces tick mark geometry at one endpoint of a dimension
4381
- * or leader line. Returns a flat array of XYZ triplets (vertex pairs for
4382
- * `LineSegments`).
4383
- *
4187
+ * A function that produces tick mark geometry at one endpoint of a dimension or leader line.
4384
4188
  * @param tip - The endpoint of the line (drawing local space).
4385
4189
  * @param lineDir - Normalised direction FROM `tip` TOWARD the other endpoint.
4386
4190
  * @param size - Tick size in drawing local units.
@@ -4457,12 +4261,7 @@ export declare class MeasurementUtils extends Component {
4457
4261
  }
4458
4262
 
4459
4263
  /**
4460
- * A function that produces filled tick mark geometry (triangles) at one
4461
- * endpoint. Returns a flat array of XYZ triplets forming non-indexed triangles
4462
- * for a `THREE.Mesh`.
4463
- *
4464
- * Same signature as {@link LineTickBuilder} — swap one for the other freely.
4465
- *
4264
+ * A function that produces filled tick mark geometry (triangles) at one endpoint.
4466
4265
  * @param tip - The endpoint of the dimension or leader line.
4467
4266
  * @param lineDir - Normalised direction FROM `tip` TOWARD the other endpoint.
4468
4267
  * @param size - Tick/arrow size in drawing local units.
@@ -4599,9 +4398,7 @@ export declare interface NoControl {
4599
4398
  value: any;
4600
4399
  }
4601
4400
 
4602
- /**
4603
- * No tick — dimension line ends cleanly at the extension lines.
4604
- */
4401
+ /** No tick — dimension line ends cleanly at the extension lines. */
4605
4402
  export declare const NoTick: LineTickBuilder;
4606
4403
 
4607
4404
  export declare interface NumberSettingControl {
@@ -4827,10 +4624,7 @@ export declare class Raycasters extends Component implements Disposable_2 {
4827
4624
  dispose(): void;
4828
4625
  }
4829
4626
 
4830
- /**
4831
- * Rectangular enclosure — a plain axis-aligned rectangle centred on `center`.
4832
- * Width = 2 × halfW, height = 2 × halfH.
4833
- */
4627
+ /** Rectangular enclosure — a plain axis-aligned rectangle centred on `center`. */
4834
4628
  export declare const RectEnclosure: EnclosureBuilder;
4835
4629
 
4836
4630
  /**
@@ -5608,10 +5402,7 @@ export declare class SimpleWorld<T extends BaseScene = BaseScene, U extends Base
5608
5402
  dispose(disposeResources?: boolean): void;
5609
5403
  }
5610
5404
 
5611
- /**
5612
- * A single committed slope annotation.
5613
- * All coordinates are in drawing local space (XZ plane, Y = 0).
5614
- */
5405
+ /** A single committed slope annotation. */
5615
5406
  export declare interface SlopeAnnotation {
5616
5407
  /** Unique identifier. */
5617
5408
  uuid: string;
@@ -5631,19 +5422,17 @@ export declare interface SlopeAnnotation {
5631
5422
  /** Editable fields of {@link SlopeAnnotation} — everything except the `uuid`. */
5632
5423
  export declare type SlopeAnnotationData = Omit<SlopeAnnotation, "uuid">;
5633
5424
 
5634
- /**
5635
- * Global drawing system that manages slope annotations across all
5636
- * {@link TechnicalDrawing} instances.
5637
- *
5638
- * Because slope data comes from the 3D model, there is no state machine.
5639
- * Call {@link add} directly with the computed slope values:
5640
- * ```ts
5641
- * slopes.add(drawing, { position, direction, slope, style: "default" });
5642
- * ```
5643
- */
5425
+ /** Global drawing system that manages slope annotations across all {@link TechnicalDrawing} instances. */
5644
5426
  export declare class SlopeAnnotations extends AnnotationSystem<SlopeAnnotationSystem> implements Disposable_2 {
5645
5427
  enabled: boolean;
5646
5428
  readonly _item: SlopeAnnotation;
5429
+ /**
5430
+ * Because slope data comes from the 3D model, there is no state machine.
5431
+ * Call {@link add} directly with the computed slope values:
5432
+ * ```ts
5433
+ * slopes.add(drawing, { position, direction, slope, style: "default" });
5434
+ * ```
5435
+ */
5647
5436
  constructor(components: Components);
5648
5437
  pickHandle(_drawing: TechnicalDrawing, _ray: THREE.Ray, _threshold?: number): {
5649
5438
  uuid: string;
@@ -5681,52 +5470,51 @@ declare interface SlopeAnnotationSystem {
5681
5470
  /** How the slope value is displayed in the text label. */
5682
5471
  export declare type SlopeFormat = "percentage" | "ratio" | "degrees";
5683
5472
 
5684
- /**
5685
- * A single technical drawing — the core spatial aggregate.
5686
- *
5687
- * Brings together:
5688
- * - A {@link three} (`THREE.Group`) that anchors the drawing in world space.
5689
- * All 2D geometry (projection lines, dimensions) must be added as children of
5690
- * this group so they inherit its world transform.
5691
- * - A collection of {@link viewports}, each defining an orthographic framing
5692
- * window and owning a camera that is itself a child of the container.
5693
- *
5694
- * Moving or rotating the container repositions the entire drawing — including
5695
- * all its viewport cameras — in the 3D world without affecting any local
5696
- * coordinates.
5697
- *
5698
- * ---
5699
- *
5700
- * ### Rotation convention
5701
- *
5702
- * The drawing projects geometry along its **local −Y axis**. The drawing
5703
- * plane is the local **XZ plane** (Y = 0).
5704
- *
5705
- * When rotating `drawing.three`, two constraints must hold at the same time:
5706
- *
5707
- * 1. **Projection direction** — local −Y must point toward the surface you
5708
- * want to capture.
5709
- * 2. **Text orientation** — local +X must point toward the right side of the
5710
- * screen when the drawing is viewed from the projection direction.
5711
- * Violating this causes annotations and dimension text to appear mirrored.
5712
- *
5713
- * For the six standard orthographic views, use {@link orientTo} — it enforces
5714
- * both constraints with a single call:
5715
- *
5716
- * ```ts
5717
- * drawing.orientTo(new THREE.Vector3(0, -1, 0)); // top / plan
5718
- * drawing.orientTo(new THREE.Vector3(0, 0, -1)); // front elevation
5719
- * ```
5720
- *
5721
- * ---
5722
- *
5723
- * Typically created via {@link TechnicalDrawings.create}.
5724
- */
5473
+ /** A single technical drawing — the core spatial aggregate. */
5725
5474
  export declare class TechnicalDrawing {
5726
5475
  /** Unique identifier for this drawing instance. */
5727
5476
  readonly uuid: string;
5728
5477
  private readonly _raycaster;
5729
5478
  private readonly _components;
5479
+ /**
5480
+ * Brings together:
5481
+ * - A {@link three} (`THREE.Group`) that anchors the drawing in world space.
5482
+ * All 2D geometry (projection lines, dimensions) must be added as children of
5483
+ * this group so they inherit its world transform.
5484
+ * - A collection of {@link viewports}, each defining an orthographic framing
5485
+ * window and owning a camera that is itself a child of the container.
5486
+ *
5487
+ * Moving or rotating the container repositions the entire drawing — including
5488
+ * all its viewport cameras — in the 3D world without affecting any local
5489
+ * coordinates.
5490
+ *
5491
+ * ---
5492
+ *
5493
+ * ### Rotation convention
5494
+ *
5495
+ * The drawing projects geometry along its **local −Y axis**. The drawing
5496
+ * plane is the local **XZ plane** (Y = 0).
5497
+ *
5498
+ * When rotating `drawing.three`, two constraints must hold at the same time:
5499
+ *
5500
+ * 1. **Projection direction** — local −Y must point toward the surface you
5501
+ * want to capture.
5502
+ * 2. **Text orientation** — local +X must point toward the right side of the
5503
+ * screen when the drawing is viewed from the projection direction.
5504
+ * Violating this causes annotations and dimension text to appear mirrored.
5505
+ *
5506
+ * For the six standard orthographic views, use {@link orientTo} — it enforces
5507
+ * both constraints with a single call:
5508
+ *
5509
+ * ```ts
5510
+ * drawing.orientTo(new THREE.Vector3(0, -1, 0)); // top / plan
5511
+ * drawing.orientTo(new THREE.Vector3(0, 0, -1)); // front elevation
5512
+ * ```
5513
+ *
5514
+ * ---
5515
+ *
5516
+ * Typically created via {@link TechnicalDrawings.create}.
5517
+ */
5730
5518
  constructor(components: Components);
5731
5519
  /**
5732
5520
  * The world that hosts this drawing. Set automatically by
@@ -5923,67 +5711,7 @@ export declare class TechnicalDrawing {
5923
5711
  dispose(): void;
5924
5712
  }
5925
5713
 
5926
- /**
5927
- * Visualises a {@link TechnicalDrawing}'s projection volume in the 3D scene
5928
- * and exposes three gizmo anchors for interactive control.
5929
- *
5930
- * Works exactly like the built-in Three.js helpers (e.g. `THREE.CameraHelper`):
5931
- * add it as a child of `drawing.three` so it inherits the drawing's world
5932
- * transform automatically.
5933
- *
5934
- * It renders on **layer 0** — visible to the perspective camera, invisible to
5935
- * the drawing's orthographic cameras (which only render layer 1).
5936
- *
5937
- * The helper draws three things:
5938
- * - A rectangular frame on the drawing plane (Y = 0 in drawing local space).
5939
- * - Four pillar lines dropping from each corner along the projection direction
5940
- * (local −Y) to the far boundary.
5941
- * - A matching rectangle at the far boundary.
5942
- *
5943
- * ### Interactive control via gizmos
5944
- *
5945
- * Three `THREE.Object3D` anchors are exposed for `TransformControls`:
5946
- *
5947
- * | Anchor | Controls | Constrained axis |
5948
- * |---|---|---|
5949
- * | {@link farHandle} | `drawing.far` | local Y |
5950
- * | {@link widthHandle} | {@link width} (symmetric) | local X |
5951
- * | {@link heightHandle} | {@link height} (symmetric) | local Z |
5952
- *
5953
- * Use the corresponding `attach*Gizmo` methods instead of configuring the
5954
- * gizmos manually — they enforce the correct axis constraints, local space,
5955
- * and change listeners automatically:
5956
- *
5957
- * ```ts
5958
- * const helper = new TechnicalDrawingHelper(drawing);
5959
- * helper.width = 20;
5960
- * helper.height = 15;
5961
- * drawing.three.add(helper);
5962
- *
5963
- * // Main gizmo — full translate + rotate on drawing.three
5964
- * const mainGizmo = new TransformControls(camera, domElement);
5965
- * mainGizmo.attach(drawing.three);
5966
- * scene.add(mainGizmo);
5967
- *
5968
- * // Depth gizmo — controls drawing.far
5969
- * const farGizmo = new TransformControls(camera, domElement);
5970
- * scene.add(farGizmo);
5971
- * helper.attachFarGizmo(farGizmo);
5972
- *
5973
- * // Width gizmo
5974
- * const widthGizmo = new TransformControls(camera, domElement);
5975
- * scene.add(widthGizmo);
5976
- * helper.attachWidthGizmo(widthGizmo);
5977
- *
5978
- * // Height gizmo
5979
- * const heightGizmo = new TransformControls(camera, domElement);
5980
- * scene.add(heightGizmo);
5981
- * helper.attachHeightGizmo(heightGizmo);
5982
- * ```
5983
- *
5984
- * Call {@link update} after changing {@link width}, {@link height}, or
5985
- * `drawing.far` programmatically to rebuild the geometry.
5986
- */
5714
+ /** Visualises a {@link TechnicalDrawing}'s projection volume in the 3D scene and exposes three gizmo anchors for interactive control. */
5987
5715
  export declare class TechnicalDrawingHelper extends THREE.Group {
5988
5716
  private readonly _drawing;
5989
5717
  private readonly _topFrame;
@@ -6024,6 +5752,64 @@ export declare class TechnicalDrawingHelper extends THREE.Group {
6024
5752
  * manipulate this object's position directly.
6025
5753
  */
6026
5754
  readonly heightHandle: THREE.Object3D<THREE.Object3DEventMap>;
5755
+ /**
5756
+ * Works exactly like the built-in Three.js helpers (e.g. `THREE.CameraHelper`):
5757
+ * add it as a child of `drawing.three` so it inherits the drawing's world
5758
+ * transform automatically.
5759
+ *
5760
+ * It renders on **layer 0** — visible to the perspective camera, invisible to
5761
+ * the drawing's orthographic cameras (which only render layer 1).
5762
+ *
5763
+ * The helper draws three things:
5764
+ * - A rectangular frame on the drawing plane (Y = 0 in drawing local space).
5765
+ * - Four pillar lines dropping from each corner along the projection direction
5766
+ * (local −Y) to the far boundary.
5767
+ * - A matching rectangle at the far boundary.
5768
+ *
5769
+ * ### Interactive control via gizmos
5770
+ *
5771
+ * Three `THREE.Object3D` anchors are exposed for `TransformControls`:
5772
+ *
5773
+ * | Anchor | Controls | Constrained axis |
5774
+ * |---|---|---|
5775
+ * | {@link farHandle} | `drawing.far` | local Y |
5776
+ * | {@link widthHandle} | {@link width} (symmetric) | local X |
5777
+ * | {@link heightHandle} | {@link height} (symmetric) | local Z |
5778
+ *
5779
+ * Use the corresponding `attach*Gizmo` methods instead of configuring the
5780
+ * gizmos manually — they enforce the correct axis constraints, local space,
5781
+ * and change listeners automatically:
5782
+ *
5783
+ * ```ts
5784
+ * const helper = new TechnicalDrawingHelper(drawing);
5785
+ * helper.width = 20;
5786
+ * helper.height = 15;
5787
+ * drawing.three.add(helper);
5788
+ *
5789
+ * // Main gizmo — full translate + rotate on drawing.three
5790
+ * const mainGizmo = new TransformControls(camera, domElement);
5791
+ * mainGizmo.attach(drawing.three);
5792
+ * scene.add(mainGizmo);
5793
+ *
5794
+ * // Depth gizmo — controls drawing.far
5795
+ * const farGizmo = new TransformControls(camera, domElement);
5796
+ * scene.add(farGizmo);
5797
+ * helper.attachFarGizmo(farGizmo);
5798
+ *
5799
+ * // Width gizmo
5800
+ * const widthGizmo = new TransformControls(camera, domElement);
5801
+ * scene.add(widthGizmo);
5802
+ * helper.attachWidthGizmo(widthGizmo);
5803
+ *
5804
+ * // Height gizmo
5805
+ * const heightGizmo = new TransformControls(camera, domElement);
5806
+ * scene.add(heightGizmo);
5807
+ * helper.attachHeightGizmo(heightGizmo);
5808
+ * ```
5809
+ *
5810
+ * Call {@link update} after changing {@link width}, {@link height}, or
5811
+ * `drawing.far` programmatically to rebuild the geometry.
5812
+ */
6027
5813
  constructor(drawing: DrawingProjectionSource);
6028
5814
  /**
6029
5815
  * Rebuilds the helper geometry and repositions all gizmo anchors to match
@@ -6066,30 +5852,7 @@ export declare class TechnicalDrawingHelper extends THREE.Group {
6066
5852
  dispose(): void;
6067
5853
  }
6068
5854
 
6069
- /**
6070
- * OBC Component that creates and manages {@link TechnicalDrawing} instances.
6071
- *
6072
- * A TechnicalDrawing is a 2D drawing plane that lives in 3D world space.
6073
- * It contains projection lines and dimension annotations (layer 1 geometry)
6074
- * framed by one or more orthographic {@link DrawingViewport}s.
6075
- *
6076
- * The drawing's `container` (a `THREE.Group`) can be freely transformed in the
6077
- * 3D world — all viewports and geometry move together as a single unit.
6078
- *
6079
- * @example
6080
- * ```ts
6081
- * const techDrawings = components.get(TechnicalDrawings);
6082
- * const drawing = techDrawings.create(world);
6083
- *
6084
- * // Add layer-1 geometry to the drawing
6085
- * const lines = new THREE.LineSegments(geometry, material);
6086
- * lines.layers.set(1);
6087
- * drawing.three.add(lines);
6088
- *
6089
- * // Add viewports
6090
- * const vp = drawing.viewports.create({ left: -1, right: 5, top: 1, bottom: -4 });
6091
- * ```
6092
- */
5855
+ /** OBC Component that creates and manages {@link TechnicalDrawing} instances. */
6093
5856
  export declare class TechnicalDrawings extends Component implements Disposable_2 {
6094
5857
  /**
6095
5858
  * A unique identifier for the component.
@@ -6107,6 +5870,28 @@ export declare class TechnicalDrawings extends Component implements Disposable_2
6107
5870
  readonly systems: FRAGS.DataMap<Function, AnnotationSystem<any>>;
6108
5871
  /** {@link Disposable.onDisposed} */
6109
5872
  readonly onDisposed: Event_2<unknown>;
5873
+ /**
5874
+ * A TechnicalDrawing is a 2D drawing plane that lives in 3D world space.
5875
+ * It contains projection lines and dimension annotations (layer 1 geometry)
5876
+ * framed by one or more orthographic {@link DrawingViewport}s.
5877
+ *
5878
+ * The drawing's `container` (a `THREE.Group`) can be freely transformed in the
5879
+ * 3D world — all viewports and geometry move together as a single unit.
5880
+ *
5881
+ * @example
5882
+ * ```ts
5883
+ * const techDrawings = components.get(TechnicalDrawings);
5884
+ * const drawing = techDrawings.create(world);
5885
+ *
5886
+ * // Add layer-1 geometry to the drawing
5887
+ * const lines = new THREE.LineSegments(geometry, material);
5888
+ * lines.layers.set(1);
5889
+ * drawing.three.add(lines);
5890
+ *
5891
+ * // Add viewports
5892
+ * const vp = drawing.viewports.create({ left: -1, right: 5, top: 1, bottom: -4 });
5893
+ * ```
5894
+ */
6110
5895
  constructor(components: Components);
6111
5896
  /**
6112
5897
  * Returns the global singleton instance of the given system, creating it if it
@@ -6280,9 +6065,6 @@ export declare class Topic implements BCFTopic {
6280
6065
 
6281
6066
  /**
6282
6067
  * Whether this component manages its interaction through an explicit state machine.
6283
- * The machine is the single source of truth: the system can only be in one state at
6284
- * a time, and every transition is deterministic given the current state and the event.
6285
- *
6286
6068
  * @template TState - Discriminated union of all valid states (each with a `kind` string).
6287
6069
  * @template TEvent - Discriminated union of all accepted events (each with a `type` string).
6288
6070
  */
@@ -6302,13 +6084,7 @@ export declare interface Transitionable<TState extends {
6302
6084
  readonly onMachineStateChanged: Event_2<TState>;
6303
6085
  }
6304
6086
 
6305
- /**
6306
- * Built-in {@link DimensionUnit} presets.
6307
- *
6308
- * ```ts
6309
- * style.unit = OBC.Units.mm;
6310
- * ```
6311
- */
6087
+ /** Built-in {@link DimensionUnit} presets. */
6312
6088
  export declare const Units: {
6313
6089
  readonly m: {
6314
6090
  readonly factor: 1;