@chestnutlabs/gcode-preview-svelte 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.
- package/dist/GcodePreview.svelte +22 -3
- package/package.json +5 -5
package/dist/GcodePreview.svelte
CHANGED
|
@@ -22,6 +22,10 @@
|
|
|
22
22
|
export let quality = 'auto';
|
|
23
23
|
/** #150 (DD-009 D3): camera projection ('perspective' | 'orthographic'). */
|
|
24
24
|
export let cameraMode = 'perspective';
|
|
25
|
+
/** #268/#275/M6: snap to a preset orientation (top/front/iso/…). */
|
|
26
|
+
export let view = undefined;
|
|
27
|
+
/** #268/#275/M6: restore a saved camera pose. Pair with the `camerachange` event for two-way. */
|
|
28
|
+
export let cameraState = undefined;
|
|
25
29
|
/** #153 (DD-009 D4): bounded declarative theme. */
|
|
26
30
|
export let theme = undefined;
|
|
27
31
|
export let colorMode = undefined;
|
|
@@ -68,12 +72,19 @@
|
|
|
68
72
|
parseDefaults: parseOptions
|
|
69
73
|
});
|
|
70
74
|
|
|
71
|
-
if (isMachine) preview.controls.setBuildVolume(buildVolume);
|
|
72
|
-
|
|
73
75
|
preview.onEvent((e) => {
|
|
74
76
|
switch (e.type) {
|
|
75
77
|
case 'parse-complete':
|
|
76
|
-
dispatch('ready', {
|
|
78
|
+
dispatch('ready', {
|
|
79
|
+
segments: e.segments,
|
|
80
|
+
layers: e.layers,
|
|
81
|
+
complete: e.complete,
|
|
82
|
+
capabilities: e.capabilities,
|
|
83
|
+
warnings: e.warnings
|
|
84
|
+
});
|
|
85
|
+
break;
|
|
86
|
+
case 'camera-changed':
|
|
87
|
+
dispatch('camerachange', e.state);
|
|
77
88
|
break;
|
|
78
89
|
case 'parse-error':
|
|
79
90
|
dispatch('parseerror', { code: e.code, message: e.message });
|
|
@@ -111,6 +122,10 @@
|
|
|
111
122
|
});
|
|
112
123
|
|
|
113
124
|
// ---- prop wiring: each prop is a thin reactive call into the handle (D1 shell rule) ----
|
|
125
|
+
// buildVolume must be reactive too (#274) — matching Vue's watch and React's useEffect. A machine
|
|
126
|
+
// geometry is (re)applied via the handle; a plain BuildVolumeDef is an init-time renderer option
|
|
127
|
+
// (above) that a post-mount change re-applies here as well.
|
|
128
|
+
$: if (buildVolume !== undefined) preview.controls.setBuildVolume(buildVolume);
|
|
114
129
|
$: if (source !== null && source !== undefined) void preview.parse(source, parseOptions);
|
|
115
130
|
$: if (layerRange === null || layerRange === undefined) preview.controls.setLayerRange(0, Number.POSITIVE_INFINITY);
|
|
116
131
|
else preview.controls.setLayerRange(layerRange[0], layerRange[1]);
|
|
@@ -122,6 +137,8 @@
|
|
|
122
137
|
$: if (colorMode !== undefined) preview.controls.setColorMode(colorMode);
|
|
123
138
|
$: preview.controls.setQuality(quality);
|
|
124
139
|
$: preview.controls.setCameraMode(cameraMode);
|
|
140
|
+
$: if (view !== undefined) preview.controls.setView(view);
|
|
141
|
+
$: if (cameraState !== undefined && cameraState !== null) preview.controls.setCameraState(cameraState);
|
|
125
142
|
$: if (theme !== undefined) preview.controls.setTheme(theme);
|
|
126
143
|
$: if (progress === null || progress === undefined) preview.clearProgress();
|
|
127
144
|
else preview.observeProgress(progress);
|
|
@@ -129,8 +146,10 @@
|
|
|
129
146
|
onDestroy(() => preview.dispose());
|
|
130
147
|
</script>
|
|
131
148
|
|
|
149
|
+
<!-- tabindex makes the canvas focusable → keyboard camera (DD-004 a11y, #275/M4) -->
|
|
132
150
|
<canvas
|
|
133
151
|
use:preview.canvas
|
|
152
|
+
tabindex="0"
|
|
134
153
|
style="width: 100%; height: 100%; display: block; touch-action: none;"
|
|
135
154
|
aria-label="3D G-code toolpath preview"
|
|
136
155
|
></canvas>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chestnutlabs/gcode-preview-svelte",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "Thin Svelte integration for the Chestnut Labs G-code viewer (DD-007 D1 amendment): createGcodePreview store/action API + GcodePreview component as a reactivity bridge over @chestnutlabs/gcode-preview-core.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"gcode",
|
|
@@ -55,10 +55,10 @@
|
|
|
55
55
|
"test": "vitest run"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@chestnutlabs/gcode-parser": "0.
|
|
59
|
-
"@chestnutlabs/gcode-preview-core": "0.
|
|
60
|
-
"@chestnutlabs/gcode-renderer-three": "0.
|
|
61
|
-
"@chestnutlabs/toolpath-core": "0.
|
|
58
|
+
"@chestnutlabs/gcode-parser": "0.5.1",
|
|
59
|
+
"@chestnutlabs/gcode-preview-core": "0.5.1",
|
|
60
|
+
"@chestnutlabs/gcode-renderer-three": "0.5.1",
|
|
61
|
+
"@chestnutlabs/toolpath-core": "0.5.1"
|
|
62
62
|
},
|
|
63
63
|
"peerDependencies": {
|
|
64
64
|
"svelte": "^4.0.0 || ^5.0.0"
|