@sienci/gviewer 0.1.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.
Files changed (35) hide show
  1. package/README.md +480 -0
  2. package/dist/GCodeSVGRenderer-DaLc9_L-.cjs +1 -0
  3. package/dist/GCodeSVGRenderer-DnFLLJmH.js +1487 -0
  4. package/dist/gviewer.cjs +1 -0
  5. package/dist/gviewer.js +654 -0
  6. package/dist/react.cjs +1 -0
  7. package/dist/react.js +141 -0
  8. package/dist/types/geometry.d.ts +92 -0
  9. package/dist/types/index.d.ts +4 -0
  10. package/dist/types/parser.d.ts +6 -0
  11. package/dist/types/react/GCodeSVGVisualizer.d.ts +20 -0
  12. package/dist/types/react/GCodeVisualizer.d.ts +10 -0
  13. package/dist/types/react/index.d.ts +4 -0
  14. package/dist/types/types.d.ts +71 -0
  15. package/dist/types/viewer/GCodeViewer.d.ts +89 -0
  16. package/dist/types/viewer/ViewCube.d.ts +16 -0
  17. package/dist/types/viewer/bbox/boundingBox.d.ts +4 -0
  18. package/dist/types/viewer/bit/bit.d.ts +13 -0
  19. package/dist/types/viewer/bit/drill-stl-data.d.ts +1 -0
  20. package/dist/types/viewer/camera/camera.d.ts +21 -0
  21. package/dist/types/viewer/grid/grid.d.ts +21 -0
  22. package/dist/types/viewer/index.d.ts +7 -0
  23. package/dist/types/viewer/render/textSprite.d.ts +12 -0
  24. package/dist/types/viewer/simulation/heightmap.d.ts +36 -0
  25. package/dist/types/viewer/simulation/materialSlab.d.ts +12 -0
  26. package/dist/types/viewer/svg/GCodeSVGRenderer.d.ts +53 -0
  27. package/dist/types/viewer/svg/types.d.ts +10 -0
  28. package/dist/types/viewer/themes.d.ts +3 -0
  29. package/dist/types/viewer/toolpath/streams.d.ts +51 -0
  30. package/dist/types/viewer/types.d.ts +171 -0
  31. package/dist/types/virtualizer.d.ts +26 -0
  32. package/dist/viewcube.css +54 -0
  33. package/dist/viewer.cjs +1 -0
  34. package/dist/viewer.js +109 -0
  35. package/package.json +81 -0
@@ -0,0 +1,21 @@
1
+ import * as THREE from "three";
2
+ import type { GCodeViewerCameraView } from "../types";
3
+ export declare function ensureContainerOverlayLayout(container: HTMLElement): void;
4
+ export declare function easeInOutCubic(t: number): number;
5
+ export declare function viewDirection(view: GCodeViewerCameraView): THREE.Vector3;
6
+ export declare function dominantCameraFace(cameraPosition: {
7
+ x: number;
8
+ y: number;
9
+ z: number;
10
+ }, target: {
11
+ x: number;
12
+ y: number;
13
+ z: number;
14
+ }): "front" | "back" | "left" | "right" | "top" | "bottom";
15
+ export declare function orbitCameraByPixels(args: {
16
+ camera: THREE.PerspectiveCamera;
17
+ target: THREE.Vector3;
18
+ deltaX: number;
19
+ deltaY: number;
20
+ speed?: number;
21
+ }): void;
@@ -0,0 +1,21 @@
1
+ import * as THREE from "three";
2
+ import type { GCodeViewerOptions, GridUnits } from "../types";
3
+ import { disposeSpriteGroup } from "../render/textSprite";
4
+ export declare function createUnitGrid(args: {
5
+ units: GridUnits;
6
+ sizeMm: number;
7
+ theme: GCodeViewerOptions["render"]["theme"];
8
+ }): THREE.Group;
9
+ export declare function disposeLineSegmentsGroup(group: THREE.Object3D): void;
10
+ export declare function createAxes(args: {
11
+ sizeWorld: number;
12
+ depthWorld: number;
13
+ theme: GCodeViewerOptions["render"]["theme"];
14
+ }): THREE.Group;
15
+ export declare function disposeAxesGroup(group: THREE.Object3D): void;
16
+ export declare function createGridLabels(args: {
17
+ sizeMm: number;
18
+ units: GridUnits;
19
+ theme: GCodeViewerOptions["render"]["theme"];
20
+ }): THREE.Group;
21
+ export { disposeSpriteGroup };
@@ -0,0 +1,7 @@
1
+ export { GCodeViewer } from "./GCodeViewer";
2
+ export { ViewCube } from "./ViewCube";
3
+ export { gCodeViewerThemePresets } from "./themes";
4
+ export type { GCodeViewerThemePresetName } from "./themes";
5
+ export * from "./types";
6
+ export { GCodeSVGRenderer } from "./svg/GCodeSVGRenderer";
7
+ export type { GCodeSVGOptions } from "./svg/types";
@@ -0,0 +1,12 @@
1
+ import * as THREE from "three";
2
+ export type TextSpriteOptions = {
3
+ x?: number;
4
+ y?: number;
5
+ z?: number;
6
+ textAlign?: "left" | "center" | "right";
7
+ textBaseline?: "top" | "middle" | "bottom";
8
+ size?: number;
9
+ opacity?: number;
10
+ };
11
+ export declare function createTextSprite(text: string, color: string, options?: TextSpriteOptions): THREE.Object3D;
12
+ export declare function disposeSpriteGroup(group: THREE.Object3D): void;
@@ -0,0 +1,36 @@
1
+ export type CuttingMove = {
2
+ lineIndex: number;
3
+ x0: number;
4
+ y0: number;
5
+ z0: number;
6
+ x1: number;
7
+ y1: number;
8
+ z1: number;
9
+ };
10
+ export type SlabBounds = {
11
+ xMin: number;
12
+ xMax: number;
13
+ yMin: number;
14
+ yMax: number;
15
+ zTop: number;
16
+ zBot: number;
17
+ };
18
+ export type Sim3dData = {
19
+ moves: CuttingMove[];
20
+ checkpoints: Map<number, Float32Array>;
21
+ slabBounds: SlabBounds;
22
+ resolution: number;
23
+ toolRadius: number;
24
+ };
25
+ export declare function buildSim3dData(lines: readonly string[], toolRadius: number, resolution: number, options?: {
26
+ arcSegments?: number;
27
+ checkpointEveryLines?: number;
28
+ batch?: {
29
+ yieldEveryLines?: number;
30
+ shouldAbort?: () => boolean;
31
+ onProgress?: (processed: number, total: number) => void;
32
+ };
33
+ }): Promise<Sim3dData>;
34
+ export declare function applyMoveToHeightmap(move: CuttingMove, heightmap: Float32Array, bounds: SlabBounds, toolRadius: number, resolution: number): void;
35
+ export declare function seekHeightmap(targetLine: number, sim: Sim3dData): Float32Array;
36
+ export declare function erodeHeightmap(hm: Float32Array, resolution: number, passes: number, zTop: number): void;
@@ -0,0 +1,12 @@
1
+ import * as THREE from "three";
2
+ import type { SlabBounds } from "./heightmap";
3
+ export type SlabHandle = {
4
+ group: THREE.Group;
5
+ topMesh: THREE.Mesh;
6
+ topPositionAttr: THREE.BufferAttribute;
7
+ slabBounds: SlabBounds;
8
+ resolution: number;
9
+ };
10
+ export declare function createMaterialSlab(slabBounds: SlabBounds, resolution: number): SlabHandle;
11
+ export declare function updateSlabTopSurface(handle: SlabHandle, heightmap: Float32Array): void;
12
+ export declare function disposeSlabHandle(handle: SlabHandle): void;
@@ -0,0 +1,53 @@
1
+ import { GCodeSVGOptions } from "./types";
2
+ export declare class GCodeSVGRenderer {
3
+ private svg;
4
+ private bboxPath;
5
+ private bboxLabelX;
6
+ private bboxLabelY;
7
+ private bboxLabelZ;
8
+ private rapidPath;
9
+ private cutPath;
10
+ private options;
11
+ private viewBox;
12
+ private rotX;
13
+ private rotY;
14
+ private centerX;
15
+ private centerY;
16
+ private centerZ;
17
+ private focalLength;
18
+ private cosRotX;
19
+ private sinRotX;
20
+ private cosRotY;
21
+ private sinRotY;
22
+ private dragMode;
23
+ private dragLast;
24
+ private rafPending;
25
+ private rapidVerts;
26
+ private cutVerts;
27
+ private bounds;
28
+ constructor(container: HTMLElement, options?: Partial<GCodeSVGOptions>);
29
+ loadFromLines(lines: string[]): void;
30
+ loadFromFile(file: File): Promise<void>;
31
+ loadFromText(gcode: string): void;
32
+ clear(): void;
33
+ resetView(): void;
34
+ setOptions(opts: Partial<GCodeSVGOptions>): void;
35
+ setProjectionMode(mode: 'perspective' | 'isometric'): void;
36
+ getSVGElement(): SVGSVGElement;
37
+ dispose(): void;
38
+ private updateTrig;
39
+ private project;
40
+ private rebuildAndRender;
41
+ private scheduleDraw;
42
+ private fitView;
43
+ private applyViewBox;
44
+ private applyOptions;
45
+ private renderBbox;
46
+ private onWheel;
47
+ private onPointerDown;
48
+ private onPointerMove;
49
+ private onPointerUp;
50
+ private onContextMenu;
51
+ private bindEvents;
52
+ private svgPoint;
53
+ }
@@ -0,0 +1,10 @@
1
+ export type GCodeSVGOptions = {
2
+ rapidColor: string;
3
+ cutColor: string;
4
+ boundingBoxColor: string;
5
+ strokeWidth: number;
6
+ arcSegments: number;
7
+ padding: number;
8
+ projectionMode: 'perspective' | 'isometric';
9
+ };
10
+ export declare const defaultGCodeSVGOptions: GCodeSVGOptions;
@@ -0,0 +1,3 @@
1
+ import type { GCodeViewerTheme } from "./types";
2
+ export type GCodeViewerThemePresetName = "dark" | "light" | "flexoki-dark" | "tokyo-night" | "gruvbox-light" | "ayu-dark" | "ayu-light";
3
+ export declare const gCodeViewerThemePresets: Record<GCodeViewerThemePresetName, GCodeViewerTheme>;
@@ -0,0 +1,51 @@
1
+ import * as THREE from "three";
2
+ import type { GCodeViewerOptions } from "../types";
3
+ export type ToolpathStreamKind = "rapid" | "cut";
4
+ export type ToolpathStreamState = {
5
+ line: THREE.LineSegments;
6
+ baseColors: Float32Array;
7
+ simColors: Float32Array;
8
+ prefixEndVertex: Int32Array;
9
+ totalVertices: number;
10
+ greyCursorVertex: number;
11
+ kind: ToolpathStreamKind;
12
+ cutBucketIndex: number | null;
13
+ };
14
+ export type ToolpathStreamSpec = {
15
+ kind: ToolpathStreamKind;
16
+ cutBucketIndex: number | null;
17
+ positions: Float32Array;
18
+ prefixEndVertex: Int32Array;
19
+ opacity: number;
20
+ };
21
+ export declare function createToolpathStreams(args: {
22
+ specs: readonly ToolpathStreamSpec[];
23
+ options: Readonly<GCodeViewerOptions>;
24
+ scene: THREE.Scene;
25
+ }): {
26
+ streams: ToolpathStreamState[];
27
+ bounds: THREE.Box3 | null;
28
+ };
29
+ export declare function disposeToolpathStreams(scene: THREE.Scene, streams: readonly ToolpathStreamState[]): void;
30
+ export declare function refreshToolpathStreamColors(streams: readonly ToolpathStreamState[], options: Readonly<GCodeViewerOptions>): void;
31
+ export declare function refreshToolpathStreamOpacities(args: {
32
+ streams: readonly ToolpathStreamState[];
33
+ options: Readonly<GCodeViewerOptions>;
34
+ cutBucketCount: number;
35
+ }): void;
36
+ export declare function applyStreamGreyCursor(args: {
37
+ stream: ToolpathStreamState;
38
+ nextCursorVertex: number;
39
+ options: Readonly<GCodeViewerOptions>;
40
+ }): void;
41
+ export declare function buildStreamBaseColors(kind: ToolpathStreamKind, totalVertices: number, options: Readonly<GCodeViewerOptions>): Float32Array;
42
+ export declare function processedRgb(options: Readonly<GCodeViewerOptions>): {
43
+ r: number;
44
+ g: number;
45
+ b: number;
46
+ };
47
+ export declare function cutBucketOpacity(args: {
48
+ bucketIndex: number;
49
+ bucketCount: number;
50
+ baseOpacity: number;
51
+ }): number;
@@ -0,0 +1,171 @@
1
+ export type GridUnits = "mm" | "in";
2
+ export type GCodeViewerTheme = {
3
+ background: string;
4
+ opacity: number;
5
+ rapidOpacity?: number;
6
+ colors: {
7
+ rapid: string;
8
+ cutting: string;
9
+ laser?: string;
10
+ processed?: string;
11
+ boundingBox: string;
12
+ grid: {
13
+ major: string;
14
+ minor: string;
15
+ };
16
+ axes: {
17
+ x: string;
18
+ y: string;
19
+ z: string;
20
+ };
21
+ };
22
+ };
23
+ export type GCodeViewerBitType = "circle" | "triangle" | "drill" | "laser";
24
+ export type GCodeViewerBitPosition = {
25
+ x: number;
26
+ y: number;
27
+ z: number;
28
+ a?: number;
29
+ };
30
+ export type GCodeViewerSim3dOptions = {
31
+ toolDiameter: number;
32
+ resolution: number;
33
+ showToolpath: boolean;
34
+ erosionPasses: number;
35
+ };
36
+ export type GCodeViewerOptions = {
37
+ units: GridUnits;
38
+ mode: {
39
+ laser: boolean;
40
+ sim3d: boolean;
41
+ };
42
+ sim3d: GCodeViewerSim3dOptions;
43
+ bit: {
44
+ enabled: boolean;
45
+ type: GCodeViewerBitType;
46
+ size: number;
47
+ opacity: number;
48
+ tweenMs: number;
49
+ colorSource: "cutting" | "rapid" | "custom";
50
+ color: string;
51
+ };
52
+ progress: {
53
+ mode: "hide" | "grey";
54
+ };
55
+ grid: {
56
+ size: number;
57
+ axisDepth: number;
58
+ labels: boolean;
59
+ };
60
+ boundingBox: {
61
+ visible: boolean;
62
+ labels: boolean;
63
+ };
64
+ geometry: {
65
+ arcSegments: number;
66
+ batching: {
67
+ progressEveryLines: number;
68
+ yieldEveryLines: number;
69
+ };
70
+ };
71
+ render: {
72
+ antialias: boolean;
73
+ theme: GCodeViewerTheme;
74
+ };
75
+ camera: {
76
+ fov: number;
77
+ focusDurationMs: number;
78
+ orbit: {
79
+ enableDamping: boolean;
80
+ };
81
+ initialPosition: {
82
+ x: number;
83
+ y: number;
84
+ z: number;
85
+ };
86
+ };
87
+ };
88
+ export declare const defaultGCodeViewerTheme: GCodeViewerTheme;
89
+ export declare const defaultGCodeViewerOptions: GCodeViewerOptions;
90
+ export type GCodeViewerProgressEvent = {
91
+ id: string;
92
+ state: "hidden";
93
+ } | {
94
+ id: string;
95
+ state: "indeterminate";
96
+ label: string;
97
+ } | {
98
+ id: string;
99
+ state: "determinate";
100
+ label: string;
101
+ processed: number;
102
+ total: number;
103
+ };
104
+ export type GCodeViewerProgressEventNoId = {
105
+ state: "hidden";
106
+ } | {
107
+ state: "indeterminate";
108
+ label: string;
109
+ } | {
110
+ state: "determinate";
111
+ label: string;
112
+ processed: number;
113
+ total: number;
114
+ };
115
+ export type GCodeViewerCallbacks = {
116
+ onProgress?: (event: GCodeViewerProgressEvent) => void;
117
+ onBoundsChanged?: (event: {
118
+ id: string;
119
+ bounds: GCodeViewerBounds | null;
120
+ }) => void;
121
+ };
122
+ export type GCodeViewerBounds = {
123
+ min: {
124
+ x: number;
125
+ y: number;
126
+ z: number;
127
+ };
128
+ max: {
129
+ x: number;
130
+ y: number;
131
+ z: number;
132
+ };
133
+ };
134
+ export type GCodeViewerHandle = {
135
+ readonly id: string;
136
+ setCallbacks(callbacks: GCodeViewerCallbacks): void;
137
+ snapCameraToView(view: GCodeViewerCameraView, options?: {
138
+ durationMs?: number;
139
+ distance?: number;
140
+ }): void;
141
+ setBitPosition(position: GCodeViewerBitPosition, options?: {
142
+ immediate?: boolean;
143
+ }): void;
144
+ setBitVisible(visible: boolean): void;
145
+ setToolpathRotationA(aDegrees: number): void;
146
+ hideUntilLine(lineIndex: number, mode?: "hide" | "grey"): void;
147
+ seekToLine(lineIndex: number, mode?: "hide" | "grey"): void;
148
+ showAll(): void;
149
+ resetColors(): void;
150
+ loadFromUrl(url: string, args?: {
151
+ signal?: AbortSignal;
152
+ }): Promise<void>;
153
+ loadFromFile(file: File): Promise<void>;
154
+ loadFromText(gcode: string): Promise<void>;
155
+ loadFromLines(lines: readonly string[]): Promise<void>;
156
+ unload(): void;
157
+ setOptions(next: Partial<GCodeViewerOptions>): void;
158
+ getOptions(): Readonly<GCodeViewerOptions>;
159
+ resize(): void;
160
+ focusToModel(): void;
161
+ resetCamera(): void;
162
+ getBounds(): GCodeViewerBounds | null;
163
+ dispose(): void;
164
+ };
165
+ export type GCodeViewerCreateArgs = {
166
+ id: string;
167
+ container: HTMLElement;
168
+ options?: Partial<GCodeViewerOptions>;
169
+ callbacks?: GCodeViewerCallbacks;
170
+ };
171
+ export type GCodeViewerCameraView = "front" | "back" | "left" | "right" | "top" | "bottom" | "front-top-left" | "front-top-right" | "front-bottom-left" | "front-bottom-right" | "back-top-left" | "back-top-right" | "back-bottom-left" | "back-bottom-right";
@@ -0,0 +1,26 @@
1
+ import { ModalState, MovementCallbacks, Position, VirtualizeResult } from "./types";
2
+ export declare class GCodeVirtualizer {
3
+ private readonly parser;
4
+ private modals;
5
+ private position;
6
+ private callbacks;
7
+ private feedRates;
8
+ private spindleSpeeds;
9
+ private tools;
10
+ constructor(callbacks?: MovementCallbacks);
11
+ setCallbacks(callbacks: MovementCallbacks): void;
12
+ getModals(): ModalState;
13
+ getPosition(): Position;
14
+ getUniqueFeedRates(): number[];
15
+ getUniqueSpindleSpeeds(): number[];
16
+ getUniqueTools(): number[];
17
+ reset(): void;
18
+ processLine(line: string): VirtualizeResult;
19
+ private unitsScale;
20
+ private updateModals;
21
+ private applyAxes;
22
+ private computeArcMax;
23
+ private arcCenter;
24
+ private emitLinear;
25
+ private emitArc;
26
+ }
@@ -0,0 +1,54 @@
1
+ .gViewer-viewcube{
2
+ position:absolute;
3
+ left:60px;
4
+ bottom:60px;
5
+ width:84px;
6
+ height:84px;
7
+ z-index:9999;
8
+ perspective:600px;
9
+ pointer-events:auto;
10
+ }
11
+
12
+ .gViewer-viewcube__cube{
13
+ position:absolute;
14
+ inset:0;
15
+ transform-style:preserve-3d;
16
+ transition:transform 60ms linear;
17
+ }
18
+
19
+ .gViewer-viewcube__face{
20
+ position:absolute;
21
+ width:84px;
22
+ height:84px;
23
+ display:flex;
24
+ align-items:center;
25
+ justify-content:center;
26
+ font:600 11px system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
27
+ letter-spacing:0.06em;
28
+ text-transform:uppercase;
29
+ color:rgba(240,245,252,0.88);
30
+ background:rgba(12,16,20,0.70);
31
+ border:1px solid rgba(120,140,160,0.35);
32
+ border-radius:14px;
33
+ cursor:pointer;
34
+ user-select:none;
35
+ padding:0;
36
+ }
37
+
38
+ .gViewer-viewcube__face:hover{
39
+ background:rgba(12,16,20,0.86);
40
+ border-color:rgba(160,190,220,0.55);
41
+ }
42
+
43
+ .gViewer-viewcube__face.is-active{
44
+ border-color: rgba(14,246,174,0.95);
45
+ box-shadow: 0 0 0 1px rgba(14,246,174,0.35), 0 10px 30px rgba(0,0,0,0.35);
46
+ color: rgba(14,246,174,0.95);
47
+ }
48
+
49
+ .gViewer-viewcube__face--front{ transform: translateZ(42px); }
50
+ .gViewer-viewcube__face--back{ transform: rotateY(180deg) translateZ(42px); }
51
+ .gViewer-viewcube__face--left{ transform: rotateY(-90deg) translateZ(42px); }
52
+ .gViewer-viewcube__face--right{ transform: rotateY(90deg) translateZ(42px); }
53
+ .gViewer-viewcube__face--top{ transform: rotateX(-90deg) translateZ(42px); }
54
+ .gViewer-viewcube__face--bottom{ transform: rotateX(90deg) translateZ(42px); }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./GCodeSVGRenderer-DaLc9_L-.cjs"),a={dark:{background:"#111827",opacity:.9,rapidOpacity:.3,colors:{rapid:"#0ef6ae",cutting:"#3e85c7",laser:"#a855f7",processed:"#6b7280",boundingBox:"#77a9d7",grid:{major:"#2f3840",minor:"#1f252b"},axes:{x:"#df3b3b",y:"#06b881",z:"#295d8d"}}},light:{background:"#e5e7eb",opacity:.9,rapidOpacity:.3,colors:{rapid:"#295d8d",cutting:"#111827",laser:"#FF0000",processed:"#9ca3af",boundingBox:"#5191cc",grid:{major:"#77a9d7",minor:"#a8c6e4"},axes:{x:"#df3b3b",y:"#06b881",z:"#295d8d"}}},"flexoki-dark":{background:"#100f0f",opacity:.9,rapidOpacity:.3,colors:{rapid:"#DA702C",cutting:"#3AA99F",laser:"#8B7EC8",processed:"#6f6e69",boundingBox:"#da702c",grid:{major:"#403e3c",minor:"#282726"},axes:{x:"#d14d41",y:"#879a39",z:"#4385be"}}},"tokyo-night":{background:"#1a1b26",opacity:.9,rapidOpacity:.3,colors:{rapid:"#ff9e64",cutting:"#7dcfff",laser:"#bb9af7",processed:"#565f89",boundingBox:"#73daca",grid:{major:"#414868",minor:"#24283b"},axes:{x:"#f7768e",y:"#9ece6a",z:"#7aa2f7"}}},"gruvbox-light":{background:"#fbf1c7",opacity:.9,rapidOpacity:.3,colors:{rapid:"#d65d0e",cutting:"#3c3836",laser:"#b16286",processed:"#928374",boundingBox:"#076678",grid:{major:"#d5c4a1",minor:"#ebdbb2"},axes:{x:"#cc241d",y:"#98971a",z:"#458588"}}},"ayu-dark":{background:"#0b0e14",opacity:.9,rapidOpacity:.3,colors:{rapid:"#FFA659",cutting:"#73D0FF",laser:"#DFBFFF",processed:"#6E7C8F",boundingBox:"#95E6CB",grid:{major:"#242b38",minor:"#1a1f2b"},axes:{x:"#F28779",y:"#D5FF80",z:"#5CCFE6"}}},"ayu-light":{background:"#fafafa",opacity:.9,rapidOpacity:.3,colors:{rapid:"#FA8D3E",cutting:"#22A4E6",laser:"#A37ACC",processed:"#ADAEB1",boundingBox:"#5C6773",grid:{major:"#c9cacc",minor:"#e5e7ea"},axes:{x:"#F07171",y:"#86B300",z:"#55B4D4"}}}};exports.GCodeSVGRenderer=e.GCodeSVGRenderer;exports.GCodeViewer=e.GCodeViewer;exports.ViewCube=e.ViewCube;exports.defaultGCodeViewerOptions=e.defaultGCodeViewerOptions;exports.defaultGCodeViewerTheme=e.defaultGCodeViewerTheme;exports.gCodeViewerThemePresets=a;
package/dist/viewer.js ADDED
@@ -0,0 +1,109 @@
1
+ import { G as r, a as d, V as i, d as c, b as s } from "./GCodeSVGRenderer-DnFLLJmH.js";
2
+ const a = {
3
+ dark: {
4
+ background: "#111827",
5
+ opacity: 0.9,
6
+ rapidOpacity: 0.3,
7
+ colors: {
8
+ rapid: "#0ef6ae",
9
+ cutting: "#3e85c7",
10
+ laser: "#a855f7",
11
+ processed: "#6b7280",
12
+ boundingBox: "#77a9d7",
13
+ grid: { major: "#2f3840", minor: "#1f252b" },
14
+ axes: { x: "#df3b3b", y: "#06b881", z: "#295d8d" }
15
+ }
16
+ },
17
+ light: {
18
+ background: "#e5e7eb",
19
+ opacity: 0.9,
20
+ rapidOpacity: 0.3,
21
+ colors: {
22
+ rapid: "#295d8d",
23
+ cutting: "#111827",
24
+ laser: "#FF0000",
25
+ processed: "#9ca3af",
26
+ boundingBox: "#5191cc",
27
+ grid: { major: "#77a9d7", minor: "#a8c6e4" },
28
+ axes: { x: "#df3b3b", y: "#06b881", z: "#295d8d" }
29
+ }
30
+ },
31
+ "flexoki-dark": {
32
+ background: "#100f0f",
33
+ opacity: 0.9,
34
+ rapidOpacity: 0.3,
35
+ colors: {
36
+ rapid: "#DA702C",
37
+ cutting: "#3AA99F",
38
+ laser: "#8B7EC8",
39
+ processed: "#6f6e69",
40
+ boundingBox: "#da702c",
41
+ grid: { major: "#403e3c", minor: "#282726" },
42
+ axes: { x: "#d14d41", y: "#879a39", z: "#4385be" }
43
+ }
44
+ },
45
+ "tokyo-night": {
46
+ background: "#1a1b26",
47
+ opacity: 0.9,
48
+ rapidOpacity: 0.3,
49
+ colors: {
50
+ rapid: "#ff9e64",
51
+ cutting: "#7dcfff",
52
+ laser: "#bb9af7",
53
+ processed: "#565f89",
54
+ boundingBox: "#73daca",
55
+ grid: { major: "#414868", minor: "#24283b" },
56
+ axes: { x: "#f7768e", y: "#9ece6a", z: "#7aa2f7" }
57
+ }
58
+ },
59
+ "gruvbox-light": {
60
+ background: "#fbf1c7",
61
+ opacity: 0.9,
62
+ rapidOpacity: 0.3,
63
+ colors: {
64
+ rapid: "#d65d0e",
65
+ cutting: "#3c3836",
66
+ laser: "#b16286",
67
+ processed: "#928374",
68
+ boundingBox: "#076678",
69
+ grid: { major: "#d5c4a1", minor: "#ebdbb2" },
70
+ axes: { x: "#cc241d", y: "#98971a", z: "#458588" }
71
+ }
72
+ },
73
+ "ayu-dark": {
74
+ background: "#0b0e14",
75
+ opacity: 0.9,
76
+ rapidOpacity: 0.3,
77
+ colors: {
78
+ rapid: "#FFA659",
79
+ cutting: "#73D0FF",
80
+ laser: "#DFBFFF",
81
+ processed: "#6E7C8F",
82
+ boundingBox: "#95E6CB",
83
+ grid: { major: "#242b38", minor: "#1a1f2b" },
84
+ axes: { x: "#F28779", y: "#D5FF80", z: "#5CCFE6" }
85
+ }
86
+ },
87
+ "ayu-light": {
88
+ background: "#fafafa",
89
+ opacity: 0.9,
90
+ rapidOpacity: 0.3,
91
+ colors: {
92
+ rapid: "#FA8D3E",
93
+ cutting: "#22A4E6",
94
+ laser: "#A37ACC",
95
+ processed: "#ADAEB1",
96
+ boundingBox: "#5C6773",
97
+ grid: { major: "#c9cacc", minor: "#e5e7ea" },
98
+ axes: { x: "#F07171", y: "#86B300", z: "#55B4D4" }
99
+ }
100
+ }
101
+ };
102
+ export {
103
+ r as GCodeSVGRenderer,
104
+ d as GCodeViewer,
105
+ i as ViewCube,
106
+ c as defaultGCodeViewerOptions,
107
+ s as defaultGCodeViewerTheme,
108
+ a as gCodeViewerThemePresets
109
+ };
package/package.json ADDED
@@ -0,0 +1,81 @@
1
+ {
2
+ "name": "@sienci/gviewer",
3
+ "version": "0.1.0",
4
+ "description": "GCode visualization library using Three.js",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/kglovern/gcode_parser_viewer"
8
+ },
9
+ "homepage": "https://github.com/kglovern/gcode_parser_viewer",
10
+ "bugs": {
11
+ "url": "https://github.com/kglovern/gcode_parser_viewer/issues"
12
+ },
13
+ "license": "MIT",
14
+ "type": "module",
15
+ "sideEffects": [
16
+ "**/*.css"
17
+ ],
18
+ "exports": {
19
+ ".": {
20
+ "import": "./dist/gviewer.js",
21
+ "require": "./dist/gviewer.cjs",
22
+ "types": "./dist/types/index.d.ts"
23
+ },
24
+ "./viewer": {
25
+ "import": "./dist/viewer.js",
26
+ "require": "./dist/viewer.cjs",
27
+ "types": "./dist/types/viewer/index.d.ts"
28
+ },
29
+ "./react": {
30
+ "import": "./dist/react.js",
31
+ "require": "./dist/react.cjs",
32
+ "types": "./dist/types/react/index.d.ts"
33
+ },
34
+ "./viewer/viewcube.css": "./dist/viewcube.css"
35
+ },
36
+ "main": "./dist/gviewer.cjs",
37
+ "module": "./dist/gviewer.js",
38
+ "types": "./dist/types/index.d.ts",
39
+ "files": [
40
+ "dist"
41
+ ],
42
+ "publishConfig": {
43
+ "access": "public"
44
+ },
45
+ "scripts": {
46
+ "build": "vite build && tsc -p tsconfig.build.json",
47
+ "test": "vitest run",
48
+ "test:watch": "vitest",
49
+ "dev": "vite build --watch",
50
+ "demo": "vite --config vite.demo.config.ts",
51
+ "build:demo": "vite build --config vite.demo.config.ts"
52
+ },
53
+ "peerDependencies": {
54
+ "three": "^0.168.0",
55
+ "react": ">=18",
56
+ "react-dom": ">=18"
57
+ },
58
+ "peerDependenciesMeta": {
59
+ "three": {
60
+ "optional": true
61
+ },
62
+ "react": {
63
+ "optional": true
64
+ },
65
+ "react-dom": {
66
+ "optional": true
67
+ }
68
+ },
69
+ "devDependencies": {
70
+ "@types/react": "^18.3.0",
71
+ "@types/react-dom": "^18.3.0",
72
+ "@types/three": "^0.168.0",
73
+ "@vitejs/plugin-react": "^4.3.0",
74
+ "react": "^18.3.0",
75
+ "react-dom": "^18.3.0",
76
+ "three": "^0.168.0",
77
+ "typescript": "^5.5.0",
78
+ "vite": "^5.4.0",
79
+ "vitest": "^2.0.0"
80
+ }
81
+ }