@chestnutlabs/gcode-preview-core 0.17.0 → 0.19.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.
- package/dist/controller.d.ts +14 -2
- package/dist/controller.d.ts.map +1 -1
- package/dist/controller.js +5 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/renderer-interface.d.ts +14 -3
- package/dist/renderer-interface.d.ts.map +1 -1
- package/package.json +5 -5
package/dist/controller.d.ts
CHANGED
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
* only (numbers/strings): IR/typed arrays NEVER enter the state model.
|
|
11
11
|
*/
|
|
12
12
|
import { GcodeParseSession, type ParseProgress, type ParseResult, type SessionOptions, type WireParseOptions } from '@chestnutlabs/gcode-parser';
|
|
13
|
-
import type { BuildVolumeDef, CameraMode, CameraState, CameraView, ColorMode, GLRendererLike, ProgressPresentationMode, ProgressivePreview, QualityMode, QualityPolicy, RenderTargetCanvas, Theme, TubeOptions } from '@chestnutlabs/gcode-renderer-three';
|
|
13
|
+
import type { BuildVolumeDef, CameraMode, CameraState, CameraView, CaptureOptions, ColorMode, GLRendererLike, ProgressPresentationMode, ProgressivePreview, QualityMode, QualityPolicy, RenderTargetCanvas, Theme, TubeOptions } from '@chestnutlabs/gcode-renderer-three';
|
|
14
14
|
import type { MoveKindToggle, PreviewRenderer, PreviewRendererEvent, RendererMode } from './renderer-interface.js';
|
|
15
|
-
import { type Confidence, type DialectMetadata, type MachineGeometry, type MappedProgress, type ProgressObservation, type Warning } from '@chestnutlabs/toolpath-core';
|
|
15
|
+
import { type Confidence, type DialectMetadata, type FeatureRoleValue, type MachineGeometry, type MappedProgress, type ProgressObservation, type Warning } from '@chestnutlabs/toolpath-core';
|
|
16
16
|
/** Session/renderer events, re-emitted, plus the controller's own lifecycle events. */
|
|
17
17
|
export type PreviewEvent = PreviewRendererEvent | {
|
|
18
18
|
type: 'parse-started';
|
|
@@ -155,6 +155,12 @@ export interface GcodePreviewControls {
|
|
|
155
155
|
*/
|
|
156
156
|
setScrubTime(ms: number | null): void;
|
|
157
157
|
setKindVisible(kind: MoveKindToggle, visible: boolean): void;
|
|
158
|
+
/**
|
|
159
|
+
* Show/hide a single feature role — e.g. hide `Skirt`/`Brim` to declutter a part preview. Gate the
|
|
160
|
+
* UI on `capabilities.featureRoles === 'known'` (like the feature color mode); a no-op on the 2D
|
|
161
|
+
* renderer and on files without feature annotations. Import `FeatureRole` from `@chestnutlabs/toolpath-core`.
|
|
162
|
+
*/
|
|
163
|
+
setFeatureRoleVisible(role: FeatureRoleValue, visible: boolean): void;
|
|
158
164
|
/** Opt-in retraction/deretraction markers (DD-009 D1, #148). Off by default. */
|
|
159
165
|
setShowRetractions(visible: boolean): void;
|
|
160
166
|
setColorMode(mode: ColorMode): boolean;
|
|
@@ -184,6 +190,12 @@ export interface GcodePreviewControls {
|
|
|
184
190
|
/** Interaction-aware quality: 'auto' reduces detail while the camera moves (#306/2, DD-020). */
|
|
185
191
|
setInteractionQuality(mode: 'off' | 'auto'): void;
|
|
186
192
|
frame(): void;
|
|
193
|
+
/**
|
|
194
|
+
* Capture the currently displayed view as an image `Blob` (DD-030 D1) — for a user-selected thumbnail,
|
|
195
|
+
* a large-file fallback, or a screenshot. Rejects with `E_CAPTURE_UNSUPPORTED` before the 3D renderer
|
|
196
|
+
* is ready or on the 2D renderer (which cannot render-to-target). The caller owns the `Blob`.
|
|
197
|
+
*/
|
|
198
|
+
capture(opts?: CaptureOptions): Promise<Blob>;
|
|
187
199
|
}
|
|
188
200
|
export interface PreviewController {
|
|
189
201
|
/** Bind/rebind the renderer to a canvas (null unbinds). Rebinding disposes safely. */
|
package/dist/controller.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EACL,iBAAiB,EAGjB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,KAAK,EACL,WAAW,EACZ,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EACL,iBAAiB,EAGjB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,SAAS,EACT,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,KAAK,EACL,WAAW,EACZ,MAAM,oCAAoC,CAAC;AAG5C,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACnH,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EAEnB,KAAK,mBAAmB,EAGxB,KAAK,OAAO,EACb,MAAM,6BAA6B,CAAC;AAGrC,uFAAuF;AACvF,MAAM,MAAM,YAAY,GACpB,oBAAoB,GACpB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAA;CAAE,GACnD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,sGAAsG;IACtG,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACzC,oGAAoG;IACpG,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,EAAE,eAAe,GAAG,SAAS,CAAC;CACvC,GACD;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtD;IACE;uEACmE;IACnE,IAAI,EAAE,6BAA6B,CAAC;IACpC,OAAO,EAAE,eAAe,CAAC;CAC1B,CAAC;AAEN,MAAM,WAAW,wBAAwB;IACvC,yFAAyF;IACzF,YAAY,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE;QACT;;;;WAIG;QACH,IAAI,CAAC,EAAE,YAAY,CAAC;QACpB,WAAW,CAAC,EAAE,cAAc,CAAC;QAC7B,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;QAC/B;;;;WAIG;QACH,WAAW,CAAC,EAAE,aAAa,CAAC;QAC5B;;;;;WAKG;QACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;QACxC,2EAA2E;QAC3E,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,4FAA4F;QAC5F,YAAY,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;QAChC,+FAA+F;QAC/F,kBAAkB,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;QACpC,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,IAAI,CAAC,EAAE,WAAW,CAAC;QACnB,4DAA4D;QAC5D,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,2FAA2F;QAC3F,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,mDAAmD;QACnD,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB;iGACyF;QACzF,mBAAmB,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;QAC9C,sGAAsG;QACtG,yBAAyB,CAAC,EAAE,MAAM,CAAC;QACnC,0FAA0F;QAC1F,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,cAAc,CAAC;QAChE,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;QACzC,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,yDAAyD;IACzD,aAAa,CAAC,EAAE,gBAAgB,CAAC;CAClC;AAED,6FAA6F;AAC7F,MAAM,MAAM,YAAY,GACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GACjC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAE,GAC9B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAE/E,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,wFAAwF;IACxF,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QAC/B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACzC,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI,CAAC;IACT,QAAQ,EAAE,eAAe,GAAG,SAAS,CAAC;IACtC,aAAa,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,YAAY,EAAE,wBAAwB,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,uFAAuF;IACvF,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,kBAAkB,EAAE,QAAQ,GAAG,WAAW,GAAG,IAAI,CAAC;IAClD,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1D,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAChD;;;OAGG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACtC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7D;;;;OAIG;IACH,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACtE,gFAAgF;IAChF,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3C,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IACvC,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC;IAChD,qFAAqF;IACrF,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAC1C,gHAAgH;IAChH,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACtD,kDAAkD;IAClD,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACtC;wFACoF;IACpF,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC;uDACmD;IACnD,cAAc,IAAI,WAAW,GAAG,IAAI,CAAC;IACrC,gGAAgG;IAChG,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IACzC,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,0FAA0F;IAC1F,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,eAAe,GAAG,IAAI,CAAC;IAC5D,0FAA0F;IAC1F,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3C,iGAAiG;IACjG,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC;IAC9C,gGAAgG;IAChG,qBAAqB,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;IAClD,KAAK,IAAI,IAAI,CAAC;IACd;;;;OAIG;IACH,OAAO,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,iBAAiB;IAChC,sFAAsF;IACtF,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC;IACnD,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9F,MAAM,IAAI,IAAI,CAAC;IACf,yFAAyF;IACzF,eAAe,CAAC,GAAG,EAAE,mBAAmB,GAAG,cAAc,GAAG,IAAI,CAAC;IACjE,wFAAwF;IACxF,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAAC;IACnD,aAAa,IAAI,IAAI,CAAC;IACtB,iFAAiF;IACjF,QAAQ,IAAI,iBAAiB,CAAC;IAC9B,oEAAoE;IACpE,aAAa,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAClE,QAAQ,EAAE,oBAAoB,CAAC;IAC/B;;;;OAIG;IACH,GAAG,EAAE;QAAE,OAAO,EAAE,iBAAiB,CAAC;QAAC,QAAQ,EAAE,MAAM,eAAe,GAAG,IAAI,CAAA;KAAE,CAAC;IAC5E,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACnD,OAAO,IAAI,IAAI,CAAC;CACjB;AA8BD,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,wBAA6B,GAAG,iBAAiB,CAwWjG"}
|
package/dist/controller.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* only (numbers/strings): IR/typed arrays NEVER enter the state model.
|
|
11
11
|
*/
|
|
12
12
|
import { GcodeParseSession, CancelledError, ParseSessionError } from '@chestnutlabs/gcode-parser';
|
|
13
|
+
import { CaptureUnsupportedError } from '@chestnutlabs/gcode-renderer-three';
|
|
13
14
|
import { LayerView2DRenderer } from './renderer-2d-adapter.js';
|
|
14
15
|
import { createProgressMapper, computeToolpathTime, segmentsCompletedAtTime } from '@chestnutlabs/toolpath-core';
|
|
15
16
|
import { resolveColorMode } from './color-resolve.js';
|
|
@@ -315,6 +316,7 @@ export function createPreviewController(options = {}) {
|
|
|
315
316
|
withRenderer((r) => r.setScrubPosition(seg));
|
|
316
317
|
},
|
|
317
318
|
setKindVisible: (k, v) => withRenderer((r) => r.setKindVisible(k, v)),
|
|
319
|
+
setFeatureRoleVisible: (role, v) => withRenderer((r) => r.setFeatureRoleVisible?.(role, v)),
|
|
318
320
|
setShowRetractions: (v) => withRenderer((r) => r.setShowRetractions(v)),
|
|
319
321
|
// Availability is IR/renderer-dependent; before the renderer is ready we optimistically queue
|
|
320
322
|
// and report true (the mode applies once bound). Callers can re-check after `parse-complete`.
|
|
@@ -335,6 +337,9 @@ export function createPreviewController(options = {}) {
|
|
|
335
337
|
setView: (v) => withRenderer((r) => r.setView(v)),
|
|
336
338
|
// Returns a value, so it can't queue: before the renderer is ready (or on 2D) there is no pose → null.
|
|
337
339
|
getCameraState: () => (renderer !== null ? renderer.getCameraState() : null),
|
|
340
|
+
capture: (opts) => renderer !== null && typeof renderer.capture === 'function'
|
|
341
|
+
? renderer.capture(opts)
|
|
342
|
+
: Promise.reject(new CaptureUnsupportedError('capture unavailable: renderer not ready or unsupported')),
|
|
338
343
|
setCameraState: (s) => withRenderer((r) => r.setCameraState(s)),
|
|
339
344
|
setTheme: (t) => withRenderer((r) => r.setTheme(t)),
|
|
340
345
|
setBuildVolume: (def) => {
|
package/dist/index.d.ts
CHANGED
|
@@ -10,4 +10,6 @@ export { LayerView2DRenderer, type LayerView2DRendererOptions } from './renderer
|
|
|
10
10
|
export { renderStill, type RenderStillOptions, type RenderStillResult, type StillCameraPose } from './render-still.js';
|
|
11
11
|
export type { Theme, MaterialPreset, ThemeColor } from '@chestnutlabs/gcode-renderer-three';
|
|
12
12
|
export type { CameraMode, CameraView, CameraState } from '@chestnutlabs/gcode-renderer-three';
|
|
13
|
+
export type { CaptureOptions } from '@chestnutlabs/gcode-renderer-three';
|
|
14
|
+
export { CaptureUnsupportedError } from '@chestnutlabs/gcode-renderer-three';
|
|
13
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,iBAAiB,CAAC;AAEhC,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,KAAK,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEvH,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAE5F,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,iBAAiB,CAAC;AAEhC,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,KAAK,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEvH,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAE5F,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAE9F,YAAY,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
* pull Three.js into a 2D-only bundle. The 3D renderer's *values* are reached only through a
|
|
9
9
|
* dynamic `import()` in the controller, so a bundler drops Three.js when `mode` is `'2d'`.
|
|
10
10
|
*/
|
|
11
|
-
import type { BuildVolumeDef, CameraMode, CameraState, CameraView, ColorMode, ProgressivePreview, QualityMode, QualityPolicy, RendererEvent, Theme } from '@chestnutlabs/gcode-renderer-three';
|
|
12
|
-
export type { CameraState, CameraView } from '@chestnutlabs/gcode-renderer-three';
|
|
13
|
-
import type { MachineGeometry, MappedProgress, ToolpathIR } from '@chestnutlabs/toolpath-core';
|
|
11
|
+
import type { BuildVolumeDef, CameraMode, CameraState, CameraView, CaptureOptions, ColorMode, ProgressivePreview, QualityMode, QualityPolicy, RendererEvent, Theme } from '@chestnutlabs/gcode-renderer-three';
|
|
12
|
+
export type { CameraState, CameraView, CaptureOptions } from '@chestnutlabs/gcode-renderer-three';
|
|
13
|
+
import type { FeatureRoleValue, MachineGeometry, MappedProgress, ToolpathIR } from '@chestnutlabs/toolpath-core';
|
|
14
14
|
/** Which renderer implementation backs the preview. `'3d'` is the default (Three.js). */
|
|
15
15
|
export type RendererMode = '2d' | '3d';
|
|
16
16
|
/**
|
|
@@ -50,6 +50,11 @@ export interface PreviewRenderer {
|
|
|
50
50
|
setLayerRange(startLayer: number, endLayer: number): void;
|
|
51
51
|
setScrubPosition(segIndex: number | null): void;
|
|
52
52
|
setKindVisible(kind: MoveKindToggle, visible: boolean): void;
|
|
53
|
+
/**
|
|
54
|
+
* Show/hide a single feature role (e.g. hide `Skirt`/`Brim`). 3D only — the flat 2D view treats it
|
|
55
|
+
* as a no-op. Optional so a renderer need not implement it; gate the UI on `featureRoles: 'known'`.
|
|
56
|
+
*/
|
|
57
|
+
setFeatureRoleVisible?(role: FeatureRoleValue, visible: boolean): void;
|
|
53
58
|
setShowRetractions(visible: boolean): void;
|
|
54
59
|
setColorMode(mode: ColorMode): boolean;
|
|
55
60
|
setQuality(quality: QualityMode | 'auto'): void;
|
|
@@ -75,6 +80,12 @@ export interface PreviewRenderer {
|
|
|
75
80
|
*/
|
|
76
81
|
pickSegment(ndcX: number, ndcY: number, threshold?: number): number | null;
|
|
77
82
|
frame(): void;
|
|
83
|
+
/**
|
|
84
|
+
* Capture the current view as an image `Blob` (DD-030 D1). Optional: the 3D renderer implements it via
|
|
85
|
+
* render-to-target; a renderer that cannot (the 2D renderer) omits it, and the controller reports
|
|
86
|
+
* `renderer-unsupported` / rejects. Never fabricated output.
|
|
87
|
+
*/
|
|
88
|
+
capture?(opts?: CaptureOptions): Promise<Blob>;
|
|
78
89
|
dispose(): void;
|
|
79
90
|
}
|
|
80
91
|
//# sourceMappingURL=renderer-interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-interface.d.ts","sourceRoot":"","sources":["../src/renderer-interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,aAAa,EACb,KAAK,EACN,MAAM,oCAAoC,CAAC;AAE5C,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"renderer-interface.d.ts","sourceRoot":"","sources":["../src/renderer-interface.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chestnutlabs/gcode-preview-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"description": "Framework-neutral preview controller for the Chestnut Labs G-code viewer (DD-007 §4.6): the shared engine glue, state model, and TypeScript contracts beneath the Vue/React/Svelte adapters.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"gcode",
|
|
@@ -52,9 +52,9 @@
|
|
|
52
52
|
"test": "vitest run"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@chestnutlabs/gcode-parser": "0.
|
|
56
|
-
"@chestnutlabs/gcode-renderer-2d": "0.
|
|
57
|
-
"@chestnutlabs/gcode-renderer-three": "0.
|
|
58
|
-
"@chestnutlabs/toolpath-core": "0.
|
|
55
|
+
"@chestnutlabs/gcode-parser": "0.19.0",
|
|
56
|
+
"@chestnutlabs/gcode-renderer-2d": "0.19.0",
|
|
57
|
+
"@chestnutlabs/gcode-renderer-three": "0.19.0",
|
|
58
|
+
"@chestnutlabs/toolpath-core": "0.19.0"
|
|
59
59
|
}
|
|
60
60
|
}
|