@pixerate/editor 0.128.0 → 0.130.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 (65) hide show
  1. package/dist/animation-editor/index.cjs +55 -55
  2. package/dist/animation-editor/index.d.cts +5 -5
  3. package/dist/animation-editor/index.d.ts +5 -5
  4. package/dist/animation-editor/index.js +2 -2
  5. package/dist/{bezier-CvgQiYRg.d.cts → bezier-CdoGygwG.d.cts} +1 -1
  6. package/dist/{bezier-DP4NnJp3.d.ts → bezier-CigmusV_.d.ts} +1 -1
  7. package/dist/canvas/index.d.cts +7 -7
  8. package/dist/canvas/index.d.ts +7 -7
  9. package/dist/{chunk-BEGEWQHD.cjs → chunk-2PXRKMOH.cjs} +36 -36
  10. package/dist/{chunk-BEGEWQHD.cjs.map → chunk-2PXRKMOH.cjs.map} +1 -1
  11. package/dist/{chunk-F7Q2NE2Y.js → chunk-ERYGCA72.js} +2 -2
  12. package/dist/{chunk-A6KHMKI4.js → chunk-L5OTIYOO.js} +2 -2
  13. package/dist/{chunk-ORE334I6.cjs → chunk-LXGOYRPE.cjs} +366 -68
  14. package/dist/chunk-LXGOYRPE.cjs.map +1 -0
  15. package/dist/{chunk-XLUYXUBD.cjs → chunk-PMHPXCJC.cjs} +82 -82
  16. package/dist/{chunk-XLUYXUBD.cjs.map → chunk-PMHPXCJC.cjs.map} +1 -1
  17. package/dist/{chunk-ROZFX4QI.js → chunk-PRYMC442.js} +302 -4
  18. package/dist/chunk-PRYMC442.js.map +1 -0
  19. package/dist/effects/index.d.cts +4 -4
  20. package/dist/effects/index.d.ts +4 -4
  21. package/dist/{export-Cbr9IqpJ.d.cts → export-5WDKJqTy.d.cts} +1 -1
  22. package/dist/{export-DHrFJ8r_.d.ts → export-B4r8b9Ft.d.ts} +11 -4
  23. package/dist/{export-ClPKUB-v.d.ts → export-CU_ARP3A.d.ts} +1 -1
  24. package/dist/{export-BkYQvV56.d.cts → export-CejjC2iI.d.cts} +11 -4
  25. package/dist/{helpers-C5aAd44p.d.cts → helpers-CzZu51eI.d.cts} +33 -2
  26. package/dist/{helpers-CPWcK504.d.ts → helpers-X_rycLNJ.d.ts} +33 -2
  27. package/dist/image-editor/index.cjs +672 -621
  28. package/dist/image-editor/index.cjs.map +1 -1
  29. package/dist/image-editor/index.d.cts +8 -8
  30. package/dist/image-editor/index.d.ts +8 -8
  31. package/dist/image-editor/index.js +65 -14
  32. package/dist/image-editor/index.js.map +1 -1
  33. package/dist/{opentype-sQrF3Ry1.d.ts → opentype-CrHAsKh3.d.ts} +2 -2
  34. package/dist/{opentype-BOewaGQx.d.cts → opentype-DlRMYcCW.d.cts} +2 -2
  35. package/dist/paint-editor/index.cjs +7 -7
  36. package/dist/paint-editor/index.d.cts +5 -5
  37. package/dist/paint-editor/index.d.ts +5 -5
  38. package/dist/paint-editor/index.js +2 -2
  39. package/dist/{pathfinder-CnkW7zLI.d.cts → pathfinder-CKfKOVP4.d.cts} +1 -1
  40. package/dist/{pathfinder-BwJx0_zM.d.ts → pathfinder-Dlss70hL.d.ts} +1 -1
  41. package/dist/{pool-CTrtciaN.d.ts → pool-DDOo0xJH.d.ts} +1 -1
  42. package/dist/{pool-C7GtrL34.d.cts → pool-DKic69LD.d.cts} +1 -1
  43. package/dist/{svg-C4LlFnEw.d.cts → svg-BRaii3pI.d.cts} +2 -2
  44. package/dist/{svg-CUzZa0EO.d.ts → svg-BYVZeVo0.d.ts} +2 -2
  45. package/dist/{tools-BpCmUNxb.d.cts → tools-CtheDLDr.d.cts} +1 -1
  46. package/dist/{tools-AugT22z3.d.ts → tools-D8bZ-7YG.d.ts} +1 -1
  47. package/dist/vector/index.cjs +884 -874
  48. package/dist/vector/index.cjs.map +1 -1
  49. package/dist/vector/index.d.cts +53 -10
  50. package/dist/vector/index.d.ts +53 -10
  51. package/dist/vector/index.js +15 -5
  52. package/dist/vector/index.js.map +1 -1
  53. package/dist/video-editor/index.d.cts +4 -4
  54. package/dist/video-editor/index.d.ts +4 -4
  55. package/dist/{warp-D62N_5VK.d.cts → warp-BFoYxy_s.d.cts} +2 -2
  56. package/dist/{warp-CIsO617e.d.ts → warp-CZVC8pB5.d.ts} +2 -2
  57. package/package.json +1 -1
  58. package/skills/pixerate-image-editor/SKILL.md +1 -1
  59. package/skills/pixerate-image-editor/references/color-management.md +4 -3
  60. package/skills/pixerate-vector/SKILL.md +1 -1
  61. package/skills/pixerate-vector/references/commands.md +2 -0
  62. package/dist/chunk-ORE334I6.cjs.map +0 -1
  63. package/dist/chunk-ROZFX4QI.js.map +0 -1
  64. /package/dist/{chunk-F7Q2NE2Y.js.map → chunk-ERYGCA72.js.map} +0 -0
  65. /package/dist/{chunk-A6KHMKI4.js.map → chunk-L5OTIYOO.js.map} +0 -0
@@ -25,6 +25,7 @@
25
25
 
26
26
 
27
27
 
28
+
28
29
 
29
30
 
30
31
  var _chunkBJTCSLF6cjs = require('./chunk-BJTCSLF6.cjs');
@@ -124,7 +125,7 @@ var VECTOR_TOOLS = [
124
125
  ];
125
126
  var VECTOR_TRANSFORM_HANDLES = ["nw", "n", "ne", "e", "se", "s", "sw", "w", "rotate"];
126
127
  var VECTOR_PATHFINDER_OPERATIONS = ["divide", "trim", "merge", "crop", "outline", "minusBack"];
127
- var VECTOR_EFFECT_TYPES = ["trim", "roundCorners", "puckerBloat", "twist", "zigzag", "wiggle", "offset", "merge", "repeater", "envelope", "contour", "blockShadow"];
128
+ var VECTOR_EFFECT_TYPES = ["trim", "roundCorners", "puckerBloat", "twist", "zigzag", "wiggle", "offset", "merge", "repeater", "envelope", "contour", "blockShadow", "extrude", "bevel"];
128
129
  var VECTOR_MERGE_MODES = ["merge", "add", "subtract", "intersect", "exclude"];
129
130
  var VECTOR_FILTER_TYPES = ["dropShadow", "innerShadow", "outerGlow", "innerGlow", "layerBlur", "feather"];
130
131
 
@@ -5550,6 +5551,227 @@ function vectorInstanceGroup(node, bake) {
5550
5551
  }
5551
5552
  var composeVectorMatrices = (a, b) => multiplyMatrices(a, b);
5552
5553
 
5554
+ // src/vector/extrude.ts
5555
+ function vectorPaintSolid(paint) {
5556
+ if (paint == null || paint === "none") return null;
5557
+ if (typeof paint === "string") return paint;
5558
+ const stops = paint.stops;
5559
+ if (_optionalChain([stops, 'optionalAccess', _143 => _143.length])) return stops.reduce((a, b) => Math.abs(b.offset - 0.5) < Math.abs(a.offset - 0.5) ? b : a).color;
5560
+ const colors = paint.colors;
5561
+ if (_optionalChain([colors, 'optionalAccess', _144 => _144.length])) return colors[0];
5562
+ const points = paint.points;
5563
+ return _nullishCoalesce(_optionalChain([points, 'optionalAccess', _145 => _145.find, 'call', _146 => _146((p) => typeof p.color === "string"), 'optionalAccess', _147 => _147.color]), () => ( null));
5564
+ }
5565
+ function shadeVectorColor(color2, amount) {
5566
+ const c = parseVectorColor(color2);
5567
+ if (!c) return color2;
5568
+ const a = Math.min(1, Math.max(-1, amount));
5569
+ const target = a >= 0 ? 1 : 0;
5570
+ const h = (v2) => Math.round(Math.min(1, Math.max(0, v2)) * 255).toString(16).padStart(2, "0");
5571
+ const m = [0, 1, 2].map((k) => c[k] + (target - c[k]) * Math.abs(a));
5572
+ return `#${h(m[0])}${h(m[1])}${h(m[2])}`;
5573
+ }
5574
+ function vectorPathRings(path, tolerance = 0.5) {
5575
+ const rings = [];
5576
+ for (const contour of _chunkBJTCSLF6cjs.pathToContours.call(void 0, path)) {
5577
+ const ring = _chunkBJTCSLF6cjs.flattenChain.call(void 0, _chunkBJTCSLF6cjs.closeContour.call(void 0, contour, true), Math.max(1e-3, tolerance));
5578
+ if (ring.length >= 2) rings.push(ring);
5579
+ }
5580
+ return rings;
5581
+ }
5582
+ function vectorExtrudeFaces(path, params) {
5583
+ const box = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, path);
5584
+ if (!box || !path.length) return [];
5585
+ const perspective = params.mode === "perspective";
5586
+ const rad2 = params.angle * Math.PI / 180;
5587
+ const d = [Math.cos(rad2) * Math.max(0, params.depth), Math.sin(rad2) * Math.max(0, params.depth)];
5588
+ const vp = [(box.minX + box.maxX) / 2 + params.vanishingPoint.x, (box.minY + box.maxY) / 2 + params.vanishingPoint.y];
5589
+ const pull = Math.min(1, Math.max(0, params.toward / 100));
5590
+ const back = (p) => perspective ? [p[0] + (vp[0] - p[0]) * pull, p[1] + (vp[1] - p[1]) * pull] : [p[0] + d[0], p[1] + d[1]];
5591
+ if (perspective ? pull <= 0 : Math.hypot(d[0], d[1]) < 1e-9) return [];
5592
+ const lr = params.lightAngle * Math.PI / 180;
5593
+ const light = [Math.cos(lr), Math.sin(lr)];
5594
+ const strength = Math.min(1, Math.max(0, params.shading / 100));
5595
+ const u = perspective ? [0, 0] : [d[0] / Math.hypot(d[0], d[1]), d[1] / Math.hypot(d[0], d[1])];
5596
+ const centre = [(box.minX + box.maxX) / 2, (box.minY + box.maxY) / 2];
5597
+ const aim = Math.atan2(centre[1] - vp[1], centre[0] - vp[0]);
5598
+ const across = (p) => {
5599
+ if (!perspective) return -p[0] * u[1] + p[1] * u[0];
5600
+ let a = Math.atan2(p[1] - vp[1], p[0] - vp[0]) - aim;
5601
+ while (a > Math.PI) a -= 2 * Math.PI;
5602
+ while (a <= -Math.PI) a += 2 * Math.PI;
5603
+ return a;
5604
+ };
5605
+ const towardBack = (p, q, l) => {
5606
+ const lp = across(p);
5607
+ const lq = across(q);
5608
+ const t = Math.abs(lq - lp) < 1e-12 ? 0.5 : Math.min(1, Math.max(0, (l - lp) / (lq - lp)));
5609
+ const x = [p[0] + (q[0] - p[0]) * t, p[1] + (q[1] - p[1]) * t];
5610
+ return perspective ? -Math.hypot(vp[0] - x[0], vp[1] - x[1]) : x[0] * u[0] + x[1] * u[1];
5611
+ };
5612
+ const faces = [];
5613
+ for (const ring of vectorPathRings(path, 0.25)) {
5614
+ for (let i = 0; i < ring.length; i++) {
5615
+ const p = ring[i];
5616
+ const q = ring[(i + 1) % ring.length];
5617
+ const ex = q[0] - p[0];
5618
+ const ey = q[1] - p[1];
5619
+ const len2 = Math.hypot(ex, ey);
5620
+ if (len2 < 1e-9) continue;
5621
+ const pb = back(p);
5622
+ const qb = back(q);
5623
+ const mid = [(p[0] + q[0]) / 2, (p[1] + q[1]) / 2];
5624
+ const away = perspective ? [vp[0] - mid[0], vp[1] - mid[1]] : d;
5625
+ let n2 = [ey / len2, -ex / len2];
5626
+ if (n2[0] * away[0] + n2[1] * away[1] < 0) n2 = [-n2[0], -n2[1]];
5627
+ const shade = (n2[0] * light[0] + n2[1] * light[1]) * strength;
5628
+ const lp = across(p);
5629
+ const lq = across(q);
5630
+ faces.push({
5631
+ p,
5632
+ q,
5633
+ lo: Math.min(lp, lq),
5634
+ hi: Math.max(lp, lq),
5635
+ key: towardBack(p, q, (lp + lq) / 2),
5636
+ face: {
5637
+ shade,
5638
+ path: [{ type: "M", x: p[0], y: p[1] }, { type: "L", x: q[0], y: q[1] }, { type: "L", x: qb[0], y: qb[1] }, { type: "L", x: pb[0], y: pb[1] }, { type: "Z" }]
5639
+ }
5640
+ });
5641
+ }
5642
+ }
5643
+ faces.sort((a, b) => a.key - b.key);
5644
+ const n = faces.length;
5645
+ const after = faces.map(() => []);
5646
+ const before = new Array(n).fill(0);
5647
+ const eps = 1e-9;
5648
+ for (let i = 0; i < n; i++) {
5649
+ for (let j = i + 1; j < n; j++) {
5650
+ const lo = Math.max(faces[i].lo, faces[j].lo);
5651
+ const hi = Math.min(faces[i].hi, faces[j].hi);
5652
+ if (hi - lo <= eps * Math.max(1, Math.abs(hi))) continue;
5653
+ const l = (lo + hi) / 2;
5654
+ const di = towardBack(faces[i].p, faces[i].q, l);
5655
+ const dj = towardBack(faces[j].p, faces[j].q, l);
5656
+ if (Math.abs(di - dj) < 1e-9) continue;
5657
+ const [back0, front] = di < dj ? [i, j] : [j, i];
5658
+ after[back0].push(front);
5659
+ before[front]++;
5660
+ }
5661
+ }
5662
+ const order = [];
5663
+ const done = new Array(n).fill(false);
5664
+ let next = 0;
5665
+ while (order.length < n) {
5666
+ let pick = -1;
5667
+ for (let i = next; i < n; i++) {
5668
+ if (!done[i] && before[i] === 0) {
5669
+ pick = i;
5670
+ break;
5671
+ }
5672
+ }
5673
+ if (pick < 0) pick = done.indexOf(false);
5674
+ done[pick] = true;
5675
+ order.push(pick);
5676
+ for (const k of after[pick]) before[k]--;
5677
+ while (next < n && done[next]) next++;
5678
+ }
5679
+ return order.map((i) => faces[i].face);
5680
+ }
5681
+
5682
+ // src/vector/bevel.ts
5683
+ var MITER_LIMIT = 4;
5684
+ function crossing2(a, b, c, d) {
5685
+ const rx = b[0] - a[0];
5686
+ const ry = b[1] - a[1];
5687
+ const sx = d[0] - c[0];
5688
+ const sy = d[1] - c[1];
5689
+ const den = rx * sy - ry * sx;
5690
+ if (Math.abs(den) < 1e-12) return null;
5691
+ const t = ((c[0] - a[0]) * sy - (c[1] - a[1]) * sx) / den;
5692
+ const u = ((c[0] - a[0]) * ry - (c[1] - a[1]) * rx) / den;
5693
+ return t > 1e-9 && t <= 1 && u >= 0 && u <= 1 ? t : null;
5694
+ }
5695
+ function vectorBevelFaces(path, params, fillRule = "nonzero") {
5696
+ const width = Math.max(0, params.width);
5697
+ if (!path.length || width <= 0) return [];
5698
+ const rings = vectorPathRings(path, 0.25).filter((r) => r.length >= 3);
5699
+ const lr = params.lightAngle * Math.PI / 180;
5700
+ const light = [Math.cos(lr), Math.sin(lr)];
5701
+ const strength = Math.min(1, Math.max(0, params.shading / 100));
5702
+ const faces = [];
5703
+ for (const ring of rings) {
5704
+ const n = ring.length;
5705
+ let best = 0;
5706
+ let bestLen = -1;
5707
+ for (let i = 0; i < n; i++) {
5708
+ const q = ring[(i + 1) % n];
5709
+ const l = Math.hypot(q[0] - ring[i][0], q[1] - ring[i][1]);
5710
+ if (l > bestLen) [best, bestLen] = [i, l];
5711
+ }
5712
+ if (bestLen < 1e-9) continue;
5713
+ const bp = ring[best];
5714
+ const bq = ring[(best + 1) % n];
5715
+ const left2 = [-(bq[1] - bp[1]) / bestLen, (bq[0] - bp[0]) / bestLen];
5716
+ const probe = Math.min(bestLen / 4, 1e-3 * Math.max(1, bestLen));
5717
+ const sign = _chunkBJTCSLF6cjs.pointInRings.call(void 0, [(bp[0] + bq[0]) / 2 + left2[0] * probe, (bp[1] + bq[1]) / 2 + left2[1] * probe], rings, fillRule) ? 1 : -1;
5718
+ const normals = ring.map((p, i) => {
5719
+ const q = ring[(i + 1) % n];
5720
+ const l = Math.hypot(q[0] - p[0], q[1] - p[1]);
5721
+ return l < 1e-9 ? null : [-(q[1] - p[1]) / l * sign, (q[0] - p[0]) / l * sign];
5722
+ });
5723
+ const normalAt = (i, step) => {
5724
+ for (let k = 0; k < n; k++) {
5725
+ const v2 = normals[((i + step * k) % n + n) % n];
5726
+ if (v2) return v2;
5727
+ }
5728
+ return [0, 0];
5729
+ };
5730
+ const inset = ring.map((p, i) => {
5731
+ const a = normalAt(i - 1, -1);
5732
+ const b = normalAt(i, 1);
5733
+ let bx = a[0] + b[0];
5734
+ let by = a[1] + b[1];
5735
+ const bl = Math.hypot(bx, by);
5736
+ if (bl < 1e-9) [bx, by] = [b[0], b[1]];
5737
+ else [bx, by] = [bx / bl, by / bl];
5738
+ const cos = bx * b[0] + by * b[1];
5739
+ let len2 = width / Math.max(cos, 1 / MITER_LIMIT);
5740
+ const end = [p[0] + bx * len2, p[1] + by * len2];
5741
+ let t = 1;
5742
+ for (const other of rings) {
5743
+ const m = other.length;
5744
+ for (let j = 0; j < m; j++) {
5745
+ const c = other[j];
5746
+ const d = other[(j + 1) % m];
5747
+ if (c === p || d === p) continue;
5748
+ const hit = crossing2(p, end, c, d);
5749
+ if (hit !== null && hit < t) t = hit;
5750
+ }
5751
+ }
5752
+ if (t < 1) len2 *= t / 2;
5753
+ return [p[0] + bx * len2, p[1] + by * len2];
5754
+ });
5755
+ for (let i = 0; i < n; i++) {
5756
+ const nrm = normals[i];
5757
+ if (!nrm) continue;
5758
+ const j = (i + 1) % n;
5759
+ const shade = (-nrm[0] * light[0] - nrm[1] * light[1]) * strength;
5760
+ faces.push({
5761
+ shade,
5762
+ path: [
5763
+ { type: "M", x: ring[i][0], y: ring[i][1] },
5764
+ { type: "L", x: ring[j][0], y: ring[j][1] },
5765
+ { type: "L", x: inset[j][0], y: inset[j][1] },
5766
+ { type: "L", x: inset[i][0], y: inset[i][1] },
5767
+ { type: "Z" }
5768
+ ]
5769
+ });
5770
+ }
5771
+ }
5772
+ return faces;
5773
+ }
5774
+
5553
5775
  // src/geom/warp.ts
5554
5776
  var WARP_STYLES = [
5555
5777
  "arc",
@@ -6269,7 +6491,9 @@ var VECTOR_EFFECT_DEFAULTS = {
6269
6491
  },
6270
6492
  envelope: { style: "arc", bend: 50, horizontal: 0, vertical: 0, orientation: "horizontal", rows: 2, columns: 2, mesh: null },
6271
6493
  contour: { direction: "inside", steps: 4, offset: 6, join: "round", miterLimit: 4, fillColor: "#ffffff", strokeColor: null, acceleration: 0 },
6272
- blockShadow: { angle: 45, distance: 20, color: "#1e293b", opacity: 100, endOpacity: 100 }
6494
+ blockShadow: { angle: 45, distance: 20, color: "#1e293b", opacity: 100, endOpacity: 100 },
6495
+ extrude: { mode: "parallel", angle: 45, depth: 30, vanishingPoint: { x: 0, y: -300 }, toward: 30, color: null, lightAngle: -135, shading: 60 },
6496
+ bevel: { width: 8, lightAngle: -135, shading: 60, color: null }
6273
6497
  };
6274
6498
  var VECTOR_EFFECT_LABELS = {
6275
6499
  trim: "Trim Paths",
@@ -6283,7 +6507,9 @@ var VECTOR_EFFECT_LABELS = {
6283
6507
  repeater: "Repeater",
6284
6508
  envelope: "Envelope",
6285
6509
  contour: "Contour",
6286
- blockShadow: "Block Shadow"
6510
+ blockShadow: "Block Shadow",
6511
+ extrude: "Extrude",
6512
+ bevel: "Bevel"
6287
6513
  };
6288
6514
  var VECTOR_EFFECT_PARAM_SPECS = {
6289
6515
  trim: [
@@ -6385,6 +6611,30 @@ var VECTOR_EFFECT_PARAM_SPECS = {
6385
6611
  { key: "opacity", label: "Opacity %", kind: "number", min: 0, max: 100, step: 1, slider: true },
6386
6612
  { key: "endOpacity", label: "End opacity %", kind: "number", min: 0, max: 100, step: 1, slider: true }
6387
6613
  ],
6614
+ extrude: [
6615
+ {
6616
+ key: "mode",
6617
+ label: "Mode",
6618
+ kind: "select",
6619
+ options: [
6620
+ { value: "parallel", label: "Parallel" },
6621
+ { value: "perspective", label: "Perspective" }
6622
+ ]
6623
+ },
6624
+ { key: "angle", label: "Angle \xB0", kind: "number", min: -360, max: 360, step: 1, slider: true },
6625
+ { key: "depth", label: "Depth", kind: "number", min: 0, max: 2e3, step: 1, slider: true },
6626
+ { key: "vanishingPoint", label: "Vanishing point", kind: "vec2", step: 1 },
6627
+ { key: "toward", label: "Toward VP %", kind: "number", min: 0, max: 100, step: 1, slider: true },
6628
+ { key: "color", label: "Colour", kind: "color" },
6629
+ { key: "lightAngle", label: "Light \xB0", kind: "number", min: -360, max: 360, step: 1, slider: true },
6630
+ { key: "shading", label: "Shading %", kind: "number", min: 0, max: 100, step: 1, slider: true }
6631
+ ],
6632
+ bevel: [
6633
+ { key: "width", label: "Width", kind: "number", min: 0, max: 500, step: 0.5, slider: true },
6634
+ { key: "lightAngle", label: "Light \xB0", kind: "number", min: -360, max: 360, step: 1, slider: true },
6635
+ { key: "shading", label: "Shading %", kind: "number", min: 0, max: 100, step: 1, slider: true },
6636
+ { key: "color", label: "Colour", kind: "color" }
6637
+ ],
6388
6638
  repeater: [
6389
6639
  { key: "copies", label: "Copies", kind: "number", min: 0, max: 50, step: 0.1, slider: true },
6390
6640
  { key: "offset", label: "Offset", kind: "number", min: -10, max: 10, step: 0.1, slider: true },
@@ -6468,7 +6718,7 @@ function normalizeVectorEffectParams(type, params, base) {
6468
6718
  if (!defaults) return null;
6469
6719
  const out = { ...defaults, ..._nullishCoalesce(base, () => ( {})) };
6470
6720
  for (const spec of VECTOR_EFFECT_PARAM_SPECS[type]) {
6471
- const v2 = _optionalChain([params, 'optionalAccess', _143 => _143[spec.key]]);
6721
+ const v2 = _optionalChain([params, 'optionalAccess', _148 => _148[spec.key]]);
6472
6722
  if (v2 === void 0) continue;
6473
6723
  if (spec.kind === "number" && typeof v2 === "number" && Number.isFinite(v2)) out[spec.key] = Math.min(_nullishCoalesce(spec.max, () => ( Infinity)), Math.max(_nullishCoalesce(spec.min, () => ( -Infinity)), v2));
6474
6724
  else if (spec.kind === "boolean" && typeof v2 === "boolean") out[spec.key] = v2;
@@ -6480,7 +6730,7 @@ function normalizeVectorEffectParams(type, params, base) {
6480
6730
  const o = out;
6481
6731
  o.rows = Math.round(o.rows);
6482
6732
  o.columns = Math.round(o.columns);
6483
- const given = _optionalChain([params, 'optionalAccess', _144 => _144.mesh]);
6733
+ const given = _optionalChain([params, 'optionalAccess', _149 => _149.mesh]);
6484
6734
  let mesh = given !== void 0 ? isValidWarpMesh(given) ? cloneMesh(given) : null : o.mesh;
6485
6735
  if (o.style !== "mesh") mesh = null;
6486
6736
  if (mesh && given !== void 0) {
@@ -6497,10 +6747,10 @@ function createVectorEffect(type, id, params) {
6497
6747
  }
6498
6748
  var isEnabled = (e) => e.enabled !== false && !!VECTOR_EFFECT_DEFAULTS[e.type];
6499
6749
  function activeVectorEffects(node) {
6500
- return _nullishCoalesce(_optionalChain([node, 'access', _145 => _145.effects, 'optionalAccess', _146 => _146.filter, 'call', _147 => _147(isEnabled)]), () => ( []));
6750
+ return _nullishCoalesce(_optionalChain([node, 'access', _150 => _150.effects, 'optionalAccess', _151 => _151.filter, 'call', _152 => _152(isEnabled)]), () => ( []));
6501
6751
  }
6502
6752
  function hasOwnVectorAppearance(node) {
6503
- return node.type === "text" || node.type === "instance" || node.type === "group" && !!node.liveBoolean || isVectorFrame(node) || isVectorSymmetryGroup(node) || !!_optionalChain([node, 'access', _148 => _148.effects, 'optionalAccess', _149 => _149.some, 'call', _150 => _150(isEnabled)]);
6753
+ return node.type === "text" || node.type === "instance" || node.type === "group" && !!node.liveBoolean || isVectorFrame(node) || isVectorSymmetryGroup(node) || !!_optionalChain([node, 'access', _153 => _153.effects, 'optionalAccess', _154 => _154.some, 'call', _155 => _155(isEnabled)]);
6504
6754
  }
6505
6755
  var liveCache = /* @__PURE__ */ new WeakMap();
6506
6756
  function hasVectorAppearance(node) {
@@ -6512,7 +6762,7 @@ function hasVectorAppearance(node) {
6512
6762
  return v2;
6513
6763
  }
6514
6764
  function isVectorLiveBoolean(node) {
6515
- return _optionalChain([node, 'optionalAccess', _151 => _151.type]) === "group" && !!node.liveBoolean;
6765
+ return _optionalChain([node, 'optionalAccess', _156 => _156.type]) === "group" && !!node.liveBoolean;
6516
6766
  }
6517
6767
  function vectorOperandOperation(group, child) {
6518
6768
  return _nullishCoalesce(_nullishCoalesce(child.booleanOperation, () => ( group.liveBoolean)), () => ( "union"));
@@ -6629,7 +6879,7 @@ var compareOrder = (a, b) => {
6629
6879
  for (let i = 0; i < n; i++) if (a[i] !== b[i]) return a[i] - b[i];
6630
6880
  return a.length - b.length;
6631
6881
  };
6632
- var add3 = (a, b) => ({ x: a.x + (_nullishCoalesce(_optionalChain([b, 'optionalAccess', _152 => _152.x]), () => ( 0))), y: a.y + (_nullishCoalesce(_optionalChain([b, 'optionalAccess', _153 => _153.y]), () => ( 0))) });
6882
+ var add3 = (a, b) => ({ x: a.x + (_nullishCoalesce(_optionalChain([b, 'optionalAccess', _157 => _157.x]), () => ( 0))), y: a.y + (_nullishCoalesce(_optionalChain([b, 'optionalAccess', _158 => _158.y]), () => ( 0))) });
6633
6883
  var mapPaths = (shapes, fn) => {
6634
6884
  const out = fn(shapes.map((s) => s.path));
6635
6885
  return shapes.map((s, i) => ({ ...s, path: _nullishCoalesce(out[i], () => ( [])) }));
@@ -6657,7 +6907,7 @@ function contourShapes(shapes, c) {
6657
6907
  const power = 2 ** (Math.min(100, Math.max(-100, c.acceleration)) / 50);
6658
6908
  for (let k = 1; k <= n; k++) {
6659
6909
  const [path] = offsetPaths([s.path], (outside ? 1 : -1) * step * k, c.join, c.miterLimit, 1, 0);
6660
- if (!_optionalChain([path, 'optionalAccess', _154 => _154.length])) break;
6910
+ if (!_optionalChain([path, 'optionalAccess', _159 => _159.length])) break;
6661
6911
  const t = (k / n) ** power;
6662
6912
  const source = { ...s.source, fill: _nullishCoalesce(blendPaint(s.source.fill, c.fillColor, t), () => ( null)), stroke: _nullishCoalesce(blendPaint(s.source.stroke, c.strokeColor, t), () => ( null)), fills: void 0, strokes: void 0 };
6663
6913
  out.push({ source, path, opacity: s.opacity, order: [outside ? n - k : k, ...s.order] });
@@ -6701,6 +6951,43 @@ function blockShadowShapes(shapes, b) {
6701
6951
  }
6702
6952
  return [...shadows, ...shapes.map((s) => ({ ...s, order: [1, ...s.order] }))];
6703
6953
  }
6954
+ function extrudeShapes(shapes, x) {
6955
+ const out = [];
6956
+ for (const s of shapes) {
6957
+ const base = _nullishCoalesce(_nullishCoalesce(x.color, () => ( vectorPaintSolid(s.source.fill))), () => ( "#808080"));
6958
+ vectorExtrudeFaces(s.path, x).forEach((f, k) => {
6959
+ const color2 = shadeVectorColor(base, f.shade);
6960
+ const source = { ...s.source, fill: color2, stroke: color2, strokeWidth: 0.5, strokeLinejoin: "round", strokeAlign: void 0, fills: void 0, strokes: void 0, fillRule: "nonzero", startArrow: void 0, endArrow: void 0, strokeDasharray: void 0, strokeWidthProfile: void 0, filters: void 0 };
6961
+ out.push({ source, path: f.path, opacity: s.opacity, order: [...s.order, 0, k] });
6962
+ });
6963
+ out.push({ ...s, order: [...s.order, 1] });
6964
+ }
6965
+ return out;
6966
+ }
6967
+ function bevelShapes(shapes, b) {
6968
+ const out = [];
6969
+ for (const s of shapes) {
6970
+ const fillRule = s.source.fillRule === "evenodd" ? "evenodd" : "nonzero";
6971
+ const faces = vectorBevelFaces(s.path, b, fillRule);
6972
+ if (!faces.length) {
6973
+ out.push(s);
6974
+ continue;
6975
+ }
6976
+ const base = _nullishCoalesce(_nullishCoalesce(b.color, () => ( vectorPaintSolid(s.source.fill))), () => ( "#808080"));
6977
+ const fillOnly = { ...s.source, stroke: null, strokes: void 0 };
6978
+ out.push({ ...s, source: fillOnly, order: [...s.order, 0] });
6979
+ faces.forEach((f, k) => {
6980
+ const color2 = shadeVectorColor(base, f.shade);
6981
+ const source = { ...s.source, fill: color2, stroke: color2, strokeWidth: 0.5, strokeLinejoin: "round", strokeAlign: void 0, fills: void 0, strokes: void 0, fillRule: "nonzero", startArrow: void 0, endArrow: void 0, strokeDasharray: void 0, strokeWidthProfile: void 0, filters: void 0 };
6982
+ out.push({ source, path: f.path, opacity: s.opacity, order: [...s.order, 1, k] });
6983
+ });
6984
+ const [middle] = offsetPaths([s.path], -b.width, "miter", 4, 1, 0);
6985
+ if (_optionalChain([middle, 'optionalAccess', _160 => _160.length])) out.push({ ...s, source: fillOnly, path: middle, order: [...s.order, 2] });
6986
+ const hasStroke = _optionalChain([s, 'access', _161 => _161.source, 'access', _162 => _162.strokes, 'optionalAccess', _163 => _163.length]) || s.source.stroke != null && s.source.stroke !== "none";
6987
+ if (hasStroke) out.push({ ...s, source: { ...s.source, fill: null, fills: void 0 }, order: [...s.order, 3] });
6988
+ }
6989
+ return out;
6990
+ }
6704
6991
  function applyVectorEffects(shapes, effects) {
6705
6992
  let list = shapes.slice();
6706
6993
  for (const e of _nullishCoalesce(effects, () => ( []))) {
@@ -6747,6 +7034,12 @@ function applyVectorEffects(shapes, effects) {
6747
7034
  case "blockShadow":
6748
7035
  list = blockShadowShapes(list, e.params);
6749
7036
  break;
7037
+ case "extrude":
7038
+ list = extrudeShapes(list, e.params);
7039
+ break;
7040
+ case "bevel":
7041
+ list = bevelShapes(list, e.params);
7042
+ break;
6750
7043
  case "repeater": {
6751
7044
  const r = e.params;
6752
7045
  const copies = repeatPaths(
@@ -6823,10 +7116,10 @@ function vectorEffectInputBounds(node, effectId) {
6823
7116
  return paths ? pathsBounds(paths) : null;
6824
7117
  }
6825
7118
  function vectorNodeEnvelope(node) {
6826
- return _nullishCoalesce(_optionalChain([node, 'optionalAccess', _155 => _155.effects, 'optionalAccess', _156 => _156.find, 'call', _157 => _157((e) => e.type === "envelope" && e.enabled !== false)]), () => ( null));
7119
+ return _nullishCoalesce(_optionalChain([node, 'optionalAccess', _164 => _164.effects, 'optionalAccess', _165 => _165.find, 'call', _166 => _166((e) => e.type === "envelope" && e.enabled !== false)]), () => ( null));
6827
7120
  }
6828
7121
  function vectorEnvelopeFrame(node, effectId) {
6829
- const e = effectId ? _optionalChain([node, 'access', _158 => _158.effects, 'optionalAccess', _159 => _159.find, 'call', _160 => _160((x) => x.id === effectId)]) : vectorNodeEnvelope(node);
7122
+ const e = effectId ? _optionalChain([node, 'access', _167 => _167.effects, 'optionalAccess', _168 => _168.find, 'call', _169 => _169((x) => x.id === effectId)]) : vectorNodeEnvelope(node);
6830
7123
  if (!e || e.type !== "envelope") return null;
6831
7124
  const bounds = vectorEffectInputBounds(node, e.id);
6832
7125
  if (!bounds || !(bounds.width > 0 && bounds.height > 0)) return null;
@@ -6887,7 +7180,7 @@ function placement(node) {
6887
7180
  ...node.blendStep ? { blendStep: true } : {},
6888
7181
  ...node.booleanOperation ? { booleanOperation: node.booleanOperation } : {},
6889
7182
  ...node.blendMode ? { blendMode: node.blendMode } : {},
6890
- ..._optionalChain([node, 'access', _161 => _161.filters, 'optionalAccess', _162 => _162.length]) ? { filters: node.filters } : {}
7183
+ ..._optionalChain([node, 'access', _170 => _170.filters, 'optionalAccess', _171 => _171.length]) ? { filters: node.filters } : {}
6891
7184
  };
6892
7185
  }
6893
7186
  function vectorAppearanceNodes(node) {
@@ -7009,7 +7302,7 @@ function vectorEnteredGroups(nodes, ids) {
7009
7302
  // src/vector/connectors.ts
7010
7303
  var SIDES = ["top", "right", "bottom", "left", "center"];
7011
7304
  function isVectorConnector(node) {
7012
- return _optionalChain([node, 'optionalAccess', _163 => _163.type]) === "path" && !!node.connector;
7305
+ return _optionalChain([node, 'optionalAccess', _172 => _172.type]) === "path" && !!node.connector;
7013
7306
  }
7014
7307
  function vectorConnectionSites(nodes, id) {
7015
7308
  const node = findVectorNode(nodes, id);
@@ -7066,7 +7359,7 @@ function facingSite(sites, toward) {
7066
7359
  }
7067
7360
  function storedEnds(node, world) {
7068
7361
  const sp = node.subpaths[0];
7069
- if (!_optionalChain([sp, 'optionalAccess', _164 => _164.anchors, 'access', _165 => _165.length])) return null;
7362
+ if (!_optionalChain([sp, 'optionalAccess', _173 => _173.anchors, 'access', _174 => _174.length])) return null;
7070
7363
  const a = sp.anchors[0];
7071
7364
  const b = sp.anchors[sp.anchors.length - 1];
7072
7365
  return [applyMatrix(world, a), applyMatrix(world, b)];
@@ -7173,8 +7466,8 @@ function routeVectorConnector(nodes, id) {
7173
7466
  }));
7174
7467
  return {
7175
7468
  subpaths: [{ closed: false, anchors: local }],
7176
- startSide: _nullishCoalesce(_optionalChain([s, 'optionalAccess', _166 => _166.side]), () => ( null)),
7177
- endSide: _nullishCoalesce(_optionalChain([e, 'optionalAccess', _167 => _167.side]), () => ( null)),
7469
+ startSide: _nullishCoalesce(_optionalChain([s, 'optionalAccess', _175 => _175.side]), () => ( null)),
7470
+ endSide: _nullishCoalesce(_optionalChain([e, 'optionalAccess', _176 => _176.side]), () => ( null)),
7178
7471
  dropped: { start: !!startGlue && !s, end: !!endGlue && !e }
7179
7472
  };
7180
7473
  }
@@ -7186,7 +7479,7 @@ function sameSubpaths(a, b) {
7186
7479
  const o = b[i];
7187
7480
  return sp.closed === o.closed && sp.anchors.length === o.anchors.length && sp.anchors.every((p, k) => {
7188
7481
  const q = o.anchors[k];
7189
- return samePoint(p, q) && samePoint(p.in, q.in) && samePoint(p.out, q.out) && (_nullishCoalesce(_optionalChain([p, 'access', _168 => _168.corner, 'optionalAccess', _169 => _169.radius]), () => ( 0))) === (_nullishCoalesce(_optionalChain([q, 'access', _170 => _170.corner, 'optionalAccess', _171 => _171.radius]), () => ( 0)));
7482
+ return samePoint(p, q) && samePoint(p.in, q.in) && samePoint(p.out, q.out) && (_nullishCoalesce(_optionalChain([p, 'access', _177 => _177.corner, 'optionalAccess', _178 => _178.radius]), () => ( 0))) === (_nullishCoalesce(_optionalChain([q, 'access', _179 => _179.corner, 'optionalAccess', _180 => _180.radius]), () => ( 0)));
7190
7483
  });
7191
7484
  });
7192
7485
  }
@@ -7465,7 +7758,7 @@ function applyVectorCornersAttribute(subpaths, value) {
7465
7758
  for (const item of value.trim().split(/\s+/)) {
7466
7759
  const m = /^(\d+)\.(\d+):([\d.eE+-]+)(?::([a-z]+))?$/.exec(item);
7467
7760
  if (!m) continue;
7468
- const a = _optionalChain([subpaths, 'access', _172 => _172[+m[1]], 'optionalAccess', _173 => _173.anchors, 'access', _174 => _174[+m[2]]]);
7761
+ const a = _optionalChain([subpaths, 'access', _181 => _181[+m[1]], 'optionalAccess', _182 => _182.anchors, 'access', _183 => _183[+m[2]]]);
7469
7762
  const radius = parseFloat(m[3]);
7470
7763
  if (!a || !(radius > 0)) continue;
7471
7764
  const kind = VECTOR_CORNER_KINDS.includes(m[4]) ? m[4] : void 0;
@@ -7490,7 +7783,7 @@ function vectorPaintToSvg(paint, gradientId, options = {}) {
7490
7783
  const area2 = bounds2 ? { x: bounds2.x - reach2, y: bounds2.y - reach2, width: bounds2.width + 2 * reach2, height: bounds2.height + 2 * reach2 } : null;
7491
7784
  const key2 = `${gradientId}|${_nullishCoalesce(options.role, () => ( "fill"))}|${_nullishCoalesce(options.precision, () => ( 3))}|${area2 ? [area2.x, area2.y, area2.width, area2.height].join(",") : ""}`;
7492
7785
  let byKey2 = paintCache.get(paint);
7493
- const hit = _optionalChain([byKey2, 'optionalAccess', _175 => _175.get, 'call', _176 => _176(key2)]);
7786
+ const hit = _optionalChain([byKey2, 'optionalAccess', _184 => _184.get, 'call', _185 => _185(key2)]);
7494
7787
  if (hit) return { value: `url(#${gradientId})`, defs: hit };
7495
7788
  const defs2 = vectorShadedSvgDefs(paint, gradientId, { bounds: bounds2, area: area2, precision: _nullishCoalesce(options.precision, () => ( 3)) });
7496
7789
  if (!byKey2) paintCache.set(paint, byKey2 = /* @__PURE__ */ new Map());
@@ -7502,7 +7795,7 @@ function vectorPaintToSvg(paint, gradientId, options = {}) {
7502
7795
  const precision = _nullishCoalesce(options.precision, () => ( 3));
7503
7796
  const key = `${gradientId}|${role}|${precision}`;
7504
7797
  const owner = _nullishCoalesce(options.node, () => ( paint));
7505
- const cached = _optionalChain([paintCache, 'access', _177 => _177.get, 'call', _178 => _178(owner), 'optionalAccess', _179 => _179.get, 'call', _180 => _180(key)]);
7798
+ const cached = _optionalChain([paintCache, 'access', _186 => _186.get, 'call', _187 => _187(owner), 'optionalAccess', _188 => _188.get, 'call', _189 => _189(key)]);
7506
7799
  if (cached && (!options.node || (role === "fill" ? options.node.fill : options.node.stroke) === paint)) return { value: `url(#${gradientId})`, defs: cached };
7507
7800
  const node = options.node;
7508
7801
  const bounds = node ? vectorPathLocalBounds(node) : null;
@@ -7556,7 +7849,7 @@ function vectorNodeLocalPaintBounds(node) {
7556
7849
  }
7557
7850
  var filterCache = /* @__PURE__ */ new WeakMap();
7558
7851
  function vectorNodeFilterSvg(node, id) {
7559
- if (!_optionalChain([node, 'access', _181 => _181.filters, 'optionalAccess', _182 => _182.length])) return null;
7852
+ if (!_optionalChain([node, 'access', _190 => _190.filters, 'optionalAccess', _191 => _191.length])) return null;
7560
7853
  const hit = filterCache.get(node);
7561
7854
  if (hit && hit.id === id) return hit.filter;
7562
7855
  const active = activeVectorFilters(node);
@@ -7640,7 +7933,7 @@ function vectorDocumentToSvg(doc, options = {}) {
7640
7933
  if (node.type === "path" && node.connector) out2 += ` data-vector-connector="${escapeAttr2(JSON.stringify(node.connector))}"`;
7641
7934
  const blend = vectorBlendModeCss(node.blendMode);
7642
7935
  if (blend) out2 += ` style="mix-blend-mode:${blend}"`;
7643
- if (_optionalChain([node, 'access', _183 => _183.filters, 'optionalAccess', _184 => _184.length])) {
7936
+ if (_optionalChain([node, 'access', _192 => _192.filters, 'optionalAccess', _193 => _193.length])) {
7644
7937
  const filter = vectorNodeFilterSvg(node, `${prefix}filter-${node.id}`);
7645
7938
  const data = ` data-vector-filters="${escapeAttr2(JSON.stringify(node.filters))}"`;
7646
7939
  if (filter) {
@@ -7687,7 +7980,7 @@ function vectorDocumentToSvg(doc, options = {}) {
7687
7980
  let out2 = ` stroke="${escapeAttr2(strokeValue)}" stroke-width="${num3(width)}"`;
7688
7981
  if (node.strokeLinecap && node.strokeLinecap !== "butt") out2 += ` stroke-linecap="${node.strokeLinecap}"`;
7689
7982
  if (node.strokeLinejoin && node.strokeLinejoin !== "miter") out2 += ` stroke-linejoin="${node.strokeLinejoin}"`;
7690
- if (_optionalChain([node, 'access', _185 => _185.strokeDasharray, 'optionalAccess', _186 => _186.length])) out2 += ` stroke-dasharray="${node.strokeDasharray.map(num3).join(" ")}"`;
7983
+ if (_optionalChain([node, 'access', _194 => _194.strokeDasharray, 'optionalAccess', _195 => _195.length])) out2 += ` stroke-dasharray="${node.strokeDasharray.map(num3).join(" ")}"`;
7691
7984
  return out2;
7692
7985
  };
7693
7986
  const liveCorners = (node) => {
@@ -7730,7 +8023,7 @@ function vectorDocumentToSvg(doc, options = {}) {
7730
8023
  };
7731
8024
  const emit2 = (node, depth) => {
7732
8025
  if (node.visible === false && !options.includeHidden) return;
7733
- const wrappers = _nullishCoalesce(_optionalChain([options, 'access', _187 => _187.wrap, 'optionalAccess', _188 => _188[node.id]]), () => ( []));
8026
+ const wrappers = _nullishCoalesce(_optionalChain([options, 'access', _196 => _196.wrap, 'optionalAccess', _197 => _197[node.id]]), () => ( []));
7734
8027
  wrappers.forEach((w2, i) => {
7735
8028
  let attrs = w2.id !== void 0 ? ` id="${escapeAttr2(w2.id)}"` : "";
7736
8029
  if (w2.transform) attrs += ` transform="${escapeAttr2(w2.transform)}"`;
@@ -7751,7 +8044,7 @@ function vectorDocumentToSvg(doc, options = {}) {
7751
8044
  };
7752
8045
  const emitMaskGroup = (node, depth) => {
7753
8046
  const [source, ...contents] = node.children;
7754
- const body = _optionalChain([node, 'access', _189 => _189.effects, 'optionalAccess', _190 => _190.length]) && contents.length ? [{ id: `${node.id}~content`, type: "group", effects: node.effects, children: contents }] : contents;
8047
+ const body = _optionalChain([node, 'access', _198 => _198.effects, 'optionalAccess', _199 => _199.length]) && contents.length ? [{ id: `${node.id}~content`, type: "group", effects: node.effects, children: contents }] : contents;
7755
8048
  const settings = { type: node.mask.type, ...node.mask.invert ? { invert: true } : {} };
7756
8049
  lines.push(`${indent(depth)}<g${common(node)} data-vector-mask="${escapeAttr2(JSON.stringify(settings))}">`);
7757
8050
  const mask = vectorMaskRenderData(node, `${prefix}mask-${node.id}`, `${prefix}mask-filter-${node.id}`, precision);
@@ -7768,7 +8061,7 @@ function vectorDocumentToSvg(doc, options = {}) {
7768
8061
  lines.push(`${indent(depth + 1)}<g data-vector-part="mask-source" display="none">`);
7769
8062
  emitNode(source, depth + 2);
7770
8063
  lines.push(`${indent(depth + 1)}</g>`);
7771
- if (_optionalChain([mask, 'optionalAccess', _191 => _191.clip])) {
8064
+ if (_optionalChain([mask, 'optionalAccess', _200 => _200.clip])) {
7772
8065
  defs.push(`<clipPath id="${escapeAttr2(mask.id)}">${mask.clip.map((c) => `<path d="${c.d}" clip-rule="${c.clipRule}"/>`).join("")}</clipPath>`);
7773
8066
  ref = ` clip-path="url(#${escapeAttr2(mask.id)})"`;
7774
8067
  }
@@ -7780,7 +8073,7 @@ function vectorDocumentToSvg(doc, options = {}) {
7780
8073
  };
7781
8074
  const emitTextElement = (node, depth, attrs) => {
7782
8075
  const geometry = vectorTextGeometryNode(node);
7783
- const fields = { text: node.text, font: node.font, ..._optionalChain([node, 'access', _192 => _192.runs, 'optionalAccess', _193 => _193.length]) ? { runs: node.runs } : {}, ...node.paragraph ? { paragraph: node.paragraph } : {}, frame: node.frame, ..._optionalChain([node, 'access', _194 => _194.effects, 'optionalAccess', _195 => _195.length]) ? { effects: node.effects } : {} };
8076
+ const fields = { text: node.text, font: node.font, ..._optionalChain([node, 'access', _201 => _201.runs, 'optionalAccess', _202 => _202.length]) ? { runs: node.runs } : {}, ...node.paragraph ? { paragraph: node.paragraph } : {}, frame: node.frame, ..._optionalChain([node, 'access', _203 => _203.effects, 'optionalAccess', _204 => _204.length]) ? { effects: node.effects } : {} };
7784
8077
  let data = ` data-vector-text="${escapeAttr2(JSON.stringify(fields))}"`;
7785
8078
  if (hasVectorPaintStacks(node)) data += ` data-vector-fills="${escapeAttr2(JSON.stringify(vectorFills(node)))}" data-vector-strokes="${escapeAttr2(JSON.stringify(vectorStrokes(node)))}"`;
7786
8079
  else {
@@ -7822,12 +8115,12 @@ function vectorDocumentToSvg(doc, options = {}) {
7822
8115
  };
7823
8116
  const emitText = (node, depth) => {
7824
8117
  const outlines = vectorTextPaths(node).outlines;
7825
- const effects = !!_optionalChain([node, 'access', _196 => _196.effects, 'optionalAccess', _197 => _197.some, 'call', _198 => _198((e) => e.enabled !== false)]);
8118
+ const effects = !!_optionalChain([node, 'access', _205 => _205.effects, 'optionalAccess', _206 => _206.some, 'call', _207 => _207((e) => e.enabled !== false)]);
7826
8119
  if (!outlines || !effects && options.text !== "outlines") {
7827
8120
  emitTextElement(node, depth, common(node));
7828
8121
  return;
7829
8122
  }
7830
- lines.push(`${indent(depth)}<g${common(node)} data-vector-live="${escapeAttr2(JSON.stringify({ kind: "text", ..._optionalChain([node, 'access', _199 => _199.effects, 'optionalAccess', _200 => _200.length]) ? { effects: node.effects } : {} }))}">`);
8123
+ lines.push(`${indent(depth)}<g${common(node)} data-vector-live="${escapeAttr2(JSON.stringify({ kind: "text", ..._optionalChain([node, 'access', _208 => _208.effects, 'optionalAccess', _209 => _209.length]) ? { effects: node.effects } : {} }))}">`);
7831
8124
  lines.push(`${indent(depth + 1)}<g data-vector-part="appearance">`);
7832
8125
  for (const shape of vectorAppearanceNodes(node)) emit2(shape, depth + 2);
7833
8126
  lines.push(`${indent(depth + 1)}</g>`);
@@ -7841,7 +8134,7 @@ function vectorDocumentToSvg(doc, options = {}) {
7841
8134
  const symbolRef = (symbolId) => {
7842
8135
  const hit = symbolIds.get(symbolId);
7843
8136
  if (hit) return hit;
7844
- const sym2 = _optionalChain([doc, 'access', _201 => _201.symbols, 'optionalAccess', _202 => _202.find, 'call', _203 => _203((x) => x.id === symbolId)]);
8137
+ const sym2 = _optionalChain([doc, 'access', _210 => _210.symbols, 'optionalAccess', _211 => _211.find, 'call', _212 => _212((x) => x.id === symbolId)]);
7845
8138
  if (!sym2) return null;
7846
8139
  const id = `${prefix}symbol-${symbolId}`;
7847
8140
  symbolIds.set(symbolId, id);
@@ -7851,20 +8144,20 @@ function vectorDocumentToSvg(doc, options = {}) {
7851
8144
  };
7852
8145
  const emitInstance = (node, depth) => {
7853
8146
  const data = { symbolId: node.symbolId, ...node.scaleStrokes === false ? { scaleStrokes: false } : {}, ...node.overrides ? { overrides: node.overrides } : {} };
7854
- const exact2 = !node.overrides && node.scaleStrokes !== false && !_optionalChain([node, 'access', _204 => _204.effects, 'optionalAccess', _205 => _205.length]) && !_optionalChain([node, 'access', _206 => _206.filters, 'optionalAccess', _207 => _207.length]);
8147
+ const exact2 = !node.overrides && node.scaleStrokes !== false && !_optionalChain([node, 'access', _213 => _213.effects, 'optionalAccess', _214 => _214.length]) && !_optionalChain([node, 'access', _215 => _215.filters, 'optionalAccess', _216 => _216.length]);
7855
8148
  const ref = symbolRef(node.symbolId);
7856
8149
  if (exact2 && ref) {
7857
8150
  lines.push(`${indent(depth)}<use${common(node)} href="#${escapeAttr2(ref)}" data-vector-instance="${escapeAttr2(JSON.stringify(data))}"/>`);
7858
8151
  return;
7859
8152
  }
7860
- const full = { ...data, ...node.transform ? { transform: node.transform } : {}, ..._optionalChain([node, 'access', _208 => _208.effects, 'optionalAccess', _209 => _209.length]) ? { effects: node.effects } : {} };
8153
+ const full = { ...data, ...node.transform ? { transform: node.transform } : {}, ..._optionalChain([node, 'access', _217 => _217.effects, 'optionalAccess', _218 => _218.length]) ? { effects: node.effects } : {} };
7861
8154
  lines.push(`${indent(depth)}<g data-vector-instance="${escapeAttr2(JSON.stringify(full))}">`);
7862
8155
  emitNode(vectorInstanceDrawn(node), depth + 1);
7863
8156
  lines.push(`${indent(depth)}</g>`);
7864
8157
  };
7865
8158
  const emitFrame = (node, depth) => {
7866
8159
  const f = node.frame;
7867
- const data = { ...f, ..._optionalChain([node, 'access', _210 => _210.effects, 'optionalAccess', _211 => _211.length]) ? { effects: node.effects } : {} };
8160
+ const data = { ...f, ..._optionalChain([node, 'access', _219 => _219.effects, 'optionalAccess', _220 => _220.length]) ? { effects: node.effects } : {} };
7868
8161
  lines.push(`${indent(depth)}<g${common(node)} data-vector-frame="${escapeAttr2(JSON.stringify(data))}">`);
7869
8162
  const rect = vectorFrameRectPath(f);
7870
8163
  if (f.fill !== void 0 && f.fill !== null && f.fill !== "none") {
@@ -7903,7 +8196,7 @@ function vectorDocumentToSvg(doc, options = {}) {
7903
8196
  if (hasOwnVectorAppearance(node)) {
7904
8197
  const live2 = {
7905
8198
  kind: node.type,
7906
- ..._optionalChain([node, 'access', _212 => _212.effects, 'optionalAccess', _213 => _213.length]) ? { effects: node.effects } : {},
8199
+ ..._optionalChain([node, 'access', _221 => _221.effects, 'optionalAccess', _222 => _222.length]) ? { effects: node.effects } : {},
7907
8200
  ...node.type === "group" && node.liveBoolean ? { liveBoolean: node.liveBoolean } : {},
7908
8201
  ...node.type === "group" && node.symmetry ? { symmetry: node.symmetry } : {}
7909
8202
  };
@@ -7954,7 +8247,7 @@ function vectorDocumentToSvg(doc, options = {}) {
7954
8247
  data += ` data-vector-width-profile="${widthProfileToAttribute(profile)}"`;
7955
8248
  if (node.strokeLinecap && node.strokeLinecap !== "butt") data += ` data-vector-stroke-linecap="${node.strokeLinecap}"`;
7956
8249
  if (node.strokeLinejoin && node.strokeLinejoin !== "miter") data += ` data-vector-stroke-linejoin="${node.strokeLinejoin}"`;
7957
- if (_optionalChain([node, 'access', _214 => _214.strokeDasharray, 'optionalAccess', _215 => _215.length])) data += ` data-vector-stroke-dasharray="${node.strokeDasharray.map(num3).join(" ")}"`;
8250
+ if (_optionalChain([node, 'access', _223 => _223.strokeDasharray, 'optionalAccess', _224 => _224.length])) data += ` data-vector-stroke-dasharray="${node.strokeDasharray.map(num3).join(" ")}"`;
7958
8251
  }
7959
8252
  lines.push(`${indent(depth)}<g${common(node)}${data}>`);
7960
8253
  lines.push(`${indent(depth + 1)}<path data-vector-part="fill" d="${d}"${fillAttrs}${live}/>`);
@@ -8122,7 +8415,7 @@ function attrOrStyle(el, name) {
8122
8415
  return el.attrs[name];
8123
8416
  }
8124
8417
  function urlId(value) {
8125
- return _nullishCoalesce(_optionalChain([/^url\(\s*['"]?#([^'")\s]+)['"]?\s*\)/, 'access', _216 => _216.exec, 'call', _217 => _217((_nullishCoalesce(value, () => ( ""))).trim()), 'optionalAccess', _218 => _218[1]]), () => ( null));
8418
+ return _nullishCoalesce(_optionalChain([/^url\(\s*['"]?#([^'")\s]+)['"]?\s*\)/, 'access', _225 => _225.exec, 'call', _226 => _226((_nullishCoalesce(value, () => ( ""))).trim()), 'optionalAccess', _227 => _227[1]]), () => ( null));
8126
8419
  }
8127
8420
  function clipRulesAsFillRules(el) {
8128
8421
  const attrs = { ...el.attrs };
@@ -8187,9 +8480,9 @@ function resolveGradient(id, raw) {
8187
8480
  for (let el = first; el && !chain.includes(el) && chain.length < 32; ) {
8188
8481
  chain.push(el);
8189
8482
  const href = _nullishCoalesce(el.attrs.href, () => ( el.attrs["xlink:href"]));
8190
- el = _optionalChain([href, 'optionalAccess', _219 => _219.startsWith, 'call', _220 => _220("#")]) ? raw.get(href.slice(1)) : void 0;
8483
+ el = _optionalChain([href, 'optionalAccess', _228 => _228.startsWith, 'call', _229 => _229("#")]) ? raw.get(href.slice(1)) : void 0;
8191
8484
  }
8192
- const attr = (name) => _optionalChain([chain, 'access', _221 => _221.find, 'call', _222 => _222((el) => el.attrs[name] !== void 0), 'optionalAccess', _223 => _223.attrs, 'access', _224 => _224[name]]);
8485
+ const attr = (name) => _optionalChain([chain, 'access', _230 => _230.find, 'call', _231 => _231((el) => el.attrs[name] !== void 0), 'optionalAccess', _232 => _232.attrs, 'access', _233 => _233[name]]);
8193
8486
  const stops = _nullishCoalesce(chain.map(readStops).find((s) => s.length), () => ( []));
8194
8487
  if (!stops.length) return null;
8195
8488
  const user = attr("gradientUnits") === "userSpaceOnUse";
@@ -8359,7 +8652,7 @@ function parseVectorSvg(svg, options = {}) {
8359
8652
  const stackedPath = (g, _style, m, meta) => {
8360
8653
  const fillEl = g.children.find((c) => c.name === "path" && c.attrs["data-vector-part"] === "fill");
8361
8654
  const subpaths = fillEl ? shapeOf(fillEl) : null;
8362
- if (!_optionalChain([subpaths, 'optionalAccess', _225 => _225.length])) return null;
8655
+ if (!_optionalChain([subpaths, 'optionalAccess', _234 => _234.length])) return null;
8363
8656
  const parse = (v2) => {
8364
8657
  try {
8365
8658
  return v2 ? JSON.parse(v2) : [];
@@ -8378,7 +8671,7 @@ function parseVectorSvg(svg, options = {}) {
8378
8671
  const key = (n) => JSON.stringify([n.subpaths, _nullishCoalesce(n.transform, () => ( null)), _nullishCoalesce(n.opacity, () => ( 1)), n.visible !== false, _nullishCoalesce(n.filters, () => ( null)), _nullishCoalesce(n.blendMode, () => ( "normal")), _nullishCoalesce(n.fillRule, () => ( "nonzero")), _nullishCoalesce(n.booleanOperation, () => ( null))]);
8379
8672
  for (const n of nodes2) {
8380
8673
  const prev = out[out.length - 1];
8381
- if (_optionalChain([prev, 'optionalAccess', _226 => _226.type]) === "path" && n.type === "path" && key(prev) === key(n)) {
8674
+ if (_optionalChain([prev, 'optionalAccess', _235 => _235.type]) === "path" && n.type === "path" && key(prev) === key(n)) {
8382
8675
  const fills = vectorFills(n);
8383
8676
  const strokesBefore = vectorStrokes(prev);
8384
8677
  if (!(fills.length && strokesBefore.length)) {
@@ -8396,7 +8689,7 @@ function parseVectorSvg(svg, options = {}) {
8396
8689
  const part = (name) => g.children.find((c) => c.name === "path" && c.attrs["data-vector-part"] === name);
8397
8690
  const fillEl = part("fill");
8398
8691
  const subpaths = fillEl ? shapeOf(fillEl) : null;
8399
- if (!fillEl || !_optionalChain([subpaths, 'optionalAccess', _227 => _227.length])) return null;
8692
+ if (!fillEl || !_optionalChain([subpaths, 'optionalAccess', _236 => _236.length])) return null;
8400
8693
  const a = g.attrs;
8401
8694
  const fs = readStyle(fillEl, style);
8402
8695
  const strokeEl = part("stroke");
@@ -8433,7 +8726,7 @@ function parseVectorSvg(svg, options = {}) {
8433
8726
  ...profile.length ? { strokeWidthProfile: profile } : {},
8434
8727
  ...keptCap ? { strokeLinecap: keptCap } : {},
8435
8728
  ...keptJoin ? { strokeLinejoin: keptJoin } : {},
8436
- ..._optionalChain([keptDash, 'optionalAccess', _228 => _228.length]) ? { strokeDasharray: keptDash } : {}
8729
+ ..._optionalChain([keptDash, 'optionalAccess', _237 => _237.length]) ? { strokeDasharray: keptDash } : {}
8437
8730
  };
8438
8731
  return placed(node, m);
8439
8732
  };
@@ -8498,8 +8791,8 @@ function parseVectorSvg(svg, options = {}) {
8498
8791
  } else {
8499
8792
  const fill = json2(g.attrs["data-vector-fill"]);
8500
8793
  const stroke = json2(g.attrs["data-vector-stroke"]);
8501
- node.fill = fill == null ? null : _nullishCoalesce(_optionalChain([sanitizeVectorFills, 'call', _229 => _229([{ paint: fill }]), 'access', _230 => _230[0], 'optionalAccess', _231 => _231.paint]), () => ( null));
8502
- node.stroke = stroke == null ? null : _nullishCoalesce(_optionalChain([sanitizeVectorFills, 'call', _232 => _232([{ paint: stroke }]), 'access', _233 => _233[0], 'optionalAccess', _234 => _234.paint]), () => ( null));
8794
+ node.fill = fill == null ? null : _nullishCoalesce(_optionalChain([sanitizeVectorFills, 'call', _238 => _238([{ paint: fill }]), 'access', _239 => _239[0], 'optionalAccess', _240 => _240.paint]), () => ( null));
8795
+ node.stroke = stroke == null ? null : _nullishCoalesce(_optionalChain([sanitizeVectorFills, 'call', _241 => _241([{ paint: stroke }]), 'access', _242 => _242[0], 'optionalAccess', _243 => _243.paint]), () => ( null));
8503
8796
  const settings = json2(g.attrs["data-vector-stroke-settings"]);
8504
8797
  if (settings && typeof settings === "object") {
8505
8798
  const strokes = sanitizeVectorStrokes([{ paint: _nullishCoalesce(node.stroke, () => ( "#000")), ...settings }]);
@@ -8535,8 +8828,8 @@ function parseVectorSvg(svg, options = {}) {
8535
8828
  const anchor = attrOrStyle(el, "text-anchor");
8536
8829
  const first0 = (v2) => _nullishCoalesce(numberList(v2)[0], () => ( 0));
8537
8830
  const tspan = el.children.find((c) => c.name === "tspan");
8538
- const x = el.attrs.x !== void 0 ? first0(el.attrs.x) : first0(_optionalChain([tspan, 'optionalAccess', _235 => _235.attrs, 'access', _236 => _236.x]));
8539
- const y = el.attrs.y !== void 0 ? first0(el.attrs.y) : first0(_optionalChain([tspan, 'optionalAccess', _237 => _237.attrs, 'access', _238 => _238.y]));
8831
+ const x = el.attrs.x !== void 0 ? first0(el.attrs.x) : first0(_optionalChain([tspan, 'optionalAccess', _244 => _244.attrs, 'access', _245 => _245.x]));
8832
+ const y = el.attrs.y !== void 0 ? first0(el.attrs.y) : first0(_optionalChain([tspan, 'optionalAccess', _246 => _246.attrs, 'access', _247 => _247.y]));
8540
8833
  const fillValue = _nullishCoalesce(attrOrStyle(el, "fill"), () => ( style.fill));
8541
8834
  let node = {
8542
8835
  id: idFor(el),
@@ -8567,12 +8860,12 @@ function parseVectorSvg(svg, options = {}) {
8567
8860
  if (symbolOfElement.has(el)) return symbolOfElement.get(el);
8568
8861
  symbolOfElement.set(el, null);
8569
8862
  const own = json2(el.attrs["data-vector-symbol"]);
8570
- let id = typeof _optionalChain([own, 'optionalAccess', _239 => _239.id]) === "string" && own.id ? own.id : _nullishCoalesce(el.attrs.id, () => ( createId()));
8863
+ let id = typeof _optionalChain([own, 'optionalAccess', _248 => _248.id]) === "string" && own.id ? own.id : _nullishCoalesce(el.attrs.id, () => ( createId()));
8571
8864
  while (usedSymbolIds.has(id)) id = `${id}-${usedSymbolIds.size}`;
8572
8865
  usedSymbolIds.add(id);
8573
8866
  const style = readStyle(el, rootStyle);
8574
8867
  const nodes2 = el.name === "symbol" ? visit2(el, style, IDENTITY_MATRIX) : visitOne({ ...el, attrs: { ...el.attrs, transform: "" } }, rootStyle, parseSvgTransform(el.attrs.transform));
8575
- symbols.push({ id, name: typeof _optionalChain([own, 'optionalAccess', _240 => _240.name]) === "string" && own.name ? own.name : _nullishCoalesce(el.attrs.id, () => ( "Symbol")), nodes: nodes2 });
8868
+ symbols.push({ id, name: typeof _optionalChain([own, 'optionalAccess', _249 => _249.name]) === "string" && own.name ? own.name : _nullishCoalesce(el.attrs.id, () => ( "Symbol")), nodes: nodes2 });
8576
8869
  symbolOfElement.set(el, id);
8577
8870
  return id;
8578
8871
  };
@@ -8584,13 +8877,13 @@ function parseVectorSvg(svg, options = {}) {
8584
8877
  if (!symbolId) return null;
8585
8878
  const own = json2(el.attrs["data-vector-instance"]);
8586
8879
  const place2 = multiplyMatrices(translateMatrix(length(el.attrs.x), length(el.attrs.y)), m);
8587
- const node = { id: idFor(el), type: "instance", ...meta, symbolId, ..._optionalChain([own, 'optionalAccess', _241 => _241.scaleStrokes]) === false ? { scaleStrokes: false } : {}, ..._optionalChain([own, 'optionalAccess', _242 => _242.overrides]) ? { overrides: own.overrides } : {} };
8880
+ const node = { id: idFor(el), type: "instance", ...meta, symbolId, ..._optionalChain([own, 'optionalAccess', _250 => _250.scaleStrokes]) === false ? { scaleStrokes: false } : {}, ..._optionalChain([own, 'optionalAccess', _251 => _251.overrides]) ? { overrides: own.overrides } : {} };
8588
8881
  return isIdentityMatrix(place2) ? node : { ...node, transform: place2 };
8589
8882
  };
8590
8883
  const ownInstance = (g, m, meta) => {
8591
8884
  const raw = json2(g.attrs["data-vector-instance"]);
8592
8885
  if (!raw || typeof raw.symbolId !== "string") return null;
8593
- const sym2 = [...byId.values()].find((e) => e.name === "symbol" && _optionalChain([json2, 'call', _243 => _243(e.attrs["data-vector-symbol"]), 'optionalAccess', _244 => _244.id]) === raw.symbolId);
8886
+ const sym2 = [...byId.values()].find((e) => e.name === "symbol" && _optionalChain([json2, 'call', _252 => _252(e.attrs["data-vector-symbol"]), 'optionalAccess', _253 => _253.id]) === raw.symbolId);
8594
8887
  const symbolId = sym2 ? symbolFor(sym2) : raw.symbolId;
8595
8888
  if (!symbolId) return null;
8596
8889
  const t = Array.isArray(raw.transform) && raw.transform.length === 6 && raw.transform.every(Number.isFinite) ? raw.transform : IDENTITY_MATRIX;
@@ -8598,7 +8891,7 @@ function parseVectorSvg(svg, options = {}) {
8598
8891
  const drawn = g.children.find((c) => c.name === "g");
8599
8892
  const effects = sanitizeVectorEffects(raw.effects);
8600
8893
  const node = {
8601
- id: _nullishCoalesce(_optionalChain([drawn, 'optionalAccess', _245 => _245.attrs, 'access', _246 => _246.id]), () => ( idFor(g))),
8894
+ id: _nullishCoalesce(_optionalChain([drawn, 'optionalAccess', _254 => _254.attrs, 'access', _255 => _255.id]), () => ( idFor(g))),
8602
8895
  type: "instance",
8603
8896
  ...meta,
8604
8897
  symbolId,
@@ -8655,12 +8948,12 @@ function parseVectorSvg(svg, options = {}) {
8655
8948
  const masked = (el, nodes2, m) => {
8656
8949
  let out = nodes2;
8657
8950
  const clipEl = rawMasks.get(_nullishCoalesce(urlId(attrOrStyle(el, "clip-path")), () => ( "")));
8658
- if (_optionalChain([clipEl, 'optionalAccess', _247 => _247.name]) === "clipPath") {
8951
+ if (_optionalChain([clipEl, 'optionalAccess', _256 => _256.name]) === "clipPath") {
8659
8952
  const source = maskNode(clipEl, m, out, clipEl.attrs.clipPathUnits);
8660
8953
  if (source) out = [{ id: idFor({ name: "g", attrs: {}, children: [] }), type: "group", name: "Clip Group", mask: { type: "clip" }, children: [source, ...out] }];
8661
8954
  }
8662
8955
  const maskEl = rawMasks.get(_nullishCoalesce(urlId(attrOrStyle(el, "mask")), () => ( "")));
8663
- if (_optionalChain([maskEl, 'optionalAccess', _248 => _248.name]) === "mask") {
8956
+ if (_optionalChain([maskEl, 'optionalAccess', _257 => _257.name]) === "mask") {
8664
8957
  const source = maskNode(maskEl, m, out, maskEl.attrs.maskContentUnits);
8665
8958
  const type = attrOrStyle(maskEl, "mask-type") === "alpha" ? "alpha" : "luminance";
8666
8959
  if (source) out = [{ id: idFor({ name: "g", attrs: {}, children: [] }), type: "group", name: "Opacity Mask", mask: { type }, children: [source, ...out] }];
@@ -8682,19 +8975,19 @@ function parseVectorSvg(svg, options = {}) {
8682
8975
  let sourceEl = part("mask-source");
8683
8976
  if (!sourceEl) {
8684
8977
  const el = rawMasks.get(_nullishCoalesce(urlId(maskedEl.attrs.mask), () => ( "")));
8685
- const invert2 = _optionalChain([el, 'optionalAccess', _249 => _249.children, 'access', _250 => _250.find, 'call', _251 => _251((c) => c.name === "g" && c.attrs["data-vector-part"] === "mask-invert")]);
8978
+ const invert2 = _optionalChain([el, 'optionalAccess', _258 => _258.children, 'access', _259 => _259.find, 'call', _260 => _260((c) => c.name === "g" && c.attrs["data-vector-part"] === "mask-invert")]);
8686
8979
  sourceEl = _nullishCoalesce(invert2, () => ( el));
8687
8980
  }
8688
8981
  const source = sourceEl ? visit2(sourceEl, style, m)[0] : void 0;
8689
8982
  let contents = visit2(maskedEl, style, m);
8690
8983
  let effects;
8691
8984
  const wrapper = contents.length === 1 && contents[0].type === "group" && contents[0].id === `${id}~content` ? contents[0] : null;
8692
- if (_optionalChain([wrapper, 'optionalAccess', _252 => _252.type]) === "group") {
8985
+ if (_optionalChain([wrapper, 'optionalAccess', _261 => _261.type]) === "group") {
8693
8986
  effects = _nullishCoalesce(wrapper.effects, () => ( void 0));
8694
8987
  contents = wrapper.children;
8695
8988
  }
8696
8989
  if (!source) return contents.length ? { id, type: "group", ...meta, children: contents } : null;
8697
- return { id, type: "group", ...meta, mask, ..._optionalChain([effects, 'optionalAccess', _253 => _253.length]) ? { effects } : {}, children: [source, ...contents] };
8990
+ return { id, type: "group", ...meta, mask, ..._optionalChain([effects, 'optionalAccess', _262 => _262.length]) ? { effects } : {}, children: [source, ...contents] };
8698
8991
  };
8699
8992
  const frameGroup = (g, style, m, meta) => {
8700
8993
  const raw = parseJson(g.attrs["data-vector-frame"]);
@@ -8706,7 +8999,7 @@ function parseVectorSvg(svg, options = {}) {
8706
8999
  const { rigid, residual } = decomposeRigid(m);
8707
9000
  const r = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, subpathsToBezier(vectorFrameRectPath(frame)), residual));
8708
9001
  const back = invertMatrix(rigid);
8709
- const effects = sanitizeVectorEffects(_optionalChain([raw, 'optionalAccess', _254 => _254.effects]));
9002
+ const effects = sanitizeVectorEffects(_optionalChain([raw, 'optionalAccess', _263 => _263.effects]));
8710
9003
  return {
8711
9004
  id,
8712
9005
  type: "group",
@@ -9170,13 +9463,13 @@ function hitTestVectorNode(node, p, tolerance = 0, parent = IDENTITY_MATRIX, opt
9170
9463
  }
9171
9464
  if (isVectorMaskGroup(node)) {
9172
9465
  const m = multiplyMatrices(nodeMatrix(node), parent);
9173
- const entered = !!_optionalChain([options, 'access', _255 => _255.entered, 'optionalAccess', _256 => _256.has, 'call', _257 => _257(node.id)]);
9466
+ const entered = !!_optionalChain([options, 'access', _264 => _264.entered, 'optionalAccess', _265 => _265.has, 'call', _266 => _266(node.id)]);
9174
9467
  if (!entered && isVectorMaskActive(node) && !vectorMaskContains(node, applyMatrix(invertMatrix(m), p), tolerance)) return false;
9175
9468
  const shown = !entered && hasOwnVectorAppearance(node) ? expandVectorAppearance(node).children : node.children;
9176
9469
  for (let i = shown.length - 1; i >= 1; i--) if (hitTestVectorNode(shown[i], p, tolerance, m, options)) return true;
9177
9470
  return entered && hitTestVectorMaskSource(node, p, tolerance, m, options);
9178
9471
  }
9179
- if (!(node.type === "group" && (!hasOwnVectorAppearance(node) || _optionalChain([options, 'access', _258 => _258.entered, 'optionalAccess', _259 => _259.has, 'call', _260 => _260(node.id)])))) node = expandVectorAppearance(node);
9472
+ if (!(node.type === "group" && (!hasOwnVectorAppearance(node) || _optionalChain([options, 'access', _267 => _267.entered, 'optionalAccess', _268 => _268.has, 'call', _269 => _269(node.id)])))) node = expandVectorAppearance(node);
9180
9473
  if (node.type === "group") {
9181
9474
  const m = multiplyMatrices(nodeMatrix(node), parent);
9182
9475
  return node.children.some((c) => hitTestVectorNode(c, p, tolerance, m, options));
@@ -9188,7 +9481,7 @@ function hitTestVectorNode(node, p, tolerance = 0, parent = IDENTITY_MATRIX, opt
9188
9481
  function hitTestVectorMaskSource(group, p, tolerance, m, options) {
9189
9482
  const source = group.children[0];
9190
9483
  if (source.visible === false) return false;
9191
- if (_optionalChain([group, 'access', _261 => _261.mask, 'optionalAccess', _262 => _262.type]) !== "clip") return hitTestVectorNode(source, p, tolerance, m, options);
9484
+ if (_optionalChain([group, 'access', _270 => _270.mask, 'optionalAccess', _271 => _271.type]) !== "clip") return hitTestVectorNode(source, p, tolerance, m, options);
9192
9485
  const paths = collectPathNodes(source).filter((n) => n.visible !== false);
9193
9486
  const pt2 = [p.x, p.y];
9194
9487
  return paths.some((n) => {
@@ -9237,24 +9530,24 @@ function mapAnchor(a, m) {
9237
9530
  }
9238
9531
  function bakeIntoGeometry(node, m) {
9239
9532
  if (isIdentityMatrix(m)) return node;
9240
- if (_optionalChain([node, 'access', _263 => _263.effects, 'optionalAccess', _264 => _264.length])) node = { ...node, effects: transformVectorEffects(node.effects, m, node) };
9533
+ if (_optionalChain([node, 'access', _272 => _272.effects, 'optionalAccess', _273 => _273.length])) node = { ...node, effects: transformVectorEffects(node.effects, m, node) };
9241
9534
  if (isVectorFrame(node)) return bakeFrame(node, m);
9242
9535
  if (node.type === "group") {
9243
9536
  const group = node;
9244
9537
  const children = group.children.map((c) => transformVectorNode(c, m));
9245
9538
  const sym2 = group.symmetry ? { symmetry: transformVectorSymmetry(group.symmetry, m) } : {};
9246
- const spine = _optionalChain([group, 'access', _265 => _265.blend, 'optionalAccess', _266 => _266.spine]);
9539
+ const spine = _optionalChain([group, 'access', _274 => _274.blend, 'optionalAccess', _275 => _275.spine]);
9247
9540
  if (!spine) return { ...group, ...sym2, children };
9248
9541
  const moved = { closed: spine.closed, anchors: spine.anchors.map((a) => mapAnchor(a, m)) };
9249
9542
  return { ...group, children, blend: { ...group.blend, spine: moved } };
9250
9543
  }
9251
9544
  const path = node.type === "text" ? bakeVectorTextGeometry(node, m) : node;
9252
9545
  const flips = m[0] * m[3] - m[1] * m[2] < 0;
9253
- const mirrored = flips && _optionalChain([path, 'access', _267 => _267.strokeWidthProfile, 'optionalAccess', _268 => _268.length]);
9546
+ const mirrored = flips && _optionalChain([path, 'access', _276 => _276.strokeWidthProfile, 'optionalAccess', _277 => _277.length]);
9254
9547
  const layer = (l) => ({
9255
9548
  ...l,
9256
9549
  ...isVectorGradient(l.paint) || isVectorShadedPaint(l.paint) ? { paint: transformVectorPaint(l.paint, m) } : {},
9257
- ...flips && _optionalChain([l, 'access', _269 => _269.strokeWidthProfile, 'optionalAccess', _270 => _270.length]) ? { strokeWidthProfile: mirrorWidthProfile(l.strokeWidthProfile) } : {}
9550
+ ...flips && _optionalChain([l, 'access', _278 => _278.strokeWidthProfile, 'optionalAccess', _279 => _279.length]) ? { strokeWidthProfile: mirrorWidthProfile(l.strokeWidthProfile) } : {}
9258
9551
  });
9259
9552
  return {
9260
9553
  ...path,
@@ -9489,7 +9782,7 @@ function roundSubpaths(subpaths, precision = 3) {
9489
9782
 
9490
9783
  // src/vector/symmetry.ts
9491
9784
  function isVectorSymmetryGroup(node) {
9492
- return _optionalChain([node, 'optionalAccess', _271 => _271.type]) === "group" && !!node.symmetry && !node.blend && !node.liveBoolean && !node.mask && !node.frame;
9785
+ return _optionalChain([node, 'optionalAccess', _280 => _280.type]) === "group" && !!node.symmetry && !node.blend && !node.liveBoolean && !node.mask && !node.frame;
9493
9786
  }
9494
9787
  var rad = (deg) => deg * Math.PI / 180;
9495
9788
  var exact = (v2) => Math.abs(v2) < 1e-12 ? 0 : v2;
@@ -10036,5 +10329,10 @@ function transformVectorSymmetry(s, m) {
10036
10329
 
10037
10330
 
10038
10331
 
10039
- exports.isVectorMeshGradient = isVectorMeshGradient; exports.isVectorFreeformGradient = isVectorFreeformGradient; exports.isVectorShadedPaint = isVectorShadedPaint; exports.vectorRgbaToCss = vectorRgbaToCss; exports.VECTOR_MESH_MAX = VECTOR_MESH_MAX; exports.createVectorMeshGradient = createVectorMeshGradient; exports.vectorMeshPointAt = vectorMeshPointAt; exports.vectorMeshColorAt = vectorMeshColorAt; exports.vectorMeshLines = vectorMeshLines; exports.vectorFreeformSpreadScale = vectorFreeformSpreadScale; exports.vectorFreeformLineSegments = vectorFreeformLineSegments; exports.vectorFreeformField = vectorFreeformField; exports.sampleVectorFreeform = sampleVectorFreeform; exports.autoVectorFreeformGradient = autoVectorFreeformGradient; exports.vectorShadedSvgDefs = vectorShadedSvgDefs; exports.mapVectorShadedPaint = mapVectorShadedPaint; exports.transformVectorShadedPaint = transformVectorShadedPaint; exports.sanitizeVectorShadedPaint = sanitizeVectorShadedPaint; exports.removeVectorFreeformPoint = removeVectorFreeformPoint; exports.nearestVectorShadingPoint = nearestVectorShadingPoint; 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_MODES = VECTOR_BLEND_MODES; exports.VECTOR_HORIZONTAL_RESIZING = VECTOR_HORIZONTAL_RESIZING; exports.VECTOR_VERTICAL_RESIZING = VECTOR_VERTICAL_RESIZING; exports.VECTOR_CONNECTOR_SIDES = VECTOR_CONNECTOR_SIDES; exports.VECTOR_CONNECTOR_ROUTES = VECTOR_CONNECTOR_ROUTES; exports.VECTOR_BLEND_SPACINGS = VECTOR_BLEND_SPACINGS; exports.VECTOR_MASK_TYPES = VECTOR_MASK_TYPES; exports.VECTOR_SYMMETRY_MODES = VECTOR_SYMMETRY_MODES; exports.VECTOR_TEXT_ALIGNS = VECTOR_TEXT_ALIGNS; exports.VECTOR_PATH_TEXT_BASELINES = VECTOR_PATH_TEXT_BASELINES; exports.VECTOR_CONSTRAINT_KINDS = VECTOR_CONSTRAINT_KINDS; 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.VECTOR_FILTER_TYPES = VECTOR_FILTER_TYPES; 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.IDENTITY_MATRIX = IDENTITY_MATRIX; exports.multiplyMatrices = multiplyMatrices; exports.translateMatrix = translateMatrix; exports.scaleMatrix = scaleMatrix; exports.rotateMatrix = rotateMatrix; exports.matrixAbout = matrixAbout; exports.skewMatrix = skewMatrix; exports.applyMatrix = applyMatrix; exports.isIdentityMatrix = isIdentityMatrix; exports.invertMatrix = invertMatrix; exports.applyMatrixLinear = applyMatrixLinear; exports.matrixRotation = matrixRotation; exports.decomposeRigid = decomposeRigid; exports.isVectorSymmetryGroup = isVectorSymmetryGroup; exports.vectorSymmetryMatrices = vectorSymmetryMatrices; exports.vectorSymmetryDrawn = vectorSymmetryDrawn; exports.vectorSymmetryAxes = vectorSymmetryAxes; exports.sanitizeVectorSymmetry = sanitizeVectorSymmetry; exports.VECTOR_SYMMETRY_MODE_LABELS = VECTOR_SYMMETRY_MODE_LABELS; exports.transformVectorSymmetry = transformVectorSymmetry; 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.VECTOR_STROKE_SETTING_KEYS = VECTOR_STROKE_SETTING_KEYS; exports.VECTOR_BLEND_MODE_LABELS = VECTOR_BLEND_MODE_LABELS; exports.isVectorBlendMode = isVectorBlendMode; exports.vectorBlendModeCss = vectorBlendModeCss; exports.vectorBlendModeFromCss = vectorBlendModeFromCss; exports.isPlainVectorPaintLayer = isPlainVectorPaintLayer; exports.isDrawnVectorPaintLayer = isDrawnVectorPaintLayer; exports.vectorFills = vectorFills; exports.vectorStrokeSettings = vectorStrokeSettings; exports.vectorStrokes = vectorStrokes; exports.hasVectorPaintStacks = hasVectorPaintStacks; exports.withVectorFills = withVectorFills; exports.withVectorStrokes = withVectorStrokes; exports.normalizeVectorPaintStacks = normalizeVectorPaintStacks; exports.sanitizeVectorFills = sanitizeVectorFills; exports.sanitizeVectorStrokeSettings = sanitizeVectorStrokeSettings; exports.sanitizeVectorStrokes = sanitizeVectorStrokes; exports.vectorPaintLayerNodes = vectorPaintLayerNodes; exports.needsVectorPaintLayers = needsVectorPaintLayers; exports.vectorStrokeStackReach = vectorStrokeStackReach; exports.hitTestVectorPaintLayer = hitTestVectorPaintLayer; exports.hitTestVectorPaintStack = hitTestVectorPaintStack; exports.vectorStacksHaveGradient = vectorStacksHaveGradient; exports.newVectorStrokeLayer = newVectorStrokeLayer; exports.vectorTargetPaint = vectorTargetPaint; exports.withVectorTargetPaint = withVectorTargetPaint; 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.sweepPath = sweepPath; 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.isVectorFrame = isVectorFrame; exports.vectorFrameRectPath = vectorFrameRectPath; exports.vectorFrameDrawn = vectorFrameDrawn; exports.vectorFrameContains = vectorFrameContains; exports.vectorFrameChildMatrix = vectorFrameChildMatrix; exports.sanitizeVectorFrame = sanitizeVectorFrame; exports.sanitizeVectorResizing = sanitizeVectorResizing; exports.VECTOR_HORIZONTAL_RESIZING_LABELS = VECTOR_HORIZONTAL_RESIZING_LABELS; exports.VECTOR_VERTICAL_RESIZING_LABELS = VECTOR_VERTICAL_RESIZING_LABELS; exports.vectorBoundsInside = vectorBoundsInside; exports.vectorArtboards = vectorArtboards; exports.vectorFrameDocument = vectorFrameDocument; exports.getVectorFramePanel = getVectorFramePanel; exports.splitIntoFaces = splitIntoFaces; exports.knifePath = knifePath; exports.eraserRegion = eraserRegion; exports.eraseFromFill = eraseFromFill; exports.eraseFromOutline = eraseFromOutline; exports.polylineBounds = polylineBounds; exports.simplifyPolyline = simplifyPolyline; exports.VECTOR_FILTER_DEFAULTS = VECTOR_FILTER_DEFAULTS; exports.VECTOR_FILTER_LABELS = VECTOR_FILTER_LABELS; exports.VECTOR_FILTER_PARAM_SPECS = VECTOR_FILTER_PARAM_SPECS; exports.isVectorFilterType = isVectorFilterType; exports.normalizeVectorFilterParams = normalizeVectorFilterParams; exports.vectorFilterParamKeys = vectorFilterParamKeys; exports.createVectorFilter = createVectorFilter; exports.sanitizeVectorFilters = sanitizeVectorFilters; exports.activeVectorFilters = activeVectorFilters; exports.vectorFilterReach = vectorFilterReach; exports.vectorFilterSvg = vectorFilterSvg; exports.vectorFilterMarkup = vectorFilterMarkup; exports.VECTOR_FILTER_MENU = VECTOR_FILTER_MENU; exports.isVectorMaskType = isVectorMaskType; exports.sanitizeVectorMask = sanitizeVectorMask; exports.isVectorMaskGroup = isVectorMaskGroup; exports.isVectorMaskActive = isVectorMaskActive; exports.vectorMaskSource = vectorMaskSource; exports.vectorMaskContents = vectorMaskContents; exports.vectorMaskOwner = vectorMaskOwner; exports.vectorMaskSummary = vectorMaskSummary; exports.vectorMaskRegionShapes = vectorMaskRegionShapes; exports.vectorMaskRegion = vectorMaskRegion; exports.vectorMaskRegionPath = vectorMaskRegionPath; exports.vectorMaskContains = vectorMaskContains; exports.vectorMaskedShapes = vectorMaskedShapes; exports.vectorMaskedGeometry = vectorMaskedGeometry; exports.vectorMaskedLocalBounds = vectorMaskedLocalBounds; exports.vectorMaskContentBounds = vectorMaskContentBounds; exports.vectorMaskRenderData = vectorMaskRenderData; exports.DEFAULT_TEXT_STYLE = DEFAULT_TEXT_STYLE; exports.DEFAULT_AUTO_LEADING = DEFAULT_AUTO_LEADING; exports.fitRuns = fitRuns; exports.styleAt = styleAt; exports.restyleRange = restyleRange; exports.spliceRuns = spliceRuns; exports.paragraphRanges = paragraphRanges; exports.fitParagraphRuns = fitParagraphRuns; exports.fontOf = fontOf; exports.isTextSpace = isTextSpace; exports.layoutText = layoutText; exports.textIndexAt = textIndexAt; exports.caretAt = caretAt; exports.textDecorations = textDecorations; exports.textRectPath = textRectPath; exports.textFragmentOutline = textFragmentOutline; exports.cssFontFamily = cssFontFamily; exports.cssFont = cssFont; exports.createCanvasTextShaper = createCanvasTextShaper; exports.createOutlineTextShaper = createOutlineTextShaper; exports.createMetricTextShaper = createMetricTextShaper; exports.setVectorTextShaper = setVectorTextShaper; exports.getVectorTextShaper = getVectorTextShaper; exports.vectorTextShaperGeneration = vectorTextShaperGeneration; exports.vectorTextHasOutlines = vectorTextHasOutlines; exports.vectorTextFamilies = vectorTextFamilies; exports.DEFAULT_VECTOR_FONT = DEFAULT_VECTOR_FONT; exports.VECTOR_CHARACTER_STYLE_KEYS = VECTOR_CHARACTER_STYLE_KEYS; exports.VECTOR_PARAGRAPH_STYLE_KEYS = VECTOR_PARAGRAPH_STYLE_KEYS; exports.VectorTextError = VectorTextError; exports.fitVectorTextRuns = fitVectorTextRuns; exports.vectorTextRuns = vectorTextRuns; exports.vectorTextStyleAt = vectorTextStyleAt; exports.measureVectorPath = measureVectorPath; exports.vectorPathAt = vectorPathAt; exports.vectorPathTextPositions = vectorPathTextPositions; exports.layoutVectorText = layoutVectorText; exports.glyphBox = glyphBox; exports.vectorTextPaths = vectorTextPaths; exports.vectorTextPaintSource = vectorTextPaintSource; exports.vectorTextCaret = vectorTextCaret; exports.vectorTextIndexAt = vectorTextIndexAt; exports.vectorTextSelectionQuads = vectorTextSelectionQuads; exports.patchVectorCharacterStyle = patchVectorCharacterStyle; exports.patchVectorParagraphStyle = patchVectorParagraphStyle; exports.sanitizeVectorTextFrame = sanitizeVectorTextFrame; exports.normalizeVectorTextRuns = normalizeVectorTextRuns; exports.sanitizeVectorTextFields = sanitizeVectorTextFields; exports.vectorTextRange = vectorTextRange; exports.replaceVectorText = replaceVectorText; exports.styleVectorText = styleVectorText; exports.bakeVectorTextGeometry = bakeVectorTextGeometry; exports.vectorTextName = vectorTextName; exports.pathTextFrameFromBezier = pathTextFrameFromBezier; exports.vectorTextBoxOutline = vectorTextBoxOutline; exports.vectorTextSpans = vectorTextSpans; exports.vectorTextGeometryNode = vectorTextGeometryNode; exports.vectorTextSpanSvg = vectorTextSpanSvg; exports.VECTOR_SYMBOL_MAX_DEPTH = VECTOR_SYMBOL_MAX_DEPTH; exports.vectorSymbolsUsedIn = vectorSymbolsUsedIn; exports.vectorSymbolUses = vectorSymbolUses; exports.resolveVectorSymbols = resolveVectorSymbols; exports.stripVectorSymbolArt = stripVectorSymbolArt; exports.scaleVectorStrokeWidths = scaleVectorStrokeWidths; exports.tintVectorNode = tintVectorNode; exports.prefixVectorIds = prefixVectorIds; exports.vectorInstanceGroup = vectorInstanceGroup; exports.composeVectorMatrices = composeVectorMatrices; exports.WARP_STYLES = WARP_STYLES; exports.WARP_STYLE_LABELS = WARP_STYLE_LABELS; exports.warpPresetGrid = warpPresetGrid; exports.warpPresetMesh = warpPresetMesh; exports.warpMeshColumns = warpMeshColumns; exports.warpMeshRows = warpMeshRows; exports.isValidWarpMesh = isValidWarpMesh; exports.fitWarpMesh = fitWarpMesh; exports.identityWarpMesh = identityWarpMesh; exports.evalWarpMesh = evalWarpMesh; exports.splitWarpMeshU = splitWarpMeshU; exports.splitWarpMeshV = splitWarpMeshV; exports.removeWarpMeshSplitU = removeWarpMeshSplitU; exports.removeWarpMeshSplitV = removeWarpMeshSplitV; exports.mapWarpMeshPoints = mapWarpMeshPoints; exports.resizeWarpMesh = resizeWarpMesh; exports.warpMeshControlBounds = warpMeshControlBounds; exports.warpMeshParamAt = warpMeshParamAt; exports.dragWarpMeshPoint = dragWarpMeshPoint; exports.pullWarpMesh = pullWarpMesh; exports.warpMeshEditPoints = warpMeshEditPoints; exports.warpMeshGridCurves = warpMeshGridCurves; 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.vectorInstanceDrawn = vectorInstanceDrawn; exports.vectorChildAppearanceShapes = vectorChildAppearanceShapes; 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.isVectorConnector = isVectorConnector; exports.vectorConnectionSites = vectorConnectionSites; exports.nearestVectorConnectionSite = nearestVectorConnectionSite; exports.vectorConnectorWorldAnchors = vectorConnectorWorldAnchors; exports.routeVectorConnector = routeVectorConnector; exports.rerouteVectorConnectors = rerouteVectorConnectors; exports.sanitizeVectorConnector = sanitizeVectorConnector; exports.VECTOR_CONNECTOR_ROUTE_LABELS = VECTOR_CONNECTOR_ROUTE_LABELS; exports.VECTOR_CONNECTOR_SIDE_LABELS = VECTOR_CONNECTOR_SIDE_LABELS; exports.getVectorConnectorPanel = getVectorConnectorPanel; exports.vectorConnectorTargetAt = vectorConnectorTargetAt; exports.vectorStrokeGradientDefs = vectorStrokeGradientDefs; exports.vectorCornersAttribute = vectorCornersAttribute; exports.applyVectorCornersAttribute = applyVectorCornersAttribute; exports.vectorPathLocalBounds = vectorPathLocalBounds; exports.vectorPaintToSvg = vectorPaintToSvg; exports.vectorStrokeSvgParts = vectorStrokeSvgParts; exports.vectorNodeLocalPaintBounds = vectorNodeLocalPaintBounds; exports.vectorNodeFilterSvg = vectorNodeFilterSvg; exports.widthProfileToAttribute = widthProfileToAttribute; exports.widthProfileFromAttribute = widthProfileFromAttribute; exports.vectorDocumentToSvg = vectorDocumentToSvg; exports.parseSvgTransform = parseSvgTransform; exports.parseVectorSvg = parseVectorSvg; exports.VECTOR_SPATIAL_MIN = VECTOR_SPATIAL_MIN; exports.VectorRTree = VectorRTree; exports.vectorNodePaintBox = vectorNodePaintBox; exports.vectorSpatialIndex = vectorSpatialIndex; exports.vectorNodesNear = vectorNodesNear; 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.collectPaintedNodes = collectPaintedNodes; 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;
10040
- //# sourceMappingURL=chunk-ORE334I6.cjs.map
10332
+
10333
+
10334
+
10335
+
10336
+
10337
+ exports.isVectorMeshGradient = isVectorMeshGradient; exports.isVectorFreeformGradient = isVectorFreeformGradient; exports.isVectorShadedPaint = isVectorShadedPaint; exports.vectorRgbaToCss = vectorRgbaToCss; exports.VECTOR_MESH_MAX = VECTOR_MESH_MAX; exports.createVectorMeshGradient = createVectorMeshGradient; exports.vectorMeshPointAt = vectorMeshPointAt; exports.vectorMeshColorAt = vectorMeshColorAt; exports.vectorMeshLines = vectorMeshLines; exports.vectorFreeformSpreadScale = vectorFreeformSpreadScale; exports.vectorFreeformLineSegments = vectorFreeformLineSegments; exports.vectorFreeformField = vectorFreeformField; exports.sampleVectorFreeform = sampleVectorFreeform; exports.autoVectorFreeformGradient = autoVectorFreeformGradient; exports.vectorShadedSvgDefs = vectorShadedSvgDefs; exports.mapVectorShadedPaint = mapVectorShadedPaint; exports.transformVectorShadedPaint = transformVectorShadedPaint; exports.sanitizeVectorShadedPaint = sanitizeVectorShadedPaint; exports.removeVectorFreeformPoint = removeVectorFreeformPoint; exports.nearestVectorShadingPoint = nearestVectorShadingPoint; 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_MODES = VECTOR_BLEND_MODES; exports.VECTOR_HORIZONTAL_RESIZING = VECTOR_HORIZONTAL_RESIZING; exports.VECTOR_VERTICAL_RESIZING = VECTOR_VERTICAL_RESIZING; exports.VECTOR_CONNECTOR_SIDES = VECTOR_CONNECTOR_SIDES; exports.VECTOR_CONNECTOR_ROUTES = VECTOR_CONNECTOR_ROUTES; exports.VECTOR_BLEND_SPACINGS = VECTOR_BLEND_SPACINGS; exports.VECTOR_MASK_TYPES = VECTOR_MASK_TYPES; exports.VECTOR_SYMMETRY_MODES = VECTOR_SYMMETRY_MODES; exports.VECTOR_TEXT_ALIGNS = VECTOR_TEXT_ALIGNS; exports.VECTOR_PATH_TEXT_BASELINES = VECTOR_PATH_TEXT_BASELINES; exports.VECTOR_CONSTRAINT_KINDS = VECTOR_CONSTRAINT_KINDS; 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.VECTOR_FILTER_TYPES = VECTOR_FILTER_TYPES; 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.IDENTITY_MATRIX = IDENTITY_MATRIX; exports.multiplyMatrices = multiplyMatrices; exports.translateMatrix = translateMatrix; exports.scaleMatrix = scaleMatrix; exports.rotateMatrix = rotateMatrix; exports.matrixAbout = matrixAbout; exports.skewMatrix = skewMatrix; exports.applyMatrix = applyMatrix; exports.isIdentityMatrix = isIdentityMatrix; exports.invertMatrix = invertMatrix; exports.applyMatrixLinear = applyMatrixLinear; exports.matrixRotation = matrixRotation; exports.decomposeRigid = decomposeRigid; exports.isVectorSymmetryGroup = isVectorSymmetryGroup; exports.vectorSymmetryMatrices = vectorSymmetryMatrices; exports.vectorSymmetryDrawn = vectorSymmetryDrawn; exports.vectorSymmetryAxes = vectorSymmetryAxes; exports.sanitizeVectorSymmetry = sanitizeVectorSymmetry; exports.VECTOR_SYMMETRY_MODE_LABELS = VECTOR_SYMMETRY_MODE_LABELS; exports.transformVectorSymmetry = transformVectorSymmetry; 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.VECTOR_STROKE_SETTING_KEYS = VECTOR_STROKE_SETTING_KEYS; exports.VECTOR_BLEND_MODE_LABELS = VECTOR_BLEND_MODE_LABELS; exports.isVectorBlendMode = isVectorBlendMode; exports.vectorBlendModeCss = vectorBlendModeCss; exports.vectorBlendModeFromCss = vectorBlendModeFromCss; exports.isPlainVectorPaintLayer = isPlainVectorPaintLayer; exports.isDrawnVectorPaintLayer = isDrawnVectorPaintLayer; exports.vectorFills = vectorFills; exports.vectorStrokeSettings = vectorStrokeSettings; exports.vectorStrokes = vectorStrokes; exports.hasVectorPaintStacks = hasVectorPaintStacks; exports.withVectorFills = withVectorFills; exports.withVectorStrokes = withVectorStrokes; exports.normalizeVectorPaintStacks = normalizeVectorPaintStacks; exports.sanitizeVectorFills = sanitizeVectorFills; exports.sanitizeVectorStrokeSettings = sanitizeVectorStrokeSettings; exports.sanitizeVectorStrokes = sanitizeVectorStrokes; exports.vectorPaintLayerNodes = vectorPaintLayerNodes; exports.needsVectorPaintLayers = needsVectorPaintLayers; exports.vectorStrokeStackReach = vectorStrokeStackReach; exports.hitTestVectorPaintLayer = hitTestVectorPaintLayer; exports.hitTestVectorPaintStack = hitTestVectorPaintStack; exports.vectorStacksHaveGradient = vectorStacksHaveGradient; exports.newVectorStrokeLayer = newVectorStrokeLayer; exports.vectorTargetPaint = vectorTargetPaint; exports.withVectorTargetPaint = withVectorTargetPaint; 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.sweepPath = sweepPath; 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.isVectorFrame = isVectorFrame; exports.vectorFrameRectPath = vectorFrameRectPath; exports.vectorFrameDrawn = vectorFrameDrawn; exports.vectorFrameContains = vectorFrameContains; exports.vectorFrameChildMatrix = vectorFrameChildMatrix; exports.sanitizeVectorFrame = sanitizeVectorFrame; exports.sanitizeVectorResizing = sanitizeVectorResizing; exports.VECTOR_HORIZONTAL_RESIZING_LABELS = VECTOR_HORIZONTAL_RESIZING_LABELS; exports.VECTOR_VERTICAL_RESIZING_LABELS = VECTOR_VERTICAL_RESIZING_LABELS; exports.vectorBoundsInside = vectorBoundsInside; exports.vectorArtboards = vectorArtboards; exports.vectorFrameDocument = vectorFrameDocument; exports.getVectorFramePanel = getVectorFramePanel; exports.splitIntoFaces = splitIntoFaces; exports.knifePath = knifePath; exports.eraserRegion = eraserRegion; exports.eraseFromFill = eraseFromFill; exports.eraseFromOutline = eraseFromOutline; exports.polylineBounds = polylineBounds; exports.simplifyPolyline = simplifyPolyline; exports.VECTOR_FILTER_DEFAULTS = VECTOR_FILTER_DEFAULTS; exports.VECTOR_FILTER_LABELS = VECTOR_FILTER_LABELS; exports.VECTOR_FILTER_PARAM_SPECS = VECTOR_FILTER_PARAM_SPECS; exports.isVectorFilterType = isVectorFilterType; exports.normalizeVectorFilterParams = normalizeVectorFilterParams; exports.vectorFilterParamKeys = vectorFilterParamKeys; exports.createVectorFilter = createVectorFilter; exports.sanitizeVectorFilters = sanitizeVectorFilters; exports.activeVectorFilters = activeVectorFilters; exports.vectorFilterReach = vectorFilterReach; exports.vectorFilterSvg = vectorFilterSvg; exports.vectorFilterMarkup = vectorFilterMarkup; exports.VECTOR_FILTER_MENU = VECTOR_FILTER_MENU; exports.isVectorMaskType = isVectorMaskType; exports.sanitizeVectorMask = sanitizeVectorMask; exports.isVectorMaskGroup = isVectorMaskGroup; exports.isVectorMaskActive = isVectorMaskActive; exports.vectorMaskSource = vectorMaskSource; exports.vectorMaskContents = vectorMaskContents; exports.vectorMaskOwner = vectorMaskOwner; exports.vectorMaskSummary = vectorMaskSummary; exports.vectorMaskRegionShapes = vectorMaskRegionShapes; exports.vectorMaskRegion = vectorMaskRegion; exports.vectorMaskRegionPath = vectorMaskRegionPath; exports.vectorMaskContains = vectorMaskContains; exports.vectorMaskedShapes = vectorMaskedShapes; exports.vectorMaskedGeometry = vectorMaskedGeometry; exports.vectorMaskedLocalBounds = vectorMaskedLocalBounds; exports.vectorMaskContentBounds = vectorMaskContentBounds; exports.vectorMaskRenderData = vectorMaskRenderData; exports.DEFAULT_TEXT_STYLE = DEFAULT_TEXT_STYLE; exports.DEFAULT_AUTO_LEADING = DEFAULT_AUTO_LEADING; exports.fitRuns = fitRuns; exports.styleAt = styleAt; exports.restyleRange = restyleRange; exports.spliceRuns = spliceRuns; exports.paragraphRanges = paragraphRanges; exports.fitParagraphRuns = fitParagraphRuns; exports.fontOf = fontOf; exports.isTextSpace = isTextSpace; exports.layoutText = layoutText; exports.textIndexAt = textIndexAt; exports.caretAt = caretAt; exports.textDecorations = textDecorations; exports.textRectPath = textRectPath; exports.textFragmentOutline = textFragmentOutline; exports.cssFontFamily = cssFontFamily; exports.cssFont = cssFont; exports.createCanvasTextShaper = createCanvasTextShaper; exports.createOutlineTextShaper = createOutlineTextShaper; exports.createMetricTextShaper = createMetricTextShaper; exports.setVectorTextShaper = setVectorTextShaper; exports.getVectorTextShaper = getVectorTextShaper; exports.vectorTextShaperGeneration = vectorTextShaperGeneration; exports.vectorTextHasOutlines = vectorTextHasOutlines; exports.vectorTextFamilies = vectorTextFamilies; exports.DEFAULT_VECTOR_FONT = DEFAULT_VECTOR_FONT; exports.VECTOR_CHARACTER_STYLE_KEYS = VECTOR_CHARACTER_STYLE_KEYS; exports.VECTOR_PARAGRAPH_STYLE_KEYS = VECTOR_PARAGRAPH_STYLE_KEYS; exports.VectorTextError = VectorTextError; exports.fitVectorTextRuns = fitVectorTextRuns; exports.vectorTextRuns = vectorTextRuns; exports.vectorTextStyleAt = vectorTextStyleAt; exports.measureVectorPath = measureVectorPath; exports.vectorPathAt = vectorPathAt; exports.vectorPathTextPositions = vectorPathTextPositions; exports.layoutVectorText = layoutVectorText; exports.glyphBox = glyphBox; exports.vectorTextPaths = vectorTextPaths; exports.vectorTextPaintSource = vectorTextPaintSource; exports.vectorTextCaret = vectorTextCaret; exports.vectorTextIndexAt = vectorTextIndexAt; exports.vectorTextSelectionQuads = vectorTextSelectionQuads; exports.patchVectorCharacterStyle = patchVectorCharacterStyle; exports.patchVectorParagraphStyle = patchVectorParagraphStyle; exports.sanitizeVectorTextFrame = sanitizeVectorTextFrame; exports.normalizeVectorTextRuns = normalizeVectorTextRuns; exports.sanitizeVectorTextFields = sanitizeVectorTextFields; exports.vectorTextRange = vectorTextRange; exports.replaceVectorText = replaceVectorText; exports.styleVectorText = styleVectorText; exports.bakeVectorTextGeometry = bakeVectorTextGeometry; exports.vectorTextName = vectorTextName; exports.pathTextFrameFromBezier = pathTextFrameFromBezier; exports.vectorTextBoxOutline = vectorTextBoxOutline; exports.vectorTextSpans = vectorTextSpans; exports.vectorTextGeometryNode = vectorTextGeometryNode; exports.vectorTextSpanSvg = vectorTextSpanSvg; exports.VECTOR_SYMBOL_MAX_DEPTH = VECTOR_SYMBOL_MAX_DEPTH; exports.vectorSymbolsUsedIn = vectorSymbolsUsedIn; exports.vectorSymbolUses = vectorSymbolUses; exports.resolveVectorSymbols = resolveVectorSymbols; exports.stripVectorSymbolArt = stripVectorSymbolArt; exports.scaleVectorStrokeWidths = scaleVectorStrokeWidths; exports.tintVectorNode = tintVectorNode; exports.prefixVectorIds = prefixVectorIds; exports.vectorInstanceGroup = vectorInstanceGroup; exports.composeVectorMatrices = composeVectorMatrices; exports.vectorPaintSolid = vectorPaintSolid; exports.shadeVectorColor = shadeVectorColor; exports.vectorPathRings = vectorPathRings; exports.vectorExtrudeFaces = vectorExtrudeFaces; exports.vectorBevelFaces = vectorBevelFaces; exports.WARP_STYLES = WARP_STYLES; exports.WARP_STYLE_LABELS = WARP_STYLE_LABELS; exports.warpPresetGrid = warpPresetGrid; exports.warpPresetMesh = warpPresetMesh; exports.warpMeshColumns = warpMeshColumns; exports.warpMeshRows = warpMeshRows; exports.isValidWarpMesh = isValidWarpMesh; exports.fitWarpMesh = fitWarpMesh; exports.identityWarpMesh = identityWarpMesh; exports.evalWarpMesh = evalWarpMesh; exports.splitWarpMeshU = splitWarpMeshU; exports.splitWarpMeshV = splitWarpMeshV; exports.removeWarpMeshSplitU = removeWarpMeshSplitU; exports.removeWarpMeshSplitV = removeWarpMeshSplitV; exports.mapWarpMeshPoints = mapWarpMeshPoints; exports.resizeWarpMesh = resizeWarpMesh; exports.warpMeshControlBounds = warpMeshControlBounds; exports.warpMeshParamAt = warpMeshParamAt; exports.dragWarpMeshPoint = dragWarpMeshPoint; exports.pullWarpMesh = pullWarpMesh; exports.warpMeshEditPoints = warpMeshEditPoints; exports.warpMeshGridCurves = warpMeshGridCurves; 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.vectorInstanceDrawn = vectorInstanceDrawn; exports.vectorChildAppearanceShapes = vectorChildAppearanceShapes; 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.isVectorConnector = isVectorConnector; exports.vectorConnectionSites = vectorConnectionSites; exports.nearestVectorConnectionSite = nearestVectorConnectionSite; exports.vectorConnectorWorldAnchors = vectorConnectorWorldAnchors; exports.routeVectorConnector = routeVectorConnector; exports.rerouteVectorConnectors = rerouteVectorConnectors; exports.sanitizeVectorConnector = sanitizeVectorConnector; exports.VECTOR_CONNECTOR_ROUTE_LABELS = VECTOR_CONNECTOR_ROUTE_LABELS; exports.VECTOR_CONNECTOR_SIDE_LABELS = VECTOR_CONNECTOR_SIDE_LABELS; exports.getVectorConnectorPanel = getVectorConnectorPanel; exports.vectorConnectorTargetAt = vectorConnectorTargetAt; exports.vectorStrokeGradientDefs = vectorStrokeGradientDefs; exports.vectorCornersAttribute = vectorCornersAttribute; exports.applyVectorCornersAttribute = applyVectorCornersAttribute; exports.vectorPathLocalBounds = vectorPathLocalBounds; exports.vectorPaintToSvg = vectorPaintToSvg; exports.vectorStrokeSvgParts = vectorStrokeSvgParts; exports.vectorNodeLocalPaintBounds = vectorNodeLocalPaintBounds; exports.vectorNodeFilterSvg = vectorNodeFilterSvg; exports.widthProfileToAttribute = widthProfileToAttribute; exports.widthProfileFromAttribute = widthProfileFromAttribute; exports.vectorDocumentToSvg = vectorDocumentToSvg; exports.parseSvgTransform = parseSvgTransform; exports.parseVectorSvg = parseVectorSvg; exports.VECTOR_SPATIAL_MIN = VECTOR_SPATIAL_MIN; exports.VectorRTree = VectorRTree; exports.vectorNodePaintBox = vectorNodePaintBox; exports.vectorSpatialIndex = vectorSpatialIndex; exports.vectorNodesNear = vectorNodesNear; 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.collectPaintedNodes = collectPaintedNodes; 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;
10338
+ //# sourceMappingURL=chunk-LXGOYRPE.cjs.map