svg-path-commander 2.0.5 → 2.0.7
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/.eslintrc.cjs +1 -1
- package/.lgtm.yml +0 -0
- package/.prettierrc.json +0 -0
- package/LICENSE +0 -0
- package/README.md +5 -5
- package/cypress/e2e/svg-path-commander.spec.ts +1 -1
- package/cypress/fixtures/shapeObjects.js +0 -0
- package/cypress/fixtures/shapes.js +7 -7
- package/cypress/fixtures/simpleShapes.js +0 -0
- package/cypress/plugins/esbuild-istanbul.ts +0 -0
- package/cypress/plugins/tsCompile.ts +0 -0
- package/cypress/support/commands.ts +0 -0
- package/cypress/support/e2e.ts +0 -0
- package/cypress/test.html +0 -0
- package/cypress.config.ts +0 -0
- package/dist/svg-path-commander.cjs +1 -1
- package/dist/svg-path-commander.cjs.map +1 -1
- package/dist/svg-path-commander.d.ts +8 -0
- package/dist/svg-path-commander.js +1 -1
- package/dist/svg-path-commander.js.map +1 -1
- package/dist/svg-path-commander.mjs +66 -63
- package/dist/svg-path-commander.mjs.map +1 -1
- package/dts.config.ts +0 -0
- package/package.json +13 -13
- package/src/convert/pathToAbsolute.ts +0 -0
- package/src/convert/pathToCurve.ts +0 -0
- package/src/convert/pathToRelative.ts +0 -0
- package/src/convert/pathToString.ts +0 -0
- package/src/index.ts +2 -0
- package/src/interface.ts +0 -0
- package/src/math/distanceSquareRoot.ts +0 -0
- package/src/math/midPoint.ts +0 -0
- package/src/math/polygonArea.ts +0 -0
- package/src/math/polygonLength.ts +0 -0
- package/src/math/rotateVector.ts +0 -0
- package/src/options/options.ts +0 -0
- package/src/parser/error.ts +0 -0
- package/src/parser/finalizeSegment.ts +0 -0
- package/src/parser/invalidPathValue.ts +0 -0
- package/src/parser/isArcCommand.ts +0 -0
- package/src/parser/isDigit.ts +0 -0
- package/src/parser/isDigitStart.ts +0 -0
- package/src/parser/isPathCommand.ts +0 -0
- package/src/parser/isSpace.ts +0 -0
- package/src/parser/paramsCount.ts +0 -0
- package/src/parser/paramsParser.ts +0 -0
- package/src/parser/parsePathString.ts +0 -0
- package/src/parser/pathParser.ts +0 -0
- package/src/parser/scanFlag.ts +0 -0
- package/src/parser/scanParam.ts +0 -0
- package/src/parser/scanSegment.ts +0 -0
- package/src/parser/skipSpaces.ts +0 -0
- package/src/process/arcToCubic.ts +0 -0
- package/src/process/fixArc.ts +0 -0
- package/src/process/getSVGMatrix.ts +0 -0
- package/src/process/lineToCubic.ts +3 -3
- package/src/process/normalizePath.ts +0 -0
- package/src/process/normalizeSegment.ts +0 -0
- package/src/process/optimizePath.ts +0 -0
- package/src/process/projection2d.ts +0 -0
- package/src/process/quadToCubic.ts +0 -0
- package/src/process/reverseCurve.ts +0 -0
- package/src/process/reversePath.ts +0 -0
- package/src/process/roundPath.ts +0 -0
- package/src/process/segmentToCubic.ts +0 -0
- package/src/process/shortenSegment.ts +0 -0
- package/src/process/splitCubic.ts +0 -0
- package/src/process/splitPath.ts +0 -0
- package/src/process/transformPath.ts +0 -0
- package/src/types.ts +0 -0
- package/src/util/getClosestPoint.ts +0 -0
- package/src/util/getDrawDirection.ts +0 -0
- package/src/util/getPathArea.ts +0 -0
- package/src/util/getPathBBox.ts +0 -0
- package/src/util/getPointAtLength.ts +0 -0
- package/src/util/getPropertiesAtLength.ts +0 -0
- package/src/util/getPropertiesAtPoint.ts +0 -0
- package/src/util/getSegmentAtLength.ts +0 -0
- package/src/util/getSegmentOfPoint.ts +0 -0
- package/src/util/getTotalLength.ts +0 -0
- package/src/util/isAbsoluteArray.ts +0 -0
- package/src/util/isCurveArray.ts +0 -0
- package/src/util/isNormalizedArray.ts +0 -0
- package/src/util/isPathArray.ts +0 -0
- package/src/util/isPointInStroke.ts +0 -0
- package/src/util/isRelativeArray.ts +0 -0
- package/src/util/isValidPath.ts +0 -0
- package/src/util/pathLengthFactory.ts +0 -0
- package/src/util/segmentArcFactory.ts +0 -0
- package/src/util/segmentCubicFactory.ts +0 -0
- package/src/util/segmentLineFactory.ts +0 -0
- package/src/util/segmentQuadFactory.ts +0 -0
- package/src/util/shapeParams.ts +0 -0
- package/src/util/shapeToPath.ts +0 -0
- package/src/util/shapeToPathArray.ts +0 -0
- package/tsconfig.json +0 -0
- package/vite.config.ts +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var N = (e, t, n) => (
|
|
1
|
+
var te = Object.defineProperty;
|
|
2
|
+
var ee = (e, t, n) => t in e ? te(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
|
|
3
|
+
var N = (e, t, n) => (ee(e, typeof t != "symbol" ? t + "" : t, n), n);
|
|
4
4
|
const mt = {
|
|
5
5
|
origin: [0, 0, 0],
|
|
6
6
|
round: 4
|
|
@@ -21,7 +21,7 @@ const mt = {
|
|
|
21
21
|
const { data: r } = e;
|
|
22
22
|
for (; r.length >= U[n] && (n === "m" && r.length > 2 ? (e.segments.push([t, ...r.splice(0, 2)]), n = "l", t = t === "m" ? "l" : "L") : e.segments.push([t, ...r.splice(0, U[n])]), !!U[n]); )
|
|
23
23
|
;
|
|
24
|
-
},
|
|
24
|
+
}, ne = (e) => {
|
|
25
25
|
const { index: t, pathValue: n } = e, r = n.charCodeAt(t);
|
|
26
26
|
if (r === 48) {
|
|
27
27
|
e.param = 0, e.index += 1;
|
|
@@ -32,7 +32,7 @@ const mt = {
|
|
|
32
32
|
return;
|
|
33
33
|
}
|
|
34
34
|
e.err = `${k}: invalid Arc flag "${n[t]}", expecting 0 or 1 at index ${t}`;
|
|
35
|
-
}, D = (e) => e >= 48 && e <= 57, R = "Invalid path value",
|
|
35
|
+
}, D = (e) => e >= 48 && e <= 57, R = "Invalid path value", se = (e) => {
|
|
36
36
|
const { max: t, pathValue: n, index: r } = e;
|
|
37
37
|
let s = r, i = !1, o = !1, a = !1, l = !1, c;
|
|
38
38
|
if (s >= t) {
|
|
@@ -71,7 +71,7 @@ const mt = {
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
e.index = s, e.param = +e.pathValue.slice(r, s);
|
|
74
|
-
},
|
|
74
|
+
}, re = (e) => [
|
|
75
75
|
// Special spaces
|
|
76
76
|
5760,
|
|
77
77
|
6158,
|
|
@@ -103,9 +103,9 @@ const mt = {
|
|
|
103
103
|
160
|
|
104
104
|
].includes(e), V = (e) => {
|
|
105
105
|
const { pathValue: t, max: n } = e;
|
|
106
|
-
for (; e.index < n &&
|
|
106
|
+
for (; e.index < n && re(t.charCodeAt(e.index)); )
|
|
107
107
|
e.index += 1;
|
|
108
|
-
},
|
|
108
|
+
}, ie = (e) => {
|
|
109
109
|
switch (e | 32) {
|
|
110
110
|
case 109:
|
|
111
111
|
case 122:
|
|
@@ -121,9 +121,9 @@ const mt = {
|
|
|
121
121
|
default:
|
|
122
122
|
return !1;
|
|
123
123
|
}
|
|
124
|
-
},
|
|
124
|
+
}, oe = (e) => D(e) || e === 43 || e === 45 || e === 46, ce = (e) => (e | 32) === 97, jt = (e) => {
|
|
125
125
|
const { max: t, pathValue: n, index: r } = e, s = n.charCodeAt(r), i = U[n[r].toLowerCase()];
|
|
126
|
-
if (e.segmentStart = r, !
|
|
126
|
+
if (e.segmentStart = r, !ie(s)) {
|
|
127
127
|
e.err = `${k}: ${R} "${n[r]}" is not a path command`;
|
|
128
128
|
return;
|
|
129
129
|
}
|
|
@@ -133,11 +133,11 @@ const mt = {
|
|
|
133
133
|
}
|
|
134
134
|
for (; ; ) {
|
|
135
135
|
for (let o = i; o > 0; o -= 1) {
|
|
136
|
-
if (
|
|
136
|
+
if (ce(s) && (o === 3 || o === 4) ? ne(e) : se(e), e.err.length)
|
|
137
137
|
return;
|
|
138
138
|
e.data.push(e.param), V(e), e.index < t && n.charCodeAt(e.index) === 44 && (e.index += 1, V(e));
|
|
139
139
|
}
|
|
140
|
-
if (e.index >= e.max || !
|
|
140
|
+
if (e.index >= e.max || !oe(n.charCodeAt(e.index)))
|
|
141
141
|
break;
|
|
142
142
|
}
|
|
143
143
|
Tt(e);
|
|
@@ -159,15 +159,15 @@ const _ = (e) => Array.isArray(e) && e.every((t) => {
|
|
|
159
159
|
if (t.err && t.err.length)
|
|
160
160
|
throw TypeError(t.err);
|
|
161
161
|
return t.segments;
|
|
162
|
-
},
|
|
162
|
+
}, le = (e) => {
|
|
163
163
|
const t = e.length;
|
|
164
164
|
let n = -1, r, s = e[t - 1], i = 0;
|
|
165
165
|
for (; ++n < t; )
|
|
166
166
|
r = s, s = e[n], i += r[1] * s[0] - r[0] * s[1];
|
|
167
167
|
return i / 2;
|
|
168
|
-
}, W = (e, t) => Math.sqrt((e[0] - t[0]) * (e[0] - t[0]) + (e[1] - t[1]) * (e[1] - t[1])),
|
|
169
|
-
var
|
|
170
|
-
const
|
|
168
|
+
}, W = (e, t) => Math.sqrt((e[0] - t[0]) * (e[0] - t[0]) + (e[1] - t[1]) * (e[1] - t[1])), ae = (e) => e.reduce((t, n, r) => r ? t + W(e[r - 1], n) : 0, 0);
|
|
169
|
+
var me = Object.defineProperty, he = (e, t, n) => t in e ? me(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, C = (e, t, n) => (he(e, typeof t != "symbol" ? t + "" : t, n), n);
|
|
170
|
+
const ue = {
|
|
171
171
|
a: 1,
|
|
172
172
|
b: 0,
|
|
173
173
|
c: 0,
|
|
@@ -192,7 +192,7 @@ const he = {
|
|
|
192
192
|
m44: 1,
|
|
193
193
|
is2D: !0,
|
|
194
194
|
isIdentity: !0
|
|
195
|
-
}, It = (e) => (e instanceof Float64Array || e instanceof Float32Array || Array.isArray(e) && e.every((t) => typeof t == "number")) && [6, 16].some((t) => e.length === t), Dt = (e) => e instanceof DOMMatrix || e instanceof v || typeof e == "object" && Object.keys(
|
|
195
|
+
}, It = (e) => (e instanceof Float64Array || e instanceof Float32Array || Array.isArray(e) && e.every((t) => typeof t == "number")) && [6, 16].some((t) => e.length === t), Dt = (e) => e instanceof DOMMatrix || e instanceof v || typeof e == "object" && Object.keys(ue).every((t) => e && t in e), G = (e) => {
|
|
196
196
|
const t = new v(), n = Array.from(e);
|
|
197
197
|
if (!It(n))
|
|
198
198
|
throw TypeError(`CSSMatrix: "${n.join(",")}" must be an array with 6/16 numbers.`);
|
|
@@ -583,7 +583,7 @@ e.every(([t]) => t === t.toUpperCase()), Q = (e) => {
|
|
|
583
583
|
m = [c, ...a];
|
|
584
584
|
return c === "Z" ? (n = s, r = i) : c === "H" ? [, n] = m : c === "V" ? [, r] = m : ([n, r] = m.slice(-2), c === "M" && (s = n, i = r)), m;
|
|
585
585
|
});
|
|
586
|
-
},
|
|
586
|
+
}, fe = (e, t) => {
|
|
587
587
|
const [n] = e, { x1: r, y1: s, x2: i, y2: o } = t, a = e.slice(1).map(Number);
|
|
588
588
|
let l = e;
|
|
589
589
|
if ("TQ".includes(n) || (t.qx = null, t.qy = null), n === "H")
|
|
@@ -621,12 +621,12 @@ e.every(([t]) => t === t.toUpperCase()), Q = (e) => {
|
|
|
621
621
|
return [...e];
|
|
622
622
|
const t = Q(e), n = { ...ut }, r = t.length;
|
|
623
623
|
for (let s = 0; s < r; s += 1) {
|
|
624
|
-
t[s], t[s] =
|
|
624
|
+
t[s], t[s] = fe(t[s], n);
|
|
625
625
|
const i = t[s], o = i.length;
|
|
626
626
|
n.x1 = +i[o - 2], n.y1 = +i[o - 1], n.x2 = +i[o - 4] || n.x1, n.y2 = +i[o - 3] || n.y1;
|
|
627
627
|
}
|
|
628
628
|
return t;
|
|
629
|
-
},
|
|
629
|
+
}, E = (e, t, n) => {
|
|
630
630
|
const [r, s] = e, [i, o] = t;
|
|
631
631
|
return [r + (i - r) * n, s + (o - s) * n];
|
|
632
632
|
}, dt = (e, t, n, r, s) => {
|
|
@@ -638,7 +638,7 @@ e.every(([t]) => t === t.toUpperCase()), Q = (e) => {
|
|
|
638
638
|
else if (s >= i)
|
|
639
639
|
o = { x: n, y: r };
|
|
640
640
|
else {
|
|
641
|
-
const [a, l] =
|
|
641
|
+
const [a, l] = E([e, t], [n, r], s / i);
|
|
642
642
|
o = { x: a, y: l };
|
|
643
643
|
}
|
|
644
644
|
return {
|
|
@@ -656,7 +656,7 @@ e.every(([t]) => t === t.toUpperCase()), Q = (e) => {
|
|
|
656
656
|
}, Lt = (e, t) => {
|
|
657
657
|
const { x: n, y: r } = e, { x: s, y: i } = t, o = n * s + r * i, a = Math.sqrt((n ** 2 + r ** 2) * (s ** 2 + i ** 2));
|
|
658
658
|
return (n * i - r * s < 0 ? -1 : 1) * Math.acos(o / a);
|
|
659
|
-
},
|
|
659
|
+
}, ye = (e, t, n, r, s, i, o, a, l, c) => {
|
|
660
660
|
const { abs: m, sin: u, cos: y, sqrt: g, PI: f } = Math;
|
|
661
661
|
let h = m(n), x = m(r);
|
|
662
662
|
const b = (s % 360 + 360) % 360 * (f / 180);
|
|
@@ -669,8 +669,8 @@ e.every(([t]) => t === t.toUpperCase()), Q = (e) => {
|
|
|
669
669
|
y: -u(b) * A + y(b) * d
|
|
670
670
|
}, T = M.x ** 2 / h ** 2 + M.y ** 2 / x ** 2;
|
|
671
671
|
T > 1 && (h *= g(T), x *= g(T));
|
|
672
|
-
const
|
|
673
|
-
let F =
|
|
672
|
+
const j = h ** 2 * x ** 2 - h ** 2 * M.y ** 2 - x ** 2 * M.x ** 2, H = h ** 2 * M.y ** 2 + x ** 2 * M.x ** 2;
|
|
673
|
+
let F = j / H;
|
|
674
674
|
F = F < 0 ? 0 : F;
|
|
675
675
|
const tt = (i !== o ? 1 : -1) * g(F), S = {
|
|
676
676
|
x: tt * (h * M.y / x),
|
|
@@ -692,13 +692,13 @@ e.every(([t]) => t === t.toUpperCase()), Q = (e) => {
|
|
|
692
692
|
x: y(b) * B - u(b) * J + et.x,
|
|
693
693
|
y: u(b) * B + y(b) * J + et.y
|
|
694
694
|
};
|
|
695
|
-
},
|
|
695
|
+
}, ge = (e, t, n, r, s, i, o, a, l, c) => {
|
|
696
696
|
const m = typeof c == "number";
|
|
697
697
|
let u = e, y = t, g = 0, f = [u, y, g], h = [u, y], x = 0, p = { x: 0, y: 0 }, b = [{ x: u, y }];
|
|
698
698
|
m && c <= 0 && (p = { x: u, y });
|
|
699
699
|
const A = 300;
|
|
700
700
|
for (let d = 0; d <= A; d += 1) {
|
|
701
|
-
if (x = d / A, { x: u, y } =
|
|
701
|
+
if (x = d / A, { x: u, y } = ye(e, t, n, r, s, i, o, a, l, x), b = [...b, { x: u, y }], g += W(h, [u, y]), h = [u, y], m && g > c && c > f[2]) {
|
|
702
702
|
const M = (g - c) / (g - f[2]);
|
|
703
703
|
p = {
|
|
704
704
|
x: h[0] * (1 - M) + f[0] * M,
|
|
@@ -719,19 +719,19 @@ e.every(([t]) => t === t.toUpperCase()), Q = (e) => {
|
|
|
719
719
|
y: Math.max(...b.map((d) => d.y))
|
|
720
720
|
}
|
|
721
721
|
};
|
|
722
|
-
},
|
|
722
|
+
}, xe = (e, t, n, r, s, i, o, a, l) => {
|
|
723
723
|
const c = 1 - l;
|
|
724
724
|
return {
|
|
725
725
|
x: c ** 3 * e + 3 * c ** 2 * l * n + 3 * c * l ** 2 * s + l ** 3 * o,
|
|
726
726
|
y: c ** 3 * t + 3 * c ** 2 * l * r + 3 * c * l ** 2 * i + l ** 3 * a
|
|
727
727
|
};
|
|
728
|
-
},
|
|
728
|
+
}, pe = (e, t, n, r, s, i, o, a, l) => {
|
|
729
729
|
const c = typeof l == "number";
|
|
730
730
|
let m = e, u = t, y = 0, g = [m, u, y], f = [m, u], h = 0, x = { x: 0, y: 0 }, p = [{ x: m, y: u }];
|
|
731
731
|
c && l <= 0 && (x = { x: m, y: u });
|
|
732
732
|
const b = 300;
|
|
733
733
|
for (let A = 0; A <= b; A += 1) {
|
|
734
|
-
if (h = A / b, { x: m, y: u } =
|
|
734
|
+
if (h = A / b, { x: m, y: u } = xe(e, t, n, r, s, i, o, a, h), p = [...p, { x: m, y: u }], y += W(f, [m, u]), f = [m, u], c && y > l && l > g[2]) {
|
|
735
735
|
const d = (y - l) / (y - g[2]);
|
|
736
736
|
x = {
|
|
737
737
|
x: f[0] * (1 - d) + g[0] * d,
|
|
@@ -752,19 +752,19 @@ e.every(([t]) => t === t.toUpperCase()), Q = (e) => {
|
|
|
752
752
|
y: Math.max(...p.map((A) => A.y))
|
|
753
753
|
}
|
|
754
754
|
};
|
|
755
|
-
},
|
|
755
|
+
}, be = (e, t, n, r, s, i, o) => {
|
|
756
756
|
const a = 1 - o;
|
|
757
757
|
return {
|
|
758
758
|
x: a ** 2 * e + 2 * a * o * n + o ** 2 * s,
|
|
759
759
|
y: a ** 2 * t + 2 * a * o * r + o ** 2 * i
|
|
760
760
|
};
|
|
761
|
-
},
|
|
761
|
+
}, de = (e, t, n, r, s, i, o) => {
|
|
762
762
|
const a = typeof o == "number";
|
|
763
763
|
let l = e, c = t, m = 0, u = [l, c, m], y = [l, c], g = 0, f = { x: 0, y: 0 }, h = [{ x: l, y: c }];
|
|
764
764
|
a && o <= 0 && (f = { x: l, y: c });
|
|
765
765
|
const x = 300;
|
|
766
766
|
for (let p = 0; p <= x; p += 1) {
|
|
767
|
-
if (g = p / x, { x: l, y: c } =
|
|
767
|
+
if (g = p / x, { x: l, y: c } = be(e, t, n, r, s, i, g), h = [...h, { x: l, y: c }], m += W(y, [l, c]), y = [l, c], a && m > o && o > u[2]) {
|
|
768
768
|
const b = (m - o) / (m - u[2]);
|
|
769
769
|
f = {
|
|
770
770
|
x: y[0] * (1 - b) + u[0] * b,
|
|
@@ -792,13 +792,13 @@ e.every(([t]) => t === t.toUpperCase()), Q = (e) => {
|
|
|
792
792
|
u = n[d], [o] = u, s = o === "M", i = s ? i : [a, l, ...u.slice(1)], s ? ([, c, m] = u, h = { x: c, y: m }, x = h, f = 0, r && t < 1e-3 && (b = h)) : o === "L" ? { length: f, min: h, max: x, point: p } = dt(
|
|
793
793
|
...i,
|
|
794
794
|
(t || 0) - A
|
|
795
|
-
) : o === "A" ? { length: f, min: h, max: x, point: p } =
|
|
795
|
+
) : o === "A" ? { length: f, min: h, max: x, point: p } = ge(
|
|
796
796
|
...i,
|
|
797
797
|
(t || 0) - A
|
|
798
|
-
) : o === "C" ? { length: f, min: h, max: x, point: p } =
|
|
798
|
+
) : o === "C" ? { length: f, min: h, max: x, point: p } = pe(
|
|
799
799
|
...i,
|
|
800
800
|
(t || 0) - A
|
|
801
|
-
) : o === "Q" ? { length: f, min: h, max: x, point: p } =
|
|
801
|
+
) : o === "Q" ? { length: f, min: h, max: x, point: p } = de(
|
|
802
802
|
...i,
|
|
803
803
|
(t || 0) - A
|
|
804
804
|
) : o === "Z" && (i = [a, l, c, m], { length: f, min: h, max: x, point: p } = dt(
|
|
@@ -861,21 +861,21 @@ e.every(([t]) => t === t.toUpperCase()), Q = (e) => {
|
|
|
861
861
|
}, Ut = (e, t, n, r, s, i, o, a, l, c) => {
|
|
862
862
|
let m = e, u = t, y = n, g = r, f = a, h = l;
|
|
863
863
|
const x = Math.PI * 120 / 180, p = Math.PI / 180 * (+s || 0);
|
|
864
|
-
let b = [], A, d, M, T,
|
|
864
|
+
let b = [], A, d, M, T, j;
|
|
865
865
|
if (c)
|
|
866
|
-
[d, M, T,
|
|
866
|
+
[d, M, T, j] = c;
|
|
867
867
|
else {
|
|
868
868
|
A = rt(m, u, -p), m = A.x, u = A.y, A = rt(f, h, -p), f = A.x, h = A.y;
|
|
869
869
|
const P = (m - f) / 2, L = (u - h) / 2;
|
|
870
870
|
let I = P * P / (y * y) + L * L / (g * g);
|
|
871
871
|
I > 1 && (I = Math.sqrt(I), y *= I, g *= I);
|
|
872
872
|
const xt = y * y, pt = g * g, Ct = (i === o ? -1 : 1) * Math.sqrt(Math.abs((xt * pt - xt * L * L - pt * P * P) / (xt * L * L + pt * P * P)));
|
|
873
|
-
T = Ct * y * L / g + (m + f) / 2,
|
|
873
|
+
T = Ct * y * L / g + (m + f) / 2, j = Ct * -g * P / y + (u + h) / 2, d = Math.asin(((u - j) / g * 10 ** 9 >> 0) / 10 ** 9), M = Math.asin(((h - j) / g * 10 ** 9 >> 0) / 10 ** 9), d = m < T ? Math.PI - d : d, M = f < T ? Math.PI - M : M, d < 0 && (d = Math.PI * 2 + d), M < 0 && (M = Math.PI * 2 + M), o && d > M && (d -= Math.PI * 2), !o && M > d && (M -= Math.PI * 2);
|
|
874
874
|
}
|
|
875
875
|
let H = M - d;
|
|
876
876
|
if (Math.abs(H) > x) {
|
|
877
877
|
const P = M, L = f, I = h;
|
|
878
|
-
M = d + x * (o && M > d ? 1 : -1), f = T + y * Math.cos(M), h =
|
|
878
|
+
M = d + x * (o && M > d ? 1 : -1), f = T + y * Math.cos(M), h = j + g * Math.sin(M), b = Ut(f, h, y, g, s, 0, o, L, I, [M, P, T, j]);
|
|
879
879
|
}
|
|
880
880
|
H = M - d;
|
|
881
881
|
const F = Math.cos(d), tt = Math.sin(d), S = Math.cos(M), et = Math.sin(M), Y = Math.tan(H / 4), nt = 4 / 3 * y * Y, st = 4 / 3 * g * Y, $ = [m, u], q = [m + nt * tt, u - st * F], B = [f + nt * et, h - st * S], J = [f, h];
|
|
@@ -886,7 +886,7 @@ e.every(([t]) => t === t.toUpperCase()), Q = (e) => {
|
|
|
886
886
|
for (let P = 0, L = b.length; P < L; P += 1)
|
|
887
887
|
gt[P] = P % 2 ? rt(b[P - 1], b[P], p).y : rt(b[P], b[P + 1], p).x;
|
|
888
888
|
return gt;
|
|
889
|
-
},
|
|
889
|
+
}, Me = (e, t, n, r, s, i) => {
|
|
890
890
|
const o = 0.3333333333333333, a = 2 / 3;
|
|
891
891
|
return [
|
|
892
892
|
o * e + a * n,
|
|
@@ -901,11 +901,14 @@ e.every(([t]) => t === t.toUpperCase()), Q = (e) => {
|
|
|
901
901
|
i
|
|
902
902
|
// x,y
|
|
903
903
|
];
|
|
904
|
-
}, St = (e, t, n, r) =>
|
|
904
|
+
}, St = (e, t, n, r) => {
|
|
905
|
+
const s = E([e, t], [n, r], 0.3333333333333333), i = E([e, t], [n, r], 2 / 3);
|
|
906
|
+
return [...s, ...i, n, r];
|
|
907
|
+
}, ot = (e, t) => {
|
|
905
908
|
const [n] = e, r = e.slice(1).map(Number), [s, i] = r;
|
|
906
909
|
let o;
|
|
907
910
|
const { x1: a, y1: l, x: c, y: m } = t;
|
|
908
|
-
return "TQ".includes(n) || (t.qx = null, t.qy = null), n === "M" ? (t.x = s, t.y = i, e) : n === "A" ? (o = [a, l, ...r], ["C", ...Ut(...o)]) : n === "Q" ? (t.qx = s, t.qy = i, o = [a, l, ...r], ["C", ...
|
|
911
|
+
return "TQ".includes(n) || (t.qx = null, t.qy = null), n === "M" ? (t.x = s, t.y = i, e) : n === "A" ? (o = [a, l, ...r], ["C", ...Ut(...o)]) : n === "Q" ? (t.qx = s, t.qy = i, o = [a, l, ...r], ["C", ...Me(...o)]) : n === "L" ? ["C", ...St(a, l, s, i)] : n === "Z" ? ["C", ...St(a, l, c, m)] : e;
|
|
909
912
|
}, ct = (e) => {
|
|
910
913
|
if (Jt(e))
|
|
911
914
|
return [...e];
|
|
@@ -917,17 +920,17 @@ e.every(([t]) => t === t.toUpperCase()), Q = (e) => {
|
|
|
917
920
|
n.x1 = +a[l - 2], n.y1 = +a[l - 1], n.x2 = +a[l - 4] || n.x1, n.y2 = +a[l - 3] || n.y1;
|
|
918
921
|
}
|
|
919
922
|
return t;
|
|
920
|
-
},
|
|
923
|
+
}, Ae = (e, t, n, r, s, i, o, a) => 3 * ((a - t) * (n + s) - (o - e) * (r + i) + r * (e - s) - n * (t - i) + a * (s + e / 3) - o * (i + t / 3)) / 20, Vt = (e) => {
|
|
921
924
|
let t = 0, n = 0, r = 0;
|
|
922
925
|
return ct(e).map((s) => {
|
|
923
926
|
switch (s[0]) {
|
|
924
927
|
case "M":
|
|
925
928
|
return [, t, n] = s, 0;
|
|
926
929
|
default:
|
|
927
|
-
return r =
|
|
930
|
+
return r = Ae(t, n, ...s.slice(1)), [t, n] = s.slice(-2), r;
|
|
928
931
|
}
|
|
929
932
|
}).reduce((s, i) => s + i, 0);
|
|
930
|
-
}, X = (e) => ft(e).length,
|
|
933
|
+
}, X = (e) => ft(e).length, Ne = (e) => Vt(ct(e)) >= 0, K = (e, t) => ft(e, t).point, Pt = (e, t) => {
|
|
931
934
|
const n = Z(e);
|
|
932
935
|
let r = [...n], s = X(r), i = r.length - 1, o = 0, a = 0, l = n[0];
|
|
933
936
|
const [c, m] = l.slice(-2), u = { x: c, y: m };
|
|
@@ -969,7 +972,7 @@ e.every(([t]) => t === t.toUpperCase()), Q = (e) => {
|
|
|
969
972
|
f = m - o, y = K(r, f), x = i(y), h = m + o, g = K(r, h), p = i(g), f >= 0 && x < u ? (l = y, m = f, u = x) : h <= s && p < u ? (l = g, m = h, u = p) : o /= 2;
|
|
970
973
|
const b = Pt(n, m), A = Math.sqrt(u);
|
|
971
974
|
return { closest: l, distance: A, segment: b };
|
|
972
|
-
},
|
|
975
|
+
}, we = (e, t) => yt(e, t).closest, ve = (e, t) => yt(e, t).segment, Pe = (e, t) => Pt(e, t).segment, Ce = (e, t) => {
|
|
973
976
|
const { distance: n } = yt(e, t);
|
|
974
977
|
return Math.abs(n) < 1e-3;
|
|
975
978
|
}, Kt = (e) => {
|
|
@@ -988,33 +991,33 @@ e.slice(1).every(([t]) => t === t.toLowerCase()), lt = {
|
|
|
988
991
|
polygon: ["points"],
|
|
989
992
|
polyline: ["points"],
|
|
990
993
|
glyph: ["d"]
|
|
991
|
-
},
|
|
994
|
+
}, Te = (e) => {
|
|
992
995
|
let { x1: t, y1: n, x2: r, y2: s } = e;
|
|
993
996
|
return [t, n, r, s] = [t, n, r, s].map((i) => +i), [
|
|
994
997
|
["M", t, n],
|
|
995
998
|
["L", r, s]
|
|
996
999
|
];
|
|
997
|
-
},
|
|
1000
|
+
}, Le = (e) => {
|
|
998
1001
|
const t = [], n = (e.points || "").trim().split(/[\s|,]/).map((s) => +s);
|
|
999
1002
|
let r = 0;
|
|
1000
1003
|
for (; r < n.length; )
|
|
1001
1004
|
t.push([r ? "L" : "M", n[r], n[r + 1]]), r += 2;
|
|
1002
1005
|
return e.type === "polygon" ? [...t, ["z"]] : t;
|
|
1003
|
-
},
|
|
1006
|
+
}, ke = (e) => {
|
|
1004
1007
|
let { cx: t, cy: n, r } = e;
|
|
1005
1008
|
return [t, n, r] = [t, n, r].map((s) => +s), [
|
|
1006
1009
|
["M", t - r, n],
|
|
1007
1010
|
["a", r, r, 0, 1, 0, 2 * r, 0],
|
|
1008
1011
|
["a", r, r, 0, 1, 0, -2 * r, 0]
|
|
1009
1012
|
];
|
|
1010
|
-
},
|
|
1013
|
+
}, Se = (e) => {
|
|
1011
1014
|
let { cx: t, cy: n } = e, r = e.rx || 0, s = e.ry || r;
|
|
1012
1015
|
return [t, n, r, s] = [t, n, r, s].map((i) => +i), [
|
|
1013
1016
|
["M", t - r, n],
|
|
1014
1017
|
["a", r, s, 0, 1, 0, 2 * r, 0],
|
|
1015
1018
|
["a", r, s, 0, 1, 0, -2 * r, 0]
|
|
1016
1019
|
];
|
|
1017
|
-
},
|
|
1020
|
+
}, $e = (e) => {
|
|
1018
1021
|
const t = +e.x || 0, n = +e.y || 0, r = +e.width, s = +e.height;
|
|
1019
1022
|
let i = +(e.rx || 0), o = +(e.ry || i);
|
|
1020
1023
|
return i || o ? (i * 2 > r && (i -= (i * 2 - r) / 2), o * 2 > s && (o -= (o * 2 - s) / 2), [
|
|
@@ -1038,7 +1041,7 @@ e.slice(1).every(([t]) => t === t.toLowerCase()), lt = {
|
|
|
1038
1041
|
c[u] = e.getAttribute(u);
|
|
1039
1042
|
}) : Object.assign(c, e);
|
|
1040
1043
|
let m = [];
|
|
1041
|
-
return a === "circle" ? m =
|
|
1044
|
+
return a === "circle" ? m = ke(c) : a === "ellipse" ? m = Se(c) : ["polyline", "polygon"].includes(a) ? m = Le(c) : a === "rect" ? m = $e(c) : a === "line" ? m = Te(c) : ["glyph", "path"].includes(a) && (m = Z(i ? e.getAttribute("d") || "" : e.d || "")), _(m) && m.length ? m : !1;
|
|
1042
1045
|
}, at = (e, t) => {
|
|
1043
1046
|
let { round: n } = mt;
|
|
1044
1047
|
if (t === "off" || n === "off")
|
|
@@ -1049,7 +1052,7 @@ e.slice(1).every(([t]) => t === t.toLowerCase()), lt = {
|
|
|
1049
1052
|
const i = s.slice(1).map(Number).map((o) => n ? Math.round(o * r) / r : Math.round(o));
|
|
1050
1053
|
return [s[0], ...i];
|
|
1051
1054
|
});
|
|
1052
|
-
}, At = (e, t) => at(e, t).map((n) => n[0] + n.slice(1).join(" ")).join(""),
|
|
1055
|
+
}, At = (e, t) => at(e, t).map((n) => n[0] + n.slice(1).join(" ")).join(""), qe = (e, t, n) => {
|
|
1053
1056
|
const r = n || document, s = r.defaultView || /* istanbul ignore next */
|
|
1054
1057
|
window, i = Object.keys(lt), o = e instanceof s.SVGElement, a = o ? e.tagName : null;
|
|
1055
1058
|
if (a === "path")
|
|
@@ -1073,6 +1076,10 @@ e.slice(1).every(([t]) => t === t.toLowerCase()), lt = {
|
|
|
1073
1076
|
return e.forEach((s) => {
|
|
1074
1077
|
s[0] === "M" ? (n = [s], r += 1) : n = [...n, s], t[r] = n;
|
|
1075
1078
|
}), t;
|
|
1079
|
+
}, Gt = (e) => {
|
|
1080
|
+
let t = new v();
|
|
1081
|
+
const { origin: n } = e, [r, s] = n, { translate: i } = e, { rotate: o } = e, { skew: a } = e, { scale: l } = e;
|
|
1082
|
+
return Array.isArray(i) && i.length >= 2 && i.every((c) => !Number.isNaN(+c)) && i.some((c) => c !== 0) ? t = t.translate(...i) : typeof i == "number" && !Number.isNaN(i) && (t = t.translate(i)), (o || a || l) && (t = t.translate(r, s), Array.isArray(o) && o.length >= 2 && o.every((c) => !Number.isNaN(+c)) && o.some((c) => c !== 0) ? t = t.rotate(...o) : typeof o == "number" && !Number.isNaN(o) && (t = t.rotate(o)), Array.isArray(a) && a.length === 2 && a.every((c) => !Number.isNaN(+c)) && a.some((c) => c !== 0) ? (t = a[0] ? t.skewX(a[0]) : t, t = a[1] ? t.skewY(a[1]) : t) : typeof a == "number" && !Number.isNaN(a) && (t = t.skewX(a)), Array.isArray(l) && l.length >= 2 && l.every((c) => !Number.isNaN(+c)) && l.some((c) => c !== 1) ? t = t.scale(...l) : typeof l == "number" && !Number.isNaN(l) && (t = t.scale(l)), t = t.translate(-r, -s)), t;
|
|
1076
1083
|
}, Nt = (e) => {
|
|
1077
1084
|
if (_t(e))
|
|
1078
1085
|
return [...e];
|
|
@@ -1108,7 +1115,7 @@ e.slice(1).every(([t]) => t === t.toLowerCase()), lt = {
|
|
|
1108
1115
|
const u = m.length;
|
|
1109
1116
|
return c === "z" ? (n = s, r = i) : c === "h" ? n += m[1] : c === "v" ? r += m[1] : (n += m[u - 2], r += m[u - 1]), m;
|
|
1110
1117
|
});
|
|
1111
|
-
},
|
|
1118
|
+
}, Oe = (e, t, n, r) => {
|
|
1112
1119
|
const [s] = e, i = (p) => Math.round(p * 10 ** 4) / 10 ** 4, o = e.slice(1).map((p) => +p), a = t.slice(1).map((p) => +p), { x1: l, y1: c, x2: m, y2: u, x: y, y: g } = n;
|
|
1113
1120
|
let f = e;
|
|
1114
1121
|
const [h, x] = a.slice(-2);
|
|
@@ -1128,7 +1135,7 @@ e.slice(1).every(([t]) => t === t.toLowerCase()), lt = {
|
|
|
1128
1135
|
const n = Q(e), r = z(n), s = { ...ut }, i = [], o = n.length;
|
|
1129
1136
|
let a = "", l = "", c = 0, m = 0, u = 0, y = 0;
|
|
1130
1137
|
for (let h = 0; h < o; h += 1) {
|
|
1131
|
-
[a] = n[h], i[h] = a, h && (l = i[h - 1]), n[h] =
|
|
1138
|
+
[a] = n[h], i[h] = a, h && (l = i[h - 1]), n[h] = Oe(n[h], r[h], s, l);
|
|
1132
1139
|
const x = n[h], p = x.length;
|
|
1133
1140
|
switch (s.x1 = +x[p - 2], s.y1 = +x[p - 1], s.x2 = +x[p - 4] || s.x1, s.y2 = +x[p - 3] || s.y1, a) {
|
|
1134
1141
|
case "Z":
|
|
@@ -1147,7 +1154,7 @@ e.slice(1).every(([t]) => t === t.toLowerCase()), lt = {
|
|
|
1147
1154
|
}
|
|
1148
1155
|
const g = at(n, t), f = at(Nt(n), t);
|
|
1149
1156
|
return g.map((h, x) => x ? h.join("").length < f[x].join("").length ? h : f[x] : h);
|
|
1150
|
-
},
|
|
1157
|
+
}, Ee = (e) => {
|
|
1151
1158
|
const t = e.slice(1).map(
|
|
1152
1159
|
(n, r, s) => r ? [...s[r - 1].slice(-2), ...n.slice(1)] : [...e[0].slice(1), ...n.slice(1)]
|
|
1153
1160
|
).map((n) => n.map((r, s) => n[n.length - s - 2 * (1 - s % 2)])).reverse();
|
|
@@ -1204,10 +1211,6 @@ e.slice(1).every(([t]) => t === t.toLowerCase()), lt = {
|
|
|
1204
1211
|
return h;
|
|
1205
1212
|
});
|
|
1206
1213
|
return n ? r.reverse() : [r[0], ...r.slice(1).reverse()];
|
|
1207
|
-
}, Ee = (e) => {
|
|
1208
|
-
let t = new v();
|
|
1209
|
-
const { origin: n } = e, [r, s] = n, { translate: i } = e, { rotate: o } = e, { skew: a } = e, { scale: l } = e;
|
|
1210
|
-
return Array.isArray(i) && i.length >= 2 && i.every((c) => !Number.isNaN(+c)) && i.some((c) => c !== 0) ? t = t.translate(...i) : typeof i == "number" && !Number.isNaN(i) && (t = t.translate(i)), (o || a || l) && (t = t.translate(r, s), Array.isArray(o) && o.length >= 2 && o.every((c) => !Number.isNaN(+c)) && o.some((c) => c !== 0) ? t = t.rotate(...o) : typeof o == "number" && !Number.isNaN(o) && (t = t.rotate(o)), Array.isArray(a) && a.length === 2 && a.every((c) => !Number.isNaN(+c)) && a.some((c) => c !== 0) ? (t = a[0] ? t.skewX(a[0]) : t, t = a[1] ? t.skewY(a[1]) : t) : typeof a == "number" && !Number.isNaN(a) && (t = t.skewX(a)), Array.isArray(l) && l.length >= 2 && l.every((c) => !Number.isNaN(+c)) && l.some((c) => c !== 1) ? t = t.scale(...l) : typeof l == "number" && !Number.isNaN(l) && (t = t.scale(l)), t = t.translate(-r, -s)), t;
|
|
1211
1214
|
}, je = (e, t) => {
|
|
1212
1215
|
let n = v.Translate(...t.slice(0, -1));
|
|
1213
1216
|
return [, , , n.m44] = t, n = e.multiply(n), [n.m41, n.m42, n.m43, n.m44];
|
|
@@ -1228,7 +1231,7 @@ e.slice(1).every(([t]) => t === t.toLowerCase()), lt = {
|
|
|
1228
1231
|
const { origin: M } = mt;
|
|
1229
1232
|
Object.assign(t, { origin: M });
|
|
1230
1233
|
}
|
|
1231
|
-
const g =
|
|
1234
|
+
const g = Gt(t), { origin: f } = t, h = { ...ut };
|
|
1232
1235
|
let x = [], p = 0, b = "", A = [];
|
|
1233
1236
|
const d = [];
|
|
1234
1237
|
if (!g.isIdentity) {
|
|
@@ -1252,7 +1255,7 @@ e.slice(1).every(([t]) => t === t.toLowerCase()), lt = {
|
|
|
1252
1255
|
}
|
|
1253
1256
|
return [...m];
|
|
1254
1257
|
}, ze = (e) => {
|
|
1255
|
-
const n = e.slice(0, 2), r = e.slice(2, 4), s = e.slice(4, 6), i = e.slice(6, 8), o =
|
|
1258
|
+
const n = e.slice(0, 2), r = e.slice(2, 4), s = e.slice(4, 6), i = e.slice(6, 8), o = E(n, r, 0.5), a = E(r, s, 0.5), l = E(s, i, 0.5), c = E(o, a, 0.5), m = E(a, l, 0.5), u = E(c, m, 0.5);
|
|
1256
1259
|
return [
|
|
1257
1260
|
["C", ...o, ...c, ...u],
|
|
1258
1261
|
["C", ...m, ...l, ...i]
|
|
@@ -1434,7 +1437,7 @@ class w {
|
|
|
1434
1437
|
}
|
|
1435
1438
|
}
|
|
1436
1439
|
// bring main utilities to front
|
|
1437
|
-
N(w, "CSSMatrix", v), N(w, "getPathBBox", kt), N(w, "getPathArea", Vt), N(w, "getTotalLength", X), N(w, "getDrawDirection",
|
|
1440
|
+
N(w, "CSSMatrix", v), N(w, "getSVGMatrix", Gt), N(w, "getPathBBox", kt), N(w, "getPathArea", Vt), N(w, "getTotalLength", X), N(w, "getDrawDirection", Ne), N(w, "getPointAtLength", K), N(w, "pathLengthFactory", ft), N(w, "getPropertiesAtLength", Pt), N(w, "getPropertiesAtPoint", yt), N(w, "polygonLength", ae), N(w, "polygonArea", le), N(w, "getClosestPoint", we), N(w, "getSegmentOfPoint", ve), N(w, "getSegmentAtLength", Pe), N(w, "isPointInStroke", Ce), N(w, "isValidPath", Kt), N(w, "isPathArray", _), N(w, "isAbsoluteArray", wt), N(w, "isRelativeArray", _t), N(w, "isCurveArray", Jt), N(w, "isNormalizedArray", vt), N(w, "shapeToPath", qe), N(w, "shapeToPathArray", Wt), N(w, "parsePathString", Z), N(w, "roundPath", at), N(w, "splitPath", $t), N(w, "splitCubic", ze), N(w, "optimizePath", qt), N(w, "reverseCurve", Ee), N(w, "reversePath", it), N(w, "normalizePath", z), N(w, "transformPath", Et), N(w, "pathToAbsolute", Q), N(w, "pathToRelative", Nt), N(w, "pathToCurve", ct), N(w, "pathToString", At);
|
|
1438
1441
|
export {
|
|
1439
1442
|
w as default
|
|
1440
1443
|
};
|