@chestnutlabs/gcode-preview-element 0.4.0 → 0.5.1
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.
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* No framework peer dependency — this is the plain-DOM / Angular / vanilla path.
|
|
12
12
|
*/
|
|
13
13
|
import { createPreviewController, type GcodePreviewControls, type GcodePreviewState, type ParseOutcome, type PreviewController, type PreviewEvent } from '@chestnutlabs/gcode-preview-core';
|
|
14
|
-
import type { BuildVolumeDef, ColorMode, Theme, TubeOptions } from '@chestnutlabs/gcode-renderer-three';
|
|
14
|
+
import type { BuildVolumeDef, CameraState, ColorMode, Theme, TubeOptions } from '@chestnutlabs/gcode-renderer-three';
|
|
15
15
|
import type { MachineGeometry, MappedProgress, ProgressObservation } from '@chestnutlabs/toolpath-core';
|
|
16
16
|
import type { WireParseOptions, WorkerLike } from '@chestnutlabs/gcode-parser';
|
|
17
17
|
export type GcodePreviewSource = Uint8Array | ArrayBuffer | File | null;
|
|
@@ -33,6 +33,7 @@ export declare class GcodePreviewElement extends HTMLElement {
|
|
|
33
33
|
private _progress;
|
|
34
34
|
private _createWorker;
|
|
35
35
|
private _rendererOptions;
|
|
36
|
+
private _cameraState;
|
|
36
37
|
get source(): GcodePreviewSource;
|
|
37
38
|
set source(v: GcodePreviewSource);
|
|
38
39
|
get parseOptions(): WireParseOptions | undefined;
|
|
@@ -55,6 +56,13 @@ export declare class GcodePreviewElement extends HTMLElement {
|
|
|
55
56
|
set quality(v: string | null);
|
|
56
57
|
get cameraMode(): string | null;
|
|
57
58
|
set cameraMode(v: string | null);
|
|
59
|
+
/** #268/#275/M6: preset orientation attribute (top/front/iso/…). */
|
|
60
|
+
get view(): string | null;
|
|
61
|
+
set view(v: string | null);
|
|
62
|
+
/** #268/#275/M6: restore a saved pose (property-only — objects can't be attributes). Pair with the
|
|
63
|
+
* `camerachange` event for two-way. */
|
|
64
|
+
get cameraState(): CameraState | null;
|
|
65
|
+
set cameraState(v: CameraState | null);
|
|
58
66
|
/** Default true; only `show-travel="false"` hides travel. */
|
|
59
67
|
get showTravel(): boolean;
|
|
60
68
|
set showTravel(v: boolean);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gcode-preview-element.d.ts","sourceRoot":"","sources":["../src/gcode-preview-element.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EACL,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAElB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"gcode-preview-element.d.ts","sourceRoot":"","sources":["../src/gcode-preview-element.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ import { createPreviewController } from '@chestnutlabs/gcode-preview-core';
|
|
|
15
15
|
const OBSERVED = [
|
|
16
16
|
'quality',
|
|
17
17
|
'camera-mode',
|
|
18
|
+
'view',
|
|
18
19
|
'show-travel',
|
|
19
20
|
'show-wipe',
|
|
20
21
|
'show-retractions',
|
|
@@ -40,6 +41,7 @@ export class GcodePreviewElement extends HTMLElement {
|
|
|
40
41
|
_progress = null;
|
|
41
42
|
_createWorker;
|
|
42
43
|
_rendererOptions;
|
|
44
|
+
_cameraState = null;
|
|
43
45
|
// ---- rich-option property accessors ----
|
|
44
46
|
get source() {
|
|
45
47
|
return this._source;
|
|
@@ -117,6 +119,23 @@ export class GcodePreviewElement extends HTMLElement {
|
|
|
117
119
|
set cameraMode(v) {
|
|
118
120
|
this.reflect('camera-mode', v);
|
|
119
121
|
}
|
|
122
|
+
/** #268/#275/M6: preset orientation attribute (top/front/iso/…). */
|
|
123
|
+
get view() {
|
|
124
|
+
return this.getAttribute('view');
|
|
125
|
+
}
|
|
126
|
+
set view(v) {
|
|
127
|
+
this.reflect('view', v);
|
|
128
|
+
}
|
|
129
|
+
/** #268/#275/M6: restore a saved pose (property-only — objects can't be attributes). Pair with the
|
|
130
|
+
* `camerachange` event for two-way. */
|
|
131
|
+
get cameraState() {
|
|
132
|
+
return this.controller !== null ? this.controller.controls.getCameraState() : this._cameraState;
|
|
133
|
+
}
|
|
134
|
+
set cameraState(v) {
|
|
135
|
+
this._cameraState = v;
|
|
136
|
+
if (this.controller !== null && v !== null)
|
|
137
|
+
this.controller.controls.setCameraState(v);
|
|
138
|
+
}
|
|
120
139
|
/** Default true; only `show-travel="false"` hides travel. */
|
|
121
140
|
get showTravel() {
|
|
122
141
|
return this.getAttribute('show-travel') !== 'false';
|
|
@@ -194,6 +213,7 @@ export class GcodePreviewElement extends HTMLElement {
|
|
|
194
213
|
style.textContent = ':host{display:block;width:100%;height:100%}canvas{display:block;width:100%;height:100%}';
|
|
195
214
|
const canvas = document.createElement('canvas');
|
|
196
215
|
canvas.setAttribute('aria-label', '3D G-code toolpath preview');
|
|
216
|
+
canvas.setAttribute('tabindex', '0'); // focusable → keyboard camera (DD-004 a11y, #275/M4)
|
|
197
217
|
root.append(style, canvas);
|
|
198
218
|
this.canvasEl = canvas;
|
|
199
219
|
const isMachine = this._buildVolume !== undefined && 'bed' in this._buildVolume;
|
|
@@ -239,6 +259,10 @@ export class GcodePreviewElement extends HTMLElement {
|
|
|
239
259
|
if (value !== null)
|
|
240
260
|
c.setCameraMode(value);
|
|
241
261
|
break;
|
|
262
|
+
case 'view':
|
|
263
|
+
if (value !== null)
|
|
264
|
+
c.setView(value);
|
|
265
|
+
break;
|
|
242
266
|
case 'show-travel':
|
|
243
267
|
c.setKindVisible('travel', value !== 'false');
|
|
244
268
|
break;
|
|
@@ -309,7 +333,16 @@ export class GcodePreviewElement extends HTMLElement {
|
|
|
309
333
|
};
|
|
310
334
|
switch (e.type) {
|
|
311
335
|
case 'parse-complete':
|
|
312
|
-
emit('ready', {
|
|
336
|
+
emit('ready', {
|
|
337
|
+
segments: e.segments,
|
|
338
|
+
layers: e.layers,
|
|
339
|
+
complete: e.complete,
|
|
340
|
+
capabilities: e.capabilities,
|
|
341
|
+
warnings: e.warnings
|
|
342
|
+
});
|
|
343
|
+
break;
|
|
344
|
+
case 'camera-changed':
|
|
345
|
+
emit('camerachange', e.state);
|
|
313
346
|
break;
|
|
314
347
|
case 'parse-error':
|
|
315
348
|
emit('parse-error', { code: e.code, message: e.message });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chestnutlabs/gcode-preview-element",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "Framework-free <gcode-preview> Web Component for the Chestnut Labs G-code viewer (DD-007 D1 / DD-009 D5): a custom element bridging @chestnutlabs/gcode-preview-core, no framework peer dependency.",
|
|
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-preview-core": "0.
|
|
57
|
-
"@chestnutlabs/gcode-renderer-three": "0.
|
|
58
|
-
"@chestnutlabs/toolpath-core": "0.
|
|
55
|
+
"@chestnutlabs/gcode-parser": "0.5.1",
|
|
56
|
+
"@chestnutlabs/gcode-preview-core": "0.5.1",
|
|
57
|
+
"@chestnutlabs/gcode-renderer-three": "0.5.1",
|
|
58
|
+
"@chestnutlabs/toolpath-core": "0.5.1"
|
|
59
59
|
}
|
|
60
60
|
}
|