three-slicer-viewer 0.3.0 → 0.3.2

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/toolpath.js CHANGED
@@ -1,188 +1,113 @@
1
- const _ = {
2
- 0: [0.35, 0.38, 0.44],
3
- // travel
4
- 1: [0.98, 0.45, 0.16],
5
- // wall
6
- 2: [0.36, 0.72, 0.94],
7
- // sparse infill
8
- 3: [0.2, 0.55, 0.86],
9
- // solid infill
10
- 4: [0.62, 0.66, 0.72],
11
- // skirt / brim
12
- 5: [0.5, 0.54, 0.6],
13
- // support
14
- 6: [0.42, 0.46, 0.52],
15
- // raft
16
- 7: [0.96, 0.76, 0.22],
17
- // gap fill
18
- 8: [0.88, 0.55, 0.3],
19
- // thin wall
20
- 9: [0.3, 0.8, 0.62],
21
- // bridge
22
- 10: [0.8, 0.42, 0.72],
23
- // ironing
24
- 11: [0.58, 0.5, 0.88]
25
- // prime tower
26
- }, Mt = {
27
- 0: "Travel",
28
- 1: "Wall",
29
- 2: "Sparse",
30
- 3: "Solid",
31
- 4: "Skirt",
32
- 5: "Support",
33
- 6: "Raft",
34
- 7: "Gap",
35
- 8: "Thin",
36
- 9: "Bridge",
37
- 10: "Ironing",
38
- 11: "Prime"
39
- }, dt = [
40
- [0.9, 0.26, 0.3],
41
- [0.27, 0.6, 0.93],
42
- [0.36, 0.78, 0.42],
43
- [0.98, 0.72, 0.2],
44
- [0.72, 0.42, 0.9],
45
- [0.2, 0.78, 0.8],
46
- [0.95, 0.5, 0.72],
47
- [0.6, 0.6, 0.64]
48
- ];
49
- function St(t) {
50
- const e = /^#?([0-9a-f]{6})$/i.exec(String(t ?? "").trim());
51
- if (!e) return [0.5, 0.5, 0.5];
52
- const n = parseInt(e[1], 16);
53
- return [(n >> 16 & 255) / 255, (n >> 8 & 255) / 255, (n & 255) / 255];
54
- }
55
- function et(t) {
56
- const e = (n) => Math.max(0, Math.min(255, Math.round((Number(n) || 0) * 255)));
57
- return e(t?.[0]) * 65536 + e(t?.[1]) * 256 + e(t?.[2]);
58
- }
59
- const At = [
60
- [0.043, 0.173, 0.478],
61
- [0.055, 0.325, 0.639],
62
- [0.067, 0.478, 0.8],
63
- [0.078, 0.631, 0.961],
64
- [0.118, 0.749, 0.804],
65
- [0.157, 0.867, 0.647],
66
- [0.376, 0.902, 0.4],
67
- [0.667, 0.898, 0.157],
68
- [0.988, 0.976, 0.012],
69
- [0.988, 0.663, 0.012],
70
- [0.58, 0.149, 0.086]
71
- ];
72
- function Nt(t, e, n, r = At) {
73
- const o = r.length - 1;
74
- if (o < 0) return [0, 0, 0];
75
- if (!Number.isFinite(t) || !Number.isFinite(e) || !Number.isFinite(n) || n <= e || t <= e) return r[0];
76
- if (t >= n) return r[o];
77
- const i = (t - e) / (n - e) * o, f = Math.min(o - 1, Math.floor(i)), u = i - f, l = r[f], h = r[f + 1];
78
- return [l[0] + (h[0] - l[0]) * u, l[1] + (h[1] - l[1]) * u, l[2] + (h[2] - l[2]) * u];
79
- }
80
- const nt = 8, It = 0.2, bt = 15, kt = 4, ot = {};
81
- for (const t of Object.keys(_)) ot[t] = et(_[t]);
82
- function Pt(t) {
1
+ import { a as V, b as Mt, p as ot, h as Nt, T as bt, r as St, D as It } from "./toolpath_palette-B8xEl-qa.js";
2
+ import { b as kt, a as Tt } from "./viewer_defaults-B7UUZ582.js";
3
+ import { r as gt, S as nt, R as et, t as Pt } from "./toolpath_encoding-BuYs95qZ.js";
4
+ import { T as Vt } from "./theme-2oyfMuvf.js";
5
+ const rt = {};
6
+ for (const t of Object.keys(V)) rt[t] = ot(V[t]);
7
+ function _t(t) {
83
8
  const e = new Float32Array(t.length);
84
9
  for (let n = 0; n < t.length; n++) {
85
- const r = Number(t[n]?.z) || 0, o = n > 0 && Number(t[n - 1]?.z) || 0, i = n > 0 ? r - o : r;
86
- e[n] = i > 1e-6 ? i : It;
10
+ const r = Number(t[n]?.z) || 0, o = n > 0 && Number(t[n - 1]?.z) || 0, s = n > 0 ? r - o : r;
11
+ e[n] = s > 1e-6 ? s : Tt;
87
12
  }
88
13
  return e;
89
14
  }
90
- const rt = (t) => t?.paths?.length ? t.paths : null, gt = (t) => {
91
- const e = rt(t);
15
+ const it = (t) => t?.paths?.length ? t.paths : null, wt = (t) => {
16
+ const e = it(t);
92
17
  return e ? Math.floor(e.length / nt) : 0;
93
18
  };
94
- function Vt(t, e) {
95
- const n = Array.isArray(t) ? t : [], r = n.length, o = Number(e) > 0 ? Number(e) : 0.4, i = Pt(n), f = new Uint32Array(r + 1), u = new Uint32Array(r + 1), l = new Uint32Array(r + 1);
96
- let h = 0, c = 0, m = 0;
97
- for (let p = 0; p < r; p++) {
98
- const U = rt(n[p]), w = gt(n[p]);
99
- for (let G = 0; G < w; G++)
100
- U[G * nt + 3] & bt ? h++ : c++;
101
- m += w, f[p + 1] = h, u[p + 1] = c, l[p + 1] = m;
19
+ function jt(t, e) {
20
+ const n = Array.isArray(t) ? t : [], r = n.length, o = Number(e) > 0 ? Number(e) : kt, s = _t(n), f = new Uint32Array(r + 1), h = new Uint32Array(r + 1), c = new Uint32Array(r + 1);
21
+ let y = 0, l = 0, u = 0;
22
+ for (let v = 0; v < r; v++) {
23
+ const U = it(n[v]), w = wt(n[v]);
24
+ for (let D = 0; D < w; D++)
25
+ gt(U[D * nt + 3]) === et.TRAVEL ? l++ : y++;
26
+ u += w, f[v + 1] = y, h[v + 1] = l, c[v + 1] = u;
102
27
  }
103
- const s = h * 2, b = new Float32Array(s * 4), L = new Float32Array(s * 4), y = new Uint32Array(s * 2), O = new Uint8Array(s), M = new Uint8Array(s), z = new Float32Array(s), S = new Float32Array(s), B = new Int32Array(s), g = new Float32Array(c * 6), C = new Float32Array(m * 3), a = new Uint8Array(m), v = new Float64Array(16);
104
- let A = !1, N = 0, I = 1 / 0, P = 1 / 0, V = 1 / 0, J = -1 / 0, Q = -1 / 0, R = -1 / 0, x = 0, st = 0, at = 0, W = 0;
105
- for (let p = 0; p < r; p++) {
106
- const U = n[p], w = rt(U), G = gt(U), lt = U?.widths, E = i[p], ct = E / 2;
107
- for (let X = 0; X < G; X++) {
108
- const k = X * nt, Z = w[k], q = w[k + 1], $ = w[k + 2], D = w[k + 4], Y = w[k + 5], H = w[k + 6], ft = w[k + 3] | 0, K = ft & bt, Lt = ft >>> kt;
109
- if (Number.isFinite(Z + q + $ + D + Y + H) || (A = !0), a[W] = K === 0 ? 0 : 1, C[W * 3] = D, C[W * 3 + 1] = Y, C[W * 3 + 2] = H, W++, K === 0) {
110
- const d = at * 6;
111
- g[d] = Z, g[d + 1] = q, g[d + 2] = $, g[d + 3] = D, g[d + 4] = Y, g[d + 5] = H, at++;
28
+ const i = y * 2, b = new Float32Array(i * 4), x = new Float32Array(i * 4), p = new Uint32Array(i * 2), _ = new Uint8Array(i), M = new Uint8Array(i), O = new Float32Array(i), N = new Float32Array(i), z = new Int32Array(i), g = new Float32Array(l * 6), C = new Float32Array(u * 3), a = new Uint8Array(u), m = new Float64Array(16);
29
+ let A = !1, S = 0, I = 1 / 0, T = 1 / 0, W = 1 / 0, J = -1 / 0, Q = -1 / 0, $ = -1 / 0, L = 0, st = 0, lt = 0, B = 0;
30
+ for (let v = 0; v < r; v++) {
31
+ const U = n[v], w = it(U), D = wt(U), ct = U?.widths, E = s[v], ft = E / 2;
32
+ for (let R = 0; R < D; R++) {
33
+ const k = R * nt, X = w[k], Z = w[k + 1], q = w[k + 2], G = w[k + 4], Y = w[k + 5], H = w[k + 6], ut = w[k + 3] | 0, j = gt(ut), xt = Pt(ut);
34
+ if (Number.isFinite(X + Z + q + G + Y + H) || (A = !0), a[B] = j === et.TRAVEL ? 0 : 1, C[B * 3] = G, C[B * 3 + 1] = Y, C[B * 3 + 2] = H, B++, j === et.TRAVEL) {
35
+ const d = lt * 6;
36
+ g[d] = X, g[d + 1] = Z, g[d + 2] = q, g[d + 3] = G, g[d + 4] = Y, g[d + 5] = H, lt++;
112
37
  continue;
113
38
  }
114
- const tt = lt ? Number(lt[X]) : NaN, ut = Number.isFinite(tt) && tt > 0 ? tt : o, ht = D - Z, mt = Y - q, Ct = Math.atan2(mt, ht), vt = Math.hypot(ht, mt, H - $);
115
- Number.isFinite(vt) && (v[K] += vt);
116
- const Ft = ot[K] ?? ot[1];
117
- for (const [d, T, yt] of [[Z, q, $], [D, Y, H]]) {
118
- const F = x * 4;
119
- b[F] = d, b[F + 1] = T, b[F + 2] = yt - ct, b[F + 3] = 0, L[F] = E, L[F + 1] = ut, L[F + 2] = Ct, L[F + 3] = Ft, y[x * 2] = st, y[x * 2 + 1] = p, O[x] = K, M[x] = Lt, z[x] = ut, S[x] = E, B[x] = p, x++;
120
- const j = yt - ct;
121
- d < I && (I = d), d > J && (J = d), T < P && (P = T), T > Q && (Q = T), j < V && (V = j), j > R && (R = j);
122
- const pt = Math.max(Math.abs(d), Math.abs(T), Math.abs(j));
123
- pt > N && (N = pt);
39
+ const tt = ct ? Number(ct[R]) : NaN, mt = Number.isFinite(tt) && tt > 0 ? tt : o, ht = G - X, pt = Y - Z, Ct = Math.atan2(pt, ht), vt = Math.hypot(ht, pt, H - q);
40
+ Number.isFinite(vt) && (m[j] += vt);
41
+ const Ft = rt[j] ?? rt[1];
42
+ for (const [d, P, yt] of [[X, Z, q], [G, Y, H]]) {
43
+ const F = L * 4;
44
+ b[F] = d, b[F + 1] = P, b[F + 2] = yt - ft, b[F + 3] = 0, x[F] = E, x[F + 1] = mt, x[F + 2] = Ct, x[F + 3] = Ft, p[L * 2] = st, p[L * 2 + 1] = v, _[L] = j, M[L] = xt, O[L] = mt, N[L] = E, z[L] = v, L++;
45
+ const K = yt - ft;
46
+ d < I && (I = d), d > J && (J = d), P < T && (T = P), P > Q && (Q = P), K < W && (W = K), K > $ && ($ = K);
47
+ const dt = Math.max(Math.abs(d), Math.abs(P), Math.abs(K));
48
+ dt > S && (S = dt);
124
49
  }
125
50
  st++;
126
51
  }
127
52
  }
128
- const xt = s > 0 && Number.isFinite(I) ? { min: [I, P, V], max: [J, Q, R] } : null;
53
+ const Lt = i > 0 && Number.isFinite(I) ? { min: [I, T, W], max: [J, Q, $] } : null;
129
54
  return {
130
55
  position: b,
131
- hwa: L,
132
- segIndex: y,
133
- nV: s,
134
- nSeg: h,
56
+ hwa: x,
57
+ segIndex: p,
58
+ nV: i,
59
+ nSeg: y,
135
60
  layerSegPrefix: f,
136
61
  travelPos: g,
137
- travelPrefix: u,
138
- nTrav: c,
62
+ travelPrefix: h,
63
+ nTrav: l,
139
64
  movePos: C,
140
65
  moveKind: a,
141
- movePrefix: l,
66
+ movePrefix: c,
142
67
  layerCount: r,
143
- maxAbs: N,
68
+ maxAbs: S,
144
69
  hasNaN: A,
145
- typeLengths: v,
146
- bbox: xt,
147
- meta: { vType: O, vTool: M, vWidth: z, vHeight: S, vLayer: B }
70
+ typeLengths: m,
71
+ bbox: Lt,
72
+ meta: { vType: _, vTool: M, vWidth: O, vHeight: N, vLayer: z }
148
73
  };
149
74
  }
150
- function Wt(t) {
75
+ function Kt(t) {
151
76
  const e = t ?? [];
152
77
  let n = 0;
153
78
  for (let o = 0; o < 16; o++) n += Number(e[o]) || 0;
154
79
  if (n <= 0) return [];
155
80
  const r = [];
156
81
  for (let o = 0; o < 16; o++) {
157
- const i = Number(e[o]) || 0;
158
- i <= 0 || r.push({ type: o, label: Mt[o] ?? String(o), pct: i / n * 100, color: _[o] ?? _[1] });
82
+ const s = Number(e[o]) || 0;
83
+ s <= 0 || r.push({ type: o, label: Mt[o] ?? String(o), pct: s / n * 100, color: V[o] ?? V[1] });
159
84
  }
160
- return r.sort((o, i) => i.pct - o.pct);
85
+ return r.sort((o, s) => s.pct - o.pct);
161
86
  }
162
- const it = (t, e) => e >= 0 && e < t.layerCount ? t.movePrefix[e + 1] - t.movePrefix[e] : 0;
163
- function Ut(t, e) {
164
- return it(t, e);
87
+ const at = (t, e) => e >= 0 && e < t.layerCount ? t.movePrefix[e + 1] - t.movePrefix[e] : 0;
88
+ function Rt(t, e) {
89
+ return at(t, e);
165
90
  }
166
- function Gt(t, e, n) {
91
+ function Xt(t, e, n) {
167
92
  const r = Math.min(n, t.layerCount - 1);
168
- for (let o = r; o >= e; o--) if (it(t, o) > 0) return o;
93
+ for (let o = r; o >= e; o--) if (at(t, o) > 0) return o;
169
94
  return e;
170
95
  }
171
- function Dt(t, e, n) {
172
- const r = it(t, e), o = Math.max(0, Math.min(Number(n) || 0, r)), i = e >= 0 && e < t.layerCount ? t.movePrefix[e] : 0;
173
- let f = 0, u = 0;
174
- for (let h = 0; h < o; h++)
175
- t.moveKind[i + h] === 0 ? u++ : f++;
96
+ function Zt(t, e, n) {
97
+ const r = at(t, e), o = Math.max(0, Math.min(Number(n) || 0, r)), s = e >= 0 && e < t.layerCount ? t.movePrefix[e] : 0;
98
+ let f = 0, h = 0;
99
+ for (let y = 0; y < o; y++)
100
+ t.moveKind[s + y] === 0 ? h++ : f++;
176
101
  if (o === 0) return { point: null, segCount: 0, travCount: 0, onTravel: !1 };
177
- const l = i + o - 1;
102
+ const c = s + o - 1;
178
103
  return {
179
- point: [t.movePos[l * 3], t.movePos[l * 3 + 1], t.movePos[l * 3 + 2]],
104
+ point: [t.movePos[c * 3], t.movePos[c * 3 + 1], t.movePos[c * 3 + 2]],
180
105
  segCount: f,
181
- travCount: u,
182
- onTravel: t.moveKind[l] === 0
106
+ travCount: h,
107
+ onTravel: t.moveKind[c] === 0
183
108
  };
184
109
  }
185
- const wt = [
110
+ const At = [
186
111
  { key: "feature", label: "Feature type", cont: !1, unit: "" },
187
112
  { key: "speed", label: "Speed", cont: !0, unit: "mm/s" },
188
113
  { key: "height", label: "Layer Height", cont: !0, unit: "mm" },
@@ -194,8 +119,8 @@ const wt = [
194
119
  // extruder index is a label, and a heatmap over it would imply tool 2 sits "between" tools 1 and 3.
195
120
  { key: "filament", label: "Filament", cont: !1, unit: "" }
196
121
  ];
197
- function Tt(t, e, n, r) {
198
- const o = e.vType[n], i = e.vLayer[n], f = i === 0;
122
+ function Ot(t, e, n, r) {
123
+ const o = e.vType[n], s = e.vLayer[n], f = s === 0;
199
124
  switch (t) {
200
125
  case "height":
201
126
  return e.vHeight[n];
@@ -204,37 +129,37 @@ function Tt(t, e, n, r) {
204
129
  case "speed":
205
130
  return f ? r.firstLayerSpeed : r.speedByType[o] ?? r.speedByType[1];
206
131
  case "fan":
207
- return i < r.closeFanLayers ? 0 : o === 9 ? 100 : r.fanNormal;
132
+ return s < r.closeFanLayers ? 0 : o === 9 ? 100 : r.fanNormal;
208
133
  case "temp":
209
134
  return f ? r.tempFirst : r.tempNormal;
210
135
  default:
211
136
  return 0;
212
137
  }
213
138
  }
214
- function Yt(t, e, n) {
215
- const { meta: r, nV: o } = t, i = new Float32Array(o * 4), f = wt.find((c) => c.key === e) || wt[0];
139
+ function qt(t, e, n) {
140
+ const { meta: r, nV: o } = t, s = new Float32Array(o * 4), f = At.find((l) => l.key === e) || At[0];
216
141
  if (!f.cont) {
217
- const c = (n?.toolColors ?? []).map(St), m = f.key === "filament" ? (s) => {
218
- const b = r.vTool ? r.vTool[s] : 0;
219
- return c[b] || dt[b % dt.length];
220
- } : (s) => _[r.vType[s]] || _[1];
221
- for (let s = 0; s < o; s++) i[s * 4] = et(m(s));
222
- return { color: i, min: 0, max: 0, viewType: e, label: f.label, unit: f.unit, cont: !1 };
142
+ const l = (n?.toolColors ?? []).map((i) => i && Nt(i)), u = f.key === "filament" ? (i) => {
143
+ const b = r.vTool ? r.vTool[i] : 0;
144
+ return l[b] || bt[b % bt.length];
145
+ } : (i) => V[r.vType[i]] || V[1];
146
+ for (let i = 0; i < o; i++) s[i * 4] = ot(u(i));
147
+ return { color: s, min: 0, max: 0, viewType: e, label: f.label, unit: f.unit, cont: !1 };
223
148
  }
224
- let u = 1 / 0, l = -1 / 0;
225
- const h = new Float32Array(o);
226
- for (let c = 0; c < o; c++) {
227
- const m = Tt(e, r, c, n), s = Number.isFinite(m) ? m : 0;
228
- h[c] = s, s < u && (u = s), s > l && (l = s);
149
+ let h = 1 / 0, c = -1 / 0;
150
+ const y = new Float32Array(o);
151
+ for (let l = 0; l < o; l++) {
152
+ const u = Ot(e, r, l, n), i = Number.isFinite(u) ? u : 0;
153
+ y[l] = i, i < h && (h = i), i > c && (c = i);
229
154
  }
230
- Number.isFinite(u) || (u = 0, l = 1);
231
- for (let c = 0; c < o; c++) {
232
- const m = Nt(h[c], u, l, At);
233
- i[c * 4] = et(m);
155
+ Number.isFinite(h) || (h = 0, c = 1);
156
+ for (let l = 0; l < o; l++) {
157
+ const u = St(y[l], h, c, It);
158
+ s[l * 4] = ot(u);
234
159
  }
235
- return { color: i, min: u, max: l, viewType: e, label: f.label, unit: f.unit, cont: !0 };
160
+ return { color: s, min: h, max: c, viewType: e, label: f.label, unit: f.unit, cont: !0 };
236
161
  }
237
- const _t = `
162
+ const zt = `
238
163
  precision highp float;
239
164
 
240
165
  uniform mat4 projectionMatrix;
@@ -294,7 +219,7 @@ void main() {
294
219
  vColor = unpackColor(iColor);
295
220
  gl_Position = projectionMatrix * modelViewMatrix * vec4(world, 1.0);
296
221
  }
297
- `, Ot = `
222
+ `, Wt = `
298
223
  precision highp float;
299
224
 
300
225
  in vec3 vColor;
@@ -310,7 +235,7 @@ void main() {
310
235
  float lambert = max(dot(n, normalize(vec3(0.35, 0.35, 1.0))), 0.0);
311
236
  fragColor = vec4(vColor * (0.55 + 0.45 * lambert), 1.0);
312
237
  }
313
- `, zt = new Float32Array([
238
+ `, Bt = new Float32Array([
314
239
  0,
315
240
  0,
316
241
  0,
@@ -329,44 +254,44 @@ void main() {
329
254
  1,
330
255
  3
331
256
  // end ring
332
- ]), Bt = (() => {
257
+ ]), Ut = (() => {
333
258
  const t = [];
334
259
  for (let e = 0; e < 4; e++) {
335
- const n = e, r = (e + 1) % 4, o = 4 + (e + 1) % 4, i = 4 + e;
336
- t.push(n, r, o, n, o, i);
260
+ const n = e, r = (e + 1) % 4, o = 4 + (e + 1) % 4, s = 4 + e;
261
+ t.push(n, r, o, n, o, s);
337
262
  }
338
263
  return t;
339
264
  })();
340
- function Ht(t, e) {
341
- const { nSeg: n, nV: r, position: o, hwa: i, travelPos: f, travelPrefix: u, layerCount: l, meta: h } = e, c = new Float32Array(n * 3), m = new Float32Array(n * 3), s = new Float32Array(n * 2), b = new Float32Array(n), L = new Float32Array(n);
265
+ function Jt(t, e) {
266
+ const { nSeg: n, nV: r, position: o, hwa: s, travelPos: f, travelPrefix: h, layerCount: c, meta: y } = e, l = new Float32Array(n * 3), u = new Float32Array(n * 3), i = new Float32Array(n * 2), b = new Float32Array(n), x = new Float32Array(n);
342
267
  for (let a = 0; a < n; a++) {
343
- const v = a * 2 * 4, A = (a * 2 + 1) * 4;
344
- c[a * 3] = o[v], c[a * 3 + 1] = o[v + 1], c[a * 3 + 2] = o[v + 2], m[a * 3] = o[A], m[a * 3 + 1] = o[A + 1], m[a * 3 + 2] = o[A + 2], s[a * 2] = i[v], s[a * 2 + 1] = i[v + 1], b[a] = i[v + 3], L[a] = h.vLayer[a * 2];
268
+ const m = a * 2 * 4, A = (a * 2 + 1) * 4;
269
+ l[a * 3] = o[m], l[a * 3 + 1] = o[m + 1], l[a * 3 + 2] = o[m + 2], u[a * 3] = o[A], u[a * 3 + 1] = o[A + 1], u[a * 3 + 2] = o[A + 2], i[a * 2] = s[m], i[a * 2 + 1] = s[m + 1], b[a] = s[m + 3], x[a] = y.vLayer[a * 2];
345
270
  }
346
- const y = new t.InstancedBufferGeometry();
347
- y.setAttribute("tpl", new t.BufferAttribute(zt, 2)), y.setIndex(Bt), y.setAttribute("iStart", new t.InstancedBufferAttribute(c, 3)), y.setAttribute("iEnd", new t.InstancedBufferAttribute(m, 3)), y.setAttribute("iHW", new t.InstancedBufferAttribute(s, 2));
348
- const O = new t.InstancedBufferAttribute(b, 1);
349
- y.setAttribute("iColor", O), y.setAttribute("iLayer", new t.InstancedBufferAttribute(L, 1)), y.instanceCount = n, y.boundingSphere = new t.Sphere(new t.Vector3(0, 0, 0), (e.maxAbs || 1) * 2);
271
+ const p = new t.InstancedBufferGeometry();
272
+ p.setAttribute("tpl", new t.BufferAttribute(Bt, 2)), p.setIndex(Ut), p.setAttribute("iStart", new t.InstancedBufferAttribute(l, 3)), p.setAttribute("iEnd", new t.InstancedBufferAttribute(u, 3)), p.setAttribute("iHW", new t.InstancedBufferAttribute(i, 2));
273
+ const _ = new t.InstancedBufferAttribute(b, 1);
274
+ p.setAttribute("iColor", _), p.setAttribute("iLayer", new t.InstancedBufferAttribute(x, 1)), p.instanceCount = n, p.boundingSphere = new t.Sphere(new t.Vector3(0, 0, 0), (e.maxAbs || 1) * 2);
350
275
  const M = new t.RawShaderMaterial({
351
- vertexShader: _t,
352
- fragmentShader: Ot,
276
+ vertexShader: zt,
277
+ fragmentShader: Wt,
353
278
  glslVersion: t.GLSL3,
354
279
  side: t.DoubleSide,
355
- uniforms: { uLayerLo: { value: 0 }, uLayerHi: { value: Math.max(0, l - 1) } }
356
- }), z = new t.Mesh(y, M);
357
- z.frustumCulled = !1;
358
- const S = new t.BufferGeometry();
359
- S.setAttribute("position", new t.BufferAttribute(f, 3));
360
- const B = new t.LineBasicMaterial({ color: 5923440, transparent: !0, opacity: 0.6 }), g = new t.LineSegments(S, B);
280
+ uniforms: { uLayerLo: { value: 0 }, uLayerHi: { value: Math.max(0, c - 1) } }
281
+ }), O = new t.Mesh(p, M);
282
+ O.frustumCulled = !1;
283
+ const N = new t.BufferGeometry();
284
+ N.setAttribute("position", new t.BufferAttribute(f, 3));
285
+ const z = new t.LineBasicMaterial({ color: Vt.travel, transparent: !0, opacity: 0.6 }), g = new t.LineSegments(N, z);
361
286
  g.visible = !1, g.frustumCulled = !1;
362
- const C = (a, v) => {
363
- const A = Math.max(0, l - 1), N = Math.max(0, Math.min(a | 0, A)), I = Math.max(N, Math.min(v | 0, A));
364
- M.uniforms.uLayerLo.value = N, M.uniforms.uLayerHi.value = I;
365
- const P = u[N] * 2, V = u[I + 1] * 2;
366
- S.setDrawRange(P, Math.max(0, V - P));
287
+ const C = (a, m) => {
288
+ const A = Math.max(0, c - 1), S = Math.max(0, Math.min(a | 0, A)), I = Math.max(S, Math.min(m | 0, A));
289
+ M.uniforms.uLayerLo.value = S, M.uniforms.uLayerHi.value = I;
290
+ const T = h[S] * 2, W = h[I + 1] * 2;
291
+ N.setDrawRange(T, Math.max(0, W - T));
367
292
  };
368
- return C(0, l - 1), {
369
- mesh: z,
293
+ return C(0, c - 1), {
294
+ mesh: O,
370
295
  travLines: g,
371
296
  setLayerRange: C,
372
297
  setVisibleLayers: (a) => C(0, (a | 0) - 1),
@@ -377,32 +302,32 @@ function Ht(t, e) {
377
302
  * takes the colour of its first vertex; the two agree, since a segment is one colour. */
378
303
  setColors: (a) => {
379
304
  if (!(!a || a.length < r * 4)) {
380
- for (let v = 0; v < n; v++) b[v] = a[v * 2 * 4];
381
- O.needsUpdate = !0;
305
+ for (let m = 0; m < n; m++) b[m] = a[m * 2 * 4];
306
+ _.needsUpdate = !0;
382
307
  }
383
308
  },
384
309
  dispose: () => {
385
- y.dispose(), M.dispose(), S.dispose(), B.dispose();
310
+ p.dispose(), M.dispose(), N.dispose(), z.dispose();
386
311
  },
387
312
  nSeg: n,
388
- layerCount: l
313
+ layerCount: c
389
314
  };
390
315
  }
391
316
  export {
392
- At as DEFAULT_RANGES_COLORS,
393
- dt as TOOL_COLOR,
394
- _ as TYPE_COLOR,
317
+ It as DEFAULT_RANGES_COLORS,
318
+ bt as TOOL_COLOR,
319
+ V as TYPE_COLOR,
395
320
  Mt as TYPE_LABEL,
396
- Bt as VERTEX_DATA,
397
- wt as VIEW_TYPES,
398
- Vt as buildSegmentData,
399
- Yt as computeColors,
400
- St as hexToRgb,
401
- Ut as layerMoveCount,
402
- Ht as makeToolpath,
403
- Dt as moveCursor,
404
- et as packColor,
405
- Nt as rangeColorAt,
406
- Wt as roleRatios,
407
- Gt as topMoveLayer
321
+ Ut as VERTEX_DATA,
322
+ At as VIEW_TYPES,
323
+ jt as buildSegmentData,
324
+ qt as computeColors,
325
+ Nt as hexToRgb,
326
+ Rt as layerMoveCount,
327
+ Jt as makeToolpath,
328
+ Zt as moveCursor,
329
+ ot as packColor,
330
+ St as rangeColorAt,
331
+ Kt as roleRatios,
332
+ Xt as topMoveLayer
408
333
  };
@@ -0,0 +1,23 @@
1
+ const o = 8;
2
+ const s = Object.freeze({
3
+ TRAVEL: 0,
4
+ WALL: 1,
5
+ SPARSE: 2,
6
+ SOLID: 3,
7
+ SKIRT: 4,
8
+ SUPPORT: 5,
9
+ RAFT: 6,
10
+ // the SLA stream puts its pad here, as it puts support trees on SUPPORT
11
+ GAP: 7,
12
+ THIN: 8,
13
+ BRIDGE: 9,
14
+ IRONING: 10,
15
+ PRIME: 11
16
+ }), S = (O, R) => O + (R << 4), T = (O) => O & 15, t = (O) => O >>> 4;
17
+ export {
18
+ s as R,
19
+ o as S,
20
+ S as e,
21
+ T as r,
22
+ t
23
+ };
@@ -0,0 +1,89 @@
1
+ import { U as f } from "./viewer_defaults-B7UUZ582.js";
2
+ const N = {
3
+ 0: [0.35, 0.38, 0.44],
4
+ // travel
5
+ 1: [0.98, 0.45, 0.16],
6
+ // wall
7
+ 2: [0.36, 0.72, 0.94],
8
+ // sparse infill
9
+ 3: [0.2, 0.55, 0.86],
10
+ // solid infill
11
+ 4: [0.62, 0.66, 0.72],
12
+ // skirt / brim
13
+ 5: [0.5, 0.54, 0.6],
14
+ // support
15
+ 6: [0.42, 0.46, 0.52],
16
+ // raft
17
+ 7: [0.96, 0.76, 0.22],
18
+ // gap fill
19
+ 8: [0.88, 0.55, 0.3],
20
+ // thin wall
21
+ 9: [0.3, 0.8, 0.62],
22
+ // bridge
23
+ 10: [0.8, 0.42, 0.72],
24
+ // ironing
25
+ 11: [0.58, 0.5, 0.88]
26
+ // prime tower
27
+ }, T = {
28
+ 0: "Travel",
29
+ 1: "Wall",
30
+ 2: "Sparse",
31
+ 3: "Solid",
32
+ 4: "Skirt",
33
+ 5: "Support",
34
+ 6: "Raft",
35
+ 7: "Gap",
36
+ 8: "Thin",
37
+ 9: "Bridge",
38
+ 10: "Ironing",
39
+ 11: "Prime"
40
+ }, b = [
41
+ [0.9, 0.26, 0.3],
42
+ [0.27, 0.6, 0.93],
43
+ [0.36, 0.78, 0.42],
44
+ [0.98, 0.72, 0.2],
45
+ [0.72, 0.42, 0.9],
46
+ [0.2, 0.78, 0.8],
47
+ [0.95, 0.5, 0.72],
48
+ [0.6, 0.6, 0.64]
49
+ ];
50
+ function m(r) {
51
+ const n = /^#?([0-9a-f]{6})$/i.exec(String(r ?? "").trim());
52
+ if (!n) return m(f);
53
+ const t = parseInt(n[1], 16);
54
+ return [(t >> 16 & 255) / 255, (t >> 8 & 255) / 255, (t & 255) / 255];
55
+ }
56
+ function R(r) {
57
+ const n = (t) => Math.max(0, Math.min(255, Math.round((Number(t) || 0) * 255)));
58
+ return n(r?.[0]) * 65536 + n(r?.[1]) * 256 + n(r?.[2]);
59
+ }
60
+ const O = [
61
+ [0.043, 0.173, 0.478],
62
+ [0.055, 0.325, 0.639],
63
+ [0.067, 0.478, 0.8],
64
+ [0.078, 0.631, 0.961],
65
+ [0.118, 0.749, 0.804],
66
+ [0.157, 0.867, 0.647],
67
+ [0.376, 0.902, 0.4],
68
+ [0.667, 0.898, 0.157],
69
+ [0.988, 0.976, 0.012],
70
+ [0.988, 0.663, 0.012],
71
+ [0.58, 0.149, 0.086]
72
+ ];
73
+ function S(r, n, t, i = O) {
74
+ const o = i.length - 1;
75
+ if (o < 0) return [0, 0, 0];
76
+ if (!Number.isFinite(r) || !Number.isFinite(n) || !Number.isFinite(t) || t <= n || r <= n) return i[0];
77
+ if (r >= t) return i[o];
78
+ const c = (r - n) / (t - n) * o, a = Math.min(o - 1, Math.floor(c)), u = c - a, s = i[a], e = i[a + 1];
79
+ return [s[0] + (e[0] - s[0]) * u, s[1] + (e[1] - s[1]) * u, s[2] + (e[2] - s[2]) * u];
80
+ }
81
+ export {
82
+ O as D,
83
+ b as T,
84
+ N as a,
85
+ T as b,
86
+ m as h,
87
+ R as p,
88
+ S as r
89
+ };
@@ -0,0 +1,28 @@
1
+ const a = Object.freeze({ width: 200, depth: 200 }), d = 0.42, s = 0.2, E = 1.75, c = "#888888", _ = 0.4, e = 16, t = Object.freeze([
2
+ "#6aa0dc",
3
+ "#e08a2b",
4
+ "#e0473b",
5
+ "#3bb0e0",
6
+ "#7ad14a",
7
+ "#b06ad1",
8
+ "#d1c34a",
9
+ "#4ad1a8",
10
+ "#d16a9a",
11
+ "#6a7ad1",
12
+ "#8fd16a",
13
+ "#d18f6a",
14
+ "#6ad1d1",
15
+ "#c74ad1",
16
+ "#a8a8a8",
17
+ "#4a6ad1"
18
+ ]);
19
+ export {
20
+ E as D,
21
+ e as M,
22
+ _ as S,
23
+ c as U,
24
+ s as a,
25
+ d as b,
26
+ a as c,
27
+ t as d
28
+ };