@pixerate/editor 0.125.0 → 0.127.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animation/index.d.cts +2 -3
- package/dist/animation/index.d.ts +2 -3
- package/dist/animation-editor/index.cjs +71 -73
- package/dist/animation-editor/index.cjs.map +1 -1
- package/dist/animation-editor/index.d.cts +6 -8
- package/dist/animation-editor/index.d.ts +6 -8
- package/dist/animation-editor/index.js +11 -13
- package/dist/animation-editor/index.js.map +1 -1
- package/dist/{bezier-CBzKKDjl.d.cts → bezier-DBz0IgEt.d.cts} +22 -2
- package/dist/{bezier-CWv6LQal.d.ts → bezier-DWI5MEkI.d.ts} +22 -2
- package/dist/{brushstrokeRender-LRV7GXGD.js → brushstrokeRender-7RUITO42.js} +3 -3
- package/dist/{brushstrokeRender-EELTV7U4.cjs → brushstrokeRender-OW6ENCZG.cjs} +7 -7
- package/dist/{brushstrokeRender-EELTV7U4.cjs.map → brushstrokeRender-OW6ENCZG.cjs.map} +1 -1
- package/dist/canvas/index.cjs +423 -37
- package/dist/canvas/index.cjs.map +1 -1
- package/dist/canvas/index.d.cts +189 -11
- package/dist/canvas/index.d.ts +189 -11
- package/dist/canvas/index.js +395 -9
- package/dist/canvas/index.js.map +1 -1
- package/dist/{chunk-7LQO6OHH.cjs → chunk-33SO3QWP.cjs} +4 -4
- package/dist/{chunk-7LQO6OHH.cjs.map → chunk-33SO3QWP.cjs.map} +1 -1
- package/dist/{chunk-MPQAO33O.js → chunk-A6KHMKI4.js} +3 -3
- package/dist/{chunk-V5YGPRCZ.cjs → chunk-BEGEWQHD.cjs} +41 -41
- package/dist/{chunk-V5YGPRCZ.cjs.map → chunk-BEGEWQHD.cjs.map} +1 -1
- package/dist/{chunk-N3FVUOZD.cjs → chunk-BJTCSLF6.cjs} +7 -7
- package/dist/{chunk-N3FVUOZD.cjs.map → chunk-BJTCSLF6.cjs.map} +1 -1
- package/dist/{chunk-WUDPFWAN.js → chunk-F7Q2NE2Y.js} +3 -3
- package/dist/{chunk-G6WXWS4Y.js → chunk-FICSDDDF.js} +2 -2
- package/dist/{chunk-GUZ47CJM.cjs → chunk-IZ4WRXZA.cjs} +1 -1
- package/dist/{chunk-GUZ47CJM.cjs.map → chunk-IZ4WRXZA.cjs.map} +1 -1
- package/dist/{chunk-QDJKUBWE.cjs → chunk-JODTP4DP.cjs} +176 -5
- package/dist/chunk-JODTP4DP.cjs.map +1 -0
- package/dist/{chunk-GLWZXQ4Q.js → chunk-KHNZ6MOU.js} +1 -1
- package/dist/chunk-KHNZ6MOU.js.map +1 -0
- package/dist/{chunk-GCJWMEYW.cjs → chunk-KSJLDRHK.cjs} +46 -46
- package/dist/{chunk-GCJWMEYW.cjs.map → chunk-KSJLDRHK.cjs.map} +1 -1
- package/dist/{chunk-QQKTOA4U.cjs → chunk-ORE334I6.cjs} +132 -132
- package/dist/{chunk-QQKTOA4U.cjs.map → chunk-ORE334I6.cjs.map} +1 -1
- package/dist/{chunk-X6KTSFAE.js → chunk-Q4NBEVV5.js} +2 -2
- package/dist/{chunk-XZWOLXWA.js → chunk-QFSTQHZY.js} +174 -3
- package/dist/chunk-QFSTQHZY.js.map +1 -0
- package/dist/{chunk-FPRIUR4T.js → chunk-ROZFX4QI.js} +3 -3
- package/dist/{chunk-UXFI3CDZ.cjs → chunk-SFCPGMCT.cjs} +8 -8
- package/dist/{chunk-UXFI3CDZ.cjs.map → chunk-SFCPGMCT.cjs.map} +1 -1
- package/dist/{chunk-J67OLQUQ.js → chunk-UABQTYQF.js} +3 -3
- package/dist/{chunk-O5RVCDEC.cjs → chunk-XLUYXUBD.cjs} +88 -88
- package/dist/{chunk-O5RVCDEC.cjs.map → chunk-XLUYXUBD.cjs.map} +1 -1
- package/dist/{chunk-FG274FYT.js → chunk-YGJIER2R.js} +2 -2
- package/dist/effects/index.cjs +32 -34
- package/dist/effects/index.cjs.map +1 -1
- package/dist/effects/index.d.cts +6 -38
- package/dist/effects/index.d.ts +6 -38
- package/dist/effects/index.js +3 -5
- package/dist/effects/index.js.map +1 -1
- package/dist/evaluate-BbCeF6pt.d.ts +114 -0
- package/dist/evaluate-BsxYieLN.d.cts +114 -0
- package/dist/{export-DVl4fWy5.d.cts → export-Cbr9IqpJ.d.cts} +1 -1
- package/dist/{export-Bp7ji2r4.d.cts → export-CcldobdN.d.cts} +3 -3
- package/dist/{export-C1s4eolZ.d.ts → export-ClPKUB-v.d.ts} +1 -1
- package/dist/{export-DAyPY94f.d.ts → export-PGhOpDmz.d.ts} +3 -3
- package/dist/{helpers-i95Ob6Vi.d.cts → helpers-C5aAd44p.d.cts} +67 -4
- package/dist/{helpers-BBLlekuM.d.ts → helpers-CPWcK504.d.ts} +67 -4
- package/dist/image-editor/index.cjs +619 -621
- package/dist/image-editor/index.cjs.map +1 -1
- package/dist/image-editor/index.d.cts +9 -11
- package/dist/image-editor/index.d.ts +9 -11
- package/dist/image-editor/index.js +6 -8
- package/dist/image-editor/index.js.map +1 -1
- package/dist/{opentype-14PDI5D2.d.ts → opentype-01rMIuQR.d.ts} +1 -1
- package/dist/{opentype-D80AVmMu.d.cts → opentype-BgqvmGT-.d.cts} +1 -1
- package/dist/paint-editor/index.cjs +737 -117
- package/dist/paint-editor/index.cjs.map +1 -1
- package/dist/paint-editor/index.d.cts +248 -13
- package/dist/paint-editor/index.d.ts +248 -13
- package/dist/paint-editor/index.js +635 -15
- package/dist/paint-editor/index.js.map +1 -1
- package/dist/{pathfinder-DjISxkUv.d.ts → pathfinder-D-h0Imus.d.ts} +1 -1
- package/dist/{pathfinder-C0UoFypx.d.cts → pathfinder-DgG0Z9Lr.d.cts} +1 -1
- package/dist/{player-cGLrngL_.d.ts → player-BK2kKbfd.d.ts} +1 -1
- package/dist/{player-CBtEoU2x.d.cts → player-CmbY3218.d.cts} +1 -1
- package/dist/pool-C7GtrL34.d.cts +34 -0
- package/dist/pool-CTrtciaN.d.ts +34 -0
- package/dist/{svg-DJKriJ4A.d.ts → svg-BRLwcibA.d.ts} +2 -3
- package/dist/{svg-BkRL-fZJ.d.cts → svg-DLBBPQP9.d.cts} +2 -3
- package/dist/{tools-CM8Oe8F3.d.ts → tools-AugT22z3.d.ts} +1 -1
- package/dist/{tools-DZCv2kX1.d.cts → tools-BpCmUNxb.d.cts} +1 -1
- package/dist/vector/index.cjs +923 -925
- package/dist/vector/index.cjs.map +1 -1
- package/dist/vector/index.d.cts +10 -12
- package/dist/vector/index.d.ts +10 -12
- package/dist/vector/index.js +11 -13
- package/dist/vector/index.js.map +1 -1
- package/dist/video-editor/index.cjs +269 -271
- package/dist/video-editor/index.cjs.map +1 -1
- package/dist/video-editor/index.d.cts +6 -8
- package/dist/video-editor/index.d.ts +6 -8
- package/dist/video-editor/index.js +3 -5
- package/dist/video-editor/index.js.map +1 -1
- package/dist/{warp-CH9MM435.d.cts → warp-C13L_GRn.d.cts} +1 -1
- package/dist/{warp-k_PdtXOG.d.ts → warp-q8FK5HHi.d.ts} +1 -1
- package/package.json +1 -1
- package/skills/pixerate-canvas/SKILL.md +19 -0
- package/skills/pixerate-paint-editor/SKILL.md +40 -1
- package/dist/behavior-Ymbld6jL.d.cts +0 -60
- package/dist/behavior-Ymbld6jL.d.ts +0 -60
- package/dist/chunk-GLWZXQ4Q.js.map +0 -1
- package/dist/chunk-IOXKXQNW.cjs +0 -178
- package/dist/chunk-IOXKXQNW.cjs.map +0 -1
- package/dist/chunk-QDJKUBWE.cjs.map +0 -1
- package/dist/chunk-TGKT5QAB.js +0 -178
- package/dist/chunk-TGKT5QAB.js.map +0 -1
- package/dist/chunk-XZWOLXWA.js.map +0 -1
- package/dist/evaluate-2S3vSPLy.d.cts +0 -55
- package/dist/evaluate-CfmT6xA3.d.ts +0 -55
- package/dist/gradient-KDfCvhuj.d.cts +0 -66
- package/dist/gradient-KDfCvhuj.d.ts +0 -66
- /package/dist/{brushstrokeRender-LRV7GXGD.js.map → brushstrokeRender-7RUITO42.js.map} +0 -0
- /package/dist/{chunk-MPQAO33O.js.map → chunk-A6KHMKI4.js.map} +0 -0
- /package/dist/{chunk-WUDPFWAN.js.map → chunk-F7Q2NE2Y.js.map} +0 -0
- /package/dist/{chunk-G6WXWS4Y.js.map → chunk-FICSDDDF.js.map} +0 -0
- /package/dist/{chunk-X6KTSFAE.js.map → chunk-Q4NBEVV5.js.map} +0 -0
- /package/dist/{chunk-FPRIUR4T.js.map → chunk-ROZFX4QI.js.map} +0 -0
- /package/dist/{chunk-J67OLQUQ.js.map → chunk-UABQTYQF.js.map} +0 -0
- /package/dist/{chunk-FG274FYT.js.map → chunk-YGJIER2R.js.map} +0 -0
|
@@ -27,14 +27,14 @@
|
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
var
|
|
30
|
+
var _chunkBJTCSLF6cjs = require('./chunk-BJTCSLF6.cjs');
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
|
|
37
|
-
var
|
|
37
|
+
var _chunkIZ4WRXZAcjs = require('./chunk-IZ4WRXZA.cjs');
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
|
|
@@ -390,7 +390,7 @@ function spanVectorGradientStops(g, from, to, expanded = expandVectorGradientSto
|
|
|
390
390
|
var hasExplicitGradientGeometry = (g) => finitePoint(g.start) && finitePoint(g.end);
|
|
391
391
|
function shorthandPoints(g) {
|
|
392
392
|
if (g.type === "linear" || g.type === "reflected") {
|
|
393
|
-
const c =
|
|
393
|
+
const c = _chunkIZ4WRXZAcjs.angleToSvgLinearCoords.call(void 0, Number.isFinite(g.angle) ? g.angle : 180);
|
|
394
394
|
const start2 = g.type === "linear" ? { x: c.x1, y: c.y1 } : { x: 0.5, y: 0.5 };
|
|
395
395
|
const end = { x: c.x2, y: c.y2 };
|
|
396
396
|
return { start: start2, end, width: add(start2, perp(sub(end, start2))) };
|
|
@@ -1378,7 +1378,7 @@ var Side = class {
|
|
|
1378
1378
|
constructor(a, h1, h2, b) {
|
|
1379
1379
|
this.straight = onAnchor(a, h1) && onAnchor(b, h2);
|
|
1380
1380
|
this.curve = this.straight ? [pt(a), pt(b)] : [pt(a), pt(_nullishCoalesce(h1, () => ( a))), pt(_nullishCoalesce(h2, () => ( b))), pt(b)];
|
|
1381
|
-
this.length = this.straight ? Math.hypot(b.x - a.x, b.y - a.y) :
|
|
1381
|
+
this.length = this.straight ? Math.hypot(b.x - a.x, b.y - a.y) : _chunkBJTCSLF6cjs.segmentLength.call(void 0, this.curve);
|
|
1382
1382
|
}
|
|
1383
1383
|
/** Unit direction the side leaves the corner in (towards its first control point off the corner). */
|
|
1384
1384
|
direction() {
|
|
@@ -1396,10 +1396,10 @@ var Side = class {
|
|
|
1396
1396
|
const t2 = this.length > EPS ? Math.min(1, Math.max(0, s / this.length)) : 0;
|
|
1397
1397
|
return { t: t2, p: add2(vec(this.curve[0]), mul2(u, s)), dir: u };
|
|
1398
1398
|
}
|
|
1399
|
-
const t =
|
|
1400
|
-
const d = vec(
|
|
1399
|
+
const t = _chunkBJTCSLF6cjs.segmentParamAtLength.call(void 0, this.curve, s, this.length);
|
|
1400
|
+
const d = vec(_chunkBJTCSLF6cjs.segmentDerivative.call(void 0, this.curve, t));
|
|
1401
1401
|
const l = len(d);
|
|
1402
|
-
return { t, p: vec(
|
|
1402
|
+
return { t, p: vec(_chunkBJTCSLF6cjs.segmentPoint.call(void 0, this.curve, t)), dir: l > EPS ? mul2(d, 1 / l) : u };
|
|
1403
1403
|
}
|
|
1404
1404
|
};
|
|
1405
1405
|
function cornerOf(sp, s, i) {
|
|
@@ -1548,7 +1548,7 @@ function expandVectorCornersOf(sp, subpath = 0) {
|
|
|
1548
1548
|
const s0 = from ? from.tv : 0;
|
|
1549
1549
|
const s1 = to ? 1 - to.tu : 1;
|
|
1550
1550
|
const seg = [pt(a), pt(_nullishCoalesce(a.out, () => ( a))), pt(_nullishCoalesce(b.in, () => ( b))), pt(b)];
|
|
1551
|
-
const part =
|
|
1551
|
+
const part = _chunkBJTCSLF6cjs.subSegment.call(void 0, seg, s0, Math.max(s0, s1));
|
|
1552
1552
|
return { out: vec(part[1]), in: vec(part[2]) };
|
|
1553
1553
|
});
|
|
1554
1554
|
const anchors = [];
|
|
@@ -1856,7 +1856,7 @@ function flatten(segments, closed, tol) {
|
|
|
1856
1856
|
corner.push(isCorner);
|
|
1857
1857
|
};
|
|
1858
1858
|
for (const seg of segments) {
|
|
1859
|
-
const flat =
|
|
1859
|
+
const flat = _chunkBJTCSLF6cjs.flattenChain.call(void 0, [seg], tol);
|
|
1860
1860
|
if (dist(seg[0], seg[seg.length - 1]) <= 1e-12 && flat.length > 1) flat.push(seg[seg.length - 1]);
|
|
1861
1861
|
flat.forEach((p, i) => push(p, i === 0 || i === flat.length - 1));
|
|
1862
1862
|
}
|
|
@@ -1946,7 +1946,7 @@ function variableStrokeRings(path, options) {
|
|
|
1946
1946
|
const last = out[out.length - 1];
|
|
1947
1947
|
if (!last || dist(last, p) > 1e-12) out.push(p);
|
|
1948
1948
|
};
|
|
1949
|
-
for (const contour of
|
|
1949
|
+
for (const contour of _chunkBJTCSLF6cjs.pathToContours.call(void 0, path)) {
|
|
1950
1950
|
if (!contour.segments.length) continue;
|
|
1951
1951
|
const poly = flatten(contour.segments, contour.closed, Math.min(tol, half) / 4);
|
|
1952
1952
|
if (!poly) continue;
|
|
@@ -2072,7 +2072,7 @@ function variableStrokeOutline(path, options) {
|
|
|
2072
2072
|
const tol = options.tolerance && options.tolerance > 0 ? options.tolerance : 0.05;
|
|
2073
2073
|
let polygons;
|
|
2074
2074
|
try {
|
|
2075
|
-
polygons =
|
|
2075
|
+
polygons = _chunkBJTCSLF6cjs.polygonBoolean.call(void 0, "union", [{ rings: pieces, fillRule: "nonzero" }]);
|
|
2076
2076
|
} catch (e3) {
|
|
2077
2077
|
return [];
|
|
2078
2078
|
}
|
|
@@ -2080,11 +2080,11 @@ function variableStrokeOutline(path, options) {
|
|
|
2080
2080
|
for (const polygon3 of polygons) {
|
|
2081
2081
|
for (const ring of polygon3) {
|
|
2082
2082
|
if (ring.length < 3) continue;
|
|
2083
|
-
const cubics =
|
|
2083
|
+
const cubics = _chunkIZ4WRXZAcjs.fitCubics.call(void 0, ring, tol, { closed: true, cornerAngleDeg: 25 });
|
|
2084
2084
|
if (!cubics.length) continue;
|
|
2085
2085
|
out.push({ type: "M", x: cubics[0].p0[0], y: cubics[0].p0[1] });
|
|
2086
2086
|
cubics.forEach((c, i) => {
|
|
2087
|
-
if (
|
|
2087
|
+
if (_chunkIZ4WRXZAcjs.isStraightCubic.call(void 0, c, tol * 0.02)) {
|
|
2088
2088
|
if (i < cubics.length - 1) out.push({ type: "L", x: c.p3[0], y: c.p3[1] });
|
|
2089
2089
|
} else out.push({ type: "C", x1: c.p1[0], y1: c.p1[1], x2: c.p2[0], y2: c.p2[1], x: c.p3[0], y: c.p3[1] });
|
|
2090
2090
|
});
|
|
@@ -2095,17 +2095,17 @@ function variableStrokeOutline(path, options) {
|
|
|
2095
2095
|
}
|
|
2096
2096
|
function nearestStrokePosition(path, p, only) {
|
|
2097
2097
|
let best = null;
|
|
2098
|
-
|
|
2098
|
+
_chunkBJTCSLF6cjs.pathToContours.call(void 0, path).forEach((c, ci) => {
|
|
2099
2099
|
if (!c.segments.length || only !== void 0 && ci !== only) return;
|
|
2100
|
-
const lengths = c.segments.map((s) =>
|
|
2100
|
+
const lengths = c.segments.map((s) => _chunkBJTCSLF6cjs.segmentLength.call(void 0, s));
|
|
2101
2101
|
const total = lengths.reduce((a, b) => a + b, 0);
|
|
2102
2102
|
if (!(total > 0)) return;
|
|
2103
2103
|
let acc = 0;
|
|
2104
2104
|
c.segments.forEach((seg, si) => {
|
|
2105
|
-
const near3 =
|
|
2105
|
+
const near3 = _chunkBJTCSLF6cjs.segmentNearest.call(void 0, seg, p);
|
|
2106
2106
|
if (!best || near3.distance < best.distance) {
|
|
2107
|
-
const s = acc +
|
|
2108
|
-
const tan =
|
|
2107
|
+
const s = acc + _chunkBJTCSLF6cjs.segmentLength.call(void 0, seg, 0, near3.t);
|
|
2108
|
+
const tan = _chunkBJTCSLF6cjs.segmentTangent.call(void 0, seg, near3.t);
|
|
2109
2109
|
const pt2 = seg.length === 2 ? lerp2(seg[0], seg[1], near3.t) : evalSeg(seg, near3.t);
|
|
2110
2110
|
const n = leftNormal([tan[0], tan[1]]);
|
|
2111
2111
|
const side = (p[0] - pt2[0]) * n[0] + (p[1] - pt2[1]) * n[1] >= 0 ? "left" : "right";
|
|
@@ -2122,9 +2122,9 @@ function evalSeg(seg, t) {
|
|
|
2122
2122
|
return pts[0];
|
|
2123
2123
|
}
|
|
2124
2124
|
function strokePositionPoint(path, index, t) {
|
|
2125
|
-
const c =
|
|
2125
|
+
const c = _chunkBJTCSLF6cjs.pathToContours.call(void 0, path)[index];
|
|
2126
2126
|
if (!_optionalChain([c, 'optionalAccess', _44 => _44.segments, 'access', _45 => _45.length])) return null;
|
|
2127
|
-
const lengths = c.segments.map((s) =>
|
|
2127
|
+
const lengths = c.segments.map((s) => _chunkBJTCSLF6cjs.segmentLength.call(void 0, s));
|
|
2128
2128
|
const total = lengths.reduce((a, b) => a + b, 0);
|
|
2129
2129
|
let want = Math.min(Math.max(t, 0), 1) * total;
|
|
2130
2130
|
for (let i = 0; i < c.segments.length; i++) {
|
|
@@ -2135,11 +2135,11 @@ function strokePositionPoint(path, index, t) {
|
|
|
2135
2135
|
const target = Math.min(want, lengths[i]);
|
|
2136
2136
|
for (let k = 0; k < 40; k++) {
|
|
2137
2137
|
const mid = (lo + hi) / 2;
|
|
2138
|
-
if (
|
|
2138
|
+
if (_chunkBJTCSLF6cjs.segmentLength.call(void 0, seg, 0, mid) < target) lo = mid;
|
|
2139
2139
|
else hi = mid;
|
|
2140
2140
|
}
|
|
2141
2141
|
const u = (lo + hi) / 2;
|
|
2142
|
-
const tan =
|
|
2142
|
+
const tan = _chunkBJTCSLF6cjs.segmentTangent.call(void 0, seg, u);
|
|
2143
2143
|
return { point: evalSeg(seg, u), tangent: [tan[0], tan[1]] };
|
|
2144
2144
|
}
|
|
2145
2145
|
want -= lengths[i];
|
|
@@ -2151,7 +2151,7 @@ function strokePositionPoint(path, index, t) {
|
|
|
2151
2151
|
var KAPPA = 0.5522847498307936;
|
|
2152
2152
|
var NOTCH = 0.7;
|
|
2153
2153
|
function isClosedBezierShape(path) {
|
|
2154
|
-
const contours =
|
|
2154
|
+
const contours = _chunkBJTCSLF6cjs.pathToContours.call(void 0, path).filter((c) => c.segments.length > 0);
|
|
2155
2155
|
return contours.length > 0 && contours.every((c) => c.closed);
|
|
2156
2156
|
}
|
|
2157
2157
|
function effectiveStrokeAlign(style, closedShape) {
|
|
@@ -2172,7 +2172,7 @@ function vectorStrokeLineArea(parts, style, tolerance) {
|
|
|
2172
2172
|
const join = _nullishCoalesce(style.strokeLinejoin, () => ( "miter"));
|
|
2173
2173
|
const cap = _nullishCoalesce(style.strokeLinecap, () => ( "butt"));
|
|
2174
2174
|
if (profile) return variableStrokeOutline(parts.line, { width: parts.drawWidth, profile, join, cap, ...dash, ...tolerance ? { tolerance } : {} });
|
|
2175
|
-
return
|
|
2175
|
+
return _chunkBJTCSLF6cjs.outlineStroke.call(void 0, parts.line, { width: parts.drawWidth, join, cap, ...dash, ...tolerance ? { tolerance } : {} });
|
|
2176
2176
|
}
|
|
2177
2177
|
var capExtent = (style, width) => style.strokeLinecap === "round" || style.strokeLinecap === "square" ? width / 2 : 0;
|
|
2178
2178
|
function arrowheadWeight(style, end) {
|
|
@@ -2253,16 +2253,16 @@ function arrowheadPath(kind, tip, dir, hw) {
|
|
|
2253
2253
|
}
|
|
2254
2254
|
}
|
|
2255
2255
|
var toVec = (p) => ({ x: p[0], y: p[1] });
|
|
2256
|
-
var segLen = (s) =>
|
|
2256
|
+
var segLen = (s) => _chunkBJTCSLF6cjs.segmentLength.call(void 0, s);
|
|
2257
2257
|
function endOf(segs, atStart) {
|
|
2258
2258
|
const long = (s2) => segLen(s2) > 1e-9;
|
|
2259
2259
|
if (atStart) {
|
|
2260
2260
|
const s2 = _nullishCoalesce(segs.find(long), () => ( segs[0]));
|
|
2261
|
-
const t2 =
|
|
2261
|
+
const t2 = _chunkBJTCSLF6cjs.segmentTangent.call(void 0, s2, 0);
|
|
2262
2262
|
return { p: toVec(segs[0][0]), out: v(-t2[0], -t2[1]) };
|
|
2263
2263
|
}
|
|
2264
2264
|
const s = _nullishCoalesce([...segs].reverse().find(long), () => ( segs[segs.length - 1]));
|
|
2265
|
-
const t =
|
|
2265
|
+
const t = _chunkBJTCSLF6cjs.segmentTangent.call(void 0, s, 1);
|
|
2266
2266
|
const last = segs[segs.length - 1];
|
|
2267
2267
|
return { p: toVec(last[last.length - 1]), out: v(t[0], t[1]) };
|
|
2268
2268
|
}
|
|
@@ -2273,7 +2273,7 @@ function pointAlong(segs, fromStart, dist3) {
|
|
|
2273
2273
|
const l = segLen(s);
|
|
2274
2274
|
if (acc + l >= dist3) {
|
|
2275
2275
|
const want = fromStart ? dist3 - acc : l - (dist3 - acc);
|
|
2276
|
-
const pts =
|
|
2276
|
+
const pts = _chunkBJTCSLF6cjs.trimSegments.call(void 0, [s], 0, want);
|
|
2277
2277
|
const p = pts.length ? pts[0][pts[0].length - 1] : s[0];
|
|
2278
2278
|
return toVec(p);
|
|
2279
2279
|
}
|
|
@@ -2283,7 +2283,7 @@ function pointAlong(segs, fromStart, dist3) {
|
|
|
2283
2283
|
}
|
|
2284
2284
|
function vectorStrokeParts(path, style) {
|
|
2285
2285
|
const width = _nullishCoalesce(style.strokeWidth, () => ( 1));
|
|
2286
|
-
const contours =
|
|
2286
|
+
const contours = _chunkBJTCSLF6cjs.pathToContours.call(void 0, path).filter((c) => c.segments.length > 0);
|
|
2287
2287
|
const closedShape = contours.length > 0 && contours.every((c) => c.closed);
|
|
2288
2288
|
const align = effectiveStrokeAlign(style, closedShape);
|
|
2289
2289
|
const drawWidth = align === "center" ? width : width * 2;
|
|
@@ -2323,26 +2323,26 @@ function vectorStrokeParts(path, style) {
|
|
|
2323
2323
|
if (!s0 && !s1) return c;
|
|
2324
2324
|
const lengths = c.segments.map(segLen);
|
|
2325
2325
|
const total = lengths.reduce((a, b) => a + b, 0);
|
|
2326
|
-
return { closed: false, segments: total - s1 > s0 ?
|
|
2326
|
+
return { closed: false, segments: total - s1 > s0 ? _chunkBJTCSLF6cjs.trimSegments.call(void 0, c.segments, s0, total - s1, lengths) : [] };
|
|
2327
2327
|
});
|
|
2328
|
-
return { align, line:
|
|
2328
|
+
return { align, line: _chunkBJTCSLF6cjs.contoursToPath.call(void 0, trimmed), drawWidth, heads };
|
|
2329
2329
|
}
|
|
2330
2330
|
function vectorStrokeOutlinePath(path, style) {
|
|
2331
2331
|
const parts = vectorStrokeParts(path, style);
|
|
2332
2332
|
const stroke = vectorStrokeLineArea(parts, style);
|
|
2333
2333
|
const fill = { path, fillRule: _nullishCoalesce(style.fillRule, () => ( "nonzero")) };
|
|
2334
2334
|
let area = stroke;
|
|
2335
|
-
if (parts.align === "inside") area =
|
|
2336
|
-
else if (parts.align === "outside") area =
|
|
2335
|
+
if (parts.align === "inside") area = _chunkBJTCSLF6cjs.pathBoolean.call(void 0, "intersection", [stroke, fill]).path;
|
|
2336
|
+
else if (parts.align === "outside") area = _chunkBJTCSLF6cjs.pathBoolean.call(void 0, "difference", [stroke, fill]).path;
|
|
2337
2337
|
if (!parts.heads.length) return area;
|
|
2338
|
-
return
|
|
2338
|
+
return _chunkBJTCSLF6cjs.pathBoolean.call(void 0, "union", [area, ...parts.heads.map((h) => h.path)]).path;
|
|
2339
2339
|
}
|
|
2340
2340
|
function hitTestVectorStroke(path, p, style, tolerance = 0) {
|
|
2341
2341
|
const parts = vectorStrokeParts(path, style);
|
|
2342
2342
|
const point = [p.x, p.y];
|
|
2343
2343
|
const width = _nullishCoalesce(style.strokeWidth, () => ( 1));
|
|
2344
2344
|
for (const h of parts.heads) {
|
|
2345
|
-
if (
|
|
2345
|
+
if (_chunkBJTCSLF6cjs.pointInBezierPath.call(void 0, h.path, point) || tolerance > 0 && _chunkBJTCSLF6cjs.distanceToBezierPath.call(void 0, h.path, point) <= tolerance) return true;
|
|
2346
2346
|
}
|
|
2347
2347
|
if (!parts.line.length) return false;
|
|
2348
2348
|
const profile = strokeWidthProfileOf(style);
|
|
@@ -2360,13 +2360,13 @@ function hitTestVectorStroke(path, p, style, tolerance = 0) {
|
|
|
2360
2360
|
reach = Math.max(reach, width / 2 * (w.left + w.right) / 2);
|
|
2361
2361
|
}
|
|
2362
2362
|
} else {
|
|
2363
|
-
d =
|
|
2363
|
+
d = _chunkBJTCSLF6cjs.distanceToBezierPath.call(void 0, parts.line, point);
|
|
2364
2364
|
if (parts.align !== "center") reach = width;
|
|
2365
2365
|
}
|
|
2366
2366
|
if (parts.align === "center") return d <= reach + tolerance;
|
|
2367
2367
|
if (d > reach + tolerance) return false;
|
|
2368
2368
|
if (d <= tolerance) return true;
|
|
2369
|
-
const inside =
|
|
2369
|
+
const inside = _chunkBJTCSLF6cjs.pointInBezierPath.call(void 0, path, point, _nullishCoalesce(style.fillRule, () => ( "nonzero")));
|
|
2370
2370
|
return parts.align === "inside" ? inside : !inside;
|
|
2371
2371
|
}
|
|
2372
2372
|
function vectorStrokeReach(style) {
|
|
@@ -2620,14 +2620,14 @@ function hitTestVectorPaintLayer(node, path, p, tolerance = 0) {
|
|
|
2620
2620
|
if (!l.drawn) continue;
|
|
2621
2621
|
if (l.kind === "stroke") {
|
|
2622
2622
|
if ((_nullishCoalesce(l.node.strokeWidth, () => ( 1))) > 0 && hitTestVectorStroke(path, p, l.node, tolerance)) return { kind: "stroke", index: l.index };
|
|
2623
|
-
} else if (
|
|
2623
|
+
} else if (_chunkBJTCSLF6cjs.pointInBezierPath.call(void 0, path, [p.x, p.y], _nullishCoalesce(node.fillRule, () => ( "nonzero")))) return { kind: "fill", index: l.index };
|
|
2624
2624
|
}
|
|
2625
2625
|
return null;
|
|
2626
2626
|
}
|
|
2627
2627
|
function hitTestVectorPaintStack(node, path, p, tolerance = 0) {
|
|
2628
2628
|
if (hitTestVectorPaintLayer(node, path, p, tolerance)) return true;
|
|
2629
2629
|
if (vectorPaintLayerNodes(node).some((l) => l.kind === "stroke" && l.drawn)) return false;
|
|
2630
|
-
return
|
|
2630
|
+
return _chunkBJTCSLF6cjs.distanceToBezierPath.call(void 0, path, [p.x, p.y]) <= tolerance;
|
|
2631
2631
|
}
|
|
2632
2632
|
function vectorStacksHaveGradient(style) {
|
|
2633
2633
|
return [..._nullishCoalesce(style.fills, () => ( [])), ..._nullishCoalesce(style.strokes, () => ( []))].some((l) => isVectorGradient(l.paint));
|
|
@@ -2661,9 +2661,9 @@ function raise(seg) {
|
|
|
2661
2661
|
return [p0, [p0[0] + 2 / 3 * (p1[0] - p0[0]), p0[1] + 2 / 3 * (p1[1] - p0[1])], [p2[0] + 2 / 3 * (p1[0] - p2[0]), p2[1] + 2 / 3 * (p1[1] - p2[1])], p2];
|
|
2662
2662
|
}
|
|
2663
2663
|
function subsOf(path) {
|
|
2664
|
-
return
|
|
2664
|
+
return _chunkBJTCSLF6cjs.pathToContours.call(void 0, path).map((c) => ({ segs: _chunkBJTCSLF6cjs.closeContour.call(void 0, c).filter((s) => !degenerate(s)).map(raise), closed: c.closed })).filter((s) => s.segs.length > 0);
|
|
2665
2665
|
}
|
|
2666
|
-
var subsToPath = (subs) =>
|
|
2666
|
+
var subsToPath = (subs) => _chunkBJTCSLF6cjs.contoursToPath.call(void 0, subs.map((s) => ({ segments: s.segs, closed: s.closed })));
|
|
2667
2667
|
var unit2 = (x, y) => {
|
|
2668
2668
|
const l = Math.hypot(x, y);
|
|
2669
2669
|
return l > 1e-12 && Number.isFinite(l) ? [x / l, y / l] : null;
|
|
@@ -2686,13 +2686,13 @@ function endTangent(s) {
|
|
|
2686
2686
|
function tangentAt(s, t) {
|
|
2687
2687
|
if (t <= 1e-9) return startTangent(s);
|
|
2688
2688
|
if (t >= 1 - 1e-9) return endTangent(s);
|
|
2689
|
-
const d =
|
|
2689
|
+
const d = _chunkBJTCSLF6cjs.segmentDerivative.call(void 0, s, t);
|
|
2690
2690
|
return _nullishCoalesce(unit2(d[0], d[1]), () => ( startTangent(s)));
|
|
2691
2691
|
}
|
|
2692
2692
|
var perp2 = (v2) => [-v2[1], v2[0]];
|
|
2693
2693
|
function effectPathLength(path) {
|
|
2694
2694
|
let total = 0;
|
|
2695
|
-
for (const s of subsOf(path)) for (const seg of s.segs) total +=
|
|
2695
|
+
for (const s of subsOf(path)) for (const seg of s.segs) total += _chunkBJTCSLF6cjs.segmentLength.call(void 0, seg);
|
|
2696
2696
|
return total;
|
|
2697
2697
|
}
|
|
2698
2698
|
function effectPathVertexCount(path) {
|
|
@@ -2704,7 +2704,7 @@ var Measured = class {
|
|
|
2704
2704
|
|
|
2705
2705
|
constructor(path) {
|
|
2706
2706
|
this.segs = subsOf(path).flatMap((s) => s.segs);
|
|
2707
|
-
this.lens = this.segs.map((s) =>
|
|
2707
|
+
this.lens = this.segs.map((s) => _chunkBJTCSLF6cjs.segmentLength.call(void 0, s));
|
|
2708
2708
|
this.total = this.lens.reduce((a, b) => a + b, 0);
|
|
2709
2709
|
}
|
|
2710
2710
|
/**
|
|
@@ -2712,7 +2712,7 @@ var Measured = class {
|
|
|
2712
2712
|
* starts where it ends (across the start of a closed path).
|
|
2713
2713
|
*/
|
|
2714
2714
|
append(sa, sb, out) {
|
|
2715
|
-
for (const piece of
|
|
2715
|
+
for (const piece of _chunkBJTCSLF6cjs.trimSegments.call(void 0, this.segs, sa, sb, this.lens)) {
|
|
2716
2716
|
if (degenerate(piece)) continue;
|
|
2717
2717
|
const last = _optionalChain([out, 'access', _55 => _55[out.length - 1], 'optionalAccess', _56 => _56.segs]);
|
|
2718
2718
|
const end = _optionalChain([last, 'optionalAccess', _57 => _57[last.length - 1], 'optionalAccess', _58 => _58.at, 'call', _59 => _59(-1)]);
|
|
@@ -2827,7 +2827,7 @@ function offsetPaths(paths, amount, join = "miter", miterLimit = 4, copies = 1,
|
|
|
2827
2827
|
const n = Math.min(1e3, Math.max(1, Math.round(Number.isFinite(copies) ? copies : 1)));
|
|
2828
2828
|
return paths.map((p) => {
|
|
2829
2829
|
const out = [];
|
|
2830
|
-
for (let i = 0; i < n; i++) out.push(...
|
|
2830
|
+
for (let i = 0; i < n; i++) out.push(..._chunkBJTCSLF6cjs.offsetPath.call(void 0, p, amount * (i + 1 + copyOffset), { join, miterLimit }));
|
|
2831
2831
|
return out;
|
|
2832
2832
|
});
|
|
2833
2833
|
}
|
|
@@ -2835,8 +2835,8 @@ function sweepPath(path, dx, dy, fillRule = "nonzero", tolerance = 0.25) {
|
|
|
2835
2835
|
if (!path.length) return [];
|
|
2836
2836
|
if (!Number.isFinite(dx) || !Number.isFinite(dy) || Math.hypot(dx, dy) < 1e-9) return path.slice();
|
|
2837
2837
|
const bands = [];
|
|
2838
|
-
for (const contour of
|
|
2839
|
-
const ring =
|
|
2838
|
+
for (const contour of _chunkBJTCSLF6cjs.pathToContours.call(void 0, path)) {
|
|
2839
|
+
const ring = _chunkBJTCSLF6cjs.flattenChain.call(void 0, _chunkBJTCSLF6cjs.closeContour.call(void 0, contour, true), Math.max(1e-3, tolerance));
|
|
2840
2840
|
for (let i = 0; i < ring.length; i++) {
|
|
2841
2841
|
let p = ring[i];
|
|
2842
2842
|
let q = ring[(i + 1) % ring.length];
|
|
@@ -2846,8 +2846,8 @@ function sweepPath(path, dx, dy, fillRule = "nonzero", tolerance = 0.25) {
|
|
|
2846
2846
|
bands.push({ type: "M", x: p[0], y: p[1] }, { type: "L", x: q[0], y: q[1] }, { type: "L", x: q[0] + dx, y: q[1] + dy }, { type: "L", x: p[0] + dx, y: p[1] + dy }, { type: "Z" });
|
|
2847
2847
|
}
|
|
2848
2848
|
}
|
|
2849
|
-
const moved =
|
|
2850
|
-
return
|
|
2849
|
+
const moved = _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, path, [1, 0, 0, 1, dx, dy]);
|
|
2850
|
+
return _chunkBJTCSLF6cjs.pathBoolean.call(void 0, "union", [{ path, fillRule }, { path: moved, fillRule }, ...bands.length ? [{ path: bands, fillRule: "nonzero" }] : []]).path;
|
|
2851
2851
|
}
|
|
2852
2852
|
function twistPaths(paths, angle, center) {
|
|
2853
2853
|
let rmax = 0;
|
|
@@ -2881,10 +2881,10 @@ function twistPaths(paths, angle, center) {
|
|
|
2881
2881
|
const segs = [];
|
|
2882
2882
|
for (const seg of sub5.segs) {
|
|
2883
2883
|
const cubic = seg.length === 2 ? [seg[0], seg[0], seg[1], seg[1]] : seg;
|
|
2884
|
-
const len2 =
|
|
2884
|
+
const len2 = _chunkBJTCSLF6cjs.segmentLength.call(void 0, seg);
|
|
2885
2885
|
const m = Math.min(64, Math.max(1, Math.ceil(Math.abs(a) * len2 / rmax / 0.15 + len2 / 50)));
|
|
2886
2886
|
for (let i = 0; i < m; i++) {
|
|
2887
|
-
const q =
|
|
2887
|
+
const q = _chunkBJTCSLF6cjs.subSegment.call(void 0, cubic, i / m, (i + 1) / m);
|
|
2888
2888
|
const p0 = map(q[0]);
|
|
2889
2889
|
const p3 = map(q[3]);
|
|
2890
2890
|
const h1 = jac(q[0], [q[1][0] - q[0][0], q[1][1] - q[0][1]]);
|
|
@@ -2900,7 +2900,7 @@ function twistPaths(paths, angle, center) {
|
|
|
2900
2900
|
function resample(sub5, m) {
|
|
2901
2901
|
const segs = sub5.segs;
|
|
2902
2902
|
const n = segs.length;
|
|
2903
|
-
const lens = segs.map((s) =>
|
|
2903
|
+
const lens = segs.map((s) => _chunkBJTCSLF6cjs.segmentLength.call(void 0, s));
|
|
2904
2904
|
const out = [];
|
|
2905
2905
|
for (let j = 0; j < n; j++) {
|
|
2906
2906
|
const piece = lens[j] / m;
|
|
@@ -2915,8 +2915,8 @@ function resample(sub5, m) {
|
|
|
2915
2915
|
}
|
|
2916
2916
|
out.push({ p: segs[j][0], tan, lenPrev: prev === null ? 0 : lens[prev] / m, lenNext: piece });
|
|
2917
2917
|
} else {
|
|
2918
|
-
const t =
|
|
2919
|
-
out.push({ p:
|
|
2918
|
+
const t = _chunkBJTCSLF6cjs.segmentParamAtLength.call(void 0, segs[j], piece * k, lens[j]);
|
|
2919
|
+
out.push({ p: _chunkBJTCSLF6cjs.segmentPoint.call(void 0, segs[j], t), tan: tangentAt(segs[j], t), lenPrev: piece, lenNext: piece });
|
|
2920
2920
|
}
|
|
2921
2921
|
}
|
|
2922
2922
|
}
|
|
@@ -3014,7 +3014,7 @@ function mergePaths(paths, mode = "merge") {
|
|
|
3014
3014
|
if (mode === "merge" || !(mode in MERGE_OPS)) return paths.flat();
|
|
3015
3015
|
const inputs = paths.filter((p) => p.length > 0).map((path) => ({ path, fillRule: "nonzero" }));
|
|
3016
3016
|
if (!inputs.length) return [];
|
|
3017
|
-
return
|
|
3017
|
+
return _chunkBJTCSLF6cjs.pathBoolean.call(void 0, MERGE_OPS[mode], inputs).path;
|
|
3018
3018
|
}
|
|
3019
3019
|
function vectorRepeaterCopies(r, pivot) {
|
|
3020
3020
|
const copies = Math.max(0, Number.isFinite(r.copies) ? Math.min(r.copies, 1e3) : 0);
|
|
@@ -3037,10 +3037,10 @@ function vectorRepeaterCopies(r, pivot) {
|
|
|
3037
3037
|
return out;
|
|
3038
3038
|
}
|
|
3039
3039
|
function repeatPaths(paths, r, pivot) {
|
|
3040
|
-
return vectorRepeaterCopies(r, pivot).map((copy) => ({ copy, paths: paths.map((p) =>
|
|
3040
|
+
return vectorRepeaterCopies(r, pivot).map((copy) => ({ copy, paths: paths.map((p) => _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, p, copy.matrix)) }));
|
|
3041
3041
|
}
|
|
3042
3042
|
function pathsCenter(paths) {
|
|
3043
|
-
const b =
|
|
3043
|
+
const b = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, paths.flat());
|
|
3044
3044
|
return b ? { x: (b.minX + b.maxX) / 2, y: (b.minY + b.maxY) / 2 } : { x: 0, y: 0 };
|
|
3045
3045
|
}
|
|
3046
3046
|
|
|
@@ -3110,13 +3110,13 @@ function refit(seg, pieces, f, tol) {
|
|
|
3110
3110
|
const last = pieces[pieces.length - 1];
|
|
3111
3111
|
const t0 = !same(first[1], first[0]) ? first[1] : first[2];
|
|
3112
3112
|
const t1 = !same(last[2], last[3]) ? last[2] : last[1];
|
|
3113
|
-
const fitted =
|
|
3113
|
+
const fitted = _chunkIZ4WRXZAcjs.fitCubicRun.call(void 0, samples, tol / 2, [t0.x - first[0].x, t0.y - first[0].y], [last[3].x - t1.x, last[3].y - t1.y]);
|
|
3114
3114
|
if (!fitted.length || fitted.length >= pieces.length) return pieces;
|
|
3115
3115
|
const chain = fitted.map((c) => [c.p0, c.p1, c.p2, c.p3]);
|
|
3116
3116
|
for (let i = 0; i < n; i++) {
|
|
3117
3117
|
const q = toPoint(f(evalCubic(seg, (i + 0.5) / n)));
|
|
3118
3118
|
let best = Infinity;
|
|
3119
|
-
for (const c of chain) best = Math.min(best,
|
|
3119
|
+
for (const c of chain) best = Math.min(best, _chunkBJTCSLF6cjs.segmentNearest.call(void 0, c, q).distance);
|
|
3120
3120
|
if (best > tol) return pieces;
|
|
3121
3121
|
}
|
|
3122
3122
|
return fitted.map((c) => [toVec2(c.p0), toVec2(c.p1), toVec2(c.p2), toVec2(c.p3)]);
|
|
@@ -3317,12 +3317,12 @@ function getVectorFramePanel(state) {
|
|
|
3317
3317
|
}
|
|
3318
3318
|
|
|
3319
3319
|
// src/vector/pathCut.ts
|
|
3320
|
-
var loopArea = (l) =>
|
|
3320
|
+
var loopArea = (l) => _chunkBJTCSLF6cjs.contourSignedArea.call(void 0, l.segs);
|
|
3321
3321
|
function loopSample(l) {
|
|
3322
3322
|
const k = l.chord.findIndex((c) => !c);
|
|
3323
|
-
return
|
|
3323
|
+
return _chunkBJTCSLF6cjs.segmentPoint.call(void 0, l.segs[k >= 0 ? k : 0], 0.5);
|
|
3324
3324
|
}
|
|
3325
|
-
var contains = (l, p) =>
|
|
3325
|
+
var contains = (l, p) => _chunkBJTCSLF6cjs.windingNumber.call(void 0, [l.segs], p) !== 0;
|
|
3326
3326
|
function groupFaces(loops) {
|
|
3327
3327
|
const usable = loops.filter((l) => l.segs.length && Math.abs(loopArea(l)) > 1e-12);
|
|
3328
3328
|
if (!usable.length) return [];
|
|
@@ -3338,12 +3338,12 @@ function groupFaces(loops) {
|
|
|
3338
3338
|
return outers.reverse().map((o) => faces.get(o));
|
|
3339
3339
|
}
|
|
3340
3340
|
function faceToPath(face) {
|
|
3341
|
-
return
|
|
3341
|
+
return _chunkBJTCSLF6cjs.contoursToPath.call(void 0, face.loops.map((l) => ({ segments: l.segs, closed: true })));
|
|
3342
3342
|
}
|
|
3343
3343
|
function facesOf(path, fillRule) {
|
|
3344
|
-
const normalized =
|
|
3345
|
-
const loops =
|
|
3346
|
-
const segs =
|
|
3344
|
+
const normalized = _chunkBJTCSLF6cjs.normalizeBezierPath.call(void 0, path, fillRule);
|
|
3345
|
+
const loops = _chunkBJTCSLF6cjs.pathToContours.call(void 0, normalized).map((c) => {
|
|
3346
|
+
const segs = _chunkBJTCSLF6cjs.closeContour.call(void 0, c, true).map((s) => s.slice());
|
|
3347
3347
|
return { segs, chord: segs.map(() => false) };
|
|
3348
3348
|
});
|
|
3349
3349
|
return groupFaces(loops);
|
|
@@ -3413,7 +3413,7 @@ function lineHits(p, q, seg) {
|
|
|
3413
3413
|
const scale3 = Math.sqrt(len2) * Math.max(1, ...seg.map((pt2) => Math.abs(pt2[0]) + Math.abs(pt2[1])));
|
|
3414
3414
|
const out = [];
|
|
3415
3415
|
for (const t of rootsInUnit(...coeffs, scale3)) {
|
|
3416
|
-
const point =
|
|
3416
|
+
const point = _chunkBJTCSLF6cjs.segmentPoint.call(void 0, seg, t);
|
|
3417
3417
|
const s = ((point[0] - p[0]) * dx + (point[1] - p[1]) * dy) / len2;
|
|
3418
3418
|
if (s >= -1e-9 && s <= 1 + 1e-9) out.push({ s: Math.min(1, Math.max(0, s)), t, point });
|
|
3419
3419
|
}
|
|
@@ -3426,7 +3426,7 @@ function arc(l, a, b, eps) {
|
|
|
3426
3426
|
const segs = [];
|
|
3427
3427
|
const chord = [];
|
|
3428
3428
|
const push = (k, t0, t1) => {
|
|
3429
|
-
const piece = t0 <= 0 && t1 >= 1 ? l.segs[k].slice() :
|
|
3429
|
+
const piece = t0 <= 0 && t1 >= 1 ? l.segs[k].slice() : _chunkBJTCSLF6cjs.subSegment.call(void 0, l.segs[k], t0, t1);
|
|
3430
3430
|
if (!degenerate2(piece, eps)) {
|
|
3431
3431
|
segs.push(piece);
|
|
3432
3432
|
chord.push(l.chord[k]);
|
|
@@ -3451,7 +3451,7 @@ function knifePath(path, fillRule, knife) {
|
|
|
3451
3451
|
if (pts.length < 2) return null;
|
|
3452
3452
|
let faces = facesOf(path, fillRule);
|
|
3453
3453
|
if (!faces.length) return null;
|
|
3454
|
-
const b =
|
|
3454
|
+
const b = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, path);
|
|
3455
3455
|
const size = b ? Math.max(b.maxX - b.minX, b.maxY - b.minY, 1) : 1;
|
|
3456
3456
|
const eps = size * 1e-9;
|
|
3457
3457
|
let cursor = -Infinity;
|
|
@@ -3465,7 +3465,7 @@ function knifePath(path, fillRule, knife) {
|
|
|
3465
3465
|
const kb = { minX: Math.min(pts[m][0], pts[m + 1][0]), maxX: Math.max(pts[m][0], pts[m + 1][0]), minY: Math.min(pts[m][1], pts[m + 1][1]), maxY: Math.max(pts[m][1], pts[m + 1][1]) };
|
|
3466
3466
|
face2.loops.forEach(
|
|
3467
3467
|
(l, li) => l.segs.forEach((seg, si) => {
|
|
3468
|
-
const sb =
|
|
3468
|
+
const sb = _chunkBJTCSLF6cjs.segmentBounds.call(void 0, seg);
|
|
3469
3469
|
if (sb.maxX < kb.minX - eps || sb.minX > kb.maxX + eps || sb.maxY < kb.minY - eps || sb.minY > kb.maxY + eps) return;
|
|
3470
3470
|
for (const h of lineHits(pts[m], pts[m + 1], seg)) {
|
|
3471
3471
|
const s = m + h.s;
|
|
@@ -3480,7 +3480,7 @@ function knifePath(path, fillRule, knife) {
|
|
|
3480
3480
|
const m = Math.min(pts.length - 2, Math.floor(s));
|
|
3481
3481
|
const u = s - m;
|
|
3482
3482
|
const q = [pts[m][0] + (pts[m + 1][0] - pts[m][0]) * u, pts[m][1] + (pts[m + 1][1] - pts[m][1]) * u];
|
|
3483
|
-
return
|
|
3483
|
+
return _chunkBJTCSLF6cjs.windingNumber.call(void 0, face2.loops.map((l) => l.segs), q) !== 0;
|
|
3484
3484
|
};
|
|
3485
3485
|
for (let i = 0; i < unique.length - 1; i++) {
|
|
3486
3486
|
const from2 = unique[i];
|
|
@@ -3540,34 +3540,34 @@ function eraserRegion(points, width) {
|
|
|
3540
3540
|
];
|
|
3541
3541
|
}
|
|
3542
3542
|
const line = [{ type: "M", x: pts[0][0], y: pts[0][1] }, ...pts.slice(1).map((p) => ({ type: "L", x: p[0], y: p[1] }))];
|
|
3543
|
-
return
|
|
3543
|
+
return _chunkBJTCSLF6cjs.outlineStroke.call(void 0, line, { width, cap: "round", join: "round" });
|
|
3544
3544
|
}
|
|
3545
3545
|
function eraseFromFill(path, fillRule, region) {
|
|
3546
|
-
const overlap =
|
|
3547
|
-
if (!
|
|
3548
|
-
const rest =
|
|
3546
|
+
const overlap = _chunkBJTCSLF6cjs.pathBoolean.call(void 0, "intersection", [{ path, fillRule }, { path: region }]).path;
|
|
3547
|
+
if (!_chunkBJTCSLF6cjs.pathToContours.call(void 0, overlap).some((c) => Math.abs(_chunkBJTCSLF6cjs.contourSignedArea.call(void 0, _chunkBJTCSLF6cjs.closeContour.call(void 0, c, true))) > 1e-9)) return null;
|
|
3548
|
+
const rest = _chunkBJTCSLF6cjs.pathBoolean.call(void 0, "difference", [{ path, fillRule }, { path: region }]).path;
|
|
3549
3549
|
return splitIntoFaces(rest);
|
|
3550
3550
|
}
|
|
3551
3551
|
function eraseFromOutline(sp, region, options = {}) {
|
|
3552
|
-
const regionSegs =
|
|
3552
|
+
const regionSegs = _chunkBJTCSLF6cjs.pathToContours.call(void 0, region).flatMap((c) => _chunkBJTCSLF6cjs.closeContour.call(void 0, c, true));
|
|
3553
3553
|
if (!regionSegs.length) return null;
|
|
3554
|
-
const rb =
|
|
3554
|
+
const rb = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, region);
|
|
3555
3555
|
const count = subpathSegmentCount(sp);
|
|
3556
3556
|
if (!rb || count === 0) return null;
|
|
3557
3557
|
const inside = options.keep === "inside";
|
|
3558
|
-
const removed = (p) =>
|
|
3558
|
+
const removed = (p) => _chunkBJTCSLF6cjs.pointInBezierPath.call(void 0, region, p, _nullishCoalesce(options.fillRule, () => ( "nonzero"))) !== inside;
|
|
3559
3559
|
const runs = [];
|
|
3560
3560
|
let cur = [];
|
|
3561
3561
|
let any = false;
|
|
3562
3562
|
for (let i = 0; i < count; i++) {
|
|
3563
3563
|
const seg = subpathSegment(sp, i);
|
|
3564
|
-
const sb =
|
|
3564
|
+
const sb = _chunkBJTCSLF6cjs.segmentBounds.call(void 0, seg);
|
|
3565
3565
|
const ts = [0, 1];
|
|
3566
3566
|
if (!(sb.maxX < rb.minX || sb.minX > rb.maxX || sb.maxY < rb.minY || sb.minY > rb.maxY)) {
|
|
3567
3567
|
for (const r of regionSegs) {
|
|
3568
|
-
const b =
|
|
3568
|
+
const b = _chunkBJTCSLF6cjs.segmentBounds.call(void 0, r);
|
|
3569
3569
|
if (b.maxX < sb.minX || b.minX > sb.maxX || b.maxY < sb.minY || b.minY > sb.maxY) continue;
|
|
3570
|
-
for (const hit of
|
|
3570
|
+
for (const hit of _chunkBJTCSLF6cjs.segmentIntersections.call(void 0, seg, r)) if (hit.ta > 1e-9 && hit.ta < 1 - 1e-9) ts.push(hit.ta);
|
|
3571
3571
|
}
|
|
3572
3572
|
}
|
|
3573
3573
|
ts.sort((a, b) => a - b);
|
|
@@ -3575,7 +3575,7 @@ function eraseFromOutline(sp, region, options = {}) {
|
|
|
3575
3575
|
const t0 = ts[k];
|
|
3576
3576
|
const t1 = ts[k + 1];
|
|
3577
3577
|
if (t1 - t0 < 1e-9) continue;
|
|
3578
|
-
if (removed(
|
|
3578
|
+
if (removed(_chunkBJTCSLF6cjs.segmentPoint.call(void 0, seg, (t0 + t1) / 2))) {
|
|
3579
3579
|
any = true;
|
|
3580
3580
|
if (cur.length) runs.push(cur);
|
|
3581
3581
|
cur = [];
|
|
@@ -3594,7 +3594,7 @@ function eraseFromOutline(sp, region, options = {}) {
|
|
|
3594
3594
|
for (const run of runs) {
|
|
3595
3595
|
const anchors = [];
|
|
3596
3596
|
for (const { seg, t0, t1 } of run) {
|
|
3597
|
-
const c =
|
|
3597
|
+
const c = _chunkBJTCSLF6cjs.subSegment.call(void 0, subpathSegment(sp, seg), t0, t1);
|
|
3598
3598
|
const line = c.length === 2;
|
|
3599
3599
|
const start = c[0];
|
|
3600
3600
|
const end = c[c.length - 1];
|
|
@@ -3893,7 +3893,7 @@ function vectorMaskSummary(node) {
|
|
|
3893
3893
|
enabled: node.children[0].visible !== false
|
|
3894
3894
|
};
|
|
3895
3895
|
}
|
|
3896
|
-
var place = (path, m) => isIdentityMatrix(m) ? path :
|
|
3896
|
+
var place = (path, m) => isIdentityMatrix(m) ? path : _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, path, m);
|
|
3897
3897
|
function vectorMaskRegionShapes(node, type, parent = IDENTITY_MATRIX, self = true) {
|
|
3898
3898
|
if (!self && node.visible === false) return [];
|
|
3899
3899
|
if (isVectorFrame(node)) node = vectorFrameDrawn(node);
|
|
@@ -3940,7 +3940,7 @@ function vectorMaskRegionPath(group) {
|
|
|
3940
3940
|
let hit = unionCache.get(group);
|
|
3941
3941
|
if (!hit) {
|
|
3942
3942
|
const shapes = vectorMaskRegion(group);
|
|
3943
|
-
hit = !shapes.length ? [] : shapes.length === 1 && shapes[0].fillRule === "nonzero" ? shapes[0].path :
|
|
3943
|
+
hit = !shapes.length ? [] : shapes.length === 1 && shapes[0].fillRule === "nonzero" ? shapes[0].path : _chunkBJTCSLF6cjs.pathBoolean.call(void 0, "union", shapes.map((s) => ({ path: s.path, fillRule: s.fillRule }))).path;
|
|
3944
3944
|
unionCache.set(group, hit);
|
|
3945
3945
|
}
|
|
3946
3946
|
return hit;
|
|
@@ -3948,8 +3948,8 @@ function vectorMaskRegionPath(group) {
|
|
|
3948
3948
|
function inRegion(group, p, tolerance) {
|
|
3949
3949
|
const pt2 = [p.x, p.y];
|
|
3950
3950
|
for (const s of vectorMaskRegion(group)) {
|
|
3951
|
-
if (
|
|
3952
|
-
if (tolerance > 0 &&
|
|
3951
|
+
if (_chunkBJTCSLF6cjs.pointInBezierPath.call(void 0, s.path, pt2, s.fillRule)) return true;
|
|
3952
|
+
if (tolerance > 0 && _chunkBJTCSLF6cjs.distanceToBezierPath.call(void 0, s.path, pt2) <= tolerance) return true;
|
|
3953
3953
|
}
|
|
3954
3954
|
return false;
|
|
3955
3955
|
}
|
|
@@ -3965,7 +3965,7 @@ function vectorMaskContains(group, p, tolerance = 0) {
|
|
|
3965
3965
|
}
|
|
3966
3966
|
function hitNearEdge(group, p, tolerance) {
|
|
3967
3967
|
if (tolerance <= 0) return false;
|
|
3968
|
-
return vectorMaskRegion(group).some((s) =>
|
|
3968
|
+
return vectorMaskRegion(group).some((s) => _chunkBJTCSLF6cjs.distanceToBezierPath.call(void 0, s.path, [p.x, p.y]) <= tolerance);
|
|
3969
3969
|
}
|
|
3970
3970
|
function clipOpen(path, region, invert2) {
|
|
3971
3971
|
const out = [];
|
|
@@ -3973,7 +3973,7 @@ function clipOpen(path, region, invert2) {
|
|
|
3973
3973
|
const pieces = eraseFromOutline(sp, region, { keep: invert2 ? "outside" : "inside" });
|
|
3974
3974
|
if (pieces === null) {
|
|
3975
3975
|
const a = sp.anchors[0];
|
|
3976
|
-
const inside = !!a &&
|
|
3976
|
+
const inside = !!a && _chunkBJTCSLF6cjs.pointInBezierPath.call(void 0, region, [a.x, a.y], "nonzero");
|
|
3977
3977
|
if (inside !== invert2) out.push(...subpathsToBezier([sp]));
|
|
3978
3978
|
} else out.push(...subpathsToBezier(pieces));
|
|
3979
3979
|
}
|
|
@@ -3986,7 +3986,7 @@ function clipShapePath(path, fillRule, region, invert2) {
|
|
|
3986
3986
|
const out = [];
|
|
3987
3987
|
if (closed.length) {
|
|
3988
3988
|
const operands = [{ path: subpathsToBezier(closed), fillRule }, { path: region, fillRule: "nonzero" }];
|
|
3989
|
-
out.push(...region.length ?
|
|
3989
|
+
out.push(...region.length ? _chunkBJTCSLF6cjs.pathBoolean.call(void 0, invert2 ? "difference" : "intersection", operands).path : invert2 ? operands[0].path : []);
|
|
3990
3990
|
}
|
|
3991
3991
|
if (open.length) out.push(...region.length ? clipOpen(subpathsToBezier(open), region, invert2) : invert2 ? subpathsToBezier(open) : []);
|
|
3992
3992
|
return out;
|
|
@@ -4026,7 +4026,7 @@ function vectorMaskedGeometry(node) {
|
|
|
4026
4026
|
return changed ? { ...node, children } : node;
|
|
4027
4027
|
}
|
|
4028
4028
|
function vectorMaskedLocalBounds(group) {
|
|
4029
|
-
const b =
|
|
4029
|
+
const b = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, vectorAppearanceShapes(group).flatMap((s) => s.path));
|
|
4030
4030
|
return b ? { x: b.minX, y: b.minY, width: b.maxX - b.minX, height: b.maxY - b.minY } : null;
|
|
4031
4031
|
}
|
|
4032
4032
|
function paintReach(node) {
|
|
@@ -4067,10 +4067,10 @@ function vectorMaskRenderData(group, id, filterId, precision = 3) {
|
|
|
4067
4067
|
const bounds = vectorMaskContentBounds(group);
|
|
4068
4068
|
if (group.mask.type === "clip") {
|
|
4069
4069
|
const shapes = vectorMaskRegion(group);
|
|
4070
|
-
if (!invert2) return { type: "clip", invert: invert2, id, clip: shapes.map((s) => ({ d:
|
|
4070
|
+
if (!invert2) return { type: "clip", invert: invert2, id, clip: shapes.map((s) => ({ d: _chunkBJTCSLF6cjs.bezierPathToSvg.call(void 0, s.path, { precision }), clipRule: s.fillRule })) };
|
|
4071
4071
|
const box = _nullishCoalesce(bounds, () => ( { x: 0, y: 0, width: 0, height: 0 }));
|
|
4072
4072
|
const region = vectorMaskRegionPath(group);
|
|
4073
|
-
return { type: "clip", invert: invert2, id, clip: [{ d:
|
|
4073
|
+
return { type: "clip", invert: invert2, id, clip: [{ d: _chunkBJTCSLF6cjs.bezierPathToSvg.call(void 0, [...rectPath(box), ...region], { precision }), clipRule: "evenodd" }] };
|
|
4074
4074
|
}
|
|
4075
4075
|
if (!bounds) return null;
|
|
4076
4076
|
if (!invert2) return { type: group.mask.type, invert: invert2, id, bounds };
|
|
@@ -4952,7 +4952,7 @@ function vectorTextPaths(node) {
|
|
|
4952
4952
|
if (!f.laid) return;
|
|
4953
4953
|
let path = textFragmentOutline(shaper, blockText, f.laid.fragment);
|
|
4954
4954
|
for (const r of textDecorations(f.laid.fragment, f.laid.line)) path = [...path, ...textRectPath(r)];
|
|
4955
|
-
out.push(...layout.origin.x || layout.origin.y ?
|
|
4955
|
+
out.push(...layout.origin.x || layout.origin.y ? _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, path, [1, 0, 0, 1, layout.origin.x, layout.origin.y]) : path);
|
|
4956
4956
|
return;
|
|
4957
4957
|
}
|
|
4958
4958
|
for (const g of glyphs) {
|
|
@@ -4961,7 +4961,7 @@ function vectorTextPaths(node) {
|
|
|
4961
4961
|
const r = g.angle * Math.PI / 180;
|
|
4962
4962
|
const c = Math.cos(r);
|
|
4963
4963
|
const s = Math.sin(r);
|
|
4964
|
-
out.push(...
|
|
4964
|
+
out.push(..._chunkBJTCSLF6cjs.transformBezierPath.call(void 0, glyph, [c, s, -s, c, g.x, g.y]));
|
|
4965
4965
|
}
|
|
4966
4966
|
if (f.style.underline || f.style.strikethrough) {
|
|
4967
4967
|
const t = Math.max(1, f.style.fontSize / 15);
|
|
@@ -5283,7 +5283,7 @@ function vectorTextName(text) {
|
|
|
5283
5283
|
return t ? t.length > 24 ? `${t.slice(0, 24)}\u2026` : t : "Text";
|
|
5284
5284
|
}
|
|
5285
5285
|
function pathTextFrameFromBezier(path) {
|
|
5286
|
-
const cmds =
|
|
5286
|
+
const cmds = _chunkBJTCSLF6cjs.toBezierPath.call(void 0, path);
|
|
5287
5287
|
const anchors = [];
|
|
5288
5288
|
let closed = false;
|
|
5289
5289
|
for (const c of cmds) {
|
|
@@ -6446,7 +6446,7 @@ function pathsBounds(paths) {
|
|
|
6446
6446
|
let maxX = -Infinity;
|
|
6447
6447
|
let maxY = -Infinity;
|
|
6448
6448
|
for (const p of paths) {
|
|
6449
|
-
const b =
|
|
6449
|
+
const b = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, p);
|
|
6450
6450
|
if (!b) continue;
|
|
6451
6451
|
minX = Math.min(minX, b.minX);
|
|
6452
6452
|
minY = Math.min(minY, b.minY);
|
|
@@ -6613,7 +6613,7 @@ function foldVectorBooleanOperands(operands) {
|
|
|
6613
6613
|
for (let i = start + 1; i < operands.length; i++) {
|
|
6614
6614
|
const o = operands[i];
|
|
6615
6615
|
foldSteps++;
|
|
6616
|
-
const r =
|
|
6616
|
+
const r = _chunkBJTCSLF6cjs.pathBoolean.call(void 0, _nullishCoalesce(PATH_OPS[o.operation], () => ( "union")), [
|
|
6617
6617
|
{ path: acc, fillRule: accRule },
|
|
6618
6618
|
{ path: o.path, fillRule: o.fillRule }
|
|
6619
6619
|
]);
|
|
@@ -6650,7 +6650,7 @@ function contourShapes(shapes, c) {
|
|
|
6650
6650
|
for (const s of shapes) {
|
|
6651
6651
|
let n = Math.min(200, Math.max(1, Math.round(c.steps)));
|
|
6652
6652
|
if (c.direction === "center") {
|
|
6653
|
-
const b =
|
|
6653
|
+
const b = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, s.path);
|
|
6654
6654
|
n = b ? Math.min(200, Math.max(1, Math.ceil(Math.min(b.maxX - b.minX, b.maxY - b.minY) / 2 / step))) : 0;
|
|
6655
6655
|
}
|
|
6656
6656
|
out.push({ ...s, order: [outside ? n : 0, ...s.order] });
|
|
@@ -6673,7 +6673,7 @@ function blockShadowShapes(shapes, b) {
|
|
|
6673
6673
|
for (const s of shapes) {
|
|
6674
6674
|
const color2 = _nullishCoalesce(b.color, () => ( (typeof s.source.fill === "string" && s.source.fill !== "none" ? s.source.fill : "#000000")));
|
|
6675
6675
|
const path = sweepPath(s.path, u.x * distance, u.y * distance, s.source.fillRule === "evenodd" ? "evenodd" : "nonzero");
|
|
6676
|
-
const box =
|
|
6676
|
+
const box = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, s.path);
|
|
6677
6677
|
if (!path.length || !box) continue;
|
|
6678
6678
|
let fill = color2;
|
|
6679
6679
|
const near3 = Math.min(100, Math.max(0, b.opacity));
|
|
@@ -6783,7 +6783,7 @@ function vectorChildAppearanceShapes(child, index) {
|
|
|
6783
6783
|
const k = _nullishCoalesce(child.opacity, () => ( 1));
|
|
6784
6784
|
return vectorAppearanceShapes(child).map((s) => ({
|
|
6785
6785
|
source: s.source,
|
|
6786
|
-
path: m && !isIdentityMatrix(m) ?
|
|
6786
|
+
path: m && !isIdentityMatrix(m) ? _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, s.path, m) : s.path,
|
|
6787
6787
|
opacity: s.opacity * k,
|
|
6788
6788
|
order: [index, ...s.order]
|
|
6789
6789
|
}));
|
|
@@ -6795,7 +6795,7 @@ function liveBooleanShapes(group) {
|
|
|
6795
6795
|
const shapes = vectorChildAppearanceShapes(child, i);
|
|
6796
6796
|
if (!shapes.length) return;
|
|
6797
6797
|
source ??= shapes[0].source;
|
|
6798
|
-
const path = shapes.length === 1 ? shapes[0].path :
|
|
6798
|
+
const path = shapes.length === 1 ? shapes[0].path : _chunkBJTCSLF6cjs.pathBoolean.call(void 0, "union", shapes.map((s) => ({ path: s.path, fillRule: _nullishCoalesce(s.source.fillRule, () => ( "nonzero")) }))).path;
|
|
6799
6799
|
const fillRule = shapes.length === 1 ? _nullishCoalesce(shapes[0].source.fillRule, () => ( "nonzero")) : "nonzero";
|
|
6800
6800
|
operands.push({ path, fillRule, operation: vectorOperandOperation(group, child) });
|
|
6801
6801
|
});
|
|
@@ -7302,10 +7302,10 @@ var unit3 = (v2) => {
|
|
|
7302
7302
|
};
|
|
7303
7303
|
function flattenedSubpaths(node) {
|
|
7304
7304
|
const out = [];
|
|
7305
|
-
for (const contour of
|
|
7306
|
-
const segs =
|
|
7305
|
+
for (const contour of _chunkBJTCSLF6cjs.pathToContours.call(void 0, subpathsToBezier(node.subpaths))) {
|
|
7306
|
+
const segs = _chunkBJTCSLF6cjs.closeContour.call(void 0, contour);
|
|
7307
7307
|
if (!segs.length) continue;
|
|
7308
|
-
const ring =
|
|
7308
|
+
const ring = _chunkBJTCSLF6cjs.flattenChain.call(void 0, segs, TOLERANCE);
|
|
7309
7309
|
const pts = ring.map(([x, y]) => ({ x, y })).filter((p, i, a) => i === 0 || Math.hypot(p.x - a[i - 1].x, p.y - a[i - 1].y) > 1e-9);
|
|
7310
7310
|
if (contour.closed && pts.length > 2 && Math.hypot(pts[0].x - pts[pts.length - 1].x, pts[0].y - pts[pts.length - 1].y) < 1e-9) pts.pop();
|
|
7311
7311
|
if (pts.length >= 2) out.push({ pts, closed: contour.closed && pts.length > 2 });
|
|
@@ -7456,7 +7456,7 @@ function vectorCornersAttribute(subpaths, precision = 3) {
|
|
|
7456
7456
|
subpaths.forEach(
|
|
7457
7457
|
(sp, s) => sp.anchors.forEach((a, i) => {
|
|
7458
7458
|
if (!a.corner || !(a.corner.radius > 0)) return;
|
|
7459
|
-
out.push(`${s}.${i}:${
|
|
7459
|
+
out.push(`${s}.${i}:${_chunkIZ4WRXZAcjs.formatNumber.call(void 0, a.corner.radius, precision)}${a.corner.kind && a.corner.kind !== "round" ? `:${a.corner.kind}` : ""}`);
|
|
7460
7460
|
})
|
|
7461
7461
|
);
|
|
7462
7462
|
return out.join(" ");
|
|
@@ -7476,7 +7476,7 @@ function applyVectorCornersAttribute(subpaths, value) {
|
|
|
7476
7476
|
var escapeAttr2 = (value) => value.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">");
|
|
7477
7477
|
var escapeText = (value) => value.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
7478
7478
|
function vectorPathLocalBounds(node) {
|
|
7479
|
-
const b =
|
|
7479
|
+
const b = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, subpathsToBezier(node.subpaths));
|
|
7480
7480
|
return b ? { x: b.minX, y: b.minY, width: b.maxX - b.minX, height: b.maxY - b.minY } : null;
|
|
7481
7481
|
}
|
|
7482
7482
|
var paintCache = /* @__PURE__ */ new WeakMap();
|
|
@@ -7530,18 +7530,18 @@ function computeStrokeSvgParts(node, clipId, precision) {
|
|
|
7530
7530
|
if (parts.align === "center" && !parts.heads.length && !profiled) return void 0;
|
|
7531
7531
|
let clip = null;
|
|
7532
7532
|
if (parts.align !== "center") {
|
|
7533
|
-
const b =
|
|
7533
|
+
const b = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, path);
|
|
7534
7534
|
const pad = vectorStrokeReach(node) + 1;
|
|
7535
7535
|
const bounds = b ? { x: round2(b.minX - pad), y: round2(b.minY - pad), width: round2(b.maxX - b.minX + 2 * pad), height: round2(b.maxY - b.minY + 2 * pad) } : { x: 0, y: 0, width: 0, height: 0 };
|
|
7536
7536
|
clip = { kind: parts.align === "inside" ? "clip" : "mask", id: clipId, bounds };
|
|
7537
7537
|
}
|
|
7538
7538
|
return {
|
|
7539
7539
|
align: parts.align,
|
|
7540
|
-
d:
|
|
7540
|
+
d: _chunkBJTCSLF6cjs.bezierPathToSvg.call(void 0, parts.line, { precision }),
|
|
7541
7541
|
width: parts.drawWidth,
|
|
7542
|
-
...profiled && (_nullishCoalesce(node.strokeWidth, () => ( 1))) > 0 ? { outline:
|
|
7542
|
+
...profiled && (_nullishCoalesce(node.strokeWidth, () => ( 1))) > 0 ? { outline: _chunkBJTCSLF6cjs.bezierPathToSvg.call(void 0, vectorStrokeLineArea(parts, node), { precision }) } : {},
|
|
7543
7543
|
clip,
|
|
7544
|
-
heads: parts.heads.map((h) =>
|
|
7544
|
+
heads: parts.heads.map((h) => _chunkBJTCSLF6cjs.bezierPathToSvg.call(void 0, h.path, { precision }))
|
|
7545
7545
|
};
|
|
7546
7546
|
}
|
|
7547
7547
|
function vectorNodeLocalPaintBounds(node) {
|
|
@@ -7565,7 +7565,7 @@ function vectorNodeFilterSvg(node, id) {
|
|
|
7565
7565
|
return filter;
|
|
7566
7566
|
}
|
|
7567
7567
|
function widthProfileToAttribute(points, precision = 4) {
|
|
7568
|
-
return points.map((p) => [p.t, p.left, p.right].map((n) =>
|
|
7568
|
+
return points.map((p) => [p.t, p.left, p.right].map((n) => _chunkIZ4WRXZAcjs.formatNumber.call(void 0, n, precision)).join(",")).join(";");
|
|
7569
7569
|
}
|
|
7570
7570
|
function widthProfileFromAttribute(value) {
|
|
7571
7571
|
if (!value) return [];
|
|
@@ -7625,11 +7625,11 @@ function vectorDocumentToSvg(doc, options = {}) {
|
|
|
7625
7625
|
const pretty = options.pretty !== false;
|
|
7626
7626
|
const defs = [];
|
|
7627
7627
|
const lines = [];
|
|
7628
|
-
const num3 = (n) =>
|
|
7628
|
+
const num3 = (n) => _chunkIZ4WRXZAcjs.formatNumber.call(void 0, n, precision);
|
|
7629
7629
|
const indent = (depth) => pretty ? " ".repeat(depth) : "";
|
|
7630
7630
|
const common = (node) => {
|
|
7631
7631
|
let out2 = ` id="${escapeAttr2(node.id)}"`;
|
|
7632
|
-
if (node.transform) out2 += ` transform="matrix(${node.transform.map((n) =>
|
|
7632
|
+
if (node.transform) out2 += ` transform="matrix(${node.transform.map((n) => _chunkIZ4WRXZAcjs.formatNumber.call(void 0, n, 6)).join(" ")})"`;
|
|
7633
7633
|
if (node.opacity !== void 0 && node.opacity < 1) out2 += ` opacity="${num3(node.opacity)}"`;
|
|
7634
7634
|
if (node.visible === false) out2 += ` display="none"`;
|
|
7635
7635
|
if (node.blendStep) out2 += ` data-vector-blend-step=""`;
|
|
@@ -7660,7 +7660,7 @@ function vectorDocumentToSvg(doc, options = {}) {
|
|
|
7660
7660
|
const strokePartLines = (node, parts, strokeValue, d, lineAttrs, depth) => {
|
|
7661
7661
|
const out2 = [];
|
|
7662
7662
|
if (options.strokes === "outline") {
|
|
7663
|
-
const area =
|
|
7663
|
+
const area = _chunkBJTCSLF6cjs.bezierPathToSvg.call(void 0, vectorStrokeOutlinePath(subpathsToBezier(node.subpaths), node), { precision });
|
|
7664
7664
|
out2.push(`${indent(depth)}<path data-vector-part="stroke-outline" d="${area}" fill="${escapeAttr2(strokeValue)}"/>`);
|
|
7665
7665
|
return out2;
|
|
7666
7666
|
}
|
|
@@ -7692,7 +7692,7 @@ function vectorDocumentToSvg(doc, options = {}) {
|
|
|
7692
7692
|
};
|
|
7693
7693
|
const liveCorners = (node) => {
|
|
7694
7694
|
const corners = vectorCornersAttribute(node.subpaths, precision);
|
|
7695
|
-
return corners ? ` data-vector-d="${
|
|
7695
|
+
return corners ? ` data-vector-d="${_chunkBJTCSLF6cjs.bezierPathToSvg.call(void 0, subpathsToBezier(node.subpaths, { corners: false }), { precision })}" data-vector-corners="${corners}"` : "";
|
|
7696
7696
|
};
|
|
7697
7697
|
const emitStacked = (node, depth) => {
|
|
7698
7698
|
const d = vectorPathData(node, precision);
|
|
@@ -7735,7 +7735,7 @@ function vectorDocumentToSvg(doc, options = {}) {
|
|
|
7735
7735
|
let attrs = w2.id !== void 0 ? ` id="${escapeAttr2(w2.id)}"` : "";
|
|
7736
7736
|
if (w2.transform) attrs += ` transform="${escapeAttr2(w2.transform)}"`;
|
|
7737
7737
|
if (w2.clip) {
|
|
7738
|
-
const shape = Object.entries(w2.clip.attrs).map(([k, v2]) => ` ${k}="${
|
|
7738
|
+
const shape = Object.entries(w2.clip.attrs).map(([k, v2]) => ` ${k}="${_chunkIZ4WRXZAcjs.formatNumber.call(void 0, v2, 4)}"`).join("");
|
|
7739
7739
|
defs.push(`<clipPath id="${escapeAttr2(w2.clip.id)}" clipPathUnits="objectBoundingBox"><${w2.clip.shape}${w2.clip.shapeId !== void 0 ? ` id="${escapeAttr2(w2.clip.shapeId)}"` : ""}${shape}/></clipPath>`);
|
|
7740
7740
|
attrs += ` clip-path="url(#${escapeAttr2(w2.clip.id)})"`;
|
|
7741
7741
|
}
|
|
@@ -8227,7 +8227,7 @@ function resolveGradient(id, raw) {
|
|
|
8227
8227
|
const y2 = at2("y2", 0);
|
|
8228
8228
|
if (!user && plain2) {
|
|
8229
8229
|
const angle = Math.round((Math.atan2(x2 - x1, -(y2 - y1)) * 180 / Math.PI + 360) % 360);
|
|
8230
|
-
const c =
|
|
8230
|
+
const c = _chunkIZ4WRXZAcjs.angleToSvgLinearCoords.call(void 0, angle);
|
|
8231
8231
|
const len2 = Math.hypot(x2 - x1, y2 - y1);
|
|
8232
8232
|
const d = len2 > 0 ? { x: (x2 - x1) / len2, y: (y2 - y1) / len2 } : { x: 0, y: 1 };
|
|
8233
8233
|
const along2 = (x, y) => x * d.x + y * d.y;
|
|
@@ -8704,7 +8704,7 @@ function parseVectorSvg(svg, options = {}) {
|
|
|
8704
8704
|
const id = idFor(g);
|
|
8705
8705
|
if (!frame) return children.length ? { id, type: "group", ...meta, children } : null;
|
|
8706
8706
|
const { rigid, residual } = decomposeRigid(m);
|
|
8707
|
-
const r =
|
|
8707
|
+
const r = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, subpathsToBezier(vectorFrameRectPath(frame)), residual));
|
|
8708
8708
|
const back = invertMatrix(rigid);
|
|
8709
8709
|
const effects = sanitizeVectorEffects(_optionalChain([raw, 'optionalAccess', _254 => _254.effects]));
|
|
8710
8710
|
return {
|
|
@@ -8996,7 +8996,7 @@ function vectorNodeToBezier(node) {
|
|
|
8996
8996
|
}
|
|
8997
8997
|
function vectorPathData(input, precision = 3) {
|
|
8998
8998
|
const subpaths = Array.isArray(input) ? input : input.subpaths;
|
|
8999
|
-
return
|
|
8999
|
+
return _chunkBJTCSLF6cjs.bezierPathToSvg.call(void 0, subpathsToBezier(subpaths), { precision });
|
|
9000
9000
|
}
|
|
9001
9001
|
function inferAnchorType(a) {
|
|
9002
9002
|
if (isOnAnchor(a, a.in) || isOnAnchor(a, a.out)) return "corner";
|
|
@@ -9012,7 +9012,7 @@ function inferAnchorType(a) {
|
|
|
9012
9012
|
return Math.abs(li - lo) <= 1e-3 * Math.max(li, lo) ? "symmetric" : "smooth";
|
|
9013
9013
|
}
|
|
9014
9014
|
function bezierToSubpaths(input) {
|
|
9015
|
-
const path =
|
|
9015
|
+
const path = _chunkBJTCSLF6cjs.toBezierPath.call(void 0, input);
|
|
9016
9016
|
const out = [];
|
|
9017
9017
|
let current2 = null;
|
|
9018
9018
|
const last = () => current2.anchors[current2.anchors.length - 1];
|
|
@@ -9117,18 +9117,18 @@ function nodeMatrix(node) {
|
|
|
9117
9117
|
function vectorPathWorldBezier(node, parent = IDENTITY_MATRIX, options = {}) {
|
|
9118
9118
|
const m = multiplyMatrices(nodeMatrix(node), parent);
|
|
9119
9119
|
const path = options.effects === false || !hasOwnVectorAppearance(node) ? subpathsToBezier(node.subpaths) : vectorAppearanceOutline(node);
|
|
9120
|
-
return isIdentityMatrix(m) ? path :
|
|
9120
|
+
return isIdentityMatrix(m) ? path : _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, path, m);
|
|
9121
9121
|
}
|
|
9122
9122
|
function vectorNodeBounds(node, parent = IDENTITY_MATRIX) {
|
|
9123
9123
|
if (isVectorFrame(node)) {
|
|
9124
9124
|
const m = multiplyMatrices(nodeMatrix(node), parent);
|
|
9125
|
-
const rect =
|
|
9125
|
+
const rect = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, subpathsToBezier(vectorFrameRectPath(node.frame)), m));
|
|
9126
9126
|
const box = { x: rect.minX, y: rect.minY, width: rect.maxX - rect.minX, height: rect.maxY - rect.minY };
|
|
9127
9127
|
return node.frame.clip === false ? unionBounds([box, ...node.children.map((c) => vectorNodeBounds(c, m))]) : box;
|
|
9128
9128
|
}
|
|
9129
9129
|
if (isVectorMaskActive(node)) {
|
|
9130
9130
|
const m = multiplyMatrices(nodeMatrix(node), parent);
|
|
9131
|
-
const b2 =
|
|
9131
|
+
const b2 = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, vectorAppearanceShapes(node).flatMap((s) => isIdentityMatrix(m) ? s.path : _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, s.path, m)));
|
|
9132
9132
|
return b2 ? { x: b2.minX, y: b2.minY, width: b2.maxX - b2.minX, height: b2.maxY - b2.minY } : null;
|
|
9133
9133
|
}
|
|
9134
9134
|
node = expandVectorAppearance(node);
|
|
@@ -9136,7 +9136,7 @@ function vectorNodeBounds(node, parent = IDENTITY_MATRIX) {
|
|
|
9136
9136
|
const m = multiplyMatrices(nodeMatrix(node), parent);
|
|
9137
9137
|
return unionBounds(node.children.map((c) => vectorNodeBounds(c, m)));
|
|
9138
9138
|
}
|
|
9139
|
-
const b =
|
|
9139
|
+
const b = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, vectorPathWorldBezier(node, parent));
|
|
9140
9140
|
if (!b) return null;
|
|
9141
9141
|
return { x: b.minX, y: b.minY, width: b.maxX - b.minX, height: b.maxY - b.minY };
|
|
9142
9142
|
}
|
|
@@ -9194,7 +9194,7 @@ function hitTestVectorMaskSource(group, p, tolerance, m, options) {
|
|
|
9194
9194
|
return paths.some((n) => {
|
|
9195
9195
|
const world = vectorParentMatrix([source], n.id);
|
|
9196
9196
|
const path = vectorPathWorldBezier(n, multiplyMatrices(_nullishCoalesce(world, () => ( IDENTITY_MATRIX)), m));
|
|
9197
|
-
return
|
|
9197
|
+
return _chunkBJTCSLF6cjs.pointInBezierPath.call(void 0, path, pt2, _nullishCoalesce(n.fillRule, () => ( "nonzero"))) || _chunkBJTCSLF6cjs.distanceToBezierPath.call(void 0, path, pt2) <= tolerance;
|
|
9198
9198
|
});
|
|
9199
9199
|
}
|
|
9200
9200
|
function vectorStrokeOutline(node, parent = IDENTITY_MATRIX) {
|
|
@@ -9216,9 +9216,9 @@ function nearestSegment(node, p) {
|
|
|
9216
9216
|
const count = subpathSegmentCount(sp);
|
|
9217
9217
|
for (let i = 0; i < count; i++) {
|
|
9218
9218
|
const seg = subpathSegment(sp, i);
|
|
9219
|
-
const hit =
|
|
9219
|
+
const hit = _chunkBJTCSLF6cjs.segmentNearest.call(void 0, seg, [p.x, p.y]);
|
|
9220
9220
|
if (!best || hit.distance < best.distance) {
|
|
9221
|
-
const pt2 =
|
|
9221
|
+
const pt2 = _chunkBJTCSLF6cjs.segmentPoint.call(void 0, seg, hit.t);
|
|
9222
9222
|
best = { subpath: s, segment: i, t: hit.t, point: { x: pt2[0], y: pt2[1] }, distance: hit.distance };
|
|
9223
9223
|
}
|
|
9224
9224
|
}
|
|
@@ -9274,7 +9274,7 @@ function bakeIntoGeometry(node, m) {
|
|
|
9274
9274
|
}
|
|
9275
9275
|
function bakeFrame(node, m) {
|
|
9276
9276
|
const from = node.frame;
|
|
9277
|
-
const r =
|
|
9277
|
+
const r = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, subpathsToBezier(vectorFrameRectPath(from)), m));
|
|
9278
9278
|
const to = { ...from, x: r.minX, y: r.minY, width: r.maxX - r.minX, height: r.maxY - r.minY };
|
|
9279
9279
|
const axisAligned = Math.abs(m[1]) < 1e-12 && Math.abs(m[2]) < 1e-12 && m[0] > 0 && m[3] > 0;
|
|
9280
9280
|
if (!axisAligned) return { ...node, frame: to, children: node.children.map((c) => transformVectorNode(c, m)) };
|
|
@@ -9396,7 +9396,7 @@ function insertAnchor(sp, segment, t) {
|
|
|
9396
9396
|
const ia = segment;
|
|
9397
9397
|
const ib = (segment + 1) % n;
|
|
9398
9398
|
const seg = subpathSegment(sp, segment);
|
|
9399
|
-
const [left2, right] =
|
|
9399
|
+
const [left2, right] = _chunkBJTCSLF6cjs.splitSegment.call(void 0, seg, t);
|
|
9400
9400
|
const mid = left2[left2.length - 1];
|
|
9401
9401
|
const anchor = { x: mid[0], y: mid[1] };
|
|
9402
9402
|
if (seg.length === 4) {
|
|
@@ -10037,4 +10037,4 @@ function transformVectorSymmetry(s, m) {
|
|
|
10037
10037
|
|
|
10038
10038
|
|
|
10039
10039
|
exports.isVectorMeshGradient = isVectorMeshGradient; exports.isVectorFreeformGradient = isVectorFreeformGradient; exports.isVectorShadedPaint = isVectorShadedPaint; exports.vectorRgbaToCss = vectorRgbaToCss; exports.VECTOR_MESH_MAX = VECTOR_MESH_MAX; exports.createVectorMeshGradient = createVectorMeshGradient; exports.vectorMeshPointAt = vectorMeshPointAt; exports.vectorMeshColorAt = vectorMeshColorAt; exports.vectorMeshLines = vectorMeshLines; exports.vectorFreeformSpreadScale = vectorFreeformSpreadScale; exports.vectorFreeformLineSegments = vectorFreeformLineSegments; exports.vectorFreeformField = vectorFreeformField; exports.sampleVectorFreeform = sampleVectorFreeform; exports.autoVectorFreeformGradient = autoVectorFreeformGradient; exports.vectorShadedSvgDefs = vectorShadedSvgDefs; exports.mapVectorShadedPaint = mapVectorShadedPaint; exports.transformVectorShadedPaint = transformVectorShadedPaint; exports.sanitizeVectorShadedPaint = sanitizeVectorShadedPaint; exports.removeVectorFreeformPoint = removeVectorFreeformPoint; exports.nearestVectorShadingPoint = nearestVectorShadingPoint; exports.VECTOR_CORNER_KINDS = VECTOR_CORNER_KINDS; exports.VECTOR_GRADIENT_TYPES = VECTOR_GRADIENT_TYPES; exports.VECTOR_GRADIENT_SPREADS = VECTOR_GRADIENT_SPREADS; exports.VECTOR_GRADIENT_INTERPOLATIONS = VECTOR_GRADIENT_INTERPOLATIONS; exports.VECTOR_STROKE_GRADIENT_MODES = VECTOR_STROKE_GRADIENT_MODES; exports.VECTOR_ARROWHEADS = VECTOR_ARROWHEADS; exports.VECTOR_BLEND_MODES = VECTOR_BLEND_MODES; exports.VECTOR_HORIZONTAL_RESIZING = VECTOR_HORIZONTAL_RESIZING; exports.VECTOR_VERTICAL_RESIZING = VECTOR_VERTICAL_RESIZING; exports.VECTOR_CONNECTOR_SIDES = VECTOR_CONNECTOR_SIDES; exports.VECTOR_CONNECTOR_ROUTES = VECTOR_CONNECTOR_ROUTES; exports.VECTOR_BLEND_SPACINGS = VECTOR_BLEND_SPACINGS; exports.VECTOR_MASK_TYPES = VECTOR_MASK_TYPES; exports.VECTOR_SYMMETRY_MODES = VECTOR_SYMMETRY_MODES; exports.VECTOR_TEXT_ALIGNS = VECTOR_TEXT_ALIGNS; exports.VECTOR_PATH_TEXT_BASELINES = VECTOR_PATH_TEXT_BASELINES; exports.VECTOR_CONSTRAINT_KINDS = VECTOR_CONSTRAINT_KINDS; exports.VECTOR_TOOLS = VECTOR_TOOLS; exports.VECTOR_TRANSFORM_HANDLES = VECTOR_TRANSFORM_HANDLES; exports.VECTOR_PATHFINDER_OPERATIONS = VECTOR_PATHFINDER_OPERATIONS; exports.VECTOR_EFFECT_TYPES = VECTOR_EFFECT_TYPES; exports.VECTOR_MERGE_MODES = VECTOR_MERGE_MODES; exports.VECTOR_FILTER_TYPES = VECTOR_FILTER_TYPES; exports.isVectorGradient = isVectorGradient; exports.parseVectorColor = parseVectorColor; exports.VECTOR_GRADIENT_MIN_STOPS = VECTOR_GRADIENT_MIN_STOPS; exports.gradientMidpointRemap = gradientMidpointRemap; exports.sortedVectorGradientStops = sortedVectorGradientStops; exports.vectorGradientNeedsExpansion = vectorGradientNeedsExpansion; exports.vectorGradientRamp = vectorGradientRamp; exports.sampleVectorGradient = sampleVectorGradient; exports.expandVectorGradientStops = expandVectorGradientStops; exports.samplePlainStops = samplePlainStops; exports.reverseVectorGradient = reverseVectorGradient; exports.insertVectorGradientStop = insertVectorGradientStop; exports.moveVectorGradientStop = moveVectorGradientStop; exports.removeVectorGradientStop = removeVectorGradientStop; exports.vectorGradientMidpointPosition = vectorGradientMidpointPosition; exports.vectorGradientMidpointFromPosition = vectorGradientMidpointFromPosition; exports.spanVectorGradientStops = spanVectorGradientStops; exports.hasExplicitGradientGeometry = hasExplicitGradientGeometry; exports.vectorGradientPoints = vectorGradientPoints; exports.vectorBoxMatrix = vectorBoxMatrix; exports.vectorGradientUnitsMatrix = vectorGradientUnitsMatrix; exports.vectorGradientMatrix = vectorGradientMatrix; exports.vectorGradientFocalParam = vectorGradientFocalParam; exports.vectorGradientParam = vectorGradientParam; exports.applyVectorGradientSpread = applyVectorGradientSpread; exports.vectorGradientTAt = vectorGradientTAt; exports.sampleVectorGradientAt = sampleVectorGradientAt; exports.vectorGradientAspect = vectorGradientAspect; exports.explicitVectorGradient = explicitVectorGradient; exports.pinVectorGradient = pinVectorGradient; exports.transformVectorGradient = transformVectorGradient; exports.mapVectorGradient = mapVectorGradient; exports.mapVectorPaint = mapVectorPaint; exports.transformVectorPaint = transformVectorPaint; exports.isCentredVectorGradient = isCentredVectorGradient; exports.vectorGradientHandles = vectorGradientHandles; exports.moveVectorGradientHandle = moveVectorGradientHandle; exports.setVectorGradientVector = setVectorGradientVector; exports.VECTOR_GRADIENT_MAX_PERIODS = VECTOR_GRADIENT_MAX_PERIODS; exports.periodicVectorGradientStops = periodicVectorGradientStops; exports.expandVectorGradientSpread = expandVectorGradientSpread; exports.vectorGradientArea = vectorGradientArea; exports.patternAttrs = patternAttrs; exports.vectorGradientSvgDefs = vectorGradientSvgDefs; exports.sampleVectorPaintDefAt = sampleVectorPaintDefAt; exports.sanitizeVectorGradient = sanitizeVectorGradient; exports.convertVectorGradient = convertVectorGradient; exports.defaultVectorGradient = defaultVectorGradient; exports.applyVectorGradientPatch = applyVectorGradientPatch; exports.IDENTITY_MATRIX = IDENTITY_MATRIX; exports.multiplyMatrices = multiplyMatrices; exports.translateMatrix = translateMatrix; exports.scaleMatrix = scaleMatrix; exports.rotateMatrix = rotateMatrix; exports.matrixAbout = matrixAbout; exports.skewMatrix = skewMatrix; exports.applyMatrix = applyMatrix; exports.isIdentityMatrix = isIdentityMatrix; exports.invertMatrix = invertMatrix; exports.applyMatrixLinear = applyMatrixLinear; exports.matrixRotation = matrixRotation; exports.decomposeRigid = decomposeRigid; exports.isVectorSymmetryGroup = isVectorSymmetryGroup; exports.vectorSymmetryMatrices = vectorSymmetryMatrices; exports.vectorSymmetryDrawn = vectorSymmetryDrawn; exports.vectorSymmetryAxes = vectorSymmetryAxes; exports.sanitizeVectorSymmetry = sanitizeVectorSymmetry; exports.VECTOR_SYMMETRY_MODE_LABELS = VECTOR_SYMMETRY_MODE_LABELS; exports.transformVectorSymmetry = transformVectorSymmetry; exports.vectorCornerAt = vectorCornerAt; exports.vectorCorners = vectorCorners; exports.cornerSetback = cornerSetback; exports.fitCornerRadius = fitCornerRadius; exports.cornerBisectorPoint = cornerBisectorPoint; exports.cornerRadiusChange = cornerRadiusChange; exports.hasVectorCorners = hasVectorCorners; exports.expandVectorCornersOf = expandVectorCornersOf; exports.expandVectorCorners = expandVectorCorners; exports.setAnchorCorner = setAnchorCorner; exports.nextVectorCornerKind = nextVectorCornerKind; exports.setSubpathCorners = setSubpathCorners; exports.VECTOR_WIDTH_PROFILE_MAX_POINTS = VECTOR_WIDTH_PROFILE_MAX_POINTS; exports.VECTOR_WIDTH_PROFILE_MAX_SCALE = VECTOR_WIDTH_PROFILE_MAX_SCALE; exports.VECTOR_WIDTH_SAME_T = VECTOR_WIDTH_SAME_T; exports.VECTOR_WIDTH_PRESETS = VECTOR_WIDTH_PRESETS; exports.VECTOR_WIDTH_PRESET_IDS = VECTOR_WIDTH_PRESET_IDS; exports.sanitizeWidthProfile = sanitizeWidthProfile; exports.isUniformWidthProfile = isUniformWidthProfile; exports.widthProfileAt = widthProfileAt; exports.widthProfileMaxScale = widthProfileMaxScale; exports.widthProfilePreset = widthProfilePreset; exports.widthProfilePresetId = widthProfilePresetId; exports.reverseWidthProfile = reverseWidthProfile; exports.mirrorWidthProfile = mirrorWidthProfile; exports.insertWidthPoint = insertWidthPoint; exports.setWidthPoint = setWidthPoint; exports.removeWidthPoints = removeWidthPoints; exports.taperWaveFactor = taperWaveFactor; exports.generateWidthProfile = generateWidthProfile; exports.VECTOR_PRESSURE_NOMINAL = VECTOR_PRESSURE_NOMINAL; exports.pressureWidthProfile = pressureWidthProfile; exports.dashIntervals = dashIntervals; exports.variableStrokeRings = variableStrokeRings; exports.variableStrokeOutline = variableStrokeOutline; exports.nearestStrokePosition = nearestStrokePosition; exports.strokePositionPoint = strokePositionPoint; exports.isClosedBezierShape = isClosedBezierShape; exports.effectiveStrokeAlign = effectiveStrokeAlign; exports.strokeWidthProfileOf = strokeWidthProfileOf; exports.hasStrokeExtras = hasStrokeExtras; exports.vectorStrokeLineArea = vectorStrokeLineArea; exports.arrowheadWeight = arrowheadWeight; exports.arrowheadInset = arrowheadInset; exports.arrowheadPath = arrowheadPath; exports.vectorStrokeParts = vectorStrokeParts; exports.vectorStrokeOutlinePath = vectorStrokeOutlinePath; exports.hitTestVectorStroke = hitTestVectorStroke; exports.vectorStrokeReach = vectorStrokeReach; exports.VECTOR_STROKE_SETTING_KEYS = VECTOR_STROKE_SETTING_KEYS; exports.VECTOR_BLEND_MODE_LABELS = VECTOR_BLEND_MODE_LABELS; exports.isVectorBlendMode = isVectorBlendMode; exports.vectorBlendModeCss = vectorBlendModeCss; exports.vectorBlendModeFromCss = vectorBlendModeFromCss; exports.isPlainVectorPaintLayer = isPlainVectorPaintLayer; exports.isDrawnVectorPaintLayer = isDrawnVectorPaintLayer; exports.vectorFills = vectorFills; exports.vectorStrokeSettings = vectorStrokeSettings; exports.vectorStrokes = vectorStrokes; exports.hasVectorPaintStacks = hasVectorPaintStacks; exports.withVectorFills = withVectorFills; exports.withVectorStrokes = withVectorStrokes; exports.normalizeVectorPaintStacks = normalizeVectorPaintStacks; exports.sanitizeVectorFills = sanitizeVectorFills; exports.sanitizeVectorStrokeSettings = sanitizeVectorStrokeSettings; exports.sanitizeVectorStrokes = sanitizeVectorStrokes; exports.vectorPaintLayerNodes = vectorPaintLayerNodes; exports.needsVectorPaintLayers = needsVectorPaintLayers; exports.vectorStrokeStackReach = vectorStrokeStackReach; exports.hitTestVectorPaintLayer = hitTestVectorPaintLayer; exports.hitTestVectorPaintStack = hitTestVectorPaintStack; exports.vectorStacksHaveGradient = vectorStacksHaveGradient; exports.newVectorStrokeLayer = newVectorStrokeLayer; exports.vectorTargetPaint = vectorTargetPaint; exports.withVectorTargetPaint = withVectorTargetPaint; exports.effectPathLength = effectPathLength; exports.effectPathVertexCount = effectPathVertexCount; exports.trimIntervals = trimIntervals; exports.trimPaths = trimPaths; exports.trimPathsIndividually = trimPathsIndividually; exports.puckerBloatPaths = puckerBloatPaths; exports.roundCornerPaths = roundCornerPaths; exports.offsetPaths = offsetPaths; exports.sweepPath = sweepPath; exports.twistPaths = twistPaths; exports.zigzagPaths = zigzagPaths; exports.wigglePaths = wigglePaths; exports.mergePaths = mergePaths; exports.vectorRepeaterCopies = vectorRepeaterCopies; exports.repeatPaths = repeatPaths; exports.pathsCenter = pathsCenter; exports.mapVectorPoints = mapVectorPoints; exports.mapVectorSubpaths = mapVectorSubpaths; exports.mapBezierPath = mapBezierPath; exports.isVectorFrame = isVectorFrame; exports.vectorFrameRectPath = vectorFrameRectPath; exports.vectorFrameDrawn = vectorFrameDrawn; exports.vectorFrameContains = vectorFrameContains; exports.vectorFrameChildMatrix = vectorFrameChildMatrix; exports.sanitizeVectorFrame = sanitizeVectorFrame; exports.sanitizeVectorResizing = sanitizeVectorResizing; exports.VECTOR_HORIZONTAL_RESIZING_LABELS = VECTOR_HORIZONTAL_RESIZING_LABELS; exports.VECTOR_VERTICAL_RESIZING_LABELS = VECTOR_VERTICAL_RESIZING_LABELS; exports.vectorBoundsInside = vectorBoundsInside; exports.vectorArtboards = vectorArtboards; exports.vectorFrameDocument = vectorFrameDocument; exports.getVectorFramePanel = getVectorFramePanel; exports.splitIntoFaces = splitIntoFaces; exports.knifePath = knifePath; exports.eraserRegion = eraserRegion; exports.eraseFromFill = eraseFromFill; exports.eraseFromOutline = eraseFromOutline; exports.polylineBounds = polylineBounds; exports.simplifyPolyline = simplifyPolyline; exports.VECTOR_FILTER_DEFAULTS = VECTOR_FILTER_DEFAULTS; exports.VECTOR_FILTER_LABELS = VECTOR_FILTER_LABELS; exports.VECTOR_FILTER_PARAM_SPECS = VECTOR_FILTER_PARAM_SPECS; exports.isVectorFilterType = isVectorFilterType; exports.normalizeVectorFilterParams = normalizeVectorFilterParams; exports.vectorFilterParamKeys = vectorFilterParamKeys; exports.createVectorFilter = createVectorFilter; exports.sanitizeVectorFilters = sanitizeVectorFilters; exports.activeVectorFilters = activeVectorFilters; exports.vectorFilterReach = vectorFilterReach; exports.vectorFilterSvg = vectorFilterSvg; exports.vectorFilterMarkup = vectorFilterMarkup; exports.VECTOR_FILTER_MENU = VECTOR_FILTER_MENU; exports.isVectorMaskType = isVectorMaskType; exports.sanitizeVectorMask = sanitizeVectorMask; exports.isVectorMaskGroup = isVectorMaskGroup; exports.isVectorMaskActive = isVectorMaskActive; exports.vectorMaskSource = vectorMaskSource; exports.vectorMaskContents = vectorMaskContents; exports.vectorMaskOwner = vectorMaskOwner; exports.vectorMaskSummary = vectorMaskSummary; exports.vectorMaskRegionShapes = vectorMaskRegionShapes; exports.vectorMaskRegion = vectorMaskRegion; exports.vectorMaskRegionPath = vectorMaskRegionPath; exports.vectorMaskContains = vectorMaskContains; exports.vectorMaskedShapes = vectorMaskedShapes; exports.vectorMaskedGeometry = vectorMaskedGeometry; exports.vectorMaskedLocalBounds = vectorMaskedLocalBounds; exports.vectorMaskContentBounds = vectorMaskContentBounds; exports.vectorMaskRenderData = vectorMaskRenderData; exports.DEFAULT_TEXT_STYLE = DEFAULT_TEXT_STYLE; exports.DEFAULT_AUTO_LEADING = DEFAULT_AUTO_LEADING; exports.fitRuns = fitRuns; exports.styleAt = styleAt; exports.restyleRange = restyleRange; exports.spliceRuns = spliceRuns; exports.paragraphRanges = paragraphRanges; exports.fitParagraphRuns = fitParagraphRuns; exports.fontOf = fontOf; exports.isTextSpace = isTextSpace; exports.layoutText = layoutText; exports.textIndexAt = textIndexAt; exports.caretAt = caretAt; exports.textDecorations = textDecorations; exports.textRectPath = textRectPath; exports.textFragmentOutline = textFragmentOutline; exports.cssFontFamily = cssFontFamily; exports.cssFont = cssFont; exports.createCanvasTextShaper = createCanvasTextShaper; exports.createOutlineTextShaper = createOutlineTextShaper; exports.createMetricTextShaper = createMetricTextShaper; exports.setVectorTextShaper = setVectorTextShaper; exports.getVectorTextShaper = getVectorTextShaper; exports.vectorTextShaperGeneration = vectorTextShaperGeneration; exports.vectorTextHasOutlines = vectorTextHasOutlines; exports.vectorTextFamilies = vectorTextFamilies; exports.DEFAULT_VECTOR_FONT = DEFAULT_VECTOR_FONT; exports.VECTOR_CHARACTER_STYLE_KEYS = VECTOR_CHARACTER_STYLE_KEYS; exports.VECTOR_PARAGRAPH_STYLE_KEYS = VECTOR_PARAGRAPH_STYLE_KEYS; exports.VectorTextError = VectorTextError; exports.fitVectorTextRuns = fitVectorTextRuns; exports.vectorTextRuns = vectorTextRuns; exports.vectorTextStyleAt = vectorTextStyleAt; exports.measureVectorPath = measureVectorPath; exports.vectorPathAt = vectorPathAt; exports.vectorPathTextPositions = vectorPathTextPositions; exports.layoutVectorText = layoutVectorText; exports.glyphBox = glyphBox; exports.vectorTextPaths = vectorTextPaths; exports.vectorTextPaintSource = vectorTextPaintSource; exports.vectorTextCaret = vectorTextCaret; exports.vectorTextIndexAt = vectorTextIndexAt; exports.vectorTextSelectionQuads = vectorTextSelectionQuads; exports.patchVectorCharacterStyle = patchVectorCharacterStyle; exports.patchVectorParagraphStyle = patchVectorParagraphStyle; exports.sanitizeVectorTextFrame = sanitizeVectorTextFrame; exports.normalizeVectorTextRuns = normalizeVectorTextRuns; exports.sanitizeVectorTextFields = sanitizeVectorTextFields; exports.vectorTextRange = vectorTextRange; exports.replaceVectorText = replaceVectorText; exports.styleVectorText = styleVectorText; exports.bakeVectorTextGeometry = bakeVectorTextGeometry; exports.vectorTextName = vectorTextName; exports.pathTextFrameFromBezier = pathTextFrameFromBezier; exports.vectorTextBoxOutline = vectorTextBoxOutline; exports.vectorTextSpans = vectorTextSpans; exports.vectorTextGeometryNode = vectorTextGeometryNode; exports.vectorTextSpanSvg = vectorTextSpanSvg; exports.VECTOR_SYMBOL_MAX_DEPTH = VECTOR_SYMBOL_MAX_DEPTH; exports.vectorSymbolsUsedIn = vectorSymbolsUsedIn; exports.vectorSymbolUses = vectorSymbolUses; exports.resolveVectorSymbols = resolveVectorSymbols; exports.stripVectorSymbolArt = stripVectorSymbolArt; exports.scaleVectorStrokeWidths = scaleVectorStrokeWidths; exports.tintVectorNode = tintVectorNode; exports.prefixVectorIds = prefixVectorIds; exports.vectorInstanceGroup = vectorInstanceGroup; exports.composeVectorMatrices = composeVectorMatrices; exports.WARP_STYLES = WARP_STYLES; exports.WARP_STYLE_LABELS = WARP_STYLE_LABELS; exports.warpPresetGrid = warpPresetGrid; exports.warpPresetMesh = warpPresetMesh; exports.warpMeshColumns = warpMeshColumns; exports.warpMeshRows = warpMeshRows; exports.isValidWarpMesh = isValidWarpMesh; exports.fitWarpMesh = fitWarpMesh; exports.identityWarpMesh = identityWarpMesh; exports.evalWarpMesh = evalWarpMesh; exports.splitWarpMeshU = splitWarpMeshU; exports.splitWarpMeshV = splitWarpMeshV; exports.removeWarpMeshSplitU = removeWarpMeshSplitU; exports.removeWarpMeshSplitV = removeWarpMeshSplitV; exports.mapWarpMeshPoints = mapWarpMeshPoints; exports.resizeWarpMesh = resizeWarpMesh; exports.warpMeshControlBounds = warpMeshControlBounds; exports.warpMeshParamAt = warpMeshParamAt; exports.dragWarpMeshPoint = dragWarpMeshPoint; exports.pullWarpMesh = pullWarpMesh; exports.warpMeshEditPoints = warpMeshEditPoints; exports.warpMeshGridCurves = warpMeshGridCurves; exports.vectorMeshFromOutline = vectorMeshFromOutline; exports.vectorMeshOutline = vectorMeshOutline; exports.VECTOR_EFFECT_DEFAULTS = VECTOR_EFFECT_DEFAULTS; exports.VECTOR_EFFECT_LABELS = VECTOR_EFFECT_LABELS; exports.VECTOR_EFFECT_PARAM_SPECS = VECTOR_EFFECT_PARAM_SPECS; exports.vectorEnvelopeMesh = vectorEnvelopeMesh; exports.vectorEnvelopeMap = vectorEnvelopeMap; exports.normalizeVectorEffectParams = normalizeVectorEffectParams; exports.createVectorEffect = createVectorEffect; exports.activeVectorEffects = activeVectorEffects; exports.hasOwnVectorAppearance = hasOwnVectorAppearance; exports.hasVectorAppearance = hasVectorAppearance; exports.isVectorLiveBoolean = isVectorLiveBoolean; exports.vectorOperandOperation = vectorOperandOperation; exports.vectorLiveBooleanSteps = vectorLiveBooleanSteps; exports.clearVectorLiveBooleanCache = clearVectorLiveBooleanCache; exports.foldVectorBooleanOperands = foldVectorBooleanOperands; exports.applyVectorEffects = applyVectorEffects; exports.vectorInstanceDrawn = vectorInstanceDrawn; exports.vectorChildAppearanceShapes = vectorChildAppearanceShapes; exports.vectorEffectInputPaths = vectorEffectInputPaths; exports.vectorEffectInputBounds = vectorEffectInputBounds; exports.vectorNodeEnvelope = vectorNodeEnvelope; exports.vectorEnvelopeFrame = vectorEnvelopeFrame; exports.vectorAppearanceShapes = vectorAppearanceShapes; exports.vectorAppearanceOutline = vectorAppearanceOutline; exports.vectorAppearanceNodes = vectorAppearanceNodes; exports.expandVectorAppearance = expandVectorAppearance; exports.expandVectorAppearances = expandVectorAppearances; exports.sanitizeVectorEffects = sanitizeVectorEffects; exports.transformVectorEffects = transformVectorEffects; exports.vectorEnteredGroups = vectorEnteredGroups; exports.isVectorConnector = isVectorConnector; exports.vectorConnectionSites = vectorConnectionSites; exports.nearestVectorConnectionSite = nearestVectorConnectionSite; exports.vectorConnectorWorldAnchors = vectorConnectorWorldAnchors; exports.routeVectorConnector = routeVectorConnector; exports.rerouteVectorConnectors = rerouteVectorConnectors; exports.sanitizeVectorConnector = sanitizeVectorConnector; exports.VECTOR_CONNECTOR_ROUTE_LABELS = VECTOR_CONNECTOR_ROUTE_LABELS; exports.VECTOR_CONNECTOR_SIDE_LABELS = VECTOR_CONNECTOR_SIDE_LABELS; exports.getVectorConnectorPanel = getVectorConnectorPanel; exports.vectorConnectorTargetAt = vectorConnectorTargetAt; exports.vectorStrokeGradientDefs = vectorStrokeGradientDefs; exports.vectorCornersAttribute = vectorCornersAttribute; exports.applyVectorCornersAttribute = applyVectorCornersAttribute; exports.vectorPathLocalBounds = vectorPathLocalBounds; exports.vectorPaintToSvg = vectorPaintToSvg; exports.vectorStrokeSvgParts = vectorStrokeSvgParts; exports.vectorNodeLocalPaintBounds = vectorNodeLocalPaintBounds; exports.vectorNodeFilterSvg = vectorNodeFilterSvg; exports.widthProfileToAttribute = widthProfileToAttribute; exports.widthProfileFromAttribute = widthProfileFromAttribute; exports.vectorDocumentToSvg = vectorDocumentToSvg; exports.parseSvgTransform = parseSvgTransform; exports.parseVectorSvg = parseVectorSvg; exports.VECTOR_SPATIAL_MIN = VECTOR_SPATIAL_MIN; exports.VectorRTree = VectorRTree; exports.vectorNodePaintBox = vectorNodePaintBox; exports.vectorSpatialIndex = vectorSpatialIndex; exports.vectorNodesNear = vectorNodesNear; exports.cloneAnchor = cloneAnchor; exports.cloneSubpath = cloneSubpath; exports.cloneVectorNode = cloneVectorNode; exports.cloneVectorDocument = cloneVectorDocument; exports.hasPaint = hasPaint; exports.subpathSegmentCount = subpathSegmentCount; exports.subpathSegment = subpathSegment; exports.subpathsToBezier = subpathsToBezier; exports.vectorNodeToBezier = vectorNodeToBezier; exports.vectorPathData = vectorPathData; exports.inferAnchorType = inferAnchorType; exports.bezierToSubpaths = bezierToSubpaths; exports.walkVectorNodes = walkVectorNodes; exports.findVectorNode = findVectorNode; exports.locateVectorNode = locateVectorNode; exports.collectPaintedNodes = collectPaintedNodes; exports.collectPathNodes = collectPathNodes; exports.nodeMatrix = nodeMatrix; exports.vectorPathWorldBezier = vectorPathWorldBezier; exports.vectorNodeBounds = vectorNodeBounds; exports.unionBounds = unionBounds; exports.boundsIntersect = boundsIntersect; exports.boundsFromPoints = boundsFromPoints; exports.hitTestVectorNode = hitTestVectorNode; exports.vectorStrokeOutline = vectorStrokeOutline; exports.hitTestVectorNodes = hitTestVectorNodes; exports.nearestSegment = nearestSegment; exports.transformVectorNode = transformVectorNode; exports.vectorNodeRotation = vectorNodeRotation; exports.vectorWorldMatrix = vectorWorldMatrix; exports.vectorParentMatrix = vectorParentMatrix; exports.translateAnchor = translateAnchor; exports.moveAnchorHandle = moveAnchorHandle; exports.convertAnchor = convertAnchor; exports.insertAnchor = insertAnchor; exports.removeAnchors = removeAnchors; exports.reverseSubpath = reverseSubpath; exports.KAPPA = KAPPA2; exports.rectSubpath = rectSubpath; exports.ellipseSubpath = ellipseSubpath; exports.polygonSubpath = polygonSubpath; exports.starSubpath = starSubpath; exports.lineSubpath = lineSubpath; exports.roundSubpaths = roundSubpaths;
|
|
10040
|
-
//# sourceMappingURL=chunk-
|
|
10040
|
+
//# sourceMappingURL=chunk-ORE334I6.cjs.map
|