@toolpath/viewer 1.4.0 → 2.0.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,239 @@ 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 explicit fixed stock is positioned relative to the part's Z bounds. */
110
+ type StockPosition = 'model_centered' | 'offset_from_top' | 'offset_from_bottom';
111
+ /**
112
+ * Round stock in part coordinates, in millimetres: the centre of its base, the
113
+ * direction from the base toward its far end, and its size. The Engine's
114
+ * resolved `StockCylinder` carries the same four figures.
115
+ */
116
+ interface CylinderStockFigure {
117
+ origin: Vec3;
118
+ axis: Vec3;
119
+ diameter: number;
120
+ length: number;
121
+ }
122
+ /**
123
+ * A block squared to a frame of its own rather than to the part, in
124
+ * millimetres. `lower` and `upper` are corners in `frame`, whose point
125
+ * `(x, y, z)` sits at `location + x·refDirection + y·(axis × refDirection) + z·axis`
126
+ * in part coordinates, with `axis` normalised and `refDirection` projected
127
+ * square to it and normalised. This is the shape of the Engine's plan
128
+ * `StockBox`, which is squared to the setup.
129
+ */
130
+ interface BoxStockFigure {
131
+ /** Omit for a box whose corners are already in part coordinates. */
132
+ frame?: {
133
+ location: Vec3;
134
+ axis: Vec3;
135
+ refDirection: Vec3;
136
+ };
137
+ lower: Vec3;
138
+ upper: Vec3;
139
+ }
140
+ /** Box preview around the part: explicit dimensions or per-side allowance. */
141
+ type BoxStockPreview = {
142
+ partGeometry: BufferGeometry;
143
+ offset?: Vec3;
144
+ } & ({
145
+ dimensions: Vec3;
146
+ position?: StockPosition;
147
+ positionOffset?: number;
148
+ allowance?: never;
149
+ } | {
150
+ allowance?: StockAllowance;
151
+ dimensions?: never;
152
+ position?: never;
153
+ positionOffset?: never;
154
+ });
155
+ /** Resolved corners or part-relative preview options, never both. */
156
+ type BoxStockInput = (BoxStockFigure & {
157
+ partGeometry?: never;
158
+ offset?: never;
159
+ allowance?: never;
160
+ dimensions?: never;
161
+ position?: never;
162
+ positionOffset?: never;
163
+ }) | (BoxStockPreview & {
164
+ lower?: never;
165
+ upper?: never;
166
+ frame?: never;
167
+ });
168
+ /** Upright cylinder preview centered on the part's bounding box. */
169
+ interface CylinderStockPreview {
170
+ partGeometry: BufferGeometry;
171
+ diameter: number;
172
+ length: number;
173
+ position?: StockPosition;
174
+ positionOffset?: number;
175
+ }
176
+ /** Resolved cylinder placement or part-relative preview options, never both. */
177
+ type CylinderStockInput = (CylinderStockFigure & {
178
+ partGeometry?: never;
179
+ position?: never;
180
+ positionOffset?: never;
181
+ }) | (CylinderStockPreview & {
182
+ origin?: never;
183
+ axis?: never;
184
+ });
185
+ /**
186
+ * Bounds for an explicit fixed box. X/Y are centered on the part's bounding
187
+ * box; Z is centered, offset from the top, or offset from the bottom. `offset`
188
+ * then translates the complete box in part coordinates.
189
+ */
190
+ declare function fixedBoxStockBounds(geometry: BufferGeometry, dimensions: Vec3, position?: StockPosition, positionOffset?: number, offset?: Vec3): Box3;
191
+ /** Per-side allowance and centre offset in millimetres, in the part's coordinates. */
192
+ declare function boxStockBounds(geometry: BufferGeometry, allowance?: StockAllowance, offset?: Vec3): Box3;
193
+
194
+ interface StockAppearanceProps {
195
+ /** Keep the preceding decoded GLB visible until its replacement is ready. Key by part/run to reset. */
196
+ retainPrevious?: boolean;
197
+ /** Reproduce the legacy Workpiece's materials, duplicate surface pass and edge ordering. */
198
+ renderStyle?: 'overlay' | 'legacy-workpiece';
199
+ color?: number;
200
+ /** Unlit surface contribution, useful for readable workpiece shading beside the CAD model. */
201
+ emissive?: number;
202
+ /** Shade each triangle independently without changing the source's vertices or normals. */
203
+ flatShading?: boolean;
204
+ opacity?: number;
205
+ edgeColor?: number;
206
+ edgeOpacity?: number;
207
+ showEdges?: boolean;
208
+ }
209
+ interface StockSources {
210
+ /** Caller-owned geometry; Stock never disposes it. */
211
+ geometry: BufferGeometry;
212
+ /** Caller-provided GLB bytes; Stock owns and cleans up the decoded geometry. */
213
+ glb: ArrayBuffer;
214
+ /** Resolved box corners/frame, or part-relative box preview options. */
215
+ box: BoxStockInput;
216
+ /** Resolved cylinder placement, or part-relative cylinder preview options. */
217
+ cylinder: CylinderStockInput;
218
+ }
219
+ /** Exactly one source, in the same millimetre, Z-up coordinates as the part. */
220
+ type StockSource = {
221
+ [K in keyof StockSources]: Pick<StockSources, K> & Partial<Record<Exclude<keyof StockSources, K>, never>>;
222
+ }[keyof StockSources];
223
+ type StockProps = StockAppearanceProps & StockSource;
224
+ /** Translucent stock, included in Fit but ignored by picking, sections and measurements. */
225
+ declare const Stock: ({ geometry, glb, box, cylinder, ...appearance }: StockProps) => react.JSX.Element;
226
+
227
+ /** The six-inch (154 mm) reference model bundled with `@toolpath/viewer`. */
228
+ declare const BANANA_MODEL_URL: string;
229
+ interface BananaProps {
230
+ /** Bounds of the part and placed banana, for `ViewerHandle.frameBox`. */
231
+ onPlaced?: (bounds: Box3) => void;
232
+ }
233
+ /**
234
+ * A 154 mm banana beside the part, for immediate visual scale.
235
+ *
236
+ * It is excluded from normal part framing and overlay placement. Applications
237
+ * can use `onPlaced` to intentionally frame the comparison together. The model
238
+ * is fetched only when this component is mounted.
239
+ */
240
+ declare const Banana: ({ onPlaced }: BananaProps) => react.JSX.Element | null;
241
+
242
+ /**
243
+ * A stable direction wash, optionally scoped to one candidate direction.
244
+ * Shared faces take the most specific owner, then candidate order and tag.
245
+ * Unknown directions remain unpainted; no invented machining direction.
246
+ */
247
+ declare function directionHighlights(model: PartModel, activeDirection?: number | null): readonly RegionHighlight[];
248
+
16
249
  /**
17
250
  * The 26 standard views: the six faces of the cube, the twelve edges between
18
251
  * them, and its eight corners.
@@ -202,6 +435,8 @@ interface SectionViewProps {
202
435
  box: Box3;
203
436
  plane: Plane;
204
437
  theme: ViewerTheme;
438
+ /** An explicit `sectionHandle` override, if the caller supplied one. */
439
+ handleColor?: number;
205
440
  showHandle: boolean;
206
441
  onDrag?: (constant: number) => void;
207
442
  }
@@ -225,7 +460,7 @@ interface SectionViewProps {
225
460
  * no-op — the cut still happens and the part still looks hollow, which is a
226
461
  * confusing way to find out.
227
462
  */
228
- declare const SectionView: ({ geometry, box, plane, theme, showHandle, onDrag, }: SectionViewProps) => react.JSX.Element;
463
+ declare const SectionView: ({ geometry, box, plane, theme, handleColor, showHandle, onDrag, }: SectionViewProps) => react.JSX.Element;
229
464
 
230
465
  interface SectionToolProps {
231
466
  theme?: Partial<ViewerTheme>;
@@ -896,7 +1131,7 @@ declare function arrowPlacement(direction: Vec3, box: Box3): ArrowPlacement;
896
1131
  * viewer's opening frame waits. Measured once: an overlay that re-fitted itself
897
1132
  * while the part was being orbited would be a grid that breathes.
898
1133
  *
899
- * Scene furniture is excluded, so the grid and the axes do not size each other.
1134
+ * Scene furniture and stock are excluded, so tools stay sized to the finished part.
900
1135
  */
901
1136
  declare function useContentBox(): Box3;
902
1137
 
@@ -1038,6 +1273,13 @@ declare function gridSpec(box: Box3): GridSpec;
1038
1273
  */
1039
1274
  declare function gridGeometry(spec: GridSpec): BufferGeometry;
1040
1275
 
1276
+ /** The clearance between a part and the banana, as a fraction of part reach. */
1277
+ declare const BANANA_GAP = 0.1;
1278
+ /** Places a banana on the same ground plane, just to the right of a part. */
1279
+ declare function bananaPosition(part: Box3, banana: Box3): Vector3;
1280
+ /** The bounds a consumer should frame when showing a banana for scale. */
1281
+ declare function bananaFrameBounds(part: Box3, banana: Box3, position: Vector3): Box3;
1282
+
1041
1283
  /**
1042
1284
  * The lines between regions, and nothing else.
1043
1285
  *
@@ -1077,16 +1319,36 @@ type SurfaceOf = ReadonlyMap<number, number>;
1077
1319
  */
1078
1320
  declare function visualSurfaces(regions: readonly PartModelRegion[]): SurfaceOf;
1079
1321
 
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';
1322
+ /** A named CAD navigation preset a consumer may pass to `<Viewer controls>`. */
1323
+ declare const CONTROL_SCHEME_OPTIONS: readonly [{
1324
+ readonly value: "toolpath";
1325
+ readonly label: "Toolpath";
1326
+ }, {
1327
+ readonly value: "fusion";
1328
+ readonly label: "Fusion";
1329
+ }, {
1330
+ readonly value: "alias";
1331
+ readonly label: "Alias";
1332
+ }, {
1333
+ readonly value: "inventor";
1334
+ readonly label: "Inventor";
1335
+ }, {
1336
+ readonly value: "solidworks";
1337
+ readonly label: "SolidWorks";
1338
+ }, {
1339
+ readonly value: "tinkercad";
1340
+ readonly label: "Tinkercad";
1341
+ }, {
1342
+ readonly value: "powermill";
1343
+ readonly label: "PowerMill";
1344
+ }, {
1345
+ readonly value: "onshape";
1346
+ readonly label: "Onshape";
1347
+ }];
1348
+ /** The public values accepted by `<Viewer controls>` and `CadCameraControls`. */
1349
+ type ControlScheme = (typeof CONTROL_SCHEME_OPTIONS)[number]['value'];
1350
+ type ControlSchemeOption = (typeof CONTROL_SCHEME_OPTIONS)[number];
1351
+
1090
1352
  type ExtendedCameraControlsOptions = {
1091
1353
  /**
1092
1354
  * Orbit past the poles instead of stopping there. When enabled the up vector
@@ -1095,8 +1357,8 @@ type ExtendedCameraControlsOptions = {
1095
1357
  readonly freeOrbit?: boolean | undefined;
1096
1358
  };
1097
1359
  /**
1098
- * `CameraControls` with free orbit, camera-relative up, and the Fusion wheel
1099
- * scheme.
1360
+ * `CameraControls` with free orbit, camera-relative up, and CAD navigation
1361
+ * schemes.
1100
1362
  *
1101
1363
  * Two departures from the legacy implementation, both deliberate:
1102
1364
  *
@@ -1592,4 +1854,4 @@ declare const ORBIT_TARGET_FADE_MS = 1000;
1592
1854
  */
1593
1855
  declare function orbitTargetOpacity(sinceHold: number, fade?: number): number;
1594
1856
 
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 };
1857
+ 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, type BoxStockFigure, type BoxStockInput, type BoxStockPreview, CAD_CAMERA_UP, CHAMFER, CONTROL_SCHEME_OPTIONS, CadCameraControls, type CadCameraControlsProps, type CameraLimits, type CapMaterial, type CapUniforms, type ControlScheme, type ControlSchemeOption, type CubeZone, type CylinderStockFigure, type CylinderStockInput, type CylinderStockPreview, 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 StockAppearanceProps, type StockPosition, type StockProps, type StockSource, 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 };