@pixerate/editor 0.96.0 → 0.98.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/THIRD_PARTY_NOTICES.md +4 -2
  2. package/dist/animation-editor/index.cjs +55 -53
  3. package/dist/animation-editor/index.cjs.map +1 -1
  4. package/dist/animation-editor/index.d.cts +3 -2
  5. package/dist/animation-editor/index.d.ts +3 -2
  6. package/dist/animation-editor/index.js +11 -9
  7. package/dist/animation-editor/index.js.map +1 -1
  8. package/dist/chunk-DWGZUSES.cjs +694 -0
  9. package/dist/chunk-DWGZUSES.cjs.map +1 -0
  10. package/dist/chunk-GX332W2C.js +181 -0
  11. package/dist/chunk-GX332W2C.js.map +1 -0
  12. package/dist/{chunk-7MD7C6XQ.cjs → chunk-JF5PXN7W.cjs} +96 -744
  13. package/dist/chunk-JF5PXN7W.cjs.map +1 -0
  14. package/dist/chunk-KKREERP2.js +694 -0
  15. package/dist/chunk-KKREERP2.js.map +1 -0
  16. package/dist/chunk-MUUXNRU4.cjs +181 -0
  17. package/dist/chunk-MUUXNRU4.cjs.map +1 -0
  18. package/dist/{chunk-KFTQ2PKP.js → chunk-WIR377F6.js} +1001 -61
  19. package/dist/chunk-WIR377F6.js.map +1 -0
  20. package/dist/{chunk-T422YCHR.cjs → chunk-WT6ZAWJP.cjs} +1023 -83
  21. package/dist/chunk-WT6ZAWJP.cjs.map +1 -0
  22. package/dist/{chunk-4JLB2USO.js → chunk-YGZNGDIT.js} +45 -693
  23. package/dist/chunk-YGZNGDIT.js.map +1 -0
  24. package/dist/image-editor/index.cjs +1519 -360
  25. package/dist/image-editor/index.cjs.map +1 -1
  26. package/dist/image-editor/index.d.cts +378 -5
  27. package/dist/image-editor/index.d.ts +378 -5
  28. package/dist/image-editor/index.js +1244 -85
  29. package/dist/image-editor/index.js.map +1 -1
  30. package/dist/raster/index.cjs +25 -2
  31. package/dist/raster/index.cjs.map +1 -1
  32. package/dist/raster/index.d.cts +143 -4
  33. package/dist/raster/index.d.ts +143 -4
  34. package/dist/raster/index.js +25 -2
  35. package/dist/{svg-ymShkNtu.d.cts → svg-C9r284x8.d.cts} +6 -9
  36. package/dist/{svg-Dh17jCyA.d.ts → svg-MVKBqwD4.d.ts} +6 -9
  37. package/dist/types-CwMPoRMU.d.cts +40 -0
  38. package/dist/types-CwMPoRMU.d.ts +40 -0
  39. package/dist/vector/index.cjs +490 -554
  40. package/dist/vector/index.cjs.map +1 -1
  41. package/dist/vector/index.d.cts +154 -292
  42. package/dist/vector/index.d.ts +154 -292
  43. package/dist/vector/index.js +91 -155
  44. package/dist/vector/index.js.map +1 -1
  45. package/dist/warp-B8rAguzs.d.ts +165 -0
  46. package/dist/warp-nYs2DPrx.d.cts +165 -0
  47. package/package.json +1 -1
  48. package/skills/pixerate-image-editor/SKILL.md +49 -3
  49. package/dist/chunk-4JLB2USO.js.map +0 -1
  50. package/dist/chunk-7MD7C6XQ.cjs.map +0 -1
  51. package/dist/chunk-KFTQ2PKP.js.map +0 -1
  52. package/dist/chunk-T422YCHR.cjs.map +0 -1
@@ -32,6 +32,32 @@ var _chunkXGD3FSNCcjs = require('./chunk-XGD3FSNC.cjs');
32
32
 
33
33
 
34
34
 
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+ var _chunkDWGZUSEScjs = require('./chunk-DWGZUSES.cjs');
57
+
58
+
59
+
60
+
35
61
  var _chunkMR3Z4OQIcjs = require('./chunk-MR3Z4OQI.cjs');
36
62
 
37
63
 
@@ -2001,573 +2027,6 @@ function mapBezierPath(path, f, tolerance = 0.1, options = {}) {
2001
2027
  }
2002
2028
 
2003
2029
  // src/vector/warp.ts
2004
- var VECTOR_WARP_STYLES = [
2005
- "arc",
2006
- "arcLower",
2007
- "arcUpper",
2008
- "arch",
2009
- "bulge",
2010
- "shellLower",
2011
- "shellUpper",
2012
- "flag",
2013
- "wave",
2014
- "fish",
2015
- "rise",
2016
- "fisheye",
2017
- "inflate",
2018
- "squeeze",
2019
- "twist"
2020
- ];
2021
- var VECTOR_WARP_STYLE_LABELS = {
2022
- arc: "Arc",
2023
- arcLower: "Arc Lower",
2024
- arcUpper: "Arc Upper",
2025
- arch: "Arch",
2026
- bulge: "Bulge",
2027
- shellLower: "Shell Lower",
2028
- shellUpper: "Shell Upper",
2029
- flag: "Flag",
2030
- wave: "Wave",
2031
- fish: "Fish",
2032
- rise: "Rise",
2033
- fisheye: "Fisheye",
2034
- inflate: "Inflate",
2035
- squeeze: "Squeeze",
2036
- twist: "Twist"
2037
- };
2038
- function restGrid() {
2039
- return [0, 1, 2, 3].map((j) => [0, 1, 2, 3].map((i) => [i / 3, j / 3]));
2040
- }
2041
- function edgeArc(y, b, up, h) {
2042
- if (Math.abs(b) < 1e-9) return [0, 1, 2, 3].map((i) => [i / 3, y]);
2043
- const th = Math.abs(b) * Math.PI;
2044
- const k = 4 / 3 * Math.tan(th / 4) * 0.5 / Math.sin(th / 2);
2045
- const s = b > 0 === up ? -1 : 1;
2046
- const c = Math.cos(th / 2);
2047
- const n = Math.sin(th / 2);
2048
- const dy = s * k * n / h;
2049
- return [
2050
- [0, y],
2051
- [k * c, y + dy],
2052
- [1 - k * c, y + dy],
2053
- [1, y]
2054
- ];
2055
- }
2056
- function arcGrid(b, h) {
2057
- if (Math.abs(b) < 1e-9) return restGrid();
2058
- const up = b > 0;
2059
- const th = Math.abs(b) * Math.PI;
2060
- const r = 0.5 / Math.sin(th / 2);
2061
- const k = 4 / 3 * Math.tan(th / 4);
2062
- const s = up ? -1 : 1;
2063
- const cy = up ? h + r * Math.cos(th / 2) : -r * Math.cos(th / 2);
2064
- return [0, 1, 2, 3].map((j) => {
2065
- const v2 = j / 3;
2066
- const big = r + h * (up ? 1 - v2 : v2);
2067
- const at2 = (a) => [0.5 + big * Math.sin(a), cy + s * big * Math.cos(a)];
2068
- const tangent2 = (a) => [Math.cos(a), -s * Math.sin(a)];
2069
- const p0 = at2(-th / 2);
2070
- const p3 = at2(th / 2);
2071
- const t0 = tangent2(-th / 2);
2072
- const t1 = tangent2(th / 2);
2073
- const l = k * big;
2074
- const pts = [p0, [p0[0] + l * t0[0], p0[1] + l * t0[1]], [p3[0] - l * t1[0], p3[1] - l * t1[1]], p3];
2075
- return pts.map((p) => [p[0], p[1] / h]);
2076
- });
2077
- }
2078
- function blendRows(top, bottom) {
2079
- return [0, 1, 2, 3].map((j) => {
2080
- const t = j / 3;
2081
- return [0, 1, 2, 3].map((i) => [top[i][0] + (bottom[i][0] - top[i][0]) * t, top[i][1] + (bottom[i][1] - top[i][1]) * t]);
2082
- });
2083
- }
2084
- var INNER = [
2085
- [1, 1, -1, -1],
2086
- [1, 2, 1, -1],
2087
- [2, 1, -1, 1],
2088
- [2, 2, 1, 1]
2089
- ];
2090
- function vectorWarpPresetGrid(style, b, hd, vd, vertical, aspect) {
2091
- const h = vertical ? 1 / aspect : aspect;
2092
- if (vertical) [hd, vd] = [vd, hd];
2093
- let g = restGrid();
2094
- switch (style) {
2095
- case "arc":
2096
- g = arcGrid(b, h);
2097
- break;
2098
- case "arch":
2099
- g = [0, 1, 2, 3].map((j) => edgeArc(j / 3, b, true, h));
2100
- break;
2101
- case "bulge":
2102
- g = blendRows(edgeArc(0, b, true, h), edgeArc(1, b, false, h));
2103
- break;
2104
- case "arcLower":
2105
- g = blendRows(g[0], edgeArc(1, b, false, h));
2106
- break;
2107
- case "arcUpper":
2108
- g = blendRows(edgeArc(0, b, true, h), g[3]);
2109
- break;
2110
- // The bulging edge and the outer points of the row next to it come from Arc (bent the other
2111
- // way for Shell Lower); the rest stays put.
2112
- case "shellLower": {
2113
- const a = arcGrid(-b, h);
2114
- g[3] = a[3];
2115
- g[2][0] = a[2][0];
2116
- g[2][3] = a[2][3];
2117
- break;
2118
- }
2119
- case "shellUpper": {
2120
- const a = arcGrid(b, h);
2121
- g[0] = a[0];
2122
- g[1][0] = a[1][0];
2123
- g[1][3] = a[1][3];
2124
- break;
2125
- }
2126
- case "flag":
2127
- for (const row of g) {
2128
- row[1][1] -= 2 * b;
2129
- row[2][1] += 2 * b;
2130
- }
2131
- break;
2132
- case "wave":
2133
- for (const row of g.slice(1, 3)) {
2134
- row[1][1] += 4 / 3 * b;
2135
- row[2][1] -= 4 / 3 * b;
2136
- }
2137
- break;
2138
- case "fish":
2139
- [-2, -2 / 3, 2 / 3, 2].forEach((f, j) => {
2140
- g[j][1][1] += f * b;
2141
- g[j][2][1] -= f * b;
2142
- });
2143
- break;
2144
- case "rise":
2145
- for (const row of g) {
2146
- row[0][1] += 2 * b;
2147
- row[1][1] += 2 * b;
2148
- }
2149
- break;
2150
- case "fisheye":
2151
- for (const [j, i, dx, dy] of INNER) {
2152
- g[j][i][0] += dx * 2 * b / 3;
2153
- g[j][i][1] += dy * 2 * b / 3;
2154
- }
2155
- break;
2156
- // Edge midpoints move out (Inflate) or the sides in (Squeeze) by b/3, the inner points by b/9.
2157
- case "inflate":
2158
- case "squeeze": {
2159
- const s = style === "inflate" ? 1 : -1;
2160
- for (const p of g[0].slice(1, 3)) p[1] -= b / 3;
2161
- for (const p of g[3].slice(1, 3)) p[1] += b / 3;
2162
- for (const row of g.slice(1, 3)) {
2163
- row[0][0] -= s * b / 3;
2164
- row[3][0] += s * b / 3;
2165
- }
2166
- for (const [j, i, dx, dy] of INNER) {
2167
- g[j][i][0] += s * dx * b / 9;
2168
- g[j][i][1] += dy * b / 9;
2169
- }
2170
- break;
2171
- }
2172
- // The inner points turn round the centre (the other way for a negative bend).
2173
- case "twist": {
2174
- const a = Math.abs(b);
2175
- if (b >= 0) {
2176
- g[1][1][0] += a;
2177
- g[1][2][1] += a;
2178
- g[2][1][1] -= a;
2179
- g[2][2][0] -= a;
2180
- } else {
2181
- g[1][1][1] += a;
2182
- g[1][2][0] -= a;
2183
- g[2][1][0] += a;
2184
- g[2][2][1] -= a;
2185
- }
2186
- break;
2187
- }
2188
- }
2189
- if (vd !== 0) {
2190
- const moved = (row, s) => {
2191
- const m = [(row[0][0] + row[3][0]) / 2, (row[0][1] + row[3][1]) / 2];
2192
- return row.map((p) => [m[0] + (p[0] - m[0]) * s - p[0], m[1] + (p[1] - m[1]) * s - p[1]]);
2193
- };
2194
- const d0 = moved(g[0], 1 - vd);
2195
- const d3 = moved(g[3], 1 + vd);
2196
- g.forEach((row, j) => {
2197
- const t = j / 3;
2198
- row.forEach((p, i) => {
2199
- p[0] += d0[i][0] + (d3[i][0] - d0[i][0]) * t;
2200
- p[1] += d0[i][1] + (d3[i][1] - d0[i][1]) * t;
2201
- });
2202
- });
2203
- }
2204
- if (hd !== 0) {
2205
- for (let i = 0; i < 4; i++) {
2206
- const s = 1 + hd * (2 * i / 3 - 1);
2207
- const m = [(g[0][i][0] + g[3][i][0]) / 2, (g[0][i][1] + g[3][i][1]) / 2];
2208
- for (const row of g) row[i] = [m[0] + (row[i][0] - m[0]) * s, m[1] + (row[i][1] - m[1]) * s];
2209
- }
2210
- }
2211
- if (vertical) g = [0, 1, 2, 3].map((j) => [0, 1, 2, 3].map((i) => [g[i][j][1], g[i][j][0]]));
2212
- return g;
2213
- }
2214
- function bernstein(t) {
2215
- const s = 1 - t;
2216
- return [s * s * s, 3 * s * s * t, 3 * s * t * t, t * t * t];
2217
- }
2218
- var lerp3 = (a, b, t) => ({ x: a.x + (b.x - a.x) * t, y: a.y + (b.y - a.y) * t });
2219
- function splitCubic(p, t) {
2220
- const a = lerp3(p[0], p[1], t);
2221
- const b = lerp3(p[1], p[2], t);
2222
- const c = lerp3(p[2], p[3], t);
2223
- const d = lerp3(a, b, t);
2224
- const e = lerp3(b, c, t);
2225
- return [p[0], a, d, lerp3(d, e, t), e, c, p[3]];
2226
- }
2227
- var BERN_INV = [
2228
- [1, 0, 0, 0],
2229
- [-5 / 6, 3, -1.5, 1 / 3],
2230
- [1 / 3, -1.5, 3, -5 / 6],
2231
- [0, 0, 0, 1]
2232
- ];
2233
- var pct = (v2) => typeof v2 === "number" && Number.isFinite(v2) ? Math.min(1, Math.max(-1, v2 / 100)) : 0;
2234
- function vectorWarpPresetMesh(preset, bounds) {
2235
- if (!VECTOR_WARP_STYLES.includes(preset.style)) return null;
2236
- const { x, y, width: w, height: h } = bounds;
2237
- if (!(w > 0 && h > 0)) return null;
2238
- const b = pct(preset.bend);
2239
- const hd = pct(preset.horizontal);
2240
- const vd = pct(preset.vertical);
2241
- if (b === 0 && hd === 0 && vd === 0) return null;
2242
- const grid = vectorWarpPresetGrid(preset.style, b, hd, vd, preset.orientation === "vertical", h / w);
2243
- return { us: [0, 1], vs: [0, 1], points: grid.flat().map((p) => ({ x: x + p[0] * w, y: y + p[1] * h })) };
2244
- }
2245
- var vectorMeshColumns = (m) => 3 * (m.us.length - 1) + 1;
2246
- var vectorMeshRows = (m) => 3 * (m.vs.length - 1) + 1;
2247
- function isValidVectorMesh(m) {
2248
- if (!m || typeof m !== "object") return false;
2249
- const { us, vs, points } = m;
2250
- const knots = (k) => Array.isArray(k) && k.length >= 2 && k.length <= 65 && k[0] === 0 && k[k.length - 1] === 1 && k.every((v2, i) => typeof v2 === "number" && (i === 0 || v2 > k[i - 1]));
2251
- if (!knots(us) || !knots(vs) || !Array.isArray(points)) return false;
2252
- return points.length === (3 * (us.length - 1) + 1) * (3 * (vs.length - 1) + 1) && points.every((p) => !!p && Number.isFinite(p.x) && Number.isFinite(p.y));
2253
- }
2254
- function fitVectorMesh(f, us, vs) {
2255
- const pc = us.length - 1;
2256
- const pr = vs.length - 1;
2257
- const nx = 3 * pc + 1;
2258
- const points = new Array((3 * pr + 1) * nx);
2259
- for (let pj = 0; pj < pr; pj++) {
2260
- for (let pi = 0; pi < pc; pi++) {
2261
- const s = [0, 1, 2, 3].map(
2262
- (j) => [0, 1, 2, 3].map((i) => f(us[pi] + (us[pi + 1] - us[pi]) * i / 3, vs[pj] + (vs[pj + 1] - vs[pj]) * j / 3))
2263
- );
2264
- for (let j = 0; j < 4; j++) {
2265
- for (let i = 0; i < 4; i++) {
2266
- let x = 0;
2267
- let y = 0;
2268
- for (let a = 0; a < 4; a++) {
2269
- for (let b = 0; b < 4; b++) {
2270
- const k = BERN_INV[j][a] * BERN_INV[i][b];
2271
- x += k * s[a][b].x;
2272
- y += k * s[a][b].y;
2273
- }
2274
- }
2275
- points[(3 * pj + j) * nx + 3 * pi + i] = { x, y };
2276
- }
2277
- }
2278
- }
2279
- }
2280
- return { us: us.slice(), vs: vs.slice(), points };
2281
- }
2282
- var evenKnots = (n) => Array.from({ length: n + 1 }, (_, i) => i / n);
2283
- var clampCount = (n) => Math.min(64, Math.max(1, Math.round(Number.isFinite(n) ? n : 1)));
2284
- function vectorIdentityMesh(bounds, columns = 1, rows = 1) {
2285
- return fitVectorMesh((s, t) => ({ x: bounds.x + s * bounds.width, y: bounds.y + t * bounds.height }), evenKnots(clampCount(columns)), evenKnots(clampCount(rows)));
2286
- }
2287
- function locate(knots, s) {
2288
- const n = knots.length - 1;
2289
- let i = 0;
2290
- while (i + 1 < n && s > knots[i + 1]) i++;
2291
- const w = knots[i + 1] - knots[i];
2292
- return [i, w > 0 ? (s - knots[i]) / w : 0];
2293
- }
2294
- function evalVectorMesh(m, s, t) {
2295
- const [pi, a] = locate(m.us, s);
2296
- const [pj, b] = locate(m.vs, t);
2297
- const ba = bernstein(a);
2298
- const bb = bernstein(b);
2299
- const nx = vectorMeshColumns(m);
2300
- let x = 0;
2301
- let y = 0;
2302
- for (let j = 0; j < 4; j++) {
2303
- for (let i = 0; i < 4; i++) {
2304
- const p = m.points[(3 * pj + j) * nx + 3 * pi + i];
2305
- const k = ba[i] * bb[j];
2306
- x += p.x * k;
2307
- y += p.y * k;
2308
- }
2309
- }
2310
- return { x, y };
2311
- }
2312
- function transposeMesh(m) {
2313
- const nx = vectorMeshColumns(m);
2314
- const ny = vectorMeshRows(m);
2315
- const points = new Array(nx * ny);
2316
- for (let j = 0; j < ny; j++) for (let i = 0; i < nx; i++) points[i * ny + j] = m.points[j * nx + i];
2317
- return { us: m.vs.slice(), vs: m.us.slice(), points };
2318
- }
2319
- function splitVectorMeshU(m, s) {
2320
- const [pi, a] = locate(m.us, s);
2321
- if (!(a >= 0.01 && a <= 0.99)) return null;
2322
- const nx = vectorMeshColumns(m);
2323
- const ny = vectorMeshRows(m);
2324
- const points = [];
2325
- for (let j = 0; j < ny; j++) {
2326
- const row = m.points.slice(j * nx, (j + 1) * nx);
2327
- points.push(...row.slice(0, 3 * pi), ...splitCubic(row.slice(3 * pi, 3 * pi + 4), a), ...row.slice(3 * pi + 4));
2328
- }
2329
- const us = m.us.slice();
2330
- us.splice(pi + 1, 0, Math.min(1, Math.max(0, s)));
2331
- return { us, vs: m.vs.slice(), points };
2332
- }
2333
- function splitVectorMeshV(m, t) {
2334
- const out = splitVectorMeshU(transposeMesh(m), t);
2335
- return out && transposeMesh(out);
2336
- }
2337
- function removeVectorMeshSplitU(m, k) {
2338
- if (k <= 0 || k + 1 >= m.us.length) return null;
2339
- const a = (m.us[k] - m.us[k - 1]) / (m.us[k + 1] - m.us[k - 1]);
2340
- const nx = vectorMeshColumns(m);
2341
- const ny = vectorMeshRows(m);
2342
- const c0 = 3 * (k - 1);
2343
- const points = [];
2344
- for (let j = 0; j < ny; j++) {
2345
- const row = m.points.slice(j * nx, (j + 1) * nx);
2346
- const [p0, q1, r2, p3] = [row[c0], row[c0 + 1], row[c0 + 5], row[c0 + 6]];
2347
- const p1 = { x: (q1.x - (1 - a) * p0.x) / a, y: (q1.y - (1 - a) * p0.y) / a };
2348
- const p2 = { x: (r2.x - a * p3.x) / (1 - a), y: (r2.y - a * p3.y) / (1 - a) };
2349
- points.push(...row.slice(0, c0), p0, p1, p2, p3, ...row.slice(c0 + 7));
2350
- }
2351
- const us = m.us.slice();
2352
- us.splice(k, 1);
2353
- return { us, vs: m.vs.slice(), points };
2354
- }
2355
- function removeVectorMeshSplitV(m, k) {
2356
- const out = removeVectorMeshSplitU(transposeMesh(m), k);
2357
- return out && transposeMesh(out);
2358
- }
2359
- function mapVectorMeshPoints(m, f) {
2360
- return { us: m.us.slice(), vs: m.vs.slice(), points: m.points.map((p) => f(p)) };
2361
- }
2362
- function resizeVectorMesh(m, columns, rows) {
2363
- const cols = clampCount(columns);
2364
- const rws = clampCount(rows);
2365
- if (m.us.length - 1 === cols && m.vs.length - 1 === rws) return m;
2366
- const us = evenKnots(cols);
2367
- const vs = evenKnots(rws);
2368
- const has = (list, v2) => list.some((k) => Math.abs(k - v2) < 1e-12);
2369
- if (m.us.every((u) => has(us, u)) && m.vs.every((v2) => has(vs, v2))) {
2370
- let out = m;
2371
- for (const u of us) if (!has(out.us, u)) out = _nullishCoalesce(splitVectorMeshU(out, u), () => ( out));
2372
- for (const v2 of vs) if (!has(out.vs, v2)) out = _nullishCoalesce(splitVectorMeshV(out, v2), () => ( out));
2373
- return out;
2374
- }
2375
- return fitVectorMesh((s, t) => evalVectorMesh(m, s, t), us, vs);
2376
- }
2377
- function vectorMeshControlBounds(m) {
2378
- let minX = Infinity;
2379
- let minY = Infinity;
2380
- let maxX = -Infinity;
2381
- let maxY = -Infinity;
2382
- for (const p of m.points) {
2383
- minX = Math.min(minX, p.x);
2384
- minY = Math.min(minY, p.y);
2385
- maxX = Math.max(maxX, p.x);
2386
- maxY = Math.max(maxY, p.y);
2387
- }
2388
- return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };
2389
- }
2390
- function vectorMeshParamAt(m, p) {
2391
- const n = 48;
2392
- let best = { s: 0.5, t: 0.5, d: Infinity };
2393
- for (let j = 0; j <= n; j++) {
2394
- for (let i = 0; i <= n; i++) {
2395
- const q2 = evalVectorMesh(m, i / n, j / n);
2396
- const d = (q2.x - p.x) ** 2 + (q2.y - p.y) ** 2;
2397
- if (d < best.d) best = { s: i / n, t: j / n, d };
2398
- }
2399
- }
2400
- let { s, t } = best;
2401
- for (let k = 0; k < 12; k++) {
2402
- const h = 1e-5;
2403
- const q2 = evalVectorMesh(m, s, t);
2404
- const qs = evalVectorMesh(m, s + h, t);
2405
- const qt = evalVectorMesh(m, s, t + h);
2406
- const a = (qs.x - q2.x) / h;
2407
- const b = (qt.x - q2.x) / h;
2408
- const c = (qs.y - q2.y) / h;
2409
- const d = (qt.y - q2.y) / h;
2410
- const det = a * d - b * c;
2411
- if (Math.abs(det) < 1e-12) break;
2412
- const ex = p.x - q2.x;
2413
- const ey = p.y - q2.y;
2414
- s = Math.min(1, Math.max(0, s + (d * ex - b * ey) / det));
2415
- t = Math.min(1, Math.max(0, t + (a * ey - c * ex) / det));
2416
- }
2417
- const q = evalVectorMesh(m, s, t);
2418
- return { s, t, distance: Math.hypot(q.x - p.x, q.y - p.y) };
2419
- }
2420
- function smoothLines(m, i0, i1, j0, j1) {
2421
- const nx = vectorMeshColumns(m);
2422
- i1 = Math.min(i1, nx);
2423
- j1 = Math.min(j1, vectorMeshRows(m));
2424
- const triples = [];
2425
- for (let a = 1; a < m.us.length - 1; a++) {
2426
- if (3 * a >= i0 && 3 * a < i1)
2427
- for (let j = j0; j < j1; j++) triples.push([j * nx + 3 * a - 1, j * nx + 3 * a, j * nx + 3 * a + 1, m.us[a] - m.us[a - 1], m.us[a + 1] - m.us[a]]);
2428
- }
2429
- for (let b = 1; b < m.vs.length - 1; b++) {
2430
- if (3 * b >= j0 && 3 * b < j1)
2431
- for (let i = i0; i < i1; i++) triples.push([(3 * b - 1) * nx + i, 3 * b * nx + i, (3 * b + 1) * nx + i, m.vs[b] - m.vs[b - 1], m.vs[b + 1] - m.vs[b]]);
2432
- }
2433
- for (const [l, c, r, hl, hr] of triples) {
2434
- const pl = m.points[l];
2435
- const pc = m.points[c];
2436
- const pr = m.points[r];
2437
- const tx = ((pc.x - pl.x) / hl + (pr.x - pc.x) / hr) / 2;
2438
- const ty = ((pc.y - pl.y) / hl + (pr.y - pc.y) / hr) / 2;
2439
- m.points[l] = { x: pc.x - tx * hl, y: pc.y - ty * hl };
2440
- m.points[r] = { x: pc.x + tx * hr, y: pc.y + ty * hr };
2441
- }
2442
- }
2443
- function dragVectorMeshPoint(base, index, d) {
2444
- if (index < 0 || index >= base.points.length || !Number.isFinite(d.x) || !Number.isFinite(d.y)) return base;
2445
- const out = { us: base.us.slice(), vs: base.vs.slice(), points: base.points.slice() };
2446
- const nx = vectorMeshColumns(base);
2447
- const ny = vectorMeshRows(base);
2448
- const i = index % nx;
2449
- const j = Math.floor(index / nx);
2450
- const shift = (ii, jj, v2) => {
2451
- if (ii < 0 || jj < 0 || ii >= nx || jj >= ny) return;
2452
- const p = out.points[jj * nx + ii];
2453
- out.points[jj * nx + ii] = { x: p.x + v2.x, y: p.y + v2.y };
2454
- };
2455
- const span = (knots, k) => k > 0 && k + 1 < knots.length ? [knots[k] - knots[k - 1], knots[k + 1] - knots[k]] : null;
2456
- const ri = i % 3;
2457
- const rj = j % 3;
2458
- if (ri === 0 && rj === 0) {
2459
- for (let dj = -1; dj <= 1; dj++) for (let di = -1; di <= 1; di++) shift(i + di, j + dj, d);
2460
- } else if (ri === 0) {
2461
- for (let di = -1; di <= 1; di++) shift(i + di, j, d);
2462
- const sp = span(base.vs, Math.floor(j / 3) + (rj === 2 ? 1 : 0));
2463
- if (sp) {
2464
- const [other, k] = rj === 1 ? [j - 2, sp[0] / sp[1]] : [j + 2, sp[1] / sp[0]];
2465
- for (let di = -1; di <= 1; di++) shift(i + di, other, { x: -d.x * k, y: -d.y * k });
2466
- }
2467
- } else if (rj === 0) {
2468
- for (let dj = -1; dj <= 1; dj++) shift(i, j + dj, d);
2469
- const sp = span(base.us, Math.floor(i / 3) + (ri === 2 ? 1 : 0));
2470
- if (sp) {
2471
- const [other, k] = ri === 1 ? [i - 2, sp[0] / sp[1]] : [i + 2, sp[1] / sp[0]];
2472
- for (let dj = -1; dj <= 1; dj++) shift(other, j + dj, { x: -d.x * k, y: -d.y * k });
2473
- }
2474
- } else shift(i, j, d);
2475
- return out;
2476
- }
2477
- function pullVectorMesh(base, s, t, d) {
2478
- const BORDER_ZONE = 0.12;
2479
- const REACH = 1.8;
2480
- if (!Number.isFinite(d.x) || !Number.isFinite(d.y)) return base;
2481
- const m = { us: base.us.slice(), vs: base.vs.slice(), points: base.points.slice() };
2482
- const cols = m.us.length - 1;
2483
- const rows = m.vs.length - 1;
2484
- const [pi, a] = locate(m.us, s);
2485
- const [pj, b] = locate(m.vs, t);
2486
- const ba = bernstein(a);
2487
- const bb = bernstein(b);
2488
- const nx = vectorMeshColumns(m);
2489
- const ny = vectorMeshRows(m);
2490
- const anchor = (ai, aj) => _nullishCoalesce(base.points[3 * aj * nx + 3 * ai], () => ( { x: 0, y: 0 }));
2491
- const at0 = evalVectorMesh(base, s, t);
2492
- const target = { x: at0.x + d.x, y: at0.y + d.y };
2493
- let size = 1;
2494
- for (const k of ["x", "y"]) {
2495
- const vals = [anchor(pi, pj)[k], anchor(pi + 1, pj)[k], anchor(pi, pj + 1)[k], anchor(pi + 1, pj + 1)[k]];
2496
- size = Math.max(size, Math.max(...vals) - Math.min(...vals));
2497
- }
2498
- const radius = REACH * size;
2499
- const innerW = (ba[1] + ba[2]) * (bb[1] + bb[2]);
2500
- const interior = Math.min(1, Math.max(0, innerW / 0.5625));
2501
- const toBorder = Math.min(s, 1 - s, t, 1 - t);
2502
- const nearBorder = Math.min(1, Math.max(0, 1 - toBorder / BORDER_ZONE));
2503
- const meshCorner = (ai, aj) => (ai === 0 || ai === cols) && (aj === 0 || aj === rows);
2504
- const onBorder = (ai, aj) => ai === 0 || ai === cols || aj === 0 || aj === rows;
2505
- const reach = (ai, aj, wa, wb) => meshCorner(ai, aj) ? 0 : wa * wb * (onBorder(ai, aj) ? nearBorder : 1);
2506
- const corner = [
2507
- [pi, pj, reach(pi, pj, ba[0] + ba[1], bb[0] + bb[1])],
2508
- [pi + 1, pj, reach(pi + 1, pj, ba[2] + ba[3], bb[0] + bb[1])],
2509
- [pi, pj + 1, reach(pi, pj + 1, ba[0] + ba[1], bb[2] + bb[3])],
2510
- [pi + 1, pj + 1, reach(pi + 1, pj + 1, ba[2] + ba[3], bb[2] + bb[3])]
2511
- ];
2512
- const share = new Array((cols + 1) * (rows + 1)).fill(0);
2513
- for (let aj = 0; aj <= rows; aj++) {
2514
- for (let ai = 0; ai <= cols; ai++) {
2515
- const p = anchor(ai, aj);
2516
- const x = Math.min(1, Math.max(0, Math.hypot(p.x - at0.x, p.y - at0.y) / radius));
2517
- const fall = 0.5 * (1 + Math.cos(Math.PI * x));
2518
- const edge = meshCorner(ai, aj) ? 0 : onBorder(ai, aj) ? nearBorder : 1;
2519
- share[aj * (cols + 1) + ai] = fall * edge;
2520
- }
2521
- }
2522
- for (const [ai, aj, w] of corner) share[aj * (cols + 1) + ai] = Math.max(share[aj * (cols + 1) + ai], (1 - interior) * w);
2523
- const move = (idx, k, v2) => {
2524
- const p = m.points[idx];
2525
- m.points[idx] = { x: p.x + v2.x * k, y: p.y + v2.y * k };
2526
- };
2527
- for (let j = 0; j < ny; j++) {
2528
- for (let i = 0; i < nx; i++) {
2529
- const ai = Math.min(cols, Math.floor((i + 1) / 3));
2530
- const aj = Math.min(rows, Math.floor((j + 1) / 3));
2531
- move(j * nx + i, share[aj * (cols + 1) + ai], d);
2532
- }
2533
- }
2534
- let norm = 0;
2535
- for (const j of [1, 2]) for (const i of [1, 2]) norm += (ba[i] * bb[j]) ** 2;
2536
- const cornerNorm = corner.reduce((acc, c) => acc + c[2] * c[2], 0);
2537
- const innerPart = cornerNorm > 1e-12 ? Math.min(1, innerW / 0.15) : 1;
2538
- const edgeHandles = [];
2539
- for (const k of [1, 2]) {
2540
- if (pi === 0) edgeHandles.push([(3 * pj + k) * nx + 3 * pi, ba[0] * bb[k]]);
2541
- if (pi + 1 === cols) edgeHandles.push([(3 * pj + k) * nx + 3 * pi + 3, ba[3] * bb[k]]);
2542
- if (pj === 0) edgeHandles.push([3 * pj * nx + 3 * pi + k, ba[k] * bb[0]]);
2543
- if (pj + 1 === rows) edgeHandles.push([(3 * pj + 3) * nx + 3 * pi + k, ba[k] * bb[3]]);
2544
- }
2545
- const edgeNorm = edgeHandles.reduce((acc, e) => acc + e[1] * e[1], 0);
2546
- const edgePart = edgeNorm > 1e-12 ? nearBorder : 0;
2547
- const innerShare = (1 - edgePart) * innerPart;
2548
- const cornerShare = (1 - edgePart) * (1 - innerPart);
2549
- for (let iter = 0; iter < 60; iter++) {
2550
- const now = evalVectorMesh(m, s, t);
2551
- const rem = { x: target.x - now.x, y: target.y - now.y };
2552
- if (Math.hypot(rem.x, rem.y) < 1e-9) break;
2553
- if (innerShare > 0 && norm > 0) for (const j of [1, 2]) for (const i of [1, 2]) move((3 * pj + j) * nx + 3 * pi + i, ba[i] * bb[j] / norm * innerShare, rem);
2554
- if (edgePart > 0) for (const [idx, w] of edgeHandles) move(idx, w / edgeNorm * edgePart, rem);
2555
- if (cornerShare > 0 && cornerNorm > 0) {
2556
- for (const [ai, aj, w] of corner) {
2557
- const k = w / cornerNorm * cornerShare;
2558
- for (let dj = -1; dj <= 1; dj++) {
2559
- for (let di = -1; di <= 1; di++) {
2560
- const i = 3 * ai + di;
2561
- const j = 3 * aj + dj;
2562
- if (i >= 0 && j >= 0 && i < nx && j < ny) move(j * nx + i, k, rem);
2563
- }
2564
- }
2565
- }
2566
- }
2567
- for (let k = 0; k < 3; k++) smoothLines(m, Math.max(0, 3 * pi - 3), 3 * pi + 7, Math.max(0, 3 * pj - 3), 3 * pj + 7);
2568
- }
2569
- return m;
2570
- }
2571
2030
  function polylineAt(pts) {
2572
2031
  const acc = [0];
2573
2032
  for (let i = 1; i < pts.length; i++) acc.push(acc[i - 1] + Math.hypot(pts[i].x - pts[i - 1].x, pts[i].y - pts[i - 1].y));
@@ -2578,7 +2037,7 @@ function polylineAt(pts) {
2578
2037
  let i = 1;
2579
2038
  while (i < acc.length - 1 && acc[i] < L) i++;
2580
2039
  const seg = acc[i] - acc[i - 1];
2581
- return lerp3(pts[i - 1], pts[i], seg > 0 ? (L - acc[i - 1]) / seg : 0);
2040
+ return _chunkDWGZUSEScjs.lerpVec2.call(void 0, pts[i - 1], pts[i], seg > 0 ? (L - acc[i - 1]) / seg : 0);
2582
2041
  };
2583
2042
  }
2584
2043
  function sampleSubpath(sp, per = 24) {
@@ -2590,10 +2049,10 @@ function sampleSubpath(sp, per = 24) {
2590
2049
  const c = [{ x: a.x, y: a.y }, _nullishCoalesce(a.out, () => ( a)), _nullishCoalesce(b.in, () => ( b)), { x: b.x, y: b.y }];
2591
2050
  for (let k = 0; k < per; k++) {
2592
2051
  const t = k / per;
2593
- const ab = lerp3(c[0], c[1], t);
2594
- const bc = lerp3(c[1], c[2], t);
2595
- const cd = lerp3(c[2], c[3], t);
2596
- out.push(lerp3(lerp3(ab, bc, t), lerp3(bc, cd, t), t));
2052
+ const ab = _chunkDWGZUSEScjs.lerpVec2.call(void 0, c[0], c[1], t);
2053
+ const bc = _chunkDWGZUSEScjs.lerpVec2.call(void 0, c[1], c[2], t);
2054
+ const cd = _chunkDWGZUSEScjs.lerpVec2.call(void 0, c[2], c[3], t);
2055
+ out.push(_chunkDWGZUSEScjs.lerpVec2.call(void 0, _chunkDWGZUSEScjs.lerpVec2.call(void 0, ab, bc, t), _chunkDWGZUSEScjs.lerpVec2.call(void 0, bc, cd, t), t));
2597
2056
  }
2598
2057
  }
2599
2058
  return out;
@@ -2651,11 +2110,11 @@ function vectorMeshFromOutline(sp, columns = 4, rows = 4) {
2651
2110
  y: (1 - t) * T.y + t * B.y + (1 - s) * L.y + s * R.y - ((1 - s) * (1 - t) * p00.y + s * (1 - t) * p10.y + (1 - s) * t * p01.y + s * t * p11.y)
2652
2111
  };
2653
2112
  };
2654
- return fitVectorMesh(coons, evenKnots(clampCount(columns)), evenKnots(clampCount(rows)));
2113
+ return _chunkDWGZUSEScjs.fitWarpMesh.call(void 0, coons, _chunkDWGZUSEScjs.evenKnots.call(void 0, _chunkDWGZUSEScjs.clampMeshCount.call(void 0, columns)), _chunkDWGZUSEScjs.evenKnots.call(void 0, _chunkDWGZUSEScjs.clampMeshCount.call(void 0, rows)));
2655
2114
  }
2656
2115
  function vectorMeshOutline(m) {
2657
- const nx = vectorMeshColumns(m);
2658
- const ny = vectorMeshRows(m);
2116
+ const nx = _chunkDWGZUSEScjs.warpMeshColumns.call(void 0, m);
2117
+ const ny = _chunkDWGZUSEScjs.warpMeshRows.call(void 0, m);
2659
2118
  const pt2 = (i, j) => m.points[j * nx + i];
2660
2119
  const runs = [];
2661
2120
  for (let i = 0; i + 3 < nx; i += 3) runs.push([pt2(i, 0), pt2(i + 1, 0), pt2(i + 2, 0), pt2(i + 3, 0)]);
@@ -2668,31 +2127,6 @@ function vectorMeshOutline(m) {
2668
2127
  });
2669
2128
  return { closed: true, anchors };
2670
2129
  }
2671
- function vectorMeshEditPoints(m) {
2672
- const nx = vectorMeshColumns(m);
2673
- const ny = vectorMeshRows(m);
2674
- const anchors = [];
2675
- const handles = [];
2676
- for (let j = 0; j < ny; j++) {
2677
- for (let i = 0; i < nx; i++) {
2678
- const ri = i % 3;
2679
- const rj = j % 3;
2680
- if (ri === 0 && rj === 0) anchors.push(j * nx + i);
2681
- else if (ri === 0) handles.push({ index: j * nx + i, anchor: (rj === 1 ? j - 1 : j + 1) * nx + i });
2682
- else if (rj === 0) handles.push({ index: j * nx + i, anchor: j * nx + (ri === 1 ? i - 1 : i + 1) });
2683
- }
2684
- }
2685
- return { anchors, handles };
2686
- }
2687
- function vectorMeshGridCurves(m) {
2688
- const nx = vectorMeshColumns(m);
2689
- const ny = vectorMeshRows(m);
2690
- const pt2 = (i, j) => m.points[j * nx + i];
2691
- const out = [];
2692
- for (let j = 0; j < ny; j += 3) for (let i = 0; i + 3 < nx; i += 3) out.push([pt2(i, j), pt2(i + 1, j), pt2(i + 2, j), pt2(i + 3, j)]);
2693
- for (let i = 0; i < nx; i += 3) for (let j = 0; j + 3 < ny; j += 3) out.push([pt2(i, j), pt2(i, j + 1), pt2(i, j + 2), pt2(i, j + 3)]);
2694
- return out;
2695
- }
2696
2130
 
2697
2131
  // src/vector/appearance.ts
2698
2132
  var VECTOR_EFFECT_DEFAULTS = {
@@ -2819,7 +2253,7 @@ var VECTOR_EFFECT_PARAM_SPECS = {
2819
2253
  key: "style",
2820
2254
  label: "Warp",
2821
2255
  kind: "select",
2822
- options: [...VECTOR_WARP_STYLES.map((value) => ({ value, label: VECTOR_WARP_STYLE_LABELS[value] })), { value: "mesh", label: "Mesh" }]
2256
+ options: [..._chunkDWGZUSEScjs.WARP_STYLES.map((value) => ({ value, label: _chunkDWGZUSEScjs.WARP_STYLE_LABELS[value] })), { value: "mesh", label: "Mesh" }]
2823
2257
  },
2824
2258
  { key: "bend", label: "Bend %", kind: "number", min: -100, max: 100, step: 1, slider: true },
2825
2259
  { key: "horizontal", label: "Horizontal distortion %", kind: "number", min: -100, max: 100, step: 1, slider: true },
@@ -2839,16 +2273,16 @@ var VECTOR_EFFECT_PARAM_SPECS = {
2839
2273
  };
2840
2274
  var cloneMesh = (m) => ({ us: m.us.slice(), vs: m.vs.slice(), points: m.points.map((p) => ({ x: p.x, y: p.y })) });
2841
2275
  function vectorEnvelopeMesh(params, bounds) {
2842
- if (params.style === "mesh") return _nullishCoalesce(params.mesh, () => ( vectorIdentityMesh(bounds, params.columns, params.rows)));
2843
- const preset = vectorWarpPresetMesh({ style: params.style, bend: params.bend, horizontal: params.horizontal, vertical: params.vertical, orientation: params.orientation }, bounds);
2844
- return preset ? resizeVectorMesh(preset, params.columns, params.rows) : vectorIdentityMesh(bounds, params.columns, params.rows);
2276
+ if (params.style === "mesh") return _nullishCoalesce(params.mesh, () => ( _chunkDWGZUSEScjs.identityWarpMesh.call(void 0, bounds, params.columns, params.rows)));
2277
+ const preset = _chunkDWGZUSEScjs.warpPresetMesh.call(void 0, { style: params.style, bend: params.bend, horizontal: params.horizontal, vertical: params.vertical, orientation: params.orientation }, bounds);
2278
+ return preset ? _chunkDWGZUSEScjs.resizeWarpMesh.call(void 0, preset, params.columns, params.rows) : _chunkDWGZUSEScjs.identityWarpMesh.call(void 0, bounds, params.columns, params.rows);
2845
2279
  }
2846
2280
  function vectorEnvelopeMap(params, bounds) {
2847
2281
  if (!bounds || !(bounds.width > 0 && bounds.height > 0)) return null;
2848
- const mesh = params.style === "mesh" ? params.mesh : vectorWarpPresetMesh({ style: params.style, bend: params.bend, horizontal: params.horizontal, vertical: params.vertical, orientation: params.orientation }, bounds);
2282
+ const mesh = params.style === "mesh" ? params.mesh : _chunkDWGZUSEScjs.warpPresetMesh.call(void 0, { style: params.style, bend: params.bend, horizontal: params.horizontal, vertical: params.vertical, orientation: params.orientation }, bounds);
2849
2283
  if (!mesh) return null;
2850
2284
  const { x, y, width, height } = bounds;
2851
- return (p) => evalVectorMesh(mesh, (p.x - x) / width, (p.y - y) / height);
2285
+ return (p) => _chunkDWGZUSEScjs.evalWarpMesh.call(void 0, mesh, (p.x - x) / width, (p.y - y) / height);
2852
2286
  }
2853
2287
  function pathsBounds(paths) {
2854
2288
  let minX = Infinity;
@@ -2890,12 +2324,12 @@ function normalizeVectorEffectParams(type, params, base) {
2890
2324
  o.rows = Math.round(o.rows);
2891
2325
  o.columns = Math.round(o.columns);
2892
2326
  const given = _optionalChain([params, 'optionalAccess', _39 => _39.mesh]);
2893
- let mesh = given !== void 0 ? isValidVectorMesh(given) ? cloneMesh(given) : null : o.mesh;
2327
+ let mesh = given !== void 0 ? _chunkDWGZUSEScjs.isValidWarpMesh.call(void 0, given) ? cloneMesh(given) : null : o.mesh;
2894
2328
  if (o.style !== "mesh") mesh = null;
2895
2329
  if (mesh && given !== void 0) {
2896
2330
  o.columns = mesh.us.length - 1;
2897
2331
  o.rows = mesh.vs.length - 1;
2898
- } else if (mesh) mesh = resizeVectorMesh(mesh, o.columns, o.rows);
2332
+ } else if (mesh) mesh = _chunkDWGZUSEScjs.resizeWarpMesh.call(void 0, mesh, o.columns, o.rows);
2899
2333
  o.mesh = mesh;
2900
2334
  }
2901
2335
  return out;
@@ -3109,7 +2543,7 @@ function childShapes(child, index) {
3109
2543
  const k = _nullishCoalesce(child.opacity, () => ( 1));
3110
2544
  return vectorAppearanceShapes(child).map((s) => ({
3111
2545
  source: s.source,
3112
- path: m && !isIdentityMatrix(m) ? _chunkXGD3FSNCcjs.transformBezierPath.call(void 0, s.path, m) : s.path,
2546
+ path: m && !_chunkDWGZUSEScjs.isIdentityMatrix.call(void 0, m) ? _chunkXGD3FSNCcjs.transformBezierPath.call(void 0, s.path, m) : s.path,
3113
2547
  opacity: s.opacity * k,
3114
2548
  order: [index, ...s.order]
3115
2549
  }));
@@ -3261,11 +2695,11 @@ function transformVectorEffects(effects, m, node) {
3261
2695
  const axisScale = Math.abs(m[1]) < 1e-12 && Math.abs(m[2]) < 1e-12 && m[0] > 0 && m[3] > 0;
3262
2696
  return effects.map((e) => {
3263
2697
  if (e.type === "envelope") {
3264
- if (e.params.style === "mesh") return e.params.mesh ? { ...e, params: { ...e.params, mesh: mapVectorMeshPoints(e.params.mesh, full) } } : e;
2698
+ if (e.params.style === "mesh") return e.params.mesh ? { ...e, params: { ...e.params, mesh: _chunkDWGZUSEScjs.mapWarpMeshPoints.call(void 0, e.params.mesh, full) } } : e;
3265
2699
  if (axisScale || !node) return e;
3266
2700
  const bounds = vectorEffectInputBounds(node, e.id);
3267
2701
  if (!bounds || !vectorEnvelopeMap(e.params, bounds)) return e;
3268
- return { ...e, params: { ...e.params, style: "mesh", mesh: mapVectorMeshPoints(vectorEnvelopeMesh(e.params, bounds), full) } };
2702
+ return { ...e, params: { ...e.params, style: "mesh", mesh: _chunkDWGZUSEScjs.mapWarpMeshPoints.call(void 0, vectorEnvelopeMesh(e.params, bounds), full) } };
3269
2703
  }
3270
2704
  if (e.type === "twist") return { ...e, params: { ...e.params, center: lin(e.params.center), angle: e.params.angle * mirror } };
3271
2705
  if (e.type === "repeater")
@@ -3461,17 +2895,17 @@ function collectPathNodes(node) {
3461
2895
  return out;
3462
2896
  }
3463
2897
  function nodeMatrix(node) {
3464
- return _nullishCoalesce(node.transform, () => ( IDENTITY_MATRIX));
2898
+ return _nullishCoalesce(node.transform, () => ( _chunkDWGZUSEScjs.IDENTITY_MATRIX));
3465
2899
  }
3466
- function vectorPathWorldBezier(node, parent = IDENTITY_MATRIX, options = {}) {
3467
- const m = multiplyMatrices(nodeMatrix(node), parent);
2900
+ function vectorPathWorldBezier(node, parent = _chunkDWGZUSEScjs.IDENTITY_MATRIX, options = {}) {
2901
+ const m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, nodeMatrix(node), parent);
3468
2902
  const path = options.effects === false || !hasOwnVectorAppearance(node) ? subpathsToBezier(node.subpaths) : vectorAppearanceOutline(node);
3469
- return isIdentityMatrix(m) ? path : _chunkXGD3FSNCcjs.transformBezierPath.call(void 0, path, m);
2903
+ return _chunkDWGZUSEScjs.isIdentityMatrix.call(void 0, m) ? path : _chunkXGD3FSNCcjs.transformBezierPath.call(void 0, path, m);
3470
2904
  }
3471
- function vectorNodeBounds(node, parent = IDENTITY_MATRIX) {
2905
+ function vectorNodeBounds(node, parent = _chunkDWGZUSEScjs.IDENTITY_MATRIX) {
3472
2906
  node = expandVectorAppearance(node);
3473
2907
  if (node.type === "group") {
3474
- const m = multiplyMatrices(nodeMatrix(node), parent);
2908
+ const m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, nodeMatrix(node), parent);
3475
2909
  return unionBounds(node.children.map((c) => vectorNodeBounds(c, m)));
3476
2910
  }
3477
2911
  const b = _chunkXGD3FSNCcjs.bezierPathBounds.call(void 0, vectorPathWorldBezier(node, parent));
@@ -3499,11 +2933,11 @@ function boundsIntersect(a, b) {
3499
2933
  function boundsFromPoints(a, b) {
3500
2934
  return { x: Math.min(a.x, b.x), y: Math.min(a.y, b.y), width: Math.abs(b.x - a.x), height: Math.abs(b.y - a.y) };
3501
2935
  }
3502
- function hitTestVectorNode(node, p, tolerance = 0, parent = IDENTITY_MATRIX, options = {}) {
2936
+ function hitTestVectorNode(node, p, tolerance = 0, parent = _chunkDWGZUSEScjs.IDENTITY_MATRIX, options = {}) {
3503
2937
  if (node.visible === false) return false;
3504
2938
  if (!(node.type === "group" && (!hasOwnVectorAppearance(node) || _optionalChain([options, 'access', _55 => _55.entered, 'optionalAccess', _56 => _56.has, 'call', _57 => _57(node.id)])))) node = expandVectorAppearance(node);
3505
2939
  if (node.type === "group") {
3506
- const m = multiplyMatrices(nodeMatrix(node), parent);
2940
+ const m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, nodeMatrix(node), parent);
3507
2941
  return node.children.some((c) => hitTestVectorNode(c, p, tolerance, m, options));
3508
2942
  }
3509
2943
  const path = vectorPathWorldBezier(node, parent);
@@ -3513,7 +2947,7 @@ function hitTestVectorNode(node, p, tolerance = 0, parent = IDENTITY_MATRIX, opt
3513
2947
  if (hasPaint(node.stroke)) return hitTestVectorStroke(path, p, node, tolerance);
3514
2948
  return _chunkXGD3FSNCcjs.distanceToBezierPath.call(void 0, path, point) <= tolerance;
3515
2949
  }
3516
- function vectorStrokeOutline(node, parent = IDENTITY_MATRIX) {
2950
+ function vectorStrokeOutline(node, parent = _chunkDWGZUSEScjs.IDENTITY_MATRIX) {
3517
2951
  if (!hasPaint(node.stroke) || !((_nullishCoalesce(node.strokeWidth, () => ( 1))) > 0)) return [];
3518
2952
  return vectorStrokeOutlinePath(vectorPathWorldBezier(node, parent), node);
3519
2953
  }
@@ -3521,7 +2955,7 @@ function hitTestVectorNodes(nodes, p, tolerance = 0, options = {}) {
3521
2955
  for (let i = nodes.length - 1; i >= 0; i--) {
3522
2956
  const node = nodes[i];
3523
2957
  if (node.visible === false || node.locked) continue;
3524
- if (hitTestVectorNode(node, p, tolerance, IDENTITY_MATRIX, options)) return node;
2958
+ if (hitTestVectorNode(node, p, tolerance, _chunkDWGZUSEScjs.IDENTITY_MATRIX, options)) return node;
3525
2959
  }
3526
2960
  return null;
3527
2961
  }
@@ -3540,66 +2974,17 @@ function nearestSegment(node, p) {
3540
2974
  });
3541
2975
  return best;
3542
2976
  }
3543
- var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
3544
- function multiplyMatrices(a, b) {
3545
- const [a0, a1, a2, a3, a4, a5] = a;
3546
- const [b0, b1, b2, b3, b4, b5] = b;
3547
- return [b0 * a0 + b2 * a1, b1 * a0 + b3 * a1, b0 * a2 + b2 * a3, b1 * a2 + b3 * a3, b0 * a4 + b2 * a5 + b4, b1 * a4 + b3 * a5 + b5];
3548
- }
3549
- var translateMatrix = (dx, dy) => [1, 0, 0, 1, dx, dy];
3550
- function scaleMatrix(sx, sy, origin = { x: 0, y: 0 }) {
3551
- return [sx, 0, 0, sy, origin.x - sx * origin.x, origin.y - sy * origin.y];
3552
- }
3553
- function rotateMatrix(degrees, origin = { x: 0, y: 0 }) {
3554
- const r = degrees * Math.PI / 180;
3555
- const cos = Math.cos(r);
3556
- const sin = Math.sin(r);
3557
- return [cos, sin, -sin, cos, origin.x - cos * origin.x + sin * origin.y, origin.y - sin * origin.x - cos * origin.y];
3558
- }
3559
- function applyMatrix(m, p) {
3560
- return { x: m[0] * p.x + m[2] * p.y + m[4], y: m[1] * p.x + m[3] * p.y + m[5] };
3561
- }
3562
- function isIdentityMatrix(m, eps = 1e-12) {
3563
- return Math.abs(m[0] - 1) < eps && Math.abs(m[1]) < eps && Math.abs(m[2]) < eps && Math.abs(m[3] - 1) < eps && Math.abs(m[4]) < eps && Math.abs(m[5]) < eps;
3564
- }
3565
- function invertMatrix(m) {
3566
- const [a, b, c, d, e, f] = m;
3567
- const det = a * d - b * c;
3568
- if (!det || !Number.isFinite(det)) return IDENTITY_MATRIX;
3569
- return [d / det, -b / det, -c / det, a / det, (c * f - d * e) / det, (b * e - a * f) / det];
3570
- }
3571
- function applyMatrixLinear(m, v2) {
3572
- return { x: m[0] * v2.x + m[2] * v2.y, y: m[1] * v2.x + m[3] * v2.y };
3573
- }
3574
- function matrixRotation(m) {
3575
- const [a, b, c, d] = m;
3576
- const mirrored = a * d - b * c < 0;
3577
- const deg = (mirrored ? Math.atan2(-b - c, d - a) : Math.atan2(b - c, a + d)) * 180 / Math.PI;
3578
- return Math.abs(deg) < 1e-9 ? 0 : deg;
3579
- }
3580
- function decomposeRigid(m) {
3581
- const [a, b, c, d, e, f] = m;
3582
- const deg = matrixRotation(m);
3583
- if (deg === 0) return { rigid: IDENTITY_MATRIX, residual: m };
3584
- const r = deg * Math.PI / 180;
3585
- const cos = Math.cos(r);
3586
- const sin = Math.sin(r);
3587
- return {
3588
- rigid: [cos, sin, -sin, cos, e, f],
3589
- residual: [cos * a + sin * b, -sin * a + cos * b, cos * c + sin * d, -sin * c + cos * d, 0, 0]
3590
- };
3591
- }
3592
2977
  function mapAnchor(a, m) {
3593
- const p = applyMatrix(m, a);
2978
+ const p = _chunkDWGZUSEScjs.applyMatrix.call(void 0, m, a);
3594
2979
  const next = { x: p.x, y: p.y };
3595
- if (a.in) next.in = applyMatrix(m, a.in);
3596
- if (a.out) next.out = applyMatrix(m, a.out);
2980
+ if (a.in) next.in = _chunkDWGZUSEScjs.applyMatrix.call(void 0, m, a.in);
2981
+ if (a.out) next.out = _chunkDWGZUSEScjs.applyMatrix.call(void 0, m, a.out);
3597
2982
  if (a.type) next.type = a.type;
3598
2983
  if (a.corner) next.corner = { ...a.corner };
3599
2984
  return next;
3600
2985
  }
3601
2986
  function bakeIntoGeometry(node, m) {
3602
- if (isIdentityMatrix(m)) return node;
2987
+ if (_chunkDWGZUSEScjs.isIdentityMatrix.call(void 0, m)) return node;
3603
2988
  if (_optionalChain([node, 'access', _58 => _58.effects, 'optionalAccess', _59 => _59.length])) node = { ...node, effects: transformVectorEffects(node.effects, m, node) };
3604
2989
  if (node.type === "group") {
3605
2990
  const group = node;
@@ -3624,19 +3009,19 @@ function bakeIntoGeometry(node, m) {
3624
3009
  };
3625
3010
  }
3626
3011
  function transformVectorNode(node, m) {
3627
- const total = multiplyMatrices(nodeMatrix(node), m);
3628
- const { rigid, residual } = decomposeRigid(total);
3012
+ const total = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, nodeMatrix(node), m);
3013
+ const { rigid, residual } = _chunkDWGZUSEScjs.decomposeRigid.call(void 0, total);
3629
3014
  const { transform: _old, ...rest } = node;
3630
3015
  const baked = bakeIntoGeometry(rest, residual);
3631
- return isIdentityMatrix(rigid) ? baked : { ...baked, transform: rigid };
3016
+ return _chunkDWGZUSEScjs.isIdentityMatrix.call(void 0, rigid) ? baked : { ...baked, transform: rigid };
3632
3017
  }
3633
- function vectorNodeRotation(node, parent = IDENTITY_MATRIX) {
3634
- return matrixRotation(multiplyMatrices(nodeMatrix(node), parent));
3018
+ function vectorNodeRotation(node, parent = _chunkDWGZUSEScjs.IDENTITY_MATRIX) {
3019
+ return _chunkDWGZUSEScjs.matrixRotation.call(void 0, _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, nodeMatrix(node), parent));
3635
3020
  }
3636
3021
  function vectorWorldMatrix(nodes, id) {
3637
3022
  const search = (list, parent) => {
3638
3023
  for (const n of list) {
3639
- const m = multiplyMatrices(nodeMatrix(n), parent);
3024
+ const m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, nodeMatrix(n), parent);
3640
3025
  if (n.id === id) return m;
3641
3026
  if (n.type === "group") {
3642
3027
  const found = search(n.children, m);
@@ -3645,13 +3030,13 @@ function vectorWorldMatrix(nodes, id) {
3645
3030
  }
3646
3031
  return null;
3647
3032
  };
3648
- return search(nodes, IDENTITY_MATRIX);
3033
+ return search(nodes, _chunkDWGZUSEScjs.IDENTITY_MATRIX);
3649
3034
  }
3650
3035
  function vectorParentMatrix(nodes, id) {
3651
3036
  const node = findVectorNode(nodes, id);
3652
3037
  const world = vectorWorldMatrix(nodes, id);
3653
3038
  if (!node || !world) return null;
3654
- return multiplyMatrices(invertMatrix(nodeMatrix(node)), world);
3039
+ return _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, _chunkDWGZUSEScjs.invertMatrix.call(void 0, nodeMatrix(node)), world);
3655
3040
  }
3656
3041
  function translateAnchor(a, dx, dy) {
3657
3042
  const next = cloneAnchor(a);
@@ -4165,10 +3550,10 @@ function vectorRepeaterCopies(r, pivot) {
4165
3550
  const out = [];
4166
3551
  for (let i = 0; i < n; i++) {
4167
3552
  const k = i + offset;
4168
- let m = translateMatrix(-pivot.x, -pivot.y);
4169
- m = multiplyMatrices(m, scaleMatrix(Math.pow((_nullishCoalesce(_optionalChain([r, 'access', _69 => _69.scale, 'optionalAccess', _70 => _70.x]), () => ( 100))) / 100, k), Math.pow((_nullishCoalesce(_optionalChain([r, 'access', _71 => _71.scale, 'optionalAccess', _72 => _72.y]), () => ( 100))) / 100, k)));
4170
- m = multiplyMatrices(m, rotateMatrix((_nullishCoalesce(r.rotation, () => ( 0))) * k));
4171
- m = multiplyMatrices(m, translateMatrix(pivot.x + (_nullishCoalesce(_optionalChain([r, 'access', _73 => _73.position, 'optionalAccess', _74 => _74.x]), () => ( 0))) * k, pivot.y + (_nullishCoalesce(_optionalChain([r, 'access', _75 => _75.position, 'optionalAccess', _76 => _76.y]), () => ( 0))) * k));
3553
+ let m = _chunkDWGZUSEScjs.translateMatrix.call(void 0, -pivot.x, -pivot.y);
3554
+ m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, m, _chunkDWGZUSEScjs.scaleMatrix.call(void 0, Math.pow((_nullishCoalesce(_optionalChain([r, 'access', _69 => _69.scale, 'optionalAccess', _70 => _70.x]), () => ( 100))) / 100, k), Math.pow((_nullishCoalesce(_optionalChain([r, 'access', _71 => _71.scale, 'optionalAccess', _72 => _72.y]), () => ( 100))) / 100, k)));
3555
+ m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, m, _chunkDWGZUSEScjs.rotateMatrix.call(void 0, (_nullishCoalesce(r.rotation, () => ( 0))) * k));
3556
+ m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, m, _chunkDWGZUSEScjs.translateMatrix.call(void 0, pivot.x + (_nullishCoalesce(_optionalChain([r, 'access', _73 => _73.position, 'optionalAccess', _74 => _74.x]), () => ( 0))) * k, pivot.y + (_nullishCoalesce(_optionalChain([r, 'access', _75 => _75.position, 'optionalAccess', _76 => _76.y]), () => ( 0))) * k));
4172
3557
  const t = n > 1 ? i / (n - 1) : 0;
4173
3558
  const partial = i + 1 === n && fract > 0 ? fract : 1;
4174
3559
  out.push({ index: i, matrix: m, opacity: Math.min(1, Math.max(0, (so + (eo - so) * t) * partial)) });
@@ -4189,7 +3574,7 @@ var lerpP = (a, b, t) => [a[0] + (b[0] - a[0]) * t, a[1] + (b[1] - a[1]) * t];
4189
3574
  var toP = (v2) => [v2.x, v2.y];
4190
3575
  var mapP = (m, p) => [m[0] * p[0] + m[2] * p[1] + m[4], m[1] * p[0] + m[3] * p[1] + m[5]];
4191
3576
  var curvesOf = (c) => Math.max(0, (c.pts.length - 1) / 3) | 0;
4192
- function subpathToMorphContour(sp, m = IDENTITY_MATRIX) {
3577
+ function subpathToMorphContour(sp, m = _chunkDWGZUSEScjs.IDENTITY_MATRIX) {
4193
3578
  const n = sp.anchors.length;
4194
3579
  if (!n) return null;
4195
3580
  const first = mapP(m, toP(sp.anchors[0]));
@@ -4219,8 +3604,8 @@ function isStraight(p0, p1, p2, p3) {
4219
3604
  const u2 = along2(p2);
4220
3605
  return off(p1) < tol && off(p2) < tol && u1 >= -1e-9 && u1 <= 1 + 1e-9 && u2 >= -1e-9 && u2 <= 1 + 1e-9;
4221
3606
  }
4222
- function morphContourToSubpath(c, m = IDENTITY_MATRIX, closed = c.closed) {
4223
- const pts = isIdentityMatrix(m) ? c.pts : c.pts.map((p) => mapP(m, p));
3607
+ function morphContourToSubpath(c, m = _chunkDWGZUSEScjs.IDENTITY_MATRIX, closed = c.closed) {
3608
+ const pts = _chunkDWGZUSEScjs.isIdentityMatrix.call(void 0, m) ? c.pts : c.pts.map((p) => mapP(m, p));
4224
3609
  const curves = curvesOf(c);
4225
3610
  const dropLast = closed && c.closed && curves > 0;
4226
3611
  const count = dropLast ? curves : curves + 1;
@@ -4782,12 +4167,12 @@ function preparePathMorph(a, b, options, ma = nodeMatrix(a), mb = nodeMatrix(b))
4782
4167
  const sim = procrustes(corr.a, corr.b);
4783
4168
  const styleA = styleOf(a);
4784
4169
  const styleB = corr.reversed ? reversedStyle(styleOf(b)) : styleOf(b);
4785
- const rigid = !isIdentityMatrix(ma) || !isIdentityMatrix(mb);
4170
+ const rigid = !_chunkDWGZUSEScjs.isIdentityMatrix.call(void 0, ma) || !_chunkDWGZUSEScjs.isIdentityMatrix.call(void 0, mb);
4786
4171
  const id = _nullishCoalesce(options.id, () => ( a.id));
4787
4172
  return (t) => {
4788
4173
  const contours = interpolateMorphContours(corr.a, corr.b, t, { linear: options.linear, rigidity: options.rigidity, similarity: sim });
4789
- const m = rigid ? interpolateRigidMatrix(ma, mb, t) : IDENTITY_MATRIX;
4790
- const back = rigid ? invertMatrix(m) : IDENTITY_MATRIX;
4174
+ const m = rigid ? interpolateRigidMatrix(ma, mb, t) : _chunkDWGZUSEScjs.IDENTITY_MATRIX;
4175
+ const back = rigid ? _chunkDWGZUSEScjs.invertMatrix.call(void 0, m) : _chunkDWGZUSEScjs.IDENTITY_MATRIX;
4791
4176
  const subpaths = contours.map((c, k) => {
4792
4177
  const closed = t <= 0 ? corr.a[k].closed : t >= 1 ? corr.b[k].closed : corr.a[k].closed && corr.b[k].closed;
4793
4178
  return morphContourToSubpath({ closed: corr.a[k].closed && corr.b[k].closed, pts: c.pts }, back, closed);
@@ -4795,12 +4180,12 @@ function preparePathMorph(a, b, options, ma = nodeMatrix(a), mb = nodeMatrix(b))
4795
4180
  const node = { id, type: "path", subpaths, ...interpolateVectorStyle(styleA, styleB, t) };
4796
4181
  const opacity = lerpN(_nullishCoalesce(a.opacity, () => ( 1)), _nullishCoalesce(b.opacity, () => ( 1)), t);
4797
4182
  if (opacity < 1) node.opacity = opacity;
4798
- if (rigid && !isIdentityMatrix(m)) node.transform = m;
4183
+ if (rigid && !_chunkDWGZUSEScjs.isIdentityMatrix.call(void 0, m)) node.transform = m;
4799
4184
  return node;
4800
4185
  };
4801
4186
  }
4802
- function flattenPaths(node, parent = IDENTITY_MATRIX) {
4803
- const m = multiplyMatrices(nodeMatrix(node), parent);
4187
+ function flattenPaths(node, parent = _chunkDWGZUSEScjs.IDENTITY_MATRIX) {
4188
+ const m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, nodeMatrix(node), parent);
4804
4189
  if (node.type === "path") return [{ path: node, m, opacity: 1 }];
4805
4190
  const o = _nullishCoalesce(node.opacity, () => ( 1));
4806
4191
  return node.children.filter((c) => c.visible !== false).flatMap((c) => flattenPaths(c, m)).map((e) => ({ ...e, opacity: e.opacity * o }));
@@ -4836,10 +4221,10 @@ function createVectorMorph(a, b, options = {}) {
4836
4221
  parts.push(preparePathMorph(x.path, y.path, sub5, x.m, y.m));
4837
4222
  opacities.push([x.opacity, y.opacity]);
4838
4223
  } else if (x) {
4839
- parts.push(preparePathMorph(x.path, collapsedPath(x.path, x.m, ba, bb), sub5, x.m, IDENTITY_MATRIX));
4224
+ parts.push(preparePathMorph(x.path, collapsedPath(x.path, x.m, ba, bb), sub5, x.m, _chunkDWGZUSEScjs.IDENTITY_MATRIX));
4840
4225
  opacities.push([x.opacity, x.opacity]);
4841
4226
  } else if (y) {
4842
- parts.push(preparePathMorph(collapsedPath(y.path, y.m, bb, ba), y.path, sub5, IDENTITY_MATRIX, y.m));
4227
+ parts.push(preparePathMorph(collapsedPath(y.path, y.m, bb, ba), y.path, sub5, _chunkDWGZUSEScjs.IDENTITY_MATRIX, y.m));
4843
4228
  opacities.push([y.opacity, y.opacity]);
4844
4229
  }
4845
4230
  }
@@ -5171,7 +4556,7 @@ function blendFromAttribute(value, m) {
5171
4556
  const spine = r.spine;
5172
4557
  if (spine && Array.isArray(spine.anchors) && spine.anchors.every((a) => a && Number.isFinite(a.x) && Number.isFinite(a.y))) {
5173
4558
  const sp = { closed: !!spine.closed, anchors: spine.anchors.map((a) => ({ x: a.x, y: a.y, ...a.in ? { in: { x: a.in.x, y: a.in.y } } : {}, ...a.out ? { out: { x: a.out.x, y: a.out.y } } : {} })) };
5174
- out.spine = m === IDENTITY_MATRIX ? sp : transformVectorNode({ id: "", type: "path", subpaths: [sp] }, m).subpaths[0];
4559
+ out.spine = m === _chunkDWGZUSEScjs.IDENTITY_MATRIX ? sp : transformVectorNode({ id: "", type: "path", subpaths: [sp] }, m).subpaths[0];
5175
4560
  }
5176
4561
  return out;
5177
4562
  }
@@ -5354,25 +4739,25 @@ var length = (s, fallback = 0) => {
5354
4739
  return Number.isFinite(n) ? n : fallback;
5355
4740
  };
5356
4741
  function parseSvgTransform(value) {
5357
- let m = IDENTITY_MATRIX;
4742
+ let m = _chunkDWGZUSEScjs.IDENTITY_MATRIX;
5358
4743
  if (!value) return m;
5359
4744
  const re = /(matrix|translate|scale|rotate|skewX|skewY)\s*\(([^)]*)\)/g;
5360
4745
  let t;
5361
4746
  while (t = re.exec(value)) {
5362
4747
  const n = numberList(t[2]);
5363
- let step = IDENTITY_MATRIX;
4748
+ let step = _chunkDWGZUSEScjs.IDENTITY_MATRIX;
5364
4749
  switch (t[1]) {
5365
4750
  case "matrix":
5366
4751
  if (n.length >= 6) step = [n[0], n[1], n[2], n[3], n[4], n[5]];
5367
4752
  break;
5368
4753
  case "translate":
5369
- step = translateMatrix(_nullishCoalesce(n[0], () => ( 0)), _nullishCoalesce(n[1], () => ( 0)));
4754
+ step = _chunkDWGZUSEScjs.translateMatrix.call(void 0, _nullishCoalesce(n[0], () => ( 0)), _nullishCoalesce(n[1], () => ( 0)));
5370
4755
  break;
5371
4756
  case "scale":
5372
- step = scaleMatrix(_nullishCoalesce(n[0], () => ( 1)), _nullishCoalesce(_nullishCoalesce(n[1], () => ( n[0])), () => ( 1)));
4757
+ step = _chunkDWGZUSEScjs.scaleMatrix.call(void 0, _nullishCoalesce(n[0], () => ( 1)), _nullishCoalesce(_nullishCoalesce(n[1], () => ( n[0])), () => ( 1)));
5373
4758
  break;
5374
4759
  case "rotate":
5375
- step = rotateMatrix(_nullishCoalesce(n[0], () => ( 0)), { x: _nullishCoalesce(n[1], () => ( 0)), y: _nullishCoalesce(n[2], () => ( 0)) });
4760
+ step = _chunkDWGZUSEScjs.rotateMatrix.call(void 0, _nullishCoalesce(n[0], () => ( 0)), { x: _nullishCoalesce(n[1], () => ( 0)), y: _nullishCoalesce(n[2], () => ( 0)) });
5376
4761
  break;
5377
4762
  case "skewX":
5378
4763
  step = [1, 0, Math.tan((_nullishCoalesce(n[0], () => ( 0))) * Math.PI / 180), 1, 0, 0];
@@ -5381,7 +4766,7 @@ function parseSvgTransform(value) {
5381
4766
  step = [1, Math.tan((_nullishCoalesce(n[0], () => ( 0))) * Math.PI / 180), 0, 1, 0, 0];
5382
4767
  break;
5383
4768
  }
5384
- m = multiplyMatrices(step, m);
4769
+ m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, step, m);
5385
4770
  }
5386
4771
  return m;
5387
4772
  }
@@ -5456,7 +4841,7 @@ function resolveGradient(id, raw) {
5456
4841
  if (!stops.length) return null;
5457
4842
  const user = attr("gradientUnits") === "userSpaceOnUse";
5458
4843
  const t = parseSvgTransform(attr("gradientTransform"));
5459
- const plain2 = t === IDENTITY_MATRIX || t[0] === 1 && t[1] === 0 && t[2] === 0 && t[3] === 1 && t[4] === 0 && t[5] === 0;
4844
+ const plain2 = t === _chunkDWGZUSEScjs.IDENTITY_MATRIX || t[0] === 1 && t[1] === 0 && t[2] === 0 && t[3] === 1 && t[4] === 0 && t[5] === 0;
5460
4845
  const at2 = (name, fallback) => user ? length(attr(name), fallback) : fraction(attr(name), fallback);
5461
4846
  const spreadAttr = attr("spreadMethod");
5462
4847
  const spread = spreadAttr === "reflect" || spreadAttr === "repeat" ? { spread: spreadAttr } : {};
@@ -5538,7 +4923,7 @@ function parseVectorSvg(svg, options = {}) {
5538
4923
  const viewBox = numberList(root.attrs.viewBox);
5539
4924
  const width = viewBox.length === 4 ? viewBox[2] : length(root.attrs.width, 300);
5540
4925
  const height = viewBox.length === 4 ? viewBox[3] : length(root.attrs.height, 150);
5541
- const rootMatrix = viewBox.length === 4 ? translateMatrix(-viewBox[0], -viewBox[1]) : IDENTITY_MATRIX;
4926
+ const rootMatrix = viewBox.length === 4 ? _chunkDWGZUSEScjs.translateMatrix.call(void 0, -viewBox[0], -viewBox[1]) : _chunkDWGZUSEScjs.IDENTITY_MATRIX;
5542
4927
  const SKIP = /* @__PURE__ */ new Set(["defs", "clipPath", "mask", "symbol", "style", "title", "desc", "metadata", "pattern", "marker", "filter", "text", "image", "use", "linearGradient", "radialGradient", "script", "foreignObject"]);
5543
4928
  const shapeOf = (el) => {
5544
4929
  const a = el.attrs;
@@ -5591,7 +4976,7 @@ function parseVectorSvg(svg, options = {}) {
5591
4976
  ...s.fillRule === "evenodd" ? { fillRule: "evenodd" } : {}
5592
4977
  });
5593
4978
  const placed = (node, m) => {
5594
- if (m === IDENTITY_MATRIX) return node;
4979
+ if (m === _chunkDWGZUSEScjs.IDENTITY_MATRIX) return node;
5595
4980
  const next = transformVectorNode(node, m);
5596
4981
  const strokeScale = Math.sqrt(Math.abs(m[0] * m[3] - m[1] * m[2]));
5597
4982
  if (hasPaint(next.stroke) && strokeScale > 0 && Math.abs(strokeScale - 1) > 1e-9) next.strokeWidth = (_nullishCoalesce(next.strokeWidth, () => ( 1))) * strokeScale;
@@ -5658,7 +5043,7 @@ function parseVectorSvg(svg, options = {}) {
5658
5043
  if (raw.kind === "path") {
5659
5044
  const path = inner.find((n) => n.type === "path");
5660
5045
  if (!path) return null;
5661
- const { residual } = decomposeRigid(m);
5046
+ const { residual } = _chunkDWGZUSEScjs.decomposeRigid.call(void 0, m);
5662
5047
  const { visible: _v, ...rest } = path;
5663
5048
  return { ...rest, id, ...meta, ...effects.length ? { effects: transformVectorEffects(effects, residual) } : {} };
5664
5049
  }
@@ -5674,7 +5059,7 @@ function parseVectorSvg(svg, options = {}) {
5674
5059
  const out = [];
5675
5060
  for (const child of el.children) {
5676
5061
  if (SKIP.has(child.name)) continue;
5677
- const m = multiplyMatrices(parseSvgTransform(child.attrs.transform), matrix);
5062
+ const m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, parseSvgTransform(child.attrs.transform), matrix);
5678
5063
  const s = readStyle(child, style);
5679
5064
  const opacity = child.attrs.opacity !== void 0 ? parseFloat(child.attrs.opacity) : void 0;
5680
5065
  const hidden = child.attrs.display === "none" || child.attrs.visibility === "hidden";
@@ -5957,38 +5342,5 @@ function parseVectorSvg(svg, options = {}) {
5957
5342
 
5958
5343
 
5959
5344
 
5960
-
5961
-
5962
-
5963
-
5964
-
5965
-
5966
-
5967
-
5968
-
5969
-
5970
-
5971
-
5972
-
5973
-
5974
-
5975
-
5976
-
5977
-
5978
-
5979
-
5980
-
5981
-
5982
-
5983
-
5984
-
5985
-
5986
-
5987
-
5988
-
5989
-
5990
-
5991
-
5992
-
5993
- exports.VECTOR_CORNER_KINDS = VECTOR_CORNER_KINDS; exports.VECTOR_GRADIENT_TYPES = VECTOR_GRADIENT_TYPES; exports.VECTOR_GRADIENT_SPREADS = VECTOR_GRADIENT_SPREADS; exports.VECTOR_GRADIENT_INTERPOLATIONS = VECTOR_GRADIENT_INTERPOLATIONS; exports.VECTOR_STROKE_GRADIENT_MODES = VECTOR_STROKE_GRADIENT_MODES; exports.VECTOR_ARROWHEADS = VECTOR_ARROWHEADS; exports.VECTOR_BLEND_SPACINGS = VECTOR_BLEND_SPACINGS; exports.VECTOR_TOOLS = VECTOR_TOOLS; exports.VECTOR_TRANSFORM_HANDLES = VECTOR_TRANSFORM_HANDLES; exports.VECTOR_PATHFINDER_OPERATIONS = VECTOR_PATHFINDER_OPERATIONS; exports.VECTOR_EFFECT_TYPES = VECTOR_EFFECT_TYPES; exports.VECTOR_MERGE_MODES = VECTOR_MERGE_MODES; exports.isVectorGradient = isVectorGradient; exports.parseVectorColor = parseVectorColor; exports.VECTOR_GRADIENT_MIN_STOPS = VECTOR_GRADIENT_MIN_STOPS; exports.gradientMidpointRemap = gradientMidpointRemap; exports.sortedVectorGradientStops = sortedVectorGradientStops; exports.vectorGradientNeedsExpansion = vectorGradientNeedsExpansion; exports.vectorGradientRamp = vectorGradientRamp; exports.sampleVectorGradient = sampleVectorGradient; exports.expandVectorGradientStops = expandVectorGradientStops; exports.samplePlainStops = samplePlainStops; exports.reverseVectorGradient = reverseVectorGradient; exports.insertVectorGradientStop = insertVectorGradientStop; exports.moveVectorGradientStop = moveVectorGradientStop; exports.removeVectorGradientStop = removeVectorGradientStop; exports.vectorGradientMidpointPosition = vectorGradientMidpointPosition; exports.vectorGradientMidpointFromPosition = vectorGradientMidpointFromPosition; exports.spanVectorGradientStops = spanVectorGradientStops; exports.hasExplicitGradientGeometry = hasExplicitGradientGeometry; exports.vectorGradientPoints = vectorGradientPoints; exports.vectorBoxMatrix = vectorBoxMatrix; exports.vectorGradientUnitsMatrix = vectorGradientUnitsMatrix; exports.vectorGradientMatrix = vectorGradientMatrix; exports.vectorGradientFocalParam = vectorGradientFocalParam; exports.vectorGradientParam = vectorGradientParam; exports.applyVectorGradientSpread = applyVectorGradientSpread; exports.vectorGradientTAt = vectorGradientTAt; exports.sampleVectorGradientAt = sampleVectorGradientAt; exports.vectorGradientAspect = vectorGradientAspect; exports.explicitVectorGradient = explicitVectorGradient; exports.pinVectorGradient = pinVectorGradient; exports.transformVectorGradient = transformVectorGradient; exports.mapVectorGradient = mapVectorGradient; exports.mapVectorPaint = mapVectorPaint; exports.transformVectorPaint = transformVectorPaint; exports.isCentredVectorGradient = isCentredVectorGradient; exports.vectorGradientHandles = vectorGradientHandles; exports.moveVectorGradientHandle = moveVectorGradientHandle; exports.setVectorGradientVector = setVectorGradientVector; exports.VECTOR_GRADIENT_MAX_PERIODS = VECTOR_GRADIENT_MAX_PERIODS; exports.periodicVectorGradientStops = periodicVectorGradientStops; exports.expandVectorGradientSpread = expandVectorGradientSpread; exports.vectorGradientArea = vectorGradientArea; exports.patternAttrs = patternAttrs; exports.vectorGradientSvgDefs = vectorGradientSvgDefs; exports.sampleVectorPaintDefAt = sampleVectorPaintDefAt; exports.sanitizeVectorGradient = sanitizeVectorGradient; exports.convertVectorGradient = convertVectorGradient; exports.defaultVectorGradient = defaultVectorGradient; exports.applyVectorGradientPatch = applyVectorGradientPatch; exports.vectorCornerAt = vectorCornerAt; exports.vectorCorners = vectorCorners; exports.cornerSetback = cornerSetback; exports.fitCornerRadius = fitCornerRadius; exports.cornerBisectorPoint = cornerBisectorPoint; exports.cornerRadiusChange = cornerRadiusChange; exports.hasVectorCorners = hasVectorCorners; exports.expandVectorCornersOf = expandVectorCornersOf; exports.expandVectorCorners = expandVectorCorners; exports.setAnchorCorner = setAnchorCorner; exports.nextVectorCornerKind = nextVectorCornerKind; exports.setSubpathCorners = setSubpathCorners; exports.VECTOR_WIDTH_PROFILE_MAX_POINTS = VECTOR_WIDTH_PROFILE_MAX_POINTS; exports.VECTOR_WIDTH_PROFILE_MAX_SCALE = VECTOR_WIDTH_PROFILE_MAX_SCALE; exports.VECTOR_WIDTH_SAME_T = VECTOR_WIDTH_SAME_T; exports.VECTOR_WIDTH_PRESETS = VECTOR_WIDTH_PRESETS; exports.VECTOR_WIDTH_PRESET_IDS = VECTOR_WIDTH_PRESET_IDS; exports.sanitizeWidthProfile = sanitizeWidthProfile; exports.isUniformWidthProfile = isUniformWidthProfile; exports.widthProfileAt = widthProfileAt; exports.widthProfileMaxScale = widthProfileMaxScale; exports.widthProfilePreset = widthProfilePreset; exports.widthProfilePresetId = widthProfilePresetId; exports.reverseWidthProfile = reverseWidthProfile; exports.mirrorWidthProfile = mirrorWidthProfile; exports.insertWidthPoint = insertWidthPoint; exports.setWidthPoint = setWidthPoint; exports.removeWidthPoints = removeWidthPoints; exports.taperWaveFactor = taperWaveFactor; exports.generateWidthProfile = generateWidthProfile; exports.VECTOR_PRESSURE_NOMINAL = VECTOR_PRESSURE_NOMINAL; exports.pressureWidthProfile = pressureWidthProfile; exports.dashIntervals = dashIntervals; exports.variableStrokeRings = variableStrokeRings; exports.variableStrokeOutline = variableStrokeOutline; exports.nearestStrokePosition = nearestStrokePosition; exports.strokePositionPoint = strokePositionPoint; exports.isClosedBezierShape = isClosedBezierShape; exports.effectiveStrokeAlign = effectiveStrokeAlign; exports.strokeWidthProfileOf = strokeWidthProfileOf; exports.hasStrokeExtras = hasStrokeExtras; exports.vectorStrokeLineArea = vectorStrokeLineArea; exports.arrowheadWeight = arrowheadWeight; exports.arrowheadInset = arrowheadInset; exports.arrowheadPath = arrowheadPath; exports.vectorStrokeParts = vectorStrokeParts; exports.vectorStrokeOutlinePath = vectorStrokeOutlinePath; exports.hitTestVectorStroke = hitTestVectorStroke; exports.vectorStrokeReach = vectorStrokeReach; exports.effectPathLength = effectPathLength; exports.effectPathVertexCount = effectPathVertexCount; exports.trimIntervals = trimIntervals; exports.trimPaths = trimPaths; exports.trimPathsIndividually = trimPathsIndividually; exports.puckerBloatPaths = puckerBloatPaths; exports.roundCornerPaths = roundCornerPaths; exports.offsetPaths = offsetPaths; exports.twistPaths = twistPaths; exports.zigzagPaths = zigzagPaths; exports.wigglePaths = wigglePaths; exports.mergePaths = mergePaths; exports.vectorRepeaterCopies = vectorRepeaterCopies; exports.repeatPaths = repeatPaths; exports.pathsCenter = pathsCenter; exports.mapVectorPoints = mapVectorPoints; exports.mapVectorSubpaths = mapVectorSubpaths; exports.mapBezierPath = mapBezierPath; exports.VECTOR_WARP_STYLES = VECTOR_WARP_STYLES; exports.VECTOR_WARP_STYLE_LABELS = VECTOR_WARP_STYLE_LABELS; exports.vectorWarpPresetGrid = vectorWarpPresetGrid; exports.vectorWarpPresetMesh = vectorWarpPresetMesh; exports.vectorMeshColumns = vectorMeshColumns; exports.vectorMeshRows = vectorMeshRows; exports.isValidVectorMesh = isValidVectorMesh; exports.fitVectorMesh = fitVectorMesh; exports.vectorIdentityMesh = vectorIdentityMesh; exports.evalVectorMesh = evalVectorMesh; exports.splitVectorMeshU = splitVectorMeshU; exports.splitVectorMeshV = splitVectorMeshV; exports.removeVectorMeshSplitU = removeVectorMeshSplitU; exports.removeVectorMeshSplitV = removeVectorMeshSplitV; exports.mapVectorMeshPoints = mapVectorMeshPoints; exports.resizeVectorMesh = resizeVectorMesh; exports.vectorMeshControlBounds = vectorMeshControlBounds; exports.vectorMeshParamAt = vectorMeshParamAt; exports.dragVectorMeshPoint = dragVectorMeshPoint; exports.pullVectorMesh = pullVectorMesh; exports.vectorMeshFromOutline = vectorMeshFromOutline; exports.vectorMeshOutline = vectorMeshOutline; exports.vectorMeshEditPoints = vectorMeshEditPoints; exports.vectorMeshGridCurves = vectorMeshGridCurves; exports.VECTOR_EFFECT_DEFAULTS = VECTOR_EFFECT_DEFAULTS; exports.VECTOR_EFFECT_LABELS = VECTOR_EFFECT_LABELS; exports.VECTOR_EFFECT_PARAM_SPECS = VECTOR_EFFECT_PARAM_SPECS; exports.vectorEnvelopeMesh = vectorEnvelopeMesh; exports.vectorEnvelopeMap = vectorEnvelopeMap; exports.normalizeVectorEffectParams = normalizeVectorEffectParams; exports.createVectorEffect = createVectorEffect; exports.activeVectorEffects = activeVectorEffects; exports.hasOwnVectorAppearance = hasOwnVectorAppearance; exports.hasVectorAppearance = hasVectorAppearance; exports.isVectorLiveBoolean = isVectorLiveBoolean; exports.vectorOperandOperation = vectorOperandOperation; exports.vectorLiveBooleanSteps = vectorLiveBooleanSteps; exports.clearVectorLiveBooleanCache = clearVectorLiveBooleanCache; exports.foldVectorBooleanOperands = foldVectorBooleanOperands; exports.applyVectorEffects = applyVectorEffects; exports.vectorEffectInputPaths = vectorEffectInputPaths; exports.vectorEffectInputBounds = vectorEffectInputBounds; exports.vectorNodeEnvelope = vectorNodeEnvelope; exports.vectorEnvelopeFrame = vectorEnvelopeFrame; exports.vectorAppearanceShapes = vectorAppearanceShapes; exports.vectorAppearanceOutline = vectorAppearanceOutline; exports.vectorAppearanceNodes = vectorAppearanceNodes; exports.expandVectorAppearance = expandVectorAppearance; exports.expandVectorAppearances = expandVectorAppearances; exports.sanitizeVectorEffects = sanitizeVectorEffects; exports.transformVectorEffects = transformVectorEffects; exports.vectorEnteredGroups = vectorEnteredGroups; exports.cloneAnchor = cloneAnchor; exports.cloneSubpath = cloneSubpath; exports.cloneVectorNode = cloneVectorNode; exports.cloneVectorDocument = cloneVectorDocument; exports.hasPaint = hasPaint; exports.subpathSegmentCount = subpathSegmentCount; exports.subpathSegment = subpathSegment; exports.subpathsToBezier = subpathsToBezier; exports.vectorNodeToBezier = vectorNodeToBezier; exports.vectorPathData = vectorPathData; exports.inferAnchorType = inferAnchorType; exports.bezierToSubpaths = bezierToSubpaths; exports.walkVectorNodes = walkVectorNodes; exports.findVectorNode = findVectorNode; exports.locateVectorNode = locateVectorNode; exports.collectPathNodes = collectPathNodes; exports.nodeMatrix = nodeMatrix; exports.vectorPathWorldBezier = vectorPathWorldBezier; exports.vectorNodeBounds = vectorNodeBounds; exports.unionBounds = unionBounds; exports.boundsIntersect = boundsIntersect; exports.boundsFromPoints = boundsFromPoints; exports.hitTestVectorNode = hitTestVectorNode; exports.vectorStrokeOutline = vectorStrokeOutline; exports.hitTestVectorNodes = hitTestVectorNodes; exports.nearestSegment = nearestSegment; exports.IDENTITY_MATRIX = IDENTITY_MATRIX; exports.multiplyMatrices = multiplyMatrices; exports.translateMatrix = translateMatrix; exports.scaleMatrix = scaleMatrix; exports.rotateMatrix = rotateMatrix; exports.applyMatrix = applyMatrix; exports.isIdentityMatrix = isIdentityMatrix; exports.invertMatrix = invertMatrix; exports.applyMatrixLinear = applyMatrixLinear; exports.matrixRotation = matrixRotation; exports.decomposeRigid = decomposeRigid; exports.transformVectorNode = transformVectorNode; exports.vectorNodeRotation = vectorNodeRotation; exports.vectorWorldMatrix = vectorWorldMatrix; exports.vectorParentMatrix = vectorParentMatrix; exports.translateAnchor = translateAnchor; exports.moveAnchorHandle = moveAnchorHandle; exports.convertAnchor = convertAnchor; exports.insertAnchor = insertAnchor; exports.removeAnchors = removeAnchors; exports.reverseSubpath = reverseSubpath; exports.KAPPA = KAPPA2; exports.rectSubpath = rectSubpath; exports.ellipseSubpath = ellipseSubpath; exports.polygonSubpath = polygonSubpath; exports.starSubpath = starSubpath; exports.lineSubpath = lineSubpath; exports.roundSubpaths = roundSubpaths; exports.subpathToMorphContour = subpathToMorphContour; exports.morphContourToSubpath = morphContourToSubpath; exports.refineMorphContour = refineMorphContour; exports.reverseMorphContour = reverseMorphContour; exports.turnMorphContour = turnMorphContour; exports.correspondMorphContours = correspondMorphContours; exports.morphPathsCross = morphPathsCross; exports.interpolateMorphContours = interpolateMorphContours; exports.interpolateRigidMatrix = interpolateRigidMatrix; exports.interpolateVectorColor = interpolateVectorColor; exports.resampleGradientStops = resampleGradientStops; exports.interpolateVectorPaint = interpolateVectorPaint; exports.interpolateWidthProfiles = interpolateWidthProfiles; exports.interpolateVectorStyle = interpolateVectorStyle; exports.createVectorMorph = createVectorMorph; exports.interpolateVectorPaths = interpolateVectorPaths; exports.evaluateVectorPathKeyframes = evaluateVectorPathKeyframes; exports.vectorStrokeGradientDefs = vectorStrokeGradientDefs; exports.vectorCornersAttribute = vectorCornersAttribute; exports.applyVectorCornersAttribute = applyVectorCornersAttribute; exports.vectorPathLocalBounds = vectorPathLocalBounds; exports.vectorPaintToSvg = vectorPaintToSvg; exports.vectorStrokeSvgParts = vectorStrokeSvgParts; exports.widthProfileToAttribute = widthProfileToAttribute; exports.widthProfileFromAttribute = widthProfileFromAttribute; exports.vectorDocumentToSvg = vectorDocumentToSvg; exports.parseSvgTransform = parseSvgTransform; exports.parseVectorSvg = parseVectorSvg;
5994
- //# sourceMappingURL=chunk-7MD7C6XQ.cjs.map
5345
+ exports.VECTOR_CORNER_KINDS = VECTOR_CORNER_KINDS; exports.VECTOR_GRADIENT_TYPES = VECTOR_GRADIENT_TYPES; exports.VECTOR_GRADIENT_SPREADS = VECTOR_GRADIENT_SPREADS; exports.VECTOR_GRADIENT_INTERPOLATIONS = VECTOR_GRADIENT_INTERPOLATIONS; exports.VECTOR_STROKE_GRADIENT_MODES = VECTOR_STROKE_GRADIENT_MODES; exports.VECTOR_ARROWHEADS = VECTOR_ARROWHEADS; exports.VECTOR_BLEND_SPACINGS = VECTOR_BLEND_SPACINGS; exports.VECTOR_TOOLS = VECTOR_TOOLS; exports.VECTOR_TRANSFORM_HANDLES = VECTOR_TRANSFORM_HANDLES; exports.VECTOR_PATHFINDER_OPERATIONS = VECTOR_PATHFINDER_OPERATIONS; exports.VECTOR_EFFECT_TYPES = VECTOR_EFFECT_TYPES; exports.VECTOR_MERGE_MODES = VECTOR_MERGE_MODES; exports.isVectorGradient = isVectorGradient; exports.parseVectorColor = parseVectorColor; exports.VECTOR_GRADIENT_MIN_STOPS = VECTOR_GRADIENT_MIN_STOPS; exports.gradientMidpointRemap = gradientMidpointRemap; exports.sortedVectorGradientStops = sortedVectorGradientStops; exports.vectorGradientNeedsExpansion = vectorGradientNeedsExpansion; exports.vectorGradientRamp = vectorGradientRamp; exports.sampleVectorGradient = sampleVectorGradient; exports.expandVectorGradientStops = expandVectorGradientStops; exports.samplePlainStops = samplePlainStops; exports.reverseVectorGradient = reverseVectorGradient; exports.insertVectorGradientStop = insertVectorGradientStop; exports.moveVectorGradientStop = moveVectorGradientStop; exports.removeVectorGradientStop = removeVectorGradientStop; exports.vectorGradientMidpointPosition = vectorGradientMidpointPosition; exports.vectorGradientMidpointFromPosition = vectorGradientMidpointFromPosition; exports.spanVectorGradientStops = spanVectorGradientStops; exports.hasExplicitGradientGeometry = hasExplicitGradientGeometry; exports.vectorGradientPoints = vectorGradientPoints; exports.vectorBoxMatrix = vectorBoxMatrix; exports.vectorGradientUnitsMatrix = vectorGradientUnitsMatrix; exports.vectorGradientMatrix = vectorGradientMatrix; exports.vectorGradientFocalParam = vectorGradientFocalParam; exports.vectorGradientParam = vectorGradientParam; exports.applyVectorGradientSpread = applyVectorGradientSpread; exports.vectorGradientTAt = vectorGradientTAt; exports.sampleVectorGradientAt = sampleVectorGradientAt; exports.vectorGradientAspect = vectorGradientAspect; exports.explicitVectorGradient = explicitVectorGradient; exports.pinVectorGradient = pinVectorGradient; exports.transformVectorGradient = transformVectorGradient; exports.mapVectorGradient = mapVectorGradient; exports.mapVectorPaint = mapVectorPaint; exports.transformVectorPaint = transformVectorPaint; exports.isCentredVectorGradient = isCentredVectorGradient; exports.vectorGradientHandles = vectorGradientHandles; exports.moveVectorGradientHandle = moveVectorGradientHandle; exports.setVectorGradientVector = setVectorGradientVector; exports.VECTOR_GRADIENT_MAX_PERIODS = VECTOR_GRADIENT_MAX_PERIODS; exports.periodicVectorGradientStops = periodicVectorGradientStops; exports.expandVectorGradientSpread = expandVectorGradientSpread; exports.vectorGradientArea = vectorGradientArea; exports.patternAttrs = patternAttrs; exports.vectorGradientSvgDefs = vectorGradientSvgDefs; exports.sampleVectorPaintDefAt = sampleVectorPaintDefAt; exports.sanitizeVectorGradient = sanitizeVectorGradient; exports.convertVectorGradient = convertVectorGradient; exports.defaultVectorGradient = defaultVectorGradient; exports.applyVectorGradientPatch = applyVectorGradientPatch; exports.vectorCornerAt = vectorCornerAt; exports.vectorCorners = vectorCorners; exports.cornerSetback = cornerSetback; exports.fitCornerRadius = fitCornerRadius; exports.cornerBisectorPoint = cornerBisectorPoint; exports.cornerRadiusChange = cornerRadiusChange; exports.hasVectorCorners = hasVectorCorners; exports.expandVectorCornersOf = expandVectorCornersOf; exports.expandVectorCorners = expandVectorCorners; exports.setAnchorCorner = setAnchorCorner; exports.nextVectorCornerKind = nextVectorCornerKind; exports.setSubpathCorners = setSubpathCorners; exports.VECTOR_WIDTH_PROFILE_MAX_POINTS = VECTOR_WIDTH_PROFILE_MAX_POINTS; exports.VECTOR_WIDTH_PROFILE_MAX_SCALE = VECTOR_WIDTH_PROFILE_MAX_SCALE; exports.VECTOR_WIDTH_SAME_T = VECTOR_WIDTH_SAME_T; exports.VECTOR_WIDTH_PRESETS = VECTOR_WIDTH_PRESETS; exports.VECTOR_WIDTH_PRESET_IDS = VECTOR_WIDTH_PRESET_IDS; exports.sanitizeWidthProfile = sanitizeWidthProfile; exports.isUniformWidthProfile = isUniformWidthProfile; exports.widthProfileAt = widthProfileAt; exports.widthProfileMaxScale = widthProfileMaxScale; exports.widthProfilePreset = widthProfilePreset; exports.widthProfilePresetId = widthProfilePresetId; exports.reverseWidthProfile = reverseWidthProfile; exports.mirrorWidthProfile = mirrorWidthProfile; exports.insertWidthPoint = insertWidthPoint; exports.setWidthPoint = setWidthPoint; exports.removeWidthPoints = removeWidthPoints; exports.taperWaveFactor = taperWaveFactor; exports.generateWidthProfile = generateWidthProfile; exports.VECTOR_PRESSURE_NOMINAL = VECTOR_PRESSURE_NOMINAL; exports.pressureWidthProfile = pressureWidthProfile; exports.dashIntervals = dashIntervals; exports.variableStrokeRings = variableStrokeRings; exports.variableStrokeOutline = variableStrokeOutline; exports.nearestStrokePosition = nearestStrokePosition; exports.strokePositionPoint = strokePositionPoint; exports.isClosedBezierShape = isClosedBezierShape; exports.effectiveStrokeAlign = effectiveStrokeAlign; exports.strokeWidthProfileOf = strokeWidthProfileOf; exports.hasStrokeExtras = hasStrokeExtras; exports.vectorStrokeLineArea = vectorStrokeLineArea; exports.arrowheadWeight = arrowheadWeight; exports.arrowheadInset = arrowheadInset; exports.arrowheadPath = arrowheadPath; exports.vectorStrokeParts = vectorStrokeParts; exports.vectorStrokeOutlinePath = vectorStrokeOutlinePath; exports.hitTestVectorStroke = hitTestVectorStroke; exports.vectorStrokeReach = vectorStrokeReach; exports.effectPathLength = effectPathLength; exports.effectPathVertexCount = effectPathVertexCount; exports.trimIntervals = trimIntervals; exports.trimPaths = trimPaths; exports.trimPathsIndividually = trimPathsIndividually; exports.puckerBloatPaths = puckerBloatPaths; exports.roundCornerPaths = roundCornerPaths; exports.offsetPaths = offsetPaths; exports.twistPaths = twistPaths; exports.zigzagPaths = zigzagPaths; exports.wigglePaths = wigglePaths; exports.mergePaths = mergePaths; exports.vectorRepeaterCopies = vectorRepeaterCopies; exports.repeatPaths = repeatPaths; exports.pathsCenter = pathsCenter; exports.mapVectorPoints = mapVectorPoints; exports.mapVectorSubpaths = mapVectorSubpaths; exports.mapBezierPath = mapBezierPath; exports.vectorMeshFromOutline = vectorMeshFromOutline; exports.vectorMeshOutline = vectorMeshOutline; exports.VECTOR_EFFECT_DEFAULTS = VECTOR_EFFECT_DEFAULTS; exports.VECTOR_EFFECT_LABELS = VECTOR_EFFECT_LABELS; exports.VECTOR_EFFECT_PARAM_SPECS = VECTOR_EFFECT_PARAM_SPECS; exports.vectorEnvelopeMesh = vectorEnvelopeMesh; exports.vectorEnvelopeMap = vectorEnvelopeMap; exports.normalizeVectorEffectParams = normalizeVectorEffectParams; exports.createVectorEffect = createVectorEffect; exports.activeVectorEffects = activeVectorEffects; exports.hasOwnVectorAppearance = hasOwnVectorAppearance; exports.hasVectorAppearance = hasVectorAppearance; exports.isVectorLiveBoolean = isVectorLiveBoolean; exports.vectorOperandOperation = vectorOperandOperation; exports.vectorLiveBooleanSteps = vectorLiveBooleanSteps; exports.clearVectorLiveBooleanCache = clearVectorLiveBooleanCache; exports.foldVectorBooleanOperands = foldVectorBooleanOperands; exports.applyVectorEffects = applyVectorEffects; exports.vectorEffectInputPaths = vectorEffectInputPaths; exports.vectorEffectInputBounds = vectorEffectInputBounds; exports.vectorNodeEnvelope = vectorNodeEnvelope; exports.vectorEnvelopeFrame = vectorEnvelopeFrame; exports.vectorAppearanceShapes = vectorAppearanceShapes; exports.vectorAppearanceOutline = vectorAppearanceOutline; exports.vectorAppearanceNodes = vectorAppearanceNodes; exports.expandVectorAppearance = expandVectorAppearance; exports.expandVectorAppearances = expandVectorAppearances; exports.sanitizeVectorEffects = sanitizeVectorEffects; exports.transformVectorEffects = transformVectorEffects; exports.vectorEnteredGroups = vectorEnteredGroups; exports.cloneAnchor = cloneAnchor; exports.cloneSubpath = cloneSubpath; exports.cloneVectorNode = cloneVectorNode; exports.cloneVectorDocument = cloneVectorDocument; exports.hasPaint = hasPaint; exports.subpathSegmentCount = subpathSegmentCount; exports.subpathSegment = subpathSegment; exports.subpathsToBezier = subpathsToBezier; exports.vectorNodeToBezier = vectorNodeToBezier; exports.vectorPathData = vectorPathData; exports.inferAnchorType = inferAnchorType; exports.bezierToSubpaths = bezierToSubpaths; exports.walkVectorNodes = walkVectorNodes; exports.findVectorNode = findVectorNode; exports.locateVectorNode = locateVectorNode; exports.collectPathNodes = collectPathNodes; exports.nodeMatrix = nodeMatrix; exports.vectorPathWorldBezier = vectorPathWorldBezier; exports.vectorNodeBounds = vectorNodeBounds; exports.unionBounds = unionBounds; exports.boundsIntersect = boundsIntersect; exports.boundsFromPoints = boundsFromPoints; exports.hitTestVectorNode = hitTestVectorNode; exports.vectorStrokeOutline = vectorStrokeOutline; exports.hitTestVectorNodes = hitTestVectorNodes; exports.nearestSegment = nearestSegment; exports.transformVectorNode = transformVectorNode; exports.vectorNodeRotation = vectorNodeRotation; exports.vectorWorldMatrix = vectorWorldMatrix; exports.vectorParentMatrix = vectorParentMatrix; exports.translateAnchor = translateAnchor; exports.moveAnchorHandle = moveAnchorHandle; exports.convertAnchor = convertAnchor; exports.insertAnchor = insertAnchor; exports.removeAnchors = removeAnchors; exports.reverseSubpath = reverseSubpath; exports.KAPPA = KAPPA2; exports.rectSubpath = rectSubpath; exports.ellipseSubpath = ellipseSubpath; exports.polygonSubpath = polygonSubpath; exports.starSubpath = starSubpath; exports.lineSubpath = lineSubpath; exports.roundSubpaths = roundSubpaths; exports.subpathToMorphContour = subpathToMorphContour; exports.morphContourToSubpath = morphContourToSubpath; exports.refineMorphContour = refineMorphContour; exports.reverseMorphContour = reverseMorphContour; exports.turnMorphContour = turnMorphContour; exports.correspondMorphContours = correspondMorphContours; exports.morphPathsCross = morphPathsCross; exports.interpolateMorphContours = interpolateMorphContours; exports.interpolateRigidMatrix = interpolateRigidMatrix; exports.interpolateVectorColor = interpolateVectorColor; exports.resampleGradientStops = resampleGradientStops; exports.interpolateVectorPaint = interpolateVectorPaint; exports.interpolateWidthProfiles = interpolateWidthProfiles; exports.interpolateVectorStyle = interpolateVectorStyle; exports.createVectorMorph = createVectorMorph; exports.interpolateVectorPaths = interpolateVectorPaths; exports.evaluateVectorPathKeyframes = evaluateVectorPathKeyframes; exports.vectorStrokeGradientDefs = vectorStrokeGradientDefs; exports.vectorCornersAttribute = vectorCornersAttribute; exports.applyVectorCornersAttribute = applyVectorCornersAttribute; exports.vectorPathLocalBounds = vectorPathLocalBounds; exports.vectorPaintToSvg = vectorPaintToSvg; exports.vectorStrokeSvgParts = vectorStrokeSvgParts; exports.widthProfileToAttribute = widthProfileToAttribute; exports.widthProfileFromAttribute = widthProfileFromAttribute; exports.vectorDocumentToSvg = vectorDocumentToSvg; exports.parseSvgTransform = parseSvgTransform; exports.parseVectorSvg = parseVectorSvg;
5346
+ //# sourceMappingURL=chunk-JF5PXN7W.cjs.map