@toolpath/viewer 1.4.0 → 1.5.0

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.
@@ -1,5 +1,5 @@
1
- import { P as PartModel, a as PartMeshRefs } from '../normalize-DHOSNiuO.js';
2
- export { E as EnginePart, b as EnginePartProps, M as MIN_KERNEL_VERSION, c as assertSupportedKernelVersion, n as normalizePartReport, s as smoothRegionNormals } from '../normalize-DHOSNiuO.js';
1
+ import { P as PartModel, a as PartMeshRefs } from '../normalize-CvnV9Ggh.js';
2
+ export { E as EnginePart, b as EnginePartProps, M as MIN_KERNEL_VERSION, c as assertSupportedKernelVersion, n as normalizePartReport, s as smoothRegionNormals } from '../normalize-CvnV9Ggh.js';
3
3
  import { BufferGeometry } from 'three';
4
4
  import 'react';
5
5
 
@@ -12,7 +12,7 @@ import {
12
12
  parsePartGeometry,
13
13
  partMeshAssets,
14
14
  smoothRegionNormals
15
- } from "../chunk-HH3W5T42.js";
15
+ } from "../chunk-4TBLMR4Z.js";
16
16
  export {
17
17
  EnginePart,
18
18
  MIN_KERNEL_VERSION,
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { P as PartModel, V as Vec3, d as ViewerTheme, S as SectionOptions, e as SectionState, f as PartModelRegion, T as TriangleRange, F as FeatureTag, R as RegionIndex, g as PartModelFeature, h as FeatureType } from './normalize-DHOSNiuO.js';
2
- export { A as AXES_PLANE_OFFSET, i as AXES_PLANE_SCALE, j as AxesPlane, B as BuildPickInput, C as CANDIDATE_WEIGHT, k as CAP_HATCH, D as DEFAULT_SECTION_NORMAL, l as DEFAULT_THEME, m as DIRECTION_COLORS, o as DISABLED_SECTION, E as EnginePart, p as FeatureHighlight, H as HANDLE_PIXELS, q as HIGHLIGHT_COLORS, r as HIGHLIGHT_WEIGHT, t as HOVER_WEIGHT, u as HighlightLayers, K as KnownFeatureType, v as KnownShapeKind, N as NO_MODIFIERS, O as OUTLINE_SCALE, w as PICKED_SURFACE_LABEL, x as PREVIEW_SCALE, y as PartMesh, z as PartMeshProps, a as PartMeshRefs, G as PartObject, I as PartPick, J as PickModifiers, L as REGION_ATTRIBUTE, Q as RegionHighlight, U as RegionPaint, W as SECTION_RENDER_ORDER, X as SectionAnchor, Y as SectionBounds, Z as SectionPlacement, _ as ShapeKind, $ as SurfaceHit, a0 as applyHighlightLayers, a1 as axesPlanes, a2 as buildPick, a3 as buildRegionAttribute, a4 as buildRegionTexels, a5 as createPart, a6 as directionColor, a7 as dragPlane, a8 as focusForPick, a9 as hitUnderRay, n as normalizePartReport, aa as pickedStartDepth, ab as resolveTheme, ac as sectionAnchor, ad as sectionBounds, ae as sectionConstant, af as sectionDepth, ag as sectionDepthConstant, ah as sectionDepthRange, ai as sectionFromPick, aj as sectionOffset, ak as sectionOptionsFromState, al as sectionPlane, s as smoothRegionNormals, am as surfaceUnderRay, an as themesEqual, ao as viewDirection } from './normalize-DHOSNiuO.js';
3
- import { BufferGeometry, CanvasTexture, Box3, Plane, Vector3, OrthographicCamera, PerspectiveCamera, Object3D, Matrix4, Vector2, Ray, ShaderMaterial, Texture, Color, MeshBasicMaterial, WebGLRenderTarget } from 'three';
1
+ import { P as PartModel, d as PartPick, V as Vec3, R as RegionHighlight, e as ViewerTheme, S as SectionOptions, f as SectionState, g as PartModelRegion, T as TriangleRange, F as FeatureTag, h as RegionIndex, i as PartModelFeature, j as FeatureType } from './normalize-CvnV9Ggh.js';
2
+ export { A as AXES_PLANE_OFFSET, k as AXES_PLANE_SCALE, l as AxesPlane, B as BuildPickInput, C as CANDIDATE_WEIGHT, m as CAP_HATCH, D as DEFAULT_SECTION_NORMAL, o as DEFAULT_THEME, p as DIRECTION_COLORS, q as DISABLED_SECTION, E as EnginePart, r as FeatureHighlight, t as FocusOptions, H as HANDLE_PIXELS, u as HIGHLIGHT_COLORS, v as HIGHLIGHT_WEIGHT, w as HOVER_WEIGHT, x as HighlightLayers, K as KnownFeatureType, y as KnownShapeKind, N as NO_MODIFIERS, O as OUTLINE_SCALE, z as PICKED_SURFACE_LABEL, G as PREVIEW_SCALE, I as PartDisplay, J as PartMesh, L as PartMeshProps, a as PartMeshRefs, Q as PartObject, U as PickModifiers, W as PointerLocation, X as REGION_ATTRIBUTE, Y as RegionPaint, Z as SECTION_GIZMO_FRAME_SCALE, _ as SECTION_RENDER_ORDER, $ as SectionAnchor, a0 as SectionBounds, a1 as SectionPlacement, a2 as ShapeKind, a3 as SurfaceHit, a4 as applyHighlightLayers, a5 as axesPlanes, a6 as buildPick, a7 as buildRegionAttribute, a8 as buildRegionTexels, a9 as createPart, aa as directionColor, ab as dragPlane, ac as focusForPick, ad as hitUnderRay, n as normalizePartReport, ae as pickedStartDepth, af as resolveTheme, ag as sectionAnchor, ah as sectionBounds, ai as sectionConstant, aj as sectionDepth, ak as sectionDepthConstant, al as sectionDepthRange, am as sectionFromPick, an as sectionMeasurement, ao as sectionOffset, ap as sectionOptionsFromState, aq as sectionPlane, s as smoothRegionNormals, ar as surfaceUnderRay, as as themesEqual, at as viewDirection } from './normalize-CvnV9Ggh.js';
3
+ import { BufferGeometry, Box3, CanvasTexture, Plane, Vector3, OrthographicCamera, PerspectiveCamera, Object3D, Matrix4, Vector2, Ray, ShaderMaterial, Texture, Color, MeshBasicMaterial, WebGLRenderTarget } from 'three';
4
4
  import * as react from 'react';
5
- import { RefObject, ReactNode, CSSProperties } from 'react';
5
+ import { ReactNode, PropsWithChildren, RefObject, CSSProperties } from 'react';
6
6
  import CameraControls from 'camera-controls';
7
7
 
8
8
  /**
@@ -13,6 +13,163 @@ import CameraControls from 'camera-controls';
13
13
  */
14
14
  declare function regionAdjacency(model: PartModel, geometry: BufferGeometry): Map<number, Set<number>>;
15
15
 
16
+ interface HoverCardProps {
17
+ /** The current `onHover` pick, or `null` after the pointer leaves the part. */
18
+ pick: PartPick | null;
19
+ /** Card content belongs to the application that understands the feature data. */
20
+ children: (pick: PartPick) => ReactNode;
21
+ /** Added beside the stable `viewer-hover-card` class. */
22
+ className?: string;
23
+ offset?: number;
24
+ }
25
+ /** A cursor-following shell for an application-owned part hover card. */
26
+ declare const HoverCard: ({ pick, children, className, offset }: HoverCardProps) => react.JSX.Element | null;
27
+
28
+ /** One action a toolbar button can read and invoke. */
29
+ interface ViewerToolbarControl {
30
+ /** Whether a toggle-style control is currently active. */
31
+ pressed?: boolean;
32
+ /** Invoked when the control is clicked. */
33
+ onClick: () => void;
34
+ }
35
+ /**
36
+ * The state and actions that toolbar controls read from their enclosing
37
+ * {@link ViewerToolbarProvider}.
38
+ *
39
+ * Controls are optional so an application can expose only the buttons it
40
+ * renders. Rendering a button without its matching control is an error.
41
+ */
42
+ interface ViewerToolbarControls {
43
+ stock?: ViewerToolbarControl;
44
+ axes?: ViewerToolbarControl;
45
+ grid?: ViewerToolbarControl;
46
+ banana?: ViewerToolbarControl;
47
+ directions?: ViewerToolbarControl;
48
+ hover?: ViewerToolbarControl;
49
+ focus?: ViewerToolbarControl;
50
+ wireframe?: ViewerToolbarControl;
51
+ section?: ViewerToolbarControl;
52
+ measure?: ViewerToolbarControl;
53
+ fit?: ViewerToolbarControl;
54
+ reset?: ViewerToolbarControl;
55
+ top?: ViewerToolbarControl;
56
+ }
57
+ /** Supplies viewer state and callbacks to a toolbar and its compound controls. */
58
+ declare const ViewerToolbarProvider: ({ controls, children, }: PropsWithChildren<{
59
+ controls: ViewerToolbarControls;
60
+ }>) => react.JSX.Element;
61
+ /**
62
+ * Read the state and callbacks configured for the enclosing viewer toolbar.
63
+ *
64
+ * Use this to build a toolbar control with an application's own component kit.
65
+ */
66
+ declare const useViewerToolbar: () => ViewerToolbarControls;
67
+ interface ViewerToolbarControlsProps extends PropsWithChildren {
68
+ /** Added to the standard toolbar control group. */
69
+ className?: string;
70
+ }
71
+ interface ViewerToolbarProps {
72
+ /** Added to the outer toolbar stack, beside `viewer-toolbar-stack`. */
73
+ className?: string;
74
+ /**
75
+ * Toolbar contents. Omit this for the standard control order, or compose
76
+ * `ViewerToolbar.Controls` with the individual button components.
77
+ */
78
+ children?: ReactNode;
79
+ }
80
+ declare const ViewerToolbar: (({ className, children }: ViewerToolbarProps) => react.JSX.Element) & {
81
+ Controls: ({ children, className }: ViewerToolbarControlsProps) => react.JSX.Element;
82
+ Divider: () => react.JSX.Element;
83
+ StockButton: () => react.JSX.Element;
84
+ AxesButton: () => react.JSX.Element;
85
+ GridButton: () => react.JSX.Element;
86
+ BananaButton: () => react.JSX.Element;
87
+ DirectionsButton: () => react.JSX.Element;
88
+ HoverButton: () => react.JSX.Element;
89
+ FocusButton: () => react.JSX.Element;
90
+ WireframeButton: () => react.JSX.Element;
91
+ SectionButton: () => react.JSX.Element;
92
+ MeasureButton: () => react.JSX.Element;
93
+ FitButton: () => react.JSX.Element;
94
+ ResetButton: () => react.JSX.Element;
95
+ TopButton: () => react.JSX.Element;
96
+ };
97
+
98
+ /**
99
+ * Per-side stock left in millimetres, in the part's coordinates.
100
+ *
101
+ * `wall` is radial stock on X/Y and `floor` is axial stock on Z. The number
102
+ * and `{ x, y, z }` forms remain accepted for callers using the original
103
+ * uniform/axis-specific box-stock API.
104
+ */
105
+ type StockAllowance = number | Vec3 | {
106
+ wall: number;
107
+ floor: number;
108
+ };
109
+ /** How an explicit box is positioned relative to the part's Z bounds. */
110
+ type StockPosition = 'model_centered' | 'offset_from_top' | 'offset_from_bottom';
111
+ /**
112
+ * Bounds for an explicit fixed box. X/Y are centered on the part's bounding
113
+ * box; Z is centered, offset from the top, or offset from the bottom. `offset`
114
+ * then translates the complete box in part coordinates.
115
+ */
116
+ declare function fixedBoxStockBounds(geometry: BufferGeometry, dimensions: Vec3, position?: StockPosition, positionOffset?: number, offset?: Vec3): Box3;
117
+ /** Per-side allowance and centre offset in millimetres, in the part's coordinates. */
118
+ declare function boxStockBounds(geometry: BufferGeometry, allowance?: StockAllowance, offset?: Vec3): Box3;
119
+
120
+ interface StockProps {
121
+ /** Caller-owned stock mesh in the same millimetre, Z-up coordinates as the part. */
122
+ geometry: BufferGeometry;
123
+ color?: number;
124
+ opacity?: number;
125
+ edgeColor?: number;
126
+ edgeOpacity?: number;
127
+ showEdges?: boolean;
128
+ }
129
+ /** Translucent stock, included in Fit but ignored by picking, sections and measurements. */
130
+ declare const Stock: ({ geometry, color, opacity, edgeColor, edgeOpacity, showEdges, }: StockProps) => react.JSX.Element;
131
+ interface BoxStockProps extends Omit<StockProps, 'geometry'> {
132
+ partGeometry: BufferGeometry;
133
+ /** Explicit X/Y/Z dimensions, in millimetres, for fixed-box stock. */
134
+ dimensions?: Vec3;
135
+ /** Position mode for explicit fixed-box stock. Defaults to model-centered. */
136
+ position?: StockPosition;
137
+ /** Distance from the selected top/bottom part bound, in millimetres. */
138
+ positionOffset?: number;
139
+ /**
140
+ * Stock left around the part, in millimetres. In the `{ wall, floor }` form,
141
+ * wall applies to X/Y and floor applies to Z. Number and `{ x, y, z }` forms
142
+ * are retained for compatibility. Defaults to zero.
143
+ */
144
+ allowance?: StockAllowance;
145
+ /** Translation from the part's bounding-box centre, in millimetres. */
146
+ offset?: Vec3;
147
+ }
148
+ /** An axis-aligned blank around the part. Use Stock for an arbitrary stock mesh. */
149
+ declare const BoxStock: ({ partGeometry, dimensions, position, positionOffset, allowance, offset, ...props }: BoxStockProps) => react.JSX.Element;
150
+
151
+ /** The six-inch (154 mm) reference model bundled with `@toolpath/viewer`. */
152
+ declare const BANANA_MODEL_URL: string;
153
+ interface BananaProps {
154
+ /** Bounds of the part and placed banana, for `ViewerHandle.frameBox`. */
155
+ onPlaced?: (bounds: Box3) => void;
156
+ }
157
+ /**
158
+ * A 154 mm banana beside the part, for immediate visual scale.
159
+ *
160
+ * It is excluded from normal part framing and overlay placement. Applications
161
+ * can use `onPlaced` to intentionally frame the comparison together. The model
162
+ * is fetched only when this component is mounted.
163
+ */
164
+ declare const Banana: ({ onPlaced }: BananaProps) => react.JSX.Element | null;
165
+
166
+ /**
167
+ * A stable direction wash, optionally scoped to one candidate direction.
168
+ * Shared faces take the most specific owner, then candidate order and tag.
169
+ * Unknown directions remain unpainted; no invented machining direction.
170
+ */
171
+ declare function directionHighlights(model: PartModel, activeDirection?: number | null): readonly RegionHighlight[];
172
+
16
173
  /**
17
174
  * The 26 standard views: the six faces of the cube, the twelve edges between
18
175
  * them, and its eight corners.
@@ -202,6 +359,8 @@ interface SectionViewProps {
202
359
  box: Box3;
203
360
  plane: Plane;
204
361
  theme: ViewerTheme;
362
+ /** An explicit `sectionHandle` override, if the caller supplied one. */
363
+ handleColor?: number;
205
364
  showHandle: boolean;
206
365
  onDrag?: (constant: number) => void;
207
366
  }
@@ -225,7 +384,7 @@ interface SectionViewProps {
225
384
  * no-op — the cut still happens and the part still looks hollow, which is a
226
385
  * confusing way to find out.
227
386
  */
228
- declare const SectionView: ({ geometry, box, plane, theme, showHandle, onDrag, }: SectionViewProps) => react.JSX.Element;
387
+ declare const SectionView: ({ geometry, box, plane, theme, handleColor, showHandle, onDrag, }: SectionViewProps) => react.JSX.Element;
229
388
 
230
389
  interface SectionToolProps {
231
390
  theme?: Partial<ViewerTheme>;
@@ -896,7 +1055,7 @@ declare function arrowPlacement(direction: Vec3, box: Box3): ArrowPlacement;
896
1055
  * viewer's opening frame waits. Measured once: an overlay that re-fitted itself
897
1056
  * while the part was being orbited would be a grid that breathes.
898
1057
  *
899
- * Scene furniture is excluded, so the grid and the axes do not size each other.
1058
+ * Scene furniture and stock are excluded, so tools stay sized to the finished part.
900
1059
  */
901
1060
  declare function useContentBox(): Box3;
902
1061
 
@@ -1038,6 +1197,13 @@ declare function gridSpec(box: Box3): GridSpec;
1038
1197
  */
1039
1198
  declare function gridGeometry(spec: GridSpec): BufferGeometry;
1040
1199
 
1200
+ /** The clearance between a part and the banana, as a fraction of part reach. */
1201
+ declare const BANANA_GAP = 0.1;
1202
+ /** Places a banana on the same ground plane, just to the right of a part. */
1203
+ declare function bananaPosition(part: Box3, banana: Box3): Vector3;
1204
+ /** The bounds a consumer should frame when showing a banana for scale. */
1205
+ declare function bananaFrameBounds(part: Box3, banana: Box3, position: Vector3): Box3;
1206
+
1041
1207
  /**
1042
1208
  * The lines between regions, and nothing else.
1043
1209
  *
@@ -1077,16 +1243,36 @@ type SurfaceOf = ReadonlyMap<number, number>;
1077
1243
  */
1078
1244
  declare function visualSurfaces(regions: readonly PartModelRegion[]): SurfaceOf;
1079
1245
 
1080
- /**
1081
- * Mouse and trackpad presets.
1082
- *
1083
- * - `toolpath` — left-drag orbits, right- and middle-drag pan. The product
1084
- * default.
1085
- * - `fusion` — middle-drag and two-finger scroll pan, shift makes them orbit,
1086
- * pinch zooms. Matches Fusion 360, which is what most of our users have open
1087
- * in the other window.
1088
- */
1089
- type ControlScheme = 'toolpath' | 'fusion';
1246
+ /** A named CAD navigation preset a consumer may pass to `<Viewer controls>`. */
1247
+ declare const CONTROL_SCHEME_OPTIONS: readonly [{
1248
+ readonly value: "toolpath";
1249
+ readonly label: "Toolpath";
1250
+ }, {
1251
+ readonly value: "fusion";
1252
+ readonly label: "Fusion";
1253
+ }, {
1254
+ readonly value: "alias";
1255
+ readonly label: "Alias";
1256
+ }, {
1257
+ readonly value: "inventor";
1258
+ readonly label: "Inventor";
1259
+ }, {
1260
+ readonly value: "solidworks";
1261
+ readonly label: "SolidWorks";
1262
+ }, {
1263
+ readonly value: "tinkercad";
1264
+ readonly label: "Tinkercad";
1265
+ }, {
1266
+ readonly value: "powermill";
1267
+ readonly label: "PowerMill";
1268
+ }, {
1269
+ readonly value: "onshape";
1270
+ readonly label: "Onshape";
1271
+ }];
1272
+ /** The public values accepted by `<Viewer controls>` and `CadCameraControls`. */
1273
+ type ControlScheme = (typeof CONTROL_SCHEME_OPTIONS)[number]['value'];
1274
+ type ControlSchemeOption = (typeof CONTROL_SCHEME_OPTIONS)[number];
1275
+
1090
1276
  type ExtendedCameraControlsOptions = {
1091
1277
  /**
1092
1278
  * Orbit past the poles instead of stopping there. When enabled the up vector
@@ -1095,8 +1281,8 @@ type ExtendedCameraControlsOptions = {
1095
1281
  readonly freeOrbit?: boolean | undefined;
1096
1282
  };
1097
1283
  /**
1098
- * `CameraControls` with free orbit, camera-relative up, and the Fusion wheel
1099
- * scheme.
1284
+ * `CameraControls` with free orbit, camera-relative up, and CAD navigation
1285
+ * schemes.
1100
1286
  *
1101
1287
  * Two departures from the legacy implementation, both deliberate:
1102
1288
  *
@@ -1592,4 +1778,4 @@ declare const ORBIT_TARGET_FADE_MS = 1000;
1592
1778
  */
1593
1779
  declare function orbitTargetOpacity(sinceHold: number, fade?: number): number;
1594
1780
 
1595
- export { ANGLE_ARC_FRACTION, ANGLE_ARC_SEGMENTS, AXIS_COLORS, type AngleMeasurement, type ArrowPlacement, Axes, type AxesProps, type Axis, type AxisLock, CAD_CAMERA_UP, CHAMFER, CadCameraControls, type CadCameraControlsProps, type CameraLimits, type CapMaterial, type CapUniforms, type ControlScheme, type CubeZone, DEFAULT_FIT_MARGIN, DELTA_DASH_PIXELS, DOUBLE_TAP_MS, type DeltaLeg, DirectionArrows, type DirectionArrowsProps, type DirectionGroup, type DistanceMeasurement, type DoubleTapPoint, type DoubleTapTracker, EXCLUDE_FROM_FRAME, ExtendedCameraControls, type ExtendedCameraControlsOptions, FEATURE_TYPE_RANKS, FeatureTag, FeatureType, Grid, type GridProps, type GridSpec, MAX_FRAME_RATIO, MEASURE_LABEL_CLASS, MEASURE_LINE_PIXELS, MEASURE_MARKER_PIXELS, MEASURE_RENDER_ORDER, MIN_FRAME_RATIO, type MeasureLabelKind, type MeasureMode, MeasureTool, type MeasureToolProps, type Measurement, type NamedDirection, ORBIT_TARGET_COLOR, ORBIT_TARGET_FADE_MS, ORBIT_TARGET_FLASH_MS, ORBIT_TARGET_PIXELS, ORBIT_TARGET_RING_COLOR, ORBIT_TARGET_RING_OPACITY, ORBIT_TARGET_RING_PIXELS, ORBIT_TARGET_RING_WIDTH, PERSPECTIVE_FOV, POINTS_PER_MEASUREMENT, PartModel, PartModelFeature, PartModelRegion, PartReportFormatError, type Projection, type RankingContext, RegionIndex, type Retarget, type RetargetPose, SNAP_MARKER_PIXELS, SNAP_PIXELS, type SceneBounds, SectionOptions, type SectionSample, SectionState, type SectionStore, SectionTool, type SectionToolProps, SectionView, type Snap, type SnapEdges, type SnapHit, type SnapKind, type SurfaceOf, TAP_SLOP, type TapPoint, type TapTracker, TriangleRange, UnsupportedKernelVersionError, VIEW_NAMES, VIEW_SIGNS, Vec3, ViewCube, type ViewCubeProps, type ViewKind, type ViewName, Viewer, type ViewerCamera, type ViewerControls, type ViewerHandle, type ViewerProps, ViewerTheme, type ViewerView, type ViewportSize, adaptedUp, angleArc, angleArcRadius, angleAt, applyCapTheme, applyProjection, arrowPlacement, aspectRatio, bestOwner, boundsFromBox, buildRegionIndex, cadViewDirections, cameraLimits, capHit, clipSegments, contentBounds, createCapMaterial, createMaskMaterial, createMaskTarget, createSectionStore, createStencilMaterials, cubeOutlineGeometry, cubeZones, currentViewDirection, cycleOwner, defaultBounds, deltaBetween, deltaLegs, directionIndexOf, directionLabel, distanceBetween, excludedFromFrame, featureTypeRank, fitDistance, formatDegrees, formatMillimetres, gridGeometry, gridSpec, groupByDirection, labelGeometry, labelTexture, lockToAxis, measurementFromPoints, measurementLabel, measurementLabelAnchor, midpoint, movedFar, nextMeasurementId, orbitTargetOpacity, orthographicHalfHeight, panelGeometry, perspectiveFitDistance, pointInContour, rankOwners, regionAdjacency, regionEdgesGeometry, regionNormals, resolveSectionPlane, retargetPose, sameDirection, sampleSection, screenLength, screenPoint, sectionContour, snapAt, squaredUp, startPosition, targetBoundary, trackDoubleTaps, trackTaps, useContentBox, useRetarget, useSectionStore, useTapGuard, useViewerControls, viewKind, viewUp, viewVector, visualSurfaces };
1781
+ export { ANGLE_ARC_FRACTION, ANGLE_ARC_SEGMENTS, AXIS_COLORS, type AngleMeasurement, type ArrowPlacement, Axes, type AxesProps, type Axis, type AxisLock, BANANA_GAP, BANANA_MODEL_URL, Banana, type BananaProps, BoxStock, type BoxStockProps, CAD_CAMERA_UP, CHAMFER, CONTROL_SCHEME_OPTIONS, CadCameraControls, type CadCameraControlsProps, type CameraLimits, type CapMaterial, type CapUniforms, type ControlScheme, type ControlSchemeOption, type CubeZone, DEFAULT_FIT_MARGIN, DELTA_DASH_PIXELS, DOUBLE_TAP_MS, type DeltaLeg, DirectionArrows, type DirectionArrowsProps, type DirectionGroup, type DistanceMeasurement, type DoubleTapPoint, type DoubleTapTracker, EXCLUDE_FROM_FRAME, ExtendedCameraControls, type ExtendedCameraControlsOptions, FEATURE_TYPE_RANKS, FeatureTag, FeatureType, Grid, type GridProps, type GridSpec, HoverCard, type HoverCardProps, MAX_FRAME_RATIO, MEASURE_LABEL_CLASS, MEASURE_LINE_PIXELS, MEASURE_MARKER_PIXELS, MEASURE_RENDER_ORDER, MIN_FRAME_RATIO, type MeasureLabelKind, type MeasureMode, MeasureTool, type MeasureToolProps, type Measurement, type NamedDirection, ORBIT_TARGET_COLOR, ORBIT_TARGET_FADE_MS, ORBIT_TARGET_FLASH_MS, ORBIT_TARGET_PIXELS, ORBIT_TARGET_RING_COLOR, ORBIT_TARGET_RING_OPACITY, ORBIT_TARGET_RING_PIXELS, ORBIT_TARGET_RING_WIDTH, PERSPECTIVE_FOV, POINTS_PER_MEASUREMENT, PartModel, PartModelFeature, PartModelRegion, PartPick, PartReportFormatError, type Projection, type RankingContext, RegionHighlight, RegionIndex, type Retarget, type RetargetPose, SNAP_MARKER_PIXELS, SNAP_PIXELS, type SceneBounds, SectionOptions, type SectionSample, SectionState, type SectionStore, SectionTool, type SectionToolProps, SectionView, type Snap, type SnapEdges, type SnapHit, type SnapKind, Stock, type StockAllowance, type StockPosition, type StockProps, type SurfaceOf, TAP_SLOP, type TapPoint, type TapTracker, TriangleRange, UnsupportedKernelVersionError, VIEW_NAMES, VIEW_SIGNS, Vec3, ViewCube, type ViewCubeProps, type ViewKind, type ViewName, Viewer, type ViewerCamera, type ViewerControls, type ViewerHandle, type ViewerProps, ViewerTheme, ViewerToolbar, type ViewerToolbarControl, type ViewerToolbarControls, type ViewerToolbarControlsProps, type ViewerToolbarProps, ViewerToolbarProvider, type ViewerView, type ViewportSize, adaptedUp, angleArc, angleArcRadius, angleAt, applyCapTheme, applyProjection, arrowPlacement, aspectRatio, bananaFrameBounds, bananaPosition, bestOwner, boundsFromBox, boxStockBounds, buildRegionIndex, cadViewDirections, cameraLimits, capHit, clipSegments, contentBounds, createCapMaterial, createMaskMaterial, createMaskTarget, createSectionStore, createStencilMaterials, cubeOutlineGeometry, cubeZones, currentViewDirection, cycleOwner, defaultBounds, deltaBetween, deltaLegs, directionHighlights, directionIndexOf, directionLabel, distanceBetween, excludedFromFrame, featureTypeRank, fitDistance, fixedBoxStockBounds, formatDegrees, formatMillimetres, gridGeometry, gridSpec, groupByDirection, labelGeometry, labelTexture, lockToAxis, measurementFromPoints, measurementLabel, measurementLabelAnchor, midpoint, movedFar, nextMeasurementId, orbitTargetOpacity, orthographicHalfHeight, panelGeometry, perspectiveFitDistance, pointInContour, rankOwners, regionAdjacency, regionEdgesGeometry, regionNormals, resolveSectionPlane, retargetPose, sameDirection, sampleSection, screenLength, screenPoint, sectionContour, snapAt, squaredUp, startPosition, targetBoundary, trackDoubleTaps, trackTaps, useContentBox, useRetarget, useSectionStore, useTapGuard, useViewerControls, useViewerToolbar, viewKind, viewUp, viewVector, visualSurfaces };