@pixerate/editor 0.74.0 → 0.76.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.
- package/THIRD_PARTY_NOTICES.md +2 -0
- package/dist/agent/index.cjs +28 -28
- package/dist/agent/index.js +3 -3
- package/dist/animation-editor/index.cjs +322 -273
- package/dist/animation-editor/index.cjs.map +1 -1
- package/dist/animation-editor/index.d.cts +96 -3
- package/dist/animation-editor/index.d.ts +96 -3
- package/dist/animation-editor/index.js +138 -89
- package/dist/animation-editor/index.js.map +1 -1
- package/dist/canvas/index.cjs +26 -26
- package/dist/canvas/index.js +2 -2
- package/dist/{chunk-3TLL5OID.js → chunk-4JLB2USO.js} +2 -2
- package/dist/{chunk-YJLCBA7V.cjs → chunk-7MD7C6XQ.cjs} +87 -87
- package/dist/{chunk-YJLCBA7V.cjs.map → chunk-7MD7C6XQ.cjs.map} +1 -1
- package/dist/{chunk-OK7T2LHK.js → chunk-GNO5PEMH.js} +2 -2
- package/dist/{chunk-EIXXBKUB.js → chunk-IMSX4IVG.js} +7 -7
- package/dist/chunk-INZJALPY.js +87 -0
- package/dist/chunk-INZJALPY.js.map +1 -0
- package/dist/{chunk-MLREO6J3.cjs → chunk-JEYDXRWQ.cjs} +46 -46
- package/dist/{chunk-MLREO6J3.cjs.map → chunk-JEYDXRWQ.cjs.map} +1 -1
- package/dist/{chunk-PL3MPFPA.cjs → chunk-MXF4DP2C.cjs} +77 -77
- package/dist/{chunk-PL3MPFPA.cjs.map → chunk-MXF4DP2C.cjs.map} +1 -1
- package/dist/{chunk-T4XWVPJK.cjs → chunk-RKJDBXTY.cjs} +3 -3
- package/dist/{chunk-T4XWVPJK.cjs.map → chunk-RKJDBXTY.cjs.map} +1 -1
- package/dist/{chunk-HNDSPZ5T.cjs → chunk-ROXFP2LQ.cjs} +4 -4
- package/dist/{chunk-HNDSPZ5T.cjs.map → chunk-ROXFP2LQ.cjs.map} +1 -1
- package/dist/{chunk-WON34HKM.js → chunk-SVW2UNUC.js} +2 -2
- package/dist/{chunk-66IMF6OD.cjs → chunk-TYOAJDFD.cjs} +3 -3
- package/dist/{chunk-66IMF6OD.cjs.map → chunk-TYOAJDFD.cjs.map} +1 -1
- package/dist/chunk-WAJQKWQU.cjs +87 -0
- package/dist/chunk-WAJQKWQU.cjs.map +1 -0
- package/dist/{chunk-O2UH7LZE.cjs → chunk-XGD3FSNC.cjs} +239 -239
- package/dist/chunk-XGD3FSNC.cjs.map +1 -0
- package/dist/{chunk-VWZB6BCY.js → chunk-Y3NW4VJE.js} +2 -2
- package/dist/{chunk-GTMJ4Y3S.js → chunk-YCSFS3GK.js} +244 -244
- package/dist/{chunk-GTMJ4Y3S.js.map → chunk-YCSFS3GK.js.map} +1 -1
- package/dist/{chunk-UKI64KUD.js → chunk-ZQNDSUZO.js} +6 -6
- package/dist/extensions/index.cjs +7 -7
- package/dist/extensions/index.cjs.map +1 -1
- package/dist/extensions/index.js +6 -6
- package/dist/index.cjs +35 -35
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +17 -17
- package/dist/serializers/index.cjs +4 -4
- package/dist/serializers/index.cjs.map +1 -1
- package/dist/serializers/index.js +3 -3
- package/dist/vector/index.cjs +532 -532
- package/dist/vector/index.js +3 -3
- package/dist/video-editor/index.cjs +2219 -0
- package/dist/video-editor/index.cjs.map +1 -0
- package/dist/video-editor/index.d.cts +985 -0
- package/dist/video-editor/index.d.ts +985 -0
- package/dist/video-editor/index.js +2219 -0
- package/dist/video-editor/index.js.map +1 -0
- package/package.json +6 -1
- package/dist/chunk-O2UH7LZE.cjs.map +0 -1
- /package/dist/{chunk-3TLL5OID.js.map → chunk-4JLB2USO.js.map} +0 -0
- /package/dist/{chunk-OK7T2LHK.js.map → chunk-GNO5PEMH.js.map} +0 -0
- /package/dist/{chunk-EIXXBKUB.js.map → chunk-IMSX4IVG.js.map} +0 -0
- /package/dist/{chunk-WON34HKM.js.map → chunk-SVW2UNUC.js.map} +0 -0
- /package/dist/{chunk-VWZB6BCY.js.map → chunk-Y3NW4VJE.js.map} +0 -0
- /package/dist/{chunk-UKI64KUD.js.map → chunk-ZQNDSUZO.js.map} +0 -0
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
var
|
|
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 =
|
|
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) :
|
|
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 =
|
|
927
|
-
const d = vec(
|
|
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(
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
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 =
|
|
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 (
|
|
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
|
-
|
|
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) =>
|
|
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 =
|
|
1579
|
+
const near = _chunkXGD3FSNCcjs.segmentNearest.call(void 0, seg, p);
|
|
1580
1580
|
if (!best || near.distance < best.distance) {
|
|
1581
|
-
const s = acc +
|
|
1582
|
-
const tan =
|
|
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 =
|
|
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) =>
|
|
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 (
|
|
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 =
|
|
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 =
|
|
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
|
|
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) =>
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 ?
|
|
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:
|
|
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 =
|
|
1810
|
-
else if (parts.align === "outside") area =
|
|
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
|
|
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 (
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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,
|
|
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 =
|
|
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 =
|
|
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) ?
|
|
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 :
|
|
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
|
|
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 =
|
|
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 :
|
|
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 =
|
|
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) &&
|
|
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
|
|
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 =
|
|
3534
|
+
const hit = _chunkXGD3FSNCcjs.segmentNearest.call(void 0, seg, [p.x, p.y]);
|
|
3535
3535
|
if (!best || hit.distance < best.distance) {
|
|
3536
|
-
const pt2 =
|
|
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] =
|
|
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
|
|
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) =>
|
|
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 =
|
|
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 +=
|
|
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) =>
|
|
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
|
|
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(...
|
|
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 =
|
|
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 =
|
|
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) =>
|
|
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 =
|
|
4058
|
-
out.push({ p:
|
|
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
|
|
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) =>
|
|
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 =
|
|
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) =>
|
|
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 =
|
|
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] =
|
|
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 +=
|
|
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
|
|
4907
|
-
const segs =
|
|
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 =
|
|
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}:${
|
|
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, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">");
|
|
5069
5069
|
function vectorPathLocalBounds(node) {
|
|
5070
|
-
const b =
|
|
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 =
|
|
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:
|
|
5117
|
+
d: _chunkXGD3FSNCcjs.bezierPathToSvg.call(void 0, parts.line, { precision }),
|
|
5118
5118
|
width: parts.drawWidth,
|
|
5119
|
-
...profiled && (_nullishCoalesce(node.strokeWidth, () => ( 1))) > 0 ? { outline:
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
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}="${
|
|
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="${
|
|
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 =
|
|
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 =
|
|
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-
|
|
5994
|
+
//# sourceMappingURL=chunk-7MD7C6XQ.cjs.map
|