@pixerate/editor 0.74.0 → 0.75.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.
@@ -27,7 +27,7 @@
27
27
 
28
28
 
29
29
 
30
- var _chunkO2UH7LZEcjs = require('./chunk-O2UH7LZE.cjs');
30
+ var _chunkXGD3FSNCcjs = require('./chunk-XGD3FSNC.cjs');
31
31
 
32
32
 
33
33
 
@@ -337,7 +337,7 @@ function spanVectorGradientStops(g, from, to, expanded = expandVectorGradientSto
337
337
  var hasExplicitGradientGeometry = (g) => finitePoint(g.start) && finitePoint(g.end);
338
338
  function shorthandPoints(g) {
339
339
  if (g.type === "linear" || g.type === "reflected") {
340
- const c = _chunkO2UH7LZEcjs.angleToSvgLinearCoords.call(void 0, Number.isFinite(g.angle) ? g.angle : 180);
340
+ const c = _chunkXGD3FSNCcjs.angleToSvgLinearCoords.call(void 0, Number.isFinite(g.angle) ? g.angle : 180);
341
341
  const start2 = g.type === "linear" ? { x: c.x1, y: c.y1 } : { x: 0.5, y: 0.5 };
342
342
  const end = { x: c.x2, y: c.y2 };
343
343
  return { start: start2, end, width: add(start2, perp(sub(end, start2))) };
@@ -905,7 +905,7 @@ var Side = class {
905
905
  constructor(a, h1, h2, b) {
906
906
  this.straight = onAnchor(a, h1) && onAnchor(b, h2);
907
907
  this.curve = this.straight ? [pt(a), pt(b)] : [pt(a), pt(_nullishCoalesce(h1, () => ( a))), pt(_nullishCoalesce(h2, () => ( b))), pt(b)];
908
- this.length = this.straight ? Math.hypot(b.x - a.x, b.y - a.y) : _chunkO2UH7LZEcjs.segmentLength.call(void 0, this.curve);
908
+ this.length = this.straight ? Math.hypot(b.x - a.x, b.y - a.y) : _chunkXGD3FSNCcjs.segmentLength.call(void 0, this.curve);
909
909
  }
910
910
  /** Unit direction the side leaves the corner in (towards its first control point off the corner). */
911
911
  direction() {
@@ -923,10 +923,10 @@ var Side = class {
923
923
  const t2 = this.length > EPS ? Math.min(1, Math.max(0, s / this.length)) : 0;
924
924
  return { t: t2, p: add2(vec(this.curve[0]), mul2(u, s)), dir: u };
925
925
  }
926
- const t = _chunkO2UH7LZEcjs.segmentParamAtLength.call(void 0, this.curve, s, this.length);
927
- const d = vec(_chunkO2UH7LZEcjs.segmentDerivative.call(void 0, this.curve, t));
926
+ const t = _chunkXGD3FSNCcjs.segmentParamAtLength.call(void 0, this.curve, s, this.length);
927
+ const d = vec(_chunkXGD3FSNCcjs.segmentDerivative.call(void 0, this.curve, t));
928
928
  const l = len(d);
929
- return { t, p: vec(_chunkO2UH7LZEcjs.segmentPoint.call(void 0, this.curve, t)), dir: l > EPS ? mul2(d, 1 / l) : u };
929
+ return { t, p: vec(_chunkXGD3FSNCcjs.segmentPoint.call(void 0, this.curve, t)), dir: l > EPS ? mul2(d, 1 / l) : u };
930
930
  }
931
931
  };
932
932
  function cornerOf(sp, s, i) {
@@ -1027,7 +1027,7 @@ function expandVectorCornersOf(sp, subpath = 0) {
1027
1027
  const s0 = from ? from.tv : 0;
1028
1028
  const s1 = to ? 1 - to.tu : 1;
1029
1029
  const seg = [pt(a), pt(_nullishCoalesce(a.out, () => ( a))), pt(_nullishCoalesce(b.in, () => ( b))), pt(b)];
1030
- const part = _chunkO2UH7LZEcjs.subSegment.call(void 0, seg, s0, Math.max(s0, s1));
1030
+ const part = _chunkXGD3FSNCcjs.subSegment.call(void 0, seg, s0, Math.max(s0, s1));
1031
1031
  return { out: vec(part[1]), in: vec(part[2]) };
1032
1032
  });
1033
1033
  const anchors = [];
@@ -1330,7 +1330,7 @@ function flatten(segments, closed, tol) {
1330
1330
  corner.push(isCorner);
1331
1331
  };
1332
1332
  for (const seg of segments) {
1333
- const flat = _chunkO2UH7LZEcjs.flattenChain.call(void 0, [seg], tol);
1333
+ const flat = _chunkXGD3FSNCcjs.flattenChain.call(void 0, [seg], tol);
1334
1334
  if (dist(seg[0], seg[seg.length - 1]) <= 1e-12 && flat.length > 1) flat.push(seg[seg.length - 1]);
1335
1335
  flat.forEach((p, i) => push(p, i === 0 || i === flat.length - 1));
1336
1336
  }
@@ -1420,7 +1420,7 @@ function variableStrokeRings(path, options) {
1420
1420
  const last = out[out.length - 1];
1421
1421
  if (!last || dist(last, p) > 1e-12) out.push(p);
1422
1422
  };
1423
- for (const contour of _chunkO2UH7LZEcjs.pathToContours.call(void 0, path)) {
1423
+ for (const contour of _chunkXGD3FSNCcjs.pathToContours.call(void 0, path)) {
1424
1424
  if (!contour.segments.length) continue;
1425
1425
  const poly = flatten(contour.segments, contour.closed, Math.min(tol, half) / 4);
1426
1426
  if (!poly) continue;
@@ -1546,7 +1546,7 @@ function variableStrokeOutline(path, options) {
1546
1546
  const tol = options.tolerance && options.tolerance > 0 ? options.tolerance : 0.05;
1547
1547
  let polygons;
1548
1548
  try {
1549
- polygons = _chunkO2UH7LZEcjs.polygonBoolean.call(void 0, "union", [{ rings: pieces, fillRule: "nonzero" }]);
1549
+ polygons = _chunkXGD3FSNCcjs.polygonBoolean.call(void 0, "union", [{ rings: pieces, fillRule: "nonzero" }]);
1550
1550
  } catch (e2) {
1551
1551
  return [];
1552
1552
  }
@@ -1554,11 +1554,11 @@ function variableStrokeOutline(path, options) {
1554
1554
  for (const polygon2 of polygons) {
1555
1555
  for (const ring of polygon2) {
1556
1556
  if (ring.length < 3) continue;
1557
- const cubics = _chunkO2UH7LZEcjs.fitCubics.call(void 0, ring, tol, { closed: true, cornerAngleDeg: 25 });
1557
+ const cubics = _chunkXGD3FSNCcjs.fitCubics.call(void 0, ring, tol, { closed: true, cornerAngleDeg: 25 });
1558
1558
  if (!cubics.length) continue;
1559
1559
  out.push({ type: "M", x: cubics[0].p0[0], y: cubics[0].p0[1] });
1560
1560
  cubics.forEach((c, i) => {
1561
- if (_chunkO2UH7LZEcjs.isStraightCubic.call(void 0, c, tol * 0.02)) {
1561
+ if (_chunkXGD3FSNCcjs.isStraightCubic.call(void 0, c, tol * 0.02)) {
1562
1562
  if (i < cubics.length - 1) out.push({ type: "L", x: c.p3[0], y: c.p3[1] });
1563
1563
  } 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] });
1564
1564
  });
@@ -1569,17 +1569,17 @@ function variableStrokeOutline(path, options) {
1569
1569
  }
1570
1570
  function nearestStrokePosition(path, p, only) {
1571
1571
  let best = null;
1572
- _chunkO2UH7LZEcjs.pathToContours.call(void 0, path).forEach((c, ci) => {
1572
+ _chunkXGD3FSNCcjs.pathToContours.call(void 0, path).forEach((c, ci) => {
1573
1573
  if (!c.segments.length || only !== void 0 && ci !== only) return;
1574
- const lengths = c.segments.map((s) => _chunkO2UH7LZEcjs.segmentLength.call(void 0, s));
1574
+ const lengths = c.segments.map((s) => _chunkXGD3FSNCcjs.segmentLength.call(void 0, s));
1575
1575
  const total = lengths.reduce((a, b) => a + b, 0);
1576
1576
  if (!(total > 0)) return;
1577
1577
  let acc = 0;
1578
1578
  c.segments.forEach((seg, si) => {
1579
- const near = _chunkO2UH7LZEcjs.segmentNearest.call(void 0, seg, p);
1579
+ const near = _chunkXGD3FSNCcjs.segmentNearest.call(void 0, seg, p);
1580
1580
  if (!best || near.distance < best.distance) {
1581
- const s = acc + _chunkO2UH7LZEcjs.segmentLength.call(void 0, seg, 0, near.t);
1582
- const tan = _chunkO2UH7LZEcjs.segmentTangent.call(void 0, seg, near.t);
1581
+ const s = acc + _chunkXGD3FSNCcjs.segmentLength.call(void 0, seg, 0, near.t);
1582
+ const tan = _chunkXGD3FSNCcjs.segmentTangent.call(void 0, seg, near.t);
1583
1583
  const pt2 = seg.length === 2 ? lerp(seg[0], seg[1], near.t) : evalSeg(seg, near.t);
1584
1584
  const n = leftNormal([tan[0], tan[1]]);
1585
1585
  const side = (p[0] - pt2[0]) * n[0] + (p[1] - pt2[1]) * n[1] >= 0 ? "left" : "right";
@@ -1596,9 +1596,9 @@ function evalSeg(seg, t) {
1596
1596
  return pts[0];
1597
1597
  }
1598
1598
  function strokePositionPoint(path, index, t) {
1599
- const c = _chunkO2UH7LZEcjs.pathToContours.call(void 0, path)[index];
1599
+ const c = _chunkXGD3FSNCcjs.pathToContours.call(void 0, path)[index];
1600
1600
  if (!_optionalChain([c, 'optionalAccess', _32 => _32.segments, 'access', _33 => _33.length])) return null;
1601
- const lengths = c.segments.map((s) => _chunkO2UH7LZEcjs.segmentLength.call(void 0, s));
1601
+ const lengths = c.segments.map((s) => _chunkXGD3FSNCcjs.segmentLength.call(void 0, s));
1602
1602
  const total = lengths.reduce((a, b) => a + b, 0);
1603
1603
  let want = Math.min(Math.max(t, 0), 1) * total;
1604
1604
  for (let i = 0; i < c.segments.length; i++) {
@@ -1609,11 +1609,11 @@ function strokePositionPoint(path, index, t) {
1609
1609
  const target = Math.min(want, lengths[i]);
1610
1610
  for (let k = 0; k < 40; k++) {
1611
1611
  const mid = (lo + hi) / 2;
1612
- if (_chunkO2UH7LZEcjs.segmentLength.call(void 0, seg, 0, mid) < target) lo = mid;
1612
+ if (_chunkXGD3FSNCcjs.segmentLength.call(void 0, seg, 0, mid) < target) lo = mid;
1613
1613
  else hi = mid;
1614
1614
  }
1615
1615
  const u = (lo + hi) / 2;
1616
- const tan = _chunkO2UH7LZEcjs.segmentTangent.call(void 0, seg, u);
1616
+ const tan = _chunkXGD3FSNCcjs.segmentTangent.call(void 0, seg, u);
1617
1617
  return { point: evalSeg(seg, u), tangent: [tan[0], tan[1]] };
1618
1618
  }
1619
1619
  want -= lengths[i];
@@ -1625,7 +1625,7 @@ function strokePositionPoint(path, index, t) {
1625
1625
  var KAPPA = 0.5522847498307936;
1626
1626
  var NOTCH = 0.7;
1627
1627
  function isClosedBezierShape(path) {
1628
- const contours = _chunkO2UH7LZEcjs.pathToContours.call(void 0, path).filter((c) => c.segments.length > 0);
1628
+ const contours = _chunkXGD3FSNCcjs.pathToContours.call(void 0, path).filter((c) => c.segments.length > 0);
1629
1629
  return contours.length > 0 && contours.every((c) => c.closed);
1630
1630
  }
1631
1631
  function effectiveStrokeAlign(style, closedShape) {
@@ -1646,7 +1646,7 @@ function vectorStrokeLineArea(parts, style, tolerance) {
1646
1646
  const join = _nullishCoalesce(style.strokeLinejoin, () => ( "miter"));
1647
1647
  const cap = _nullishCoalesce(style.strokeLinecap, () => ( "butt"));
1648
1648
  if (profile) return variableStrokeOutline(parts.line, { width: parts.drawWidth, profile, join, cap, ...dash, ...tolerance ? { tolerance } : {} });
1649
- return _chunkO2UH7LZEcjs.outlineStroke.call(void 0, parts.line, { width: parts.drawWidth, join, cap, ...dash, ...tolerance ? { tolerance } : {} });
1649
+ return _chunkXGD3FSNCcjs.outlineStroke.call(void 0, parts.line, { width: parts.drawWidth, join, cap, ...dash, ...tolerance ? { tolerance } : {} });
1650
1650
  }
1651
1651
  var capExtent = (style, width) => style.strokeLinecap === "round" || style.strokeLinecap === "square" ? width / 2 : 0;
1652
1652
  function arrowheadWeight(style, end) {
@@ -1727,16 +1727,16 @@ function arrowheadPath(kind, tip, dir, hw) {
1727
1727
  }
1728
1728
  }
1729
1729
  var toVec = (p) => ({ x: p[0], y: p[1] });
1730
- var segLen = (s) => _chunkO2UH7LZEcjs.segmentLength.call(void 0, s);
1730
+ var segLen = (s) => _chunkXGD3FSNCcjs.segmentLength.call(void 0, s);
1731
1731
  function endOf(segs, atStart) {
1732
1732
  const long = (s2) => segLen(s2) > 1e-9;
1733
1733
  if (atStart) {
1734
1734
  const s2 = _nullishCoalesce(segs.find(long), () => ( segs[0]));
1735
- const t2 = _chunkO2UH7LZEcjs.segmentTangent.call(void 0, s2, 0);
1735
+ const t2 = _chunkXGD3FSNCcjs.segmentTangent.call(void 0, s2, 0);
1736
1736
  return { p: toVec(segs[0][0]), out: v(-t2[0], -t2[1]) };
1737
1737
  }
1738
1738
  const s = _nullishCoalesce([...segs].reverse().find(long), () => ( segs[segs.length - 1]));
1739
- const t = _chunkO2UH7LZEcjs.segmentTangent.call(void 0, s, 1);
1739
+ const t = _chunkXGD3FSNCcjs.segmentTangent.call(void 0, s, 1);
1740
1740
  const last = segs[segs.length - 1];
1741
1741
  return { p: toVec(last[last.length - 1]), out: v(t[0], t[1]) };
1742
1742
  }
@@ -1747,7 +1747,7 @@ function pointAlong(segs, fromStart, dist3) {
1747
1747
  const l = segLen(s);
1748
1748
  if (acc + l >= dist3) {
1749
1749
  const want = fromStart ? dist3 - acc : l - (dist3 - acc);
1750
- const pts = _chunkO2UH7LZEcjs.trimSegments.call(void 0, [s], 0, want);
1750
+ const pts = _chunkXGD3FSNCcjs.trimSegments.call(void 0, [s], 0, want);
1751
1751
  const p = pts.length ? pts[0][pts[0].length - 1] : s[0];
1752
1752
  return toVec(p);
1753
1753
  }
@@ -1757,7 +1757,7 @@ function pointAlong(segs, fromStart, dist3) {
1757
1757
  }
1758
1758
  function vectorStrokeParts(path, style) {
1759
1759
  const width = _nullishCoalesce(style.strokeWidth, () => ( 1));
1760
- const contours = _chunkO2UH7LZEcjs.pathToContours.call(void 0, path).filter((c) => c.segments.length > 0);
1760
+ const contours = _chunkXGD3FSNCcjs.pathToContours.call(void 0, path).filter((c) => c.segments.length > 0);
1761
1761
  const closedShape = contours.length > 0 && contours.every((c) => c.closed);
1762
1762
  const align = effectiveStrokeAlign(style, closedShape);
1763
1763
  const drawWidth = align === "center" ? width : width * 2;
@@ -1797,26 +1797,26 @@ function vectorStrokeParts(path, style) {
1797
1797
  if (!s0 && !s1) return c;
1798
1798
  const lengths = c.segments.map(segLen);
1799
1799
  const total = lengths.reduce((a, b) => a + b, 0);
1800
- return { closed: false, segments: total - s1 > s0 ? _chunkO2UH7LZEcjs.trimSegments.call(void 0, c.segments, s0, total - s1, lengths) : [] };
1800
+ return { closed: false, segments: total - s1 > s0 ? _chunkXGD3FSNCcjs.trimSegments.call(void 0, c.segments, s0, total - s1, lengths) : [] };
1801
1801
  });
1802
- return { align, line: _chunkO2UH7LZEcjs.contoursToPath.call(void 0, trimmed), drawWidth, heads };
1802
+ return { align, line: _chunkXGD3FSNCcjs.contoursToPath.call(void 0, trimmed), drawWidth, heads };
1803
1803
  }
1804
1804
  function vectorStrokeOutlinePath(path, style) {
1805
1805
  const parts = vectorStrokeParts(path, style);
1806
1806
  const stroke = vectorStrokeLineArea(parts, style);
1807
1807
  const fill = { path, fillRule: _nullishCoalesce(style.fillRule, () => ( "nonzero")) };
1808
1808
  let area = stroke;
1809
- if (parts.align === "inside") area = _chunkO2UH7LZEcjs.pathBoolean.call(void 0, "intersection", [stroke, fill]).path;
1810
- else if (parts.align === "outside") area = _chunkO2UH7LZEcjs.pathBoolean.call(void 0, "difference", [stroke, fill]).path;
1809
+ if (parts.align === "inside") area = _chunkXGD3FSNCcjs.pathBoolean.call(void 0, "intersection", [stroke, fill]).path;
1810
+ else if (parts.align === "outside") area = _chunkXGD3FSNCcjs.pathBoolean.call(void 0, "difference", [stroke, fill]).path;
1811
1811
  if (!parts.heads.length) return area;
1812
- return _chunkO2UH7LZEcjs.pathBoolean.call(void 0, "union", [area, ...parts.heads.map((h) => h.path)]).path;
1812
+ return _chunkXGD3FSNCcjs.pathBoolean.call(void 0, "union", [area, ...parts.heads.map((h) => h.path)]).path;
1813
1813
  }
1814
1814
  function hitTestVectorStroke(path, p, style, tolerance = 0) {
1815
1815
  const parts = vectorStrokeParts(path, style);
1816
1816
  const point = [p.x, p.y];
1817
1817
  const width = _nullishCoalesce(style.strokeWidth, () => ( 1));
1818
1818
  for (const h of parts.heads) {
1819
- if (_chunkO2UH7LZEcjs.pointInBezierPath.call(void 0, h.path, point) || tolerance > 0 && _chunkO2UH7LZEcjs.distanceToBezierPath.call(void 0, h.path, point) <= tolerance) return true;
1819
+ if (_chunkXGD3FSNCcjs.pointInBezierPath.call(void 0, h.path, point) || tolerance > 0 && _chunkXGD3FSNCcjs.distanceToBezierPath.call(void 0, h.path, point) <= tolerance) return true;
1820
1820
  }
1821
1821
  if (!parts.line.length) return false;
1822
1822
  const profile = strokeWidthProfileOf(style);
@@ -1834,13 +1834,13 @@ function hitTestVectorStroke(path, p, style, tolerance = 0) {
1834
1834
  reach = Math.max(reach, width / 2 * (w.left + w.right) / 2);
1835
1835
  }
1836
1836
  } else {
1837
- d = _chunkO2UH7LZEcjs.distanceToBezierPath.call(void 0, parts.line, point);
1837
+ d = _chunkXGD3FSNCcjs.distanceToBezierPath.call(void 0, parts.line, point);
1838
1838
  if (parts.align !== "center") reach = width;
1839
1839
  }
1840
1840
  if (parts.align === "center") return d <= reach + tolerance;
1841
1841
  if (d > reach + tolerance) return false;
1842
1842
  if (d <= tolerance) return true;
1843
- const inside = _chunkO2UH7LZEcjs.pointInBezierPath.call(void 0, path, point, _nullishCoalesce(style.fillRule, () => ( "nonzero")));
1843
+ const inside = _chunkXGD3FSNCcjs.pointInBezierPath.call(void 0, path, point, _nullishCoalesce(style.fillRule, () => ( "nonzero")));
1844
1844
  return parts.align === "inside" ? inside : !inside;
1845
1845
  }
1846
1846
  function vectorStrokeReach(style) {
@@ -1919,13 +1919,13 @@ function refit(seg, pieces, f, tol) {
1919
1919
  const last = pieces[pieces.length - 1];
1920
1920
  const t0 = !same(first[1], first[0]) ? first[1] : first[2];
1921
1921
  const t1 = !same(last[2], last[3]) ? last[2] : last[1];
1922
- const fitted = _chunkO2UH7LZEcjs.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]);
1922
+ const fitted = _chunkXGD3FSNCcjs.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]);
1923
1923
  if (!fitted.length || fitted.length >= pieces.length) return pieces;
1924
1924
  const chain = fitted.map((c) => [c.p0, c.p1, c.p2, c.p3]);
1925
1925
  for (let i = 0; i < n; i++) {
1926
1926
  const q = toPoint(f(evalCubic(seg, (i + 0.5) / n)));
1927
1927
  let best = Infinity;
1928
- for (const c of chain) best = Math.min(best, _chunkO2UH7LZEcjs.segmentNearest.call(void 0, c, q).distance);
1928
+ for (const c of chain) best = Math.min(best, _chunkXGD3FSNCcjs.segmentNearest.call(void 0, c, q).distance);
1929
1929
  if (best > tol) return pieces;
1930
1930
  }
1931
1931
  return fitted.map((c) => [toVec2(c.p0), toVec2(c.p1), toVec2(c.p2), toVec2(c.p3)]);
@@ -2856,7 +2856,7 @@ function pathsBounds(paths) {
2856
2856
  let maxX = -Infinity;
2857
2857
  let maxY = -Infinity;
2858
2858
  for (const p of paths) {
2859
- const b = _chunkO2UH7LZEcjs.bezierPathBounds.call(void 0, p);
2859
+ const b = _chunkXGD3FSNCcjs.bezierPathBounds.call(void 0, p);
2860
2860
  if (!b) continue;
2861
2861
  minX = Math.min(minX, b.minX);
2862
2862
  minY = Math.min(minY, b.minY);
@@ -3022,7 +3022,7 @@ function foldVectorBooleanOperands(operands) {
3022
3022
  for (let i = start + 1; i < operands.length; i++) {
3023
3023
  const o = operands[i];
3024
3024
  foldSteps++;
3025
- const r = _chunkO2UH7LZEcjs.pathBoolean.call(void 0, _nullishCoalesce(PATH_OPS[o.operation], () => ( "union")), [
3025
+ const r = _chunkXGD3FSNCcjs.pathBoolean.call(void 0, _nullishCoalesce(PATH_OPS[o.operation], () => ( "union")), [
3026
3026
  { path: acc, fillRule: accRule },
3027
3027
  { path: o.path, fillRule: o.fillRule }
3028
3028
  ]);
@@ -3109,7 +3109,7 @@ function childShapes(child, index) {
3109
3109
  const k = _nullishCoalesce(child.opacity, () => ( 1));
3110
3110
  return vectorAppearanceShapes(child).map((s) => ({
3111
3111
  source: s.source,
3112
- path: m && !isIdentityMatrix(m) ? _chunkO2UH7LZEcjs.transformBezierPath.call(void 0, s.path, m) : s.path,
3112
+ path: m && !isIdentityMatrix(m) ? _chunkXGD3FSNCcjs.transformBezierPath.call(void 0, s.path, m) : s.path,
3113
3113
  opacity: s.opacity * k,
3114
3114
  order: [index, ...s.order]
3115
3115
  }));
@@ -3121,7 +3121,7 @@ function liveBooleanShapes(group) {
3121
3121
  const shapes = childShapes(child, i);
3122
3122
  if (!shapes.length) return;
3123
3123
  source ??= shapes[0].source;
3124
- const path = shapes.length === 1 ? shapes[0].path : _chunkO2UH7LZEcjs.pathBoolean.call(void 0, "union", shapes.map((s) => ({ path: s.path, fillRule: _nullishCoalesce(s.source.fillRule, () => ( "nonzero")) }))).path;
3124
+ const path = shapes.length === 1 ? shapes[0].path : _chunkXGD3FSNCcjs.pathBoolean.call(void 0, "union", shapes.map((s) => ({ path: s.path, fillRule: _nullishCoalesce(s.source.fillRule, () => ( "nonzero")) }))).path;
3125
3125
  const fillRule = shapes.length === 1 ? _nullishCoalesce(shapes[0].source.fillRule, () => ( "nonzero")) : "nonzero";
3126
3126
  operands.push({ path, fillRule, operation: vectorOperandOperation(group, child) });
3127
3127
  });
@@ -3353,7 +3353,7 @@ function vectorNodeToBezier(node) {
3353
3353
  }
3354
3354
  function vectorPathData(input, precision = 3) {
3355
3355
  const subpaths = Array.isArray(input) ? input : input.subpaths;
3356
- return _chunkO2UH7LZEcjs.bezierPathToSvg.call(void 0, subpathsToBezier(subpaths), { precision });
3356
+ return _chunkXGD3FSNCcjs.bezierPathToSvg.call(void 0, subpathsToBezier(subpaths), { precision });
3357
3357
  }
3358
3358
  function inferAnchorType(a) {
3359
3359
  if (isOnAnchor(a, a.in) || isOnAnchor(a, a.out)) return "corner";
@@ -3369,7 +3369,7 @@ function inferAnchorType(a) {
3369
3369
  return Math.abs(li - lo) <= 1e-3 * Math.max(li, lo) ? "symmetric" : "smooth";
3370
3370
  }
3371
3371
  function bezierToSubpaths(input) {
3372
- const path = _chunkO2UH7LZEcjs.toBezierPath.call(void 0, input);
3372
+ const path = _chunkXGD3FSNCcjs.toBezierPath.call(void 0, input);
3373
3373
  const out = [];
3374
3374
  let current = null;
3375
3375
  const last = () => current.anchors[current.anchors.length - 1];
@@ -3466,7 +3466,7 @@ function nodeMatrix(node) {
3466
3466
  function vectorPathWorldBezier(node, parent = IDENTITY_MATRIX, options = {}) {
3467
3467
  const m = multiplyMatrices(nodeMatrix(node), parent);
3468
3468
  const path = options.effects === false || !hasOwnVectorAppearance(node) ? subpathsToBezier(node.subpaths) : vectorAppearanceOutline(node);
3469
- return isIdentityMatrix(m) ? path : _chunkO2UH7LZEcjs.transformBezierPath.call(void 0, path, m);
3469
+ return isIdentityMatrix(m) ? path : _chunkXGD3FSNCcjs.transformBezierPath.call(void 0, path, m);
3470
3470
  }
3471
3471
  function vectorNodeBounds(node, parent = IDENTITY_MATRIX) {
3472
3472
  node = expandVectorAppearance(node);
@@ -3474,7 +3474,7 @@ function vectorNodeBounds(node, parent = IDENTITY_MATRIX) {
3474
3474
  const m = multiplyMatrices(nodeMatrix(node), parent);
3475
3475
  return unionBounds(node.children.map((c) => vectorNodeBounds(c, m)));
3476
3476
  }
3477
- const b = _chunkO2UH7LZEcjs.bezierPathBounds.call(void 0, vectorPathWorldBezier(node, parent));
3477
+ const b = _chunkXGD3FSNCcjs.bezierPathBounds.call(void 0, vectorPathWorldBezier(node, parent));
3478
3478
  if (!b) return null;
3479
3479
  return { x: b.minX, y: b.minY, width: b.maxX - b.minX, height: b.maxY - b.minY };
3480
3480
  }
@@ -3509,9 +3509,9 @@ function hitTestVectorNode(node, p, tolerance = 0, parent = IDENTITY_MATRIX, opt
3509
3509
  const path = vectorPathWorldBezier(node, parent);
3510
3510
  if (path.length === 0) return false;
3511
3511
  const point = [p.x, p.y];
3512
- if (hasPaint(node.fill) && _chunkO2UH7LZEcjs.pointInBezierPath.call(void 0, path, point, _nullishCoalesce(node.fillRule, () => ( "nonzero")))) return true;
3512
+ if (hasPaint(node.fill) && _chunkXGD3FSNCcjs.pointInBezierPath.call(void 0, path, point, _nullishCoalesce(node.fillRule, () => ( "nonzero")))) return true;
3513
3513
  if (hasPaint(node.stroke)) return hitTestVectorStroke(path, p, node, tolerance);
3514
- return _chunkO2UH7LZEcjs.distanceToBezierPath.call(void 0, path, point) <= tolerance;
3514
+ return _chunkXGD3FSNCcjs.distanceToBezierPath.call(void 0, path, point) <= tolerance;
3515
3515
  }
3516
3516
  function vectorStrokeOutline(node, parent = IDENTITY_MATRIX) {
3517
3517
  if (!hasPaint(node.stroke) || !((_nullishCoalesce(node.strokeWidth, () => ( 1))) > 0)) return [];
@@ -3531,9 +3531,9 @@ function nearestSegment(node, p) {
3531
3531
  const count = subpathSegmentCount(sp);
3532
3532
  for (let i = 0; i < count; i++) {
3533
3533
  const seg = subpathSegment(sp, i);
3534
- const hit = _chunkO2UH7LZEcjs.segmentNearest.call(void 0, seg, [p.x, p.y]);
3534
+ const hit = _chunkXGD3FSNCcjs.segmentNearest.call(void 0, seg, [p.x, p.y]);
3535
3535
  if (!best || hit.distance < best.distance) {
3536
- const pt2 = _chunkO2UH7LZEcjs.segmentPoint.call(void 0, seg, hit.t);
3536
+ const pt2 = _chunkXGD3FSNCcjs.segmentPoint.call(void 0, seg, hit.t);
3537
3537
  best = { subpath: s, segment: i, t: hit.t, point: { x: pt2[0], y: pt2[1] }, distance: hit.distance };
3538
3538
  }
3539
3539
  }
@@ -3719,7 +3719,7 @@ function insertAnchor(sp, segment, t) {
3719
3719
  const ia = segment;
3720
3720
  const ib = (segment + 1) % n;
3721
3721
  const seg = subpathSegment(sp, segment);
3722
- const [left2, right] = _chunkO2UH7LZEcjs.splitSegment.call(void 0, seg, t);
3722
+ const [left2, right] = _chunkXGD3FSNCcjs.splitSegment.call(void 0, seg, t);
3723
3723
  const mid = left2[left2.length - 1];
3724
3724
  const anchor = { x: mid[0], y: mid[1] };
3725
3725
  if (seg.length === 4) {
@@ -3818,9 +3818,9 @@ function raise(seg) {
3818
3818
  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];
3819
3819
  }
3820
3820
  function subsOf(path) {
3821
- return _chunkO2UH7LZEcjs.pathToContours.call(void 0, path).map((c) => ({ segs: _chunkO2UH7LZEcjs.closeContour.call(void 0, c).filter((s) => !degenerate(s)).map(raise), closed: c.closed })).filter((s) => s.segs.length > 0);
3821
+ return _chunkXGD3FSNCcjs.pathToContours.call(void 0, path).map((c) => ({ segs: _chunkXGD3FSNCcjs.closeContour.call(void 0, c).filter((s) => !degenerate(s)).map(raise), closed: c.closed })).filter((s) => s.segs.length > 0);
3822
3822
  }
3823
- var subsToPath = (subs) => _chunkO2UH7LZEcjs.contoursToPath.call(void 0, subs.map((s) => ({ segments: s.segs, closed: s.closed })));
3823
+ var subsToPath = (subs) => _chunkXGD3FSNCcjs.contoursToPath.call(void 0, subs.map((s) => ({ segments: s.segs, closed: s.closed })));
3824
3824
  var unit2 = (x, y) => {
3825
3825
  const l = Math.hypot(x, y);
3826
3826
  return l > 1e-12 && Number.isFinite(l) ? [x / l, y / l] : null;
@@ -3843,13 +3843,13 @@ function endTangent(s) {
3843
3843
  function tangentAt(s, t) {
3844
3844
  if (t <= 1e-9) return startTangent(s);
3845
3845
  if (t >= 1 - 1e-9) return endTangent(s);
3846
- const d = _chunkO2UH7LZEcjs.segmentDerivative.call(void 0, s, t);
3846
+ const d = _chunkXGD3FSNCcjs.segmentDerivative.call(void 0, s, t);
3847
3847
  return _nullishCoalesce(unit2(d[0], d[1]), () => ( startTangent(s)));
3848
3848
  }
3849
3849
  var perp2 = (v2) => [-v2[1], v2[0]];
3850
3850
  function effectPathLength(path) {
3851
3851
  let total = 0;
3852
- for (const s of subsOf(path)) for (const seg of s.segs) total += _chunkO2UH7LZEcjs.segmentLength.call(void 0, seg);
3852
+ for (const s of subsOf(path)) for (const seg of s.segs) total += _chunkXGD3FSNCcjs.segmentLength.call(void 0, seg);
3853
3853
  return total;
3854
3854
  }
3855
3855
  function effectPathVertexCount(path) {
@@ -3861,7 +3861,7 @@ var Measured = class {
3861
3861
 
3862
3862
  constructor(path) {
3863
3863
  this.segs = subsOf(path).flatMap((s) => s.segs);
3864
- this.lens = this.segs.map((s) => _chunkO2UH7LZEcjs.segmentLength.call(void 0, s));
3864
+ this.lens = this.segs.map((s) => _chunkXGD3FSNCcjs.segmentLength.call(void 0, s));
3865
3865
  this.total = this.lens.reduce((a, b) => a + b, 0);
3866
3866
  }
3867
3867
  /**
@@ -3869,7 +3869,7 @@ var Measured = class {
3869
3869
  * starts where it ends (across the start of a closed path).
3870
3870
  */
3871
3871
  append(sa, sb, out) {
3872
- for (const piece of _chunkO2UH7LZEcjs.trimSegments.call(void 0, this.segs, sa, sb, this.lens)) {
3872
+ for (const piece of _chunkXGD3FSNCcjs.trimSegments.call(void 0, this.segs, sa, sb, this.lens)) {
3873
3873
  if (degenerate(piece)) continue;
3874
3874
  const last = _optionalChain([out, 'access', _64 => _64[out.length - 1], 'optionalAccess', _65 => _65.segs]);
3875
3875
  const end = _optionalChain([last, 'optionalAccess', _66 => _66[last.length - 1], 'optionalAccess', _67 => _67.at, 'call', _68 => _68(-1)]);
@@ -3984,7 +3984,7 @@ function offsetPaths(paths, amount, join = "miter", miterLimit = 4, copies = 1,
3984
3984
  const n = Math.min(1e3, Math.max(1, Math.round(Number.isFinite(copies) ? copies : 1)));
3985
3985
  return paths.map((p) => {
3986
3986
  const out = [];
3987
- for (let i = 0; i < n; i++) out.push(..._chunkO2UH7LZEcjs.offsetPath.call(void 0, p, amount * (i + 1 + copyOffset), { join, miterLimit }));
3987
+ for (let i = 0; i < n; i++) out.push(..._chunkXGD3FSNCcjs.offsetPath.call(void 0, p, amount * (i + 1 + copyOffset), { join, miterLimit }));
3988
3988
  return out;
3989
3989
  });
3990
3990
  }
@@ -4020,10 +4020,10 @@ function twistPaths(paths, angle, center) {
4020
4020
  const segs = [];
4021
4021
  for (const seg of sub5.segs) {
4022
4022
  const cubic = seg.length === 2 ? [seg[0], seg[0], seg[1], seg[1]] : seg;
4023
- const len2 = _chunkO2UH7LZEcjs.segmentLength.call(void 0, seg);
4023
+ const len2 = _chunkXGD3FSNCcjs.segmentLength.call(void 0, seg);
4024
4024
  const m = Math.min(64, Math.max(1, Math.ceil(Math.abs(a) * len2 / rmax / 0.15 + len2 / 50)));
4025
4025
  for (let i = 0; i < m; i++) {
4026
- const q = _chunkO2UH7LZEcjs.subSegment.call(void 0, cubic, i / m, (i + 1) / m);
4026
+ const q = _chunkXGD3FSNCcjs.subSegment.call(void 0, cubic, i / m, (i + 1) / m);
4027
4027
  const p0 = map(q[0]);
4028
4028
  const p3 = map(q[3]);
4029
4029
  const h1 = jac(q[0], [q[1][0] - q[0][0], q[1][1] - q[0][1]]);
@@ -4039,7 +4039,7 @@ function twistPaths(paths, angle, center) {
4039
4039
  function resample(sub5, m) {
4040
4040
  const segs = sub5.segs;
4041
4041
  const n = segs.length;
4042
- const lens = segs.map((s) => _chunkO2UH7LZEcjs.segmentLength.call(void 0, s));
4042
+ const lens = segs.map((s) => _chunkXGD3FSNCcjs.segmentLength.call(void 0, s));
4043
4043
  const out = [];
4044
4044
  for (let j = 0; j < n; j++) {
4045
4045
  const piece = lens[j] / m;
@@ -4054,8 +4054,8 @@ function resample(sub5, m) {
4054
4054
  }
4055
4055
  out.push({ p: segs[j][0], tan, lenPrev: prev === null ? 0 : lens[prev] / m, lenNext: piece });
4056
4056
  } else {
4057
- const t = _chunkO2UH7LZEcjs.segmentParamAtLength.call(void 0, segs[j], piece * k, lens[j]);
4058
- out.push({ p: _chunkO2UH7LZEcjs.segmentPoint.call(void 0, segs[j], t), tan: tangentAt(segs[j], t), lenPrev: piece, lenNext: piece });
4057
+ const t = _chunkXGD3FSNCcjs.segmentParamAtLength.call(void 0, segs[j], piece * k, lens[j]);
4058
+ out.push({ p: _chunkXGD3FSNCcjs.segmentPoint.call(void 0, segs[j], t), tan: tangentAt(segs[j], t), lenPrev: piece, lenNext: piece });
4059
4059
  }
4060
4060
  }
4061
4061
  }
@@ -4153,7 +4153,7 @@ function mergePaths(paths, mode = "merge") {
4153
4153
  if (mode === "merge" || !(mode in MERGE_OPS)) return paths.flat();
4154
4154
  const inputs = paths.filter((p) => p.length > 0).map((path) => ({ path, fillRule: "nonzero" }));
4155
4155
  if (!inputs.length) return [];
4156
- return _chunkO2UH7LZEcjs.pathBoolean.call(void 0, MERGE_OPS[mode], inputs).path;
4156
+ return _chunkXGD3FSNCcjs.pathBoolean.call(void 0, MERGE_OPS[mode], inputs).path;
4157
4157
  }
4158
4158
  function vectorRepeaterCopies(r, pivot) {
4159
4159
  const copies = Math.max(0, Number.isFinite(r.copies) ? Math.min(r.copies, 1e3) : 0);
@@ -4176,10 +4176,10 @@ function vectorRepeaterCopies(r, pivot) {
4176
4176
  return out;
4177
4177
  }
4178
4178
  function repeatPaths(paths, r, pivot) {
4179
- return vectorRepeaterCopies(r, pivot).map((copy) => ({ copy, paths: paths.map((p) => _chunkO2UH7LZEcjs.transformBezierPath.call(void 0, p, copy.matrix)) }));
4179
+ return vectorRepeaterCopies(r, pivot).map((copy) => ({ copy, paths: paths.map((p) => _chunkXGD3FSNCcjs.transformBezierPath.call(void 0, p, copy.matrix)) }));
4180
4180
  }
4181
4181
  function pathsCenter(paths) {
4182
- const b = _chunkO2UH7LZEcjs.bezierPathBounds.call(void 0, paths.flat());
4182
+ const b = _chunkXGD3FSNCcjs.bezierPathBounds.call(void 0, paths.flat());
4183
4183
  return b ? { x: (b.minX + b.maxX) / 2, y: (b.minY + b.maxY) / 2 } : { x: 0, y: 0 };
4184
4184
  }
4185
4185
 
@@ -4269,7 +4269,7 @@ function refineMorphContour(c, segments) {
4269
4269
  const identity = Array.from({ length: c.closed ? have : have + 1 }, (_, i) => i);
4270
4270
  if (have >= segments) return { contour: c, anchors: identity };
4271
4271
  const segs = Array.from({ length: have }, (_, k) => segOf(c, k));
4272
- const lens = segs.map((s) => _chunkO2UH7LZEcjs.segmentLength.call(void 0, s));
4272
+ const lens = segs.map((s) => _chunkXGD3FSNCcjs.segmentLength.call(void 0, s));
4273
4273
  const sum = lens.reduce((a, b) => a + b, 0);
4274
4274
  const extra = segments - have;
4275
4275
  const want = lens.map((l) => sum > 1e-12 ? l / sum * extra : extra / have);
@@ -4286,9 +4286,9 @@ function refineMorphContour(c, segments) {
4286
4286
  let rest = seg.slice();
4287
4287
  let t0 = 0;
4288
4288
  for (let j = 1; j < pieces; j++) {
4289
- const t = _chunkO2UH7LZEcjs.segmentParamAtLength.call(void 0, seg, lens[k] * j / pieces, lens[k]);
4289
+ const t = _chunkXGD3FSNCcjs.segmentParamAtLength.call(void 0, seg, lens[k] * j / pieces, lens[k]);
4290
4290
  const u = Math.min(1, Math.max(0, (t - t0) / (1 - t0 || 1)));
4291
- const [l, r] = _chunkO2UH7LZEcjs.splitSegment.call(void 0, rest, u);
4291
+ const [l, r] = _chunkXGD3FSNCcjs.splitSegment.call(void 0, rest, u);
4292
4292
  pts.push(l[1], l[2], l[3]);
4293
4293
  rest = r;
4294
4294
  t0 = t;
@@ -4450,7 +4450,7 @@ function correspondMorphContours(a, b, options = {}) {
4450
4450
  const bb = boundsOfPoints(b.flatMap((c) => c.pts));
4451
4451
  const contourLength = (c) => {
4452
4452
  let l = 0;
4453
- for (let k = 0; k < curvesOf(c); k++) l += _chunkO2UH7LZEcjs.segmentLength.call(void 0, segOf(c, k));
4453
+ for (let k = 0; k < curvesOf(c); k++) l += _chunkXGD3FSNCcjs.segmentLength.call(void 0, segOf(c, k));
4454
4454
  return l;
4455
4455
  };
4456
4456
  const pairs = [];
@@ -4903,10 +4903,10 @@ var unit3 = (v2) => {
4903
4903
  };
4904
4904
  function flattenedSubpaths(node) {
4905
4905
  const out = [];
4906
- for (const contour of _chunkO2UH7LZEcjs.pathToContours.call(void 0, subpathsToBezier(node.subpaths))) {
4907
- const segs = _chunkO2UH7LZEcjs.closeContour.call(void 0, contour);
4906
+ for (const contour of _chunkXGD3FSNCcjs.pathToContours.call(void 0, subpathsToBezier(node.subpaths))) {
4907
+ const segs = _chunkXGD3FSNCcjs.closeContour.call(void 0, contour);
4908
4908
  if (!segs.length) continue;
4909
- const ring = _chunkO2UH7LZEcjs.flattenChain.call(void 0, segs, TOLERANCE);
4909
+ const ring = _chunkXGD3FSNCcjs.flattenChain.call(void 0, segs, TOLERANCE);
4910
4910
  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);
4911
4911
  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();
4912
4912
  if (pts.length >= 2) out.push({ pts, closed: contour.closed && pts.length > 2 });
@@ -5048,7 +5048,7 @@ function vectorCornersAttribute(subpaths, precision = 3) {
5048
5048
  subpaths.forEach(
5049
5049
  (sp, s) => sp.anchors.forEach((a, i) => {
5050
5050
  if (!a.corner || !(a.corner.radius > 0)) return;
5051
- out.push(`${s}.${i}:${_chunkO2UH7LZEcjs.formatNumber.call(void 0, a.corner.radius, precision)}${a.corner.kind && a.corner.kind !== "round" ? `:${a.corner.kind}` : ""}`);
5051
+ out.push(`${s}.${i}:${_chunkXGD3FSNCcjs.formatNumber.call(void 0, a.corner.radius, precision)}${a.corner.kind && a.corner.kind !== "round" ? `:${a.corner.kind}` : ""}`);
5052
5052
  })
5053
5053
  );
5054
5054
  return out.join(" ");
@@ -5067,7 +5067,7 @@ function applyVectorCornersAttribute(subpaths, value) {
5067
5067
  }
5068
5068
  var escapeAttr = (value) => value.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
5069
5069
  function vectorPathLocalBounds(node) {
5070
- const b = _chunkO2UH7LZEcjs.bezierPathBounds.call(void 0, subpathsToBezier(node.subpaths));
5070
+ const b = _chunkXGD3FSNCcjs.bezierPathBounds.call(void 0, subpathsToBezier(node.subpaths));
5071
5071
  return b ? { x: b.minX, y: b.minY, width: b.maxX - b.minX, height: b.maxY - b.minY } : null;
5072
5072
  }
5073
5073
  var paintCache = /* @__PURE__ */ new WeakMap();
@@ -5107,22 +5107,22 @@ function computeStrokeSvgParts(node, clipId, precision) {
5107
5107
  if (parts.align === "center" && !parts.heads.length && !profiled) return void 0;
5108
5108
  let clip = null;
5109
5109
  if (parts.align !== "center") {
5110
- const b = _chunkO2UH7LZEcjs.bezierPathBounds.call(void 0, path);
5110
+ const b = _chunkXGD3FSNCcjs.bezierPathBounds.call(void 0, path);
5111
5111
  const pad = vectorStrokeReach(node) + 1;
5112
5112
  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 };
5113
5113
  clip = { kind: parts.align === "inside" ? "clip" : "mask", id: clipId, bounds };
5114
5114
  }
5115
5115
  return {
5116
5116
  align: parts.align,
5117
- d: _chunkO2UH7LZEcjs.bezierPathToSvg.call(void 0, parts.line, { precision }),
5117
+ d: _chunkXGD3FSNCcjs.bezierPathToSvg.call(void 0, parts.line, { precision }),
5118
5118
  width: parts.drawWidth,
5119
- ...profiled && (_nullishCoalesce(node.strokeWidth, () => ( 1))) > 0 ? { outline: _chunkO2UH7LZEcjs.bezierPathToSvg.call(void 0, vectorStrokeLineArea(parts, node), { precision }) } : {},
5119
+ ...profiled && (_nullishCoalesce(node.strokeWidth, () => ( 1))) > 0 ? { outline: _chunkXGD3FSNCcjs.bezierPathToSvg.call(void 0, vectorStrokeLineArea(parts, node), { precision }) } : {},
5120
5120
  clip,
5121
- heads: parts.heads.map((h) => _chunkO2UH7LZEcjs.bezierPathToSvg.call(void 0, h.path, { precision }))
5121
+ heads: parts.heads.map((h) => _chunkXGD3FSNCcjs.bezierPathToSvg.call(void 0, h.path, { precision }))
5122
5122
  };
5123
5123
  }
5124
5124
  function widthProfileToAttribute(points, precision = 4) {
5125
- return points.map((p) => [p.t, p.left, p.right].map((n) => _chunkO2UH7LZEcjs.formatNumber.call(void 0, n, precision)).join(",")).join(";");
5125
+ return points.map((p) => [p.t, p.left, p.right].map((n) => _chunkXGD3FSNCcjs.formatNumber.call(void 0, n, precision)).join(",")).join(";");
5126
5126
  }
5127
5127
  function widthProfileFromAttribute(value) {
5128
5128
  if (!value) return [];
@@ -5181,11 +5181,11 @@ function vectorDocumentToSvg(doc, options = {}) {
5181
5181
  const pretty = options.pretty !== false;
5182
5182
  const defs = [];
5183
5183
  const lines = [];
5184
- const num2 = (n) => _chunkO2UH7LZEcjs.formatNumber.call(void 0, n, precision);
5184
+ const num2 = (n) => _chunkXGD3FSNCcjs.formatNumber.call(void 0, n, precision);
5185
5185
  const indent = (depth) => pretty ? " ".repeat(depth) : "";
5186
5186
  const common = (node) => {
5187
5187
  let out2 = ` id="${escapeAttr(node.id)}"`;
5188
- if (node.transform) out2 += ` transform="matrix(${node.transform.map((n) => _chunkO2UH7LZEcjs.formatNumber.call(void 0, n, 6)).join(" ")})"`;
5188
+ if (node.transform) out2 += ` transform="matrix(${node.transform.map((n) => _chunkXGD3FSNCcjs.formatNumber.call(void 0, n, 6)).join(" ")})"`;
5189
5189
  if (node.opacity !== void 0 && node.opacity < 1) out2 += ` opacity="${num2(node.opacity)}"`;
5190
5190
  if (node.visible === false) out2 += ` display="none"`;
5191
5191
  if (node.blendStep) out2 += ` data-vector-blend-step=""`;
@@ -5200,7 +5200,7 @@ function vectorDocumentToSvg(doc, options = {}) {
5200
5200
  let attrs = w2.id !== void 0 ? ` id="${escapeAttr(w2.id)}"` : "";
5201
5201
  if (w2.transform) attrs += ` transform="${escapeAttr(w2.transform)}"`;
5202
5202
  if (w2.clip) {
5203
- const shape = Object.entries(w2.clip.attrs).map(([k, v2]) => ` ${k}="${_chunkO2UH7LZEcjs.formatNumber.call(void 0, v2, 4)}"`).join("");
5203
+ const shape = Object.entries(w2.clip.attrs).map(([k, v2]) => ` ${k}="${_chunkXGD3FSNCcjs.formatNumber.call(void 0, v2, 4)}"`).join("");
5204
5204
  defs.push(`<clipPath id="${escapeAttr(w2.clip.id)}" clipPathUnits="objectBoundingBox"><${w2.clip.shape}${w2.clip.shapeId !== void 0 ? ` id="${escapeAttr(w2.clip.shapeId)}"` : ""}${shape}/></clipPath>`);
5205
5205
  attrs += ` clip-path="url(#${escapeAttr(w2.clip.id)})"`;
5206
5206
  }
@@ -5240,7 +5240,7 @@ function vectorDocumentToSvg(doc, options = {}) {
5240
5240
  defs.push(...paintMarkup(node.fill, fill.defs), ...paintMarkup(node.stroke, stroke.defs));
5241
5241
  const d = vectorPathData(node, precision);
5242
5242
  const corners = vectorCornersAttribute(node.subpaths, precision);
5243
- const live = corners ? ` data-vector-d="${_chunkO2UH7LZEcjs.bezierPathToSvg.call(void 0, subpathsToBezier(node.subpaths, { corners: false }), { precision })}" data-vector-corners="${corners}"` : "";
5243
+ const live = corners ? ` data-vector-d="${_chunkXGD3FSNCcjs.bezierPathToSvg.call(void 0, subpathsToBezier(node.subpaths, { corners: false }), { precision })}" data-vector-corners="${corners}"` : "";
5244
5244
  const fillAttrs = ` fill="${escapeAttr(fill.value)}"${node.fillRule === "evenodd" ? ` fill-rule="evenodd"` : ""}`;
5245
5245
  const lineAttrs = (width) => {
5246
5246
  let out2 = ` stroke="${escapeAttr(stroke.value)}" stroke-width="${num2(width)}"`;
@@ -5271,7 +5271,7 @@ function vectorDocumentToSvg(doc, options = {}) {
5271
5271
  lines.push(`${indent(depth)}<g${common(node)}${data}>`);
5272
5272
  lines.push(`${indent(depth + 1)}<path data-vector-part="fill" d="${d}"${fillAttrs}${live}/>`);
5273
5273
  if (options.strokes === "outline") {
5274
- const area = _chunkO2UH7LZEcjs.bezierPathToSvg.call(void 0, vectorStrokeOutlinePath(subpathsToBezier(node.subpaths), node), { precision });
5274
+ const area = _chunkXGD3FSNCcjs.bezierPathToSvg.call(void 0, vectorStrokeOutlinePath(subpathsToBezier(node.subpaths), node), { precision });
5275
5275
  lines.push(`${indent(depth + 1)}<path data-vector-part="stroke-outline" d="${area}" fill="${escapeAttr(stroke.value)}"/>`);
5276
5276
  } else {
5277
5277
  let clip = "";
@@ -5489,7 +5489,7 @@ function resolveGradient(id, raw) {
5489
5489
  const y2 = at2("y2", 0);
5490
5490
  if (!user && plain2) {
5491
5491
  const angle = Math.round((Math.atan2(x2 - x1, -(y2 - y1)) * 180 / Math.PI + 360) % 360);
5492
- const c = _chunkO2UH7LZEcjs.angleToSvgLinearCoords.call(void 0, angle);
5492
+ const c = _chunkXGD3FSNCcjs.angleToSvgLinearCoords.call(void 0, angle);
5493
5493
  const len2 = Math.hypot(x2 - x1, y2 - y1);
5494
5494
  const d = len2 > 0 ? { x: (x2 - x1) / len2, y: (y2 - y1) / len2 } : { x: 0, y: 1 };
5495
5495
  const along2 = (x, y) => x * d.x + y * d.y;
@@ -5991,4 +5991,4 @@ function parseVectorSvg(svg, options = {}) {
5991
5991
 
5992
5992
 
5993
5993
  exports.VECTOR_CORNER_KINDS = VECTOR_CORNER_KINDS; exports.VECTOR_GRADIENT_TYPES = VECTOR_GRADIENT_TYPES; exports.VECTOR_GRADIENT_SPREADS = VECTOR_GRADIENT_SPREADS; exports.VECTOR_GRADIENT_INTERPOLATIONS = VECTOR_GRADIENT_INTERPOLATIONS; exports.VECTOR_STROKE_GRADIENT_MODES = VECTOR_STROKE_GRADIENT_MODES; exports.VECTOR_ARROWHEADS = VECTOR_ARROWHEADS; exports.VECTOR_BLEND_SPACINGS = VECTOR_BLEND_SPACINGS; exports.VECTOR_TOOLS = VECTOR_TOOLS; exports.VECTOR_TRANSFORM_HANDLES = VECTOR_TRANSFORM_HANDLES; exports.VECTOR_PATHFINDER_OPERATIONS = VECTOR_PATHFINDER_OPERATIONS; exports.VECTOR_EFFECT_TYPES = VECTOR_EFFECT_TYPES; exports.VECTOR_MERGE_MODES = VECTOR_MERGE_MODES; exports.isVectorGradient = isVectorGradient; exports.parseVectorColor = parseVectorColor; exports.VECTOR_GRADIENT_MIN_STOPS = VECTOR_GRADIENT_MIN_STOPS; exports.gradientMidpointRemap = gradientMidpointRemap; exports.sortedVectorGradientStops = sortedVectorGradientStops; exports.vectorGradientNeedsExpansion = vectorGradientNeedsExpansion; exports.vectorGradientRamp = vectorGradientRamp; exports.sampleVectorGradient = sampleVectorGradient; exports.expandVectorGradientStops = expandVectorGradientStops; exports.samplePlainStops = samplePlainStops; exports.reverseVectorGradient = reverseVectorGradient; exports.insertVectorGradientStop = insertVectorGradientStop; exports.moveVectorGradientStop = moveVectorGradientStop; exports.removeVectorGradientStop = removeVectorGradientStop; exports.vectorGradientMidpointPosition = vectorGradientMidpointPosition; exports.vectorGradientMidpointFromPosition = vectorGradientMidpointFromPosition; exports.spanVectorGradientStops = spanVectorGradientStops; exports.hasExplicitGradientGeometry = hasExplicitGradientGeometry; exports.vectorGradientPoints = vectorGradientPoints; exports.vectorBoxMatrix = vectorBoxMatrix; exports.vectorGradientUnitsMatrix = vectorGradientUnitsMatrix; exports.vectorGradientMatrix = vectorGradientMatrix; exports.vectorGradientFocalParam = vectorGradientFocalParam; exports.vectorGradientParam = vectorGradientParam; exports.applyVectorGradientSpread = applyVectorGradientSpread; exports.vectorGradientTAt = vectorGradientTAt; exports.sampleVectorGradientAt = sampleVectorGradientAt; exports.vectorGradientAspect = vectorGradientAspect; exports.explicitVectorGradient = explicitVectorGradient; exports.pinVectorGradient = pinVectorGradient; exports.transformVectorGradient = transformVectorGradient; exports.mapVectorGradient = mapVectorGradient; exports.mapVectorPaint = mapVectorPaint; exports.transformVectorPaint = transformVectorPaint; exports.isCentredVectorGradient = isCentredVectorGradient; exports.vectorGradientHandles = vectorGradientHandles; exports.moveVectorGradientHandle = moveVectorGradientHandle; exports.setVectorGradientVector = setVectorGradientVector; exports.VECTOR_GRADIENT_MAX_PERIODS = VECTOR_GRADIENT_MAX_PERIODS; exports.periodicVectorGradientStops = periodicVectorGradientStops; exports.expandVectorGradientSpread = expandVectorGradientSpread; exports.vectorGradientArea = vectorGradientArea; exports.patternAttrs = patternAttrs; exports.vectorGradientSvgDefs = vectorGradientSvgDefs; exports.sampleVectorPaintDefAt = sampleVectorPaintDefAt; exports.sanitizeVectorGradient = sanitizeVectorGradient; exports.convertVectorGradient = convertVectorGradient; exports.defaultVectorGradient = defaultVectorGradient; exports.applyVectorGradientPatch = applyVectorGradientPatch; exports.vectorCornerAt = vectorCornerAt; exports.vectorCorners = vectorCorners; exports.cornerSetback = cornerSetback; exports.fitCornerRadius = fitCornerRadius; exports.cornerBisectorPoint = cornerBisectorPoint; exports.cornerRadiusChange = cornerRadiusChange; exports.hasVectorCorners = hasVectorCorners; exports.expandVectorCornersOf = expandVectorCornersOf; exports.expandVectorCorners = expandVectorCorners; exports.setAnchorCorner = setAnchorCorner; exports.nextVectorCornerKind = nextVectorCornerKind; exports.setSubpathCorners = setSubpathCorners; exports.VECTOR_WIDTH_PROFILE_MAX_POINTS = VECTOR_WIDTH_PROFILE_MAX_POINTS; exports.VECTOR_WIDTH_PROFILE_MAX_SCALE = VECTOR_WIDTH_PROFILE_MAX_SCALE; exports.VECTOR_WIDTH_SAME_T = VECTOR_WIDTH_SAME_T; exports.VECTOR_WIDTH_PRESETS = VECTOR_WIDTH_PRESETS; exports.VECTOR_WIDTH_PRESET_IDS = VECTOR_WIDTH_PRESET_IDS; exports.sanitizeWidthProfile = sanitizeWidthProfile; exports.isUniformWidthProfile = isUniformWidthProfile; exports.widthProfileAt = widthProfileAt; exports.widthProfileMaxScale = widthProfileMaxScale; exports.widthProfilePreset = widthProfilePreset; exports.widthProfilePresetId = widthProfilePresetId; exports.reverseWidthProfile = reverseWidthProfile; exports.mirrorWidthProfile = mirrorWidthProfile; exports.insertWidthPoint = insertWidthPoint; exports.setWidthPoint = setWidthPoint; exports.removeWidthPoints = removeWidthPoints; exports.taperWaveFactor = taperWaveFactor; exports.generateWidthProfile = generateWidthProfile; exports.VECTOR_PRESSURE_NOMINAL = VECTOR_PRESSURE_NOMINAL; exports.pressureWidthProfile = pressureWidthProfile; exports.dashIntervals = dashIntervals; exports.variableStrokeRings = variableStrokeRings; exports.variableStrokeOutline = variableStrokeOutline; exports.nearestStrokePosition = nearestStrokePosition; exports.strokePositionPoint = strokePositionPoint; exports.isClosedBezierShape = isClosedBezierShape; exports.effectiveStrokeAlign = effectiveStrokeAlign; exports.strokeWidthProfileOf = strokeWidthProfileOf; exports.hasStrokeExtras = hasStrokeExtras; exports.vectorStrokeLineArea = vectorStrokeLineArea; exports.arrowheadWeight = arrowheadWeight; exports.arrowheadInset = arrowheadInset; exports.arrowheadPath = arrowheadPath; exports.vectorStrokeParts = vectorStrokeParts; exports.vectorStrokeOutlinePath = vectorStrokeOutlinePath; exports.hitTestVectorStroke = hitTestVectorStroke; exports.vectorStrokeReach = vectorStrokeReach; exports.effectPathLength = effectPathLength; exports.effectPathVertexCount = effectPathVertexCount; exports.trimIntervals = trimIntervals; exports.trimPaths = trimPaths; exports.trimPathsIndividually = trimPathsIndividually; exports.puckerBloatPaths = puckerBloatPaths; exports.roundCornerPaths = roundCornerPaths; exports.offsetPaths = offsetPaths; exports.twistPaths = twistPaths; exports.zigzagPaths = zigzagPaths; exports.wigglePaths = wigglePaths; exports.mergePaths = mergePaths; exports.vectorRepeaterCopies = vectorRepeaterCopies; exports.repeatPaths = repeatPaths; exports.pathsCenter = pathsCenter; exports.mapVectorPoints = mapVectorPoints; exports.mapVectorSubpaths = mapVectorSubpaths; exports.mapBezierPath = mapBezierPath; exports.VECTOR_WARP_STYLES = VECTOR_WARP_STYLES; exports.VECTOR_WARP_STYLE_LABELS = VECTOR_WARP_STYLE_LABELS; exports.vectorWarpPresetGrid = vectorWarpPresetGrid; exports.vectorWarpPresetMesh = vectorWarpPresetMesh; exports.vectorMeshColumns = vectorMeshColumns; exports.vectorMeshRows = vectorMeshRows; exports.isValidVectorMesh = isValidVectorMesh; exports.fitVectorMesh = fitVectorMesh; exports.vectorIdentityMesh = vectorIdentityMesh; exports.evalVectorMesh = evalVectorMesh; exports.splitVectorMeshU = splitVectorMeshU; exports.splitVectorMeshV = splitVectorMeshV; exports.removeVectorMeshSplitU = removeVectorMeshSplitU; exports.removeVectorMeshSplitV = removeVectorMeshSplitV; exports.mapVectorMeshPoints = mapVectorMeshPoints; exports.resizeVectorMesh = resizeVectorMesh; exports.vectorMeshControlBounds = vectorMeshControlBounds; exports.vectorMeshParamAt = vectorMeshParamAt; exports.dragVectorMeshPoint = dragVectorMeshPoint; exports.pullVectorMesh = pullVectorMesh; exports.vectorMeshFromOutline = vectorMeshFromOutline; exports.vectorMeshOutline = vectorMeshOutline; exports.vectorMeshEditPoints = vectorMeshEditPoints; exports.vectorMeshGridCurves = vectorMeshGridCurves; exports.VECTOR_EFFECT_DEFAULTS = VECTOR_EFFECT_DEFAULTS; exports.VECTOR_EFFECT_LABELS = VECTOR_EFFECT_LABELS; exports.VECTOR_EFFECT_PARAM_SPECS = VECTOR_EFFECT_PARAM_SPECS; exports.vectorEnvelopeMesh = vectorEnvelopeMesh; exports.vectorEnvelopeMap = vectorEnvelopeMap; exports.normalizeVectorEffectParams = normalizeVectorEffectParams; exports.createVectorEffect = createVectorEffect; exports.activeVectorEffects = activeVectorEffects; exports.hasOwnVectorAppearance = hasOwnVectorAppearance; exports.hasVectorAppearance = hasVectorAppearance; exports.isVectorLiveBoolean = isVectorLiveBoolean; exports.vectorOperandOperation = vectorOperandOperation; exports.vectorLiveBooleanSteps = vectorLiveBooleanSteps; exports.clearVectorLiveBooleanCache = clearVectorLiveBooleanCache; exports.foldVectorBooleanOperands = foldVectorBooleanOperands; exports.applyVectorEffects = applyVectorEffects; exports.vectorEffectInputPaths = vectorEffectInputPaths; exports.vectorEffectInputBounds = vectorEffectInputBounds; exports.vectorNodeEnvelope = vectorNodeEnvelope; exports.vectorEnvelopeFrame = vectorEnvelopeFrame; exports.vectorAppearanceShapes = vectorAppearanceShapes; exports.vectorAppearanceOutline = vectorAppearanceOutline; exports.vectorAppearanceNodes = vectorAppearanceNodes; exports.expandVectorAppearance = expandVectorAppearance; exports.expandVectorAppearances = expandVectorAppearances; exports.sanitizeVectorEffects = sanitizeVectorEffects; exports.transformVectorEffects = transformVectorEffects; exports.vectorEnteredGroups = vectorEnteredGroups; exports.cloneAnchor = cloneAnchor; exports.cloneSubpath = cloneSubpath; exports.cloneVectorNode = cloneVectorNode; exports.cloneVectorDocument = cloneVectorDocument; exports.hasPaint = hasPaint; exports.subpathSegmentCount = subpathSegmentCount; exports.subpathSegment = subpathSegment; exports.subpathsToBezier = subpathsToBezier; exports.vectorNodeToBezier = vectorNodeToBezier; exports.vectorPathData = vectorPathData; exports.inferAnchorType = inferAnchorType; exports.bezierToSubpaths = bezierToSubpaths; exports.walkVectorNodes = walkVectorNodes; exports.findVectorNode = findVectorNode; exports.locateVectorNode = locateVectorNode; exports.collectPathNodes = collectPathNodes; exports.nodeMatrix = nodeMatrix; exports.vectorPathWorldBezier = vectorPathWorldBezier; exports.vectorNodeBounds = vectorNodeBounds; exports.unionBounds = unionBounds; exports.boundsIntersect = boundsIntersect; exports.boundsFromPoints = boundsFromPoints; exports.hitTestVectorNode = hitTestVectorNode; exports.vectorStrokeOutline = vectorStrokeOutline; exports.hitTestVectorNodes = hitTestVectorNodes; exports.nearestSegment = nearestSegment; exports.IDENTITY_MATRIX = IDENTITY_MATRIX; exports.multiplyMatrices = multiplyMatrices; exports.translateMatrix = translateMatrix; exports.scaleMatrix = scaleMatrix; exports.rotateMatrix = rotateMatrix; exports.applyMatrix = applyMatrix; exports.isIdentityMatrix = isIdentityMatrix; exports.invertMatrix = invertMatrix; exports.applyMatrixLinear = applyMatrixLinear; exports.matrixRotation = matrixRotation; exports.decomposeRigid = decomposeRigid; exports.transformVectorNode = transformVectorNode; exports.vectorNodeRotation = vectorNodeRotation; exports.vectorWorldMatrix = vectorWorldMatrix; exports.vectorParentMatrix = vectorParentMatrix; exports.translateAnchor = translateAnchor; exports.moveAnchorHandle = moveAnchorHandle; exports.convertAnchor = convertAnchor; exports.insertAnchor = insertAnchor; exports.removeAnchors = removeAnchors; exports.reverseSubpath = reverseSubpath; exports.KAPPA = KAPPA2; exports.rectSubpath = rectSubpath; exports.ellipseSubpath = ellipseSubpath; exports.polygonSubpath = polygonSubpath; exports.starSubpath = starSubpath; exports.lineSubpath = lineSubpath; exports.roundSubpaths = roundSubpaths; exports.subpathToMorphContour = subpathToMorphContour; exports.morphContourToSubpath = morphContourToSubpath; exports.refineMorphContour = refineMorphContour; exports.reverseMorphContour = reverseMorphContour; exports.turnMorphContour = turnMorphContour; exports.correspondMorphContours = correspondMorphContours; exports.morphPathsCross = morphPathsCross; exports.interpolateMorphContours = interpolateMorphContours; exports.interpolateRigidMatrix = interpolateRigidMatrix; exports.interpolateVectorColor = interpolateVectorColor; exports.resampleGradientStops = resampleGradientStops; exports.interpolateVectorPaint = interpolateVectorPaint; exports.interpolateWidthProfiles = interpolateWidthProfiles; exports.interpolateVectorStyle = interpolateVectorStyle; exports.createVectorMorph = createVectorMorph; exports.interpolateVectorPaths = interpolateVectorPaths; exports.evaluateVectorPathKeyframes = evaluateVectorPathKeyframes; exports.vectorStrokeGradientDefs = vectorStrokeGradientDefs; exports.vectorCornersAttribute = vectorCornersAttribute; exports.applyVectorCornersAttribute = applyVectorCornersAttribute; exports.vectorPathLocalBounds = vectorPathLocalBounds; exports.vectorPaintToSvg = vectorPaintToSvg; exports.vectorStrokeSvgParts = vectorStrokeSvgParts; exports.widthProfileToAttribute = widthProfileToAttribute; exports.widthProfileFromAttribute = widthProfileFromAttribute; exports.vectorDocumentToSvg = vectorDocumentToSvg; exports.parseSvgTransform = parseSvgTransform; exports.parseVectorSvg = parseVectorSvg;
5994
- //# sourceMappingURL=chunk-YJLCBA7V.cjs.map
5994
+ //# sourceMappingURL=chunk-7MD7C6XQ.cjs.map