@pixerate/editor 0.125.0 → 0.127.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 (124) hide show
  1. package/dist/animation/index.d.cts +2 -3
  2. package/dist/animation/index.d.ts +2 -3
  3. package/dist/animation-editor/index.cjs +71 -73
  4. package/dist/animation-editor/index.cjs.map +1 -1
  5. package/dist/animation-editor/index.d.cts +6 -8
  6. package/dist/animation-editor/index.d.ts +6 -8
  7. package/dist/animation-editor/index.js +11 -13
  8. package/dist/animation-editor/index.js.map +1 -1
  9. package/dist/{bezier-CBzKKDjl.d.cts → bezier-DBz0IgEt.d.cts} +22 -2
  10. package/dist/{bezier-CWv6LQal.d.ts → bezier-DWI5MEkI.d.ts} +22 -2
  11. package/dist/{brushstrokeRender-LRV7GXGD.js → brushstrokeRender-7RUITO42.js} +3 -3
  12. package/dist/{brushstrokeRender-EELTV7U4.cjs → brushstrokeRender-OW6ENCZG.cjs} +7 -7
  13. package/dist/{brushstrokeRender-EELTV7U4.cjs.map → brushstrokeRender-OW6ENCZG.cjs.map} +1 -1
  14. package/dist/canvas/index.cjs +423 -37
  15. package/dist/canvas/index.cjs.map +1 -1
  16. package/dist/canvas/index.d.cts +189 -11
  17. package/dist/canvas/index.d.ts +189 -11
  18. package/dist/canvas/index.js +395 -9
  19. package/dist/canvas/index.js.map +1 -1
  20. package/dist/{chunk-7LQO6OHH.cjs → chunk-33SO3QWP.cjs} +4 -4
  21. package/dist/{chunk-7LQO6OHH.cjs.map → chunk-33SO3QWP.cjs.map} +1 -1
  22. package/dist/{chunk-MPQAO33O.js → chunk-A6KHMKI4.js} +3 -3
  23. package/dist/{chunk-V5YGPRCZ.cjs → chunk-BEGEWQHD.cjs} +41 -41
  24. package/dist/{chunk-V5YGPRCZ.cjs.map → chunk-BEGEWQHD.cjs.map} +1 -1
  25. package/dist/{chunk-N3FVUOZD.cjs → chunk-BJTCSLF6.cjs} +7 -7
  26. package/dist/{chunk-N3FVUOZD.cjs.map → chunk-BJTCSLF6.cjs.map} +1 -1
  27. package/dist/{chunk-WUDPFWAN.js → chunk-F7Q2NE2Y.js} +3 -3
  28. package/dist/{chunk-G6WXWS4Y.js → chunk-FICSDDDF.js} +2 -2
  29. package/dist/{chunk-GUZ47CJM.cjs → chunk-IZ4WRXZA.cjs} +1 -1
  30. package/dist/{chunk-GUZ47CJM.cjs.map → chunk-IZ4WRXZA.cjs.map} +1 -1
  31. package/dist/{chunk-QDJKUBWE.cjs → chunk-JODTP4DP.cjs} +176 -5
  32. package/dist/chunk-JODTP4DP.cjs.map +1 -0
  33. package/dist/{chunk-GLWZXQ4Q.js → chunk-KHNZ6MOU.js} +1 -1
  34. package/dist/chunk-KHNZ6MOU.js.map +1 -0
  35. package/dist/{chunk-GCJWMEYW.cjs → chunk-KSJLDRHK.cjs} +46 -46
  36. package/dist/{chunk-GCJWMEYW.cjs.map → chunk-KSJLDRHK.cjs.map} +1 -1
  37. package/dist/{chunk-QQKTOA4U.cjs → chunk-ORE334I6.cjs} +132 -132
  38. package/dist/{chunk-QQKTOA4U.cjs.map → chunk-ORE334I6.cjs.map} +1 -1
  39. package/dist/{chunk-X6KTSFAE.js → chunk-Q4NBEVV5.js} +2 -2
  40. package/dist/{chunk-XZWOLXWA.js → chunk-QFSTQHZY.js} +174 -3
  41. package/dist/chunk-QFSTQHZY.js.map +1 -0
  42. package/dist/{chunk-FPRIUR4T.js → chunk-ROZFX4QI.js} +3 -3
  43. package/dist/{chunk-UXFI3CDZ.cjs → chunk-SFCPGMCT.cjs} +8 -8
  44. package/dist/{chunk-UXFI3CDZ.cjs.map → chunk-SFCPGMCT.cjs.map} +1 -1
  45. package/dist/{chunk-J67OLQUQ.js → chunk-UABQTYQF.js} +3 -3
  46. package/dist/{chunk-O5RVCDEC.cjs → chunk-XLUYXUBD.cjs} +88 -88
  47. package/dist/{chunk-O5RVCDEC.cjs.map → chunk-XLUYXUBD.cjs.map} +1 -1
  48. package/dist/{chunk-FG274FYT.js → chunk-YGJIER2R.js} +2 -2
  49. package/dist/effects/index.cjs +32 -34
  50. package/dist/effects/index.cjs.map +1 -1
  51. package/dist/effects/index.d.cts +6 -38
  52. package/dist/effects/index.d.ts +6 -38
  53. package/dist/effects/index.js +3 -5
  54. package/dist/effects/index.js.map +1 -1
  55. package/dist/evaluate-BbCeF6pt.d.ts +114 -0
  56. package/dist/evaluate-BsxYieLN.d.cts +114 -0
  57. package/dist/{export-DVl4fWy5.d.cts → export-Cbr9IqpJ.d.cts} +1 -1
  58. package/dist/{export-Bp7ji2r4.d.cts → export-CcldobdN.d.cts} +3 -3
  59. package/dist/{export-C1s4eolZ.d.ts → export-ClPKUB-v.d.ts} +1 -1
  60. package/dist/{export-DAyPY94f.d.ts → export-PGhOpDmz.d.ts} +3 -3
  61. package/dist/{helpers-i95Ob6Vi.d.cts → helpers-C5aAd44p.d.cts} +67 -4
  62. package/dist/{helpers-BBLlekuM.d.ts → helpers-CPWcK504.d.ts} +67 -4
  63. package/dist/image-editor/index.cjs +619 -621
  64. package/dist/image-editor/index.cjs.map +1 -1
  65. package/dist/image-editor/index.d.cts +9 -11
  66. package/dist/image-editor/index.d.ts +9 -11
  67. package/dist/image-editor/index.js +6 -8
  68. package/dist/image-editor/index.js.map +1 -1
  69. package/dist/{opentype-14PDI5D2.d.ts → opentype-01rMIuQR.d.ts} +1 -1
  70. package/dist/{opentype-D80AVmMu.d.cts → opentype-BgqvmGT-.d.cts} +1 -1
  71. package/dist/paint-editor/index.cjs +737 -117
  72. package/dist/paint-editor/index.cjs.map +1 -1
  73. package/dist/paint-editor/index.d.cts +248 -13
  74. package/dist/paint-editor/index.d.ts +248 -13
  75. package/dist/paint-editor/index.js +635 -15
  76. package/dist/paint-editor/index.js.map +1 -1
  77. package/dist/{pathfinder-DjISxkUv.d.ts → pathfinder-D-h0Imus.d.ts} +1 -1
  78. package/dist/{pathfinder-C0UoFypx.d.cts → pathfinder-DgG0Z9Lr.d.cts} +1 -1
  79. package/dist/{player-cGLrngL_.d.ts → player-BK2kKbfd.d.ts} +1 -1
  80. package/dist/{player-CBtEoU2x.d.cts → player-CmbY3218.d.cts} +1 -1
  81. package/dist/pool-C7GtrL34.d.cts +34 -0
  82. package/dist/pool-CTrtciaN.d.ts +34 -0
  83. package/dist/{svg-DJKriJ4A.d.ts → svg-BRLwcibA.d.ts} +2 -3
  84. package/dist/{svg-BkRL-fZJ.d.cts → svg-DLBBPQP9.d.cts} +2 -3
  85. package/dist/{tools-CM8Oe8F3.d.ts → tools-AugT22z3.d.ts} +1 -1
  86. package/dist/{tools-DZCv2kX1.d.cts → tools-BpCmUNxb.d.cts} +1 -1
  87. package/dist/vector/index.cjs +923 -925
  88. package/dist/vector/index.cjs.map +1 -1
  89. package/dist/vector/index.d.cts +10 -12
  90. package/dist/vector/index.d.ts +10 -12
  91. package/dist/vector/index.js +11 -13
  92. package/dist/vector/index.js.map +1 -1
  93. package/dist/video-editor/index.cjs +269 -271
  94. package/dist/video-editor/index.cjs.map +1 -1
  95. package/dist/video-editor/index.d.cts +6 -8
  96. package/dist/video-editor/index.d.ts +6 -8
  97. package/dist/video-editor/index.js +3 -5
  98. package/dist/video-editor/index.js.map +1 -1
  99. package/dist/{warp-CH9MM435.d.cts → warp-C13L_GRn.d.cts} +1 -1
  100. package/dist/{warp-k_PdtXOG.d.ts → warp-q8FK5HHi.d.ts} +1 -1
  101. package/package.json +1 -1
  102. package/skills/pixerate-canvas/SKILL.md +19 -0
  103. package/skills/pixerate-paint-editor/SKILL.md +40 -1
  104. package/dist/behavior-Ymbld6jL.d.cts +0 -60
  105. package/dist/behavior-Ymbld6jL.d.ts +0 -60
  106. package/dist/chunk-GLWZXQ4Q.js.map +0 -1
  107. package/dist/chunk-IOXKXQNW.cjs +0 -178
  108. package/dist/chunk-IOXKXQNW.cjs.map +0 -1
  109. package/dist/chunk-QDJKUBWE.cjs.map +0 -1
  110. package/dist/chunk-TGKT5QAB.js +0 -178
  111. package/dist/chunk-TGKT5QAB.js.map +0 -1
  112. package/dist/chunk-XZWOLXWA.js.map +0 -1
  113. package/dist/evaluate-2S3vSPLy.d.cts +0 -55
  114. package/dist/evaluate-CfmT6xA3.d.ts +0 -55
  115. package/dist/gradient-KDfCvhuj.d.cts +0 -66
  116. package/dist/gradient-KDfCvhuj.d.ts +0 -66
  117. /package/dist/{brushstrokeRender-LRV7GXGD.js.map → brushstrokeRender-7RUITO42.js.map} +0 -0
  118. /package/dist/{chunk-MPQAO33O.js.map → chunk-A6KHMKI4.js.map} +0 -0
  119. /package/dist/{chunk-WUDPFWAN.js.map → chunk-F7Q2NE2Y.js.map} +0 -0
  120. /package/dist/{chunk-G6WXWS4Y.js.map → chunk-FICSDDDF.js.map} +0 -0
  121. /package/dist/{chunk-X6KTSFAE.js.map → chunk-Q4NBEVV5.js.map} +0 -0
  122. /package/dist/{chunk-FPRIUR4T.js.map → chunk-ROZFX4QI.js.map} +0 -0
  123. /package/dist/{chunk-J67OLQUQ.js.map → chunk-UABQTYQF.js.map} +0 -0
  124. /package/dist/{chunk-FG274FYT.js.map → chunk-YGJIER2R.js.map} +0 -0
@@ -27,14 +27,14 @@
27
27
 
28
28
 
29
29
 
30
- var _chunkN3FVUOZDcjs = require('./chunk-N3FVUOZD.cjs');
30
+ var _chunkBJTCSLF6cjs = require('./chunk-BJTCSLF6.cjs');
31
31
 
32
32
 
33
33
 
34
34
 
35
35
 
36
36
 
37
- var _chunkGUZ47CJMcjs = require('./chunk-GUZ47CJM.cjs');
37
+ var _chunkIZ4WRXZAcjs = require('./chunk-IZ4WRXZA.cjs');
38
38
 
39
39
 
40
40
 
@@ -390,7 +390,7 @@ function spanVectorGradientStops(g, from, to, expanded = expandVectorGradientSto
390
390
  var hasExplicitGradientGeometry = (g) => finitePoint(g.start) && finitePoint(g.end);
391
391
  function shorthandPoints(g) {
392
392
  if (g.type === "linear" || g.type === "reflected") {
393
- const c = _chunkGUZ47CJMcjs.angleToSvgLinearCoords.call(void 0, Number.isFinite(g.angle) ? g.angle : 180);
393
+ const c = _chunkIZ4WRXZAcjs.angleToSvgLinearCoords.call(void 0, Number.isFinite(g.angle) ? g.angle : 180);
394
394
  const start2 = g.type === "linear" ? { x: c.x1, y: c.y1 } : { x: 0.5, y: 0.5 };
395
395
  const end = { x: c.x2, y: c.y2 };
396
396
  return { start: start2, end, width: add(start2, perp(sub(end, start2))) };
@@ -1378,7 +1378,7 @@ var Side = class {
1378
1378
  constructor(a, h1, h2, b) {
1379
1379
  this.straight = onAnchor(a, h1) && onAnchor(b, h2);
1380
1380
  this.curve = this.straight ? [pt(a), pt(b)] : [pt(a), pt(_nullishCoalesce(h1, () => ( a))), pt(_nullishCoalesce(h2, () => ( b))), pt(b)];
1381
- this.length = this.straight ? Math.hypot(b.x - a.x, b.y - a.y) : _chunkN3FVUOZDcjs.segmentLength.call(void 0, this.curve);
1381
+ this.length = this.straight ? Math.hypot(b.x - a.x, b.y - a.y) : _chunkBJTCSLF6cjs.segmentLength.call(void 0, this.curve);
1382
1382
  }
1383
1383
  /** Unit direction the side leaves the corner in (towards its first control point off the corner). */
1384
1384
  direction() {
@@ -1396,10 +1396,10 @@ var Side = class {
1396
1396
  const t2 = this.length > EPS ? Math.min(1, Math.max(0, s / this.length)) : 0;
1397
1397
  return { t: t2, p: add2(vec(this.curve[0]), mul2(u, s)), dir: u };
1398
1398
  }
1399
- const t = _chunkN3FVUOZDcjs.segmentParamAtLength.call(void 0, this.curve, s, this.length);
1400
- const d = vec(_chunkN3FVUOZDcjs.segmentDerivative.call(void 0, this.curve, t));
1399
+ const t = _chunkBJTCSLF6cjs.segmentParamAtLength.call(void 0, this.curve, s, this.length);
1400
+ const d = vec(_chunkBJTCSLF6cjs.segmentDerivative.call(void 0, this.curve, t));
1401
1401
  const l = len(d);
1402
- return { t, p: vec(_chunkN3FVUOZDcjs.segmentPoint.call(void 0, this.curve, t)), dir: l > EPS ? mul2(d, 1 / l) : u };
1402
+ return { t, p: vec(_chunkBJTCSLF6cjs.segmentPoint.call(void 0, this.curve, t)), dir: l > EPS ? mul2(d, 1 / l) : u };
1403
1403
  }
1404
1404
  };
1405
1405
  function cornerOf(sp, s, i) {
@@ -1548,7 +1548,7 @@ function expandVectorCornersOf(sp, subpath = 0) {
1548
1548
  const s0 = from ? from.tv : 0;
1549
1549
  const s1 = to ? 1 - to.tu : 1;
1550
1550
  const seg = [pt(a), pt(_nullishCoalesce(a.out, () => ( a))), pt(_nullishCoalesce(b.in, () => ( b))), pt(b)];
1551
- const part = _chunkN3FVUOZDcjs.subSegment.call(void 0, seg, s0, Math.max(s0, s1));
1551
+ const part = _chunkBJTCSLF6cjs.subSegment.call(void 0, seg, s0, Math.max(s0, s1));
1552
1552
  return { out: vec(part[1]), in: vec(part[2]) };
1553
1553
  });
1554
1554
  const anchors = [];
@@ -1856,7 +1856,7 @@ function flatten(segments, closed, tol) {
1856
1856
  corner.push(isCorner);
1857
1857
  };
1858
1858
  for (const seg of segments) {
1859
- const flat = _chunkN3FVUOZDcjs.flattenChain.call(void 0, [seg], tol);
1859
+ const flat = _chunkBJTCSLF6cjs.flattenChain.call(void 0, [seg], tol);
1860
1860
  if (dist(seg[0], seg[seg.length - 1]) <= 1e-12 && flat.length > 1) flat.push(seg[seg.length - 1]);
1861
1861
  flat.forEach((p, i) => push(p, i === 0 || i === flat.length - 1));
1862
1862
  }
@@ -1946,7 +1946,7 @@ function variableStrokeRings(path, options) {
1946
1946
  const last = out[out.length - 1];
1947
1947
  if (!last || dist(last, p) > 1e-12) out.push(p);
1948
1948
  };
1949
- for (const contour of _chunkN3FVUOZDcjs.pathToContours.call(void 0, path)) {
1949
+ for (const contour of _chunkBJTCSLF6cjs.pathToContours.call(void 0, path)) {
1950
1950
  if (!contour.segments.length) continue;
1951
1951
  const poly = flatten(contour.segments, contour.closed, Math.min(tol, half) / 4);
1952
1952
  if (!poly) continue;
@@ -2072,7 +2072,7 @@ function variableStrokeOutline(path, options) {
2072
2072
  const tol = options.tolerance && options.tolerance > 0 ? options.tolerance : 0.05;
2073
2073
  let polygons;
2074
2074
  try {
2075
- polygons = _chunkN3FVUOZDcjs.polygonBoolean.call(void 0, "union", [{ rings: pieces, fillRule: "nonzero" }]);
2075
+ polygons = _chunkBJTCSLF6cjs.polygonBoolean.call(void 0, "union", [{ rings: pieces, fillRule: "nonzero" }]);
2076
2076
  } catch (e3) {
2077
2077
  return [];
2078
2078
  }
@@ -2080,11 +2080,11 @@ function variableStrokeOutline(path, options) {
2080
2080
  for (const polygon3 of polygons) {
2081
2081
  for (const ring of polygon3) {
2082
2082
  if (ring.length < 3) continue;
2083
- const cubics = _chunkGUZ47CJMcjs.fitCubics.call(void 0, ring, tol, { closed: true, cornerAngleDeg: 25 });
2083
+ const cubics = _chunkIZ4WRXZAcjs.fitCubics.call(void 0, ring, tol, { closed: true, cornerAngleDeg: 25 });
2084
2084
  if (!cubics.length) continue;
2085
2085
  out.push({ type: "M", x: cubics[0].p0[0], y: cubics[0].p0[1] });
2086
2086
  cubics.forEach((c, i) => {
2087
- if (_chunkGUZ47CJMcjs.isStraightCubic.call(void 0, c, tol * 0.02)) {
2087
+ if (_chunkIZ4WRXZAcjs.isStraightCubic.call(void 0, c, tol * 0.02)) {
2088
2088
  if (i < cubics.length - 1) out.push({ type: "L", x: c.p3[0], y: c.p3[1] });
2089
2089
  } else out.push({ type: "C", x1: c.p1[0], y1: c.p1[1], x2: c.p2[0], y2: c.p2[1], x: c.p3[0], y: c.p3[1] });
2090
2090
  });
@@ -2095,17 +2095,17 @@ function variableStrokeOutline(path, options) {
2095
2095
  }
2096
2096
  function nearestStrokePosition(path, p, only) {
2097
2097
  let best = null;
2098
- _chunkN3FVUOZDcjs.pathToContours.call(void 0, path).forEach((c, ci) => {
2098
+ _chunkBJTCSLF6cjs.pathToContours.call(void 0, path).forEach((c, ci) => {
2099
2099
  if (!c.segments.length || only !== void 0 && ci !== only) return;
2100
- const lengths = c.segments.map((s) => _chunkN3FVUOZDcjs.segmentLength.call(void 0, s));
2100
+ const lengths = c.segments.map((s) => _chunkBJTCSLF6cjs.segmentLength.call(void 0, s));
2101
2101
  const total = lengths.reduce((a, b) => a + b, 0);
2102
2102
  if (!(total > 0)) return;
2103
2103
  let acc = 0;
2104
2104
  c.segments.forEach((seg, si) => {
2105
- const near3 = _chunkN3FVUOZDcjs.segmentNearest.call(void 0, seg, p);
2105
+ const near3 = _chunkBJTCSLF6cjs.segmentNearest.call(void 0, seg, p);
2106
2106
  if (!best || near3.distance < best.distance) {
2107
- const s = acc + _chunkN3FVUOZDcjs.segmentLength.call(void 0, seg, 0, near3.t);
2108
- const tan = _chunkN3FVUOZDcjs.segmentTangent.call(void 0, seg, near3.t);
2107
+ const s = acc + _chunkBJTCSLF6cjs.segmentLength.call(void 0, seg, 0, near3.t);
2108
+ const tan = _chunkBJTCSLF6cjs.segmentTangent.call(void 0, seg, near3.t);
2109
2109
  const pt2 = seg.length === 2 ? lerp2(seg[0], seg[1], near3.t) : evalSeg(seg, near3.t);
2110
2110
  const n = leftNormal([tan[0], tan[1]]);
2111
2111
  const side = (p[0] - pt2[0]) * n[0] + (p[1] - pt2[1]) * n[1] >= 0 ? "left" : "right";
@@ -2122,9 +2122,9 @@ function evalSeg(seg, t) {
2122
2122
  return pts[0];
2123
2123
  }
2124
2124
  function strokePositionPoint(path, index, t) {
2125
- const c = _chunkN3FVUOZDcjs.pathToContours.call(void 0, path)[index];
2125
+ const c = _chunkBJTCSLF6cjs.pathToContours.call(void 0, path)[index];
2126
2126
  if (!_optionalChain([c, 'optionalAccess', _44 => _44.segments, 'access', _45 => _45.length])) return null;
2127
- const lengths = c.segments.map((s) => _chunkN3FVUOZDcjs.segmentLength.call(void 0, s));
2127
+ const lengths = c.segments.map((s) => _chunkBJTCSLF6cjs.segmentLength.call(void 0, s));
2128
2128
  const total = lengths.reduce((a, b) => a + b, 0);
2129
2129
  let want = Math.min(Math.max(t, 0), 1) * total;
2130
2130
  for (let i = 0; i < c.segments.length; i++) {
@@ -2135,11 +2135,11 @@ function strokePositionPoint(path, index, t) {
2135
2135
  const target = Math.min(want, lengths[i]);
2136
2136
  for (let k = 0; k < 40; k++) {
2137
2137
  const mid = (lo + hi) / 2;
2138
- if (_chunkN3FVUOZDcjs.segmentLength.call(void 0, seg, 0, mid) < target) lo = mid;
2138
+ if (_chunkBJTCSLF6cjs.segmentLength.call(void 0, seg, 0, mid) < target) lo = mid;
2139
2139
  else hi = mid;
2140
2140
  }
2141
2141
  const u = (lo + hi) / 2;
2142
- const tan = _chunkN3FVUOZDcjs.segmentTangent.call(void 0, seg, u);
2142
+ const tan = _chunkBJTCSLF6cjs.segmentTangent.call(void 0, seg, u);
2143
2143
  return { point: evalSeg(seg, u), tangent: [tan[0], tan[1]] };
2144
2144
  }
2145
2145
  want -= lengths[i];
@@ -2151,7 +2151,7 @@ function strokePositionPoint(path, index, t) {
2151
2151
  var KAPPA = 0.5522847498307936;
2152
2152
  var NOTCH = 0.7;
2153
2153
  function isClosedBezierShape(path) {
2154
- const contours = _chunkN3FVUOZDcjs.pathToContours.call(void 0, path).filter((c) => c.segments.length > 0);
2154
+ const contours = _chunkBJTCSLF6cjs.pathToContours.call(void 0, path).filter((c) => c.segments.length > 0);
2155
2155
  return contours.length > 0 && contours.every((c) => c.closed);
2156
2156
  }
2157
2157
  function effectiveStrokeAlign(style, closedShape) {
@@ -2172,7 +2172,7 @@ function vectorStrokeLineArea(parts, style, tolerance) {
2172
2172
  const join = _nullishCoalesce(style.strokeLinejoin, () => ( "miter"));
2173
2173
  const cap = _nullishCoalesce(style.strokeLinecap, () => ( "butt"));
2174
2174
  if (profile) return variableStrokeOutline(parts.line, { width: parts.drawWidth, profile, join, cap, ...dash, ...tolerance ? { tolerance } : {} });
2175
- return _chunkN3FVUOZDcjs.outlineStroke.call(void 0, parts.line, { width: parts.drawWidth, join, cap, ...dash, ...tolerance ? { tolerance } : {} });
2175
+ return _chunkBJTCSLF6cjs.outlineStroke.call(void 0, parts.line, { width: parts.drawWidth, join, cap, ...dash, ...tolerance ? { tolerance } : {} });
2176
2176
  }
2177
2177
  var capExtent = (style, width) => style.strokeLinecap === "round" || style.strokeLinecap === "square" ? width / 2 : 0;
2178
2178
  function arrowheadWeight(style, end) {
@@ -2253,16 +2253,16 @@ function arrowheadPath(kind, tip, dir, hw) {
2253
2253
  }
2254
2254
  }
2255
2255
  var toVec = (p) => ({ x: p[0], y: p[1] });
2256
- var segLen = (s) => _chunkN3FVUOZDcjs.segmentLength.call(void 0, s);
2256
+ var segLen = (s) => _chunkBJTCSLF6cjs.segmentLength.call(void 0, s);
2257
2257
  function endOf(segs, atStart) {
2258
2258
  const long = (s2) => segLen(s2) > 1e-9;
2259
2259
  if (atStart) {
2260
2260
  const s2 = _nullishCoalesce(segs.find(long), () => ( segs[0]));
2261
- const t2 = _chunkN3FVUOZDcjs.segmentTangent.call(void 0, s2, 0);
2261
+ const t2 = _chunkBJTCSLF6cjs.segmentTangent.call(void 0, s2, 0);
2262
2262
  return { p: toVec(segs[0][0]), out: v(-t2[0], -t2[1]) };
2263
2263
  }
2264
2264
  const s = _nullishCoalesce([...segs].reverse().find(long), () => ( segs[segs.length - 1]));
2265
- const t = _chunkN3FVUOZDcjs.segmentTangent.call(void 0, s, 1);
2265
+ const t = _chunkBJTCSLF6cjs.segmentTangent.call(void 0, s, 1);
2266
2266
  const last = segs[segs.length - 1];
2267
2267
  return { p: toVec(last[last.length - 1]), out: v(t[0], t[1]) };
2268
2268
  }
@@ -2273,7 +2273,7 @@ function pointAlong(segs, fromStart, dist3) {
2273
2273
  const l = segLen(s);
2274
2274
  if (acc + l >= dist3) {
2275
2275
  const want = fromStart ? dist3 - acc : l - (dist3 - acc);
2276
- const pts = _chunkN3FVUOZDcjs.trimSegments.call(void 0, [s], 0, want);
2276
+ const pts = _chunkBJTCSLF6cjs.trimSegments.call(void 0, [s], 0, want);
2277
2277
  const p = pts.length ? pts[0][pts[0].length - 1] : s[0];
2278
2278
  return toVec(p);
2279
2279
  }
@@ -2283,7 +2283,7 @@ function pointAlong(segs, fromStart, dist3) {
2283
2283
  }
2284
2284
  function vectorStrokeParts(path, style) {
2285
2285
  const width = _nullishCoalesce(style.strokeWidth, () => ( 1));
2286
- const contours = _chunkN3FVUOZDcjs.pathToContours.call(void 0, path).filter((c) => c.segments.length > 0);
2286
+ const contours = _chunkBJTCSLF6cjs.pathToContours.call(void 0, path).filter((c) => c.segments.length > 0);
2287
2287
  const closedShape = contours.length > 0 && contours.every((c) => c.closed);
2288
2288
  const align = effectiveStrokeAlign(style, closedShape);
2289
2289
  const drawWidth = align === "center" ? width : width * 2;
@@ -2323,26 +2323,26 @@ function vectorStrokeParts(path, style) {
2323
2323
  if (!s0 && !s1) return c;
2324
2324
  const lengths = c.segments.map(segLen);
2325
2325
  const total = lengths.reduce((a, b) => a + b, 0);
2326
- return { closed: false, segments: total - s1 > s0 ? _chunkN3FVUOZDcjs.trimSegments.call(void 0, c.segments, s0, total - s1, lengths) : [] };
2326
+ return { closed: false, segments: total - s1 > s0 ? _chunkBJTCSLF6cjs.trimSegments.call(void 0, c.segments, s0, total - s1, lengths) : [] };
2327
2327
  });
2328
- return { align, line: _chunkN3FVUOZDcjs.contoursToPath.call(void 0, trimmed), drawWidth, heads };
2328
+ return { align, line: _chunkBJTCSLF6cjs.contoursToPath.call(void 0, trimmed), drawWidth, heads };
2329
2329
  }
2330
2330
  function vectorStrokeOutlinePath(path, style) {
2331
2331
  const parts = vectorStrokeParts(path, style);
2332
2332
  const stroke = vectorStrokeLineArea(parts, style);
2333
2333
  const fill = { path, fillRule: _nullishCoalesce(style.fillRule, () => ( "nonzero")) };
2334
2334
  let area = stroke;
2335
- if (parts.align === "inside") area = _chunkN3FVUOZDcjs.pathBoolean.call(void 0, "intersection", [stroke, fill]).path;
2336
- else if (parts.align === "outside") area = _chunkN3FVUOZDcjs.pathBoolean.call(void 0, "difference", [stroke, fill]).path;
2335
+ if (parts.align === "inside") area = _chunkBJTCSLF6cjs.pathBoolean.call(void 0, "intersection", [stroke, fill]).path;
2336
+ else if (parts.align === "outside") area = _chunkBJTCSLF6cjs.pathBoolean.call(void 0, "difference", [stroke, fill]).path;
2337
2337
  if (!parts.heads.length) return area;
2338
- return _chunkN3FVUOZDcjs.pathBoolean.call(void 0, "union", [area, ...parts.heads.map((h) => h.path)]).path;
2338
+ return _chunkBJTCSLF6cjs.pathBoolean.call(void 0, "union", [area, ...parts.heads.map((h) => h.path)]).path;
2339
2339
  }
2340
2340
  function hitTestVectorStroke(path, p, style, tolerance = 0) {
2341
2341
  const parts = vectorStrokeParts(path, style);
2342
2342
  const point = [p.x, p.y];
2343
2343
  const width = _nullishCoalesce(style.strokeWidth, () => ( 1));
2344
2344
  for (const h of parts.heads) {
2345
- if (_chunkN3FVUOZDcjs.pointInBezierPath.call(void 0, h.path, point) || tolerance > 0 && _chunkN3FVUOZDcjs.distanceToBezierPath.call(void 0, h.path, point) <= tolerance) return true;
2345
+ if (_chunkBJTCSLF6cjs.pointInBezierPath.call(void 0, h.path, point) || tolerance > 0 && _chunkBJTCSLF6cjs.distanceToBezierPath.call(void 0, h.path, point) <= tolerance) return true;
2346
2346
  }
2347
2347
  if (!parts.line.length) return false;
2348
2348
  const profile = strokeWidthProfileOf(style);
@@ -2360,13 +2360,13 @@ function hitTestVectorStroke(path, p, style, tolerance = 0) {
2360
2360
  reach = Math.max(reach, width / 2 * (w.left + w.right) / 2);
2361
2361
  }
2362
2362
  } else {
2363
- d = _chunkN3FVUOZDcjs.distanceToBezierPath.call(void 0, parts.line, point);
2363
+ d = _chunkBJTCSLF6cjs.distanceToBezierPath.call(void 0, parts.line, point);
2364
2364
  if (parts.align !== "center") reach = width;
2365
2365
  }
2366
2366
  if (parts.align === "center") return d <= reach + tolerance;
2367
2367
  if (d > reach + tolerance) return false;
2368
2368
  if (d <= tolerance) return true;
2369
- const inside = _chunkN3FVUOZDcjs.pointInBezierPath.call(void 0, path, point, _nullishCoalesce(style.fillRule, () => ( "nonzero")));
2369
+ const inside = _chunkBJTCSLF6cjs.pointInBezierPath.call(void 0, path, point, _nullishCoalesce(style.fillRule, () => ( "nonzero")));
2370
2370
  return parts.align === "inside" ? inside : !inside;
2371
2371
  }
2372
2372
  function vectorStrokeReach(style) {
@@ -2620,14 +2620,14 @@ function hitTestVectorPaintLayer(node, path, p, tolerance = 0) {
2620
2620
  if (!l.drawn) continue;
2621
2621
  if (l.kind === "stroke") {
2622
2622
  if ((_nullishCoalesce(l.node.strokeWidth, () => ( 1))) > 0 && hitTestVectorStroke(path, p, l.node, tolerance)) return { kind: "stroke", index: l.index };
2623
- } else if (_chunkN3FVUOZDcjs.pointInBezierPath.call(void 0, path, [p.x, p.y], _nullishCoalesce(node.fillRule, () => ( "nonzero")))) return { kind: "fill", index: l.index };
2623
+ } else if (_chunkBJTCSLF6cjs.pointInBezierPath.call(void 0, path, [p.x, p.y], _nullishCoalesce(node.fillRule, () => ( "nonzero")))) return { kind: "fill", index: l.index };
2624
2624
  }
2625
2625
  return null;
2626
2626
  }
2627
2627
  function hitTestVectorPaintStack(node, path, p, tolerance = 0) {
2628
2628
  if (hitTestVectorPaintLayer(node, path, p, tolerance)) return true;
2629
2629
  if (vectorPaintLayerNodes(node).some((l) => l.kind === "stroke" && l.drawn)) return false;
2630
- return _chunkN3FVUOZDcjs.distanceToBezierPath.call(void 0, path, [p.x, p.y]) <= tolerance;
2630
+ return _chunkBJTCSLF6cjs.distanceToBezierPath.call(void 0, path, [p.x, p.y]) <= tolerance;
2631
2631
  }
2632
2632
  function vectorStacksHaveGradient(style) {
2633
2633
  return [..._nullishCoalesce(style.fills, () => ( [])), ..._nullishCoalesce(style.strokes, () => ( []))].some((l) => isVectorGradient(l.paint));
@@ -2661,9 +2661,9 @@ function raise(seg) {
2661
2661
  return [p0, [p0[0] + 2 / 3 * (p1[0] - p0[0]), p0[1] + 2 / 3 * (p1[1] - p0[1])], [p2[0] + 2 / 3 * (p1[0] - p2[0]), p2[1] + 2 / 3 * (p1[1] - p2[1])], p2];
2662
2662
  }
2663
2663
  function subsOf(path) {
2664
- return _chunkN3FVUOZDcjs.pathToContours.call(void 0, path).map((c) => ({ segs: _chunkN3FVUOZDcjs.closeContour.call(void 0, c).filter((s) => !degenerate(s)).map(raise), closed: c.closed })).filter((s) => s.segs.length > 0);
2664
+ return _chunkBJTCSLF6cjs.pathToContours.call(void 0, path).map((c) => ({ segs: _chunkBJTCSLF6cjs.closeContour.call(void 0, c).filter((s) => !degenerate(s)).map(raise), closed: c.closed })).filter((s) => s.segs.length > 0);
2665
2665
  }
2666
- var subsToPath = (subs) => _chunkN3FVUOZDcjs.contoursToPath.call(void 0, subs.map((s) => ({ segments: s.segs, closed: s.closed })));
2666
+ var subsToPath = (subs) => _chunkBJTCSLF6cjs.contoursToPath.call(void 0, subs.map((s) => ({ segments: s.segs, closed: s.closed })));
2667
2667
  var unit2 = (x, y) => {
2668
2668
  const l = Math.hypot(x, y);
2669
2669
  return l > 1e-12 && Number.isFinite(l) ? [x / l, y / l] : null;
@@ -2686,13 +2686,13 @@ function endTangent(s) {
2686
2686
  function tangentAt(s, t) {
2687
2687
  if (t <= 1e-9) return startTangent(s);
2688
2688
  if (t >= 1 - 1e-9) return endTangent(s);
2689
- const d = _chunkN3FVUOZDcjs.segmentDerivative.call(void 0, s, t);
2689
+ const d = _chunkBJTCSLF6cjs.segmentDerivative.call(void 0, s, t);
2690
2690
  return _nullishCoalesce(unit2(d[0], d[1]), () => ( startTangent(s)));
2691
2691
  }
2692
2692
  var perp2 = (v2) => [-v2[1], v2[0]];
2693
2693
  function effectPathLength(path) {
2694
2694
  let total = 0;
2695
- for (const s of subsOf(path)) for (const seg of s.segs) total += _chunkN3FVUOZDcjs.segmentLength.call(void 0, seg);
2695
+ for (const s of subsOf(path)) for (const seg of s.segs) total += _chunkBJTCSLF6cjs.segmentLength.call(void 0, seg);
2696
2696
  return total;
2697
2697
  }
2698
2698
  function effectPathVertexCount(path) {
@@ -2704,7 +2704,7 @@ var Measured = class {
2704
2704
 
2705
2705
  constructor(path) {
2706
2706
  this.segs = subsOf(path).flatMap((s) => s.segs);
2707
- this.lens = this.segs.map((s) => _chunkN3FVUOZDcjs.segmentLength.call(void 0, s));
2707
+ this.lens = this.segs.map((s) => _chunkBJTCSLF6cjs.segmentLength.call(void 0, s));
2708
2708
  this.total = this.lens.reduce((a, b) => a + b, 0);
2709
2709
  }
2710
2710
  /**
@@ -2712,7 +2712,7 @@ var Measured = class {
2712
2712
  * starts where it ends (across the start of a closed path).
2713
2713
  */
2714
2714
  append(sa, sb, out) {
2715
- for (const piece of _chunkN3FVUOZDcjs.trimSegments.call(void 0, this.segs, sa, sb, this.lens)) {
2715
+ for (const piece of _chunkBJTCSLF6cjs.trimSegments.call(void 0, this.segs, sa, sb, this.lens)) {
2716
2716
  if (degenerate(piece)) continue;
2717
2717
  const last = _optionalChain([out, 'access', _55 => _55[out.length - 1], 'optionalAccess', _56 => _56.segs]);
2718
2718
  const end = _optionalChain([last, 'optionalAccess', _57 => _57[last.length - 1], 'optionalAccess', _58 => _58.at, 'call', _59 => _59(-1)]);
@@ -2827,7 +2827,7 @@ function offsetPaths(paths, amount, join = "miter", miterLimit = 4, copies = 1,
2827
2827
  const n = Math.min(1e3, Math.max(1, Math.round(Number.isFinite(copies) ? copies : 1)));
2828
2828
  return paths.map((p) => {
2829
2829
  const out = [];
2830
- for (let i = 0; i < n; i++) out.push(..._chunkN3FVUOZDcjs.offsetPath.call(void 0, p, amount * (i + 1 + copyOffset), { join, miterLimit }));
2830
+ for (let i = 0; i < n; i++) out.push(..._chunkBJTCSLF6cjs.offsetPath.call(void 0, p, amount * (i + 1 + copyOffset), { join, miterLimit }));
2831
2831
  return out;
2832
2832
  });
2833
2833
  }
@@ -2835,8 +2835,8 @@ function sweepPath(path, dx, dy, fillRule = "nonzero", tolerance = 0.25) {
2835
2835
  if (!path.length) return [];
2836
2836
  if (!Number.isFinite(dx) || !Number.isFinite(dy) || Math.hypot(dx, dy) < 1e-9) return path.slice();
2837
2837
  const bands = [];
2838
- for (const contour of _chunkN3FVUOZDcjs.pathToContours.call(void 0, path)) {
2839
- const ring = _chunkN3FVUOZDcjs.flattenChain.call(void 0, _chunkN3FVUOZDcjs.closeContour.call(void 0, contour, true), Math.max(1e-3, tolerance));
2838
+ for (const contour of _chunkBJTCSLF6cjs.pathToContours.call(void 0, path)) {
2839
+ const ring = _chunkBJTCSLF6cjs.flattenChain.call(void 0, _chunkBJTCSLF6cjs.closeContour.call(void 0, contour, true), Math.max(1e-3, tolerance));
2840
2840
  for (let i = 0; i < ring.length; i++) {
2841
2841
  let p = ring[i];
2842
2842
  let q = ring[(i + 1) % ring.length];
@@ -2846,8 +2846,8 @@ function sweepPath(path, dx, dy, fillRule = "nonzero", tolerance = 0.25) {
2846
2846
  bands.push({ type: "M", x: p[0], y: p[1] }, { type: "L", x: q[0], y: q[1] }, { type: "L", x: q[0] + dx, y: q[1] + dy }, { type: "L", x: p[0] + dx, y: p[1] + dy }, { type: "Z" });
2847
2847
  }
2848
2848
  }
2849
- const moved = _chunkN3FVUOZDcjs.transformBezierPath.call(void 0, path, [1, 0, 0, 1, dx, dy]);
2850
- return _chunkN3FVUOZDcjs.pathBoolean.call(void 0, "union", [{ path, fillRule }, { path: moved, fillRule }, ...bands.length ? [{ path: bands, fillRule: "nonzero" }] : []]).path;
2849
+ const moved = _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, path, [1, 0, 0, 1, dx, dy]);
2850
+ return _chunkBJTCSLF6cjs.pathBoolean.call(void 0, "union", [{ path, fillRule }, { path: moved, fillRule }, ...bands.length ? [{ path: bands, fillRule: "nonzero" }] : []]).path;
2851
2851
  }
2852
2852
  function twistPaths(paths, angle, center) {
2853
2853
  let rmax = 0;
@@ -2881,10 +2881,10 @@ function twistPaths(paths, angle, center) {
2881
2881
  const segs = [];
2882
2882
  for (const seg of sub5.segs) {
2883
2883
  const cubic = seg.length === 2 ? [seg[0], seg[0], seg[1], seg[1]] : seg;
2884
- const len2 = _chunkN3FVUOZDcjs.segmentLength.call(void 0, seg);
2884
+ const len2 = _chunkBJTCSLF6cjs.segmentLength.call(void 0, seg);
2885
2885
  const m = Math.min(64, Math.max(1, Math.ceil(Math.abs(a) * len2 / rmax / 0.15 + len2 / 50)));
2886
2886
  for (let i = 0; i < m; i++) {
2887
- const q = _chunkN3FVUOZDcjs.subSegment.call(void 0, cubic, i / m, (i + 1) / m);
2887
+ const q = _chunkBJTCSLF6cjs.subSegment.call(void 0, cubic, i / m, (i + 1) / m);
2888
2888
  const p0 = map(q[0]);
2889
2889
  const p3 = map(q[3]);
2890
2890
  const h1 = jac(q[0], [q[1][0] - q[0][0], q[1][1] - q[0][1]]);
@@ -2900,7 +2900,7 @@ function twistPaths(paths, angle, center) {
2900
2900
  function resample(sub5, m) {
2901
2901
  const segs = sub5.segs;
2902
2902
  const n = segs.length;
2903
- const lens = segs.map((s) => _chunkN3FVUOZDcjs.segmentLength.call(void 0, s));
2903
+ const lens = segs.map((s) => _chunkBJTCSLF6cjs.segmentLength.call(void 0, s));
2904
2904
  const out = [];
2905
2905
  for (let j = 0; j < n; j++) {
2906
2906
  const piece = lens[j] / m;
@@ -2915,8 +2915,8 @@ function resample(sub5, m) {
2915
2915
  }
2916
2916
  out.push({ p: segs[j][0], tan, lenPrev: prev === null ? 0 : lens[prev] / m, lenNext: piece });
2917
2917
  } else {
2918
- const t = _chunkN3FVUOZDcjs.segmentParamAtLength.call(void 0, segs[j], piece * k, lens[j]);
2919
- out.push({ p: _chunkN3FVUOZDcjs.segmentPoint.call(void 0, segs[j], t), tan: tangentAt(segs[j], t), lenPrev: piece, lenNext: piece });
2918
+ const t = _chunkBJTCSLF6cjs.segmentParamAtLength.call(void 0, segs[j], piece * k, lens[j]);
2919
+ out.push({ p: _chunkBJTCSLF6cjs.segmentPoint.call(void 0, segs[j], t), tan: tangentAt(segs[j], t), lenPrev: piece, lenNext: piece });
2920
2920
  }
2921
2921
  }
2922
2922
  }
@@ -3014,7 +3014,7 @@ function mergePaths(paths, mode = "merge") {
3014
3014
  if (mode === "merge" || !(mode in MERGE_OPS)) return paths.flat();
3015
3015
  const inputs = paths.filter((p) => p.length > 0).map((path) => ({ path, fillRule: "nonzero" }));
3016
3016
  if (!inputs.length) return [];
3017
- return _chunkN3FVUOZDcjs.pathBoolean.call(void 0, MERGE_OPS[mode], inputs).path;
3017
+ return _chunkBJTCSLF6cjs.pathBoolean.call(void 0, MERGE_OPS[mode], inputs).path;
3018
3018
  }
3019
3019
  function vectorRepeaterCopies(r, pivot) {
3020
3020
  const copies = Math.max(0, Number.isFinite(r.copies) ? Math.min(r.copies, 1e3) : 0);
@@ -3037,10 +3037,10 @@ function vectorRepeaterCopies(r, pivot) {
3037
3037
  return out;
3038
3038
  }
3039
3039
  function repeatPaths(paths, r, pivot) {
3040
- return vectorRepeaterCopies(r, pivot).map((copy) => ({ copy, paths: paths.map((p) => _chunkN3FVUOZDcjs.transformBezierPath.call(void 0, p, copy.matrix)) }));
3040
+ return vectorRepeaterCopies(r, pivot).map((copy) => ({ copy, paths: paths.map((p) => _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, p, copy.matrix)) }));
3041
3041
  }
3042
3042
  function pathsCenter(paths) {
3043
- const b = _chunkN3FVUOZDcjs.bezierPathBounds.call(void 0, paths.flat());
3043
+ const b = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, paths.flat());
3044
3044
  return b ? { x: (b.minX + b.maxX) / 2, y: (b.minY + b.maxY) / 2 } : { x: 0, y: 0 };
3045
3045
  }
3046
3046
 
@@ -3110,13 +3110,13 @@ function refit(seg, pieces, f, tol) {
3110
3110
  const last = pieces[pieces.length - 1];
3111
3111
  const t0 = !same(first[1], first[0]) ? first[1] : first[2];
3112
3112
  const t1 = !same(last[2], last[3]) ? last[2] : last[1];
3113
- const fitted = _chunkGUZ47CJMcjs.fitCubicRun.call(void 0, samples, tol / 2, [t0.x - first[0].x, t0.y - first[0].y], [last[3].x - t1.x, last[3].y - t1.y]);
3113
+ const fitted = _chunkIZ4WRXZAcjs.fitCubicRun.call(void 0, samples, tol / 2, [t0.x - first[0].x, t0.y - first[0].y], [last[3].x - t1.x, last[3].y - t1.y]);
3114
3114
  if (!fitted.length || fitted.length >= pieces.length) return pieces;
3115
3115
  const chain = fitted.map((c) => [c.p0, c.p1, c.p2, c.p3]);
3116
3116
  for (let i = 0; i < n; i++) {
3117
3117
  const q = toPoint(f(evalCubic(seg, (i + 0.5) / n)));
3118
3118
  let best = Infinity;
3119
- for (const c of chain) best = Math.min(best, _chunkN3FVUOZDcjs.segmentNearest.call(void 0, c, q).distance);
3119
+ for (const c of chain) best = Math.min(best, _chunkBJTCSLF6cjs.segmentNearest.call(void 0, c, q).distance);
3120
3120
  if (best > tol) return pieces;
3121
3121
  }
3122
3122
  return fitted.map((c) => [toVec2(c.p0), toVec2(c.p1), toVec2(c.p2), toVec2(c.p3)]);
@@ -3317,12 +3317,12 @@ function getVectorFramePanel(state) {
3317
3317
  }
3318
3318
 
3319
3319
  // src/vector/pathCut.ts
3320
- var loopArea = (l) => _chunkN3FVUOZDcjs.contourSignedArea.call(void 0, l.segs);
3320
+ var loopArea = (l) => _chunkBJTCSLF6cjs.contourSignedArea.call(void 0, l.segs);
3321
3321
  function loopSample(l) {
3322
3322
  const k = l.chord.findIndex((c) => !c);
3323
- return _chunkN3FVUOZDcjs.segmentPoint.call(void 0, l.segs[k >= 0 ? k : 0], 0.5);
3323
+ return _chunkBJTCSLF6cjs.segmentPoint.call(void 0, l.segs[k >= 0 ? k : 0], 0.5);
3324
3324
  }
3325
- var contains = (l, p) => _chunkN3FVUOZDcjs.windingNumber.call(void 0, [l.segs], p) !== 0;
3325
+ var contains = (l, p) => _chunkBJTCSLF6cjs.windingNumber.call(void 0, [l.segs], p) !== 0;
3326
3326
  function groupFaces(loops) {
3327
3327
  const usable = loops.filter((l) => l.segs.length && Math.abs(loopArea(l)) > 1e-12);
3328
3328
  if (!usable.length) return [];
@@ -3338,12 +3338,12 @@ function groupFaces(loops) {
3338
3338
  return outers.reverse().map((o) => faces.get(o));
3339
3339
  }
3340
3340
  function faceToPath(face) {
3341
- return _chunkN3FVUOZDcjs.contoursToPath.call(void 0, face.loops.map((l) => ({ segments: l.segs, closed: true })));
3341
+ return _chunkBJTCSLF6cjs.contoursToPath.call(void 0, face.loops.map((l) => ({ segments: l.segs, closed: true })));
3342
3342
  }
3343
3343
  function facesOf(path, fillRule) {
3344
- const normalized = _chunkN3FVUOZDcjs.normalizeBezierPath.call(void 0, path, fillRule);
3345
- const loops = _chunkN3FVUOZDcjs.pathToContours.call(void 0, normalized).map((c) => {
3346
- const segs = _chunkN3FVUOZDcjs.closeContour.call(void 0, c, true).map((s) => s.slice());
3344
+ const normalized = _chunkBJTCSLF6cjs.normalizeBezierPath.call(void 0, path, fillRule);
3345
+ const loops = _chunkBJTCSLF6cjs.pathToContours.call(void 0, normalized).map((c) => {
3346
+ const segs = _chunkBJTCSLF6cjs.closeContour.call(void 0, c, true).map((s) => s.slice());
3347
3347
  return { segs, chord: segs.map(() => false) };
3348
3348
  });
3349
3349
  return groupFaces(loops);
@@ -3413,7 +3413,7 @@ function lineHits(p, q, seg) {
3413
3413
  const scale3 = Math.sqrt(len2) * Math.max(1, ...seg.map((pt2) => Math.abs(pt2[0]) + Math.abs(pt2[1])));
3414
3414
  const out = [];
3415
3415
  for (const t of rootsInUnit(...coeffs, scale3)) {
3416
- const point = _chunkN3FVUOZDcjs.segmentPoint.call(void 0, seg, t);
3416
+ const point = _chunkBJTCSLF6cjs.segmentPoint.call(void 0, seg, t);
3417
3417
  const s = ((point[0] - p[0]) * dx + (point[1] - p[1]) * dy) / len2;
3418
3418
  if (s >= -1e-9 && s <= 1 + 1e-9) out.push({ s: Math.min(1, Math.max(0, s)), t, point });
3419
3419
  }
@@ -3426,7 +3426,7 @@ function arc(l, a, b, eps) {
3426
3426
  const segs = [];
3427
3427
  const chord = [];
3428
3428
  const push = (k, t0, t1) => {
3429
- const piece = t0 <= 0 && t1 >= 1 ? l.segs[k].slice() : _chunkN3FVUOZDcjs.subSegment.call(void 0, l.segs[k], t0, t1);
3429
+ const piece = t0 <= 0 && t1 >= 1 ? l.segs[k].slice() : _chunkBJTCSLF6cjs.subSegment.call(void 0, l.segs[k], t0, t1);
3430
3430
  if (!degenerate2(piece, eps)) {
3431
3431
  segs.push(piece);
3432
3432
  chord.push(l.chord[k]);
@@ -3451,7 +3451,7 @@ function knifePath(path, fillRule, knife) {
3451
3451
  if (pts.length < 2) return null;
3452
3452
  let faces = facesOf(path, fillRule);
3453
3453
  if (!faces.length) return null;
3454
- const b = _chunkN3FVUOZDcjs.bezierPathBounds.call(void 0, path);
3454
+ const b = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, path);
3455
3455
  const size = b ? Math.max(b.maxX - b.minX, b.maxY - b.minY, 1) : 1;
3456
3456
  const eps = size * 1e-9;
3457
3457
  let cursor = -Infinity;
@@ -3465,7 +3465,7 @@ function knifePath(path, fillRule, knife) {
3465
3465
  const kb = { minX: Math.min(pts[m][0], pts[m + 1][0]), maxX: Math.max(pts[m][0], pts[m + 1][0]), minY: Math.min(pts[m][1], pts[m + 1][1]), maxY: Math.max(pts[m][1], pts[m + 1][1]) };
3466
3466
  face2.loops.forEach(
3467
3467
  (l, li) => l.segs.forEach((seg, si) => {
3468
- const sb = _chunkN3FVUOZDcjs.segmentBounds.call(void 0, seg);
3468
+ const sb = _chunkBJTCSLF6cjs.segmentBounds.call(void 0, seg);
3469
3469
  if (sb.maxX < kb.minX - eps || sb.minX > kb.maxX + eps || sb.maxY < kb.minY - eps || sb.minY > kb.maxY + eps) return;
3470
3470
  for (const h of lineHits(pts[m], pts[m + 1], seg)) {
3471
3471
  const s = m + h.s;
@@ -3480,7 +3480,7 @@ function knifePath(path, fillRule, knife) {
3480
3480
  const m = Math.min(pts.length - 2, Math.floor(s));
3481
3481
  const u = s - m;
3482
3482
  const q = [pts[m][0] + (pts[m + 1][0] - pts[m][0]) * u, pts[m][1] + (pts[m + 1][1] - pts[m][1]) * u];
3483
- return _chunkN3FVUOZDcjs.windingNumber.call(void 0, face2.loops.map((l) => l.segs), q) !== 0;
3483
+ return _chunkBJTCSLF6cjs.windingNumber.call(void 0, face2.loops.map((l) => l.segs), q) !== 0;
3484
3484
  };
3485
3485
  for (let i = 0; i < unique.length - 1; i++) {
3486
3486
  const from2 = unique[i];
@@ -3540,34 +3540,34 @@ function eraserRegion(points, width) {
3540
3540
  ];
3541
3541
  }
3542
3542
  const line = [{ type: "M", x: pts[0][0], y: pts[0][1] }, ...pts.slice(1).map((p) => ({ type: "L", x: p[0], y: p[1] }))];
3543
- return _chunkN3FVUOZDcjs.outlineStroke.call(void 0, line, { width, cap: "round", join: "round" });
3543
+ return _chunkBJTCSLF6cjs.outlineStroke.call(void 0, line, { width, cap: "round", join: "round" });
3544
3544
  }
3545
3545
  function eraseFromFill(path, fillRule, region) {
3546
- const overlap = _chunkN3FVUOZDcjs.pathBoolean.call(void 0, "intersection", [{ path, fillRule }, { path: region }]).path;
3547
- if (!_chunkN3FVUOZDcjs.pathToContours.call(void 0, overlap).some((c) => Math.abs(_chunkN3FVUOZDcjs.contourSignedArea.call(void 0, _chunkN3FVUOZDcjs.closeContour.call(void 0, c, true))) > 1e-9)) return null;
3548
- const rest = _chunkN3FVUOZDcjs.pathBoolean.call(void 0, "difference", [{ path, fillRule }, { path: region }]).path;
3546
+ const overlap = _chunkBJTCSLF6cjs.pathBoolean.call(void 0, "intersection", [{ path, fillRule }, { path: region }]).path;
3547
+ if (!_chunkBJTCSLF6cjs.pathToContours.call(void 0, overlap).some((c) => Math.abs(_chunkBJTCSLF6cjs.contourSignedArea.call(void 0, _chunkBJTCSLF6cjs.closeContour.call(void 0, c, true))) > 1e-9)) return null;
3548
+ const rest = _chunkBJTCSLF6cjs.pathBoolean.call(void 0, "difference", [{ path, fillRule }, { path: region }]).path;
3549
3549
  return splitIntoFaces(rest);
3550
3550
  }
3551
3551
  function eraseFromOutline(sp, region, options = {}) {
3552
- const regionSegs = _chunkN3FVUOZDcjs.pathToContours.call(void 0, region).flatMap((c) => _chunkN3FVUOZDcjs.closeContour.call(void 0, c, true));
3552
+ const regionSegs = _chunkBJTCSLF6cjs.pathToContours.call(void 0, region).flatMap((c) => _chunkBJTCSLF6cjs.closeContour.call(void 0, c, true));
3553
3553
  if (!regionSegs.length) return null;
3554
- const rb = _chunkN3FVUOZDcjs.bezierPathBounds.call(void 0, region);
3554
+ const rb = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, region);
3555
3555
  const count = subpathSegmentCount(sp);
3556
3556
  if (!rb || count === 0) return null;
3557
3557
  const inside = options.keep === "inside";
3558
- const removed = (p) => _chunkN3FVUOZDcjs.pointInBezierPath.call(void 0, region, p, _nullishCoalesce(options.fillRule, () => ( "nonzero"))) !== inside;
3558
+ const removed = (p) => _chunkBJTCSLF6cjs.pointInBezierPath.call(void 0, region, p, _nullishCoalesce(options.fillRule, () => ( "nonzero"))) !== inside;
3559
3559
  const runs = [];
3560
3560
  let cur = [];
3561
3561
  let any = false;
3562
3562
  for (let i = 0; i < count; i++) {
3563
3563
  const seg = subpathSegment(sp, i);
3564
- const sb = _chunkN3FVUOZDcjs.segmentBounds.call(void 0, seg);
3564
+ const sb = _chunkBJTCSLF6cjs.segmentBounds.call(void 0, seg);
3565
3565
  const ts = [0, 1];
3566
3566
  if (!(sb.maxX < rb.minX || sb.minX > rb.maxX || sb.maxY < rb.minY || sb.minY > rb.maxY)) {
3567
3567
  for (const r of regionSegs) {
3568
- const b = _chunkN3FVUOZDcjs.segmentBounds.call(void 0, r);
3568
+ const b = _chunkBJTCSLF6cjs.segmentBounds.call(void 0, r);
3569
3569
  if (b.maxX < sb.minX || b.minX > sb.maxX || b.maxY < sb.minY || b.minY > sb.maxY) continue;
3570
- for (const hit of _chunkN3FVUOZDcjs.segmentIntersections.call(void 0, seg, r)) if (hit.ta > 1e-9 && hit.ta < 1 - 1e-9) ts.push(hit.ta);
3570
+ for (const hit of _chunkBJTCSLF6cjs.segmentIntersections.call(void 0, seg, r)) if (hit.ta > 1e-9 && hit.ta < 1 - 1e-9) ts.push(hit.ta);
3571
3571
  }
3572
3572
  }
3573
3573
  ts.sort((a, b) => a - b);
@@ -3575,7 +3575,7 @@ function eraseFromOutline(sp, region, options = {}) {
3575
3575
  const t0 = ts[k];
3576
3576
  const t1 = ts[k + 1];
3577
3577
  if (t1 - t0 < 1e-9) continue;
3578
- if (removed(_chunkN3FVUOZDcjs.segmentPoint.call(void 0, seg, (t0 + t1) / 2))) {
3578
+ if (removed(_chunkBJTCSLF6cjs.segmentPoint.call(void 0, seg, (t0 + t1) / 2))) {
3579
3579
  any = true;
3580
3580
  if (cur.length) runs.push(cur);
3581
3581
  cur = [];
@@ -3594,7 +3594,7 @@ function eraseFromOutline(sp, region, options = {}) {
3594
3594
  for (const run of runs) {
3595
3595
  const anchors = [];
3596
3596
  for (const { seg, t0, t1 } of run) {
3597
- const c = _chunkN3FVUOZDcjs.subSegment.call(void 0, subpathSegment(sp, seg), t0, t1);
3597
+ const c = _chunkBJTCSLF6cjs.subSegment.call(void 0, subpathSegment(sp, seg), t0, t1);
3598
3598
  const line = c.length === 2;
3599
3599
  const start = c[0];
3600
3600
  const end = c[c.length - 1];
@@ -3893,7 +3893,7 @@ function vectorMaskSummary(node) {
3893
3893
  enabled: node.children[0].visible !== false
3894
3894
  };
3895
3895
  }
3896
- var place = (path, m) => isIdentityMatrix(m) ? path : _chunkN3FVUOZDcjs.transformBezierPath.call(void 0, path, m);
3896
+ var place = (path, m) => isIdentityMatrix(m) ? path : _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, path, m);
3897
3897
  function vectorMaskRegionShapes(node, type, parent = IDENTITY_MATRIX, self = true) {
3898
3898
  if (!self && node.visible === false) return [];
3899
3899
  if (isVectorFrame(node)) node = vectorFrameDrawn(node);
@@ -3940,7 +3940,7 @@ function vectorMaskRegionPath(group) {
3940
3940
  let hit = unionCache.get(group);
3941
3941
  if (!hit) {
3942
3942
  const shapes = vectorMaskRegion(group);
3943
- hit = !shapes.length ? [] : shapes.length === 1 && shapes[0].fillRule === "nonzero" ? shapes[0].path : _chunkN3FVUOZDcjs.pathBoolean.call(void 0, "union", shapes.map((s) => ({ path: s.path, fillRule: s.fillRule }))).path;
3943
+ hit = !shapes.length ? [] : shapes.length === 1 && shapes[0].fillRule === "nonzero" ? shapes[0].path : _chunkBJTCSLF6cjs.pathBoolean.call(void 0, "union", shapes.map((s) => ({ path: s.path, fillRule: s.fillRule }))).path;
3944
3944
  unionCache.set(group, hit);
3945
3945
  }
3946
3946
  return hit;
@@ -3948,8 +3948,8 @@ function vectorMaskRegionPath(group) {
3948
3948
  function inRegion(group, p, tolerance) {
3949
3949
  const pt2 = [p.x, p.y];
3950
3950
  for (const s of vectorMaskRegion(group)) {
3951
- if (_chunkN3FVUOZDcjs.pointInBezierPath.call(void 0, s.path, pt2, s.fillRule)) return true;
3952
- if (tolerance > 0 && _chunkN3FVUOZDcjs.distanceToBezierPath.call(void 0, s.path, pt2) <= tolerance) return true;
3951
+ if (_chunkBJTCSLF6cjs.pointInBezierPath.call(void 0, s.path, pt2, s.fillRule)) return true;
3952
+ if (tolerance > 0 && _chunkBJTCSLF6cjs.distanceToBezierPath.call(void 0, s.path, pt2) <= tolerance) return true;
3953
3953
  }
3954
3954
  return false;
3955
3955
  }
@@ -3965,7 +3965,7 @@ function vectorMaskContains(group, p, tolerance = 0) {
3965
3965
  }
3966
3966
  function hitNearEdge(group, p, tolerance) {
3967
3967
  if (tolerance <= 0) return false;
3968
- return vectorMaskRegion(group).some((s) => _chunkN3FVUOZDcjs.distanceToBezierPath.call(void 0, s.path, [p.x, p.y]) <= tolerance);
3968
+ return vectorMaskRegion(group).some((s) => _chunkBJTCSLF6cjs.distanceToBezierPath.call(void 0, s.path, [p.x, p.y]) <= tolerance);
3969
3969
  }
3970
3970
  function clipOpen(path, region, invert2) {
3971
3971
  const out = [];
@@ -3973,7 +3973,7 @@ function clipOpen(path, region, invert2) {
3973
3973
  const pieces = eraseFromOutline(sp, region, { keep: invert2 ? "outside" : "inside" });
3974
3974
  if (pieces === null) {
3975
3975
  const a = sp.anchors[0];
3976
- const inside = !!a && _chunkN3FVUOZDcjs.pointInBezierPath.call(void 0, region, [a.x, a.y], "nonzero");
3976
+ const inside = !!a && _chunkBJTCSLF6cjs.pointInBezierPath.call(void 0, region, [a.x, a.y], "nonzero");
3977
3977
  if (inside !== invert2) out.push(...subpathsToBezier([sp]));
3978
3978
  } else out.push(...subpathsToBezier(pieces));
3979
3979
  }
@@ -3986,7 +3986,7 @@ function clipShapePath(path, fillRule, region, invert2) {
3986
3986
  const out = [];
3987
3987
  if (closed.length) {
3988
3988
  const operands = [{ path: subpathsToBezier(closed), fillRule }, { path: region, fillRule: "nonzero" }];
3989
- out.push(...region.length ? _chunkN3FVUOZDcjs.pathBoolean.call(void 0, invert2 ? "difference" : "intersection", operands).path : invert2 ? operands[0].path : []);
3989
+ out.push(...region.length ? _chunkBJTCSLF6cjs.pathBoolean.call(void 0, invert2 ? "difference" : "intersection", operands).path : invert2 ? operands[0].path : []);
3990
3990
  }
3991
3991
  if (open.length) out.push(...region.length ? clipOpen(subpathsToBezier(open), region, invert2) : invert2 ? subpathsToBezier(open) : []);
3992
3992
  return out;
@@ -4026,7 +4026,7 @@ function vectorMaskedGeometry(node) {
4026
4026
  return changed ? { ...node, children } : node;
4027
4027
  }
4028
4028
  function vectorMaskedLocalBounds(group) {
4029
- const b = _chunkN3FVUOZDcjs.bezierPathBounds.call(void 0, vectorAppearanceShapes(group).flatMap((s) => s.path));
4029
+ const b = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, vectorAppearanceShapes(group).flatMap((s) => s.path));
4030
4030
  return b ? { x: b.minX, y: b.minY, width: b.maxX - b.minX, height: b.maxY - b.minY } : null;
4031
4031
  }
4032
4032
  function paintReach(node) {
@@ -4067,10 +4067,10 @@ function vectorMaskRenderData(group, id, filterId, precision = 3) {
4067
4067
  const bounds = vectorMaskContentBounds(group);
4068
4068
  if (group.mask.type === "clip") {
4069
4069
  const shapes = vectorMaskRegion(group);
4070
- if (!invert2) return { type: "clip", invert: invert2, id, clip: shapes.map((s) => ({ d: _chunkN3FVUOZDcjs.bezierPathToSvg.call(void 0, s.path, { precision }), clipRule: s.fillRule })) };
4070
+ if (!invert2) return { type: "clip", invert: invert2, id, clip: shapes.map((s) => ({ d: _chunkBJTCSLF6cjs.bezierPathToSvg.call(void 0, s.path, { precision }), clipRule: s.fillRule })) };
4071
4071
  const box = _nullishCoalesce(bounds, () => ( { x: 0, y: 0, width: 0, height: 0 }));
4072
4072
  const region = vectorMaskRegionPath(group);
4073
- return { type: "clip", invert: invert2, id, clip: [{ d: _chunkN3FVUOZDcjs.bezierPathToSvg.call(void 0, [...rectPath(box), ...region], { precision }), clipRule: "evenodd" }] };
4073
+ return { type: "clip", invert: invert2, id, clip: [{ d: _chunkBJTCSLF6cjs.bezierPathToSvg.call(void 0, [...rectPath(box), ...region], { precision }), clipRule: "evenodd" }] };
4074
4074
  }
4075
4075
  if (!bounds) return null;
4076
4076
  if (!invert2) return { type: group.mask.type, invert: invert2, id, bounds };
@@ -4952,7 +4952,7 @@ function vectorTextPaths(node) {
4952
4952
  if (!f.laid) return;
4953
4953
  let path = textFragmentOutline(shaper, blockText, f.laid.fragment);
4954
4954
  for (const r of textDecorations(f.laid.fragment, f.laid.line)) path = [...path, ...textRectPath(r)];
4955
- out.push(...layout.origin.x || layout.origin.y ? _chunkN3FVUOZDcjs.transformBezierPath.call(void 0, path, [1, 0, 0, 1, layout.origin.x, layout.origin.y]) : path);
4955
+ out.push(...layout.origin.x || layout.origin.y ? _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, path, [1, 0, 0, 1, layout.origin.x, layout.origin.y]) : path);
4956
4956
  return;
4957
4957
  }
4958
4958
  for (const g of glyphs) {
@@ -4961,7 +4961,7 @@ function vectorTextPaths(node) {
4961
4961
  const r = g.angle * Math.PI / 180;
4962
4962
  const c = Math.cos(r);
4963
4963
  const s = Math.sin(r);
4964
- out.push(..._chunkN3FVUOZDcjs.transformBezierPath.call(void 0, glyph, [c, s, -s, c, g.x, g.y]));
4964
+ out.push(..._chunkBJTCSLF6cjs.transformBezierPath.call(void 0, glyph, [c, s, -s, c, g.x, g.y]));
4965
4965
  }
4966
4966
  if (f.style.underline || f.style.strikethrough) {
4967
4967
  const t = Math.max(1, f.style.fontSize / 15);
@@ -5283,7 +5283,7 @@ function vectorTextName(text) {
5283
5283
  return t ? t.length > 24 ? `${t.slice(0, 24)}\u2026` : t : "Text";
5284
5284
  }
5285
5285
  function pathTextFrameFromBezier(path) {
5286
- const cmds = _chunkN3FVUOZDcjs.toBezierPath.call(void 0, path);
5286
+ const cmds = _chunkBJTCSLF6cjs.toBezierPath.call(void 0, path);
5287
5287
  const anchors = [];
5288
5288
  let closed = false;
5289
5289
  for (const c of cmds) {
@@ -6446,7 +6446,7 @@ function pathsBounds(paths) {
6446
6446
  let maxX = -Infinity;
6447
6447
  let maxY = -Infinity;
6448
6448
  for (const p of paths) {
6449
- const b = _chunkN3FVUOZDcjs.bezierPathBounds.call(void 0, p);
6449
+ const b = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, p);
6450
6450
  if (!b) continue;
6451
6451
  minX = Math.min(minX, b.minX);
6452
6452
  minY = Math.min(minY, b.minY);
@@ -6613,7 +6613,7 @@ function foldVectorBooleanOperands(operands) {
6613
6613
  for (let i = start + 1; i < operands.length; i++) {
6614
6614
  const o = operands[i];
6615
6615
  foldSteps++;
6616
- const r = _chunkN3FVUOZDcjs.pathBoolean.call(void 0, _nullishCoalesce(PATH_OPS[o.operation], () => ( "union")), [
6616
+ const r = _chunkBJTCSLF6cjs.pathBoolean.call(void 0, _nullishCoalesce(PATH_OPS[o.operation], () => ( "union")), [
6617
6617
  { path: acc, fillRule: accRule },
6618
6618
  { path: o.path, fillRule: o.fillRule }
6619
6619
  ]);
@@ -6650,7 +6650,7 @@ function contourShapes(shapes, c) {
6650
6650
  for (const s of shapes) {
6651
6651
  let n = Math.min(200, Math.max(1, Math.round(c.steps)));
6652
6652
  if (c.direction === "center") {
6653
- const b = _chunkN3FVUOZDcjs.bezierPathBounds.call(void 0, s.path);
6653
+ const b = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, s.path);
6654
6654
  n = b ? Math.min(200, Math.max(1, Math.ceil(Math.min(b.maxX - b.minX, b.maxY - b.minY) / 2 / step))) : 0;
6655
6655
  }
6656
6656
  out.push({ ...s, order: [outside ? n : 0, ...s.order] });
@@ -6673,7 +6673,7 @@ function blockShadowShapes(shapes, b) {
6673
6673
  for (const s of shapes) {
6674
6674
  const color2 = _nullishCoalesce(b.color, () => ( (typeof s.source.fill === "string" && s.source.fill !== "none" ? s.source.fill : "#000000")));
6675
6675
  const path = sweepPath(s.path, u.x * distance, u.y * distance, s.source.fillRule === "evenodd" ? "evenodd" : "nonzero");
6676
- const box = _chunkN3FVUOZDcjs.bezierPathBounds.call(void 0, s.path);
6676
+ const box = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, s.path);
6677
6677
  if (!path.length || !box) continue;
6678
6678
  let fill = color2;
6679
6679
  const near3 = Math.min(100, Math.max(0, b.opacity));
@@ -6783,7 +6783,7 @@ function vectorChildAppearanceShapes(child, index) {
6783
6783
  const k = _nullishCoalesce(child.opacity, () => ( 1));
6784
6784
  return vectorAppearanceShapes(child).map((s) => ({
6785
6785
  source: s.source,
6786
- path: m && !isIdentityMatrix(m) ? _chunkN3FVUOZDcjs.transformBezierPath.call(void 0, s.path, m) : s.path,
6786
+ path: m && !isIdentityMatrix(m) ? _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, s.path, m) : s.path,
6787
6787
  opacity: s.opacity * k,
6788
6788
  order: [index, ...s.order]
6789
6789
  }));
@@ -6795,7 +6795,7 @@ function liveBooleanShapes(group) {
6795
6795
  const shapes = vectorChildAppearanceShapes(child, i);
6796
6796
  if (!shapes.length) return;
6797
6797
  source ??= shapes[0].source;
6798
- const path = shapes.length === 1 ? shapes[0].path : _chunkN3FVUOZDcjs.pathBoolean.call(void 0, "union", shapes.map((s) => ({ path: s.path, fillRule: _nullishCoalesce(s.source.fillRule, () => ( "nonzero")) }))).path;
6798
+ const path = shapes.length === 1 ? shapes[0].path : _chunkBJTCSLF6cjs.pathBoolean.call(void 0, "union", shapes.map((s) => ({ path: s.path, fillRule: _nullishCoalesce(s.source.fillRule, () => ( "nonzero")) }))).path;
6799
6799
  const fillRule = shapes.length === 1 ? _nullishCoalesce(shapes[0].source.fillRule, () => ( "nonzero")) : "nonzero";
6800
6800
  operands.push({ path, fillRule, operation: vectorOperandOperation(group, child) });
6801
6801
  });
@@ -7302,10 +7302,10 @@ var unit3 = (v2) => {
7302
7302
  };
7303
7303
  function flattenedSubpaths(node) {
7304
7304
  const out = [];
7305
- for (const contour of _chunkN3FVUOZDcjs.pathToContours.call(void 0, subpathsToBezier(node.subpaths))) {
7306
- const segs = _chunkN3FVUOZDcjs.closeContour.call(void 0, contour);
7305
+ for (const contour of _chunkBJTCSLF6cjs.pathToContours.call(void 0, subpathsToBezier(node.subpaths))) {
7306
+ const segs = _chunkBJTCSLF6cjs.closeContour.call(void 0, contour);
7307
7307
  if (!segs.length) continue;
7308
- const ring = _chunkN3FVUOZDcjs.flattenChain.call(void 0, segs, TOLERANCE);
7308
+ const ring = _chunkBJTCSLF6cjs.flattenChain.call(void 0, segs, TOLERANCE);
7309
7309
  const pts = ring.map(([x, y]) => ({ x, y })).filter((p, i, a) => i === 0 || Math.hypot(p.x - a[i - 1].x, p.y - a[i - 1].y) > 1e-9);
7310
7310
  if (contour.closed && pts.length > 2 && Math.hypot(pts[0].x - pts[pts.length - 1].x, pts[0].y - pts[pts.length - 1].y) < 1e-9) pts.pop();
7311
7311
  if (pts.length >= 2) out.push({ pts, closed: contour.closed && pts.length > 2 });
@@ -7456,7 +7456,7 @@ function vectorCornersAttribute(subpaths, precision = 3) {
7456
7456
  subpaths.forEach(
7457
7457
  (sp, s) => sp.anchors.forEach((a, i) => {
7458
7458
  if (!a.corner || !(a.corner.radius > 0)) return;
7459
- out.push(`${s}.${i}:${_chunkGUZ47CJMcjs.formatNumber.call(void 0, a.corner.radius, precision)}${a.corner.kind && a.corner.kind !== "round" ? `:${a.corner.kind}` : ""}`);
7459
+ out.push(`${s}.${i}:${_chunkIZ4WRXZAcjs.formatNumber.call(void 0, a.corner.radius, precision)}${a.corner.kind && a.corner.kind !== "round" ? `:${a.corner.kind}` : ""}`);
7460
7460
  })
7461
7461
  );
7462
7462
  return out.join(" ");
@@ -7476,7 +7476,7 @@ function applyVectorCornersAttribute(subpaths, value) {
7476
7476
  var escapeAttr2 = (value) => value.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
7477
7477
  var escapeText = (value) => value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
7478
7478
  function vectorPathLocalBounds(node) {
7479
- const b = _chunkN3FVUOZDcjs.bezierPathBounds.call(void 0, subpathsToBezier(node.subpaths));
7479
+ const b = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, subpathsToBezier(node.subpaths));
7480
7480
  return b ? { x: b.minX, y: b.minY, width: b.maxX - b.minX, height: b.maxY - b.minY } : null;
7481
7481
  }
7482
7482
  var paintCache = /* @__PURE__ */ new WeakMap();
@@ -7530,18 +7530,18 @@ function computeStrokeSvgParts(node, clipId, precision) {
7530
7530
  if (parts.align === "center" && !parts.heads.length && !profiled) return void 0;
7531
7531
  let clip = null;
7532
7532
  if (parts.align !== "center") {
7533
- const b = _chunkN3FVUOZDcjs.bezierPathBounds.call(void 0, path);
7533
+ const b = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, path);
7534
7534
  const pad = vectorStrokeReach(node) + 1;
7535
7535
  const bounds = b ? { x: round2(b.minX - pad), y: round2(b.minY - pad), width: round2(b.maxX - b.minX + 2 * pad), height: round2(b.maxY - b.minY + 2 * pad) } : { x: 0, y: 0, width: 0, height: 0 };
7536
7536
  clip = { kind: parts.align === "inside" ? "clip" : "mask", id: clipId, bounds };
7537
7537
  }
7538
7538
  return {
7539
7539
  align: parts.align,
7540
- d: _chunkN3FVUOZDcjs.bezierPathToSvg.call(void 0, parts.line, { precision }),
7540
+ d: _chunkBJTCSLF6cjs.bezierPathToSvg.call(void 0, parts.line, { precision }),
7541
7541
  width: parts.drawWidth,
7542
- ...profiled && (_nullishCoalesce(node.strokeWidth, () => ( 1))) > 0 ? { outline: _chunkN3FVUOZDcjs.bezierPathToSvg.call(void 0, vectorStrokeLineArea(parts, node), { precision }) } : {},
7542
+ ...profiled && (_nullishCoalesce(node.strokeWidth, () => ( 1))) > 0 ? { outline: _chunkBJTCSLF6cjs.bezierPathToSvg.call(void 0, vectorStrokeLineArea(parts, node), { precision }) } : {},
7543
7543
  clip,
7544
- heads: parts.heads.map((h) => _chunkN3FVUOZDcjs.bezierPathToSvg.call(void 0, h.path, { precision }))
7544
+ heads: parts.heads.map((h) => _chunkBJTCSLF6cjs.bezierPathToSvg.call(void 0, h.path, { precision }))
7545
7545
  };
7546
7546
  }
7547
7547
  function vectorNodeLocalPaintBounds(node) {
@@ -7565,7 +7565,7 @@ function vectorNodeFilterSvg(node, id) {
7565
7565
  return filter;
7566
7566
  }
7567
7567
  function widthProfileToAttribute(points, precision = 4) {
7568
- return points.map((p) => [p.t, p.left, p.right].map((n) => _chunkGUZ47CJMcjs.formatNumber.call(void 0, n, precision)).join(",")).join(";");
7568
+ return points.map((p) => [p.t, p.left, p.right].map((n) => _chunkIZ4WRXZAcjs.formatNumber.call(void 0, n, precision)).join(",")).join(";");
7569
7569
  }
7570
7570
  function widthProfileFromAttribute(value) {
7571
7571
  if (!value) return [];
@@ -7625,11 +7625,11 @@ function vectorDocumentToSvg(doc, options = {}) {
7625
7625
  const pretty = options.pretty !== false;
7626
7626
  const defs = [];
7627
7627
  const lines = [];
7628
- const num3 = (n) => _chunkGUZ47CJMcjs.formatNumber.call(void 0, n, precision);
7628
+ const num3 = (n) => _chunkIZ4WRXZAcjs.formatNumber.call(void 0, n, precision);
7629
7629
  const indent = (depth) => pretty ? " ".repeat(depth) : "";
7630
7630
  const common = (node) => {
7631
7631
  let out2 = ` id="${escapeAttr2(node.id)}"`;
7632
- if (node.transform) out2 += ` transform="matrix(${node.transform.map((n) => _chunkGUZ47CJMcjs.formatNumber.call(void 0, n, 6)).join(" ")})"`;
7632
+ if (node.transform) out2 += ` transform="matrix(${node.transform.map((n) => _chunkIZ4WRXZAcjs.formatNumber.call(void 0, n, 6)).join(" ")})"`;
7633
7633
  if (node.opacity !== void 0 && node.opacity < 1) out2 += ` opacity="${num3(node.opacity)}"`;
7634
7634
  if (node.visible === false) out2 += ` display="none"`;
7635
7635
  if (node.blendStep) out2 += ` data-vector-blend-step=""`;
@@ -7660,7 +7660,7 @@ function vectorDocumentToSvg(doc, options = {}) {
7660
7660
  const strokePartLines = (node, parts, strokeValue, d, lineAttrs, depth) => {
7661
7661
  const out2 = [];
7662
7662
  if (options.strokes === "outline") {
7663
- const area = _chunkN3FVUOZDcjs.bezierPathToSvg.call(void 0, vectorStrokeOutlinePath(subpathsToBezier(node.subpaths), node), { precision });
7663
+ const area = _chunkBJTCSLF6cjs.bezierPathToSvg.call(void 0, vectorStrokeOutlinePath(subpathsToBezier(node.subpaths), node), { precision });
7664
7664
  out2.push(`${indent(depth)}<path data-vector-part="stroke-outline" d="${area}" fill="${escapeAttr2(strokeValue)}"/>`);
7665
7665
  return out2;
7666
7666
  }
@@ -7692,7 +7692,7 @@ function vectorDocumentToSvg(doc, options = {}) {
7692
7692
  };
7693
7693
  const liveCorners = (node) => {
7694
7694
  const corners = vectorCornersAttribute(node.subpaths, precision);
7695
- return corners ? ` data-vector-d="${_chunkN3FVUOZDcjs.bezierPathToSvg.call(void 0, subpathsToBezier(node.subpaths, { corners: false }), { precision })}" data-vector-corners="${corners}"` : "";
7695
+ return corners ? ` data-vector-d="${_chunkBJTCSLF6cjs.bezierPathToSvg.call(void 0, subpathsToBezier(node.subpaths, { corners: false }), { precision })}" data-vector-corners="${corners}"` : "";
7696
7696
  };
7697
7697
  const emitStacked = (node, depth) => {
7698
7698
  const d = vectorPathData(node, precision);
@@ -7735,7 +7735,7 @@ function vectorDocumentToSvg(doc, options = {}) {
7735
7735
  let attrs = w2.id !== void 0 ? ` id="${escapeAttr2(w2.id)}"` : "";
7736
7736
  if (w2.transform) attrs += ` transform="${escapeAttr2(w2.transform)}"`;
7737
7737
  if (w2.clip) {
7738
- const shape = Object.entries(w2.clip.attrs).map(([k, v2]) => ` ${k}="${_chunkGUZ47CJMcjs.formatNumber.call(void 0, v2, 4)}"`).join("");
7738
+ const shape = Object.entries(w2.clip.attrs).map(([k, v2]) => ` ${k}="${_chunkIZ4WRXZAcjs.formatNumber.call(void 0, v2, 4)}"`).join("");
7739
7739
  defs.push(`<clipPath id="${escapeAttr2(w2.clip.id)}" clipPathUnits="objectBoundingBox"><${w2.clip.shape}${w2.clip.shapeId !== void 0 ? ` id="${escapeAttr2(w2.clip.shapeId)}"` : ""}${shape}/></clipPath>`);
7740
7740
  attrs += ` clip-path="url(#${escapeAttr2(w2.clip.id)})"`;
7741
7741
  }
@@ -8227,7 +8227,7 @@ function resolveGradient(id, raw) {
8227
8227
  const y2 = at2("y2", 0);
8228
8228
  if (!user && plain2) {
8229
8229
  const angle = Math.round((Math.atan2(x2 - x1, -(y2 - y1)) * 180 / Math.PI + 360) % 360);
8230
- const c = _chunkGUZ47CJMcjs.angleToSvgLinearCoords.call(void 0, angle);
8230
+ const c = _chunkIZ4WRXZAcjs.angleToSvgLinearCoords.call(void 0, angle);
8231
8231
  const len2 = Math.hypot(x2 - x1, y2 - y1);
8232
8232
  const d = len2 > 0 ? { x: (x2 - x1) / len2, y: (y2 - y1) / len2 } : { x: 0, y: 1 };
8233
8233
  const along2 = (x, y) => x * d.x + y * d.y;
@@ -8704,7 +8704,7 @@ function parseVectorSvg(svg, options = {}) {
8704
8704
  const id = idFor(g);
8705
8705
  if (!frame) return children.length ? { id, type: "group", ...meta, children } : null;
8706
8706
  const { rigid, residual } = decomposeRigid(m);
8707
- const r = _chunkN3FVUOZDcjs.bezierPathBounds.call(void 0, _chunkN3FVUOZDcjs.transformBezierPath.call(void 0, subpathsToBezier(vectorFrameRectPath(frame)), residual));
8707
+ const r = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, subpathsToBezier(vectorFrameRectPath(frame)), residual));
8708
8708
  const back = invertMatrix(rigid);
8709
8709
  const effects = sanitizeVectorEffects(_optionalChain([raw, 'optionalAccess', _254 => _254.effects]));
8710
8710
  return {
@@ -8996,7 +8996,7 @@ function vectorNodeToBezier(node) {
8996
8996
  }
8997
8997
  function vectorPathData(input, precision = 3) {
8998
8998
  const subpaths = Array.isArray(input) ? input : input.subpaths;
8999
- return _chunkN3FVUOZDcjs.bezierPathToSvg.call(void 0, subpathsToBezier(subpaths), { precision });
8999
+ return _chunkBJTCSLF6cjs.bezierPathToSvg.call(void 0, subpathsToBezier(subpaths), { precision });
9000
9000
  }
9001
9001
  function inferAnchorType(a) {
9002
9002
  if (isOnAnchor(a, a.in) || isOnAnchor(a, a.out)) return "corner";
@@ -9012,7 +9012,7 @@ function inferAnchorType(a) {
9012
9012
  return Math.abs(li - lo) <= 1e-3 * Math.max(li, lo) ? "symmetric" : "smooth";
9013
9013
  }
9014
9014
  function bezierToSubpaths(input) {
9015
- const path = _chunkN3FVUOZDcjs.toBezierPath.call(void 0, input);
9015
+ const path = _chunkBJTCSLF6cjs.toBezierPath.call(void 0, input);
9016
9016
  const out = [];
9017
9017
  let current2 = null;
9018
9018
  const last = () => current2.anchors[current2.anchors.length - 1];
@@ -9117,18 +9117,18 @@ function nodeMatrix(node) {
9117
9117
  function vectorPathWorldBezier(node, parent = IDENTITY_MATRIX, options = {}) {
9118
9118
  const m = multiplyMatrices(nodeMatrix(node), parent);
9119
9119
  const path = options.effects === false || !hasOwnVectorAppearance(node) ? subpathsToBezier(node.subpaths) : vectorAppearanceOutline(node);
9120
- return isIdentityMatrix(m) ? path : _chunkN3FVUOZDcjs.transformBezierPath.call(void 0, path, m);
9120
+ return isIdentityMatrix(m) ? path : _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, path, m);
9121
9121
  }
9122
9122
  function vectorNodeBounds(node, parent = IDENTITY_MATRIX) {
9123
9123
  if (isVectorFrame(node)) {
9124
9124
  const m = multiplyMatrices(nodeMatrix(node), parent);
9125
- const rect = _chunkN3FVUOZDcjs.bezierPathBounds.call(void 0, _chunkN3FVUOZDcjs.transformBezierPath.call(void 0, subpathsToBezier(vectorFrameRectPath(node.frame)), m));
9125
+ const rect = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, subpathsToBezier(vectorFrameRectPath(node.frame)), m));
9126
9126
  const box = { x: rect.minX, y: rect.minY, width: rect.maxX - rect.minX, height: rect.maxY - rect.minY };
9127
9127
  return node.frame.clip === false ? unionBounds([box, ...node.children.map((c) => vectorNodeBounds(c, m))]) : box;
9128
9128
  }
9129
9129
  if (isVectorMaskActive(node)) {
9130
9130
  const m = multiplyMatrices(nodeMatrix(node), parent);
9131
- const b2 = _chunkN3FVUOZDcjs.bezierPathBounds.call(void 0, vectorAppearanceShapes(node).flatMap((s) => isIdentityMatrix(m) ? s.path : _chunkN3FVUOZDcjs.transformBezierPath.call(void 0, s.path, m)));
9131
+ const b2 = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, vectorAppearanceShapes(node).flatMap((s) => isIdentityMatrix(m) ? s.path : _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, s.path, m)));
9132
9132
  return b2 ? { x: b2.minX, y: b2.minY, width: b2.maxX - b2.minX, height: b2.maxY - b2.minY } : null;
9133
9133
  }
9134
9134
  node = expandVectorAppearance(node);
@@ -9136,7 +9136,7 @@ function vectorNodeBounds(node, parent = IDENTITY_MATRIX) {
9136
9136
  const m = multiplyMatrices(nodeMatrix(node), parent);
9137
9137
  return unionBounds(node.children.map((c) => vectorNodeBounds(c, m)));
9138
9138
  }
9139
- const b = _chunkN3FVUOZDcjs.bezierPathBounds.call(void 0, vectorPathWorldBezier(node, parent));
9139
+ const b = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, vectorPathWorldBezier(node, parent));
9140
9140
  if (!b) return null;
9141
9141
  return { x: b.minX, y: b.minY, width: b.maxX - b.minX, height: b.maxY - b.minY };
9142
9142
  }
@@ -9194,7 +9194,7 @@ function hitTestVectorMaskSource(group, p, tolerance, m, options) {
9194
9194
  return paths.some((n) => {
9195
9195
  const world = vectorParentMatrix([source], n.id);
9196
9196
  const path = vectorPathWorldBezier(n, multiplyMatrices(_nullishCoalesce(world, () => ( IDENTITY_MATRIX)), m));
9197
- return _chunkN3FVUOZDcjs.pointInBezierPath.call(void 0, path, pt2, _nullishCoalesce(n.fillRule, () => ( "nonzero"))) || _chunkN3FVUOZDcjs.distanceToBezierPath.call(void 0, path, pt2) <= tolerance;
9197
+ return _chunkBJTCSLF6cjs.pointInBezierPath.call(void 0, path, pt2, _nullishCoalesce(n.fillRule, () => ( "nonzero"))) || _chunkBJTCSLF6cjs.distanceToBezierPath.call(void 0, path, pt2) <= tolerance;
9198
9198
  });
9199
9199
  }
9200
9200
  function vectorStrokeOutline(node, parent = IDENTITY_MATRIX) {
@@ -9216,9 +9216,9 @@ function nearestSegment(node, p) {
9216
9216
  const count = subpathSegmentCount(sp);
9217
9217
  for (let i = 0; i < count; i++) {
9218
9218
  const seg = subpathSegment(sp, i);
9219
- const hit = _chunkN3FVUOZDcjs.segmentNearest.call(void 0, seg, [p.x, p.y]);
9219
+ const hit = _chunkBJTCSLF6cjs.segmentNearest.call(void 0, seg, [p.x, p.y]);
9220
9220
  if (!best || hit.distance < best.distance) {
9221
- const pt2 = _chunkN3FVUOZDcjs.segmentPoint.call(void 0, seg, hit.t);
9221
+ const pt2 = _chunkBJTCSLF6cjs.segmentPoint.call(void 0, seg, hit.t);
9222
9222
  best = { subpath: s, segment: i, t: hit.t, point: { x: pt2[0], y: pt2[1] }, distance: hit.distance };
9223
9223
  }
9224
9224
  }
@@ -9274,7 +9274,7 @@ function bakeIntoGeometry(node, m) {
9274
9274
  }
9275
9275
  function bakeFrame(node, m) {
9276
9276
  const from = node.frame;
9277
- const r = _chunkN3FVUOZDcjs.bezierPathBounds.call(void 0, _chunkN3FVUOZDcjs.transformBezierPath.call(void 0, subpathsToBezier(vectorFrameRectPath(from)), m));
9277
+ const r = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, subpathsToBezier(vectorFrameRectPath(from)), m));
9278
9278
  const to = { ...from, x: r.minX, y: r.minY, width: r.maxX - r.minX, height: r.maxY - r.minY };
9279
9279
  const axisAligned = Math.abs(m[1]) < 1e-12 && Math.abs(m[2]) < 1e-12 && m[0] > 0 && m[3] > 0;
9280
9280
  if (!axisAligned) return { ...node, frame: to, children: node.children.map((c) => transformVectorNode(c, m)) };
@@ -9396,7 +9396,7 @@ function insertAnchor(sp, segment, t) {
9396
9396
  const ia = segment;
9397
9397
  const ib = (segment + 1) % n;
9398
9398
  const seg = subpathSegment(sp, segment);
9399
- const [left2, right] = _chunkN3FVUOZDcjs.splitSegment.call(void 0, seg, t);
9399
+ const [left2, right] = _chunkBJTCSLF6cjs.splitSegment.call(void 0, seg, t);
9400
9400
  const mid = left2[left2.length - 1];
9401
9401
  const anchor = { x: mid[0], y: mid[1] };
9402
9402
  if (seg.length === 4) {
@@ -10037,4 +10037,4 @@ function transformVectorSymmetry(s, m) {
10037
10037
 
10038
10038
 
10039
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-QQKTOA4U.cjs.map
10040
+ //# sourceMappingURL=chunk-ORE334I6.cjs.map