svelte-product-mockup 0.0.3 → 0.0.5

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/index.js CHANGED
@@ -1,162 +1,162 @@
1
1
  import "svelte/internal/disclose-version";
2
2
  import * as e from "svelte/internal/client";
3
3
  import { onMount as Te, tick as xt, onDestroy as kt, untrack as Ge } from "svelte";
4
- import { fade as Qe } from "svelte/transition";
4
+ import { fade as $e } from "svelte/transition";
5
5
  import { beforeNavigate as Mt, pushState as Tt } from "$app/navigation";
6
- import { browser as St } from "$app/environment";
7
- function Nt(r, a) {
8
- const t = new Uint8ClampedArray(r.data), { brightness: s, contrast: n, saturation: i, hue: l, exposure: f, gamma: h, shadows: w, highlights: d, vibrance: _, temperature: m, tint: T } = a;
6
+ import { browser as zt } from "$app/environment";
7
+ function St(o, n) {
8
+ const t = new Uint8ClampedArray(o.data), { brightness: a, contrast: r, saturation: s, hue: l, exposure: f, gamma: g, shadows: w, highlights: u, vibrance: h, temperature: m, tint: T } = n;
9
9
  for (let v = 0; v < t.length; v += 4) {
10
- let y = t[v], x = t[v + 1], I = t[v + 2];
11
- t[v + 3] !== 0 && (y = Ze(y, s), x = Ze(x, s), I = Ze(I, s), y = Oe(y, n), x = Oe(x, n), I = Oe(I, n), [y, x, I] = It(y, x, I, i), [y, x, I] = Ct(y, x, I, l), [y, x, I] = Pt(y, x, I, f), [y, x, I] = Rt(y, x, I, h), [y, x, I] = Wt(y, x, I, w, d), [y, x, I] = zt(y, x, I, _), [y, x, I] = Dt(y, x, I, m, T), t[v] = Le(y), t[v + 1] = Le(x), t[v + 2] = Le(I));
10
+ let y = t[v], x = t[v + 1], N = t[v + 2];
11
+ t[v + 3] !== 0 && (y = Be(y, a), x = Be(x, a), N = Be(N, a), y = Ee(y, r), x = Ee(x, r), N = Ee(N, r), [y, x, N] = Nt(y, x, N, s), [y, x, N] = It(y, x, N, l), [y, x, N] = Ct(y, x, N, f), [y, x, N] = Pt(y, x, N, g), [y, x, N] = Rt(y, x, N, w, u), [y, x, N] = jt(y, x, N, h), [y, x, N] = Wt(y, x, N, m, T), t[v] = Ze(y), t[v + 1] = Ze(x), t[v + 2] = Ze(N));
12
12
  }
13
- return new ImageData(t, r.width, r.height);
13
+ return new ImageData(t, o.width, o.height);
14
14
  }
15
- function Ze(r, a) {
16
- return r + a * 255;
15
+ function Be(o, n) {
16
+ return o + n * 255;
17
17
  }
18
- function Oe(r, a) {
19
- return 259 * (a * 255 + 255) / (255 * (259 - a * 255)) * (r - 128) + 128;
18
+ function Ee(o, n) {
19
+ return 259 * (n * 255 + 255) / (255 * (259 - n * 255)) * (o - 128) + 128;
20
20
  }
21
- function It(r, a, t, s) {
22
- const n = 0.299 * r + 0.587 * a + 0.114 * t, i = 1 + s;
21
+ function Nt(o, n, t, a) {
22
+ const r = 0.299 * o + 0.587 * n + 0.114 * t, s = 1 + a;
23
23
  return [
24
- n + i * (r - n),
25
- n + i * (a - n),
26
- n + i * (t - n)
24
+ r + s * (o - r),
25
+ r + s * (n - r),
26
+ r + s * (t - r)
27
27
  ];
28
28
  }
29
- function Ct(r, a, t, s) {
30
- const n = s * Math.PI / 180, i = Math.cos(n), l = Math.sin(n), f = [
31
- i + (1 - i) / 3,
32
- 1 / 3 * (1 - i) - Math.sqrt(1 / 3) * l,
33
- 1 / 3 * (1 - i) + Math.sqrt(1 / 3) * l,
34
- 1 / 3 * (1 - i) + Math.sqrt(1 / 3) * l,
35
- i + 1 / 3 * (1 - i),
36
- 1 / 3 * (1 - i) - Math.sqrt(1 / 3) * l,
37
- 1 / 3 * (1 - i) - Math.sqrt(1 / 3) * l,
38
- 1 / 3 * (1 - i) + Math.sqrt(1 / 3) * l,
39
- i + 1 / 3 * (1 - i)
29
+ function It(o, n, t, a) {
30
+ const r = a * Math.PI / 180, s = Math.cos(r), l = Math.sin(r), f = [
31
+ s + (1 - s) / 3,
32
+ 1 / 3 * (1 - s) - Math.sqrt(1 / 3) * l,
33
+ 1 / 3 * (1 - s) + Math.sqrt(1 / 3) * l,
34
+ 1 / 3 * (1 - s) + Math.sqrt(1 / 3) * l,
35
+ s + 1 / 3 * (1 - s),
36
+ 1 / 3 * (1 - s) - Math.sqrt(1 / 3) * l,
37
+ 1 / 3 * (1 - s) - Math.sqrt(1 / 3) * l,
38
+ 1 / 3 * (1 - s) + Math.sqrt(1 / 3) * l,
39
+ s + 1 / 3 * (1 - s)
40
40
  ];
41
41
  return [
42
- r * f[0] + a * f[1] + t * f[2],
43
- r * f[3] + a * f[4] + t * f[5],
44
- r * f[6] + a * f[7] + t * f[8]
42
+ o * f[0] + n * f[1] + t * f[2],
43
+ o * f[3] + n * f[4] + t * f[5],
44
+ o * f[6] + n * f[7] + t * f[8]
45
45
  ];
46
46
  }
47
- function Pt(r, a, t, s) {
48
- const n = Math.pow(2, s);
49
- return [r * n, a * n, t * n];
47
+ function Ct(o, n, t, a) {
48
+ const r = Math.pow(2, a);
49
+ return [o * r, n * r, t * r];
50
50
  }
51
- function Rt(r, a, t, s) {
52
- const n = 1 / s;
51
+ function Pt(o, n, t, a) {
52
+ const r = 1 / a;
53
53
  return [
54
- Math.pow(r / 255, n) * 255,
55
- Math.pow(a / 255, n) * 255,
56
- Math.pow(t / 255, n) * 255
54
+ Math.pow(o / 255, r) * 255,
55
+ Math.pow(n / 255, r) * 255,
56
+ Math.pow(t / 255, r) * 255
57
57
  ];
58
58
  }
59
- function Wt(r, a, t, s, n) {
60
- const i = 0.299 * r + 0.587 * a + 0.114 * t;
59
+ function Rt(o, n, t, a, r) {
60
+ const s = 0.299 * o + 0.587 * n + 0.114 * t;
61
61
  let l = 1;
62
- return i < 128 ? l = 1 + s : l = 1 + n, [r * l, a * l, t * l];
62
+ return s < 128 ? l = 1 + a : l = 1 + r, [o * l, n * l, t * l];
63
63
  }
64
- function zt(r, a, t, s) {
65
- const n = Math.max(r, a, t), i = Math.min(r, a, t), l = n === 0 ? 0 : (n - i) / n, f = 1 + s * (1 - l);
66
- return [r * f, a * f, t * f];
64
+ function jt(o, n, t, a) {
65
+ const r = Math.max(o, n, t), s = Math.min(o, n, t), l = r === 0 ? 0 : (r - s) / r, f = 1 + a * (1 - l);
66
+ return [o * f, n * f, t * f];
67
67
  }
68
- function Dt(r, a, t, s, n) {
69
- let i = r, l = a, f = t;
70
- return s > 0 ? (i += s * 0.1, f -= s * 0.1) : (i += s * 0.05, f -= s * 0.05), n > 0 ? (i += n * 0.1, l -= n * 0.05) : (i += n * 0.05, l -= n * 0.1), [i, l, f];
68
+ function Wt(o, n, t, a, r) {
69
+ let s = o, l = n, f = t;
70
+ return a > 0 ? (s += a * 0.1, f -= a * 0.1) : (s += a * 0.05, f -= a * 0.05), r > 0 ? (s += r * 0.1, l -= r * 0.05) : (s += r * 0.05, l -= r * 0.1), [s, l, f];
71
71
  }
72
- function Le(r) {
73
- return Math.max(0, Math.min(255, r));
72
+ function Ze(o) {
73
+ return Math.max(0, Math.min(255, o));
74
74
  }
75
- function Xt(r, a, t) {
76
- const s = r / a;
75
+ function Dt(o, n, t) {
76
+ const a = o / n;
77
77
  switch (t.mode) {
78
78
  case "scale":
79
- const n = t.scale ?? 1;
79
+ const r = t.scale ?? 1;
80
80
  return {
81
- width: r * n,
82
- height: a * n,
81
+ width: o * r,
82
+ height: n * r,
83
83
  sourceX: 0,
84
84
  sourceY: 0,
85
- sourceWidth: r,
86
- sourceHeight: a
85
+ sourceWidth: o,
86
+ sourceHeight: n
87
87
  };
88
88
  case "px":
89
- let i = t.width ?? r, l = t.height ?? a;
89
+ let s = t.width ?? o, l = t.height ?? n;
90
90
  if (t.maintainAspectRatio) {
91
- if (i && !l)
92
- l = i / s;
93
- else if (l && !i)
94
- i = l * s;
95
- else if (i && l) {
96
- const C = Math.min(i / r, l / a);
97
- i = r * C, l = a * C;
91
+ if (s && !l)
92
+ l = s / a;
93
+ else if (l && !s)
94
+ s = l * a;
95
+ else if (s && l) {
96
+ const I = Math.min(s / o, l / n);
97
+ s = o * I, l = n * I;
98
98
  }
99
99
  }
100
- return t.minWidth && (i = Math.max(i, t.minWidth)), t.maxWidth && (i = Math.min(i, t.maxWidth)), t.minHeight && (l = Math.max(l, t.minHeight)), t.maxHeight && (l = Math.min(l, t.maxHeight)), {
101
- width: i,
100
+ return t.minWidth && (s = Math.max(s, t.minWidth)), t.maxWidth && (s = Math.min(s, t.maxWidth)), t.minHeight && (l = Math.max(l, t.minHeight)), t.maxHeight && (l = Math.min(l, t.maxHeight)), {
101
+ width: s,
102
102
  height: l,
103
103
  sourceX: 0,
104
104
  sourceY: 0,
105
- sourceWidth: r,
106
- sourceHeight: a
105
+ sourceWidth: o,
106
+ sourceHeight: n
107
107
  };
108
108
  case "fit":
109
- const f = t.width ?? r, h = t.height ?? a, w = Math.min(f / r, h / a);
109
+ const f = t.width ?? o, g = t.height ?? n, w = Math.min(f / o, g / n);
110
110
  return {
111
- width: r * w,
112
- height: a * w,
111
+ width: o * w,
112
+ height: n * w,
113
113
  sourceX: 0,
114
114
  sourceY: 0,
115
- sourceWidth: r,
116
- sourceHeight: a
115
+ sourceWidth: o,
116
+ sourceHeight: n
117
117
  };
118
118
  case "fill":
119
- const d = t.width ?? r, _ = t.height ?? a, m = Math.max(d / r, _ / a), T = d / m, v = _ / m;
119
+ const u = t.width ?? o, h = t.height ?? n, m = Math.max(u / o, h / n), T = u / m, v = h / m;
120
120
  return {
121
- width: d,
122
- height: _,
123
- sourceX: (r - T) / 2,
124
- sourceY: (a - v) / 2,
121
+ width: u,
122
+ height: h,
123
+ sourceX: (o - T) / 2,
124
+ sourceY: (n - v) / 2,
125
125
  sourceWidth: T,
126
126
  sourceHeight: v
127
127
  };
128
128
  case "cover":
129
- const y = t.width ?? r, x = t.height ?? a;
129
+ const y = t.width ?? o, x = t.height ?? n;
130
130
  return {
131
131
  width: y,
132
132
  height: x,
133
133
  sourceX: 0,
134
134
  sourceY: 0,
135
- sourceWidth: r,
136
- sourceHeight: a
135
+ sourceWidth: o,
136
+ sourceHeight: n
137
137
  };
138
138
  case "contain":
139
- const I = t.width ?? r, b = t.height ?? a, k = Math.min(I / r, b / a);
139
+ const N = t.width ?? o, _ = t.height ?? n, k = Math.min(N / o, _ / n);
140
140
  return {
141
- width: r * k,
142
- height: a * k,
141
+ width: o * k,
142
+ height: n * k,
143
143
  sourceX: 0,
144
144
  sourceY: 0,
145
- sourceWidth: r,
146
- sourceHeight: a
145
+ sourceWidth: o,
146
+ sourceHeight: n
147
147
  };
148
148
  default:
149
149
  return {
150
- width: r,
151
- height: a,
150
+ width: o,
151
+ height: n,
152
152
  sourceX: 0,
153
153
  sourceY: 0,
154
- sourceWidth: r,
155
- sourceHeight: a
154
+ sourceWidth: o,
155
+ sourceHeight: n
156
156
  };
157
157
  }
158
158
  }
159
- const ie = {
159
+ const se = {
160
160
  scale: 1,
161
161
  translateX: 0,
162
162
  translateY: 0
@@ -171,7 +171,7 @@ const ie = {
171
171
  rotationX: 0,
172
172
  rotationY: 0,
173
173
  rotationZ: 0
174
- }, se = {
174
+ }, ae = {
175
175
  rotationX: 0,
176
176
  rotationY: 0,
177
177
  rotationZ: 0,
@@ -181,324 +181,324 @@ const ie = {
181
181
  rotationX: 0,
182
182
  rotationY: 0,
183
183
  rotationZ: 0
184
- }, $e = {
184
+ }, Qe = {
185
185
  type: "warp",
186
186
  shape: "none",
187
187
  enabled: !1,
188
188
  quality: 1,
189
- image: { ...ie },
189
+ image: { ...se },
190
190
  cylinder: { ...ce },
191
- plane: { ...se },
191
+ plane: { ...ae },
192
192
  sphere: { ...ke }
193
193
  };
194
- function Yt(r) {
195
- const t = new OffscreenCanvas(r.width, r.height).getContext("2d");
194
+ function Xt(o) {
195
+ const t = new OffscreenCanvas(o.width, o.height).getContext("2d");
196
196
  if (!t) throw new Error("Failed to create canvas context");
197
- return t.drawImage(r, 0, 0), t.getImageData(0, 0, r.width, r.height);
197
+ return t.drawImage(o, 0, 0), t.getImageData(0, 0, o.width, o.height);
198
198
  }
199
- function Bt(r, a, t) {
200
- const s = r.width, n = r.height, i = r.data;
201
- if (a < 0 || a >= s || t < 0 || t >= n)
199
+ function Yt(o, n, t) {
200
+ const a = o.width, r = o.height, s = o.data;
201
+ if (n < 0 || n >= a || t < 0 || t >= r)
202
202
  return null;
203
- const l = Math.floor(a), f = Math.floor(t), h = Math.min(l + 1, s - 1), w = Math.min(f + 1, n - 1), d = a - l, _ = t - f, m = (g, u) => {
204
- const p = (u * s + g) * 4;
203
+ const l = Math.floor(n), f = Math.floor(t), g = Math.min(l + 1, a - 1), w = Math.min(f + 1, r - 1), u = n - l, h = t - f, m = (b, d) => {
204
+ const p = (d * a + b) * 4;
205
205
  return {
206
- r: i[p],
207
- g: i[p + 1],
208
- b: i[p + 2],
209
- a: i[p + 3]
206
+ r: s[p],
207
+ g: s[p + 1],
208
+ b: s[p + 2],
209
+ a: s[p + 3]
210
210
  };
211
- }, T = m(l, f), v = m(h, f), y = m(l, w), x = m(h, w), I = (g, u, p) => g + (u - g) * p, b = I(I(T.r, v.r, d), I(y.r, x.r, d), _), k = I(I(T.g, v.g, d), I(y.g, x.g, d), _), C = I(I(T.b, v.b, d), I(y.b, x.b, d), _), S = I(I(T.a, v.a, d), I(y.a, x.a, d), _);
212
- return { r: b, g: k, b: C, a: S };
211
+ }, T = m(l, f), v = m(g, f), y = m(l, w), x = m(g, w), N = (b, d, p) => b + (d - b) * p, _ = N(N(T.r, v.r, u), N(y.r, x.r, u), h), k = N(N(T.g, v.g, u), N(y.g, x.g, u), h), I = N(N(T.b, v.b, u), N(y.b, x.b, u), h), z = N(N(T.a, v.a, u), N(y.a, x.a, u), h);
212
+ return { r: _, g: k, b: I, a: z };
213
213
  }
214
- function He(r, a, t, s, n, i, l, f, h, w) {
215
- const d = Yt(a), _ = w?.showDepthVis ?? !1, m = w?.maxZ ?? 500, T = h ?? {
216
- minX: -n / 2,
217
- minY: -i / 2,
218
- maxX: n / 2,
219
- maxY: i / 2
220
- }, v = T.maxX - T.minX, y = T.maxY - T.minY, x = Math.floor(v * l), I = Math.floor(y * l);
221
- if (x <= 0 || I <= 0) return;
222
- const b = new ImageData(x, I), k = b.data;
223
- for (let p = 0; p < I; p++)
224
- for (let o = 0; o < x; o++) {
225
- const c = T.minX + o / l, M = T.minY + p / l, N = f(c, M);
226
- if (!N || N.z <= 0)
214
+ function He(o, n, t, a, r, s, l, f, g, w) {
215
+ const u = Xt(n), h = w?.showDepthVis ?? !1, m = w?.maxZ ?? 500, T = g ?? {
216
+ minX: -r / 2,
217
+ minY: -s / 2,
218
+ maxX: r / 2,
219
+ maxY: s / 2
220
+ }, v = T.maxX - T.minX, y = T.maxY - T.minY, x = Math.floor(v * l), N = Math.floor(y * l);
221
+ if (x <= 0 || N <= 0) return;
222
+ const _ = new ImageData(x, N), k = _.data;
223
+ for (let p = 0; p < N; p++)
224
+ for (let i = 0; i < x; i++) {
225
+ const c = T.minX + i / l, M = T.minY + p / l, S = f(c, M);
226
+ if (!S || S.z <= 0)
227
227
  continue;
228
- const B = (p * x + o) * 4;
229
- if (_) {
230
- const J = Math.min(1, Math.max(0, N.z / m)), Z = Math.floor(J * 200 + 55);
231
- k[B] = Math.floor(Z * 0.3), k[B + 1] = Math.floor(Z * 0.6), k[B + 2] = Z, k[B + 3] = 200;
228
+ const Y = (p * x + i) * 4;
229
+ if (h) {
230
+ const J = Math.min(1, Math.max(0, S.z / m)), B = Math.floor(J * 200 + 55);
231
+ k[Y] = Math.floor(B * 0.3), k[Y + 1] = Math.floor(B * 0.6), k[Y + 2] = B, k[Y + 3] = 200;
232
232
  } else {
233
- const { u: J, v: Z } = N, U = Bt(d, J, Z);
234
- U && (k[B] = Math.round(U.r), k[B + 1] = Math.round(U.g), k[B + 2] = Math.round(U.b), k[B + 3] = Math.round(U.a));
233
+ const { u: J, v: B } = S, U = Yt(u, J, B);
234
+ U && (k[Y] = Math.round(U.r), k[Y + 1] = Math.round(U.g), k[Y + 2] = Math.round(U.b), k[Y + 3] = Math.round(U.a));
235
235
  }
236
236
  }
237
- const C = new OffscreenCanvas(x, I), S = C.getContext("2d");
238
- if (!S) return;
239
- S.putImageData(b, 0, 0);
240
- const g = t + T.minX, u = s + T.minY;
241
- l !== 1 ? r.drawImage(C, g, u, v, y) : r.drawImage(C, g, u);
237
+ const I = new OffscreenCanvas(x, N), z = I.getContext("2d");
238
+ if (!z) return;
239
+ z.putImageData(_, 0, 0);
240
+ const b = t + T.minX, d = a + T.minY;
241
+ l !== 1 ? o.drawImage(I, b, d, v, y) : o.drawImage(I, b, d);
242
242
  }
243
- function Ae(r, a, t, s = 20) {
244
- if (!("save" in r)) return;
245
- const n = r;
246
- n.save(), n.strokeStyle = "#00ff00", n.lineWidth = 2, n.beginPath(), n.moveTo(a - s, t), n.lineTo(a + s, t), n.stroke(), n.beginPath(), n.moveTo(a, t - s), n.lineTo(a, t + s), n.stroke(), n.fillStyle = "#00ff00", n.beginPath(), n.arc(a, t, 3, 0, Math.PI * 2), n.fill(), n.restore();
243
+ function Ae(o, n, t, a = 20) {
244
+ if (!("save" in o)) return;
245
+ const r = o;
246
+ r.save(), r.strokeStyle = "#00ff00", r.lineWidth = 2, r.beginPath(), r.moveTo(n - a, t), r.lineTo(n + a, t), r.stroke(), r.beginPath(), r.moveTo(n, t - a), r.lineTo(n, t + a), r.stroke(), r.fillStyle = "#00ff00", r.beginPath(), r.arc(n, t, 3, 0, Math.PI * 2), r.fill(), r.restore();
247
247
  }
248
- function re(r, a, t, s, n, i) {
249
- const l = Math.cos(s), f = Math.sin(s), h = Math.cos(n), w = Math.sin(n), d = Math.cos(i), _ = Math.sin(i);
250
- let m = r, T = a, v = t;
251
- if (i !== 0) {
248
+ function oe(o, n, t, a, r, s) {
249
+ const l = Math.cos(a), f = Math.sin(a), g = Math.cos(r), w = Math.sin(r), u = Math.cos(s), h = Math.sin(s);
250
+ let m = o, T = n, v = t;
251
+ if (s !== 0) {
252
252
  const y = m, x = T;
253
- m = y * d - x * _, T = y * _ + x * d;
253
+ m = y * u - x * h, T = y * h + x * u;
254
254
  }
255
- if (n !== 0) {
255
+ if (r !== 0) {
256
256
  const y = m, x = v;
257
- m = y * h + x * w, v = -y * w + x * h;
257
+ m = y * g + x * w, v = -y * w + x * g;
258
258
  }
259
- if (s !== 0) {
259
+ if (a !== 0) {
260
260
  const y = T, x = v;
261
261
  T = y * l - x * f, v = y * f + x * l;
262
262
  }
263
263
  return [m, T, v];
264
264
  }
265
- function Et(r, a, t, s, n, i) {
266
- const l = Math.cos(s), f = Math.sin(s), h = Math.cos(n), w = Math.sin(n), d = Math.cos(i), _ = Math.sin(i);
267
- let m = r, T = a, v = t;
268
- if (s !== 0) {
265
+ function qt(o, n, t, a, r, s) {
266
+ const l = Math.cos(a), f = Math.sin(a), g = Math.cos(r), w = Math.sin(r), u = Math.cos(s), h = Math.sin(s);
267
+ let m = o, T = n, v = t;
268
+ if (a !== 0) {
269
269
  const y = T, x = v;
270
270
  T = y * l + x * f, v = -y * f + x * l;
271
271
  }
272
- if (n !== 0) {
272
+ if (r !== 0) {
273
273
  const y = m, x = v;
274
- m = y * h - x * w, v = y * w + x * h;
274
+ m = y * g - x * w, v = y * w + x * g;
275
275
  }
276
- if (i !== 0) {
276
+ if (s !== 0) {
277
277
  const y = m, x = T;
278
- m = y * d + x * _, T = -y * _ + x * d;
278
+ m = y * u + x * h, T = -y * h + x * u;
279
279
  }
280
280
  return [m, T, v];
281
281
  }
282
- function Zt(r, a, t, s, n, i) {
283
- if (!("save" in r)) return;
284
- const l = r;
282
+ function Bt(o, n, t, a, r, s) {
283
+ if (!("save" in o)) return;
284
+ const l = o;
285
285
  l.save(), l.strokeStyle = "#ff6600", l.lineWidth = 1.5, l.setLineDash([4, 6]);
286
- const f = 50, h = 3;
287
- for (let w = -h; w <= h; w++) {
288
- const d = w * f, _ = [];
286
+ const f = 50, g = 3;
287
+ for (let w = -g; w <= g; w++) {
288
+ const u = w * f, h = [];
289
289
  for (let m = -10; m <= 10; m++) {
290
- const T = m * f, v = i(d, T);
291
- v && _.push({ x: a + v.x, y: t + v.y });
290
+ const T = m * f, v = s(u, T);
291
+ v && h.push({ x: n + v.x, y: t + v.y });
292
292
  }
293
- if (_.length > 1) {
294
- l.beginPath(), l.moveTo(_[0].x, _[0].y);
295
- for (let m = 1; m < _.length; m++)
296
- l.lineTo(_[m].x, _[m].y);
293
+ if (h.length > 1) {
294
+ l.beginPath(), l.moveTo(h[0].x, h[0].y);
295
+ for (let m = 1; m < h.length; m++)
296
+ l.lineTo(h[m].x, h[m].y);
297
297
  l.stroke();
298
298
  }
299
299
  }
300
- for (let w = -h; w <= h; w++) {
301
- const d = w * f, _ = [];
300
+ for (let w = -g; w <= g; w++) {
301
+ const u = w * f, h = [];
302
302
  for (let m = -10; m <= 10; m++) {
303
- const T = m * f, v = i(T, d);
304
- v && _.push({ x: a + v.x, y: t + v.y });
303
+ const T = m * f, v = s(T, u);
304
+ v && h.push({ x: n + v.x, y: t + v.y });
305
305
  }
306
- if (_.length > 1) {
307
- l.beginPath(), l.moveTo(_[0].x, _[0].y);
308
- for (let m = 1; m < _.length; m++)
309
- l.lineTo(_[m].x, _[m].y);
306
+ if (h.length > 1) {
307
+ l.beginPath(), l.moveTo(h[0].x, h[0].y);
308
+ for (let m = 1; m < h.length; m++)
309
+ l.lineTo(h[m].x, h[m].y);
310
310
  l.stroke();
311
311
  }
312
312
  }
313
313
  l.restore();
314
314
  }
315
- function Ot(r, a, t, s, n, i, l, f) {
316
- if (!("save" in r)) return;
317
- const h = r;
318
- h.save(), h.lineWidth = 2, h.setLineDash([6, 4]);
319
- const w = Math.sin(i);
320
- let d = 1 / 0, _ = -1 / 0;
321
- const m = (p, o, c) => {
322
- const M = o * w, N = f / (f + M);
315
+ function Et(o, n, t, a, r, s, l, f) {
316
+ if (!("save" in o)) return;
317
+ const g = o;
318
+ g.save(), g.lineWidth = 2, g.setLineDash([6, 4]);
319
+ const w = Math.sin(s);
320
+ let u = 1 / 0, h = -1 / 0;
321
+ const m = (p, i, c) => {
322
+ const M = i * w, S = f / (f + M);
323
323
  return {
324
- x: a + p * N,
325
- y: t + o * N,
324
+ x: n + p * S,
325
+ y: t + i * S,
326
326
  z: c
327
327
  };
328
- }, T = (p, o, c) => {
329
- const M = c - o;
328
+ }, T = (p, i, c) => {
329
+ const M = c - i;
330
330
  if (M < 1e-3) return "#ff6600";
331
- const N = (p - o) / M, B = Math.round(100 + N * 155), J = Math.round(30 + N * 70), Z = Math.round(0 + N * 0);
332
- return `rgb(${B},${J},${Z})`;
333
- }, v = 32, y = [], x = [], I = [], b = [], k = i > 0.01 ? -Math.PI / 2 : 0, C = i > 0.01 ? Math.PI / 2 : Math.PI * 2, S = i < -0.01 ? -Math.PI / 2 : 0, g = i < -0.01 ? Math.PI / 2 : Math.PI * 2;
331
+ const S = (p - i) / M, Y = Math.round(100 + S * 155), J = Math.round(30 + S * 70), B = Math.round(0 + S * 0);
332
+ return `rgb(${Y},${J},${B})`;
333
+ }, v = 32, y = [], x = [], N = [], _ = [], k = s > 0.01 ? -Math.PI / 2 : 0, I = s > 0.01 ? Math.PI / 2 : Math.PI * 2, z = s < -0.01 ? -Math.PI / 2 : 0, b = s < -0.01 ? Math.PI / 2 : Math.PI * 2;
334
334
  for (let p = 0; p <= v; p++) {
335
- const o = p / v, c = k + o * (C - k), M = Math.sin(c) * s, N = Math.cos(c) * s, B = -n / 2, [J, Z, U] = re(M, B, N, i, 0, l), z = m(J, Z, U);
336
- y.push(z), d = Math.min(d, U), _ = Math.max(_, U);
335
+ const i = p / v, c = k + i * (I - k), M = Math.sin(c) * a, S = Math.cos(c) * a, Y = -r / 2, [J, B, U] = oe(M, Y, S, s, 0, l), j = m(J, B, U);
336
+ y.push(j), u = Math.min(u, U), h = Math.max(h, U);
337
337
  }
338
338
  for (let p = 0; p <= v; p++) {
339
- const o = p / v, c = S + o * (g - S), M = Math.sin(c) * s, N = Math.cos(c) * s, B = n / 2, [J, Z, U] = re(M, B, N, i, 0, l), z = m(J, Z, U);
340
- x.push(z), d = Math.min(d, U), _ = Math.max(_, U);
339
+ const i = p / v, c = z + i * (b - z), M = Math.sin(c) * a, S = Math.cos(c) * a, Y = r / 2, [J, B, U] = oe(M, Y, S, s, 0, l), j = m(J, B, U);
340
+ x.push(j), u = Math.min(u, U), h = Math.max(h, U);
341
341
  }
342
342
  for (let p = 0; p <= 10; p++) {
343
- const o = p / 10, c = -n / 2 + o * n, [M, N, B] = re(-s, c, 0, i, 0, l);
344
- I.push(m(M, N, B)), d = Math.min(d, B), _ = Math.max(_, B);
345
- const [J, Z, U] = re(s, c, 0, i, 0, l);
346
- b.push(m(J, Z, U)), d = Math.min(d, U), _ = Math.max(_, U);
347
- }
348
- const u = (p) => {
349
- for (let o = 0; o < p.length - 1; o++) {
350
- const c = p[o], M = p[o + 1], N = (c.z + M.z) / 2;
351
- h.strokeStyle = T(N, d, _), h.beginPath(), h.moveTo(c.x, c.y), h.lineTo(M.x, M.y), h.stroke();
343
+ const i = p / 10, c = -r / 2 + i * r, [M, S, Y] = oe(-a, c, 0, s, 0, l);
344
+ N.push(m(M, S, Y)), u = Math.min(u, Y), h = Math.max(h, Y);
345
+ const [J, B, U] = oe(a, c, 0, s, 0, l);
346
+ _.push(m(J, B, U)), u = Math.min(u, U), h = Math.max(h, U);
347
+ }
348
+ const d = (p) => {
349
+ for (let i = 0; i < p.length - 1; i++) {
350
+ const c = p[i], M = p[i + 1], S = (c.z + M.z) / 2;
351
+ g.strokeStyle = T(S, u, h), g.beginPath(), g.moveTo(c.x, c.y), g.lineTo(M.x, M.y), g.stroke();
352
352
  }
353
353
  };
354
- u(y), u(x), u(I), u(b), h.restore();
354
+ d(y), d(x), d(N), d(_), g.restore();
355
355
  }
356
- function Lt(r, a, t, s, n, i, l, f, h, w) {
357
- const { diameter: d, perspective: _, rotationX: m, rotationZ: T } = l, v = d / 2, y = m * Math.PI / 180, x = T * Math.PI / 180, I = Math.abs(y) > 1e-3, b = _ ?? 1, k = b > 0.01 ? v * (10 / b) : v * 1e3, C = f.scale, S = f.translateX, g = f.translateY;
358
- let u = {
356
+ function Zt(o, n, t, a, r, s, l, f, g, w) {
357
+ const { diameter: u, perspective: h, rotationX: m, rotationZ: T } = l, v = u / 2, y = m * Math.PI / 180, x = T * Math.PI / 180, N = Math.abs(y) > 1e-3, _ = h ?? 1, k = _ > 0.01 ? v * (10 / _) : v * 1e3, I = f.scale, z = f.translateX, b = f.translateY;
358
+ let d = {
359
359
  minX: -v,
360
- minY: -i / 2,
360
+ minY: -s / 2,
361
361
  maxX: v,
362
- maxY: i / 2
362
+ maxY: s / 2
363
363
  };
364
- if (I) {
364
+ if (N) {
365
365
  const c = [
366
- { x: -v, y: -i / 2 },
367
- { x: v, y: -i / 2 },
368
- { x: v, y: i / 2 },
369
- { x: -v, y: i / 2 }
366
+ { x: -v, y: -s / 2 },
367
+ { x: v, y: -s / 2 },
368
+ { x: v, y: s / 2 },
369
+ { x: -v, y: s / 2 }
370
370
  ], M = [];
371
- for (const B of c) {
372
- const [J, Z, U] = re(B.x, B.y, v, y, 0, x), z = k / (k + U);
373
- M.push({ x: J * z, y: Z * z });
374
- const [E, O, j] = re(B.x, B.y, 0, y, 0, x), L = k / (k + j);
375
- M.push({ x: E * L, y: O * L });
371
+ for (const Y of c) {
372
+ const [J, B, U] = oe(Y.x, Y.y, v, y, 0, x), j = k / (k + U);
373
+ M.push({ x: J * j, y: B * j });
374
+ const [q, E, O] = oe(Y.x, Y.y, 0, y, 0, x), Z = k / (k + O);
375
+ M.push({ x: q * Z, y: E * Z });
376
376
  }
377
- const N = v * Math.abs(Math.sin(y));
378
- M.length > 0 && (u = {
379
- minX: Math.min(...M.map((B) => B.x)) - 2,
380
- minY: Math.min(...M.map((B) => B.y)) - N - 2,
381
- maxX: Math.max(...M.map((B) => B.x)) + 2,
382
- maxY: Math.max(...M.map((B) => B.y)) + N + 2
377
+ const S = v * Math.abs(Math.sin(y));
378
+ M.length > 0 && (d = {
379
+ minX: Math.min(...M.map((Y) => Y.x)) - 2,
380
+ minY: Math.min(...M.map((Y) => Y.y)) - S - 2,
381
+ maxX: Math.max(...M.map((Y) => Y.x)) + 2,
382
+ maxY: Math.max(...M.map((Y) => Y.y)) + S + 2
383
383
  });
384
384
  }
385
385
  const p = (c, M) => {
386
- const N = Math.cos(x), B = Math.sin(x), J = c * N + M * B, Z = -c * B + M * N, U = Math.cos(y), z = Math.sin(y), E = Z * z, O = k / (k + E), j = J / O, L = Z / O;
387
- if (Math.abs(j) > v) return null;
388
- const K = Math.sqrt(v * v - j * j);
386
+ const S = Math.cos(x), Y = Math.sin(x), J = c * S + M * Y, B = -c * Y + M * S, U = Math.cos(y), j = Math.sin(y), q = B * j, E = k / (k + q), O = J / E, Z = B / E;
387
+ if (Math.abs(O) > v) return null;
388
+ const K = Math.sqrt(v * v - O * O);
389
389
  if (Math.abs(U) < 0.01) return null;
390
- const H = (L + K * z) / U, G = H * z + K * U;
390
+ const H = (Z + K * j) / U, G = H * j + K * U;
391
391
  if (G < 0) return null;
392
- const D = Math.asin(j / v) * v / n + 0.5, R = H / i + 0.5, V = (D - 0.5 - S) / C + 0.5, A = (R - 0.5 - g) / C + 0.5;
393
- return V >= 0 && V <= 1 && A >= 0 && A <= 1 ? { u: V * a.width, v: A * a.height, z: G } : null;
394
- }, o = w.showDepthVis ? { showDepthVis: !0, maxZ: v } : void 0;
395
- w.showBounds && Ot(r, t, s, v, i, y, x, k), He(r, a, t, s, n, i, h, p, u, o), w.showCrosshair && Ae(r, t, s);
392
+ const W = Math.asin(O / v) * v / r + 0.5, P = H / s + 0.5, V = (W - 0.5 - z) / I + 0.5, A = (P - 0.5 - b) / I + 0.5;
393
+ return V >= 0 && V <= 1 && A >= 0 && A <= 1 ? { u: V * n.width, v: A * n.height, z: G } : null;
394
+ }, i = w.showDepthVis ? { showDepthVis: !0, maxZ: v } : void 0;
395
+ w.showBounds && Et(o, t, a, v, s, y, x, k), He(o, n, t, a, r, s, g, p, d, i), w.showCrosshair && Ae(o, t, a);
396
396
  }
397
- function jt(r, a, t, s, n, i, l, f, h, w) {
398
- const { rotationX: d, rotationY: _, rotationZ: m, depthScale: T } = l, v = d * (Math.PI / 180), y = _ * (Math.PI / 180), x = m * (Math.PI / 180), I = Math.abs(v) > 1e-3 || Math.abs(y) > 1e-3 || Math.abs(x) > 1e-3, b = f.scale, k = f.translateX, C = f.translateY, S = T * 1e-3, g = S > 1e-4 ? 1 / S : 1e4, u = (Z, U) => {
399
- const [z, E, O] = re(Z, U, 0, v, y, x), j = O + g;
400
- if (j <= 0) return null;
401
- const L = g / j, K = z * L, H = E * L;
402
- return { x: K, y: H, z: O };
397
+ function Ot(o, n, t, a, r, s, l, f, g, w) {
398
+ const { rotationX: u, rotationY: h, rotationZ: m, depthScale: T } = l, v = u * (Math.PI / 180), y = h * (Math.PI / 180), x = m * (Math.PI / 180), N = Math.abs(v) > 1e-3 || Math.abs(y) > 1e-3 || Math.abs(x) > 1e-3, _ = f.scale, k = f.translateX, I = f.translateY, z = T * 1e-3, b = z > 1e-4 ? 1 / z : 1e4, d = (B, U) => {
399
+ const [j, q, E] = oe(B, U, 0, v, y, x), O = E + b;
400
+ if (O <= 0) return null;
401
+ const Z = b / O, K = j * Z, H = q * Z;
402
+ return { x: K, y: H, z: E };
403
403
  };
404
- let p = -n / 2, o = n / 2, c = -i / 2, M = i / 2;
405
- if (I) {
406
- const Z = [];
407
- for (let z = 0; z <= 10; z++) {
408
- const E = z / 10, O = -n / 2 + E * n, j = u(O, -i / 2);
409
- j && Z.push({ x: j.x, y: j.y });
410
- const L = u(O, i / 2);
411
- L && Z.push({ x: L.x, y: L.y });
412
- const K = -i / 2 + E * i, H = u(-n / 2, K);
413
- H && Z.push({ x: H.x, y: H.y });
414
- const G = u(n / 2, K);
415
- G && Z.push({ x: G.x, y: G.y });
404
+ let p = -r / 2, i = r / 2, c = -s / 2, M = s / 2;
405
+ if (N) {
406
+ const B = [];
407
+ for (let j = 0; j <= 10; j++) {
408
+ const q = j / 10, E = -r / 2 + q * r, O = d(E, -s / 2);
409
+ O && B.push({ x: O.x, y: O.y });
410
+ const Z = d(E, s / 2);
411
+ Z && B.push({ x: Z.x, y: Z.y });
412
+ const K = -s / 2 + q * s, H = d(-r / 2, K);
413
+ H && B.push({ x: H.x, y: H.y });
414
+ const G = d(r / 2, K);
415
+ G && B.push({ x: G.x, y: G.y });
416
416
  }
417
- if (Z.length > 0) {
418
- p = Math.min(...Z.map((L) => L.x)), o = Math.max(...Z.map((L) => L.x)), c = Math.min(...Z.map((L) => L.y)), M = Math.max(...Z.map((L) => L.y));
419
- const z = Math.sqrt(v * v + y * y + x * x), E = 2, O = z * Math.max(n, i) * 0.1, j = E + O;
420
- p -= j, o += j, c -= j, M += j;
417
+ if (B.length > 0) {
418
+ p = Math.min(...B.map((Z) => Z.x)), i = Math.max(...B.map((Z) => Z.x)), c = Math.min(...B.map((Z) => Z.y)), M = Math.max(...B.map((Z) => Z.y));
419
+ const j = Math.sqrt(v * v + y * y + x * x), q = 2, E = j * Math.max(r, s) * 0.1, O = q + E;
420
+ p -= O, i += O, c -= O, M += O;
421
421
  }
422
422
  }
423
- const N = { minX: p, minY: c, maxX: o, maxY: M }, B = (Z, U) => {
424
- if (!I) {
425
- const Ie = Z / n + 0.5, ze = U / i + 0.5, me = (Ie - 0.5 - k) / b + 0.5, ye = (ze - 0.5 - C) / b + 0.5;
423
+ const S = { minX: p, minY: c, maxX: i, maxY: M }, Y = (B, U) => {
424
+ if (!N) {
425
+ const Ne = B / r + 0.5, je = U / s + 0.5, me = (Ne - 0.5 - k) / _ + 0.5, ye = (je - 0.5 - I) / _ + 0.5;
426
426
  return me >= 0 && me <= 1 && ye >= 0 && ye <= 1 ? {
427
- u: me * a.width,
428
- v: ye * a.height,
427
+ u: me * n.width,
428
+ v: ye * n.height,
429
429
  z: 1
430
430
  } : null;
431
431
  }
432
- const [z, E, O] = re(0, 0, 1, v, y, x), j = 0, L = 0, K = 0, H = -g, G = Z - L, X = U - K, Y = 0 - H, D = Math.sqrt(G * G + X * X + Y * Y), R = G / D, V = X / D, A = Y / D, ue = R * z + V * E + A * O;
433
- if (Math.abs(ue) < 1e-4)
432
+ const [j, q, E] = oe(0, 0, 1, v, y, x), O = 0, Z = 0, K = 0, H = -b, G = B - Z, D = U - K, X = 0 - H, W = Math.sqrt(G * G + D * D + X * X), P = G / W, V = D / W, A = X / W, de = P * j + V * q + A * E;
433
+ if (Math.abs(de) < 1e-4)
434
434
  return null;
435
- const oe = -(L * z + K * E + H * O + j) / ue;
436
- if (oe < 0)
435
+ const ie = -(Z * j + K * q + H * E + O) / de;
436
+ if (ie < 0)
437
437
  return null;
438
- const he = L + R * oe, _e = K + V * oe, le = H + A * oe;
438
+ const ge = Z + P * ie, he = K + V * ie, le = H + A * ie;
439
439
  if (le < H)
440
440
  return null;
441
- const [ge, We] = Et(he, _e, le, v, y, x), Se = ge / n + 0.5, de = We / i + 0.5, Ne = le + g, be = (Se - 0.5 - k) / b + 0.5, pe = (de - 0.5 - C) / b + 0.5;
442
- return be >= 0 && be <= 1 && pe >= 0 && pe <= 1 ? {
443
- u: be * a.width,
444
- v: pe * a.height,
445
- z: Ne
441
+ const [be, Re] = qt(ge, he, le, v, y, x), ze = be / r + 0.5, ue = Re / s + 0.5, Se = le + b, _e = (ze - 0.5 - k) / _ + 0.5, pe = (ue - 0.5 - I) / _ + 0.5;
442
+ return _e >= 0 && _e <= 1 && pe >= 0 && pe <= 1 ? {
443
+ u: _e * n.width,
444
+ v: pe * n.height,
445
+ z: Se
446
446
  } : null;
447
- }, J = w.showDepthVis ? { showDepthVis: !0, maxZ: g * 0.5 } : void 0;
448
- w.showBounds && Zt(r, t, s, n, i, u), He(r, a, t, s, n, i, h, B, N, J), w.showCrosshair && Ae(r, t, s);
447
+ }, J = w.showDepthVis ? { showDepthVis: !0, maxZ: b * 0.5 } : void 0;
448
+ w.showBounds && Bt(o, t, a, r, s, d), He(o, n, t, a, r, s, g, Y, S, J), w.showCrosshair && Ae(o, t, a);
449
449
  }
450
- function qt(r, a, t, s, n) {
451
- if (!("save" in r)) return;
452
- const i = r;
453
- if (i.save(), i.strokeStyle = "#ff6600", i.lineWidth = 2, i.setLineDash([6, 4]), i.beginPath(), i.arc(a, t, s, 0, Math.PI * 2), i.stroke(), i.beginPath(), i.moveTo(a - s, t), i.lineTo(a + s, t), i.stroke(), i.beginPath(), i.moveTo(a, t - s), i.lineTo(a, t + s), i.stroke(), i.beginPath(), i.moveTo(a - s, t - s), i.lineTo(a - s, t + s), i.stroke(), i.beginPath(), i.moveTo(a + s, t - s), i.lineTo(a + s, t + s), i.stroke(), Math.abs(n) > 1e-3) {
454
- i.strokeStyle = "#ffaa00";
455
- const l = Math.cos(n), f = Math.sin(n), h = s * 0.7;
456
- i.beginPath(), i.moveTo(a + l * h, t + f * h), i.lineTo(a - l * h, t - f * h), i.stroke(), i.beginPath(), i.moveTo(a - f * h, t + l * h), i.lineTo(a + f * h, t - l * h), i.stroke();
457
- }
458
- i.restore();
450
+ function Lt(o, n, t, a, r) {
451
+ if (!("save" in o)) return;
452
+ const s = o;
453
+ if (s.save(), s.strokeStyle = "#ff6600", s.lineWidth = 2, s.setLineDash([6, 4]), s.beginPath(), s.arc(n, t, a, 0, Math.PI * 2), s.stroke(), s.beginPath(), s.moveTo(n - a, t), s.lineTo(n + a, t), s.stroke(), s.beginPath(), s.moveTo(n, t - a), s.lineTo(n, t + a), s.stroke(), s.beginPath(), s.moveTo(n - a, t - a), s.lineTo(n - a, t + a), s.stroke(), s.beginPath(), s.moveTo(n + a, t - a), s.lineTo(n + a, t + a), s.stroke(), Math.abs(r) > 1e-3) {
454
+ s.strokeStyle = "#ffaa00";
455
+ const l = Math.cos(r), f = Math.sin(r), g = a * 0.7;
456
+ s.beginPath(), s.moveTo(n + l * g, t + f * g), s.lineTo(n - l * g, t - f * g), s.stroke(), s.beginPath(), s.moveTo(n - f * g, t + l * g), s.lineTo(n + f * g, t - l * g), s.stroke();
457
+ }
458
+ s.restore();
459
459
  }
460
- function Ht(r, a, t, s, n, i, l, f, h, w) {
461
- const { radius: d, rotationZ: _ } = l, m = _ * (Math.PI / 180), T = f.scale, v = f.translateX, y = f.translateY, x = {
462
- minX: -d,
463
- minY: -d,
464
- maxX: d,
465
- maxY: d
466
- }, I = (k, C) => {
467
- const S = Math.sqrt(k * k + C * C);
468
- if (S > d) return null;
469
- const g = Math.sqrt(d * d - k * k - C * C), p = Math.asin(S / d) * d, o = Math.atan2(C, k) - m, c = p * Math.cos(o), M = p * Math.sin(o), N = c / n + 0.5, B = M / i + 0.5, J = (N - 0.5 - v) / T + 0.5, Z = (B - 0.5 - y) / T + 0.5;
470
- return J >= 0 && J <= 1 && Z >= 0 && Z <= 1 ? {
471
- u: J * a.width,
472
- v: Z * a.height,
473
- z: g
460
+ function Ht(o, n, t, a, r, s, l, f, g, w) {
461
+ const { radius: u, rotationZ: h } = l, m = h * (Math.PI / 180), T = f.scale, v = f.translateX, y = f.translateY, x = {
462
+ minX: -u,
463
+ minY: -u,
464
+ maxX: u,
465
+ maxY: u
466
+ }, N = (k, I) => {
467
+ const z = Math.sqrt(k * k + I * I);
468
+ if (z > u) return null;
469
+ const b = Math.sqrt(u * u - k * k - I * I), p = Math.asin(z / u) * u, i = Math.atan2(I, k) - m, c = p * Math.cos(i), M = p * Math.sin(i), S = c / r + 0.5, Y = M / s + 0.5, J = (S - 0.5 - v) / T + 0.5, B = (Y - 0.5 - y) / T + 0.5;
470
+ return J >= 0 && J <= 1 && B >= 0 && B <= 1 ? {
471
+ u: J * n.width,
472
+ v: B * n.height,
473
+ z: b
474
474
  } : null;
475
- }, b = w.showDepthVis ? { showDepthVis: !0, maxZ: d } : void 0;
476
- w.showBounds && qt(r, t, s, d, m), He(r, a, t, s, n, i, h, I, x, b), w.showCrosshair && Ae(r, t, s);
475
+ }, _ = w.showDepthVis ? { showDepthVis: !0, maxZ: u } : void 0;
476
+ w.showBounds && Lt(o, t, a, u, m), He(o, n, t, a, r, s, g, N, x, _), w.showCrosshair && Ae(o, t, a);
477
477
  }
478
- function At(r, a, t, s, n, i, l) {
479
- r.drawImage(a, t - n / 2, s - i / 2, n, i);
478
+ function At(o, n, t, a, r, s, l) {
479
+ o.drawImage(n, t - r / 2, a - s / 2, r, s);
480
480
  }
481
- function Ut(r, a, t, s, n, i, l) {
481
+ function Ut(o, n, t, a, r, s, l) {
482
482
  if (!l.enabled || l.shape === "none") {
483
- r.drawImage(a, t - n / 2, s - i / 2, n, i);
483
+ o.drawImage(n, t - r / 2, a - s / 2, r, s);
484
484
  return;
485
485
  }
486
- const f = l.quality ?? 1, h = l.image ?? ie, w = l.debug ?? ve;
486
+ const f = l.quality ?? 1, g = l.image ?? se, w = l.debug ?? ve;
487
487
  switch (l.shape) {
488
488
  case "cylinder":
489
- l.cylinder && Lt(r, a, t, s, n, i, l.cylinder, h, f, w);
489
+ l.cylinder && Zt(o, n, t, a, r, s, l.cylinder, g, f, w);
490
490
  break;
491
491
  case "plane":
492
- l.plane && jt(r, a, t, s, n, i, l.plane, h, f, w);
492
+ l.plane && Ot(o, n, t, a, r, s, l.plane, g, f, w);
493
493
  break;
494
494
  case "sphere":
495
- l.sphere && Ht(r, a, t, s, n, i, l.sphere, h, f, w);
495
+ l.sphere && Ht(o, n, t, a, r, s, l.sphere, g, f, w);
496
496
  break;
497
497
  case "custom":
498
- l.custom && At(r, a, t, s, n, i, l.custom);
498
+ l.custom && At(o, n, t, a, r, s, l.custom);
499
499
  break;
500
500
  default:
501
- r.drawImage(a, t - n / 2, s - i / 2, n, i);
501
+ o.drawImage(n, t - r / 2, a - s / 2, r, s);
502
502
  }
503
503
  }
504
504
  const ee = {
@@ -520,14 +520,14 @@ const ee = {
520
520
  scale: 1,
521
521
  maintainAspectRatio: !0
522
522
  };
523
- function et(r, a) {
524
- let t = r, s = r.width, n = r.height;
525
- const i = Vt(a);
526
- for (const l of i)
523
+ function et(o, n) {
524
+ let t = o, a = o.width, r = o.height;
525
+ const s = Vt(n);
526
+ for (const l of s)
527
527
  switch (l.type) {
528
528
  case "resize":
529
- const f = Xt(s, n, l);
530
- s = f.width, n = f.height;
529
+ const f = Dt(a, r, l);
530
+ a = f.width, r = f.height;
531
531
  break;
532
532
  case "restyle":
533
533
  t = Ft(t, l);
@@ -535,35 +535,35 @@ function et(r, a) {
535
535
  }
536
536
  return {
537
537
  image: t,
538
- width: s,
539
- height: n
538
+ width: a,
539
+ height: r
540
540
  };
541
541
  }
542
- function Vt(r) {
543
- const a = ["resize", "restyle", "warp"];
544
- return r.sort((t, s) => {
545
- const n = a.indexOf(t.type), i = a.indexOf(s.type);
546
- return n - i;
542
+ function Vt(o) {
543
+ const n = ["resize", "restyle", "warp"];
544
+ return o.sort((t, a) => {
545
+ const r = n.indexOf(t.type), s = n.indexOf(a.type);
546
+ return r - s;
547
547
  });
548
548
  }
549
- function Ft(r, a) {
550
- const t = new OffscreenCanvas(r.width, r.height), s = t.getContext("2d");
551
- if (!s) return r;
552
- s.drawImage(r, 0, 0);
553
- const n = s.getImageData(0, 0, r.width, r.height), i = Nt(n, a);
554
- return s.putImageData(i, 0, 0), t.transferToImageBitmap();
549
+ function Ft(o, n) {
550
+ const t = new OffscreenCanvas(o.width, o.height), a = t.getContext("2d");
551
+ if (!a) return o;
552
+ a.drawImage(o, 0, 0);
553
+ const r = a.getImageData(0, 0, o.width, o.height), s = St(r, n);
554
+ return a.putImageData(s, 0, 0), t.transferToImageBitmap();
555
555
  }
556
- class at {
556
+ class nt {
557
557
  latestInput = null;
558
558
  rafPending = !1;
559
559
  timeoutId = null;
560
560
  onFlush;
561
561
  TRAILING_MS = 32;
562
- constructor(a) {
563
- this.onFlush = a;
562
+ constructor(n) {
563
+ this.onFlush = n;
564
564
  }
565
- queue(a) {
566
- this.latestInput = a, this.timeoutId !== null && clearTimeout(this.timeoutId), this.rafPending || (this.rafPending = !0, requestAnimationFrame(() => {
565
+ queue(n) {
566
+ this.latestInput = n, this.timeoutId !== null && clearTimeout(this.timeoutId), this.rafPending || (this.rafPending = !0, requestAnimationFrame(() => {
567
567
  this.rafPending = !1, this.flush();
568
568
  })), this.timeoutId = setTimeout(() => {
569
569
  this.timeoutId = null, this.flush();
@@ -572,8 +572,8 @@ class at {
572
572
  flush() {
573
573
  if (this.latestInput === null) return;
574
574
  this.timeoutId !== null && (clearTimeout(this.timeoutId), this.timeoutId = null);
575
- const a = this.latestInput;
576
- this.latestInput = null, this.onFlush(a);
575
+ const n = this.latestInput;
576
+ this.latestInput = null, this.onFlush(n);
577
577
  }
578
578
  destroy() {
579
579
  this.timeoutId !== null && (clearTimeout(this.timeoutId), this.timeoutId = null), this.latestInput = null;
@@ -587,8 +587,8 @@ class Kt {
587
587
  frameId = 0;
588
588
  lastCompletedId = 0;
589
589
  options;
590
- constructor(a) {
591
- this.options = a, this.batcher = new at((t) => this.submitToWorker(t)), this.initWorker();
590
+ constructor(n) {
591
+ this.options = n, this.batcher = new nt((t) => this.submitToWorker(t)), this.initWorker();
592
592
  }
593
593
  initWorker() {
594
594
  try {
@@ -599,55 +599,55 @@ class Kt {
599
599
  import.meta.url
600
600
  ),
601
601
  { type: "module" }
602
- ), this.worker.onmessage = (a) => {
603
- this.handleWorkerMessage(a.data);
604
- }, this.worker.onerror = (a) => {
605
- console.error("Worker error:", a), this.options.onError?.(`Worker error: ${a.message}`);
602
+ ), this.worker.onmessage = (n) => {
603
+ this.handleWorkerMessage(n.data);
604
+ }, this.worker.onerror = (n) => {
605
+ console.error("Worker error:", n), this.options.onError?.(`Worker error: ${n.message}`);
606
606
  };
607
- } catch (a) {
608
- console.error("Failed to create worker:", a), this.options.onError?.("Failed to create render worker");
607
+ } catch (n) {
608
+ console.error("Failed to create worker:", n), this.options.onError?.("Failed to create render worker");
609
609
  }
610
610
  }
611
- request(a) {
612
- this.batcher.queue(a);
611
+ request(n) {
612
+ this.batcher.queue(n);
613
613
  }
614
- submitToWorker(a) {
615
- const t = ++this.frameId, s = {
616
- ...a,
614
+ submitToWorker(n) {
615
+ const t = ++this.frameId, a = {
616
+ ...n,
617
617
  id: t
618
618
  };
619
- this.isWorking ? this.pendingRequest = s : this.sendToWorker(s);
619
+ this.isWorking ? this.pendingRequest = a : this.sendToWorker(a);
620
620
  }
621
- sendToWorker(a) {
621
+ sendToWorker(n) {
622
622
  if (!this.worker) return;
623
623
  this.isWorking = !0;
624
- const t = { type: "render", payload: a }, s = a.images.filter((n) => n instanceof ImageBitmap);
625
- this.worker.postMessage(t, s);
624
+ const t = { type: "render", payload: n }, a = n.images.filter((r) => r instanceof ImageBitmap);
625
+ this.worker.postMessage(t, a);
626
626
  }
627
- handleWorkerMessage(a) {
628
- if (a.type === "error") {
629
- console.error("Render error:", a.payload.error), this.isWorking = !1, this.processNext();
627
+ handleWorkerMessage(n) {
628
+ if (n.type === "error") {
629
+ console.error("Render error:", n.payload.error), this.isWorking = !1, this.processNext();
630
630
  return;
631
631
  }
632
- const { id: t, result: s, frameTime: n } = a.payload;
632
+ const { id: t, result: a, frameTime: r } = n.payload;
633
633
  if (this.isWorking = !1, t <= this.lastCompletedId) {
634
- s.close(), this.processNext();
634
+ a.close(), this.processNext();
635
635
  return;
636
636
  }
637
- this.lastCompletedId = t, this.options.onResult(s, n), this.processNext();
637
+ this.lastCompletedId = t, this.options.onResult(a, r), this.processNext();
638
638
  }
639
639
  processNext() {
640
640
  if (this.pendingRequest) {
641
- const a = this.pendingRequest;
642
- this.pendingRequest = null, this.sendToWorker(a);
641
+ const n = this.pendingRequest;
642
+ this.pendingRequest = null, this.sendToWorker(n);
643
643
  }
644
644
  }
645
645
  destroy() {
646
646
  this.batcher.destroy(), this.worker && (this.worker.terminate(), this.worker = null);
647
647
  }
648
648
  }
649
- function qe(r, a, t = {}, s) {
650
- const n = {
649
+ function Le(o, n, t = {}, a) {
650
+ const r = {
651
651
  loadedImages: /* @__PURE__ */ new Map(),
652
652
  imageBitmaps: /* @__PURE__ */ new Map(),
653
653
  imagesLoaded: !1,
@@ -658,151 +658,151 @@ function qe(r, a, t = {}, s) {
658
658
  ctx: null,
659
659
  renderStartTime: null
660
660
  };
661
- n.ctx = r.getContext("2d");
662
- function i(b, k) {
663
- return Object.keys(k).length === 0 ? b : {
664
- ...b,
665
- layers: b.layers.map((C) => {
666
- const S = C.name || C.id, g = k[S];
667
- return g ? {
668
- ...C,
669
- src: g
670
- } : C;
661
+ r.ctx = o.getContext("2d");
662
+ function s(_, k) {
663
+ return Object.keys(k).length === 0 ? _ : {
664
+ ..._,
665
+ layers: _.layers.map((I) => {
666
+ const z = I.name || I.id, b = k[z];
667
+ return b ? {
668
+ ...I,
669
+ src: b
670
+ } : I;
671
671
  })
672
672
  };
673
673
  }
674
- if (!n.ctx)
674
+ if (!r.ctx)
675
675
  return () => {
676
676
  };
677
- let l = a, f = t;
678
- function h() {
679
- return i(l, f);
680
- }
681
- h(), n.scheduler = new Kt({
682
- onResult: (b, k) => {
683
- if (n.ctx && r)
684
- if (n.ctx.drawImage(b, 0, 0, r.width, r.height), b.close(), n.renderStartTime !== null) {
685
- const C = performance.now() - n.renderStartTime;
686
- s?.(C), n.renderStartTime = null;
677
+ let l = n, f = t;
678
+ function g() {
679
+ return s(l, f);
680
+ }
681
+ g(), r.scheduler = new Kt({
682
+ onResult: (_, k) => {
683
+ if (r.ctx && o)
684
+ if (r.ctx.drawImage(_, 0, 0, o.width, o.height), _.close(), r.renderStartTime !== null) {
685
+ const I = performance.now() - r.renderStartTime;
686
+ a?.(I), r.renderStartTime = null;
687
687
  } else
688
- s?.(k);
688
+ a?.(k);
689
689
  },
690
- onError: (b) => {
691
- console.warn("Worker render failed, falling back to main thread:", b), n.useWorker = !1, m();
690
+ onError: (_) => {
691
+ console.warn("Worker render failed, falling back to main thread:", _), r.useWorker = !1, m();
692
692
  }
693
693
  });
694
694
  function w() {
695
- if (!r || !n.ctx) return;
696
- const b = h(), k = b.layers.map((S) => S.src).join(","), C = b.layers.map((S) => {
697
- const g = S.effects.find((c) => c.type === "warp"), u = S.effects.find((c) => c.type === "restyle"), p = g ? `${g.enabled}:${g.shape}` : "none", o = u ? JSON.stringify(u) : "none";
698
- return `${S.id}:${S.transform.x},${S.transform.y},${S.transform.scale},${S.transform.rotation},${S.opacity},${S.visible}:${p}:${o}`;
695
+ if (!o || !r.ctx) return;
696
+ const _ = g(), k = _.layers.map((z) => z.src).join(","), I = _.layers.map((z) => {
697
+ const b = z.effects.find((c) => c.type === "warp"), d = z.effects.find((c) => c.type === "restyle"), p = b ? `${b.enabled}:${b.shape}` : "none", i = d ? JSON.stringify(d) : "none";
698
+ return `${z.id}:${z.transform.x},${z.transform.y},${z.transform.scale},${z.transform.rotation},${z.opacity},${z.visible}:${p}:${i}`;
699
699
  }).join("|");
700
- (r.width !== b.width || r.height !== b.height) && (r.width = b.width, r.height = b.height), k !== n.lastSources ? (n.lastSources = k, n.imagesLoaded = !1, _()) : n.imagesLoaded && C !== n.lastRenderKey ? (n.lastRenderKey = C, m()) : n.imagesLoaded ? n.imagesLoaded && m() : h().layers.length > 0 && _();
701
- }
702
- async function d(b) {
703
- if (n.loadedImages.has(b))
704
- return n.loadedImages.get(b);
705
- const k = b.startsWith("data:");
706
- let S = b.startsWith("/") || b.startsWith("./") || b.startsWith("../");
707
- if (!k && !S && typeof window < "u")
700
+ (o.width !== _.width || o.height !== _.height) && (o.width = _.width, o.height = _.height), k !== r.lastSources ? (r.lastSources = k, r.imagesLoaded = !1, h()) : r.imagesLoaded && I !== r.lastRenderKey ? (r.lastRenderKey = I, m()) : r.imagesLoaded ? r.imagesLoaded && m() : g().layers.length > 0 && h();
701
+ }
702
+ async function u(_) {
703
+ if (r.loadedImages.has(_))
704
+ return r.loadedImages.get(_);
705
+ const k = _.startsWith("data:");
706
+ let z = _.startsWith("/") || _.startsWith("./") || _.startsWith("../");
707
+ if (!k && !z && typeof window < "u")
708
708
  try {
709
- S = new URL(b, window.location.href).origin === window.location.origin;
709
+ z = new URL(_, window.location.href).origin === window.location.origin;
710
710
  } catch {
711
- S = !0;
711
+ z = !0;
712
712
  }
713
- const g = new Image();
713
+ const b = new Image();
714
714
  try {
715
- if (await new Promise((u, p) => {
716
- const o = setTimeout(() => {
715
+ if (await new Promise((d, p) => {
716
+ const i = setTimeout(() => {
717
717
  p(new Error("Image load timeout"));
718
718
  }, 3e4);
719
- g.onload = () => {
720
- clearTimeout(o), u();
721
- }, g.onerror = (c) => {
722
- clearTimeout(o), p(c);
723
- }, g.src = b;
724
- }), n.loadedImages.set(b, g), !k && !S)
719
+ b.onload = () => {
720
+ clearTimeout(i), d();
721
+ }, b.onerror = (c) => {
722
+ clearTimeout(i), p(c);
723
+ }, b.src = _;
724
+ }), r.loadedImages.set(_, b), !k && !z)
725
725
  try {
726
- const u = new Image();
727
- u.crossOrigin = "anonymous", await new Promise((p, o) => {
728
- u.onload = () => p(), u.onerror = () => o(new Error("CORS failed")), u.src = b;
729
- }), n.loadedImages.set(b, u);
726
+ const d = new Image();
727
+ d.crossOrigin = "anonymous", await new Promise((p, i) => {
728
+ d.onload = () => p(), d.onerror = () => i(new Error("CORS failed")), d.src = _;
729
+ }), r.loadedImages.set(_, d);
730
730
  try {
731
- const p = await createImageBitmap(u);
732
- n.imageBitmaps.set(b, p);
731
+ const p = await createImageBitmap(d);
732
+ r.imageBitmaps.set(_, p);
733
733
  } catch (p) {
734
734
  console.warn("Failed to create ImageBitmap:", p);
735
735
  }
736
- return u;
736
+ return d;
737
737
  } catch {
738
- console.warn(`Image loaded but CORS not available for ${b}. Canvas operations may be limited.`);
738
+ console.warn(`Image loaded but CORS not available for ${_}. Canvas operations may be limited.`);
739
739
  try {
740
- const p = await createImageBitmap(g);
741
- n.imageBitmaps.set(b, p);
740
+ const p = await createImageBitmap(b);
741
+ r.imageBitmaps.set(_, p);
742
742
  } catch {
743
743
  }
744
- return g;
744
+ return b;
745
745
  }
746
746
  else {
747
747
  try {
748
- const u = await createImageBitmap(g);
749
- n.imageBitmaps.set(b, u);
750
- } catch (u) {
751
- console.warn("Failed to create ImageBitmap:", u);
748
+ const d = await createImageBitmap(b);
749
+ r.imageBitmaps.set(_, d);
750
+ } catch (d) {
751
+ console.warn("Failed to create ImageBitmap:", d);
752
752
  }
753
- return g;
753
+ return b;
754
754
  }
755
- } catch (u) {
756
- return console.error(`Failed to load image: ${b}`, u), null;
755
+ } catch (d) {
756
+ return console.error(`Failed to load image: ${_}`, d), null;
757
757
  }
758
758
  }
759
- async function _() {
759
+ async function h() {
760
760
  performance.now();
761
- const b = h();
762
- if (b.layers.length === 0) {
763
- n.imagesLoaded = !0, n.ctx && m();
761
+ const _ = g();
762
+ if (_.layers.length === 0) {
763
+ r.imagesLoaded = !0, r.ctx && m();
764
764
  return;
765
765
  }
766
- await Promise.all(b.layers.map((k) => d(k.src))), n.imagesLoaded = !0, n.ctx && r && m();
766
+ await Promise.all(_.layers.map((k) => u(k.src))), r.imagesLoaded = !0, r.ctx && o && m();
767
767
  }
768
768
  function m() {
769
- if (!(!n.ctx || !r)) {
770
- if (n.useWorker && n.scheduler) {
769
+ if (!(!r.ctx || !o)) {
770
+ if (r.useWorker && r.scheduler) {
771
771
  T();
772
772
  return;
773
773
  }
774
- n.renderStartTime = performance.now(), v();
774
+ r.renderStartTime = performance.now(), v();
775
775
  }
776
776
  }
777
777
  async function T() {
778
- if (!n.scheduler) return;
779
- n.renderStartTime = performance.now();
780
- const b = h(), k = [], C = [];
781
- let S = !1;
782
- for (const g of b.layers) {
783
- if (!g.visible) continue;
784
- const u = n.loadedImages.get(g.src), p = n.imageBitmaps.get(g.src);
785
- if (!u) continue;
778
+ if (!r.scheduler) return;
779
+ r.renderStartTime = performance.now();
780
+ const _ = g(), k = [], I = [];
781
+ let z = !1;
782
+ for (const b of _.layers) {
783
+ if (!b.visible) continue;
784
+ const d = r.loadedImages.get(b.src), p = r.imageBitmaps.get(b.src);
785
+ if (!d) continue;
786
786
  if (!p) {
787
- S = !0;
787
+ z = !0;
788
788
  continue;
789
789
  }
790
- const o = et(p, g.effects), c = g.effects.find((z) => z.type === "warp");
791
- let M = o.width, N = o.height;
792
- const B = M * g.transform.scale, J = N * g.transform.scale;
793
- let Z;
794
- if (o.image instanceof ImageBitmap)
795
- Z = o.image;
790
+ const i = et(p, b.effects), c = b.effects.find((j) => j.type === "warp");
791
+ let M = i.width, S = i.height;
792
+ const Y = M * b.transform.scale, J = S * b.transform.scale;
793
+ let B;
794
+ if (i.image instanceof ImageBitmap)
795
+ B = i.image;
796
796
  else
797
797
  try {
798
- Z = await createImageBitmap(o.image);
799
- } catch (z) {
800
- console.warn("Failed to create bitmap from processed image, falling back to main thread:", z), v();
798
+ B = await createImageBitmap(i.image);
799
+ } catch (j) {
800
+ console.warn("Failed to create bitmap from processed image, falling back to main thread:", j), v();
801
801
  return;
802
802
  }
803
803
  let U = null;
804
804
  if (c) {
805
- const z = {
805
+ const j = {
806
806
  type: "warp",
807
807
  shape: c.shape,
808
808
  enabled: !!c.enabled,
@@ -813,401 +813,428 @@ function qe(r, a, t = {}, s) {
813
813
  translateY: Number(c.image?.translateY ?? 0)
814
814
  }
815
815
  };
816
- c.debug && (z.debug = {
816
+ c.debug && (j.debug = {
817
817
  showBounds: !!c.debug.showBounds,
818
818
  showDepthVis: !!c.debug.showDepthVis,
819
819
  showCrosshair: !!c.debug.showCrosshair
820
- }), c.cylinder && (z.cylinder = {
820
+ }), c.cylinder && (j.cylinder = {
821
821
  diameter: Number(c.cylinder.diameter),
822
822
  pitch: Number(c.cylinder.pitch),
823
823
  perspective: Number(c.cylinder.perspective),
824
824
  rotationX: Number(c.cylinder.rotationX),
825
825
  rotationY: Number(c.cylinder.rotationY),
826
826
  rotationZ: Number(c.cylinder.rotationZ)
827
- }), c.plane && (z.plane = {
827
+ }), c.plane && (j.plane = {
828
828
  rotationX: Number(c.plane.rotationX),
829
829
  rotationY: Number(c.plane.rotationY),
830
830
  rotationZ: Number(c.plane.rotationZ),
831
831
  depthScale: Number(c.plane.depthScale)
832
- }), c.sphere && (z.sphere = {
832
+ }), c.sphere && (j.sphere = {
833
833
  radius: Number(c.sphere.radius),
834
834
  rotationX: Number(c.sphere.rotationX),
835
835
  rotationY: Number(c.sphere.rotationY),
836
836
  rotationZ: Number(c.sphere.rotationZ)
837
- }), c.custom && (z.custom = {
837
+ }), c.custom && (j.custom = {
838
838
  formula: String(c.custom.formula),
839
839
  parameters: Object.fromEntries(
840
- Object.entries(c.custom.parameters || {}).map(([E, O]) => [E, Number(O)])
840
+ Object.entries(c.custom.parameters || {}).map(([q, E]) => [q, Number(E)])
841
841
  )
842
- }), U = z;
842
+ }), U = j;
843
843
  }
844
844
  k.push({
845
- id: String(g.id),
846
- x: Number(g.transform.x),
847
- y: Number(g.transform.y),
848
- width: Number(B),
845
+ id: String(b.id),
846
+ x: Number(b.transform.x),
847
+ y: Number(b.transform.y),
848
+ width: Number(Y),
849
849
  height: Number(J),
850
- rotation: Number(g.transform.rotation),
851
- opacity: Number(g.opacity),
850
+ rotation: Number(b.transform.rotation),
851
+ opacity: Number(b.opacity),
852
852
  warp: U
853
- }), C.push(Z);
853
+ }), I.push(B);
854
854
  }
855
- if (S || k.length === 0) {
855
+ if (z || k.length === 0) {
856
856
  v();
857
857
  return;
858
858
  }
859
859
  try {
860
- const g = await Promise.all(
861
- C.map((u) => createImageBitmap(u))
860
+ const b = await Promise.all(
861
+ I.map((d) => createImageBitmap(d))
862
862
  );
863
- n.scheduler?.request({
864
- canvasWidth: b.width,
865
- canvasHeight: b.height,
863
+ r.scheduler?.request({
864
+ canvasWidth: _.width,
865
+ canvasHeight: _.height,
866
866
  layers: k,
867
- images: g
867
+ images: b
868
868
  });
869
- } catch (g) {
870
- console.warn("Failed to clone bitmaps for worker, falling back to main thread:", g), v();
869
+ } catch (b) {
870
+ console.warn("Failed to clone bitmaps for worker, falling back to main thread:", b), v();
871
871
  }
872
872
  }
873
873
  function v() {
874
- if (!n.ctx || !r) return;
875
- const b = n.renderStartTime ?? performance.now(), k = h();
876
- n.ctx.fillStyle = "#ffffff", n.ctx.fillRect(0, 0, k.width, k.height);
877
- for (const S of k.layers) {
878
- if (!S.visible) continue;
874
+ if (!r.ctx || !o) return;
875
+ const _ = r.renderStartTime ?? performance.now(), k = g();
876
+ r.ctx.fillStyle = "#ffffff", r.ctx.fillRect(0, 0, k.width, k.height);
877
+ for (const z of k.layers) {
878
+ if (!z.visible) continue;
879
879
  performance.now();
880
- const g = n.loadedImages.get(S.src);
881
- if (!g) continue;
882
- if (!g.complete || g.naturalWidth === 0) {
883
- console.warn("Image not fully loaded:", S.src);
880
+ const b = r.loadedImages.get(z.src);
881
+ if (!b) continue;
882
+ if (!b.complete || b.naturalWidth === 0) {
883
+ console.warn("Image not fully loaded:", z.src);
884
884
  continue;
885
885
  }
886
- const u = et(g, S.effects), p = S.effects.find((Z) => Z.type === "warp");
887
- let o = u.width, c = u.height;
888
- n.ctx.save(), n.ctx.globalAlpha = S.opacity;
889
- const M = S.transform.x, N = S.transform.y;
890
- n.ctx.translate(M, N), n.ctx.rotate(S.transform.rotation * Math.PI / 180);
891
- const B = o * S.transform.scale, J = c * S.transform.scale;
886
+ const d = et(b, z.effects), p = z.effects.find((B) => B.type === "warp");
887
+ let i = d.width, c = d.height;
888
+ r.ctx.save(), r.ctx.globalAlpha = z.opacity;
889
+ const M = z.transform.x, S = z.transform.y;
890
+ r.ctx.translate(M, S), r.ctx.rotate(z.transform.rotation * Math.PI / 180);
891
+ const Y = i * z.transform.scale, J = c * z.transform.scale;
892
892
  try {
893
- p && p.enabled && p.shape !== "none" ? Ut(n.ctx, u.image, 0, 0, B, J, p) : n.ctx.drawImage(u.image, -B / 2, -J / 2, B, J);
894
- } catch (Z) {
895
- console.warn("Failed to draw image to canvas (may be CORS issue):", S.src, Z);
893
+ p && p.enabled && p.shape !== "none" ? Ut(r.ctx, d.image, 0, 0, Y, J, p) : r.ctx.drawImage(d.image, -Y / 2, -J / 2, Y, J);
894
+ } catch (B) {
895
+ console.warn("Failed to draw image to canvas (may be CORS issue):", z.src, B);
896
896
  }
897
- n.ctx.restore();
897
+ r.ctx.restore();
898
898
  }
899
- const C = performance.now() - b;
900
- s?.(C), n.renderStartTime !== null && (n.renderStartTime = null);
899
+ const I = performance.now() - _;
900
+ a?.(I), r.renderStartTime !== null && (r.renderStartTime = null);
901
901
  }
902
902
  w();
903
- function y(b, k) {
904
- l = b, k !== void 0 && (f = k), w();
903
+ function y(_, k) {
904
+ l = _, k !== void 0 && (f = k), w();
905
905
  }
906
906
  function x() {
907
- n.scheduler?.destroy();
908
- for (const b of n.imageBitmaps.values())
909
- b.close();
907
+ r.scheduler?.destroy();
908
+ for (const _ of r.imageBitmaps.values())
909
+ _.close();
910
910
  }
911
- const I = x;
912
- return I.update = y, I;
911
+ const N = x;
912
+ return N.update = y, N;
913
913
  }
914
914
  var Jt = e.from_html('<div><canvas class="canvas svelte-1xdpk2w"></canvas></div>');
915
- function Ja(r, a) {
916
- e.push(a, !0);
917
- let t = e.prop(a, "imageOverrides", 19, () => ({})), s = e.prop(a, "objectFit", 3, "contain"), n = e.state(null);
915
+ const Gt = {
916
+ hash: "svelte-1xdpk2w",
917
+ code: ".mockup-renderer.svelte-1xdpk2w {position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%;overflow:hidden;}.canvas.svelte-1xdpk2w {display:block;max-width:100%;max-height:100%;}.mockup-renderer.contain.svelte-1xdpk2w .canvas:where(.svelte-1xdpk2w) {width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;}.mockup-renderer.cover.svelte-1xdpk2w .canvas:where(.svelte-1xdpk2w) {width:100%;height:100%;object-fit:cover;}"
918
+ };
919
+ function ca(o, n) {
920
+ e.push(n, !0), e.append_styles(o, Gt);
921
+ let t = e.prop(n, "imageOverrides", 19, () => ({})), a = e.prop(n, "objectFit", 3, "contain"), r = e.state(null);
918
922
  Te(() => {
919
- if (e.get(n))
920
- return qe(e.get(n), a.mockup.composition, t());
923
+ if (e.get(r))
924
+ return Le(e.get(r), n.mockup.composition, t());
921
925
  });
922
- var i = Jt();
926
+ var s = Jt();
923
927
  let l;
924
- var f = e.child(i);
925
- e.bind_this(f, (h) => e.set(n, h), () => e.get(n)), e.reset(i), e.template_effect(() => l = e.set_class(i, 1, "mockup-renderer svelte-1xdpk2w", null, l, {
926
- contain: s() === "contain",
927
- cover: s() === "cover"
928
- })), e.append(r, i), e.pop();
928
+ var f = e.child(s);
929
+ e.bind_this(f, (g) => e.set(r, g), () => e.get(r)), e.reset(s), e.template_effect(() => l = e.set_class(s, 1, "mockup-renderer svelte-1xdpk2w", null, l, {
930
+ contain: a() === "contain",
931
+ cover: a() === "cover"
932
+ })), e.append(o, s), e.pop();
929
933
  }
930
- const Gt = {
934
+ const $t = {
931
935
  x: 0,
932
936
  y: 0,
933
937
  scale: 1,
934
938
  rotation: 0
935
939
  }, Qt = {
936
- transform: { ...Gt },
940
+ transform: { ...$t },
937
941
  opacity: 1,
938
942
  visible: !0,
939
943
  effects: []
940
- }, Ce = {
944
+ }, Ie = {
941
945
  zoom: 1,
942
946
  panX: 0,
943
947
  panY: 0
944
- }, st = {
948
+ }, at = {
945
949
  width: 800,
946
950
  height: 600,
947
951
  layers: [],
948
952
  effects: []
949
953
  };
950
- var $t = e.from_html('<div class="zoomable-canvas svelte-zjsyu1" role="application" aria-label="Zoomable canvas - scroll to zoom, drag to pan"><div class="canvas-frame svelte-zjsyu1"><!></div> <div class="view-controls svelte-zjsyu1"><span class="zoom-indicator svelte-zjsyu1"> </span> <button class="reset-btn svelte-zjsyu1">Reset</button></div></div>');
951
- function en(r, a) {
952
- let t = e.state(e.proxy({ ...Ce })), s = e.state(!1), n = e.state(e.proxy({ x: 0, y: 0 }));
953
- function i(b) {
954
- b.preventDefault();
955
- const k = b.deltaY > 0 ? 0.9 : 1.1, C = Math.max(0.25, Math.min(4, e.get(t).zoom * k));
956
- e.set(t, { ...e.get(t), zoom: C }, !0);
957
- }
958
- function l(b) {
959
- b.button === 0 && (e.set(s, !0), e.set(
960
- n,
954
+ var er = e.from_html('<div class="zoomable-canvas svelte-zjsyu1" role="application" aria-label="Zoomable canvas - scroll to zoom, drag to pan"><div class="canvas-frame svelte-zjsyu1"><!></div> <div class="view-controls svelte-zjsyu1"><span class="zoom-indicator svelte-zjsyu1"> </span> <button class="reset-btn svelte-zjsyu1">Reset</button></div></div>');
955
+ const tr = {
956
+ hash: "svelte-zjsyu1",
957
+ code: ".zoomable-canvas.svelte-zjsyu1 {width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--color-bg, #f5f5f5);overflow:hidden;cursor:grab;position:relative;}.zoomable-canvas.svelte-zjsyu1:active {cursor:grabbing;}.canvas-frame.svelte-zjsyu1 {transform-origin:center center;box-shadow:0 4px 16px rgba(0, 0, 0, 0.1);}.view-controls.svelte-zjsyu1 {position:absolute;bottom:1rem;right:1rem;display:flex;align-items:center;gap:0.5rem;background:rgba(0, 0, 0, 0.7);padding:0.3rem 0.5rem;border-radius:4px;}.zoom-indicator.svelte-zjsyu1 {color:#fff;font-size:0.75rem;font-family:monospace;min-width:2.5rem;text-align:center;}.reset-btn.svelte-zjsyu1 {background:transparent;border:1px solid rgba(255, 255, 255, 0.3);color:rgba(255, 255, 255, 0.8);padding:0.2rem 0.5rem;border-radius:3px;font-size:0.75rem;cursor:pointer;transition:all 200ms;}.reset-btn.svelte-zjsyu1:hover {border-color:rgba(255, 255, 255, 0.6);color:#fff;}"
958
+ };
959
+ function rr(o, n) {
960
+ e.append_styles(o, tr);
961
+ let t = e.state(e.proxy({ ...Ie })), a = e.state(!1), r = e.state(e.proxy({ x: 0, y: 0 }));
962
+ function s(_) {
963
+ _.preventDefault();
964
+ const k = _.deltaY > 0 ? 0.9 : 1.1, I = Math.max(0.25, Math.min(4, e.get(t).zoom * k));
965
+ e.set(t, { ...e.get(t), zoom: I }, !0);
966
+ }
967
+ function l(_) {
968
+ _.button === 0 && (e.set(a, !0), e.set(
969
+ r,
961
970
  {
962
- x: b.clientX - e.get(t).panX,
963
- y: b.clientY - e.get(t).panY
971
+ x: _.clientX - e.get(t).panX,
972
+ y: _.clientY - e.get(t).panY
964
973
  },
965
974
  !0
966
975
  ));
967
976
  }
968
- function f(b) {
969
- e.get(s) && e.set(
977
+ function f(_) {
978
+ e.get(a) && e.set(
970
979
  t,
971
980
  {
972
981
  ...e.get(t),
973
- panX: b.clientX - e.get(n).x,
974
- panY: b.clientY - e.get(n).y
982
+ panX: _.clientX - e.get(r).x,
983
+ panY: _.clientY - e.get(r).y
975
984
  },
976
985
  !0
977
986
  );
978
987
  }
979
- function h() {
980
- e.set(s, !1);
988
+ function g() {
989
+ e.set(a, !1);
981
990
  }
982
991
  function w() {
983
- e.set(t, { ...Ce }, !0);
992
+ e.set(t, { ...Ie }, !0);
984
993
  }
985
- const d = e.derived(() => `transform: scale(${e.get(t).zoom}) translate(${e.get(t).panX / e.get(t).zoom}px, ${e.get(t).panY / e.get(t).zoom}px);`);
986
- var _ = $t();
987
- _.__mousedown = l, _.__mousemove = f, _.__mouseup = h;
988
- var m = e.child(_), T = e.child(m);
989
- e.snippet(T, () => a.children), e.reset(m);
994
+ const u = e.derived(() => `transform: scale(${e.get(t).zoom}) translate(${e.get(t).panX / e.get(t).zoom}px, ${e.get(t).panY / e.get(t).zoom}px);`);
995
+ var h = er();
996
+ h.__mousedown = l, h.__mousemove = f, h.__mouseup = g;
997
+ var m = e.child(h), T = e.child(m);
998
+ e.snippet(T, () => n.children), e.reset(m);
990
999
  var v = e.sibling(m, 2), y = e.child(v), x = e.child(y);
991
1000
  e.reset(y);
992
- var I = e.sibling(y, 2);
993
- I.__click = w, e.reset(v), e.reset(_), e.template_effect(
994
- (b) => {
995
- e.set_style(m, e.get(d)), e.set_text(x, `${b ?? ""}%`);
1001
+ var N = e.sibling(y, 2);
1002
+ N.__click = w, e.reset(v), e.reset(h), e.template_effect(
1003
+ (_) => {
1004
+ e.set_style(m, e.get(u)), e.set_text(x, `${_ ?? ""}%`);
996
1005
  },
997
1006
  [() => Math.round(e.get(t).zoom * 100)]
998
- ), e.event("wheel", _, i), e.event("mouseleave", _, h), e.append(r, _);
1007
+ ), e.event("wheel", h, s), e.event("mouseleave", h, g), e.append(o, h);
999
1008
  }
1000
1009
  e.delegate(["mousedown", "mousemove", "mouseup", "click"]);
1001
- function tn(r, a, t = {}, s) {
1002
- let n = a, i = t, l = null;
1003
- const f = new at((d) => {
1004
- l?.update ? l.update(d.config, d.overrides) : (l?.(), l = qe(r, d.config, d.overrides, s));
1010
+ function nr(o, n, t = {}, a) {
1011
+ let r = n, s = t, l = null;
1012
+ const f = new nt((u) => {
1013
+ l?.update ? l.update(u.config, u.overrides) : (l?.(), l = Le(o, u.config, u.overrides, a));
1005
1014
  });
1006
- l = qe(r, n, i, s);
1007
- function h(d, _) {
1008
- n = d, _ !== void 0 && (i = _), f.queue({ config: n, overrides: i });
1015
+ l = Le(o, r, s, a);
1016
+ function g(u, h) {
1017
+ r = u, h !== void 0 && (s = h), f.queue({ config: r, overrides: s });
1009
1018
  }
1010
1019
  return {
1011
- update: h,
1020
+ update: g,
1012
1021
  cleanup: () => {
1013
1022
  f.destroy(), l?.();
1014
1023
  }
1015
1024
  };
1016
1025
  }
1017
- var nn = e.from_html('<div class="render-time svelte-1p1rf8j"> </div>'), an = e.from_html('<div><canvas class="canvas svelte-1p1rf8j"></canvas> <!></div>');
1018
- function sn(r, a) {
1019
- e.push(a, !0);
1020
- let t = e.prop(a, "imageOverrides", 19, () => ({})), s = e.prop(a, "objectFit", 3, "contain"), n = e.prop(a, "debounceMs", 3, 100), i = e.state(null), l = e.state(null), f = e.state(0), h = e.state(null), w = null, d = e.state(""), _ = e.state(""), m = e.state(null);
1026
+ var ar = e.from_html('<div class="render-time svelte-1p1rf8j"> </div>'), sr = e.from_html('<div><canvas class="canvas svelte-1p1rf8j"></canvas> <!></div>');
1027
+ const or = {
1028
+ hash: "svelte-1p1rf8j",
1029
+ code: ".mockup-renderer.svelte-1p1rf8j {position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%;overflow:hidden;}.canvas.svelte-1p1rf8j {display:block;max-width:100%;max-height:100%;}.mockup-renderer.contain.svelte-1p1rf8j .canvas:where(.svelte-1p1rf8j) {width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;}.mockup-renderer.cover.svelte-1p1rf8j .canvas:where(.svelte-1p1rf8j) {width:100%;height:100%;object-fit:cover;}.render-time.svelte-1p1rf8j {position:absolute;top:8px;right:8px;background:rgba(0, 0, 0, 0.7);color:white;padding:4px 8px;border-radius:4px;font-size:12px;font-family:monospace;pointer-events:none;z-index:10;}"
1030
+ };
1031
+ function ir(o, n) {
1032
+ e.push(n, !0), e.append_styles(o, or);
1033
+ let t = e.prop(n, "imageOverrides", 19, () => ({})), a = e.prop(n, "objectFit", 3, "contain"), r = e.prop(n, "debounceMs", 3, 100), s = e.state(null), l = e.state(null), f = e.state(0), g = e.state(null), w = null, u = e.state(""), h = e.state(""), m = e.state(null);
1021
1034
  const T = 3;
1022
1035
  function v() {
1023
1036
  if (!e.get(l)) return;
1024
- const g = JSON.stringify(a.mockup.composition), u = JSON.stringify(t());
1025
- g === e.get(d) && u === e.get(_) || (e.update(f), e.set(
1026
- h,
1037
+ const b = JSON.stringify(n.mockup.composition), d = JSON.stringify(t());
1038
+ b === e.get(u) && d === e.get(h) || (e.update(f), e.set(
1039
+ g,
1027
1040
  {
1028
- composition: a.mockup.composition,
1041
+ composition: n.mockup.composition,
1029
1042
  overrides: t()
1030
1043
  },
1031
1044
  !0
1032
- ), e.get(f) >= T ? (e.set(f, 0), w && (clearTimeout(w), w = null), e.get(h) && (Ge(() => {
1033
- e.get(l).update(e.get(h).composition, e.get(h).overrides), e.set(d, g, !0), e.set(_, u, !0);
1034
- }), e.set(h, null))) : (w && clearTimeout(w), w = setTimeout(
1045
+ ), e.get(f) >= T ? (e.set(f, 0), w && (clearTimeout(w), w = null), e.get(g) && (Ge(() => {
1046
+ e.get(l).update(e.get(g).composition, e.get(g).overrides), e.set(u, b, !0), e.set(h, d, !0);
1047
+ }), e.set(g, null))) : (w && clearTimeout(w), w = setTimeout(
1035
1048
  () => {
1036
- e.get(l) && e.get(h) && (Ge(() => {
1037
- e.get(l).update(e.get(h).composition, e.get(h).overrides), e.set(d, JSON.stringify(e.get(h).composition), !0), e.set(_, JSON.stringify(e.get(h).overrides), !0);
1038
- }), e.set(h, null), e.set(f, 0)), w = null;
1049
+ e.get(l) && e.get(g) && (Ge(() => {
1050
+ e.get(l).update(e.get(g).composition, e.get(g).overrides), e.set(u, JSON.stringify(e.get(g).composition), !0), e.set(h, JSON.stringify(e.get(g).overrides), !0);
1051
+ }), e.set(g, null), e.set(f, 0)), w = null;
1039
1052
  },
1040
- n()
1053
+ r()
1041
1054
  )));
1042
1055
  }
1043
1056
  Te(() => (xt().then(() => {
1044
- e.get(i) && (e.set(
1057
+ e.get(s) && (e.set(
1045
1058
  l,
1046
- tn(e.get(i), a.mockup.composition, t(), (g) => {
1047
- e.set(m, g, !0);
1059
+ nr(e.get(s), n.mockup.composition, t(), (b) => {
1060
+ e.set(m, b, !0);
1048
1061
  }),
1049
1062
  !0
1050
- ), e.set(d, JSON.stringify(a.mockup.composition), !0), e.set(_, JSON.stringify(t()), !0));
1063
+ ), e.set(u, JSON.stringify(n.mockup.composition), !0), e.set(h, JSON.stringify(t()), !0));
1051
1064
  }), () => {
1052
1065
  w && clearTimeout(w), e.get(l)?.cleanup();
1053
1066
  }));
1054
- const y = e.derived(() => JSON.stringify(a.mockup.composition)), x = e.derived(() => JSON.stringify(t()));
1067
+ const y = e.derived(() => JSON.stringify(n.mockup.composition)), x = e.derived(() => JSON.stringify(t()));
1055
1068
  e.user_effect(() => {
1056
1069
  e.get(y), e.get(x), e.get(l) && v();
1057
1070
  }), kt(() => {
1058
1071
  w && clearTimeout(w), e.get(l)?.cleanup();
1059
1072
  });
1060
- var I = an();
1061
- let b;
1062
- var k = e.child(I);
1063
- e.bind_this(k, (g) => e.set(i, g), () => e.get(i));
1064
- var C = e.sibling(k, 2);
1073
+ var N = sr();
1074
+ let _;
1075
+ var k = e.child(N);
1076
+ e.bind_this(k, (b) => e.set(s, b), () => e.get(s));
1077
+ var I = e.sibling(k, 2);
1065
1078
  {
1066
- var S = (g) => {
1067
- var u = nn(), p = e.child(u);
1068
- e.reset(u), e.template_effect((o) => e.set_text(p, `${o ?? ""}ms`), [() => e.get(m).toFixed(1)]), e.append(g, u);
1079
+ var z = (b) => {
1080
+ var d = ar(), p = e.child(d);
1081
+ e.reset(d), e.template_effect((i) => e.set_text(p, `${i ?? ""}ms`), [() => e.get(m).toFixed(1)]), e.append(b, d);
1069
1082
  };
1070
- e.if(C, (g) => {
1071
- e.get(m) !== null && g(S);
1083
+ e.if(I, (b) => {
1084
+ e.get(m) !== null && b(z);
1072
1085
  });
1073
1086
  }
1074
- e.reset(I), e.template_effect(() => b = e.set_class(I, 1, "mockup-renderer svelte-1p1rf8j", null, b, {
1075
- contain: s() === "contain",
1076
- cover: s() === "cover"
1077
- })), e.append(r, I), e.pop();
1087
+ e.reset(N), e.template_effect(() => _ = e.set_class(N, 1, "mockup-renderer svelte-1p1rf8j", null, _, {
1088
+ contain: a() === "contain",
1089
+ cover: a() === "cover"
1090
+ })), e.append(o, N), e.pop();
1078
1091
  }
1079
- var rn = e.from_svg('<svg width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle></svg>');
1080
- function on(r, a) {
1081
- let t = e.prop(a, "fontSize", 3, "1em"), s = e.prop(a, "color", 3, "currentColor");
1082
- var n = rn();
1092
+ var lr = e.from_svg('<svg width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle></svg>');
1093
+ function cr(o, n) {
1094
+ let t = e.prop(n, "fontSize", 3, "1em"), a = e.prop(n, "color", 3, "currentColor");
1095
+ var r = lr();
1083
1096
  e.template_effect(() => {
1084
- e.set_style(n, `font-size: ${t() ?? ""};`), e.set_attribute(n, "stroke", s());
1085
- }), e.append(r, n);
1097
+ e.set_style(r, `font-size: ${t() ?? ""};`), e.set_attribute(r, "stroke", a());
1098
+ }), e.append(o, r);
1086
1099
  }
1087
- var ln = e.from_svg('<svg width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17.94 17.94A10.07 10.07 0 0112 20c-7 0-11-8-11-8a18.45 18.45 0 015.06-5.94M9.9 4.24A9.12 9.12 0 0112 4c7 0 11 8 11 8a18.5 18.5 0 01-2.16 3.19m-6.72-1.07a3 3 0 11-4.24-4.24"></path><line x1="1" y1="1" x2="23" y2="23"></line></svg>');
1088
- function cn(r, a) {
1089
- let t = e.prop(a, "fontSize", 3, "1em"), s = e.prop(a, "color", 3, "currentColor");
1090
- var n = ln();
1100
+ var dr = e.from_svg('<svg width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17.94 17.94A10.07 10.07 0 0112 20c-7 0-11-8-11-8a18.45 18.45 0 015.06-5.94M9.9 4.24A9.12 9.12 0 0112 4c7 0 11 8 11 8a18.5 18.5 0 01-2.16 3.19m-6.72-1.07a3 3 0 11-4.24-4.24"></path><line x1="1" y1="1" x2="23" y2="23"></line></svg>');
1101
+ function ur(o, n) {
1102
+ let t = e.prop(n, "fontSize", 3, "1em"), a = e.prop(n, "color", 3, "currentColor");
1103
+ var r = dr();
1091
1104
  e.template_effect(() => {
1092
- e.set_style(n, `font-size: ${t() ?? ""};`), e.set_attribute(n, "stroke", s());
1093
- }), e.append(r, n);
1105
+ e.set_style(r, `font-size: ${t() ?? ""};`), e.set_attribute(r, "stroke", a());
1106
+ }), e.append(o, r);
1094
1107
  }
1095
- var un = e.from_svg('<svg width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke-width="2"><path d="M3 6h18M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2"></path></svg>');
1096
- function Ue(r, a) {
1097
- let t = e.prop(a, "fontSize", 3, "1em"), s = e.prop(a, "color", 3, "currentColor");
1098
- var n = un();
1108
+ var pr = e.from_svg('<svg width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke-width="2"><path d="M3 6h18M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2"></path></svg>');
1109
+ function Ue(o, n) {
1110
+ let t = e.prop(n, "fontSize", 3, "1em"), a = e.prop(n, "color", 3, "currentColor");
1111
+ var r = pr();
1099
1112
  e.template_effect(() => {
1100
- e.set_style(n, `font-size: ${t() ?? ""};`), e.set_attribute(n, "stroke", s());
1101
- }), e.append(r, n);
1113
+ e.set_style(r, `font-size: ${t() ?? ""};`), e.set_attribute(r, "stroke", a());
1114
+ }), e.append(o, r);
1102
1115
  }
1103
- var dn = e.from_svg('<svg width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"></path><path d="M3 3v5h5"></path></svg>');
1104
- function pn(r, a) {
1105
- let t = e.prop(a, "fontSize", 3, "1em"), s = e.prop(a, "color", 3, "currentColor");
1106
- var n = dn();
1116
+ var mr = e.from_svg('<svg width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"></path><path d="M3 3v5h5"></path></svg>');
1117
+ function vr(o, n) {
1118
+ let t = e.prop(n, "fontSize", 3, "1em"), a = e.prop(n, "color", 3, "currentColor");
1119
+ var r = mr();
1107
1120
  e.template_effect(() => {
1108
- e.set_style(n, `font-size: ${t() ?? ""};`), e.set_attribute(n, "stroke", s());
1109
- }), e.append(r, n);
1121
+ e.set_style(r, `font-size: ${t() ?? ""};`), e.set_attribute(r, "stroke", a());
1122
+ }), e.append(o, r);
1110
1123
  }
1111
- var mn = e.from_html('<button type="button" class="reset-btn svelte-18gpljp" title="Reset to default"><!></button>'), vn = e.from_html('<div class="control-group"><div class="control-row svelte-18gpljp"><!> <label class="control-label svelte-18gpljp"><span class="label-text svelte-18gpljp"> </span> <div class="control-content svelte-18gpljp"><!></div></label></div></div>');
1112
- function F(r, a) {
1113
- var t = vn(), s = e.child(t), n = e.child(s);
1124
+ var fr = e.from_html('<button type="button" class="reset-btn svelte-18gpljp" title="Reset to default"><!></button>'), gr = e.from_html('<div class="control-group"><div class="control-row svelte-18gpljp"><!> <label class="control-label svelte-18gpljp"><span class="label-text svelte-18gpljp"> </span> <div class="control-content svelte-18gpljp"><!></div></label></div></div>');
1125
+ const hr = {
1126
+ hash: "svelte-18gpljp",
1127
+ code: ".control-row.svelte-18gpljp {display:flex;align-items:center;gap:0.25rem;min-width:0;max-width:100%;}.reset-btn.svelte-18gpljp {display:flex;align-items:center;justify-content:center;padding:0.25rem;background:transparent;border:none;border-radius:4px;color:var(--color-text-muted, #666);cursor:pointer;opacity:0.5;transition:opacity 0.15s, color 0.15s;}.reset-btn.svelte-18gpljp:hover {opacity:1;color:var(--color-primary, #007bff);}.control-label.svelte-18gpljp {display:flex;align-items:center;gap:0.5rem;flex:1;min-width:0;}.label-text.svelte-18gpljp {width:80px;flex-shrink:0;font-size:0.875rem;color:var(--color-text-muted, #666);}.control-content.svelte-18gpljp {flex:1;display:flex;align-items:center;gap:0.5rem;min-width:0;max-width:100%;overflow:hidden;}"
1128
+ };
1129
+ function F(o, n) {
1130
+ e.append_styles(o, hr);
1131
+ var t = gr(), a = e.child(t), r = e.child(a);
1114
1132
  {
1115
- var i = (_) => {
1116
- var m = mn();
1133
+ var s = (h) => {
1134
+ var m = fr();
1117
1135
  m.__click = function(...v) {
1118
- a.onReset?.apply(this, v);
1136
+ n.onReset?.apply(this, v);
1119
1137
  };
1120
1138
  var T = e.child(m);
1121
- pn(T, { fontSize: "0.875rem" }), e.reset(m), e.append(_, m);
1139
+ vr(T, { fontSize: "0.875rem" }), e.reset(m), e.append(h, m);
1122
1140
  };
1123
- e.if(n, (_) => {
1124
- a.onReset && _(i);
1141
+ e.if(r, (h) => {
1142
+ n.onReset && h(s);
1125
1143
  });
1126
1144
  }
1127
- var l = e.sibling(n, 2), f = e.child(l), h = e.child(f, !0);
1145
+ var l = e.sibling(r, 2), f = e.child(l), g = e.child(f, !0);
1128
1146
  e.reset(f);
1129
- var w = e.sibling(f, 2), d = e.child(w);
1130
- e.snippet(d, () => a.children), e.reset(w), e.reset(l), e.reset(s), e.reset(t), e.template_effect(() => e.set_text(h, a.label)), e.append(r, t);
1147
+ var w = e.sibling(f, 2), u = e.child(w);
1148
+ e.snippet(u, () => n.children), e.reset(w), e.reset(l), e.reset(a), e.reset(t), e.template_effect(() => e.set_text(g, n.label)), e.append(o, t);
1131
1149
  }
1132
1150
  e.delegate(["click"]);
1133
- var fn = e.from_html('<input type="range" step="1" class="svelte-efcks6"/> <input type="number" class="manual-input svelte-efcks6" step="1"/>', 1), hn = e.from_html('<input type="range" step="1" class="svelte-efcks6"/> <input type="number" class="manual-input svelte-efcks6" step="1"/>', 1), _n = e.from_html('<input type="range" step="1" min="-360" max="360" class="svelte-efcks6"/> <input type="number" class="manual-input svelte-efcks6" step="1"/>', 1), gn = e.from_html('<input type="range" min="0" max="1" step="0.01" class="svelte-efcks6"/> <input type="number" class="manual-input svelte-efcks6" step="0.01" min="0" max="1"/>', 1), bn = e.from_html('<details class="section svelte-efcks6" open=""><summary class="section-title svelte-efcks6">Position & Transform</summary> <div class="section-content svelte-efcks6"><details class="subsection svelte-efcks6" open=""><summary class="subsection-title svelte-efcks6">Position</summary> <div class="subsection-content svelte-efcks6"><!> <!></div></details> <details class="subsection svelte-efcks6" open=""><summary class="subsection-title svelte-efcks6">Transform</summary> <div class="subsection-content svelte-efcks6"><!> <!></div></details></div></details>');
1134
- function yn(r, a) {
1135
- e.push(a, !0);
1136
- let t = e.prop(a, "transform", 7), s = e.prop(a, "opacity", 7);
1137
- const n = {
1138
- x: Math.round(a.canvasWidth / 2),
1139
- y: Math.round(a.canvasHeight / 2),
1151
+ var br = e.from_html('<input type="range" step="1" class="svelte-efcks6"/> <input type="number" class="manual-input svelte-efcks6" step="1"/>', 1), _r = e.from_html('<input type="range" step="1" class="svelte-efcks6"/> <input type="number" class="manual-input svelte-efcks6" step="1"/>', 1), yr = e.from_html('<input type="range" step="1" min="-360" max="360" class="svelte-efcks6"/> <input type="number" class="manual-input svelte-efcks6" step="1"/>', 1), wr = e.from_html('<input type="range" min="0" max="1" step="0.01" class="svelte-efcks6"/> <input type="number" class="manual-input svelte-efcks6" step="0.01" min="0" max="1"/>', 1), xr = e.from_html('<details class="section svelte-efcks6" open=""><summary class="section-title svelte-efcks6">Position & Transform</summary> <div class="section-content svelte-efcks6"><details class="subsection svelte-efcks6" open=""><summary class="subsection-title svelte-efcks6">Position</summary> <div class="subsection-content svelte-efcks6"><!> <!></div></details> <details class="subsection svelte-efcks6" open=""><summary class="subsection-title svelte-efcks6">Transform</summary> <div class="subsection-content svelte-efcks6"><!> <!></div></details></div></details>');
1152
+ const kr = {
1153
+ hash: "svelte-efcks6",
1154
+ code: `.section.svelte-efcks6 {border-top:1px solid var(--color-border, #ccc);border-bottom:1px solid var(--color-border, #ccc);background:var(--color-surface, #fff);min-width:0;}.section-title.svelte-efcks6 {padding:0.75rem 0;font-size:0.875rem;font-weight:600;text-transform:uppercase;color:var(--color-text-muted, #666);cursor:pointer;list-style:none;display:flex;align-items:center;gap:0.5rem;border-bottom:1px solid var(--color-border, #eee);}.section-title.svelte-efcks6::-webkit-details-marker {display:none;}.section-title.svelte-efcks6::before {content:'▶';font-size:0.625rem;transition:transform 0.15s ease;}.section[open].svelte-efcks6 > .section-title:where(.svelte-efcks6)::before {transform:rotate(90deg);}.section-content.svelte-efcks6 {padding:0.75rem 0;display:flex;flex-direction:column;gap:0.75rem;}.manual-input.svelte-efcks6 {width:60px;padding:0.375rem 0.5rem;border:1px solid var(--color-border, #ccc);border-radius:4px;font-size:0.875rem;}input[type="range"].svelte-efcks6 {flex:1;min-width:0;max-width:100%;}.subsection.svelte-efcks6 {margin-top:0.75rem;border-top:1px solid var(--color-border, #e0e0e0);}.subsection.svelte-efcks6:first-child {margin-top:0;border-top:none;}.subsection-title.svelte-efcks6 {padding:0.5rem 0;font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:var(--color-text-muted, #666);cursor:pointer;list-style:none;display:flex;align-items:center;gap:0.5rem;}.subsection-title.svelte-efcks6::-webkit-details-marker {display:none;}.subsection-title.svelte-efcks6::before {content:'▶';font-size:0.625rem;transition:transform 0.15s ease;}.subsection[open].svelte-efcks6 > .subsection-title:where(.svelte-efcks6)::before {transform:rotate(90deg);}.subsection-content.svelte-efcks6 {padding-bottom:0.25rem;}`
1155
+ };
1156
+ function Mr(o, n) {
1157
+ e.push(n, !0), e.append_styles(o, kr);
1158
+ let t = e.prop(n, "transform", 7), a = e.prop(n, "opacity", 7);
1159
+ const r = {
1160
+ x: Math.round(n.canvasWidth / 2),
1161
+ y: Math.round(n.canvasHeight / 2),
1140
1162
  rotation: 0,
1141
1163
  opacity: 1
1142
1164
  };
1143
- function i(C) {
1144
- a.onTransformChange({ ...t(), ...C });
1165
+ function s(I) {
1166
+ n.onTransformChange({ ...t(), ...I });
1145
1167
  }
1146
- const l = -a.canvasWidth / 2, f = a.canvasWidth * 1.5, h = -a.canvasHeight / 2, w = a.canvasHeight * 1.5;
1147
- var d = bn(), _ = e.sibling(e.child(d), 2), m = e.child(_), T = e.sibling(e.child(m), 2), v = e.child(T);
1168
+ const l = -n.canvasWidth / 2, f = n.canvasWidth * 1.5, g = -n.canvasHeight / 2, w = n.canvasHeight * 1.5;
1169
+ var u = xr(), h = e.sibling(e.child(u), 2), m = e.child(h), T = e.sibling(e.child(m), 2), v = e.child(T);
1148
1170
  F(v, {
1149
1171
  label: "Position X",
1150
- onReset: () => i({ x: n.x }),
1151
- children: (C, S) => {
1152
- var g = fn(), u = e.first_child(g);
1153
- e.remove_input_defaults(u), u.__input = (o) => i({ x: Number(o.currentTarget.value) });
1154
- var p = e.sibling(u, 2);
1155
- e.remove_input_defaults(p), p.__input = (o) => i({ x: Number(o.currentTarget.value) }), e.template_effect(() => {
1156
- e.set_attribute(u, "min", l), e.set_attribute(u, "max", f);
1157
- }), e.bind_value(u, () => t().x, (o) => t().x = o), e.bind_value(p, () => t().x, (o) => t().x = o), e.append(C, g);
1172
+ onReset: () => s({ x: r.x }),
1173
+ children: (I, z) => {
1174
+ var b = br(), d = e.first_child(b);
1175
+ e.remove_input_defaults(d), d.__input = (i) => s({ x: Number(i.currentTarget.value) });
1176
+ var p = e.sibling(d, 2);
1177
+ e.remove_input_defaults(p), p.__input = (i) => s({ x: Number(i.currentTarget.value) }), e.template_effect(() => {
1178
+ e.set_attribute(d, "min", l), e.set_attribute(d, "max", f);
1179
+ }), e.bind_value(d, () => t().x, (i) => t().x = i), e.bind_value(p, () => t().x, (i) => t().x = i), e.append(I, b);
1158
1180
  }
1159
1181
  });
1160
1182
  var y = e.sibling(v, 2);
1161
1183
  F(y, {
1162
1184
  label: "Position Y",
1163
- onReset: () => i({ y: n.y }),
1164
- children: (C, S) => {
1165
- var g = hn(), u = e.first_child(g);
1166
- e.remove_input_defaults(u), u.__input = (o) => i({ y: Number(o.currentTarget.value) });
1167
- var p = e.sibling(u, 2);
1168
- e.remove_input_defaults(p), p.__input = (o) => i({ y: Number(o.currentTarget.value) }), e.template_effect(() => {
1169
- e.set_attribute(u, "min", h), e.set_attribute(u, "max", w);
1170
- }), e.bind_value(u, () => t().y, (o) => t().y = o), e.bind_value(p, () => t().y, (o) => t().y = o), e.append(C, g);
1185
+ onReset: () => s({ y: r.y }),
1186
+ children: (I, z) => {
1187
+ var b = _r(), d = e.first_child(b);
1188
+ e.remove_input_defaults(d), d.__input = (i) => s({ y: Number(i.currentTarget.value) });
1189
+ var p = e.sibling(d, 2);
1190
+ e.remove_input_defaults(p), p.__input = (i) => s({ y: Number(i.currentTarget.value) }), e.template_effect(() => {
1191
+ e.set_attribute(d, "min", g), e.set_attribute(d, "max", w);
1192
+ }), e.bind_value(d, () => t().y, (i) => t().y = i), e.bind_value(p, () => t().y, (i) => t().y = i), e.append(I, b);
1171
1193
  }
1172
1194
  }), e.reset(T), e.reset(m);
1173
- var x = e.sibling(m, 2), I = e.sibling(e.child(x), 2), b = e.child(I);
1174
- F(b, {
1195
+ var x = e.sibling(m, 2), N = e.sibling(e.child(x), 2), _ = e.child(N);
1196
+ F(_, {
1175
1197
  label: "Rotation (°)",
1176
- onReset: () => i({ rotation: n.rotation }),
1177
- children: (C, S) => {
1178
- var g = _n(), u = e.first_child(g);
1179
- e.remove_input_defaults(u), u.__input = (o) => i({ rotation: Number(o.currentTarget.value) });
1180
- var p = e.sibling(u, 2);
1181
- e.remove_input_defaults(p), p.__input = (o) => i({ rotation: Number(o.currentTarget.value) }), e.bind_value(u, () => t().rotation, (o) => t().rotation = o), e.bind_value(p, () => t().rotation, (o) => t().rotation = o), e.append(C, g);
1198
+ onReset: () => s({ rotation: r.rotation }),
1199
+ children: (I, z) => {
1200
+ var b = yr(), d = e.first_child(b);
1201
+ e.remove_input_defaults(d), d.__input = (i) => s({ rotation: Number(i.currentTarget.value) });
1202
+ var p = e.sibling(d, 2);
1203
+ e.remove_input_defaults(p), p.__input = (i) => s({ rotation: Number(i.currentTarget.value) }), e.bind_value(d, () => t().rotation, (i) => t().rotation = i), e.bind_value(p, () => t().rotation, (i) => t().rotation = i), e.append(I, b);
1182
1204
  }
1183
1205
  });
1184
- var k = e.sibling(b, 2);
1206
+ var k = e.sibling(_, 2);
1185
1207
  F(k, {
1186
1208
  label: "Opacity",
1187
- onReset: () => a.onOpacityChange(n.opacity),
1188
- children: (C, S) => {
1189
- var g = gn(), u = e.first_child(g);
1190
- e.remove_input_defaults(u), u.__input = (o) => a.onOpacityChange(Number(o.currentTarget.value));
1191
- var p = e.sibling(u, 2);
1192
- e.remove_input_defaults(p), p.__input = (o) => a.onOpacityChange(Number(o.currentTarget.value)), e.bind_value(u, s), e.bind_value(p, s), e.append(C, g);
1209
+ onReset: () => n.onOpacityChange(r.opacity),
1210
+ children: (I, z) => {
1211
+ var b = wr(), d = e.first_child(b);
1212
+ e.remove_input_defaults(d), d.__input = (i) => n.onOpacityChange(Number(i.currentTarget.value));
1213
+ var p = e.sibling(d, 2);
1214
+ e.remove_input_defaults(p), p.__input = (i) => n.onOpacityChange(Number(i.currentTarget.value)), e.bind_value(d, a), e.bind_value(p, a), e.append(I, b);
1193
1215
  }
1194
- }), e.reset(I), e.reset(x), e.reset(_), e.reset(d), e.append(r, d), e.pop();
1216
+ }), e.reset(N), e.reset(x), e.reset(h), e.reset(u), e.append(o, u), e.pop();
1195
1217
  }
1196
1218
  e.delegate(["input"]);
1197
- var wn = e.from_html('<select class="mode-select svelte-1qmrgom"><option>Scale</option><option>Px</option></select>'), xn = e.from_html('<input type="range" step="0.1" min="0.1" max="10" class="svelte-1qmrgom"/> <input type="number" class="manual-input svelte-1qmrgom" step="0.1" min="0.1" max="10"/>', 1), kn = e.from_html('<input type="number" class="px-input svelte-1qmrgom" step="1" min="1" placeholder="Auto"/> <select class="constraint-select svelte-1qmrgom"><option>None</option><option>Min</option><option>Max</option></select>', 1), Mn = e.from_html('<input type="number" class="px-input svelte-1qmrgom" step="1" min="1" placeholder="Auto"/> <select class="constraint-select svelte-1qmrgom"><option>None</option><option>Min</option><option>Max</option></select>', 1), Tn = e.from_html('<input type="checkbox"/>'), Sn = e.from_html("<!> <!> <!>", 1), Nn = e.from_html('<details class="section svelte-1qmrgom" open=""><summary class="section-title svelte-1qmrgom">Sizing</summary> <div class="section-content svelte-1qmrgom"><!> <!></div></details>');
1198
- function In(r, a) {
1199
- e.push(a, !0);
1200
- let t = e.prop(a, "effect", 3, fe);
1201
- function s(d) {
1202
- a.onChange({ ...t(), ...d });
1203
- }
1204
- var n = Nn(), i = e.sibling(e.child(n), 2), l = e.child(i);
1219
+ var Tr = e.from_html('<select class="mode-select svelte-1qmrgom"><option>Scale</option><option>Px</option></select>'), zr = e.from_html('<input type="range" step="0.1" min="0.1" max="10" class="svelte-1qmrgom"/> <input type="number" class="manual-input svelte-1qmrgom" step="0.1" min="0.1" max="10"/>', 1), Sr = e.from_html('<input type="number" class="px-input svelte-1qmrgom" step="1" min="1" placeholder="Auto"/> <select class="constraint-select svelte-1qmrgom"><option>None</option><option>Min</option><option>Max</option></select>', 1), Nr = e.from_html('<input type="number" class="px-input svelte-1qmrgom" step="1" min="1" placeholder="Auto"/> <select class="constraint-select svelte-1qmrgom"><option>None</option><option>Min</option><option>Max</option></select>', 1), Ir = e.from_html('<input type="checkbox"/>'), Cr = e.from_html("<!> <!> <!>", 1), Pr = e.from_html('<details class="section svelte-1qmrgom" open=""><summary class="section-title svelte-1qmrgom">Sizing</summary> <div class="section-content svelte-1qmrgom"><!> <!></div></details>');
1220
+ const Rr = {
1221
+ hash: "svelte-1qmrgom",
1222
+ code: `.section.svelte-1qmrgom {border-top:1px solid var(--color-border, #ccc);border-bottom:1px solid var(--color-border, #ccc);background:var(--color-surface, #fff);min-width:0;}.section-title.svelte-1qmrgom {padding:0.75rem 0;font-size:0.875rem;font-weight:600;text-transform:uppercase;color:var(--color-text-muted, #666);cursor:pointer;list-style:none;display:flex;align-items:center;gap:0.5rem;border-bottom:1px solid var(--color-border, #eee);}.section-title.svelte-1qmrgom::-webkit-details-marker {display:none;}.section-title.svelte-1qmrgom::before {content:'▶';font-size:0.625rem;transition:transform 0.15s ease;}.section[open].svelte-1qmrgom > .section-title:where(.svelte-1qmrgom)::before {transform:rotate(90deg);}.section-content.svelte-1qmrgom {padding:0.75rem 0;display:flex;flex-direction:column;gap:0.75rem;}.mode-select.svelte-1qmrgom {padding:0.375rem 0.5rem;border:1px solid var(--color-border, #ccc);border-radius:4px;font-size:0.875rem;background:var(--color-surface, #fff);}.px-input.svelte-1qmrgom {width:50px;padding:0.375rem 0.5rem;border:1px solid var(--color-border, #ccc);border-radius:4px;font-size:0.875rem;appearance:textfield;-moz-appearance:textfield;}.px-input.svelte-1qmrgom::-webkit-outer-spin-button,
1223
+ .px-input.svelte-1qmrgom::-webkit-inner-spin-button {-webkit-appearance:none;margin:0;}.constraint-select.svelte-1qmrgom {width:70px;flex-shrink:0;padding:0.375rem 0.5rem;border:1px solid var(--color-border, #ccc);border-radius:4px;font-size:0.875rem;}.manual-input.svelte-1qmrgom {width:60px;padding:0.375rem 0.5rem;border:1px solid var(--color-border, #ccc);border-radius:4px;font-size:0.875rem;}input[type="range"].svelte-1qmrgom {flex:1;min-width:0;max-width:100%;}`
1224
+ };
1225
+ function jr(o, n) {
1226
+ e.push(n, !0), e.append_styles(o, Rr);
1227
+ let t = e.prop(n, "effect", 3, fe);
1228
+ function a(u) {
1229
+ n.onChange({ ...t(), ...u });
1230
+ }
1231
+ var r = Pr(), s = e.sibling(e.child(r), 2), l = e.child(s);
1205
1232
  F(l, {
1206
1233
  label: "Mode",
1207
- onReset: () => s({ mode: fe.mode }),
1208
- children: (d, _) => {
1209
- var m = wn();
1210
- m.__change = (x) => s({ mode: x.currentTarget.value });
1234
+ onReset: () => a({ mode: fe.mode }),
1235
+ children: (u, h) => {
1236
+ var m = Tr();
1237
+ m.__change = (x) => a({ mode: x.currentTarget.value });
1211
1238
  var T = e.child(m);
1212
1239
  T.value = T.__value = "scale";
1213
1240
  var v = e.sibling(T);
@@ -1215,156 +1242,164 @@ function In(r, a) {
1215
1242
  var y;
1216
1243
  e.init_select(m), e.template_effect(() => {
1217
1244
  y !== (y = t().mode) && (m.value = (m.__value = t().mode) ?? "", e.select_option(m, t().mode));
1218
- }), e.append(d, m);
1245
+ }), e.append(u, m);
1219
1246
  }
1220
1247
  });
1221
1248
  var f = e.sibling(l, 2);
1222
1249
  {
1223
- var h = (d) => {
1224
- F(d, {
1250
+ var g = (u) => {
1251
+ F(u, {
1225
1252
  label: "Scale",
1226
- onReset: () => s({ scale: fe.scale }),
1227
- children: (_, m) => {
1228
- var T = xn(), v = e.first_child(T);
1229
- e.remove_input_defaults(v), v.__input = (x) => s({ scale: Number(x.currentTarget.value) });
1253
+ onReset: () => a({ scale: fe.scale }),
1254
+ children: (h, m) => {
1255
+ var T = zr(), v = e.first_child(T);
1256
+ e.remove_input_defaults(v), v.__input = (x) => a({ scale: Number(x.currentTarget.value) });
1230
1257
  var y = e.sibling(v, 2);
1231
- e.remove_input_defaults(y), y.__input = (x) => s({ scale: Number(x.currentTarget.value) }), e.template_effect(() => {
1258
+ e.remove_input_defaults(y), y.__input = (x) => a({ scale: Number(x.currentTarget.value) }), e.template_effect(() => {
1232
1259
  e.set_value(v, t().scale ?? 1), e.set_value(y, t().scale ?? 1);
1233
- }), e.append(_, T);
1260
+ }), e.append(h, T);
1234
1261
  }
1235
1262
  });
1236
- }, w = (d) => {
1237
- var _ = Sn(), m = e.first_child(_);
1263
+ }, w = (u) => {
1264
+ var h = Cr(), m = e.first_child(h);
1238
1265
  F(m, {
1239
1266
  label: "Width",
1240
- onReset: () => s({ width: void 0, minWidth: void 0, maxWidth: void 0 }),
1267
+ onReset: () => a({ width: void 0, minWidth: void 0, maxWidth: void 0 }),
1241
1268
  children: (y, x) => {
1242
- var I = kn(), b = e.first_child(I);
1243
- e.remove_input_defaults(b), b.__input = (p) => {
1244
- const o = p.currentTarget.value ? Number(p.currentTarget.value) : void 0, c = t().minWidth !== void 0 ? "min" : t().maxWidth !== void 0 ? "max" : "";
1245
- s(c === "min" ? { width: o, minWidth: o, maxWidth: void 0 } : c === "max" ? { width: o, maxWidth: o, minWidth: void 0 } : { width: o });
1269
+ var N = Sr(), _ = e.first_child(N);
1270
+ e.remove_input_defaults(_), _.__input = (p) => {
1271
+ const i = p.currentTarget.value ? Number(p.currentTarget.value) : void 0, c = t().minWidth !== void 0 ? "min" : t().maxWidth !== void 0 ? "max" : "";
1272
+ a(c === "min" ? { width: i, minWidth: i, maxWidth: void 0 } : c === "max" ? { width: i, maxWidth: i, minWidth: void 0 } : { width: i });
1246
1273
  };
1247
- var k = e.sibling(b, 2);
1274
+ var k = e.sibling(_, 2);
1248
1275
  k.__change = (p) => {
1249
- const o = t().width ?? t().minWidth ?? t().maxWidth;
1250
- p.currentTarget.value === "min" && o !== void 0 ? s({ minWidth: o, maxWidth: void 0 }) : p.currentTarget.value === "max" && o !== void 0 ? s({ maxWidth: o, minWidth: void 0 }) : s({ minWidth: void 0, maxWidth: void 0 });
1276
+ const i = t().width ?? t().minWidth ?? t().maxWidth;
1277
+ p.currentTarget.value === "min" && i !== void 0 ? a({ minWidth: i, maxWidth: void 0 }) : p.currentTarget.value === "max" && i !== void 0 ? a({ maxWidth: i, minWidth: void 0 }) : a({ minWidth: void 0, maxWidth: void 0 });
1251
1278
  };
1252
- var C = e.child(k);
1253
- C.value = C.__value = "";
1254
- var S = e.sibling(C);
1255
- S.value = S.__value = "min";
1256
- var g = e.sibling(S);
1257
- g.value = g.__value = "max", e.reset(k);
1258
- var u;
1279
+ var I = e.child(k);
1280
+ I.value = I.__value = "";
1281
+ var z = e.sibling(I);
1282
+ z.value = z.__value = "min";
1283
+ var b = e.sibling(z);
1284
+ b.value = b.__value = "max", e.reset(k);
1285
+ var d;
1259
1286
  e.init_select(k), e.template_effect(() => {
1260
- e.set_value(b, t().width ?? t().minWidth ?? t().maxWidth ?? ""), u !== (u = t().minWidth !== void 0 ? "min" : t().maxWidth !== void 0 ? "max" : "") && (k.value = k.__value = t().minWidth !== void 0 ? "min" : t().maxWidth !== void 0 ? "max" : "", e.select_option(k, t().minWidth !== void 0 ? "min" : t().maxWidth !== void 0 ? "max" : ""));
1261
- }), e.append(y, I);
1287
+ e.set_value(_, t().width ?? t().minWidth ?? t().maxWidth ?? ""), d !== (d = t().minWidth !== void 0 ? "min" : t().maxWidth !== void 0 ? "max" : "") && (k.value = k.__value = t().minWidth !== void 0 ? "min" : t().maxWidth !== void 0 ? "max" : "", e.select_option(k, t().minWidth !== void 0 ? "min" : t().maxWidth !== void 0 ? "max" : ""));
1288
+ }), e.append(y, N);
1262
1289
  }
1263
1290
  });
1264
1291
  var T = e.sibling(m, 2);
1265
1292
  F(T, {
1266
1293
  label: "Height",
1267
- onReset: () => s({
1294
+ onReset: () => a({
1268
1295
  height: void 0,
1269
1296
  minHeight: void 0,
1270
1297
  maxHeight: void 0
1271
1298
  }),
1272
1299
  children: (y, x) => {
1273
- var I = Mn(), b = e.first_child(I);
1274
- e.remove_input_defaults(b), b.__input = (p) => {
1275
- const o = p.currentTarget.value ? Number(p.currentTarget.value) : void 0, c = t().minHeight !== void 0 ? "min" : t().maxHeight !== void 0 ? "max" : "";
1276
- s(c === "min" ? { height: o, minHeight: o, maxHeight: void 0 } : c === "max" ? { height: o, maxHeight: o, minHeight: void 0 } : { height: o });
1300
+ var N = Nr(), _ = e.first_child(N);
1301
+ e.remove_input_defaults(_), _.__input = (p) => {
1302
+ const i = p.currentTarget.value ? Number(p.currentTarget.value) : void 0, c = t().minHeight !== void 0 ? "min" : t().maxHeight !== void 0 ? "max" : "";
1303
+ a(c === "min" ? { height: i, minHeight: i, maxHeight: void 0 } : c === "max" ? { height: i, maxHeight: i, minHeight: void 0 } : { height: i });
1277
1304
  };
1278
- var k = e.sibling(b, 2);
1305
+ var k = e.sibling(_, 2);
1279
1306
  k.__change = (p) => {
1280
- const o = t().height ?? t().minHeight ?? t().maxHeight;
1281
- p.currentTarget.value === "min" && o !== void 0 ? s({ minHeight: o, maxHeight: void 0 }) : p.currentTarget.value === "max" && o !== void 0 ? s({ maxHeight: o, minHeight: void 0 }) : s({ minHeight: void 0, maxHeight: void 0 });
1307
+ const i = t().height ?? t().minHeight ?? t().maxHeight;
1308
+ p.currentTarget.value === "min" && i !== void 0 ? a({ minHeight: i, maxHeight: void 0 }) : p.currentTarget.value === "max" && i !== void 0 ? a({ maxHeight: i, minHeight: void 0 }) : a({ minHeight: void 0, maxHeight: void 0 });
1282
1309
  };
1283
- var C = e.child(k);
1284
- C.value = C.__value = "";
1285
- var S = e.sibling(C);
1286
- S.value = S.__value = "min";
1287
- var g = e.sibling(S);
1288
- g.value = g.__value = "max", e.reset(k);
1289
- var u;
1310
+ var I = e.child(k);
1311
+ I.value = I.__value = "";
1312
+ var z = e.sibling(I);
1313
+ z.value = z.__value = "min";
1314
+ var b = e.sibling(z);
1315
+ b.value = b.__value = "max", e.reset(k);
1316
+ var d;
1290
1317
  e.init_select(k), e.template_effect(() => {
1291
- e.set_value(b, t().height ?? t().minHeight ?? t().maxHeight ?? ""), u !== (u = t().minHeight !== void 0 ? "min" : t().maxHeight !== void 0 ? "max" : "") && (k.value = k.__value = t().minHeight !== void 0 ? "min" : t().maxHeight !== void 0 ? "max" : "", e.select_option(k, t().minHeight !== void 0 ? "min" : t().maxHeight !== void 0 ? "max" : ""));
1292
- }), e.append(y, I);
1318
+ e.set_value(_, t().height ?? t().minHeight ?? t().maxHeight ?? ""), d !== (d = t().minHeight !== void 0 ? "min" : t().maxHeight !== void 0 ? "max" : "") && (k.value = k.__value = t().minHeight !== void 0 ? "min" : t().maxHeight !== void 0 ? "max" : "", e.select_option(k, t().minHeight !== void 0 ? "min" : t().maxHeight !== void 0 ? "max" : ""));
1319
+ }), e.append(y, N);
1293
1320
  }
1294
1321
  });
1295
1322
  var v = e.sibling(T, 2);
1296
1323
  F(v, {
1297
1324
  label: "Maintain Aspect",
1298
- onReset: () => s({ maintainAspectRatio: fe.maintainAspectRatio }),
1325
+ onReset: () => a({ maintainAspectRatio: fe.maintainAspectRatio }),
1299
1326
  children: (y, x) => {
1300
- var I = Tn();
1301
- e.remove_input_defaults(I), I.__change = (b) => s({ maintainAspectRatio: b.currentTarget.checked }), e.template_effect(() => e.set_checked(I, t().maintainAspectRatio ?? !0)), e.append(y, I);
1327
+ var N = Ir();
1328
+ e.remove_input_defaults(N), N.__change = (_) => a({ maintainAspectRatio: _.currentTarget.checked }), e.template_effect(() => e.set_checked(N, t().maintainAspectRatio ?? !0)), e.append(y, N);
1302
1329
  }
1303
- }), e.append(d, _);
1330
+ }), e.append(u, h);
1304
1331
  };
1305
- e.if(f, (d) => {
1306
- t().mode === "scale" ? d(h) : d(w, !1);
1332
+ e.if(f, (u) => {
1333
+ t().mode === "scale" ? u(g) : u(w, !1);
1307
1334
  });
1308
1335
  }
1309
- e.reset(i), e.reset(n), e.append(r, n), e.pop();
1336
+ e.reset(s), e.reset(r), e.append(o, r), e.pop();
1310
1337
  }
1311
1338
  e.delegate(["change", "input"]);
1312
- var Cn = e.from_html('<span class="section-toggle svelte-1h62jm0"> </span>'), Pn = e.from_html('<div class="section-content svelte-1h62jm0"><!></div>'), Rn = e.from_html('<div class="section svelte-1h62jm0"><div class="section-header svelte-1h62jm0"><h3 class="section-title svelte-1h62jm0"> </h3> <!></div> <!></div>');
1313
- function Wn(r, a) {
1314
- e.push(a, !0);
1315
- let t = e.state(e.proxy(a.config.defaultCollapsed ?? !1));
1316
- var s = Rn(), n = e.child(s);
1317
- n.__click = () => a.config.collapsible && e.set(t, !e.get(t));
1318
- var i = e.child(n), l = e.child(i, !0);
1319
- e.reset(i);
1320
- var f = e.sibling(i, 2);
1339
+ var Wr = e.from_html('<span class="section-toggle svelte-1h62jm0"> </span>'), Dr = e.from_html('<div class="section-content svelte-1h62jm0"><!></div>'), Xr = e.from_html('<div class="section svelte-1h62jm0"><div class="section-header svelte-1h62jm0"><h3 class="section-title svelte-1h62jm0"> </h3> <!></div> <!></div>');
1340
+ const Yr = {
1341
+ hash: "svelte-1h62jm0",
1342
+ code: ".section.svelte-1h62jm0 {border-top:1px solid var(--color-border, #ccc);border-bottom:1px solid var(--color-border, #ccc);background:var(--color-surface, #fff);min-width:0;}.section-header.svelte-1h62jm0 {display:flex;align-items:center;justify-content:space-between;padding:0.75rem 0;border-bottom:1px solid var(--color-border, #eee);cursor:pointer;}.section-title.svelte-1h62jm0 {margin:0;font-size:0.875rem;font-weight:600;text-transform:uppercase;color:var(--color-text-muted, #666);}.section-toggle.svelte-1h62jm0 {font-size:0.75rem;color:var(--color-text-muted, #666);}.section-content.svelte-1h62jm0 {padding:0.75rem 0;display:flex;flex-direction:column;gap:0.75rem;}"
1343
+ };
1344
+ function qr(o, n) {
1345
+ e.push(n, !0), e.append_styles(o, Yr);
1346
+ let t = e.state(e.proxy(n.config.defaultCollapsed ?? !1));
1347
+ var a = Xr(), r = e.child(a);
1348
+ r.__click = () => n.config.collapsible && e.set(t, !e.get(t));
1349
+ var s = e.child(r), l = e.child(s, !0);
1350
+ e.reset(s);
1351
+ var f = e.sibling(s, 2);
1321
1352
  {
1322
- var h = (_) => {
1323
- var m = Cn(), T = e.child(m, !0);
1324
- e.reset(m), e.template_effect(() => e.set_text(T, e.get(t) ? "▼" : "▲")), e.append(_, m);
1353
+ var g = (h) => {
1354
+ var m = Wr(), T = e.child(m, !0);
1355
+ e.reset(m), e.template_effect(() => e.set_text(T, e.get(t) ? "▼" : "▲")), e.append(h, m);
1325
1356
  };
1326
- e.if(f, (_) => {
1327
- a.config.collapsible && _(h);
1357
+ e.if(f, (h) => {
1358
+ n.config.collapsible && h(g);
1328
1359
  });
1329
1360
  }
1330
- e.reset(n);
1331
- var w = e.sibling(n, 2);
1361
+ e.reset(r);
1362
+ var w = e.sibling(r, 2);
1332
1363
  {
1333
- var d = (_) => {
1334
- var m = Pn(), T = e.child(m);
1335
- e.snippet(T, () => a.children), e.reset(m), e.append(_, m);
1364
+ var u = (h) => {
1365
+ var m = Dr(), T = e.child(m);
1366
+ e.snippet(T, () => n.children), e.reset(m), e.append(h, m);
1336
1367
  };
1337
- e.if(w, (_) => {
1338
- e.get(t) || _(d);
1368
+ e.if(w, (h) => {
1369
+ e.get(t) || h(u);
1339
1370
  });
1340
1371
  }
1341
- e.reset(s), e.template_effect(() => e.set_text(l, a.config.title)), e.append(r, s), e.pop();
1372
+ e.reset(a), e.template_effect(() => e.set_text(l, n.config.title)), e.append(o, a), e.pop();
1342
1373
  }
1343
1374
  e.delegate(["click"]);
1344
- var zn = e.from_html('<input type="checkbox"/>'), Dn = e.from_html('<select class="shape-select svelte-1ani6pi"><option>None</option><option>Plane</option><option>Cylinder</option><option>Sphere</option></select>'), Xn = e.from_html('<input type="range" step="0.5" min="0.5" max="4" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="0.5" min="0.5" max="4"/>', 1), Yn = e.from_html('<input type="range" step="0.05" min="0.1" max="5" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="0.05" min="0.1" max="5"/>', 1), Bn = e.from_html('<input type="range" step="0.01" min="-1" max="1" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="0.01" min="-1" max="1"/>', 1), En = e.from_html('<input type="range" step="0.01" min="-1" max="1" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="0.01" min="-1" max="1"/>', 1), Zn = e.from_html('<details class="subsection svelte-1ani6pi" open=""><summary class="subsection-title svelte-1ani6pi">Image Position & Sizing</summary> <div class="subsection-content svelte-1ani6pi"><!> <!> <!></div></details>'), On = e.from_html('<input type="range" step="1" min="-90" max="90" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="1" min="-90" max="90"/>', 1), Ln = e.from_html('<input type="range" step="1" min="-90" max="90" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="1" min="-90" max="90"/>', 1), jn = e.from_html('<input type="range" step="1" min="-180" max="180" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="1" min="-180" max="180"/>', 1), qn = e.from_html('<input type="range" step="0.1" min="0" max="3" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="0.1" min="0" max="3"/>', 1), Hn = e.from_html('<details class="subsection svelte-1ani6pi" open=""><summary class="subsection-title svelte-1ani6pi">Surface Settings</summary> <div class="subsection-content svelte-1ani6pi"><!> <!> <!> <!></div></details>'), An = e.from_html('<input type="range" step="10" min="50" max="2000" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="10" min="50" max="2000"/>', 1), Un = e.from_html('<input type="range" step="0.1" min="0" max="5" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="0.1" min="0" max="10"/>', 1), Vn = e.from_html('<input type="range" step="1" min="-90" max="90" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="1" min="-90" max="90"/>', 1), Fn = e.from_html('<input type="range" step="1" min="-180" max="180" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="1" min="-180" max="180"/>', 1), Kn = e.from_html('<details class="subsection svelte-1ani6pi" open=""><summary class="subsection-title svelte-1ani6pi">Surface Settings</summary> <div class="subsection-content svelte-1ani6pi"><!> <!> <!> <!></div></details>'), Jn = e.from_html('<input type="range" step="10" min="50" max="1000" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="10" min="50" max="1000"/>', 1), Gn = e.from_html('<input type="range" step="1" min="-180" max="180" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="1" min="-180" max="180"/>', 1), Qn = e.from_html('<details class="subsection svelte-1ani6pi" open=""><summary class="subsection-title svelte-1ani6pi">Surface Settings</summary> <div class="subsection-content svelte-1ani6pi"><!> <!></div></details>'), $n = e.from_html('<input type="checkbox"/>'), ea = e.from_html('<input type="checkbox"/>'), ta = e.from_html('<input type="checkbox"/>'), na = e.from_html('<details class="subsection svelte-1ani6pi"><summary class="subsection-title svelte-1ani6pi">Debug Visualization</summary> <div class="subsection-content svelte-1ani6pi"><!> <!> <!></div></details>'), aa = e.from_html("<!> <!> <!> <!> <!> <!> <!>", 1), sa = e.from_html("<!> <!>", 1);
1345
- function ia(r, a) {
1346
- e.push(a, !0);
1347
- const t = e.derived(() => a.effect ?? $e), s = e.derived(() => e.get(t).image ?? ie), n = e.derived(() => e.get(t).debug ?? ve);
1348
- function i(T) {
1375
+ var Br = e.from_html('<input type="checkbox"/>'), Er = e.from_html('<select class="shape-select svelte-1ani6pi"><option>None</option><option>Plane</option><option>Cylinder</option><option>Sphere</option></select>'), Zr = e.from_html('<input type="range" step="0.5" min="0.5" max="4" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="0.5" min="0.5" max="4"/>', 1), Or = e.from_html('<input type="range" step="0.05" min="0.1" max="5" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="0.05" min="0.1" max="5"/>', 1), Lr = e.from_html('<input type="range" step="0.01" min="-1" max="1" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="0.01" min="-1" max="1"/>', 1), Hr = e.from_html('<input type="range" step="0.01" min="-1" max="1" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="0.01" min="-1" max="1"/>', 1), Ar = e.from_html('<details class="subsection svelte-1ani6pi" open=""><summary class="subsection-title svelte-1ani6pi">Image Position & Sizing</summary> <div class="subsection-content svelte-1ani6pi"><!> <!> <!></div></details>'), Ur = e.from_html('<input type="range" step="1" min="-90" max="90" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="1" min="-90" max="90"/>', 1), Vr = e.from_html('<input type="range" step="1" min="-90" max="90" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="1" min="-90" max="90"/>', 1), Fr = e.from_html('<input type="range" step="1" min="-180" max="180" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="1" min="-180" max="180"/>', 1), Kr = e.from_html('<input type="range" step="0.1" min="0" max="3" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="0.1" min="0" max="3"/>', 1), Jr = e.from_html('<details class="subsection svelte-1ani6pi" open=""><summary class="subsection-title svelte-1ani6pi">Surface Settings</summary> <div class="subsection-content svelte-1ani6pi"><!> <!> <!> <!></div></details>'), Gr = e.from_html('<input type="range" step="10" min="50" max="2000" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="10" min="50" max="2000"/>', 1), $r = e.from_html('<input type="range" step="0.1" min="0" max="5" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="0.1" min="0" max="10"/>', 1), Qr = e.from_html('<input type="range" step="1" min="-90" max="90" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="1" min="-90" max="90"/>', 1), en = e.from_html('<input type="range" step="1" min="-180" max="180" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="1" min="-180" max="180"/>', 1), tn = e.from_html('<details class="subsection svelte-1ani6pi" open=""><summary class="subsection-title svelte-1ani6pi">Surface Settings</summary> <div class="subsection-content svelte-1ani6pi"><!> <!> <!> <!></div></details>'), rn = e.from_html('<input type="range" step="10" min="50" max="1000" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="10" min="50" max="1000"/>', 1), nn = e.from_html('<input type="range" step="1" min="-180" max="180" class="svelte-1ani6pi"/> <input type="number" class="manual-input svelte-1ani6pi" step="1" min="-180" max="180"/>', 1), an = e.from_html('<details class="subsection svelte-1ani6pi" open=""><summary class="subsection-title svelte-1ani6pi">Surface Settings</summary> <div class="subsection-content svelte-1ani6pi"><!> <!></div></details>'), sn = e.from_html('<input type="checkbox"/>'), on = e.from_html('<input type="checkbox"/>'), ln = e.from_html('<input type="checkbox"/>'), cn = e.from_html('<details class="subsection svelte-1ani6pi"><summary class="subsection-title svelte-1ani6pi">Debug Visualization</summary> <div class="subsection-content svelte-1ani6pi"><!> <!> <!></div></details>'), dn = e.from_html("<!> <!> <!> <!> <!> <!> <!>", 1), un = e.from_html("<!> <!>", 1);
1376
+ const pn = {
1377
+ hash: "svelte-1ani6pi",
1378
+ code: `.shape-select.svelte-1ani6pi {padding:0.375rem 0.5rem;border:1px solid var(--color-border, #ccc);border-radius:4px;font-size:0.875rem;background:var(--color-surface, #fff);}.manual-input.svelte-1ani6pi {width:60px;padding:0.375rem 0.5rem;border:1px solid var(--color-border, #ccc);border-radius:4px;font-size:0.875rem;}input[type="range"].svelte-1ani6pi {flex:1;min-width:0;max-width:100%;}.subsection.svelte-1ani6pi {margin-top:0.75rem;border-top:1px solid var(--color-border, #e0e0e0);}.subsection-title.svelte-1ani6pi {padding:0.5rem 0;font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:var(--color-text-muted, #666);cursor:pointer;list-style:none;display:flex;align-items:center;gap:0.5rem;}.subsection-title.svelte-1ani6pi::-webkit-details-marker {display:none;}.subsection-title.svelte-1ani6pi::before {content:'▶';font-size:0.625rem;transition:transform 0.15s ease;}.subsection[open].svelte-1ani6pi > .subsection-title:where(.svelte-1ani6pi)::before {transform:rotate(90deg);}.subsection-content.svelte-1ani6pi {padding-bottom:0.25rem;}`
1379
+ };
1380
+ function mn(o, n) {
1381
+ e.push(n, !0), e.append_styles(o, pn);
1382
+ const t = e.derived(() => n.effect ?? Qe), a = e.derived(() => e.get(t).image ?? se), r = e.derived(() => e.get(t).debug ?? ve);
1383
+ function s(T) {
1349
1384
  const v = { ...e.get(t), ...T };
1350
- a.onChange(v);
1385
+ n.onChange(v);
1351
1386
  }
1352
1387
  function l(T) {
1353
- i({
1388
+ s({
1354
1389
  image: {
1355
- ...ie,
1390
+ ...se,
1356
1391
  ...e.get(t).image,
1357
1392
  ...T
1358
1393
  }
1359
1394
  });
1360
1395
  }
1361
1396
  function f(T) {
1362
- i({
1397
+ s({
1363
1398
  debug: { ...ve, ...e.get(t).debug, ...T }
1364
1399
  });
1365
1400
  }
1366
- function h(T) {
1367
- i({
1401
+ function g(T) {
1402
+ s({
1368
1403
  cylinder: {
1369
1404
  ...ce,
1370
1405
  ...e.get(t).cylinder,
@@ -1373,12 +1408,12 @@ function ia(r, a) {
1373
1408
  });
1374
1409
  }
1375
1410
  function w(T) {
1376
- i({
1377
- plane: { ...se, ...e.get(t).plane, ...T }
1411
+ s({
1412
+ plane: { ...ae, ...e.get(t).plane, ...T }
1378
1413
  });
1379
1414
  }
1380
- function d(T) {
1381
- i({
1415
+ function u(T) {
1416
+ s({
1382
1417
  sphere: {
1383
1418
  ...ke,
1384
1419
  ...e.get(t).sphere,
@@ -1386,310 +1421,310 @@ function ia(r, a) {
1386
1421
  }
1387
1422
  });
1388
1423
  }
1389
- function _() {
1390
- e.get(t).enabled ? i({ enabled: !1 }) : i({
1424
+ function h() {
1425
+ e.get(t).enabled ? s({ enabled: !1 }) : s({
1391
1426
  enabled: !0,
1392
1427
  shape: "plane",
1393
- plane: e.get(t).plane ?? { ...se },
1394
- image: e.get(t).image ?? { ...ie }
1428
+ plane: e.get(t).plane ?? { ...ae },
1429
+ image: e.get(t).image ?? { ...se }
1395
1430
  });
1396
1431
  }
1397
1432
  const m = { id: "warp", title: "Warp", collapsible: !0 };
1398
- Wn(r, {
1433
+ qr(o, {
1399
1434
  get config() {
1400
1435
  return m;
1401
1436
  },
1402
1437
  children: (T, v) => {
1403
- var y = sa(), x = e.first_child(y);
1438
+ var y = un(), x = e.first_child(y);
1404
1439
  F(x, {
1405
1440
  label: "Enabled",
1406
- children: (k, C) => {
1407
- var S = zn();
1408
- e.remove_input_defaults(S), S.__change = _, e.template_effect(() => e.set_checked(S, e.get(t).enabled)), e.append(k, S);
1441
+ children: (k, I) => {
1442
+ var z = Br();
1443
+ e.remove_input_defaults(z), z.__change = h, e.template_effect(() => e.set_checked(z, e.get(t).enabled)), e.append(k, z);
1409
1444
  }
1410
1445
  });
1411
- var I = e.sibling(x, 2);
1446
+ var N = e.sibling(x, 2);
1412
1447
  {
1413
- var b = (k) => {
1414
- var C = aa(), S = e.first_child(C);
1415
- F(S, {
1448
+ var _ = (k) => {
1449
+ var I = dn(), z = e.first_child(I);
1450
+ F(z, {
1416
1451
  label: "Shape",
1417
- children: (z, E) => {
1418
- var O = Dn();
1419
- O.__change = (X) => {
1420
- const Y = X.currentTarget.value;
1421
- i({ shape: Y }), Y === "cylinder" && !e.get(t).cylinder && i({ cylinder: { ...ce } }), Y === "plane" && !e.get(t).plane && i({ plane: { ...se } }), Y === "sphere" && !e.get(t).sphere && i({ sphere: { ...ke } });
1452
+ children: (j, q) => {
1453
+ var E = Er();
1454
+ E.__change = (D) => {
1455
+ const X = D.currentTarget.value;
1456
+ s({ shape: X }), X === "cylinder" && !e.get(t).cylinder && s({ cylinder: { ...ce } }), X === "plane" && !e.get(t).plane && s({ plane: { ...ae } }), X === "sphere" && !e.get(t).sphere && s({ sphere: { ...ke } });
1422
1457
  };
1423
- var j = e.child(O);
1424
- j.value = j.__value = "none";
1425
- var L = e.sibling(j);
1426
- L.value = L.__value = "plane";
1427
- var K = e.sibling(L);
1458
+ var O = e.child(E);
1459
+ O.value = O.__value = "none";
1460
+ var Z = e.sibling(O);
1461
+ Z.value = Z.__value = "plane";
1462
+ var K = e.sibling(Z);
1428
1463
  K.value = K.__value = "cylinder";
1429
1464
  var H = e.sibling(K);
1430
- H.value = H.__value = "sphere", e.reset(O);
1465
+ H.value = H.__value = "sphere", e.reset(E);
1431
1466
  var G;
1432
- e.init_select(O), e.template_effect(() => {
1433
- G !== (G = e.get(t).shape) && (O.value = (O.__value = e.get(t).shape) ?? "", e.select_option(O, e.get(t).shape));
1434
- }), e.append(z, O);
1467
+ e.init_select(E), e.template_effect(() => {
1468
+ G !== (G = e.get(t).shape) && (E.value = (E.__value = e.get(t).shape) ?? "", e.select_option(E, e.get(t).shape));
1469
+ }), e.append(j, E);
1435
1470
  }
1436
1471
  });
1437
- var g = e.sibling(S, 2);
1438
- F(g, {
1472
+ var b = e.sibling(z, 2);
1473
+ F(b, {
1439
1474
  label: "Quality",
1440
- onReset: () => i({ quality: $e.quality }),
1441
- children: (z, E) => {
1442
- var O = Xn(), j = e.first_child(O);
1443
- e.remove_input_defaults(j), j.__input = (K) => i({ quality: Number(K.currentTarget.value) });
1444
- var L = e.sibling(j, 2);
1445
- e.remove_input_defaults(L), L.__input = (K) => i({ quality: Number(K.currentTarget.value) }), e.template_effect(() => {
1446
- e.set_value(j, e.get(t).quality ?? 1), e.set_value(L, e.get(t).quality ?? 1);
1447
- }), e.append(z, O);
1475
+ onReset: () => s({ quality: Qe.quality }),
1476
+ children: (j, q) => {
1477
+ var E = Zr(), O = e.first_child(E);
1478
+ e.remove_input_defaults(O), O.__input = (K) => s({ quality: Number(K.currentTarget.value) });
1479
+ var Z = e.sibling(O, 2);
1480
+ e.remove_input_defaults(Z), Z.__input = (K) => s({ quality: Number(K.currentTarget.value) }), e.template_effect(() => {
1481
+ e.set_value(O, e.get(t).quality ?? 1), e.set_value(Z, e.get(t).quality ?? 1);
1482
+ }), e.append(j, E);
1448
1483
  }
1449
1484
  });
1450
- var u = e.sibling(g, 2);
1485
+ var d = e.sibling(b, 2);
1451
1486
  {
1452
- var p = (z) => {
1453
- var E = Zn(), O = e.sibling(e.child(E), 2), j = e.child(O);
1454
- F(j, {
1487
+ var p = (j) => {
1488
+ var q = Ar(), E = e.sibling(e.child(q), 2), O = e.child(E);
1489
+ F(O, {
1455
1490
  label: "Scale",
1456
- onReset: () => l({ scale: ie.scale }),
1491
+ onReset: () => l({ scale: se.scale }),
1457
1492
  children: (H, G) => {
1458
- var X = Yn(), Y = e.first_child(X);
1459
- e.remove_input_defaults(Y), Y.__input = (R) => l({ scale: Number(R.currentTarget.value) });
1460
- var D = e.sibling(Y, 2);
1461
- e.remove_input_defaults(D), D.__input = (R) => l({ scale: Number(R.currentTarget.value) }), e.template_effect(() => {
1462
- e.set_value(Y, e.get(s).scale), e.set_value(D, e.get(s).scale);
1463
- }), e.append(H, X);
1493
+ var D = Or(), X = e.first_child(D);
1494
+ e.remove_input_defaults(X), X.__input = (P) => l({ scale: Number(P.currentTarget.value) });
1495
+ var W = e.sibling(X, 2);
1496
+ e.remove_input_defaults(W), W.__input = (P) => l({ scale: Number(P.currentTarget.value) }), e.template_effect(() => {
1497
+ e.set_value(X, e.get(a).scale), e.set_value(W, e.get(a).scale);
1498
+ }), e.append(H, D);
1464
1499
  }
1465
1500
  });
1466
- var L = e.sibling(j, 2);
1467
- F(L, {
1501
+ var Z = e.sibling(O, 2);
1502
+ F(Z, {
1468
1503
  label: "Translate X",
1469
- onReset: () => l({ translateX: ie.translateX }),
1504
+ onReset: () => l({ translateX: se.translateX }),
1470
1505
  children: (H, G) => {
1471
- var X = Bn(), Y = e.first_child(X);
1472
- e.remove_input_defaults(Y), Y.__input = (R) => l({ translateX: Number(R.currentTarget.value) });
1473
- var D = e.sibling(Y, 2);
1474
- e.remove_input_defaults(D), D.__input = (R) => l({ translateX: Number(R.currentTarget.value) }), e.template_effect(() => {
1475
- e.set_value(Y, e.get(s).translateX), e.set_value(D, e.get(s).translateX);
1476
- }), e.append(H, X);
1506
+ var D = Lr(), X = e.first_child(D);
1507
+ e.remove_input_defaults(X), X.__input = (P) => l({ translateX: Number(P.currentTarget.value) });
1508
+ var W = e.sibling(X, 2);
1509
+ e.remove_input_defaults(W), W.__input = (P) => l({ translateX: Number(P.currentTarget.value) }), e.template_effect(() => {
1510
+ e.set_value(X, e.get(a).translateX), e.set_value(W, e.get(a).translateX);
1511
+ }), e.append(H, D);
1477
1512
  }
1478
1513
  });
1479
- var K = e.sibling(L, 2);
1514
+ var K = e.sibling(Z, 2);
1480
1515
  F(K, {
1481
1516
  label: "Translate Y",
1482
- onReset: () => l({ translateY: ie.translateY }),
1517
+ onReset: () => l({ translateY: se.translateY }),
1483
1518
  children: (H, G) => {
1484
- var X = En(), Y = e.first_child(X);
1485
- e.remove_input_defaults(Y), Y.__input = (R) => l({ translateY: Number(R.currentTarget.value) });
1486
- var D = e.sibling(Y, 2);
1487
- e.remove_input_defaults(D), D.__input = (R) => l({ translateY: Number(R.currentTarget.value) }), e.template_effect(() => {
1488
- e.set_value(Y, e.get(s).translateY), e.set_value(D, e.get(s).translateY);
1489
- }), e.append(H, X);
1519
+ var D = Hr(), X = e.first_child(D);
1520
+ e.remove_input_defaults(X), X.__input = (P) => l({ translateY: Number(P.currentTarget.value) });
1521
+ var W = e.sibling(X, 2);
1522
+ e.remove_input_defaults(W), W.__input = (P) => l({ translateY: Number(P.currentTarget.value) }), e.template_effect(() => {
1523
+ e.set_value(X, e.get(a).translateY), e.set_value(W, e.get(a).translateY);
1524
+ }), e.append(H, D);
1490
1525
  }
1491
- }), e.reset(O), e.reset(E), e.append(z, E);
1526
+ }), e.reset(E), e.reset(q), e.append(j, q);
1492
1527
  };
1493
- e.if(u, (z) => {
1494
- e.get(t).shape !== "none" && z(p);
1528
+ e.if(d, (j) => {
1529
+ e.get(t).shape !== "none" && j(p);
1495
1530
  });
1496
1531
  }
1497
- var o = e.sibling(u, 2);
1532
+ var i = e.sibling(d, 2);
1498
1533
  {
1499
- var c = (z) => {
1500
- const E = e.derived(() => e.get(t).plane);
1501
- var O = Hn(), j = e.sibling(e.child(O), 2), L = e.child(j);
1502
- F(L, {
1534
+ var c = (j) => {
1535
+ const q = e.derived(() => e.get(t).plane);
1536
+ var E = Jr(), O = e.sibling(e.child(E), 2), Z = e.child(O);
1537
+ F(Z, {
1503
1538
  label: "Rotation X",
1504
- onReset: () => w({ rotationX: se.rotationX }),
1505
- children: (X, Y) => {
1506
- var D = On(), R = e.first_child(D);
1507
- e.remove_input_defaults(R), R.__input = (A) => w({ rotationX: Number(A.currentTarget.value) });
1508
- var V = e.sibling(R, 2);
1539
+ onReset: () => w({ rotationX: ae.rotationX }),
1540
+ children: (D, X) => {
1541
+ var W = Ur(), P = e.first_child(W);
1542
+ e.remove_input_defaults(P), P.__input = (A) => w({ rotationX: Number(A.currentTarget.value) });
1543
+ var V = e.sibling(P, 2);
1509
1544
  e.remove_input_defaults(V), V.__input = (A) => w({ rotationX: Number(A.currentTarget.value) }), e.template_effect(() => {
1510
- e.set_value(R, e.get(E).rotationX), e.set_value(V, e.get(E).rotationX);
1511
- }), e.append(X, D);
1545
+ e.set_value(P, e.get(q).rotationX), e.set_value(V, e.get(q).rotationX);
1546
+ }), e.append(D, W);
1512
1547
  }
1513
1548
  });
1514
- var K = e.sibling(L, 2);
1549
+ var K = e.sibling(Z, 2);
1515
1550
  F(K, {
1516
1551
  label: "Rotation Y",
1517
- onReset: () => w({ rotationY: se.rotationY }),
1518
- children: (X, Y) => {
1519
- var D = Ln(), R = e.first_child(D);
1520
- e.remove_input_defaults(R), R.__input = (A) => w({ rotationY: Number(A.currentTarget.value) });
1521
- var V = e.sibling(R, 2);
1552
+ onReset: () => w({ rotationY: ae.rotationY }),
1553
+ children: (D, X) => {
1554
+ var W = Vr(), P = e.first_child(W);
1555
+ e.remove_input_defaults(P), P.__input = (A) => w({ rotationY: Number(A.currentTarget.value) });
1556
+ var V = e.sibling(P, 2);
1522
1557
  e.remove_input_defaults(V), V.__input = (A) => w({ rotationY: Number(A.currentTarget.value) }), e.template_effect(() => {
1523
- e.set_value(R, e.get(E).rotationY), e.set_value(V, e.get(E).rotationY);
1524
- }), e.append(X, D);
1558
+ e.set_value(P, e.get(q).rotationY), e.set_value(V, e.get(q).rotationY);
1559
+ }), e.append(D, W);
1525
1560
  }
1526
1561
  });
1527
1562
  var H = e.sibling(K, 2);
1528
1563
  F(H, {
1529
1564
  label: "Rotation Z",
1530
- onReset: () => w({ rotationZ: se.rotationZ }),
1531
- children: (X, Y) => {
1532
- var D = jn(), R = e.first_child(D);
1533
- e.remove_input_defaults(R), R.__input = (A) => w({ rotationZ: Number(A.currentTarget.value) });
1534
- var V = e.sibling(R, 2);
1565
+ onReset: () => w({ rotationZ: ae.rotationZ }),
1566
+ children: (D, X) => {
1567
+ var W = Fr(), P = e.first_child(W);
1568
+ e.remove_input_defaults(P), P.__input = (A) => w({ rotationZ: Number(A.currentTarget.value) });
1569
+ var V = e.sibling(P, 2);
1535
1570
  e.remove_input_defaults(V), V.__input = (A) => w({ rotationZ: Number(A.currentTarget.value) }), e.template_effect(() => {
1536
- e.set_value(R, e.get(E).rotationZ), e.set_value(V, e.get(E).rotationZ);
1537
- }), e.append(X, D);
1571
+ e.set_value(P, e.get(q).rotationZ), e.set_value(V, e.get(q).rotationZ);
1572
+ }), e.append(D, W);
1538
1573
  }
1539
1574
  });
1540
1575
  var G = e.sibling(H, 2);
1541
1576
  F(G, {
1542
1577
  label: "Perspective",
1543
- onReset: () => w({ depthScale: se.depthScale }),
1544
- children: (X, Y) => {
1545
- var D = qn(), R = e.first_child(D);
1546
- e.remove_input_defaults(R), R.__input = (A) => w({ depthScale: Number(A.currentTarget.value) });
1547
- var V = e.sibling(R, 2);
1578
+ onReset: () => w({ depthScale: ae.depthScale }),
1579
+ children: (D, X) => {
1580
+ var W = Kr(), P = e.first_child(W);
1581
+ e.remove_input_defaults(P), P.__input = (A) => w({ depthScale: Number(A.currentTarget.value) });
1582
+ var V = e.sibling(P, 2);
1548
1583
  e.remove_input_defaults(V), V.__input = (A) => w({ depthScale: Number(A.currentTarget.value) }), e.template_effect(() => {
1549
- e.set_value(R, e.get(E).depthScale), e.set_value(V, e.get(E).depthScale);
1550
- }), e.append(X, D);
1584
+ e.set_value(P, e.get(q).depthScale), e.set_value(V, e.get(q).depthScale);
1585
+ }), e.append(D, W);
1551
1586
  }
1552
- }), e.reset(j), e.reset(O), e.append(z, O);
1587
+ }), e.reset(O), e.reset(E), e.append(j, E);
1553
1588
  };
1554
- e.if(o, (z) => {
1555
- e.get(t).shape === "plane" && e.get(t).plane && z(c);
1589
+ e.if(i, (j) => {
1590
+ e.get(t).shape === "plane" && e.get(t).plane && j(c);
1556
1591
  });
1557
1592
  }
1558
- var M = e.sibling(o, 2);
1593
+ var M = e.sibling(i, 2);
1559
1594
  {
1560
- var N = (z) => {
1561
- const E = e.derived(() => e.get(t).cylinder);
1562
- var O = Kn(), j = e.sibling(e.child(O), 2), L = e.child(j);
1563
- F(L, {
1595
+ var S = (j) => {
1596
+ const q = e.derived(() => e.get(t).cylinder);
1597
+ var E = tn(), O = e.sibling(e.child(E), 2), Z = e.child(O);
1598
+ F(Z, {
1564
1599
  label: "Diameter",
1565
- onReset: () => h({ diameter: ce.diameter }),
1566
- children: (X, Y) => {
1567
- var D = An(), R = e.first_child(D);
1568
- e.remove_input_defaults(R), R.__input = (A) => h({ diameter: Number(A.currentTarget.value) });
1569
- var V = e.sibling(R, 2);
1570
- e.remove_input_defaults(V), V.__input = (A) => h({ diameter: Number(A.currentTarget.value) }), e.template_effect(() => {
1571
- e.set_value(R, e.get(E).diameter), e.set_value(V, e.get(E).diameter);
1572
- }), e.append(X, D);
1600
+ onReset: () => g({ diameter: ce.diameter }),
1601
+ children: (D, X) => {
1602
+ var W = Gr(), P = e.first_child(W);
1603
+ e.remove_input_defaults(P), P.__input = (A) => g({ diameter: Number(A.currentTarget.value) });
1604
+ var V = e.sibling(P, 2);
1605
+ e.remove_input_defaults(V), V.__input = (A) => g({ diameter: Number(A.currentTarget.value) }), e.template_effect(() => {
1606
+ e.set_value(P, e.get(q).diameter), e.set_value(V, e.get(q).diameter);
1607
+ }), e.append(D, W);
1573
1608
  }
1574
1609
  });
1575
- var K = e.sibling(L, 2);
1610
+ var K = e.sibling(Z, 2);
1576
1611
  F(K, {
1577
1612
  label: "Perspective",
1578
- onReset: () => h({ perspective: ce.perspective }),
1579
- children: (X, Y) => {
1580
- var D = Un(), R = e.first_child(D);
1581
- e.remove_input_defaults(R), R.__input = (A) => h({ perspective: Number(A.currentTarget.value) });
1582
- var V = e.sibling(R, 2);
1583
- e.remove_input_defaults(V), V.__input = (A) => h({ perspective: Number(A.currentTarget.value) }), e.template_effect(() => {
1584
- e.set_value(R, e.get(E).perspective ?? 1), e.set_value(V, e.get(E).perspective ?? 1);
1585
- }), e.append(X, D);
1613
+ onReset: () => g({ perspective: ce.perspective }),
1614
+ children: (D, X) => {
1615
+ var W = $r(), P = e.first_child(W);
1616
+ e.remove_input_defaults(P), P.__input = (A) => g({ perspective: Number(A.currentTarget.value) });
1617
+ var V = e.sibling(P, 2);
1618
+ e.remove_input_defaults(V), V.__input = (A) => g({ perspective: Number(A.currentTarget.value) }), e.template_effect(() => {
1619
+ e.set_value(P, e.get(q).perspective ?? 1), e.set_value(V, e.get(q).perspective ?? 1);
1620
+ }), e.append(D, W);
1586
1621
  }
1587
1622
  });
1588
1623
  var H = e.sibling(K, 2);
1589
1624
  F(H, {
1590
1625
  label: "Tilt (X)",
1591
- onReset: () => h({ rotationX: ce.rotationX }),
1592
- children: (X, Y) => {
1593
- var D = Vn(), R = e.first_child(D);
1594
- e.remove_input_defaults(R), R.__input = (A) => h({ rotationX: Number(A.currentTarget.value) });
1595
- var V = e.sibling(R, 2);
1596
- e.remove_input_defaults(V), V.__input = (A) => h({ rotationX: Number(A.currentTarget.value) }), e.template_effect(() => {
1597
- e.set_value(R, e.get(E).rotationX), e.set_value(V, e.get(E).rotationX);
1598
- }), e.append(X, D);
1626
+ onReset: () => g({ rotationX: ce.rotationX }),
1627
+ children: (D, X) => {
1628
+ var W = Qr(), P = e.first_child(W);
1629
+ e.remove_input_defaults(P), P.__input = (A) => g({ rotationX: Number(A.currentTarget.value) });
1630
+ var V = e.sibling(P, 2);
1631
+ e.remove_input_defaults(V), V.__input = (A) => g({ rotationX: Number(A.currentTarget.value) }), e.template_effect(() => {
1632
+ e.set_value(P, e.get(q).rotationX), e.set_value(V, e.get(q).rotationX);
1633
+ }), e.append(D, W);
1599
1634
  }
1600
1635
  });
1601
1636
  var G = e.sibling(H, 2);
1602
1637
  F(G, {
1603
1638
  label: "Spin (Z)",
1604
- onReset: () => h({ rotationZ: ce.rotationZ }),
1605
- children: (X, Y) => {
1606
- var D = Fn(), R = e.first_child(D);
1607
- e.remove_input_defaults(R), R.__input = (A) => h({ rotationZ: Number(A.currentTarget.value) });
1608
- var V = e.sibling(R, 2);
1609
- e.remove_input_defaults(V), V.__input = (A) => h({ rotationZ: Number(A.currentTarget.value) }), e.template_effect(() => {
1610
- e.set_value(R, e.get(E).rotationZ), e.set_value(V, e.get(E).rotationZ);
1611
- }), e.append(X, D);
1639
+ onReset: () => g({ rotationZ: ce.rotationZ }),
1640
+ children: (D, X) => {
1641
+ var W = en(), P = e.first_child(W);
1642
+ e.remove_input_defaults(P), P.__input = (A) => g({ rotationZ: Number(A.currentTarget.value) });
1643
+ var V = e.sibling(P, 2);
1644
+ e.remove_input_defaults(V), V.__input = (A) => g({ rotationZ: Number(A.currentTarget.value) }), e.template_effect(() => {
1645
+ e.set_value(P, e.get(q).rotationZ), e.set_value(V, e.get(q).rotationZ);
1646
+ }), e.append(D, W);
1612
1647
  }
1613
- }), e.reset(j), e.reset(O), e.append(z, O);
1648
+ }), e.reset(O), e.reset(E), e.append(j, E);
1614
1649
  };
1615
- e.if(M, (z) => {
1616
- e.get(t).shape === "cylinder" && e.get(t).cylinder && z(N);
1650
+ e.if(M, (j) => {
1651
+ e.get(t).shape === "cylinder" && e.get(t).cylinder && j(S);
1617
1652
  });
1618
1653
  }
1619
- var B = e.sibling(M, 2);
1654
+ var Y = e.sibling(M, 2);
1620
1655
  {
1621
- var J = (z) => {
1622
- const E = e.derived(() => e.get(t).sphere);
1623
- var O = Qn(), j = e.sibling(e.child(O), 2), L = e.child(j);
1624
- F(L, {
1656
+ var J = (j) => {
1657
+ const q = e.derived(() => e.get(t).sphere);
1658
+ var E = an(), O = e.sibling(e.child(E), 2), Z = e.child(O);
1659
+ F(Z, {
1625
1660
  label: "Radius",
1626
- onReset: () => d({ radius: ke.radius }),
1661
+ onReset: () => u({ radius: ke.radius }),
1627
1662
  children: (H, G) => {
1628
- var X = Jn(), Y = e.first_child(X);
1629
- e.remove_input_defaults(Y), Y.__input = (R) => d({ radius: Number(R.currentTarget.value) });
1630
- var D = e.sibling(Y, 2);
1631
- e.remove_input_defaults(D), D.__input = (R) => d({ radius: Number(R.currentTarget.value) }), e.template_effect(() => {
1632
- e.set_value(Y, e.get(E).radius), e.set_value(D, e.get(E).radius);
1633
- }), e.append(H, X);
1663
+ var D = rn(), X = e.first_child(D);
1664
+ e.remove_input_defaults(X), X.__input = (P) => u({ radius: Number(P.currentTarget.value) });
1665
+ var W = e.sibling(X, 2);
1666
+ e.remove_input_defaults(W), W.__input = (P) => u({ radius: Number(P.currentTarget.value) }), e.template_effect(() => {
1667
+ e.set_value(X, e.get(q).radius), e.set_value(W, e.get(q).radius);
1668
+ }), e.append(H, D);
1634
1669
  }
1635
1670
  });
1636
- var K = e.sibling(L, 2);
1671
+ var K = e.sibling(Z, 2);
1637
1672
  F(K, {
1638
1673
  label: "Spin (Z)",
1639
- onReset: () => d({ rotationZ: ke.rotationZ }),
1674
+ onReset: () => u({ rotationZ: ke.rotationZ }),
1640
1675
  children: (H, G) => {
1641
- var X = Gn(), Y = e.first_child(X);
1642
- e.remove_input_defaults(Y), Y.__input = (R) => d({ rotationZ: Number(R.currentTarget.value) });
1643
- var D = e.sibling(Y, 2);
1644
- e.remove_input_defaults(D), D.__input = (R) => d({ rotationZ: Number(R.currentTarget.value) }), e.template_effect(() => {
1645
- e.set_value(Y, e.get(E).rotationZ), e.set_value(D, e.get(E).rotationZ);
1646
- }), e.append(H, X);
1676
+ var D = nn(), X = e.first_child(D);
1677
+ e.remove_input_defaults(X), X.__input = (P) => u({ rotationZ: Number(P.currentTarget.value) });
1678
+ var W = e.sibling(X, 2);
1679
+ e.remove_input_defaults(W), W.__input = (P) => u({ rotationZ: Number(P.currentTarget.value) }), e.template_effect(() => {
1680
+ e.set_value(X, e.get(q).rotationZ), e.set_value(W, e.get(q).rotationZ);
1681
+ }), e.append(H, D);
1647
1682
  }
1648
- }), e.reset(j), e.reset(O), e.append(z, O);
1683
+ }), e.reset(O), e.reset(E), e.append(j, E);
1649
1684
  };
1650
- e.if(B, (z) => {
1651
- e.get(t).shape === "sphere" && e.get(t).sphere && z(J);
1685
+ e.if(Y, (j) => {
1686
+ e.get(t).shape === "sphere" && e.get(t).sphere && j(J);
1652
1687
  });
1653
1688
  }
1654
- var Z = e.sibling(B, 2);
1689
+ var B = e.sibling(Y, 2);
1655
1690
  {
1656
- var U = (z) => {
1657
- var E = na(), O = e.sibling(e.child(E), 2), j = e.child(O);
1658
- F(j, {
1691
+ var U = (j) => {
1692
+ var q = cn(), E = e.sibling(e.child(q), 2), O = e.child(E);
1693
+ F(O, {
1659
1694
  label: "Show Grid/Bounds",
1660
1695
  onReset: () => f({ showBounds: ve.showBounds }),
1661
1696
  children: (H, G) => {
1662
- var X = $n();
1663
- e.remove_input_defaults(X), X.__change = (Y) => f({ showBounds: Y.currentTarget.checked }), e.template_effect(() => e.set_checked(X, e.get(n).showBounds)), e.append(H, X);
1697
+ var D = sn();
1698
+ e.remove_input_defaults(D), D.__change = (X) => f({ showBounds: X.currentTarget.checked }), e.template_effect(() => e.set_checked(D, e.get(r).showBounds)), e.append(H, D);
1664
1699
  }
1665
1700
  });
1666
- var L = e.sibling(j, 2);
1667
- F(L, {
1701
+ var Z = e.sibling(O, 2);
1702
+ F(Z, {
1668
1703
  label: "Depth Shader",
1669
1704
  onReset: () => f({ showDepthVis: ve.showDepthVis }),
1670
1705
  children: (H, G) => {
1671
- var X = ea();
1672
- e.remove_input_defaults(X), X.__change = (Y) => f({ showDepthVis: Y.currentTarget.checked }), e.template_effect(() => e.set_checked(X, e.get(n).showDepthVis)), e.append(H, X);
1706
+ var D = on();
1707
+ e.remove_input_defaults(D), D.__change = (X) => f({ showDepthVis: X.currentTarget.checked }), e.template_effect(() => e.set_checked(D, e.get(r).showDepthVis)), e.append(H, D);
1673
1708
  }
1674
1709
  });
1675
- var K = e.sibling(L, 2);
1710
+ var K = e.sibling(Z, 2);
1676
1711
  F(K, {
1677
1712
  label: "Crosshair",
1678
1713
  onReset: () => f({ showCrosshair: ve.showCrosshair }),
1679
1714
  children: (H, G) => {
1680
- var X = ta();
1681
- e.remove_input_defaults(X), X.__change = (Y) => f({ showCrosshair: Y.currentTarget.checked }), e.template_effect(() => e.set_checked(X, e.get(n).showCrosshair)), e.append(H, X);
1715
+ var D = ln();
1716
+ e.remove_input_defaults(D), D.__change = (X) => f({ showCrosshair: X.currentTarget.checked }), e.template_effect(() => e.set_checked(D, e.get(r).showCrosshair)), e.append(H, D);
1682
1717
  }
1683
- }), e.reset(O), e.reset(E), e.append(z, E);
1718
+ }), e.reset(E), e.reset(q), e.append(j, q);
1684
1719
  };
1685
- e.if(Z, (z) => {
1686
- e.get(t).shape !== "none" && z(U);
1720
+ e.if(B, (j) => {
1721
+ e.get(t).shape !== "none" && j(U);
1687
1722
  });
1688
1723
  }
1689
- e.append(k, C);
1724
+ e.append(k, I);
1690
1725
  };
1691
- e.if(I, (k) => {
1692
- e.get(t).enabled && k(b);
1726
+ e.if(N, (k) => {
1727
+ e.get(t).enabled && k(_);
1693
1728
  });
1694
1729
  }
1695
1730
  e.append(T, y);
@@ -1698,783 +1733,806 @@ function ia(r, a) {
1698
1733
  }), e.pop();
1699
1734
  }
1700
1735
  e.delegate(["change", "input"]);
1701
- var ra = e.from_html('<input type="range" step="0.01" min="-1" max="1" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="0.01" min="-1" max="1"/>', 1), oa = e.from_html('<input type="range" step="0.01" min="-1" max="1" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="0.01" min="-1" max="1"/>', 1), la = e.from_html('<input type="range" step="0.01" min="-1" max="1" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="0.01" min="-1" max="1"/>', 1), ca = e.from_html('<input type="range" step="1" min="-180" max="180" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="1" min="-180" max="180"/>', 1), ua = e.from_html('<input type="range" step="0.01" min="-2" max="2" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="0.01" min="-2" max="2"/>', 1), da = e.from_html('<input type="range" step="0.01" min="0.1" max="3" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="0.01" min="0.1" max="3"/>', 1), pa = e.from_html('<input type="range" step="0.01" min="-1" max="1" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="0.01" min="-1" max="1"/>', 1), ma = e.from_html('<input type="range" step="0.01" min="-1" max="1" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="0.01" min="-1" max="1"/>', 1), va = e.from_html('<input type="range" step="0.01" min="-1" max="1" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="0.01" min="-1" max="1"/>', 1), fa = e.from_html('<input type="range" step="1" min="-100" max="100" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="1" min="-100" max="100"/>', 1), ha = e.from_html('<input type="range" step="1" min="-100" max="100" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="1" min="-100" max="100"/>', 1), _a = e.from_html('<details class="section svelte-1f6utug" open=""><summary class="section-title svelte-1f6utug">Restyle</summary> <div class="section-content svelte-1f6utug"><details class="subsection svelte-1f6utug" open=""><summary class="subsection-title svelte-1f6utug">Basic Adjustments</summary> <div class="subsection-content svelte-1f6utug"><!> <!> <!> <!></div></details> <details class="subsection svelte-1f6utug" open=""><summary class="subsection-title svelte-1f6utug">Exposure & Tone</summary> <div class="subsection-content svelte-1f6utug"><!> <!> <!> <!></div></details> <details class="subsection svelte-1f6utug" open=""><summary class="subsection-title svelte-1f6utug">Color & White Balance</summary> <div class="subsection-content svelte-1f6utug"><!> <!> <!></div></details></div></details>');
1702
- function ga(r, a) {
1703
- e.push(a, !0);
1704
- let t = e.prop(a, "effect", 3, ee);
1705
- function s(u) {
1706
- a.onChange({ ...t(), ...u });
1736
+ var vn = e.from_html('<input type="range" step="0.01" min="-1" max="1" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="0.01" min="-1" max="1"/>', 1), fn = e.from_html('<input type="range" step="0.01" min="-1" max="1" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="0.01" min="-1" max="1"/>', 1), gn = e.from_html('<input type="range" step="0.01" min="-1" max="1" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="0.01" min="-1" max="1"/>', 1), hn = e.from_html('<input type="range" step="1" min="-180" max="180" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="1" min="-180" max="180"/>', 1), bn = e.from_html('<input type="range" step="0.01" min="-2" max="2" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="0.01" min="-2" max="2"/>', 1), _n = e.from_html('<input type="range" step="0.01" min="0.1" max="3" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="0.01" min="0.1" max="3"/>', 1), yn = e.from_html('<input type="range" step="0.01" min="-1" max="1" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="0.01" min="-1" max="1"/>', 1), wn = e.from_html('<input type="range" step="0.01" min="-1" max="1" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="0.01" min="-1" max="1"/>', 1), xn = e.from_html('<input type="range" step="0.01" min="-1" max="1" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="0.01" min="-1" max="1"/>', 1), kn = e.from_html('<input type="range" step="1" min="-100" max="100" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="1" min="-100" max="100"/>', 1), Mn = e.from_html('<input type="range" step="1" min="-100" max="100" class="svelte-1f6utug"/> <input type="number" class="manual-input svelte-1f6utug" step="1" min="-100" max="100"/>', 1), Tn = e.from_html('<details class="section svelte-1f6utug" open=""><summary class="section-title svelte-1f6utug">Restyle</summary> <div class="section-content svelte-1f6utug"><details class="subsection svelte-1f6utug" open=""><summary class="subsection-title svelte-1f6utug">Basic Adjustments</summary> <div class="subsection-content svelte-1f6utug"><!> <!> <!> <!></div></details> <details class="subsection svelte-1f6utug" open=""><summary class="subsection-title svelte-1f6utug">Exposure & Tone</summary> <div class="subsection-content svelte-1f6utug"><!> <!> <!> <!></div></details> <details class="subsection svelte-1f6utug" open=""><summary class="subsection-title svelte-1f6utug">Color & White Balance</summary> <div class="subsection-content svelte-1f6utug"><!> <!> <!></div></details></div></details>');
1737
+ const zn = {
1738
+ hash: "svelte-1f6utug",
1739
+ code: `.section.svelte-1f6utug {border-top:1px solid var(--color-border, #ccc);border-bottom:1px solid var(--color-border, #ccc);background:var(--color-surface, #fff);min-width:0;}.section-title.svelte-1f6utug {padding:0.75rem 0;font-size:0.875rem;font-weight:600;text-transform:uppercase;color:var(--color-text-muted, #666);cursor:pointer;list-style:none;display:flex;align-items:center;gap:0.5rem;border-bottom:1px solid var(--color-border, #eee);}.section-title.svelte-1f6utug::-webkit-details-marker {display:none;}.section-title.svelte-1f6utug::before {content:'▶';font-size:0.625rem;transition:transform 0.15s ease;}.section[open].svelte-1f6utug > .section-title:where(.svelte-1f6utug)::before {transform:rotate(90deg);}.section-content.svelte-1f6utug {padding:0.75rem 0;display:flex;flex-direction:column;gap:0.75rem;}.manual-input.svelte-1f6utug {width:60px;padding:0.375rem 0.5rem;border:1px solid var(--color-border, #ccc);border-radius:4px;font-size:0.875rem;}input[type="range"].svelte-1f6utug {flex:1;min-width:0;max-width:100%;}.subsection.svelte-1f6utug {margin-top:0.75rem;border-top:1px solid var(--color-border, #e0e0e0);}.subsection.svelte-1f6utug:first-child {margin-top:0;border-top:none;}.subsection-title.svelte-1f6utug {padding:0.5rem 0;font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:var(--color-text-muted, #666);cursor:pointer;list-style:none;display:flex;align-items:center;gap:0.5rem;}.subsection-title.svelte-1f6utug::-webkit-details-marker {display:none;}.subsection-title.svelte-1f6utug::before {content:'▶';font-size:0.625rem;transition:transform 0.15s ease;}.subsection[open].svelte-1f6utug > .subsection-title:where(.svelte-1f6utug)::before {transform:rotate(90deg);}.subsection-content.svelte-1f6utug {padding-bottom:0.25rem;}`
1740
+ };
1741
+ function Sn(o, n) {
1742
+ e.push(n, !0), e.append_styles(o, zn);
1743
+ let t = e.prop(n, "effect", 3, ee);
1744
+ function a(d) {
1745
+ n.onChange({ ...t(), ...d });
1707
1746
  }
1708
- var n = _a(), i = e.sibling(e.child(n), 2), l = e.child(i), f = e.sibling(e.child(l), 2), h = e.child(f);
1709
- F(h, {
1747
+ var r = Tn(), s = e.sibling(e.child(r), 2), l = e.child(s), f = e.sibling(e.child(l), 2), g = e.child(f);
1748
+ F(g, {
1710
1749
  label: "Brightness",
1711
- onReset: () => s({ brightness: ee.brightness }),
1712
- children: (u, p) => {
1713
- var o = ra(), c = e.first_child(o);
1714
- e.remove_input_defaults(c), c.__input = (N) => s({ brightness: Number(N.currentTarget.value) });
1750
+ onReset: () => a({ brightness: ee.brightness }),
1751
+ children: (d, p) => {
1752
+ var i = vn(), c = e.first_child(i);
1753
+ e.remove_input_defaults(c), c.__input = (S) => a({ brightness: Number(S.currentTarget.value) });
1715
1754
  var M = e.sibling(c, 2);
1716
- e.remove_input_defaults(M), M.__input = (N) => s({ brightness: Number(N.currentTarget.value) }), e.template_effect(() => {
1755
+ e.remove_input_defaults(M), M.__input = (S) => a({ brightness: Number(S.currentTarget.value) }), e.template_effect(() => {
1717
1756
  e.set_value(c, t().brightness), e.set_value(M, t().brightness);
1718
- }), e.append(u, o);
1757
+ }), e.append(d, i);
1719
1758
  }
1720
1759
  });
1721
- var w = e.sibling(h, 2);
1760
+ var w = e.sibling(g, 2);
1722
1761
  F(w, {
1723
1762
  label: "Contrast",
1724
- onReset: () => s({ contrast: ee.contrast }),
1725
- children: (u, p) => {
1726
- var o = oa(), c = e.first_child(o);
1727
- e.remove_input_defaults(c), c.__input = (N) => s({ contrast: Number(N.currentTarget.value) });
1763
+ onReset: () => a({ contrast: ee.contrast }),
1764
+ children: (d, p) => {
1765
+ var i = fn(), c = e.first_child(i);
1766
+ e.remove_input_defaults(c), c.__input = (S) => a({ contrast: Number(S.currentTarget.value) });
1728
1767
  var M = e.sibling(c, 2);
1729
- e.remove_input_defaults(M), M.__input = (N) => s({ contrast: Number(N.currentTarget.value) }), e.template_effect(() => {
1768
+ e.remove_input_defaults(M), M.__input = (S) => a({ contrast: Number(S.currentTarget.value) }), e.template_effect(() => {
1730
1769
  e.set_value(c, t().contrast), e.set_value(M, t().contrast);
1731
- }), e.append(u, o);
1770
+ }), e.append(d, i);
1732
1771
  }
1733
1772
  });
1734
- var d = e.sibling(w, 2);
1735
- F(d, {
1773
+ var u = e.sibling(w, 2);
1774
+ F(u, {
1736
1775
  label: "Saturation",
1737
- onReset: () => s({ saturation: ee.saturation }),
1738
- children: (u, p) => {
1739
- var o = la(), c = e.first_child(o);
1740
- e.remove_input_defaults(c), c.__input = (N) => s({ saturation: Number(N.currentTarget.value) });
1776
+ onReset: () => a({ saturation: ee.saturation }),
1777
+ children: (d, p) => {
1778
+ var i = gn(), c = e.first_child(i);
1779
+ e.remove_input_defaults(c), c.__input = (S) => a({ saturation: Number(S.currentTarget.value) });
1741
1780
  var M = e.sibling(c, 2);
1742
- e.remove_input_defaults(M), M.__input = (N) => s({ saturation: Number(N.currentTarget.value) }), e.template_effect(() => {
1781
+ e.remove_input_defaults(M), M.__input = (S) => a({ saturation: Number(S.currentTarget.value) }), e.template_effect(() => {
1743
1782
  e.set_value(c, t().saturation), e.set_value(M, t().saturation);
1744
- }), e.append(u, o);
1783
+ }), e.append(d, i);
1745
1784
  }
1746
1785
  });
1747
- var _ = e.sibling(d, 2);
1748
- F(_, {
1786
+ var h = e.sibling(u, 2);
1787
+ F(h, {
1749
1788
  label: "Hue (°)",
1750
- onReset: () => s({ hue: ee.hue }),
1751
- children: (u, p) => {
1752
- var o = ca(), c = e.first_child(o);
1753
- e.remove_input_defaults(c), c.__input = (N) => s({ hue: Number(N.currentTarget.value) });
1789
+ onReset: () => a({ hue: ee.hue }),
1790
+ children: (d, p) => {
1791
+ var i = hn(), c = e.first_child(i);
1792
+ e.remove_input_defaults(c), c.__input = (S) => a({ hue: Number(S.currentTarget.value) });
1754
1793
  var M = e.sibling(c, 2);
1755
- e.remove_input_defaults(M), M.__input = (N) => s({ hue: Number(N.currentTarget.value) }), e.template_effect(() => {
1794
+ e.remove_input_defaults(M), M.__input = (S) => a({ hue: Number(S.currentTarget.value) }), e.template_effect(() => {
1756
1795
  e.set_value(c, t().hue), e.set_value(M, t().hue);
1757
- }), e.append(u, o);
1796
+ }), e.append(d, i);
1758
1797
  }
1759
1798
  }), e.reset(f), e.reset(l);
1760
1799
  var m = e.sibling(l, 2), T = e.sibling(e.child(m), 2), v = e.child(T);
1761
1800
  F(v, {
1762
1801
  label: "Exposure",
1763
- onReset: () => s({ exposure: ee.exposure }),
1764
- children: (u, p) => {
1765
- var o = ua(), c = e.first_child(o);
1766
- e.remove_input_defaults(c), c.__input = (N) => s({ exposure: Number(N.currentTarget.value) });
1802
+ onReset: () => a({ exposure: ee.exposure }),
1803
+ children: (d, p) => {
1804
+ var i = bn(), c = e.first_child(i);
1805
+ e.remove_input_defaults(c), c.__input = (S) => a({ exposure: Number(S.currentTarget.value) });
1767
1806
  var M = e.sibling(c, 2);
1768
- e.remove_input_defaults(M), M.__input = (N) => s({ exposure: Number(N.currentTarget.value) }), e.template_effect(() => {
1807
+ e.remove_input_defaults(M), M.__input = (S) => a({ exposure: Number(S.currentTarget.value) }), e.template_effect(() => {
1769
1808
  e.set_value(c, t().exposure), e.set_value(M, t().exposure);
1770
- }), e.append(u, o);
1809
+ }), e.append(d, i);
1771
1810
  }
1772
1811
  });
1773
1812
  var y = e.sibling(v, 2);
1774
1813
  F(y, {
1775
1814
  label: "Gamma",
1776
- onReset: () => s({ gamma: ee.gamma }),
1777
- children: (u, p) => {
1778
- var o = da(), c = e.first_child(o);
1779
- e.remove_input_defaults(c), c.__input = (N) => s({ gamma: Number(N.currentTarget.value) });
1815
+ onReset: () => a({ gamma: ee.gamma }),
1816
+ children: (d, p) => {
1817
+ var i = _n(), c = e.first_child(i);
1818
+ e.remove_input_defaults(c), c.__input = (S) => a({ gamma: Number(S.currentTarget.value) });
1780
1819
  var M = e.sibling(c, 2);
1781
- e.remove_input_defaults(M), M.__input = (N) => s({ gamma: Number(N.currentTarget.value) }), e.template_effect(() => {
1820
+ e.remove_input_defaults(M), M.__input = (S) => a({ gamma: Number(S.currentTarget.value) }), e.template_effect(() => {
1782
1821
  e.set_value(c, t().gamma), e.set_value(M, t().gamma);
1783
- }), e.append(u, o);
1822
+ }), e.append(d, i);
1784
1823
  }
1785
1824
  });
1786
1825
  var x = e.sibling(y, 2);
1787
1826
  F(x, {
1788
1827
  label: "Shadows",
1789
- onReset: () => s({ shadows: ee.shadows }),
1790
- children: (u, p) => {
1791
- var o = pa(), c = e.first_child(o);
1792
- e.remove_input_defaults(c), c.__input = (N) => s({ shadows: Number(N.currentTarget.value) });
1828
+ onReset: () => a({ shadows: ee.shadows }),
1829
+ children: (d, p) => {
1830
+ var i = yn(), c = e.first_child(i);
1831
+ e.remove_input_defaults(c), c.__input = (S) => a({ shadows: Number(S.currentTarget.value) });
1793
1832
  var M = e.sibling(c, 2);
1794
- e.remove_input_defaults(M), M.__input = (N) => s({ shadows: Number(N.currentTarget.value) }), e.template_effect(() => {
1833
+ e.remove_input_defaults(M), M.__input = (S) => a({ shadows: Number(S.currentTarget.value) }), e.template_effect(() => {
1795
1834
  e.set_value(c, t().shadows), e.set_value(M, t().shadows);
1796
- }), e.append(u, o);
1835
+ }), e.append(d, i);
1797
1836
  }
1798
1837
  });
1799
- var I = e.sibling(x, 2);
1800
- F(I, {
1838
+ var N = e.sibling(x, 2);
1839
+ F(N, {
1801
1840
  label: "Highlights",
1802
- onReset: () => s({ highlights: ee.highlights }),
1803
- children: (u, p) => {
1804
- var o = ma(), c = e.first_child(o);
1805
- e.remove_input_defaults(c), c.__input = (N) => s({ highlights: Number(N.currentTarget.value) });
1841
+ onReset: () => a({ highlights: ee.highlights }),
1842
+ children: (d, p) => {
1843
+ var i = wn(), c = e.first_child(i);
1844
+ e.remove_input_defaults(c), c.__input = (S) => a({ highlights: Number(S.currentTarget.value) });
1806
1845
  var M = e.sibling(c, 2);
1807
- e.remove_input_defaults(M), M.__input = (N) => s({ highlights: Number(N.currentTarget.value) }), e.template_effect(() => {
1846
+ e.remove_input_defaults(M), M.__input = (S) => a({ highlights: Number(S.currentTarget.value) }), e.template_effect(() => {
1808
1847
  e.set_value(c, t().highlights), e.set_value(M, t().highlights);
1809
- }), e.append(u, o);
1848
+ }), e.append(d, i);
1810
1849
  }
1811
1850
  }), e.reset(T), e.reset(m);
1812
- var b = e.sibling(m, 2), k = e.sibling(e.child(b), 2), C = e.child(k);
1813
- F(C, {
1851
+ var _ = e.sibling(m, 2), k = e.sibling(e.child(_), 2), I = e.child(k);
1852
+ F(I, {
1814
1853
  label: "Vibrance",
1815
- onReset: () => s({ vibrance: ee.vibrance }),
1816
- children: (u, p) => {
1817
- var o = va(), c = e.first_child(o);
1818
- e.remove_input_defaults(c), c.__input = (N) => s({ vibrance: Number(N.currentTarget.value) });
1854
+ onReset: () => a({ vibrance: ee.vibrance }),
1855
+ children: (d, p) => {
1856
+ var i = xn(), c = e.first_child(i);
1857
+ e.remove_input_defaults(c), c.__input = (S) => a({ vibrance: Number(S.currentTarget.value) });
1819
1858
  var M = e.sibling(c, 2);
1820
- e.remove_input_defaults(M), M.__input = (N) => s({ vibrance: Number(N.currentTarget.value) }), e.template_effect(() => {
1859
+ e.remove_input_defaults(M), M.__input = (S) => a({ vibrance: Number(S.currentTarget.value) }), e.template_effect(() => {
1821
1860
  e.set_value(c, t().vibrance), e.set_value(M, t().vibrance);
1822
- }), e.append(u, o);
1861
+ }), e.append(d, i);
1823
1862
  }
1824
1863
  });
1825
- var S = e.sibling(C, 2);
1826
- F(S, {
1864
+ var z = e.sibling(I, 2);
1865
+ F(z, {
1827
1866
  label: "Temperature",
1828
- onReset: () => s({ temperature: ee.temperature }),
1829
- children: (u, p) => {
1830
- var o = fa(), c = e.first_child(o);
1831
- e.remove_input_defaults(c), c.__input = (N) => s({ temperature: Number(N.currentTarget.value) });
1867
+ onReset: () => a({ temperature: ee.temperature }),
1868
+ children: (d, p) => {
1869
+ var i = kn(), c = e.first_child(i);
1870
+ e.remove_input_defaults(c), c.__input = (S) => a({ temperature: Number(S.currentTarget.value) });
1832
1871
  var M = e.sibling(c, 2);
1833
- e.remove_input_defaults(M), M.__input = (N) => s({ temperature: Number(N.currentTarget.value) }), e.template_effect(() => {
1872
+ e.remove_input_defaults(M), M.__input = (S) => a({ temperature: Number(S.currentTarget.value) }), e.template_effect(() => {
1834
1873
  e.set_value(c, t().temperature), e.set_value(M, t().temperature);
1835
- }), e.append(u, o);
1874
+ }), e.append(d, i);
1836
1875
  }
1837
1876
  });
1838
- var g = e.sibling(S, 2);
1839
- F(g, {
1877
+ var b = e.sibling(z, 2);
1878
+ F(b, {
1840
1879
  label: "Tint",
1841
- onReset: () => s({ tint: ee.tint }),
1842
- children: (u, p) => {
1843
- var o = ha(), c = e.first_child(o);
1844
- e.remove_input_defaults(c), c.__input = (N) => s({ tint: Number(N.currentTarget.value) });
1880
+ onReset: () => a({ tint: ee.tint }),
1881
+ children: (d, p) => {
1882
+ var i = Mn(), c = e.first_child(i);
1883
+ e.remove_input_defaults(c), c.__input = (S) => a({ tint: Number(S.currentTarget.value) });
1845
1884
  var M = e.sibling(c, 2);
1846
- e.remove_input_defaults(M), M.__input = (N) => s({ tint: Number(N.currentTarget.value) }), e.template_effect(() => {
1885
+ e.remove_input_defaults(M), M.__input = (S) => a({ tint: Number(S.currentTarget.value) }), e.template_effect(() => {
1847
1886
  e.set_value(c, t().tint), e.set_value(M, t().tint);
1848
- }), e.append(u, o);
1887
+ }), e.append(d, i);
1849
1888
  }
1850
- }), e.reset(k), e.reset(b), e.reset(i), e.reset(n), e.append(r, n), e.pop();
1889
+ }), e.reset(k), e.reset(_), e.reset(s), e.reset(r), e.append(o, r), e.pop();
1851
1890
  }
1852
1891
  e.delegate(["input"]);
1853
- var ba = e.from_html('<div class="layer-name-section svelte-et76o3"><label class="form-label svelte-et76o3">Layer Name (for overrides)</label> <input type="text" class="form-input svelte-et76o3" placeholder="e.g., front, back, logo"/> <p class="form-hint svelte-et76o3">Use this name as the key when overriding images in the renderer</p></div>'), ya = e.from_html('<div class="layer-controls svelte-et76o3"><div class="layer-header svelte-et76o3"><button class="visibility-toggle svelte-et76o3"><!></button> <span class="layer-preview svelte-et76o3"><img alt="Layer preview" class="svelte-et76o3"/></span> <button class="delete-btn svelte-et76o3" aria-label="Delete layer"><!></button></div> <!> <div class="sections svelte-et76o3"><!> <!> <!> <!></div></div>');
1854
- function wa(r, a) {
1855
- e.push(a, !0);
1856
- const t = e.derived(() => a.layer.effects.find((c) => c.type === "resize") ?? fe), s = e.derived(() => a.layer.effects.find((c) => c.type === "restyle") ?? ee), n = e.derived(() => a.layer.effects.find((o) => o.type === "warp"));
1857
- function i(o) {
1858
- const c = a.layer.effects.filter((M) => M.type !== "resize");
1859
- a.onEffectsChange([...c, o]);
1860
- }
1861
- function l(o) {
1862
- const c = a.layer.effects.filter((M) => M.type !== "restyle");
1863
- a.onEffectsChange([...c, o]);
1864
- }
1865
- function f(o) {
1866
- const c = a.layer.effects.filter((M) => M.type !== "warp");
1867
- o ? a.onEffectsChange([...c, o]) : a.onEffectsChange(c);
1868
- }
1869
- var h = ya(), w = e.child(h), d = e.child(w);
1870
- d.__click = () => a.onVisibilityChange(!a.layer.visible);
1871
- var _ = e.child(d);
1892
+ var Nn = e.from_html('<div class="layer-name-section svelte-et76o3"><label class="form-label svelte-et76o3">Layer Name (for overrides)</label> <input type="text" class="form-input svelte-et76o3" placeholder="e.g., front, back, logo"/> <p class="form-hint svelte-et76o3">Use this name as the key when overriding images in the renderer</p></div>'), In = e.from_html('<div class="layer-controls svelte-et76o3"><div class="layer-header svelte-et76o3"><button class="visibility-toggle svelte-et76o3"><!></button> <span class="layer-preview svelte-et76o3"><img alt="Layer preview" class="svelte-et76o3"/></span> <button class="delete-btn svelte-et76o3" aria-label="Delete layer"><!></button></div> <!> <div class="sections svelte-et76o3"><!> <!> <!> <!></div></div>');
1893
+ const Cn = {
1894
+ hash: "svelte-et76o3",
1895
+ code: ".layer-controls.svelte-et76o3 {border-radius:4px;padding-top:0.75rem;padding-bottom:0.75rem;margin-bottom:0.5rem;background:var(--color-surface, #fff);}.layer-header.svelte-et76o3 {display:flex;align-items:center;gap:0.5rem;margin-bottom:0.75rem;padding-bottom:0.75rem;border-bottom:1px solid var(--color-border, #eee);}.visibility-toggle.svelte-et76o3 {background:none;border:none;cursor:pointer;padding:0.25rem;display:flex;align-items:center;justify-content:center;color:var(--color-text, #000);}.layer-preview.svelte-et76o3 {flex:1;display:flex;align-items:center;justify-content:center;height:40px;overflow:hidden;border-radius:4px;background:#f5f5f5;}.layer-preview.svelte-et76o3 img:where(.svelte-et76o3) {max-width:100%;max-height:100%;object-fit:contain;}.delete-btn.svelte-et76o3 {background:#ef4444;color:white;border:none;border-radius:4px;width:24px;height:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.delete-btn.svelte-et76o3:hover {background:#dc2626;}.layer-name-section.svelte-et76o3 {padding:0 0.75rem;margin-bottom:0.75rem;}.layer-name-section.svelte-et76o3 .form-label:where(.svelte-et76o3) {display:block;font-size:0.75rem;font-weight:500;color:var(--color-text-muted, #666);margin-bottom:0.25rem;text-transform:uppercase;letter-spacing:0.5px;}.layer-name-section.svelte-et76o3 .form-input:where(.svelte-et76o3) {width:100%;padding:0.375rem 0.5rem;border:1px solid var(--color-border, #ccc);border-radius:4px;font-size:0.875rem;font-family:inherit;}.layer-name-section.svelte-et76o3 .form-input:where(.svelte-et76o3):focus {outline:none;border-color:var(--color-primary, #3b82f6);}.form-hint.svelte-et76o3 {font-size:0.75rem;color:var(--color-text-muted, #666);margin:0.25rem 0 0 0;}.sections.svelte-et76o3 {display:flex;flex-direction:column;gap:0;overflow:hidden;min-width:0;}"
1896
+ };
1897
+ function Pn(o, n) {
1898
+ e.push(n, !0), e.append_styles(o, Cn);
1899
+ const t = e.derived(() => n.layer.effects.find((c) => c.type === "resize") ?? fe), a = e.derived(() => n.layer.effects.find((c) => c.type === "restyle") ?? ee), r = e.derived(() => n.layer.effects.find((i) => i.type === "warp"));
1900
+ function s(i) {
1901
+ const c = n.layer.effects.filter((M) => M.type !== "resize");
1902
+ n.onEffectsChange([...c, i]);
1903
+ }
1904
+ function l(i) {
1905
+ const c = n.layer.effects.filter((M) => M.type !== "restyle");
1906
+ n.onEffectsChange([...c, i]);
1907
+ }
1908
+ function f(i) {
1909
+ const c = n.layer.effects.filter((M) => M.type !== "warp");
1910
+ i ? n.onEffectsChange([...c, i]) : n.onEffectsChange(c);
1911
+ }
1912
+ var g = In(), w = e.child(g), u = e.child(w);
1913
+ u.__click = () => n.onVisibilityChange(!n.layer.visible);
1914
+ var h = e.child(u);
1872
1915
  {
1873
- var m = (o) => {
1874
- on(o, {});
1875
- }, T = (o) => {
1876
- cn(o, {});
1916
+ var m = (i) => {
1917
+ cr(i, {});
1918
+ }, T = (i) => {
1919
+ ur(i, {});
1877
1920
  };
1878
- e.if(_, (o) => {
1879
- a.layer.visible ? o(m) : o(T, !1);
1921
+ e.if(h, (i) => {
1922
+ n.layer.visible ? i(m) : i(T, !1);
1880
1923
  });
1881
1924
  }
1882
- e.reset(d);
1883
- var v = e.sibling(d, 2), y = e.child(v);
1925
+ e.reset(u);
1926
+ var v = e.sibling(u, 2), y = e.child(v);
1884
1927
  e.reset(v);
1885
1928
  var x = e.sibling(v, 2);
1886
- x.__click = function(...o) {
1887
- a.onDelete?.apply(this, o);
1929
+ x.__click = function(...i) {
1930
+ n.onDelete?.apply(this, i);
1888
1931
  };
1889
- var I = e.child(x);
1890
- Ue(I, {}), e.reset(x), e.reset(w);
1891
- var b = e.sibling(w, 2);
1932
+ var N = e.child(x);
1933
+ Ue(N, {}), e.reset(x), e.reset(w);
1934
+ var _ = e.sibling(w, 2);
1892
1935
  {
1893
- var k = (o) => {
1894
- var c = ba(), M = e.child(c), N = e.sibling(M, 2);
1895
- e.remove_input_defaults(N), N.__input = (B) => a.onNameChange(B.currentTarget.value), e.next(2), e.reset(c), e.template_effect(() => {
1896
- e.set_attribute(M, "for", `layer-name-${a.layer.id ?? ""}`), e.set_attribute(N, "id", `layer-name-${a.layer.id ?? ""}`), e.set_value(N, a.layer.name || "");
1897
- }), e.append(o, c);
1936
+ var k = (i) => {
1937
+ var c = Nn(), M = e.child(c), S = e.sibling(M, 2);
1938
+ e.remove_input_defaults(S), S.__input = (Y) => n.onNameChange(Y.currentTarget.value), e.next(2), e.reset(c), e.template_effect(() => {
1939
+ e.set_attribute(M, "for", `layer-name-${n.layer.id ?? ""}`), e.set_attribute(S, "id", `layer-name-${n.layer.id ?? ""}`), e.set_value(S, n.layer.name || "");
1940
+ }), e.append(i, c);
1898
1941
  };
1899
- e.if(b, (o) => {
1900
- a.onNameChange && o(k);
1942
+ e.if(_, (i) => {
1943
+ n.onNameChange && i(k);
1901
1944
  });
1902
1945
  }
1903
- var C = e.sibling(b, 2), S = e.child(C);
1904
- In(S, {
1946
+ var I = e.sibling(_, 2), z = e.child(I);
1947
+ jr(z, {
1905
1948
  get effect() {
1906
1949
  return e.get(t);
1907
1950
  },
1908
- onChange: i
1951
+ onChange: s
1909
1952
  });
1910
- var g = e.sibling(S, 2);
1911
- ga(g, {
1953
+ var b = e.sibling(z, 2);
1954
+ Sn(b, {
1912
1955
  get effect() {
1913
- return e.get(s);
1956
+ return e.get(a);
1914
1957
  },
1915
1958
  onChange: l
1916
1959
  });
1917
- var u = e.sibling(g, 2);
1918
- yn(u, {
1960
+ var d = e.sibling(b, 2);
1961
+ Mr(d, {
1919
1962
  get transform() {
1920
- return a.layer.transform;
1963
+ return n.layer.transform;
1921
1964
  },
1922
1965
  get opacity() {
1923
- return a.layer.opacity;
1966
+ return n.layer.opacity;
1924
1967
  },
1925
1968
  get canvasWidth() {
1926
- return a.canvasWidth;
1969
+ return n.canvasWidth;
1927
1970
  },
1928
1971
  get canvasHeight() {
1929
- return a.canvasHeight;
1972
+ return n.canvasHeight;
1930
1973
  },
1931
1974
  get onTransformChange() {
1932
- return a.onTransformChange;
1975
+ return n.onTransformChange;
1933
1976
  },
1934
1977
  get onOpacityChange() {
1935
- return a.onOpacityChange;
1978
+ return n.onOpacityChange;
1936
1979
  },
1937
1980
  get layerId() {
1938
- return a.layer.id;
1981
+ return n.layer.id;
1939
1982
  }
1940
1983
  });
1941
- var p = e.sibling(u, 2);
1942
- ia(p, {
1984
+ var p = e.sibling(d, 2);
1985
+ mn(p, {
1943
1986
  get effect() {
1944
- return e.get(n);
1987
+ return e.get(r);
1945
1988
  },
1946
1989
  onChange: f
1947
- }), e.reset(C), e.reset(h), e.template_effect(() => {
1948
- e.set_attribute(d, "aria-label", a.layer.visible ? "Hide layer" : "Show layer"), e.set_attribute(y, "src", a.layer.src);
1949
- }), e.append(r, h), e.pop();
1990
+ }), e.reset(I), e.reset(g), e.template_effect(() => {
1991
+ e.set_attribute(u, "aria-label", n.layer.visible ? "Hide layer" : "Show layer"), e.set_attribute(y, "src", n.layer.src);
1992
+ }), e.append(o, g), e.pop();
1950
1993
  }
1951
1994
  e.delegate(["click", "input"]);
1952
- var xa = e.from_html('<button type="button" class="modal-backdrop svelte-ta60gp" aria-label="Close modal"></button> <div><!></div>', 1);
1953
- function ka(r, a) {
1954
- e.push(a, !0);
1955
- let t = !1, s = !1;
1956
- const n = St && /iPhone|iPad|iPod/.test(navigator.userAgent) && !("MSStream" in window);
1957
- function i(T) {
1995
+ var Rn = e.from_html('<button type="button" class="modal-backdrop svelte-ta60gp" aria-label="Close modal"></button> <div><!></div>', 1);
1996
+ const jn = {
1997
+ hash: "svelte-ta60gp",
1998
+ code: ".modal-backdrop.svelte-ta60gp {position:fixed;inset:0;z-index:10000;background:var(--color-overlay-darker);backdrop-filter:blur(4px);border:none;padding:0;margin:0;cursor:pointer;border-radius:unset;}.modal-backdrop.svelte-ta60gp:hover {background:var(--color-overlay-darker) !important;}.modal-content.svelte-ta60gp {position:fixed;top:0;left:0;right:0;height:100dvh;z-index:10001;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:none;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);}.modal-content.ios-safari.svelte-ta60gp {height:100dvh;overflow-y:auto;}.modal-content.svelte-ta60gp > * {pointer-events:auto;margin:0 auto;}"
1999
+ };
2000
+ function Wn(o, n) {
2001
+ e.push(n, !0), e.append_styles(o, jn);
2002
+ let t = !1, a = !1;
2003
+ const r = zt && /iPhone|iPad|iPod/.test(navigator.userAgent) && !("MSStream" in window);
2004
+ function s(T) {
1958
2005
  T.key === "Escape" && (T.preventDefault(), f());
1959
2006
  }
1960
2007
  function l() {
1961
- t && (t = !1, a.onclose());
2008
+ t && (t = !1, n.onclose());
1962
2009
  }
1963
2010
  function f() {
1964
- t && (t = !1, history.back()), a.onclose();
2011
+ t && (t = !1, history.back()), n.onclose();
1965
2012
  }
1966
2013
  Mt(() => {
1967
- s = !0;
1968
- }), Te(() => (n || (document.documentElement.style.overflow = "hidden", document.body.style.overflow = "hidden"), Tt("", { modal: !0 }), t = !0, () => {
1969
- n || (document.documentElement.style.overflow = "", document.body.style.overflow = ""), t && !s && history.back();
2014
+ a = !0;
2015
+ }), Te(() => (r || (document.documentElement.style.overflow = "hidden", document.body.style.overflow = "hidden"), Tt("", { modal: !0 }), t = !0, () => {
2016
+ r || (document.documentElement.style.overflow = "", document.body.style.overflow = ""), t && !a && history.back();
1970
2017
  }));
1971
- var h = xa();
1972
- e.event("keydown", e.window, i), e.event("popstate", e.window, l);
1973
- var w = e.first_child(h);
2018
+ var g = Rn();
2019
+ e.event("keydown", e.window, s), e.event("popstate", e.window, l);
2020
+ var w = e.first_child(g);
1974
2021
  w.__click = f;
1975
- var d = e.sibling(w, 2);
1976
- let _;
1977
- var m = e.child(d);
1978
- e.snippet(m, () => a.children), e.reset(d), e.template_effect(() => _ = e.set_class(d, 1, "modal-content svelte-ta60gp", null, _, { "ios-safari": n })), e.transition(7, w, () => Qe, () => ({ duration: 100 })), e.transition(7, d, () => Qe, () => ({ duration: 100 })), e.append(r, h), e.pop();
2022
+ var u = e.sibling(w, 2);
2023
+ let h;
2024
+ var m = e.child(u);
2025
+ e.snippet(m, () => n.children), e.reset(u), e.template_effect(() => h = e.set_class(u, 1, "modal-content svelte-ta60gp", null, h, { "ios-safari": r })), e.transition(7, w, () => $e, () => ({ duration: 100 })), e.transition(7, u, () => $e, () => ({ duration: 100 })), e.append(o, g), e.pop();
1979
2026
  }
1980
2027
  e.delegate(["click"]);
1981
- var Ma = e.from_svg('<svg width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke-width="2"><path d="M12 5v14M5 12h14"></path></svg>');
1982
- function Me(r, a) {
1983
- let t = e.prop(a, "fontSize", 3, "1em"), s = e.prop(a, "color", 3, "currentColor");
1984
- var n = Ma();
2028
+ var Dn = e.from_svg('<svg width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke-width="2"><path d="M12 5v14M5 12h14"></path></svg>');
2029
+ function Me(o, n) {
2030
+ let t = e.prop(n, "fontSize", 3, "1em"), a = e.prop(n, "color", 3, "currentColor");
2031
+ var r = Dn();
1985
2032
  e.template_effect(() => {
1986
- e.set_style(n, `font-size: ${t() ?? ""};`), e.set_attribute(n, "stroke", s());
1987
- }), e.append(r, n);
2033
+ e.set_style(r, `font-size: ${t() ?? ""};`), e.set_attribute(r, "stroke", a());
2034
+ }), e.append(o, r);
1988
2035
  }
1989
- const Pe = "product-mockups", it = "product-mockups-current";
1990
- function Ta(r, a = Pe) {
2036
+ const Ce = "product-mockups", st = "product-mockups-current";
2037
+ function Xn(o, n = Ce) {
1991
2038
  try {
1992
- const t = Re(), s = t.findIndex((n) => n.id === r.id);
1993
- return s >= 0 ? t[s] = { ...r, updatedAt: Date.now() } : t.push({ ...r, updatedAt: Date.now() }), localStorage.setItem(a, JSON.stringify(t)), !0;
2039
+ const t = Pe(), a = t.findIndex((r) => r.id === o.id);
2040
+ return a >= 0 ? t[a] = { ...o, updatedAt: Date.now() } : t.push({ ...o, updatedAt: Date.now() }), localStorage.setItem(n, JSON.stringify(t)), !0;
1994
2041
  } catch (t) {
1995
2042
  return console.error("Failed to save mockup:", t), !1;
1996
2043
  }
1997
2044
  }
1998
- function Re(r = Pe) {
2045
+ function Pe(o = Ce) {
1999
2046
  try {
2000
- const a = localStorage.getItem(r);
2001
- return a ? JSON.parse(a).map((s) => {
2002
- const n = s.composition ?? s.canvas ?? { ...st };
2047
+ const n = localStorage.getItem(o);
2048
+ return n ? JSON.parse(n).map((a) => {
2049
+ const r = a.composition ?? a.canvas ?? { ...at };
2003
2050
  return {
2004
- ...s,
2005
- view: s.view ?? { ...Ce },
2051
+ ...a,
2052
+ view: a.view ?? { ...Ie },
2006
2053
  composition: {
2007
- ...n,
2008
- effects: n.effects ?? [],
2009
- layers: n.layers?.map((i) => ({
2010
- ...i,
2011
- effects: i.effects ?? []
2054
+ ...r,
2055
+ effects: r.effects ?? [],
2056
+ layers: r.layers?.map((s) => ({
2057
+ ...s,
2058
+ effects: s.effects ?? []
2012
2059
  })) ?? []
2013
2060
  }
2014
2061
  };
2015
2062
  }) : [];
2016
- } catch (a) {
2017
- return console.error("Failed to load mockups:", a), [];
2063
+ } catch (n) {
2064
+ return console.error("Failed to load mockups:", n), [];
2018
2065
  }
2019
2066
  }
2020
- function Sa(r, a = Pe) {
2021
- return Re(a).find((s) => s.id === r) ?? null;
2067
+ function Yn(o, n = Ce) {
2068
+ return Pe(n).find((a) => a.id === o) ?? null;
2022
2069
  }
2023
- function Na(r, a = Pe) {
2070
+ function qn(o, n = Ce) {
2024
2071
  try {
2025
- const s = Re(a).filter((n) => n.id !== r);
2026
- return localStorage.setItem(a, JSON.stringify(s)), !0;
2072
+ const a = Pe(n).filter((r) => r.id !== o);
2073
+ return localStorage.setItem(n, JSON.stringify(a)), !0;
2027
2074
  } catch (t) {
2028
2075
  return console.error("Failed to delete mockup:", t), !1;
2029
2076
  }
2030
2077
  }
2031
- function je(r, a = it) {
2078
+ function Oe(o, n = st) {
2032
2079
  try {
2033
- r ? localStorage.setItem(a, r) : localStorage.removeItem(a);
2080
+ o ? localStorage.setItem(n, o) : localStorage.removeItem(n);
2034
2081
  } catch (t) {
2035
2082
  console.error("Failed to save current mockup ID:", t);
2036
2083
  }
2037
2084
  }
2038
- function Ia(r = it) {
2085
+ function Bn(o = st) {
2039
2086
  try {
2040
- return localStorage.getItem(r);
2087
+ return localStorage.getItem(o);
2041
2088
  } catch {
2042
2089
  return null;
2043
2090
  }
2044
2091
  }
2045
- function tt(r = "Untitled Mockup") {
2092
+ function tt(o = "Untitled Mockup") {
2046
2093
  return {
2047
2094
  id: crypto.randomUUID(),
2048
- name: r,
2049
- composition: { ...st },
2050
- view: { ...Ce },
2095
+ name: o,
2096
+ composition: { ...at },
2097
+ view: { ...Ie },
2051
2098
  createdAt: Date.now(),
2052
2099
  updatedAt: Date.now()
2053
2100
  };
2054
2101
  }
2055
- var Ca = e.from_html('<div class="empty-state svelte-33nadc"><p class="svelte-33nadc">No mockups yet. Create your first mockup to get started!</p> <button class="new-mockup-btn primary svelte-33nadc" type="button"><!> Create Mockup</button></div>'), Pa = e.from_html('<div role="button" tabindex="0"><div class="mockup-card-header svelte-33nadc"><h3 class="mockup-card-title svelte-33nadc"> </h3> <div class="mockup-card-actions svelte-33nadc"><button class="copy-btn svelte-33nadc" type="button" aria-label="Copy config">Copy Config</button> <button class="delete-btn svelte-33nadc" type="button" aria-label="Delete mockup"><!></button></div></div> <div class="mockup-card-info svelte-33nadc"><div class="mockup-card-stat svelte-33nadc"><span class="stat-label svelte-33nadc">Layers:</span> <span class="stat-value svelte-33nadc"> </span></div> <div class="mockup-card-stat svelte-33nadc"><span class="stat-label svelte-33nadc">Size:</span> <span class="stat-value svelte-33nadc"> </span></div></div> <div class="mockup-card-footer svelte-33nadc"><div class="mockup-card-date svelte-33nadc"><span class="date-label svelte-33nadc">Updated:</span> <span class="date-value svelte-33nadc"> </span></div></div></div>'), Ra = e.from_html('<div class="mockup-grid svelte-33nadc"></div>'), Wa = e.from_html('<div class="mockup-list-container svelte-33nadc"><div class="mockup-list-header svelte-33nadc"><h2 class="svelte-33nadc">All Mockups</h2> <button class="new-mockup-btn svelte-33nadc" type="button"><!> New Mockup</button></div> <!></div>');
2056
- function za(r, a) {
2057
- e.push(a, !0);
2058
- let t = e.prop(a, "storageKey", 3, "product-mockups"), s = e.state(e.proxy([]));
2059
- function n() {
2060
- e.set(s, Re(t()), !0);
2102
+ var En = e.from_html('<div class="empty-state svelte-33nadc"><p class="svelte-33nadc">No mockups yet. Create your first mockup to get started!</p> <button class="new-mockup-btn primary svelte-33nadc" type="button"><!> Create Mockup</button></div>'), Zn = e.from_html('<div role="button" tabindex="0"><div class="mockup-card-header svelte-33nadc"><h3 class="mockup-card-title svelte-33nadc"> </h3> <div class="mockup-card-actions svelte-33nadc"><button class="copy-btn svelte-33nadc" type="button" aria-label="Copy config">Copy Config</button> <button class="delete-btn svelte-33nadc" type="button" aria-label="Delete mockup"><!></button></div></div> <div class="mockup-card-info svelte-33nadc"><div class="mockup-card-stat svelte-33nadc"><span class="stat-label svelte-33nadc">Layers:</span> <span class="stat-value svelte-33nadc"> </span></div> <div class="mockup-card-stat svelte-33nadc"><span class="stat-label svelte-33nadc">Size:</span> <span class="stat-value svelte-33nadc"> </span></div></div> <div class="mockup-card-footer svelte-33nadc"><div class="mockup-card-date svelte-33nadc"><span class="date-label svelte-33nadc">Updated:</span> <span class="date-value svelte-33nadc"> </span></div></div></div>'), On = e.from_html('<div class="mockup-grid svelte-33nadc"></div>'), Ln = e.from_html('<div class="mockup-list-container svelte-33nadc"><div class="mockup-list-header svelte-33nadc"><h2 class="svelte-33nadc">All Mockups</h2> <button class="new-mockup-btn svelte-33nadc" type="button"><!> New Mockup</button></div> <!></div>');
2103
+ const Hn = {
2104
+ hash: "svelte-33nadc",
2105
+ code: ".mockup-list-container.svelte-33nadc {background:var(--color-surface, #fff);border-radius:8px;padding:2rem;max-width:900px;width:100%;margin:2rem auto;max-height:calc(100dvh - 4rem);overflow-y:auto;box-shadow:0 10px 40px rgba(0, 0, 0, 0.2);}.mockup-list-header.svelte-33nadc {display:flex;align-items:center;justify-content:space-between;margin-bottom:2rem;gap:1rem;}.mockup-list-header.svelte-33nadc h2:where(.svelte-33nadc) {font-size:1.5rem;font-weight:600;color:var(--color-text, #111);margin:0;}.new-mockup-btn.svelte-33nadc {display:flex;align-items:center;gap:0.5rem;padding:0.5rem 1rem;background:var(--color-primary, #3b82f6);color:white;border:none;border-radius:6px;cursor:pointer;font-size:0.875rem;font-weight:500;transition:background 200ms;}.new-mockup-btn.svelte-33nadc:hover {background:var(--color-primary-dark, #2563eb);}.new-mockup-btn.primary.svelte-33nadc {margin-top:1rem;}.empty-state.svelte-33nadc {text-align:center;padding:4rem 2rem;color:var(--color-text-muted, #666);}.empty-state.svelte-33nadc p:where(.svelte-33nadc) {font-size:1rem;margin-bottom:1.5rem;}.mockup-grid.svelte-33nadc {display:grid;grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));gap:1rem;}.mockup-card.svelte-33nadc {background:var(--color-surface-alt, #f5f5f5);border:2px solid var(--color-border, #ccc);border-radius:8px;padding:1rem;cursor:pointer;transition:all 200ms;display:flex;flex-direction:column;gap:0.75rem;}.mockup-card.svelte-33nadc:hover {border-color:var(--color-primary, #3b82f6);background:var(--color-surface, #fff);transform:translateY(-2px);box-shadow:0 4px 12px rgba(0, 0, 0, 0.1);}.mockup-card.current.svelte-33nadc {border-color:var(--color-primary, #3b82f6);background:var(--color-primary-light, #eff6ff);}.mockup-card-header.svelte-33nadc {display:flex;align-items:flex-start;justify-content:space-between;gap:0.5rem;}.mockup-card-title.svelte-33nadc {font-size:1rem;font-weight:600;color:var(--color-text, #111);margin:0;flex:1;word-break:break-word;}.mockup-card-actions.svelte-33nadc {display:flex;align-items:center;gap:0.5rem;flex-shrink:0;}.copy-btn.svelte-33nadc {background:transparent;border:1px solid var(--color-primary, #3b82f6);color:var(--color-primary, #3b82f6);cursor:pointer;padding:0.25rem 0.5rem;border-radius:4px;font-size:0.75rem;transition:all 200ms;display:flex;align-items:center;justify-content:center;}.copy-btn.svelte-33nadc:hover {background:var(--color-primary, #3b82f6);color:white;}.delete-btn.svelte-33nadc {background:transparent;border:none;color:var(--color-text-muted, #666);cursor:pointer;padding:0.25rem;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all 200ms;flex-shrink:0;}.delete-btn.svelte-33nadc:hover {background:#ef4444;color:white;}.mockup-card-info.svelte-33nadc {display:flex;gap:1rem;font-size:0.875rem;}.mockup-card-stat.svelte-33nadc {display:flex;flex-direction:column;gap:0.25rem;}.stat-label.svelte-33nadc {color:var(--color-text-muted, #666);font-size:0.75rem;text-transform:uppercase;}.stat-value.svelte-33nadc {color:var(--color-text, #111);font-weight:500;}.mockup-card-footer.svelte-33nadc {margin-top:auto;padding-top:0.75rem;border-top:1px solid var(--color-border, #ccc);}.mockup-card-date.svelte-33nadc {display:flex;flex-direction:column;gap:0.25rem;font-size:0.75rem;}.date-label.svelte-33nadc {color:var(--color-text-muted, #666);text-transform:uppercase;}.date-value.svelte-33nadc {color:var(--color-text, #111);}"
2106
+ };
2107
+ function An(o, n) {
2108
+ e.push(n, !0), e.append_styles(o, Hn);
2109
+ let t = e.prop(n, "storageKey", 3, "product-mockups"), a = e.state(e.proxy([]));
2110
+ function r() {
2111
+ e.set(a, Pe(t()), !0);
2061
2112
  }
2062
2113
  Te(() => {
2063
- n();
2114
+ r();
2064
2115
  });
2065
- function i(d) {
2066
- a.onSelect(d), a.onclose();
2116
+ function s(u) {
2117
+ n.onSelect(u), n.onclose();
2067
2118
  }
2068
2119
  function l() {
2069
- a.onNew(), a.onclose();
2120
+ n.onNew(), n.onclose();
2070
2121
  }
2071
- function f(d, _) {
2072
- d.stopPropagation(), confirm("Are you sure you want to delete this mockup?") && (Na(_, t()), n());
2122
+ function f(u, h) {
2123
+ u.stopPropagation(), confirm("Are you sure you want to delete this mockup?") && (qn(h, t()), r());
2073
2124
  }
2074
- async function h(d, _) {
2075
- d.stopPropagation();
2125
+ async function g(u, h) {
2126
+ u.stopPropagation();
2076
2127
  try {
2077
- const m = JSON.stringify(_, null, 2);
2128
+ const m = JSON.stringify(h, null, 2);
2078
2129
  await navigator.clipboard.writeText(m);
2079
2130
  } catch (m) {
2080
2131
  console.error("Failed to copy config:", m);
2081
2132
  }
2082
2133
  }
2083
- function w(d) {
2084
- const _ = new Date(d);
2085
- return _.toLocaleDateString() + " " + _.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" });
2134
+ function w(u) {
2135
+ const h = new Date(u);
2136
+ return h.toLocaleDateString() + " " + h.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" });
2086
2137
  }
2087
- ka(r, {
2138
+ Wn(o, {
2088
2139
  get onclose() {
2089
- return a.onclose;
2140
+ return n.onclose;
2090
2141
  },
2091
- children: (d, _) => {
2092
- var m = Wa(), T = e.child(m), v = e.sibling(e.child(T), 2);
2142
+ children: (u, h) => {
2143
+ var m = Ln(), T = e.child(m), v = e.sibling(e.child(T), 2);
2093
2144
  v.__click = l;
2094
2145
  var y = e.child(v);
2095
2146
  Me(y, {}), e.next(), e.reset(v), e.reset(T);
2096
2147
  var x = e.sibling(T, 2);
2097
2148
  {
2098
- var I = (k) => {
2099
- var C = Ca(), S = e.sibling(e.child(C), 2);
2100
- S.__click = l;
2101
- var g = e.child(S);
2102
- Me(g, {}), e.next(), e.reset(S), e.reset(C), e.append(k, C);
2103
- }, b = (k) => {
2104
- var C = Ra();
2105
- e.each(C, 21, () => e.get(s), (S) => S.id, (S, g) => {
2106
- var u = Pa();
2149
+ var N = (k) => {
2150
+ var I = En(), z = e.sibling(e.child(I), 2);
2151
+ z.__click = l;
2152
+ var b = e.child(z);
2153
+ Me(b, {}), e.next(), e.reset(z), e.reset(I), e.append(k, I);
2154
+ }, _ = (k) => {
2155
+ var I = On();
2156
+ e.each(I, 21, () => e.get(a), (z) => z.id, (z, b) => {
2157
+ var d = Zn();
2107
2158
  let p;
2108
- u.__click = () => i(e.get(g)), u.__keydown = (D) => D.key === "Enter" && i(e.get(g));
2109
- var o = e.child(u), c = e.child(o), M = e.child(c, !0);
2159
+ d.__click = () => s(e.get(b)), d.__keydown = (W) => W.key === "Enter" && s(e.get(b));
2160
+ var i = e.child(d), c = e.child(i), M = e.child(c, !0);
2110
2161
  e.reset(c);
2111
- var N = e.sibling(c, 2), B = e.child(N);
2112
- B.__click = (D) => h(D, e.get(g));
2113
- var J = e.sibling(B, 2);
2114
- J.__click = (D) => f(D, e.get(g).id);
2115
- var Z = e.child(J);
2116
- Ue(Z, {}), e.reset(J), e.reset(N), e.reset(o);
2117
- var U = e.sibling(o, 2), z = e.child(U), E = e.sibling(e.child(z), 2), O = e.child(E, !0);
2118
- e.reset(E), e.reset(z);
2119
- var j = e.sibling(z, 2), L = e.sibling(e.child(j), 2), K = e.child(L);
2120
- e.reset(L), e.reset(j), e.reset(U);
2121
- var H = e.sibling(U, 2), G = e.child(H), X = e.sibling(e.child(G), 2), Y = e.child(X, !0);
2122
- e.reset(X), e.reset(G), e.reset(H), e.reset(u), e.template_effect(
2123
- (D) => {
2124
- p = e.set_class(u, 1, "mockup-card svelte-33nadc", null, p, { current: e.get(g).id === a.currentMockupId }), e.set_text(M, e.get(g).name), e.set_text(O, e.get(g).composition.layers.length), e.set_text(K, `${e.get(g).composition.width ?? ""} × ${e.get(g).composition.height ?? ""}`), e.set_text(Y, D);
2162
+ var S = e.sibling(c, 2), Y = e.child(S);
2163
+ Y.__click = (W) => g(W, e.get(b));
2164
+ var J = e.sibling(Y, 2);
2165
+ J.__click = (W) => f(W, e.get(b).id);
2166
+ var B = e.child(J);
2167
+ Ue(B, {}), e.reset(J), e.reset(S), e.reset(i);
2168
+ var U = e.sibling(i, 2), j = e.child(U), q = e.sibling(e.child(j), 2), E = e.child(q, !0);
2169
+ e.reset(q), e.reset(j);
2170
+ var O = e.sibling(j, 2), Z = e.sibling(e.child(O), 2), K = e.child(Z);
2171
+ e.reset(Z), e.reset(O), e.reset(U);
2172
+ var H = e.sibling(U, 2), G = e.child(H), D = e.sibling(e.child(G), 2), X = e.child(D, !0);
2173
+ e.reset(D), e.reset(G), e.reset(H), e.reset(d), e.template_effect(
2174
+ (W) => {
2175
+ p = e.set_class(d, 1, "mockup-card svelte-33nadc", null, p, { current: e.get(b).id === n.currentMockupId }), e.set_text(M, e.get(b).name), e.set_text(E, e.get(b).composition.layers.length), e.set_text(K, `${e.get(b).composition.width ?? ""} × ${e.get(b).composition.height ?? ""}`), e.set_text(X, W);
2125
2176
  },
2126
- [() => w(e.get(g).updatedAt)]
2127
- ), e.append(S, u);
2128
- }), e.reset(C), e.append(k, C);
2177
+ [() => w(e.get(b).updatedAt)]
2178
+ ), e.append(z, d);
2179
+ }), e.reset(I), e.append(k, I);
2129
2180
  };
2130
2181
  e.if(x, (k) => {
2131
- e.get(s).length === 0 ? k(I) : k(b, !1);
2182
+ e.get(a).length === 0 ? k(N) : k(_, !1);
2132
2183
  });
2133
2184
  }
2134
- e.reset(m), e.append(d, m);
2185
+ e.reset(m), e.append(u, m);
2135
2186
  },
2136
2187
  $$slots: { default: !0 }
2137
2188
  }), e.pop();
2138
2189
  }
2139
2190
  e.delegate(["click", "keydown"]);
2140
- var Da = e.from_svg('<svg width=".4em" height="1em" viewBox="8 2 8 20" fill="none" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M9 18l6-6-6-6"></path></svg>');
2141
- function nt(r, a) {
2142
- let t = e.prop(a, "fontSize", 3, "1em"), s = e.prop(a, "color", 3, "currentColor");
2143
- var n = Da();
2191
+ var Un = e.from_svg('<svg width=".4em" height="1em" viewBox="8 2 8 20" fill="none" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M9 18l6-6-6-6"></path></svg>');
2192
+ function rt(o, n) {
2193
+ let t = e.prop(n, "fontSize", 3, "1em"), a = e.prop(n, "color", 3, "currentColor");
2194
+ var r = Un();
2144
2195
  e.template_effect(() => {
2145
- e.set_style(n, `font-size: ${t() ?? ""}; ${(a.rotate && `rotate: ${a.rotate};`) ?? ""}`), e.set_attribute(n, "stroke", s());
2146
- }), e.append(r, n);
2196
+ e.set_style(r, `font-size: ${t() ?? ""}; ${(n.rotate && `rotate: ${n.rotate};`) ?? ""}`), e.set_attribute(r, "stroke", a());
2197
+ }), e.append(o, r);
2147
2198
  }
2148
- const Xa = "product-mockups", Ya = "product-mockups-current";
2149
- var Ba = e.from_html('<header class="header-logos svelte-w47swm"><!></header>'), Ea = e.from_html('<div class="url-input-group svelte-w47swm"><input type="url" placeholder="https://example.com/image.jpg" class="svelte-w47swm"/> <button type="button" class="svelte-w47swm">Add</button></div>'), Za = e.from_html('<div class="no-layers svelte-w47swm">No layers yet. Add an image to get started.</div>'), Oa = e.from_html('<code class="layer-key-badge svelte-w47swm"> </code>'), La = e.from_html('<div role="button" tabindex="0"><div class="layer-item-preview svelte-w47swm"><img alt="Layer preview" class="svelte-w47swm"/></div> <div class="layer-item-info svelte-w47swm"><span class="layer-item-name svelte-w47swm"> <!></span> <div class="layer-item-actions svelte-w47swm"><button class="layer-order-btn svelte-w47swm" aria-label="Move up"><!></button> <button class="layer-order-btn svelte-w47swm" aria-label="Move down"><!></button> <button class="layer-delete-btn svelte-w47swm" aria-label="Delete layer"><!></button></div></div></div>'), ja = e.from_html('<div class="layers-list svelte-w47swm"></div>'), qa = e.from_html('<div class="canvas-header svelte-w47swm"><!></div>'), Ha = e.from_html('<div class="processor-container svelte-w47swm"><sidebar class="svelte-w47swm"><!> <div class="editor-items svelte-w47swm"><div class="editor-section svelte-w47swm"><div class="mockup-name-header svelte-w47swm"><div class="mockup-title-group svelte-w47swm"><h3 class="mockup-name-title svelte-w47swm">Mockup</h3></div> <div class="mockup-buttons-group svelte-w47swm"><button class="new-mockup-btn svelte-w47swm" type="button"><!> New Mockup</button> <button class="view-all-btn svelte-w47swm" type="button">View All</button></div></div> <label class="form-label svelte-w47swm">Mockup Name</label> <div class="name-input-group svelte-w47swm"><input type="text" class="form-input name-input svelte-w47swm" placeholder="Mockup name..."/> <button class="copy-config-btn svelte-w47swm" type="button">Copy Config</button></div></div> <div class="editor-section svelte-w47swm"><div class="sidebar-title-2 svelte-w47swm">Canvas Setup</div> <div class="canvas-size-controls svelte-w47swm"><div class="form-input-group svelte-w47swm"><label class="form-label svelte-w47swm">Width</label> <input type="number" class="form-input svelte-w47swm" min="100" max="5000"/></div> <div class="form-input-group svelte-w47swm"><label class="form-label svelte-w47swm">Height</label> <input type="number" class="form-input svelte-w47swm" min="100" max="5000"/></div></div></div> <div class="editor-section svelte-w47swm"><div class="layers-header svelte-w47swm"><div class="layers-title svelte-w47swm"> </div> <div class="add-layer-buttons svelte-w47swm"><button class="add-layer-btn secondary svelte-w47swm" type="button"><!> </button> <label class="add-layer-btn svelte-w47swm"><!> File <input type="file" accept="image/*" style="display: none;"/></label></div></div> <!> <!></div> <!></div></sidebar> <div class="output-canvas svelte-w47swm"><!> <!></div> <!></div>');
2150
- function Ga(r, a) {
2151
- e.push(a, !0);
2152
- let t = e.prop(a, "storageKey", 3, Xa), s = e.prop(a, "currentMockupKey", 3, Ya), n = e.state(e.proxy(tt())), i = e.state(""), l = e.state(null), f = e.state(""), h = e.state(!1), w = e.state(!1), d = null;
2153
- e.derived(() => e.get(l) ? e.get(n).composition.layers.find((P) => P.id === e.get(l)) ?? null : null);
2154
- function _(P) {
2155
- const W = {
2199
+ const Vn = "product-mockups", Fn = "product-mockups-current";
2200
+ var Kn = e.from_html('<header class="header-logos svelte-w47swm"><!></header>'), Jn = e.from_html('<div class="url-input-group svelte-w47swm"><input type="url" placeholder="https://example.com/image.jpg" class="svelte-w47swm"/> <button type="button" class="svelte-w47swm">Add</button></div>'), Gn = e.from_html('<div class="no-layers svelte-w47swm">No layers yet. Add an image to get started.</div>'), $n = e.from_html('<code class="layer-key-badge svelte-w47swm"> </code>'), Qn = e.from_html('<div role="button" tabindex="0"><div class="layer-item-preview svelte-w47swm"><img alt="Layer preview" class="svelte-w47swm"/></div> <div class="layer-item-info svelte-w47swm"><span class="layer-item-name svelte-w47swm"> <!></span> <div class="layer-item-actions svelte-w47swm"><button class="layer-order-btn svelte-w47swm" aria-label="Move up"><!></button> <button class="layer-order-btn svelte-w47swm" aria-label="Move down"><!></button> <button class="layer-delete-btn svelte-w47swm" aria-label="Delete layer"><!></button></div></div></div>'), ea = e.from_html('<div class="layers-list svelte-w47swm"></div>'), ta = e.from_html('<div class="canvas-header svelte-w47swm"><!></div>'), ra = e.from_html('<div class="processor-container svelte-w47swm"><sidebar class="svelte-w47swm"><!> <div class="editor-items svelte-w47swm"><div class="editor-section svelte-w47swm"><div class="mockup-name-header svelte-w47swm"><div class="mockup-title-group svelte-w47swm"><h3 class="mockup-name-title svelte-w47swm">Mockup</h3></div> <div class="mockup-buttons-group svelte-w47swm"><button class="new-mockup-btn svelte-w47swm" type="button"><!> New Mockup</button> <button class="view-all-btn svelte-w47swm" type="button">View All</button></div></div> <label class="form-label svelte-w47swm">Mockup Name</label> <div class="name-input-group svelte-w47swm"><input type="text" class="form-input name-input svelte-w47swm" placeholder="Mockup name..."/> <button class="copy-config-btn svelte-w47swm" type="button">Copy Config</button></div></div> <div class="editor-section svelte-w47swm"><div class="sidebar-title-2 svelte-w47swm">Canvas Setup</div> <div class="canvas-size-controls svelte-w47swm"><div class="form-input-group svelte-w47swm"><label class="form-label svelte-w47swm">Width</label> <input type="number" class="form-input svelte-w47swm" min="100" max="5000"/></div> <div class="form-input-group svelte-w47swm"><label class="form-label svelte-w47swm">Height</label> <input type="number" class="form-input svelte-w47swm" min="100" max="5000"/></div></div></div> <div class="editor-section svelte-w47swm"><div class="layers-header svelte-w47swm"><div class="layers-title svelte-w47swm"> </div> <div class="add-layer-buttons svelte-w47swm"><button class="add-layer-btn secondary svelte-w47swm" type="button"><!> </button> <label class="add-layer-btn svelte-w47swm"><!> File <input type="file" accept="image/*" style="display: none;"/></label></div></div> <!> <!></div> <!></div></sidebar> <div class="output-canvas svelte-w47swm"><!> <!></div> <!></div>');
2201
+ const na = {
2202
+ hash: "svelte-w47swm",
2203
+ code: `.form-label.svelte-w47swm {display:block;font-size:0.75rem;font-weight:500;color:var(--color-text-muted, #666);margin-bottom:0.375rem;}.form-input.svelte-w47swm {width:100%;padding-top:0.5rem;padding-bottom:0.5rem;border:1px solid var(--color-border, #ccc);border-radius:4px;font-size:0.875rem;margin-bottom:1rem;}.form-input-group.svelte-w47swm .form-input:where(.svelte-w47swm) {margin-bottom:0;}.form-input.svelte-w47swm:focus {outline:none;border-color:var(--color-primary, #3b82f6);}.form-input-group.svelte-w47swm {display:flex;flex-direction:column;gap:0.25rem;}.processor-container.svelte-w47swm {display:flex;height:100%;overflow:hidden;}sidebar.svelte-w47swm {min-width:360px;flex-shrink:0;background:var(--color-surface, #fff);border-right:1px solid var(--color-border, #ccc);display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;padding-left:1rem;}.header-logos.svelte-w47swm {display:flex;gap:1rem;font-size:1.5rem;padding:0.5rem;padding-right:1rem;border-bottom:1px solid var(--color-border, #ccc);align-items:center;flex-wrap:wrap;}.editor-items.svelte-w47swm {flex:1;overflow-y:auto;padding:0;padding-right:0.5rem;display:flex;flex-direction:column;}.editor-section.svelte-w47swm {border-bottom:1px solid var(--color-border, #ccc);padding:0.25rem 0 0.75rem 0;}.output-canvas.svelte-w47swm {flex:1;display:flex;min-width:0;background:var(--color-bg, #f5f5f5);overflow:hidden;position:relative;flex-shrink:0;}.canvas-header.svelte-w47swm {display:none;}.sidebar-title-2.svelte-w47swm {font-size:0.875rem;font-weight:600;text-transform:uppercase;color:var(--color-text-muted, #666);padding:0.75rem 0 0.25rem 0;margin-bottom:0.5rem;}.layers-header.svelte-w47swm {display:flex;align-items:center;justify-content:space-between;gap:0.5rem;margin-bottom:0.5rem;}.layers-title.svelte-w47swm {font-size:0.875rem;font-weight:600;text-transform:uppercase;color:var(--color-text-muted, #666);flex:1;}.add-layer-buttons.svelte-w47swm {display:flex;gap:0.25rem;}.add-layer-btn.svelte-w47swm {padding:0.375rem 0.75rem;background:var(--color-primary, #3b82f6);color:white;border:none;border-radius:4px;cursor:pointer;font-size:0.875rem;transition:background 200ms;display:flex;align-items:center;gap:0.375rem;}.add-layer-btn.svelte-w47swm:hover {background:var(--color-primary-dark, #2563eb);}.add-layer-btn.secondary.svelte-w47swm {background:transparent;color:var(--color-text, #111);border:1px solid var(--color-border, #ccc);}.add-layer-btn.secondary.svelte-w47swm:hover {background:var(--color-bg, #f5f5f5);}.url-input-group.svelte-w47swm {display:flex;gap:0.5rem;margin-top:0.5rem;padding:0.75rem;background:var(--color-surface-alt, #f5f5f5);border-radius:4px;}.url-input-group.svelte-w47swm input:where(.svelte-w47swm) {flex:1;padding-top:0.375rem;padding-bottom:0.375rem;border:1px solid var(--color-border, #ccc);border-radius:4px;font-size:0.875rem;}.url-input-group.svelte-w47swm button:where(.svelte-w47swm) {padding:0.375rem 0.75rem;background:var(--color-primary, #3b82f6);color:white;border:none;border-radius:4px;cursor:pointer;font-size:0.875rem;transition:background 200ms;}.url-input-group.svelte-w47swm button:where(.svelte-w47swm):hover {background:var(--color-primary-dark, #2563eb);}.canvas-size-controls.svelte-w47swm {display:grid;grid-template-columns:1fr 1fr;gap:0.5rem;margin-bottom:1rem;margin-top:0;}.form-input-group.svelte-w47swm {display:flex;flex-direction:column;}.no-layers.svelte-w47swm {padding:1rem;text-align:center;color:var(--color-text-muted, #666);font-size:0.875rem;}.layers-list.svelte-w47swm {display:flex;flex-direction:column;gap:0.5rem;}.layer-item.svelte-w47swm {display:flex;align-items:center;gap:0.5rem;padding:0.5rem;border:1px solid var(--color-border, #ccc);border-radius:4px;cursor:pointer;transition:all 200ms;background:var(--color-surface, #fff);}.layer-item.svelte-w47swm:hover {border-color:var(--color-primary, #3b82f6);background:var(--color-surface-alt, #f5f5f5);}.layer-item.selected.svelte-w47swm {border-color:var(--color-primary, #3b82f6);background:var(--color-primary-light, #eff6ff);}.layer-item-preview.svelte-w47swm {width:40px;height:40px;flex-shrink:0;border-radius:4px;overflow:hidden;background:#f5f5f5;display:flex;align-items:center;justify-content:center;}.layer-item-preview.svelte-w47swm img:where(.svelte-w47swm) {width:100%;height:100%;object-fit:cover;}.layer-item-info.svelte-w47swm {flex:1;display:flex;align-items:center;justify-content:space-between;gap:0.5rem;}.layer-item-name.svelte-w47swm {font-size:0.875rem;color:var(--color-text, #111);display:flex;flex-direction:column;gap:0.25rem;}.layer-key-badge.svelte-w47swm {font-size:0.7rem;font-family:monospace;background:var(--color-primary-light, #eff6ff);color:var(--color-primary, #3b82f6);padding:0.125rem 0.375rem;border-radius:3px;font-weight:500;}.layer-item-actions.svelte-w47swm {display:flex;gap:0.25rem;align-items:center;}.layer-order-btn.svelte-w47swm {background:transparent;border:1px solid var(--color-border, #ccc);border-radius:3px;width:24px;height:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all 200ms;color:var(--color-text, #000);padding:0;}.layer-order-btn.svelte-w47swm:hover:not(:disabled) {background:var(--color-primary, #3b82f6);border-color:var(--color-primary, #3b82f6);color:white;}.layer-order-btn.svelte-w47swm:disabled {opacity:0.3;cursor:not-allowed;}.layer-delete-btn.svelte-w47swm {background:#ef4444;color:white;border:none;border-radius:3px;display:flex;align-items:center;justify-content:center;padding:0;width:24px;height:24px;cursor:pointer;font-size:1rem;line-height:1;transition:background 200ms;}.layer-delete-btn.svelte-w47swm:hover {background:#dc2626;}.mockup-name-header.svelte-w47swm {display:flex;align-items:center;justify-content:space-between;margin-bottom:0.5rem;}.mockup-title-group.svelte-w47swm {display:flex;align-items:center;gap:0.5rem;}.mockup-buttons-group.svelte-w47swm {display:flex;align-items:center;gap:0.5rem;}.new-mockup-btn.svelte-w47swm {padding:0.375rem 0.75rem;background:var(--color-primary, #3b82f6);color:white;border:none;border-radius:4px;cursor:pointer;font-size:0.875rem;transition:background 200ms;display:flex;align-items:center;gap:0.375rem;}.new-mockup-btn.svelte-w47swm:hover {background:var(--color-primary-dark, #2563eb);}.mockup-name-title.svelte-w47swm {font-size:0.875rem;font-weight:600;text-transform:uppercase;color:var(--color-text-muted, #666);margin:0;}.view-all-btn.svelte-w47swm {padding:0.375rem 0.75rem;background:transparent;color:var(--color-primary, #3b82f6);border:1px solid var(--color-primary, #3b82f6);border-radius:4px;cursor:pointer;font-size:0.875rem;transition:all 200ms;}.view-all-btn.svelte-w47swm:hover {background:var(--color-primary, #3b82f6);color:white;}.form-label.svelte-w47swm {display:block;font-size:0.875rem;font-weight:500;color:var(--color-text, #111);margin-bottom:0.25rem;}.form-input.svelte-w47swm {width:100%;padding:0.5rem;border:1px solid var(--color-border, #ccc);border-radius:4px;font-size:0.875rem;margin-bottom:0.75rem;}.name-input-group.svelte-w47swm {display:flex;gap:0.5rem;align-items:stretch;}.name-input.svelte-w47swm {flex:1;margin-bottom:0;min-width:0;}.copy-config-btn.svelte-w47swm {padding:0.375rem 0.75rem;background:transparent;color:var(--color-primary, #3b82f6);border:1px solid var(--color-primary, #3b82f6);border-radius:4px;cursor:pointer;font-size:0.875rem;transition:all 200ms;white-space:nowrap;flex-shrink:0;}.copy-config-btn.svelte-w47swm:hover {background:var(--color-primary, #3b82f6);color:white;}.no-layers.svelte-w47swm {text-align:center;color:var(--color-text-muted, #666);font-size:0.875rem;padding:2rem;}
2204
+
2205
+ @media (max-width: 768px) {.processor-container.svelte-w47swm {flex-direction:column;height:100%;}sidebar.svelte-w47swm {min-width:unset;width:100%;border-right:none;border-top:1px solid var(--color-border, #ccc);order:2;flex-shrink:1;overflow-y:auto;}sidebar.svelte-w47swm .header-logos:where(.svelte-w47swm) {display:none;}.output-canvas.svelte-w47swm {order:1;flex:0 0 50vh;height:50vh;min-height:50vh;}.canvas-header.svelte-w47swm {display:flex;position:absolute;top:0;left:0;right:0;z-index:10;gap:1rem;font-size:1.5rem;padding:0.5rem 1rem;align-items:center;flex-wrap:wrap;}
2206
+ }`
2207
+ };
2208
+ function da(o, n) {
2209
+ e.push(n, !0), e.append_styles(o, na);
2210
+ let t = e.prop(n, "storageKey", 3, Vn), a = e.prop(n, "currentMockupKey", 3, Fn), r = e.state(e.proxy(tt())), s = e.state(""), l = e.state(null), f = e.state(""), g = e.state(!1), w = e.state(!1), u = null;
2211
+ e.derived(() => e.get(l) ? e.get(r).composition.layers.find((C) => C.id === e.get(l)) ?? null : null);
2212
+ function h(C) {
2213
+ const R = {
2156
2214
  id: crypto.randomUUID(),
2157
- src: P,
2215
+ src: C,
2158
2216
  ...Qt,
2159
2217
  effects: [{ ...fe }],
2160
2218
  transform: {
2161
- x: e.get(n).composition.width / 2,
2162
- y: e.get(n).composition.height / 2,
2219
+ x: e.get(r).composition.width / 2,
2220
+ y: e.get(r).composition.height / 2,
2163
2221
  scale: 1,
2164
2222
  rotation: 0
2165
2223
  }
2166
2224
  };
2167
- e.get(n).composition.layers.push(W), e.set(l, W.id, !0), p();
2225
+ e.get(r).composition.layers.push(R), e.set(l, R.id, !0), p();
2168
2226
  }
2169
2227
  function m() {
2170
- const P = e.get(f).trim();
2171
- P && (_(P), e.set(f, ""), e.set(h, !1));
2172
- }
2173
- function T(P) {
2174
- const W = P.currentTarget, q = W.files?.[0];
2175
- if (q) {
2176
- const Q = new FileReader();
2177
- Q.onload = (ne) => {
2178
- const $ = ne.target?.result;
2179
- typeof $ == "string" && _($);
2180
- }, Q.readAsDataURL(q);
2228
+ const C = e.get(f).trim();
2229
+ C && (h(C), e.set(f, ""), e.set(g, !1));
2230
+ }
2231
+ function T(C) {
2232
+ const R = C.currentTarget, L = R.files?.[0];
2233
+ if (L) {
2234
+ const $ = new FileReader();
2235
+ $.onload = (re) => {
2236
+ const Q = re.target?.result;
2237
+ typeof Q == "string" && h(Q);
2238
+ }, $.readAsDataURL(L);
2181
2239
  }
2182
- W.value = "";
2240
+ R.value = "";
2183
2241
  }
2184
- function v(P) {
2185
- e.set(l, P, !0);
2242
+ function v(C) {
2243
+ e.set(l, C, !0);
2186
2244
  }
2187
- function y(P, W) {
2188
- const q = e.get(n).composition.layers.find((Q) => Q.id === P);
2189
- q && (q.transform = W, p());
2245
+ function y(C, R) {
2246
+ const L = e.get(r).composition.layers.find(($) => $.id === C);
2247
+ L && (L.transform = R, p());
2190
2248
  }
2191
- function x(P, W) {
2192
- const q = e.get(n).composition.layers.find((Q) => Q.id === P);
2193
- q && (q.opacity = W, p());
2249
+ function x(C, R) {
2250
+ const L = e.get(r).composition.layers.find(($) => $.id === C);
2251
+ L && (L.opacity = R, p());
2194
2252
  }
2195
- function I(P, W) {
2196
- const q = e.get(n).composition.layers.find((Q) => Q.id === P);
2197
- q && (q.visible = W, p());
2253
+ function N(C, R) {
2254
+ const L = e.get(r).composition.layers.find(($) => $.id === C);
2255
+ L && (L.visible = R, p());
2198
2256
  }
2199
- function b(P, W) {
2200
- const q = e.get(n).composition.layers.find((Q) => Q.id === P);
2201
- q && (q.effects = W, p());
2257
+ function _(C, R) {
2258
+ const L = e.get(r).composition.layers.find(($) => $.id === C);
2259
+ L && (L.effects = R, p());
2202
2260
  }
2203
- function k(P, W) {
2204
- const q = e.get(n).composition.layers.find((Q) => Q.id === P);
2205
- q && (q.name = W.trim() || void 0, p());
2261
+ function k(C, R) {
2262
+ const L = e.get(r).composition.layers.find(($) => $.id === C);
2263
+ L && (L.name = R.trim() || void 0, p());
2206
2264
  }
2207
- function C(P) {
2208
- e.get(n).composition.layers = e.get(n).composition.layers.filter((W) => W.id !== P), e.get(l) === P && e.set(l, null), p();
2265
+ function I(C) {
2266
+ e.get(r).composition.layers = e.get(r).composition.layers.filter((R) => R.id !== C), e.get(l) === C && e.set(l, null), p();
2209
2267
  }
2210
- function S(P) {
2211
- const W = e.get(n).composition.layers.findIndex((q) => q.id === P);
2212
- if (W > 0) {
2213
- const q = [...e.get(n).composition.layers];
2214
- [q[W - 1], q[W]] = [q[W], q[W - 1]], e.get(n).composition.layers = q, p();
2268
+ function z(C) {
2269
+ const R = e.get(r).composition.layers.findIndex((L) => L.id === C);
2270
+ if (R > 0) {
2271
+ const L = [...e.get(r).composition.layers];
2272
+ [L[R - 1], L[R]] = [L[R], L[R - 1]], e.get(r).composition.layers = L, p();
2215
2273
  }
2216
2274
  }
2217
- function g(P) {
2218
- const W = e.get(n).composition.layers.findIndex((q) => q.id === P);
2219
- if (W >= 0 && W < e.get(n).composition.layers.length - 1) {
2220
- const q = [...e.get(n).composition.layers];
2221
- [q[W], q[W + 1]] = [q[W + 1], q[W]], e.get(n).composition.layers = q, p();
2275
+ function b(C) {
2276
+ const R = e.get(r).composition.layers.findIndex((L) => L.id === C);
2277
+ if (R >= 0 && R < e.get(r).composition.layers.length - 1) {
2278
+ const L = [...e.get(r).composition.layers];
2279
+ [L[R], L[R + 1]] = [L[R + 1], L[R]], e.get(r).composition.layers = L, p();
2222
2280
  }
2223
2281
  }
2224
- function u(P, W) {
2225
- e.get(n).composition.width = P, e.get(n).composition.height = W, p();
2282
+ function d(C, R) {
2283
+ e.get(r).composition.width = C, e.get(r).composition.height = R, p();
2226
2284
  }
2227
2285
  function p() {
2228
- d && clearTimeout(d), d = setTimeout(
2286
+ u && clearTimeout(u), u = setTimeout(
2229
2287
  () => {
2230
- o();
2288
+ i();
2231
2289
  },
2232
2290
  500
2233
2291
  );
2234
2292
  }
2235
- function o() {
2236
- e.get(n).name = e.get(i) || "Untitled Mockup", e.get(n).updatedAt = Date.now(), Ta(e.get(n), t()), je(e.get(n).id, s());
2293
+ function i() {
2294
+ e.get(r).name = e.get(s) || "Untitled Mockup", e.get(r).updatedAt = Date.now(), Xn(e.get(r), t()), Oe(e.get(r).id, a());
2237
2295
  }
2238
2296
  function c() {
2239
- o();
2240
- const P = tt();
2241
- e.set(n, P, !0), e.set(i, P.name, !0), je(null, s());
2297
+ i();
2298
+ const C = tt();
2299
+ e.set(r, C, !0), e.set(s, C.name, !0), Oe(null, a());
2242
2300
  }
2243
- function M(P) {
2244
- o(), e.set(n, P, !0), e.set(i, P.name, !0), je(P.id, s()), e.set(w, !1);
2301
+ function M(C) {
2302
+ i(), e.set(r, C, !0), e.set(s, C.name, !0), Oe(C.id, a()), e.set(w, !1);
2245
2303
  }
2246
- function N() {
2304
+ function S() {
2247
2305
  c(), e.set(w, !1);
2248
2306
  }
2249
- async function B() {
2307
+ async function Y() {
2250
2308
  try {
2251
- const P = JSON.stringify(e.get(n), null, 2);
2252
- await navigator.clipboard.writeText(P);
2253
- } catch (P) {
2254
- console.error("Failed to copy config:", P);
2309
+ const C = JSON.stringify(e.get(r), null, 2);
2310
+ await navigator.clipboard.writeText(C);
2311
+ } catch (C) {
2312
+ console.error("Failed to copy config:", C);
2255
2313
  }
2256
2314
  }
2257
2315
  Te(() => {
2258
- const P = Ia(s());
2259
- if (P) {
2260
- const W = Sa(P, t());
2261
- W && (e.set(n, W, !0), e.set(i, W.name, !0));
2316
+ const C = Bn(a());
2317
+ if (C) {
2318
+ const R = Yn(C, t());
2319
+ R && (e.set(r, R, !0), e.set(s, R.name, !0));
2262
2320
  }
2263
2321
  return () => {
2264
- d && clearTimeout(d), o();
2322
+ u && clearTimeout(u), i();
2265
2323
  };
2266
2324
  });
2267
- var J = Ha(), Z = e.child(J), U = e.child(Z);
2325
+ var J = ra(), B = e.child(J), U = e.child(B);
2268
2326
  {
2269
- var z = (P) => {
2270
- var W = Ba(), q = e.child(W);
2271
- e.snippet(q, () => a.children), e.reset(W), e.append(P, W);
2327
+ var j = (C) => {
2328
+ var R = Kn(), L = e.child(R);
2329
+ e.snippet(L, () => n.children), e.reset(R), e.append(C, R);
2272
2330
  };
2273
- e.if(U, (P) => {
2274
- a.children && P(z);
2331
+ e.if(U, (C) => {
2332
+ n.children && C(j);
2275
2333
  });
2276
2334
  }
2277
- var E = e.sibling(U, 2), O = e.child(E), j = e.child(O), L = e.sibling(e.child(j), 2), K = e.child(L);
2335
+ var q = e.sibling(U, 2), E = e.child(q), O = e.child(E), Z = e.sibling(e.child(O), 2), K = e.child(Z);
2278
2336
  K.__click = c;
2279
2337
  var H = e.child(K);
2280
2338
  Me(H, {}), e.next(), e.reset(K);
2281
2339
  var G = e.sibling(K, 2);
2282
- G.__click = () => e.set(w, !0), e.reset(L), e.reset(j);
2283
- var X = e.sibling(j, 4), Y = e.child(X);
2284
- e.remove_input_defaults(Y), Y.__input = () => {
2340
+ G.__click = () => e.set(w, !0), e.reset(Z), e.reset(O);
2341
+ var D = e.sibling(O, 4), X = e.child(D);
2342
+ e.remove_input_defaults(X), X.__input = () => {
2285
2343
  p();
2286
2344
  };
2287
- var D = e.sibling(Y, 2);
2288
- D.__click = B, e.reset(X), e.reset(O);
2289
- var R = e.sibling(O, 2), V = e.sibling(e.child(R), 2), A = e.child(V), ue = e.sibling(e.child(A), 2);
2290
- e.remove_input_defaults(ue), ue.__input = (P) => u(Number(P.currentTarget.value), e.get(n).composition.height), e.reset(A);
2291
- var oe = e.sibling(A, 2), he = e.sibling(e.child(oe), 2);
2292
- e.remove_input_defaults(he), he.__input = (P) => u(e.get(n).composition.width, Number(P.currentTarget.value)), e.reset(oe), e.reset(V), e.reset(R);
2293
- var _e = e.sibling(R, 2), le = e.child(_e), ge = e.child(le), We = e.child(ge);
2294
- e.reset(ge);
2295
- var Se = e.sibling(ge, 2), de = e.child(Se);
2296
- de.__click = () => e.set(h, !e.get(h));
2297
- var Ne = e.child(de);
2345
+ var W = e.sibling(X, 2);
2346
+ W.__click = Y, e.reset(D), e.reset(E);
2347
+ var P = e.sibling(E, 2), V = e.sibling(e.child(P), 2), A = e.child(V), de = e.sibling(e.child(A), 2);
2348
+ e.remove_input_defaults(de), de.__input = (C) => d(Number(C.currentTarget.value), e.get(r).composition.height), e.reset(A);
2349
+ var ie = e.sibling(A, 2), ge = e.sibling(e.child(ie), 2);
2350
+ e.remove_input_defaults(ge), ge.__input = (C) => d(e.get(r).composition.width, Number(C.currentTarget.value)), e.reset(ie), e.reset(V), e.reset(P);
2351
+ var he = e.sibling(P, 2), le = e.child(he), be = e.child(le), Re = e.child(be);
2352
+ e.reset(be);
2353
+ var ze = e.sibling(be, 2), ue = e.child(ze);
2354
+ ue.__click = () => e.set(g, !e.get(g));
2355
+ var Se = e.child(ue);
2356
+ Me(Se, {});
2357
+ var _e = e.sibling(Se);
2358
+ e.reset(ue);
2359
+ var pe = e.sibling(ue, 2), Ne = e.child(pe);
2298
2360
  Me(Ne, {});
2299
- var be = e.sibling(Ne);
2300
- e.reset(de);
2301
- var pe = e.sibling(de, 2), Ie = e.child(pe);
2302
- Me(Ie, {});
2303
- var ze = e.sibling(Ie, 2);
2304
- ze.__change = T, e.reset(pe), e.reset(Se), e.reset(le);
2361
+ var je = e.sibling(Ne, 2);
2362
+ je.__change = T, e.reset(pe), e.reset(ze), e.reset(le);
2305
2363
  var me = e.sibling(le, 2);
2306
2364
  {
2307
- var ye = (P) => {
2308
- var W = Ea(), q = e.child(W);
2309
- e.remove_input_defaults(q), q.__keydown = (ne) => ne.key === "Enter" && m();
2310
- var Q = e.sibling(q, 2);
2311
- Q.__click = m, e.reset(W), e.bind_value(q, () => e.get(f), (ne) => e.set(f, ne)), e.append(P, W);
2365
+ var ye = (C) => {
2366
+ var R = Jn(), L = e.child(R);
2367
+ e.remove_input_defaults(L), L.__keydown = (re) => re.key === "Enter" && m();
2368
+ var $ = e.sibling(L, 2);
2369
+ $.__click = m, e.reset(R), e.bind_value(L, () => e.get(f), (re) => e.set(f, re)), e.append(C, R);
2312
2370
  };
2313
- e.if(me, (P) => {
2314
- e.get(h) && P(ye);
2371
+ e.if(me, (C) => {
2372
+ e.get(g) && C(ye);
2315
2373
  });
2316
2374
  }
2317
- var rt = e.sibling(me, 2);
2375
+ var ot = e.sibling(me, 2);
2318
2376
  {
2319
- var ot = (P) => {
2320
- var W = Za();
2321
- e.append(P, W);
2322
- }, lt = (P) => {
2323
- var W = ja();
2324
- e.each(W, 23, () => e.get(n).composition.layers, (q) => q.id, (q, Q, ne) => {
2325
- var $ = La();
2377
+ var it = (C) => {
2378
+ var R = Gn();
2379
+ e.append(C, R);
2380
+ }, lt = (C) => {
2381
+ var R = ea();
2382
+ e.each(R, 23, () => e.get(r).composition.layers, (L) => L.id, (L, $, re) => {
2383
+ var Q = Qn();
2326
2384
  let te;
2327
- $.__click = () => v(e.get(Q).id), $.__keydown = (ae) => ae.key === "Enter" && v(e.get(Q).id);
2328
- var Xe = e.child($), ft = e.child(Xe);
2329
- e.reset(Xe);
2330
- var Fe = e.sibling(Xe, 2), Ye = e.child(Fe), Ke = e.child(Ye), ht = e.sibling(Ke);
2385
+ Q.__click = () => v(e.get($).id), Q.__keydown = (ne) => ne.key === "Enter" && v(e.get($).id);
2386
+ var De = e.child(Q), ft = e.child(De);
2387
+ e.reset(De);
2388
+ var Fe = e.sibling(De, 2), Xe = e.child(Fe), Ke = e.child(Xe), gt = e.sibling(Ke);
2331
2389
  {
2332
- var _t = (ae) => {
2333
- var Ee = Oa(), wt = e.child(Ee, !0);
2334
- e.reset(Ee), e.template_effect(() => e.set_text(wt, e.get(Q).name)), e.append(ae, Ee);
2390
+ var ht = (ne) => {
2391
+ var qe = $n(), wt = e.child(qe, !0);
2392
+ e.reset(qe), e.template_effect(() => e.set_text(wt, e.get($).name)), e.append(ne, qe);
2335
2393
  };
2336
- e.if(ht, (ae) => {
2337
- e.get(Q).name && ae(_t);
2394
+ e.if(gt, (ne) => {
2395
+ e.get($).name && ne(ht);
2338
2396
  });
2339
2397
  }
2340
- e.reset(Ye);
2341
- var Je = e.sibling(Ye, 2), we = e.child(Je);
2342
- we.__click = (ae) => {
2343
- ae.stopPropagation(), S(e.get(Q).id);
2398
+ e.reset(Xe);
2399
+ var Je = e.sibling(Xe, 2), we = e.child(Je);
2400
+ we.__click = (ne) => {
2401
+ ne.stopPropagation(), z(e.get($).id);
2344
2402
  };
2345
- var gt = e.child(we);
2346
- nt(gt, { rotate: "-90deg" }), e.reset(we);
2403
+ var bt = e.child(we);
2404
+ rt(bt, { rotate: "-90deg" }), e.reset(we);
2347
2405
  var xe = e.sibling(we, 2);
2348
- xe.__click = (ae) => {
2349
- ae.stopPropagation(), g(e.get(Q).id);
2406
+ xe.__click = (ne) => {
2407
+ ne.stopPropagation(), b(e.get($).id);
2350
2408
  };
2351
- var bt = e.child(xe);
2352
- nt(bt, { rotate: "90deg" }), e.reset(xe);
2353
- var Be = e.sibling(xe, 2);
2354
- Be.__click = (ae) => {
2355
- ae.stopPropagation(), C(e.get(Q).id);
2409
+ var _t = e.child(xe);
2410
+ rt(_t, { rotate: "90deg" }), e.reset(xe);
2411
+ var Ye = e.sibling(xe, 2);
2412
+ Ye.__click = (ne) => {
2413
+ ne.stopPropagation(), I(e.get($).id);
2356
2414
  };
2357
- var yt = e.child(Be);
2358
- Ue(yt, {}), e.reset(Be), e.reset(Je), e.reset(Fe), e.reset($), e.template_effect(() => {
2359
- te = e.set_class($, 1, "layer-item svelte-w47swm", null, te, { selected: e.get(l) === e.get(Q).id }), e.set_attribute(ft, "src", e.get(Q).src), e.set_text(Ke, `${(e.get(Q).name || `Layer ${e.get(ne) + 1}`) ?? ""} `), we.disabled = e.get(ne) === 0, xe.disabled = e.get(ne) === e.get(n).composition.layers.length - 1;
2360
- }), e.append(q, $);
2361
- }), e.reset(W), e.append(P, W);
2415
+ var yt = e.child(Ye);
2416
+ Ue(yt, {}), e.reset(Ye), e.reset(Je), e.reset(Fe), e.reset(Q), e.template_effect(() => {
2417
+ te = e.set_class(Q, 1, "layer-item svelte-w47swm", null, te, { selected: e.get(l) === e.get($).id }), e.set_attribute(ft, "src", e.get($).src), e.set_text(Ke, `${(e.get($).name || `Layer ${e.get(re) + 1}`) ?? ""} `), we.disabled = e.get(re) === 0, xe.disabled = e.get(re) === e.get(r).composition.layers.length - 1;
2418
+ }), e.append(L, Q);
2419
+ }), e.reset(R), e.append(C, R);
2362
2420
  };
2363
- e.if(rt, (P) => {
2364
- e.get(n).composition.layers.length === 0 ? P(ot) : P(lt, !1);
2421
+ e.if(ot, (C) => {
2422
+ e.get(r).composition.layers.length === 0 ? C(it) : C(lt, !1);
2365
2423
  });
2366
2424
  }
2367
- e.reset(_e);
2368
- var ct = e.sibling(_e, 2);
2425
+ e.reset(he);
2426
+ var ct = e.sibling(he, 2);
2369
2427
  {
2370
- var ut = (P) => {
2371
- const W = e.derived(() => e.get(n).composition.layers.find(($) => $.id === e.get(l)));
2372
- var q = e.comment(), Q = e.first_child(q);
2428
+ var dt = (C) => {
2429
+ const R = e.derived(() => e.get(r).composition.layers.find((Q) => Q.id === e.get(l)));
2430
+ var L = e.comment(), $ = e.first_child(L);
2373
2431
  {
2374
- var ne = ($) => {
2375
- wa($, {
2432
+ var re = (Q) => {
2433
+ Pn(Q, {
2376
2434
  get layer() {
2377
- return e.get(W);
2435
+ return e.get(R);
2378
2436
  },
2379
2437
  get canvasWidth() {
2380
- return e.get(n).composition.width;
2438
+ return e.get(r).composition.width;
2381
2439
  },
2382
2440
  get canvasHeight() {
2383
- return e.get(n).composition.height;
2441
+ return e.get(r).composition.height;
2384
2442
  },
2385
- onTransformChange: (te) => y(e.get(W).id, te),
2386
- onOpacityChange: (te) => x(e.get(W).id, te),
2387
- onVisibilityChange: (te) => I(e.get(W).id, te),
2388
- onEffectsChange: (te) => b(e.get(W).id, te),
2389
- onNameChange: (te) => k(e.get(W).id, te),
2390
- onDelete: () => C(e.get(W).id)
2443
+ onTransformChange: (te) => y(e.get(R).id, te),
2444
+ onOpacityChange: (te) => x(e.get(R).id, te),
2445
+ onVisibilityChange: (te) => N(e.get(R).id, te),
2446
+ onEffectsChange: (te) => _(e.get(R).id, te),
2447
+ onNameChange: (te) => k(e.get(R).id, te),
2448
+ onDelete: () => I(e.get(R).id)
2391
2449
  });
2392
2450
  };
2393
- e.if(Q, ($) => {
2394
- e.get(W) && $(ne);
2451
+ e.if($, (Q) => {
2452
+ e.get(R) && Q(re);
2395
2453
  });
2396
2454
  }
2397
- e.append(P, q);
2455
+ e.append(C, L);
2398
2456
  };
2399
- e.if(ct, (P) => {
2400
- e.get(l) && P(ut);
2457
+ e.if(ct, (C) => {
2458
+ e.get(l) && C(dt);
2401
2459
  });
2402
2460
  }
2403
- e.reset(E), e.reset(Z);
2404
- var De = e.sibling(Z, 2), Ve = e.child(De);
2461
+ e.reset(q), e.reset(B);
2462
+ var We = e.sibling(B, 2), Ve = e.child(We);
2405
2463
  {
2406
- var dt = (P) => {
2407
- var W = qa(), q = e.child(W);
2408
- e.snippet(q, () => a.children), e.reset(W), e.append(P, W);
2464
+ var ut = (C) => {
2465
+ var R = ta(), L = e.child(R);
2466
+ e.snippet(L, () => n.children), e.reset(R), e.append(C, R);
2409
2467
  };
2410
- e.if(Ve, (P) => {
2411
- a.children && P(dt);
2468
+ e.if(Ve, (C) => {
2469
+ n.children && C(ut);
2412
2470
  });
2413
2471
  }
2414
2472
  var pt = e.sibling(Ve, 2);
2415
- en(pt, {
2416
- children: (P, W) => {
2417
- sn(P, {
2473
+ rr(pt, {
2474
+ children: (C, R) => {
2475
+ ir(C, {
2418
2476
  get mockup() {
2419
- return e.get(n);
2477
+ return e.get(r);
2420
2478
  }
2421
2479
  });
2422
2480
  }
2423
- }), e.reset(De);
2424
- var mt = e.sibling(De, 2);
2481
+ }), e.reset(We);
2482
+ var mt = e.sibling(We, 2);
2425
2483
  {
2426
- var vt = (P) => {
2427
- za(P, {
2484
+ var vt = (C) => {
2485
+ An(C, {
2428
2486
  onclose: () => e.set(w, !1),
2429
2487
  onSelect: M,
2430
- onNew: N,
2488
+ onNew: S,
2431
2489
  get currentMockupId() {
2432
- return e.get(n).id;
2490
+ return e.get(r).id;
2433
2491
  },
2434
2492
  get storageKey() {
2435
2493
  return t();
2436
2494
  }
2437
2495
  });
2438
2496
  };
2439
- e.if(mt, (P) => {
2440
- e.get(w) && P(vt);
2497
+ e.if(mt, (C) => {
2498
+ e.get(w) && C(vt);
2441
2499
  });
2442
2500
  }
2443
2501
  e.reset(J), e.template_effect(() => {
2444
- e.set_value(ue, e.get(n).composition.width), e.set_value(he, e.get(n).composition.height), e.set_text(We, `Layers (${e.get(n).composition.layers.length ?? ""})`), e.set_text(be, ` ${e.get(h) ? "Cancel" : "URL"}`);
2445
- }), e.bind_value(Y, () => e.get(i), (P) => e.set(i, P)), e.append(r, J), e.pop();
2502
+ e.set_value(de, e.get(r).composition.width), e.set_value(ge, e.get(r).composition.height), e.set_text(Re, `Layers (${e.get(r).composition.layers.length ?? ""})`), e.set_text(_e, ` ${e.get(g) ? "Cancel" : "URL"}`);
2503
+ }), e.bind_value(X, () => e.get(s), (C) => e.set(s, C)), e.append(o, J), e.pop();
2446
2504
  }
2447
2505
  e.delegate(["click", "input", "change", "keydown"]);
2448
2506
  export {
2449
- Ya as CURRENT_MOCKUP_KEY,
2450
- at as InputBatcher,
2451
- wa as LayerControls,
2452
- Ga as MockupEditor,
2453
- sn as MockupEditorRenderer,
2454
- za as MockupListModal,
2455
- Ja as MockupRenderer,
2507
+ Fn as CURRENT_MOCKUP_KEY,
2508
+ nt as InputBatcher,
2509
+ Pn as LayerControls,
2510
+ da as MockupEditor,
2511
+ ir as MockupEditorRenderer,
2512
+ An as MockupListModal,
2513
+ ca as MockupRenderer,
2456
2514
  Kt as RenderScheduler,
2457
- Xa as STORAGE_KEY,
2458
- en as ZoomableCanvas,
2515
+ Vn as STORAGE_KEY,
2516
+ rr as ZoomableCanvas,
2459
2517
  tt as createNewMockup,
2460
- st as defaultComposition,
2518
+ at as defaultComposition,
2461
2519
  ce as defaultCylinderWarp,
2462
- ie as defaultImageOnSurface,
2520
+ se as defaultImageOnSurface,
2463
2521
  Qt as defaultLayer,
2464
- se as defaultPlaneWarp,
2522
+ ae as defaultPlaneWarp,
2465
2523
  fe as defaultResizeEffect,
2466
2524
  ee as defaultRestyleEffect,
2467
2525
  ke as defaultSphereWarp,
2468
- Gt as defaultTransform,
2469
- Ce as defaultView,
2526
+ $t as defaultTransform,
2527
+ Ie as defaultView,
2470
2528
  ve as defaultWarpDebug,
2471
- $e as defaultWarpEffect,
2472
- Na as deleteMockup,
2473
- Re as loadAllMockups,
2474
- Ia as loadCurrentMockupId,
2475
- Sa as loadMockup,
2476
- qe as renderMockupCanvas,
2477
- tn as renderMockupCanvasEditor,
2478
- je as saveCurrentMockupId,
2479
- Ta as saveMockup
2529
+ Qe as defaultWarpEffect,
2530
+ qn as deleteMockup,
2531
+ Pe as loadAllMockups,
2532
+ Bn as loadCurrentMockupId,
2533
+ Yn as loadMockup,
2534
+ Le as renderMockupCanvas,
2535
+ nr as renderMockupCanvasEditor,
2536
+ Oe as saveCurrentMockupId,
2537
+ Xn as saveMockup
2480
2538
  };