svg-path-commander 0.1.20 → 0.1.21
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/svg-path-commander.esm.js +44 -23
- package/dist/svg-path-commander.esm.min.js +2 -2
- package/dist/svg-path-commander.js +47 -22
- package/dist/svg-path-commander.min.js +2 -2
- package/package.json +1 -1
- package/src/process/projection2d.js +2 -1
- package/src/svg-path-commander.js +28 -15
- package/src/util/getPathBBox.js +12 -5
- package/types/index.d.ts +1 -0
- package/types/more/svg.d.ts +78 -78
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* SVGPathCommander v0.1.
|
|
2
|
+
* SVGPathCommander v0.1.21 (http://thednp.github.io/svg-path-commander)
|
|
3
3
|
* Copyright 2021 © thednp
|
|
4
4
|
* Licensed under MIT (https://github.com/thednp/svg-path-commander/blob/master/LICENSE)
|
|
5
5
|
*/
|
|
@@ -2397,9 +2397,10 @@ function transformEllipse(m, rx, ry, ax) {
|
|
|
2397
2397
|
* @returns {[number, number]} the projected [x,y] coordinates
|
|
2398
2398
|
*/
|
|
2399
2399
|
function projection2d(m, point2D, origin) {
|
|
2400
|
+
const [px, py] = point2D;
|
|
2400
2401
|
const [originX, originY, originZ] = origin;
|
|
2401
2402
|
const point3D = m.transformPoint({
|
|
2402
|
-
x:
|
|
2403
|
+
x: px, y: py, z: 0, w: 1,
|
|
2403
2404
|
});
|
|
2404
2405
|
|
|
2405
2406
|
const relativePositionX = point3D.x - originX;
|
|
@@ -2617,7 +2618,7 @@ function getCubicSize(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {
|
|
|
2617
2618
|
function getPathBBox(path) {
|
|
2618
2619
|
if (!path) {
|
|
2619
2620
|
return {
|
|
2620
|
-
x: 0, y: 0, width: 0, height: 0, x2: 0, y2: 0, cx: 0, cy: 0,
|
|
2621
|
+
x: 0, y: 0, width: 0, height: 0, x2: 0, y2: 0, cx: 0, cy: 0, cz: 0,
|
|
2621
2622
|
};
|
|
2622
2623
|
}
|
|
2623
2624
|
const pathCurve = pathToCurve(path);
|
|
@@ -2651,16 +2652,22 @@ function getPathBBox(path) {
|
|
|
2651
2652
|
});
|
|
2652
2653
|
|
|
2653
2654
|
// @ts-ignore
|
|
2654
|
-
const xTop = Math.min.apply(0, X);
|
|
2655
|
+
// const xTop = Math.min.apply(0, X);
|
|
2656
|
+
const xTop = Math.min(...X);
|
|
2655
2657
|
// @ts-ignore
|
|
2656
|
-
const yTop = Math.min.apply(0, Y);
|
|
2658
|
+
// const yTop = Math.min.apply(0, Y);
|
|
2659
|
+
const yTop = Math.min(...Y);
|
|
2657
2660
|
// @ts-ignore
|
|
2658
|
-
const xBot = Math.max.apply(0, X);
|
|
2661
|
+
// const xBot = Math.max.apply(0, X);
|
|
2662
|
+
const xBot = Math.max(...X);
|
|
2659
2663
|
// @ts-ignore
|
|
2660
|
-
const yBot = Math.max.apply(0, Y);
|
|
2664
|
+
// const yBot = Math.max.apply(0, Y);
|
|
2665
|
+
const yBot = Math.max(...Y);
|
|
2661
2666
|
const width = xBot - xTop;
|
|
2662
2667
|
const height = yBot - yTop;
|
|
2663
2668
|
|
|
2669
|
+
// an estimted guess
|
|
2670
|
+
const cz = Math.max(width, height) + Math.min(width, height) / 2;
|
|
2664
2671
|
return {
|
|
2665
2672
|
width,
|
|
2666
2673
|
height,
|
|
@@ -2670,6 +2677,7 @@ function getPathBBox(path) {
|
|
|
2670
2677
|
y2: yBot,
|
|
2671
2678
|
cx: xTop + width / 2,
|
|
2672
2679
|
cy: yTop + height / 2,
|
|
2680
|
+
cz,
|
|
2673
2681
|
};
|
|
2674
2682
|
}
|
|
2675
2683
|
|
|
@@ -2697,9 +2705,15 @@ class SVGPathCommander {
|
|
|
2697
2705
|
*/
|
|
2698
2706
|
this.segments = parsePathString(pathValue);
|
|
2699
2707
|
const BBox = getPathBBox(this.segments);
|
|
2700
|
-
const {
|
|
2701
|
-
|
|
2702
|
-
|
|
2708
|
+
const {
|
|
2709
|
+
width,
|
|
2710
|
+
height,
|
|
2711
|
+
cx,
|
|
2712
|
+
cy,
|
|
2713
|
+
cz,
|
|
2714
|
+
} = BBox;
|
|
2715
|
+
|
|
2716
|
+
// set instance options.round
|
|
2703
2717
|
let { round, origin } = defaultOptions;
|
|
2704
2718
|
const { round: roundOption, origin: originOption } = instanceOptions;
|
|
2705
2719
|
|
|
@@ -2710,15 +2724,16 @@ class SVGPathCommander {
|
|
|
2710
2724
|
round = roundOption;
|
|
2711
2725
|
}
|
|
2712
2726
|
|
|
2713
|
-
|
|
2714
|
-
|
|
2715
|
-
|
|
2727
|
+
// set instance options.origin
|
|
2728
|
+
if (Array.isArray(originOption) && originOption.length >= 2) {
|
|
2729
|
+
const [originX, originY, originZ] = originOption.map(Number);
|
|
2730
|
+
origin = [
|
|
2731
|
+
!Number.isNaN(originX) ? originX : cx,
|
|
2732
|
+
!Number.isNaN(originY) ? originY : cy,
|
|
2733
|
+
originZ || cz,
|
|
2734
|
+
];
|
|
2716
2735
|
} else {
|
|
2717
|
-
|
|
2718
|
-
const { cx, cy } = BBox;
|
|
2719
|
-
// an estimted guess
|
|
2720
|
-
const originZ = Math.max(width, height) + Math.min(width, height) / 2;
|
|
2721
|
-
origin = [cx, cy, originZ];
|
|
2736
|
+
origin = [cx, cy, cz];
|
|
2722
2737
|
}
|
|
2723
2738
|
|
|
2724
2739
|
/**
|
|
@@ -2726,9 +2741,6 @@ class SVGPathCommander {
|
|
|
2726
2741
|
* @default 4
|
|
2727
2742
|
*/
|
|
2728
2743
|
this.round = round;
|
|
2729
|
-
/**
|
|
2730
|
-
* @default [0,0]
|
|
2731
|
-
*/
|
|
2732
2744
|
this.origin = origin;
|
|
2733
2745
|
|
|
2734
2746
|
return this;
|
|
@@ -2844,7 +2856,16 @@ class SVGPathCommander {
|
|
|
2844
2856
|
|
|
2845
2857
|
// if origin is not specified
|
|
2846
2858
|
// it's important that we have one
|
|
2847
|
-
|
|
2859
|
+
const { origin } = transform;
|
|
2860
|
+
if (origin && origin.length >= 2) {
|
|
2861
|
+
const [originX, originY, originZ] = origin.map(Number);
|
|
2862
|
+
const [cx, cy, cz] = this.origin;
|
|
2863
|
+
transform.origin = [
|
|
2864
|
+
!Number.isNaN(originX) ? originX : cx,
|
|
2865
|
+
!Number.isNaN(originY) ? originY : cy,
|
|
2866
|
+
originZ || cz,
|
|
2867
|
+
];
|
|
2868
|
+
} else {
|
|
2848
2869
|
// @ts-ignore
|
|
2849
2870
|
transform.origin = { ...this.origin };
|
|
2850
2871
|
}
|
|
@@ -3314,7 +3335,7 @@ const Util = {
|
|
|
3314
3335
|
options: defaultOptions,
|
|
3315
3336
|
};
|
|
3316
3337
|
|
|
3317
|
-
var version = "0.1.
|
|
3338
|
+
var version = "0.1.21";
|
|
3318
3339
|
|
|
3319
3340
|
// @ts-ignore
|
|
3320
3341
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// SVGPathCommander v0.1.
|
|
2
|
-
const t={origin:[0,0,0],round:4},e={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0};function r(t){let r=t.pathValue[t.segmentStart],n=r.toLowerCase(),{data:s}=t;for("m"===n&&s.length>2&&(t.segments.push([r,s[0],s[1]]),s=s.slice(2),n="l",r="m"===r?"l":"L");s.length>=e[n]&&(t.segments.push([r,...s.splice(0,e[n])]),e[n]););}function n(t){const{index:e}=t,r=t.pathValue.charCodeAt(e);return 48===r?(t.param=0,void(t.index+=1)):49===r?(t.param=1,void(t.index+=1)):void(t.err=`Invalid path value: invalid Arc flag "${r}", expecting 0 or 1 at index ${e}`)}function s(t){return t>=48&&t<=57}function a(t){const{max:e,pathValue:r,index:n}=t;let a,i=n,m=!1,o=!1,c=!1,l=!1;if(i>=e)t.err=`Invalid path value at ${i}: missing param ${r[i]}`;else if(a=r.charCodeAt(i),43!==a&&45!==a||(i+=1,a=i<e?r.charCodeAt(i):0),s(a)||46===a){if(46!==a){if(m=48===a,i+=1,a=i<e?r.charCodeAt(i):0,m&&i<e&&a&&s(a))return void(t.err=`Invalid path value at index ${n}: ${r[n]} illegal number`);for(;i<e&&s(r.charCodeAt(i));)i+=1,o=!0;a=i<e?r.charCodeAt(i):0}if(46===a){for(l=!0,i+=1;s(r.charCodeAt(i));)i+=1,c=!0;a=i<e?r.charCodeAt(i):0}if(101===a||69===a){if(l&&!o&&!c)return void(t.err=`Invalid path value at index ${i}: ${r[i]} invalid float exponent`);if(i+=1,a=i<e?r.charCodeAt(i):0,43!==a&&45!==a||(i+=1),!(i<e&&s(r.charCodeAt(i))))return void(t.err=`Invalid path value at index ${i}: ${r[i]} invalid float exponent`);for(;i<e&&s(r.charCodeAt(i));)i+=1}t.index=i,t.param=+t.pathValue.slice(n,i)}else t.err=`Invalid path value at index ${i}: ${r[i]} is not a number`}function i(t){const{pathValue:e,max:r}=t;for(;t.index<r&&(10===(n=e.charCodeAt(t.index))||13===n||8232===n||8233===n||32===n||9===n||11===n||12===n||160===n||n>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(n)>=0);)t.index+=1;var n}function m(t){return t>=48&&t<=57||43===t||45===t||46===t}function o(t){const{max:s,pathValue:o,index:c}=t,l=o.charCodeAt(c),u=e[o[c].toLowerCase()];if(t.segmentStart=c,function(t){switch(32|t){case 109:case 122:case 108:case 104:case 118:case 99:case 115:case 113:case 116:case 97:return!0;default:return!1}}(l))if(t.index+=1,i(t),t.data=[],u){for(;;){for(let e=u;e>0;e-=1){if(97!=(32|l)||3!==e&&4!==e?a(t):n(t),t.err.length)return;t.data.push(t.param),i(t),t.index<s&&44===o.charCodeAt(t.index)&&(t.index+=1,i(t))}if(t.index>=t.max)break;if(!m(o.charCodeAt(t.index)))break}r(t)}else r(t);else t.err=`Invalid path value: ${o[c]} not a path command`}function c(t){return t.map(t=>Array.isArray(t)?[...t]:t)}function l(t){this.segments=[],this.pathValue=t,this.max=t.length,this.index=0,this.param=0,this.segmentStart=0,this.data=[],this.err=""}function u(t){return Array.isArray(t)&&t.every(t=>{const r=t[0].toLowerCase();return e[r]===t.length-1&&"achlmqstvz".includes(r)})}function h(t){if(Array.isArray(t)&&u(t))return c(t);const e=new l(t);for(i(e);e.index<e.max&&!e.err.length;)o(e);return e.err.length?e.segments=[]:e.segments.length&&("mM".includes(e.segments[0][0])?e.segments[0][0]="M":(e.err="Invalid path value: missing M/m",e.segments=[])),e.segments}function f(t){return u(t)&&t.every(t=>t[0]===t[0].toUpperCase())}function y(t){if(Array.isArray(t)&&f(t))return c(t);const e=h(t);let r=0,n=0,s=0,a=0;return e.map(t=>{const e=t.slice(1).map(Number),[i]=t,m=i.toUpperCase();if("M"===i)return[r,n]=e,s=r,a=n,["M",r,n];let o=[];if(i!==m)switch(m){case"A":o=[m,e[0],e[1],e[2],e[3],e[4],e[5]+r,e[6]+n];break;case"V":o=[m,e[0]+n];break;case"H":o=[m,e[0]+r];break;default:o=[m,...e.map((t,e)=>t+(e%2?n:r))]}else o=[m,...e];const c=o.length;switch(m){case"Z":r=s,n=a;break;case"H":[,r]=o;break;case"V":[,n]=o;break;default:r=o[c-2],n=o[c-1],"M"===m&&(s=r,a=n)}return o})}function p(t){return u(t)&&t.slice(1).every(t=>t[0]===t[0].toLowerCase())}function x(t){if(p(t))return c(t);const e=h(t);let r=0,n=0,s=0,a=0;return e.map(t=>{const e=t.slice(1).map(Number),[i]=t,m=i.toLowerCase();if("M"===i)return[r,n]=e,s=r,a=n,["M",r,n];let o=[];if(i!==m)switch(m){case"a":o=[m,e[0],e[1],e[2],e[3],e[4],e[5]-r,e[6]-n];break;case"v":o=[m,e[0]-n];break;case"h":o=[m,e[0]-r];break;default:o=[m,...e.map((t,e)=>t-(e%2?n:r))],"m"===m&&([r,n]=e,s=r,a=n)}else"m"===i&&(s=e[0]+r,a=e[1]+n),o=[m,...e];const c=o.length;switch(m){case"z":r=s,n=a;break;case"h":r+=o[1];break;case"v":n+=o[1];break;default:r+=o[c-2],n+=o[c-1]}return o})}function d(t,e,r){if(t[r].length>7){t[r].shift();const n=t[r];let s=r;for(;n.length;)e[r]="A",t.splice(s+=1,0,["C",...n.splice(0,6)]);t.splice(r,1)}}function g(t,e,r){const[n]=t,{x1:s,y1:a,x2:i,y2:m}=e,o=t.slice(1).map(Number);let c=t;if("TQ".includes(n)||(e.qx=null,e.qy=null),"H"===n)c=["L",t[1],a];else if("V"===n)c=["L",s,t[1]];else if("S"===n){const{x1:t,y1:n}=function(t,e,r,n,s){return"CS".includes(s)?{x1:2*t-r,y1:2*e-n}:{x1:t,y1:e}}(s,a,i,m,r);e.x1=t,e.y1=n,c=["C",t,n,...o]}else if("T"===n){const{qx:t,qy:n}=function(t,e,r,n,s){return"QT".includes(s)?{qx:2*t-r,qy:2*e-n}:{qx:t,qy:e}}(s,a,e.qx,e.qy,r);e.qx=t,e.qy=n,c=["Q",t,n,...o]}else if("Q"===n){const[t,r]=o;e.qx=t,e.qy=r}return c}function M(t){return f(t)&&t.every(t=>"ACLMQZ".includes(t[0]))}const b={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null};function v(t){if(M(t))return c(t);const e=y(t),r={...b},n=[],s=e.length;let a="",i="";for(let t=0;t<s;t+=1){[a]=e[t],n[t]=a,t&&(i=n[t-1]),e[t]=g(e[t],r,i);const s=e[t],m=s.length;r.x1=+s[m-2],r.y1=+s[m-1],r.x2=+s[m-4]||r.x1,r.y2=+s[m-3]||r.y1}return e}function w(t){const e=h(t),r=v(e),{length:n}=e,s="Z"===r.slice(-1)[0][0],a=s?n-2:n-1,[i,m]=r[0].slice(1),[o,c]=r[a].slice(-2);return s&&i===o&&m===c?e.slice(0,-1):e}function A(t){return u(t)&&t.every(t=>"MC".includes(t[0]))}function N(t,e,r){return{x:t*Math.cos(r)-e*Math.sin(r),y:t*Math.sin(r)+e*Math.cos(r)}}function C(t,e,r,n,s,a,i,m,o,c){let l=t,u=e,h=r,f=n,y=m,p=o;const x=120*Math.PI/180,d=Math.PI/180*(+s||0);let g,M,b,v,w,A=[];if(c)[M,b,v,w]=c;else{g=N(l,u,-d),l=g.x,u=g.y,g=N(y,p,-d),y=g.x,p=g.y;const t=(l-y)/2,e=(u-p)/2;let r=t*t/(h*h)+e*e/(f*f);r>1&&(r=Math.sqrt(r),h*=r,f*=r);const n=h*h,s=f*f,m=(a===i?-1:1)*Math.sqrt(Math.abs((n*s-n*e*e-s*t*t)/(n*e*e+s*t*t)));v=m*h*e/f+(l+y)/2,w=m*-f*t/h+(u+p)/2,M=(Math.asin((u-w)/f)*10**9>>0)/10**9,b=(Math.asin((p-w)/f)*10**9>>0)/10**9,M=l<v?Math.PI-M:M,b=y<v?Math.PI-b:b,M<0&&(M=2*Math.PI+M),b<0&&(b=2*Math.PI+b),i&&M>b&&(M-=2*Math.PI),!i&&b>M&&(b-=2*Math.PI)}let k=b-M;if(Math.abs(k)>x){const t=b,e=y,r=p;b=M+x*(i&&b>M?1:-1),y=v+h*Math.cos(b),p=w+f*Math.sin(b),A=C(y,p,h,f,s,0,i,e,r,[b,t,v,w])}k=b-M;const S=Math.cos(M),q=Math.sin(M),P=Math.cos(b),I=Math.sin(b),T=Math.tan(k/4),V=4/3*h*T,$=4/3*f*T,j=[l,u],z=[l+V*q,u-$*S],E=[y+V*I,p-$*P],L=[y,p];if(z[0]=2*j[0]-z[0],z[1]=2*j[1]-z[1],c)return[...z,...E,...L,...A];A=[...z,...E,...L,...A];const O=[];for(let t=0,e=A.length;t<e;t+=1)O[t]=t%2?N(A[t-1],A[t],d).y:N(A[t],A[t+1],d).x;return O}function k(t,e,r,n,s,a){return[1/3*t+2/3*r,1/3*e+2/3*n,1/3*s+2/3*r,1/3*a+2/3*n,s,a]}function S(t,e,r,n,s,a,i,m,o){const c=1-o;return{x:c**3*t+c*c*3*o*r+3*c*o*o*s+o**3*i,y:c**3*e+c*c*3*o*n+3*c*o*o*a+o**3*m}}function q(t,e,r){const[n,s]=t,[a,i]=e;return[n+(a-n)*r,s+(i-s)*r]}function P(t,e,r,n){const s=.5,a=[t,e],i=[r,n],m=q(a,i,s),o=q(i,m,s),c=q(m,o,s),l=q(o,c,s),u=q(c,l,s),h=S(...[...a,...m,...c,...u,s]),f=S(...[...u,...l,...o,...i,0]);return[h.x,h.y,f.x,f.y,r,n]}function I(t,e){const[r]=t,n=t.slice(1).map(t=>+t),[s,a]=n;let i;const{x1:m,y1:o,x:c,y:l}=e;switch("TQ".includes(r)||(e.qx=null,e.qy=null),r){case"M":return e.x=s,e.y=a,t;case"A":return i=[m,o,...n],["C",...C(...i)];case"Q":return e.qx=s,e.qy=a,i=[m,o,...n],["C",...k(...i)];case"L":return["C",...P(m,o,s,a)];case"Z":return["C",...P(m,o,c,l)]}return t}function T(t){if(A(t))return c(t);const e=w(v(t)),r={...b},n=[];let s="",a=e.length;for(let t=0;t<a;t+=1){[s]=e[t],n[t]=s,e[t]=I(e[t],r),d(e,n,t),a=e.length;const i=e[t],m=i.length;r.x1=+i[m-2],r.y1=+i[m-1],r.x2=+i[m-4]||r.x1,r.y2=+i[m-3]||r.y1}return e}function V(e,r){let{round:n}=t;if(!1===r||!1===n)return c(e);n=r>=1?r:n;const s=n>=1?10**n:1;return e.map(t=>{const e=t.slice(1).map(Number).map(t=>t%1==0?t:Math.round(t*s)/s);return[t[0],...e]})}function $(t,e){return V(t,e).map(t=>t[0]+t.slice(1).join(" ")).join("")}function j(t){const e=y(t),r="Z"===e.slice(-1)[0][0],n=v(e).map((t,r)=>{const[n,s]=t.slice(-2).map(Number);return{seg:e[r],n:t,c:e[r][0],x:n,y:s}}).map((t,e,n)=>{const s=t.seg,a=t.n,i=e&&n[e-1],m=n[e+1]&&n[e+1],o=t.c,c=n.length,l=e?n[e-1].x:n[c-1].x,u=e?n[e-1].y:n[c-1].y;let h=[];switch(o){case"M":h=r?["Z"]:[o,l,u];break;case"A":h=[o,...s.slice(1,-3),1===s[5]?0:1,l,u];break;case"C":h=m&&"S"===m.c?["S",s[1],s[2],l,u]:[o,s[3],s[4],s[1],s[2],l,u];break;case"S":h=i&&"CS".includes(i.c)&&(!m||m&&"S"!==m.c)?["C",a[3],a[4],a[1],a[2],l,u]:[o,a[1],a[2],l,u];break;case"Q":h=m&&"T"===m.c?["T",l,u]:[o,...s.slice(1,-2),l,u];break;case"T":h=i&&"QT".includes(i.c)&&(!m||m&&"T"!==m.c)?["Q",a[1],a[2],l,u]:[o,l,u];break;case"Z":h=["M",l,u];break;case"H":h=[o,l];break;case"V":h=[o,u];break;default:h=[o,...s.slice(1,-2),l,u]}return h});return r?n.reverse():[n[0],...n.slice(1).reverse()]}function z(t){return $(y(t),0).replace(/(m|M)/g,"|$1").split("|").map(t=>t.trim()).filter(t=>t)}function E(t,e,r,n){const[s]=t,a=t=>Math.round(1e4*t)/1e4,i=t.slice(1).map(t=>+t),m=e.slice(1).map(t=>+t),{x1:o,y1:c,x2:l,y2:u,x:h,y:f}=r;let y=t;const[p,x]=m.slice(-2);if("TQ".includes(s)||(r.qx=null,r.qy=null),["V","H","S","T","Z"].includes(s))y=[s,...i];else if("L"===s)a(h)===a(p)?y=["V",x]:a(f)===a(x)&&(y=["H",p]);else if("C"===s){const[t,e]=m;"CS".includes(n)&&a(t)===a(2*o-l)&&a(e)===a(2*c-u)&&(y=["S",...m.slice(-4)]),r.x1=t,r.y1=e}else if("Q"===s){const[t,e]=m;r.qx=t,r.qy=e,"QT".includes(n)&&a(t)===a(2*o-l)&&a(e)===a(2*c-u)&&(y=["T",...m.slice(-2)])}return y}function L(t,e){const r=y(t),n=v(r),s={...b},a=[],i=r.length;let m="",o="",c=0,l=0,u=0,h=0;for(let t=0;t<i;t+=1){[m]=r[t],a[t]=m,t&&(o=a[t-1]),r[t]=E(r[t],n[t],s,o);const e=r[t],i=e.length;switch(s.x1=+e[i-2],s.y1=+e[i-1],s.x2=+e[i-4]||s.x1,s.y2=+e[i-3]||s.y1,m){case"Z":c=u,l=h;break;case"H":[,c]=e;break;case"V":[,l]=e;break;default:[c,l]=e.slice(-2).map(Number),"M"===m&&(u=c,h=l)}s.x=c,s.y=l}const f=V(r,e),p=V(x(r),e);return f.map((t,e)=>e?t.join("").length<p[e].join("").length?t:p[e]:t)}function O(t){const e=new J,r=Array.from(t);if(!r.every(t=>!Number.isNaN(t)))throw TypeError(`CSSMatrix: "${t}" must only have numbers.`);if(16===r.length){const[t,n,s,a,i,m,o,c,l,u,h,f,y,p,x,d]=r;e.m11=t,e.a=t,e.m21=i,e.c=i,e.m31=l,e.m41=y,e.e=y,e.m12=n,e.b=n,e.m22=m,e.d=m,e.m32=u,e.m42=p,e.f=p,e.m13=s,e.m23=o,e.m33=h,e.m43=x,e.m14=a,e.m24=c,e.m34=f,e.m44=d}else{if(6!==r.length)throw new TypeError("CSSMatrix: expecting an Array of 6/16 values.");{const[t,n,s,a,i,m]=r;e.m11=t,e.a=t,e.m12=n,e.b=n,e.m21=s,e.c=s,e.m22=a,e.d=a,e.m41=i,e.e=i,e.m42=m,e.f=m}}return e}function Q(t){const e=Object.keys(new J);if("object"==typeof t&&e.every(e=>e in t))return O([t.m11,t.m12,t.m13,t.m14,t.m21,t.m22,t.m23,t.m24,t.m31,t.m32,t.m33,t.m34,t.m41,t.m42,t.m43,t.m44]);throw TypeError(`CSSMatrix: "${t}" is not a DOMMatrix / CSSMatrix / JSON compatible object.`)}function Z(t){if("string"!=typeof t)throw TypeError(`CSSMatrix: "${t}" is not a string.`);const e=String(t).replace(/\s/g,"");let r=new J;const n=`CSSMatrix: invalid transform string "${t}"`;return e.split(")").filter(t=>t).forEach(t=>{const[e,s]=t.split("(");if(!s)throw TypeError(n);const a=s.split(",").map(t=>t.includes("rad")?parseFloat(t)*(180/Math.PI):parseFloat(t)),[i,m,o,c]=a,l=[i,m,o],u=[i,m,o,c];if("perspective"===e&&i&&[m,o].every(t=>void 0===t))r.m34=-1/i;else if(e.includes("matrix")&&[6,16].includes(a.length)&&a.every(t=>!Number.isNaN(+t))){const t=a.map(t=>Math.abs(t)<1e-6?0:t);r=r.multiply(O(t))}else if("translate3d"===e&&l.every(t=>!Number.isNaN(+t)))r=r.translate(i,m,o);else if("translate"===e&&i&&void 0===o)r=r.translate(i,m||0,0);else if("rotate3d"===e&&u.every(t=>!Number.isNaN(+t))&&c)r=r.rotateAxisAngle(i,m,o,c);else if("rotate"===e&&i&&[m,o].every(t=>void 0===t))r=r.rotate(0,0,i);else if("scale3d"===e&&l.every(t=>!Number.isNaN(+t))&&l.some(t=>1!==t))r=r.scale(i,m,o);else if("scale"!==e||Number.isNaN(i)||1===i||void 0!==o)if("skew"===e&&i&&void 0===o)r=r.skewX(i),r=m?r.skewY(m):r;else{if(!(/[XYZ]/.test(e)&&i&&[m,o].every(t=>void 0===t)&&["translate","rotate","scale","skew"].some(t=>e.includes(t))))throw TypeError(n);if(["skewX","skewY"].includes(e))r=r[e](i);else{const t=e.replace(/[XYZ]/,""),n=e.replace(t,""),s=["X","Y","Z"].indexOf(n),a=[0===s?i:0,1===s?i:0,2===s?i:0];r=r[t](...a)}}else{const t=Number.isNaN(+m)?i:m;r=r.scale(i,t,1)}}),r}function D(t,e,r){const n=new J;return n.m41=t,n.e=t,n.m42=e,n.f=e,n.m43=r,n}function X(t,e,r){const n=new J,s=Math.PI/180,a=t*s,i=e*s,m=r*s,o=Math.cos(a),c=-Math.sin(a),l=Math.cos(i),u=-Math.sin(i),h=Math.cos(m),f=-Math.sin(m),y=l*h,p=-l*f;n.m11=y,n.a=y,n.m12=p,n.b=p,n.m13=u;const x=c*u*h+o*f;n.m21=x,n.c=x;const d=o*h-c*u*f;return n.m22=d,n.d=d,n.m23=-c*l,n.m31=c*f-o*u*h,n.m32=c*h+o*u*f,n.m33=o*l,n}function H(t,e,r,n){const s=new J,a=n*(Math.PI/360),i=Math.sin(a),m=Math.cos(a),o=i*i,c=Math.sqrt(t*t+e*e+r*r);let l=t,u=e,h=r;0===c?(l=0,u=0,h=1):(l/=c,u/=c,h/=c);const f=l*l,y=u*u,p=h*h,x=1-2*(y+p)*o;s.m11=x,s.a=x;const d=2*(l*u*o+h*i*m);s.m12=d,s.b=d,s.m13=2*(l*h*o-u*i*m);const g=2*(u*l*o-h*i*m);s.m21=g,s.c=g;const M=1-2*(p+f)*o;return s.m22=M,s.d=M,s.m23=2*(u*h*o+l*i*m),s.m31=2*(h*l*o+u*i*m),s.m32=2*(h*u*o-l*i*m),s.m33=1-2*(f+y)*o,s}function Y(t,e,r){const n=new J;return n.m11=t,n.a=t,n.m22=e,n.d=e,n.m33=r,n}function R(t){const e=new J,r=t*Math.PI/180,n=Math.tan(r);return e.m21=n,e.c=n,e}function F(t){const e=new J,r=t*Math.PI/180,n=Math.tan(r);return e.m12=n,e.b=n,e}function B(t,e){return O([e.m11*t.m11+e.m12*t.m21+e.m13*t.m31+e.m14*t.m41,e.m11*t.m12+e.m12*t.m22+e.m13*t.m32+e.m14*t.m42,e.m11*t.m13+e.m12*t.m23+e.m13*t.m33+e.m14*t.m43,e.m11*t.m14+e.m12*t.m24+e.m13*t.m34+e.m14*t.m44,e.m21*t.m11+e.m22*t.m21+e.m23*t.m31+e.m24*t.m41,e.m21*t.m12+e.m22*t.m22+e.m23*t.m32+e.m24*t.m42,e.m21*t.m13+e.m22*t.m23+e.m23*t.m33+e.m24*t.m43,e.m21*t.m14+e.m22*t.m24+e.m23*t.m34+e.m24*t.m44,e.m31*t.m11+e.m32*t.m21+e.m33*t.m31+e.m34*t.m41,e.m31*t.m12+e.m32*t.m22+e.m33*t.m32+e.m34*t.m42,e.m31*t.m13+e.m32*t.m23+e.m33*t.m33+e.m34*t.m43,e.m31*t.m14+e.m32*t.m24+e.m33*t.m34+e.m34*t.m44,e.m41*t.m11+e.m42*t.m21+e.m43*t.m31+e.m44*t.m41,e.m41*t.m12+e.m42*t.m22+e.m43*t.m32+e.m44*t.m42,e.m41*t.m13+e.m42*t.m23+e.m43*t.m33+e.m44*t.m43,e.m41*t.m14+e.m42*t.m24+e.m43*t.m34+e.m44*t.m44])}class J{constructor(...t){const e=this;if(e.a=1,e.b=0,e.c=0,e.d=1,e.e=0,e.f=0,e.m11=1,e.m12=0,e.m13=0,e.m14=0,e.m21=0,e.m22=1,e.m23=0,e.m24=0,e.m31=0,e.m32=0,e.m33=1,e.m34=0,e.m41=0,e.m42=0,e.m43=0,e.m44=1,t&&t.length){const r=[16,6].some(e=>e===t.length)?t:t[0];return e.setMatrixValue(r)}return e}set isIdentity(t){this.isIdentity=t}get isIdentity(){const t=this;return 1===t.m11&&0===t.m12&&0===t.m13&&0===t.m14&&0===t.m21&&1===t.m22&&0===t.m23&&0===t.m24&&0===t.m31&&0===t.m32&&1===t.m33&&0===t.m34&&0===t.m41&&0===t.m42&&0===t.m43&&1===t.m44}get is2D(){const t=this;return 0===t.m31&&0===t.m32&&1===t.m33&&0===t.m34&&0===t.m43&&1===t.m44}set is2D(t){this.is2D=t}setMatrixValue(t){return[Array,Float64Array,Float32Array].some(e=>t instanceof e)?O(t):"string"==typeof t&&t.length&&"none"!==t?Z(t):"object"==typeof t?Q(t):this}toArray(){const t=this;let e;return e=t.is2D?[t.a,t.b,t.c,t.d,t.e,t.f]:[t.m11,t.m12,t.m13,t.m14,t.m21,t.m22,t.m23,t.m24,t.m31,t.m32,t.m33,t.m34,t.m41,t.m42,t.m43,t.m44],e.map(t=>Math.abs(t)<1e-6?0:(t*10**6>>0)/10**6)}toString(){const t=this.toArray();return`${this.is2D?"matrix":"matrix3d"}(${t})`}toJSON(){const{is2D:t,isIdentity:e}=this;return{...this,is2D:t,isIdentity:e}}multiply(t){return B(this,t)}translate(t,e,r){let n=e,s=r;return void 0===s&&(s=0),void 0===n&&(n=0),B(this,D(t,n,s))}scale(t,e,r){let n=e,s=r;return void 0===n&&(n=t),void 0===s&&(s=1),B(this,Y(t,n,s))}rotate(t,e,r){let n=t,s=e,a=r;return void 0===s&&(s=0),void 0===a&&(a=n,n=0),B(this,X(n,s,a))}rotateAxisAngle(t,e,r,n){if([t,e,r,n].some(t=>Number.isNaN(t)))throw new TypeError("CSSMatrix: expecting 4 values");return B(this,H(t,e,r,n))}skewX(t){return B(this,R(t))}skewY(t){return B(this,F(t))}transformPoint(t){let e=D(t.x,t.y,t.z);return e.m44=t.w||1,e=this.multiply(e),{x:e.m41,y:e.m42,z:e.m43,w:e.m44}}transform(t){const e=this,r=e.m11*t.x+e.m12*t.y+e.m13*t.z+e.m14*t.w,n=e.m21*t.x+e.m22*t.y+e.m23*t.z+e.m24*t.w,s=e.m31*t.x+e.m32*t.y+e.m33*t.z+e.m34*t.w,a=e.m41*t.x+e.m42*t.y+e.m43*t.z+e.m44*t.w;return{x:r/a,y:n/a,z:s/a,w:a}}}Object.assign(J,{Translate:D,Rotate:X,RotateAxisAngle:H,Scale:Y,SkewX:R,SkewY:F,Multiply:B,fromArray:O,fromMatrix:Q,fromString:Z});function U(t,e,r){const[n,s,a]=r,i=t.transformPoint({x:e[0],y:e[1],z:0,w:1}),m=i.x-n,o=i.y-s,c=i.z-a;return[m*(Math.abs(a)/Math.abs(c))+n,o*(Math.abs(a)/Math.abs(c))+s]}function G(t,e){let r,n,s,a,i,m,o,l=0,u=0;const h=y(t),f=v(h),p=function(t){let e=new J;const{origin:r}=t,[n,s]=r,{translate:a}=t,{rotate:i}=t,{skew:m}=t,{scale:o}=t;return Array.isArray(a)&&a.every(t=>!Number.isNaN(+t))&&a.some(t=>0!==t)?e=e.translate(a[0]||0,a[1]||0,a[2]||0):"number"!=typeof a||Number.isNaN(+a)||(e=e.translate(a||0,0,0)),(i||m||o)&&(e=e.translate(n,s),Array.isArray(i)&&i.every(t=>!Number.isNaN(+t))&&i.some(t=>0!==t)?e=e.rotate(i[0],i[1],i[2]):"number"!=typeof i||Number.isNaN(+i)||(e=e.rotate(0,0,i)),Array.isArray(m)&&m.every(t=>!Number.isNaN(+t))&&m.some(t=>0!==t)?(e=m[0]?e.skewX(m[0]):e,e=m[1]?e.skewY(m[1]):e):"number"!=typeof m||Number.isNaN(+m)||(e=e.skewX(m||0)),Array.isArray(o)&&o.every(t=>!Number.isNaN(+t))&&o.some(t=>1!==t)?e=e.scale(o[0],o[1],o[2]):"number"!=typeof o||Number.isNaN(+o)||(e=e.scale(o||1,o||1,o||1)),e=e.translate(-n,-s)),e}(e),x=Object.keys(e),{origin:g}=e,{a:M,b:w,c:A,d:N,e:C,f:k}=p,S=[M,w,A,N,C,k],q={...b};let P=[],T=0,V="",$=[];const j=[];if(!p.isIdentity){for(r=0,s=h.length;r<s;r+=1){P=h[r],h[r]&&([V]=P),j[r]=V,"A"!==V||p.is2D&&["skewX","skewY"].find(t=>x.includes(t))||(P=I(f[r],q),h[r]=I(f[r],q),d(h,j,r),f[r]=I(f[r],q),d(f,j,r),s=Math.max(h.length,f.length)),P=f[r],T=P.length,q.x1=+P[T-2],q.y1=+P[T-1],q.x2=+P[T-4]||q.x1,q.y2=+P[T-3]||q.y1;const t={s:h[r],c:h[r][0],x:q.x1,y:q.y1};$=[...$,t]}return $.map(t=>{switch(V=t.c,P=t.s,V){case"A":return o=function(t,e,r,n){const s=Math.cos(n*Math.PI/180),a=Math.sin(n*Math.PI/180),i=[e*(t[0]*s+t[2]*a),e*(t[1]*s+t[3]*a),r*(-t[0]*a+t[2]*s),r*(-t[1]*a+t[3]*s)],m=i[0]*i[0]+i[2]*i[2],o=i[1]*i[1]+i[3]*i[3];let c=((i[0]-i[3])*(i[0]-i[3])+(i[2]+i[1])*(i[2]+i[1]))*((i[0]+i[3])*(i[0]+i[3])+(i[2]-i[1])*(i[2]-i[1]));const l=(m+o)/2;if(c<1e-9*l){const t=Math.sqrt(l);return{rx:t,ry:t,ax:0}}const u=i[0]*i[1]+i[2]*i[3];c=Math.sqrt(c);const h=l+c/2,f=l-c/2;let y,p,x=Math.abs(u)<1e-9&&Math.abs(h-o)<1e-9?90:Math.atan(Math.abs(u)>Math.abs(h-o)?(h-m)/u:u/(h-o)*180)/Math.PI;return x>=0?(y=Math.sqrt(h),p=Math.sqrt(f)):(x+=90,y=Math.sqrt(f),p=Math.sqrt(h)),{rx:y,ry:p,ax:x}}(S,P[1],P[2],P[3]),S[0]*S[3]-S[1]*S[2]<0&&(P[5]=P[5]?0:1),[i,m]=U(p,[+P[6],+P[7]],g),P=l===i&&u===m||o.rx<1e-9*o.ry||o.ry<1e-9*o.rx?["L",i,m]:[V,o.rx,o.ry,o.ax,P[4],P[5],i,m],l=i,u=m,P;case"L":case"H":case"V":return[i,m]=U(p,[t.x,t.y],g),l!==i&&u!==m?P=["L",i,m]:u===m?P=["H",i]:l===i&&(P=["V",m]),l=i,u=m,P;default:for(n=1,a=P.length;n<a;n+=2)[l,u]=U(p,[+P[n],+P[n+1]],g),P[n]=l,P[n+1]=u;return P}})}return c(h)}function K(t){if(!t)return{x:0,y:0,width:0,height:0,x2:0,y2:0,cx:0,cy:0};const e=T(t);let r=0,n=0,s=[],a=[];e.forEach(t=>{const[e,i]=t.slice(-2).map(Number);if("M"===t[0])r=e,n=i,s.push(e),a.push(i);else{const m=function(t,e,r,n,s,a,i,m){let o=s-2*r+t-(i-2*s+r),c=2*(r-t)-2*(s-r),l=t-r,u=(-c+Math.sqrt(c*c-4*o*l))/2/o,h=(-c-Math.sqrt(c*c-4*o*l))/2/o;const f=[e,m],y=[t,i];let p;return Math.abs(u)>"1e12"&&(u=.5),Math.abs(h)>"1e12"&&(h=.5),u>0&&u<1&&(p=S(t,e,r,n,s,a,i,m,u),y.push(p.x),f.push(p.y)),h>0&&h<1&&(p=S(t,e,r,n,s,a,i,m,h),y.push(p.x),f.push(p.y)),o=a-2*n+e-(m-2*a+n),c=2*(n-e)-2*(a-n),l=e-n,u=(-c+Math.sqrt(c*c-4*o*l))/2/o,h=(-c-Math.sqrt(c*c-4*o*l))/2/o,Math.abs(u)>"1e12"&&(u=.5),Math.abs(h)>"1e12"&&(h=.5),u>0&&u<1&&(p=S(t,e,r,n,s,a,i,m,u),y.push(p.x),f.push(p.y)),h>0&&h<1&&(p=S(t,e,r,n,s,a,i,m,h),y.push(p.x),f.push(p.y)),{min:{x:Math.min.apply(0,y),y:Math.min.apply(0,f)},max:{x:Math.max.apply(0,y),y:Math.max.apply(0,f)}}}(...[r,n,...t.slice(1)]);s=[...s,m.min.x,m.max.x],a=[...a,m.min.y,m.max.y],r=e,n=i}});const i=Math.min.apply(0,s),m=Math.min.apply(0,a),o=Math.max.apply(0,s),c=Math.max.apply(0,a),l=o-i,u=c-m;return{width:l,height:u,x:i,y:m,x2:o,y2:c,cx:i+l/2,cy:m+u/2}}Object.assign(J,{Version:"0.0.24"});class W{constructor(e,r){const n=r||{};this.segments=h(e);const s=K(this.segments),{width:a,height:i}=s;let{round:m,origin:o}=t;const{round:c,origin:l}=n;if("auto"===c){const t=(""+Math.floor(Math.max(a,i))).length;m=t>=4?0:4-t}else(Number.isInteger(c)&&c>=1||!1===c)&&(m=c);if(Array.isArray(l)&&[2,3].includes(l.length)&&l.map(t=>!Number.isNaN(t)))o=[...l.map(Number)];else{const{cx:t,cy:e}=s;o=[t,e,Math.max(a,i)+Math.min(a,i)/2]}return this.round=m,this.origin=o,this}toAbsolute(){const{segments:t}=this;return this.segments=y(t),this}toRelative(){const{segments:t}=this;return this.segments=x(t),this}toCurve(){const{segments:t}=this;return this.segments=T(t),this}reverse(t){this.toAbsolute();const{segments:e}=this,r=z(this.toString()),n=r.length>1?r:0,s=n&&c(n).map((e,r)=>t?r?j(e):h(e):j(e));let a=[];return a=n?s.flat(1):t?e:j(e),this.segments=c(a),this}normalize(){const{segments:t}=this;return this.segments=v(t),this}optimize(){const{segments:t}=this;return this.segments=L(t,this.round),this}transform(t){if(!t||"object"!=typeof t||"object"==typeof t&&!["translate","rotate","skew","scale"].some(e=>e in t))return this;const e={};Object.keys(t).forEach(r=>{e[r]=Array.isArray(t[r])?[...t[r]]:Number(t[r])});const{segments:r}=this;return e.origin||(e.origin={...this.origin}),this.segments=G(r,e),this}flipX(){return this.transform({rotate:[180,0,0]}),this}flipY(){return this.transform({rotate:[0,180,0]}),this}toString(){return $(this.segments,this.round)}}function _(t){let e=0,r=0,n=0;return T(t).map(t=>{switch(t[0]){case"M":return[,e,r]=t,0;default:return n=function(t,e,r,n,s,a,i,m){return 3*((m-e)*(r+s)-(i-t)*(n+a)+n*(t-s)-r*(e-a)+m*(s+t/3)-i*(a+e/3))/20}(e,r,...t.slice(1)),[e,r]=t.slice(-2).map(Number),n}}).reduce((t,e)=>t+e,0)}function tt(t,e,r,n,s){return s*(s*(-3*t+9*e-9*r+3*n)+6*t-12*e+6*r)-3*t+3*e}function et(t,e,r,n,s,a,i,m,o){let c=o;(null===o||Number.isNaN(+o))&&(c=1),c>1&&(c=1),c<0&&(c=0);const l=c/2;let u=0,h=0,f=0,y=0;const p=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472];return[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816].forEach((o,c)=>{u=l*o+l,h=tt(t,r,s,i,u),f=tt(e,n,a,m,u),y+=p[c]*Math.sqrt(h*h+f*f)}),l*y}const rt={circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],rect:["width","height","x","y","rx","ry"],polygon:["points"],polyline:["points"],glyph:[]};const nt={CSSMatrix:J,parsePathString:h,isPathArray:u,isCurveArray:A,isAbsoluteArray:f,isRelativeArray:p,isNormalizedArray:M,isValidPath:function(t){if("string"!=typeof t)return!1;const e=new l(t);for(i(e);e.index<e.max&&!e.err.length;)o(e);return!e.err.length&&"mM".includes(e.segments[0][0])},pathToAbsolute:y,pathToRelative:x,pathToCurve:T,pathToString:$,getDrawDirection:function(t){return _(T(t))>=0},getPathArea:_,getPathBBox:K,getPathLength:function(t){let e=0;return T(t).forEach((t,r,n)=>{const s="M"!==t[0]?[...n[r-1].slice(-2),...t.slice(1)]:[];e+="M"===t[0]?0:et(...s)}),e},getPointAtLength:function(t,e){let r,n,s,a=0;return T(t).map((t,i,m)=>{if(n=i?[...m[i-1].slice(-2),...t.slice(1)]:t.slice(1),r=i?et(...n):0,a+=r,0===i)s={x:n[0],y:n[1]};else if(a>e&&e>a-r){const t=[...n,1-(a-e)/r];s=S(...t)}else s=null;return s}).filter(t=>t).slice(-1)[0]},clonePath:c,splitPath:z,fixPath:w,roundPath:V,optimizePath:L,reverseCurve:function(t){const e=t.slice(1).map((e,r,n)=>r?[...n[r-1].slice(-2),...e.slice(1)]:[...t[0].slice(1),...e.slice(1)]).map(t=>t.map((e,r)=>t[t.length-r-2*(1-r%2)])).reverse();return[["M",...e[0].slice(0,2)],...e.map(t=>["C",...t.slice(2)])]},reversePath:j,normalizePath:v,transformPath:G,shapeToPath:function(e,r){const n=Object.keys(rt),s=e instanceof Element;if(s&&!n.some(t=>e.tagName===t))throw TypeError(`shapeToPath: "${e}" is not SVGElement`);const a=document.createElementNS("http://www.w3.org/2000/svg","path"),i=s?e.tagName:e.type,m={};if(m.type=i,s){const t=rt[i];t.forEach(t=>{m[t]=e.getAttribute(t)}),Object.values(e.attributes).forEach(({name:e,value:r})=>{t.includes(e)||a.setAttribute(e,r)})}else Object.assign(m,e);let o;const{round:c}=t;return"circle"===i?o=$(function(t){const{cx:e,cy:r,r:n}=t;return[["M",e-n,r],["a",n,n,0,1,0,2*n,0],["a",n,n,0,1,0,-2*n,0]]}(m),c):"ellipse"===i?o=$(function(t){const{cx:e,cy:r,rx:n,ry:s}=t;return[["M",e-n,r],["a",n,s,0,1,0,2*n,0],["a",n,s,0,1,0,-2*n,0]]}(m),c):["polyline","polygon"].includes(i)?o=$(function(t){const e=[],r=t.points.split(/[\s|,]/).map(Number);let n=0;for(;n<r.length;)e.push([n?"L":"M",r[n],r[n+1]]),n+=2;return"polygon"===t.type?[...e,["z"]]:e}(m),c):"rect"===i?o=$(function(t){const e=+t.x||0,r=+t.y||0,n=+t.width,s=+t.height;let a=+t.rx,i=+t.ry;return a||i?(a=a||i,i=i||a,2*a>n&&(a-=(2*a-n)/2),2*i>s&&(i-=(2*i-s)/2),[["M",e+a,r],["h",n-2*a],["s",a,0,a,i],["v",s-2*i],["s",0,i,-a,i],["h",2*a-n],["s",-a,0,-a,-i],["v",2*i-s],["s",0,-i,a,-i]]):[["M",e,r],["h",n],["v",s],["H",e],["Z"]]}(m),c):"line"===i?o=$(function(t){const{x1:e,y1:r,x2:n,y2:s}=t;return[["M",e,r],["L",n,s]]}(m),c):"glyph"===i&&(o=s?e.getAttribute("d"):e.type),!!o&&(a.setAttribute("d",o),r&&s&&(e.before(a,e),e.remove()),a)},options:t};Object.assign(W,nt,{Version:"0.1.20"});export{W as default};
|
|
1
|
+
// SVGPathCommander v0.1.21 | thednp © 2021 | MIT-License
|
|
2
|
+
const t={origin:[0,0,0],round:4},e={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0};function r(t){let r=t.pathValue[t.segmentStart],n=r.toLowerCase(),{data:s}=t;for("m"===n&&s.length>2&&(t.segments.push([r,s[0],s[1]]),s=s.slice(2),n="l",r="m"===r?"l":"L");s.length>=e[n]&&(t.segments.push([r,...s.splice(0,e[n])]),e[n]););}function n(t){const{index:e}=t,r=t.pathValue.charCodeAt(e);return 48===r?(t.param=0,void(t.index+=1)):49===r?(t.param=1,void(t.index+=1)):void(t.err=`Invalid path value: invalid Arc flag "${r}", expecting 0 or 1 at index ${e}`)}function s(t){return t>=48&&t<=57}function a(t){const{max:e,pathValue:r,index:n}=t;let a,i=n,m=!1,o=!1,c=!1,l=!1;if(i>=e)t.err=`Invalid path value at ${i}: missing param ${r[i]}`;else if(a=r.charCodeAt(i),43!==a&&45!==a||(i+=1,a=i<e?r.charCodeAt(i):0),s(a)||46===a){if(46!==a){if(m=48===a,i+=1,a=i<e?r.charCodeAt(i):0,m&&i<e&&a&&s(a))return void(t.err=`Invalid path value at index ${n}: ${r[n]} illegal number`);for(;i<e&&s(r.charCodeAt(i));)i+=1,o=!0;a=i<e?r.charCodeAt(i):0}if(46===a){for(l=!0,i+=1;s(r.charCodeAt(i));)i+=1,c=!0;a=i<e?r.charCodeAt(i):0}if(101===a||69===a){if(l&&!o&&!c)return void(t.err=`Invalid path value at index ${i}: ${r[i]} invalid float exponent`);if(i+=1,a=i<e?r.charCodeAt(i):0,43!==a&&45!==a||(i+=1),!(i<e&&s(r.charCodeAt(i))))return void(t.err=`Invalid path value at index ${i}: ${r[i]} invalid float exponent`);for(;i<e&&s(r.charCodeAt(i));)i+=1}t.index=i,t.param=+t.pathValue.slice(n,i)}else t.err=`Invalid path value at index ${i}: ${r[i]} is not a number`}function i(t){const{pathValue:e,max:r}=t;for(;t.index<r&&(10===(n=e.charCodeAt(t.index))||13===n||8232===n||8233===n||32===n||9===n||11===n||12===n||160===n||n>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(n)>=0);)t.index+=1;var n}function m(t){return t>=48&&t<=57||43===t||45===t||46===t}function o(t){const{max:s,pathValue:o,index:c}=t,l=o.charCodeAt(c),u=e[o[c].toLowerCase()];if(t.segmentStart=c,function(t){switch(32|t){case 109:case 122:case 108:case 104:case 118:case 99:case 115:case 113:case 116:case 97:return!0;default:return!1}}(l))if(t.index+=1,i(t),t.data=[],u){for(;;){for(let e=u;e>0;e-=1){if(97!=(32|l)||3!==e&&4!==e?a(t):n(t),t.err.length)return;t.data.push(t.param),i(t),t.index<s&&44===o.charCodeAt(t.index)&&(t.index+=1,i(t))}if(t.index>=t.max)break;if(!m(o.charCodeAt(t.index)))break}r(t)}else r(t);else t.err=`Invalid path value: ${o[c]} not a path command`}function c(t){return t.map(t=>Array.isArray(t)?[...t]:t)}function l(t){this.segments=[],this.pathValue=t,this.max=t.length,this.index=0,this.param=0,this.segmentStart=0,this.data=[],this.err=""}function u(t){return Array.isArray(t)&&t.every(t=>{const r=t[0].toLowerCase();return e[r]===t.length-1&&"achlmqstvz".includes(r)})}function h(t){if(Array.isArray(t)&&u(t))return c(t);const e=new l(t);for(i(e);e.index<e.max&&!e.err.length;)o(e);return e.err.length?e.segments=[]:e.segments.length&&("mM".includes(e.segments[0][0])?e.segments[0][0]="M":(e.err="Invalid path value: missing M/m",e.segments=[])),e.segments}function f(t){return u(t)&&t.every(t=>t[0]===t[0].toUpperCase())}function y(t){if(Array.isArray(t)&&f(t))return c(t);const e=h(t);let r=0,n=0,s=0,a=0;return e.map(t=>{const e=t.slice(1).map(Number),[i]=t,m=i.toUpperCase();if("M"===i)return[r,n]=e,s=r,a=n,["M",r,n];let o=[];if(i!==m)switch(m){case"A":o=[m,e[0],e[1],e[2],e[3],e[4],e[5]+r,e[6]+n];break;case"V":o=[m,e[0]+n];break;case"H":o=[m,e[0]+r];break;default:o=[m,...e.map((t,e)=>t+(e%2?n:r))]}else o=[m,...e];const c=o.length;switch(m){case"Z":r=s,n=a;break;case"H":[,r]=o;break;case"V":[,n]=o;break;default:r=o[c-2],n=o[c-1],"M"===m&&(s=r,a=n)}return o})}function x(t){return u(t)&&t.slice(1).every(t=>t[0]===t[0].toLowerCase())}function p(t){if(x(t))return c(t);const e=h(t);let r=0,n=0,s=0,a=0;return e.map(t=>{const e=t.slice(1).map(Number),[i]=t,m=i.toLowerCase();if("M"===i)return[r,n]=e,s=r,a=n,["M",r,n];let o=[];if(i!==m)switch(m){case"a":o=[m,e[0],e[1],e[2],e[3],e[4],e[5]-r,e[6]-n];break;case"v":o=[m,e[0]-n];break;case"h":o=[m,e[0]-r];break;default:o=[m,...e.map((t,e)=>t-(e%2?n:r))],"m"===m&&([r,n]=e,s=r,a=n)}else"m"===i&&(s=e[0]+r,a=e[1]+n),o=[m,...e];const c=o.length;switch(m){case"z":r=s,n=a;break;case"h":r+=o[1];break;case"v":n+=o[1];break;default:r+=o[c-2],n+=o[c-1]}return o})}function d(t,e,r){if(t[r].length>7){t[r].shift();const n=t[r];let s=r;for(;n.length;)e[r]="A",t.splice(s+=1,0,["C",...n.splice(0,6)]);t.splice(r,1)}}function g(t,e,r){const[n]=t,{x1:s,y1:a,x2:i,y2:m}=e,o=t.slice(1).map(Number);let c=t;if("TQ".includes(n)||(e.qx=null,e.qy=null),"H"===n)c=["L",t[1],a];else if("V"===n)c=["L",s,t[1]];else if("S"===n){const{x1:t,y1:n}=function(t,e,r,n,s){return"CS".includes(s)?{x1:2*t-r,y1:2*e-n}:{x1:t,y1:e}}(s,a,i,m,r);e.x1=t,e.y1=n,c=["C",t,n,...o]}else if("T"===n){const{qx:t,qy:n}=function(t,e,r,n,s){return"QT".includes(s)?{qx:2*t-r,qy:2*e-n}:{qx:t,qy:e}}(s,a,e.qx,e.qy,r);e.qx=t,e.qy=n,c=["Q",t,n,...o]}else if("Q"===n){const[t,r]=o;e.qx=t,e.qy=r}return c}function M(t){return f(t)&&t.every(t=>"ACLMQZ".includes(t[0]))}const b={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null};function v(t){if(M(t))return c(t);const e=y(t),r={...b},n=[],s=e.length;let a="",i="";for(let t=0;t<s;t+=1){[a]=e[t],n[t]=a,t&&(i=n[t-1]),e[t]=g(e[t],r,i);const s=e[t],m=s.length;r.x1=+s[m-2],r.y1=+s[m-1],r.x2=+s[m-4]||r.x1,r.y2=+s[m-3]||r.y1}return e}function N(t){const e=h(t),r=v(e),{length:n}=e,s="Z"===r.slice(-1)[0][0],a=s?n-2:n-1,[i,m]=r[0].slice(1),[o,c]=r[a].slice(-2);return s&&i===o&&m===c?e.slice(0,-1):e}function w(t){return u(t)&&t.every(t=>"MC".includes(t[0]))}function A(t,e,r){return{x:t*Math.cos(r)-e*Math.sin(r),y:t*Math.sin(r)+e*Math.cos(r)}}function C(t,e,r,n,s,a,i,m,o,c){let l=t,u=e,h=r,f=n,y=m,x=o;const p=120*Math.PI/180,d=Math.PI/180*(+s||0);let g,M,b,v,N,w=[];if(c)[M,b,v,N]=c;else{g=A(l,u,-d),l=g.x,u=g.y,g=A(y,x,-d),y=g.x,x=g.y;const t=(l-y)/2,e=(u-x)/2;let r=t*t/(h*h)+e*e/(f*f);r>1&&(r=Math.sqrt(r),h*=r,f*=r);const n=h*h,s=f*f,m=(a===i?-1:1)*Math.sqrt(Math.abs((n*s-n*e*e-s*t*t)/(n*e*e+s*t*t)));v=m*h*e/f+(l+y)/2,N=m*-f*t/h+(u+x)/2,M=(Math.asin((u-N)/f)*10**9>>0)/10**9,b=(Math.asin((x-N)/f)*10**9>>0)/10**9,M=l<v?Math.PI-M:M,b=y<v?Math.PI-b:b,M<0&&(M=2*Math.PI+M),b<0&&(b=2*Math.PI+b),i&&M>b&&(M-=2*Math.PI),!i&&b>M&&(b-=2*Math.PI)}let k=b-M;if(Math.abs(k)>p){const t=b,e=y,r=x;b=M+p*(i&&b>M?1:-1),y=v+h*Math.cos(b),x=N+f*Math.sin(b),w=C(y,x,h,f,s,0,i,e,r,[b,t,v,N])}k=b-M;const S=Math.cos(M),q=Math.sin(M),P=Math.cos(b),I=Math.sin(b),T=Math.tan(k/4),V=4/3*h*T,z=4/3*f*T,$=[l,u],j=[l+V*q,u-z*S],E=[y+V*I,x-z*P],L=[y,x];if(j[0]=2*$[0]-j[0],j[1]=2*$[1]-j[1],c)return[...j,...E,...L,...w];w=[...j,...E,...L,...w];const O=[];for(let t=0,e=w.length;t<e;t+=1)O[t]=t%2?A(w[t-1],w[t],d).y:A(w[t],w[t+1],d).x;return O}function k(t,e,r,n,s,a){return[1/3*t+2/3*r,1/3*e+2/3*n,1/3*s+2/3*r,1/3*a+2/3*n,s,a]}function S(t,e,r,n,s,a,i,m,o){const c=1-o;return{x:c**3*t+c*c*3*o*r+3*c*o*o*s+o**3*i,y:c**3*e+c*c*3*o*n+3*c*o*o*a+o**3*m}}function q(t,e,r){const[n,s]=t,[a,i]=e;return[n+(a-n)*r,s+(i-s)*r]}function P(t,e,r,n){const s=.5,a=[t,e],i=[r,n],m=q(a,i,s),o=q(i,m,s),c=q(m,o,s),l=q(o,c,s),u=q(c,l,s),h=S(...[...a,...m,...c,...u,s]),f=S(...[...u,...l,...o,...i,0]);return[h.x,h.y,f.x,f.y,r,n]}function I(t,e){const[r]=t,n=t.slice(1).map(t=>+t),[s,a]=n;let i;const{x1:m,y1:o,x:c,y:l}=e;switch("TQ".includes(r)||(e.qx=null,e.qy=null),r){case"M":return e.x=s,e.y=a,t;case"A":return i=[m,o,...n],["C",...C(...i)];case"Q":return e.qx=s,e.qy=a,i=[m,o,...n],["C",...k(...i)];case"L":return["C",...P(m,o,s,a)];case"Z":return["C",...P(m,o,c,l)]}return t}function T(t){if(w(t))return c(t);const e=N(v(t)),r={...b},n=[];let s="",a=e.length;for(let t=0;t<a;t+=1){[s]=e[t],n[t]=s,e[t]=I(e[t],r),d(e,n,t),a=e.length;const i=e[t],m=i.length;r.x1=+i[m-2],r.y1=+i[m-1],r.x2=+i[m-4]||r.x1,r.y2=+i[m-3]||r.y1}return e}function V(e,r){let{round:n}=t;if(!1===r||!1===n)return c(e);n=r>=1?r:n;const s=n>=1?10**n:1;return e.map(t=>{const e=t.slice(1).map(Number).map(t=>t%1==0?t:Math.round(t*s)/s);return[t[0],...e]})}function z(t,e){return V(t,e).map(t=>t[0]+t.slice(1).join(" ")).join("")}function $(t){const e=y(t),r="Z"===e.slice(-1)[0][0],n=v(e).map((t,r)=>{const[n,s]=t.slice(-2).map(Number);return{seg:e[r],n:t,c:e[r][0],x:n,y:s}}).map((t,e,n)=>{const s=t.seg,a=t.n,i=e&&n[e-1],m=n[e+1]&&n[e+1],o=t.c,c=n.length,l=e?n[e-1].x:n[c-1].x,u=e?n[e-1].y:n[c-1].y;let h=[];switch(o){case"M":h=r?["Z"]:[o,l,u];break;case"A":h=[o,...s.slice(1,-3),1===s[5]?0:1,l,u];break;case"C":h=m&&"S"===m.c?["S",s[1],s[2],l,u]:[o,s[3],s[4],s[1],s[2],l,u];break;case"S":h=i&&"CS".includes(i.c)&&(!m||m&&"S"!==m.c)?["C",a[3],a[4],a[1],a[2],l,u]:[o,a[1],a[2],l,u];break;case"Q":h=m&&"T"===m.c?["T",l,u]:[o,...s.slice(1,-2),l,u];break;case"T":h=i&&"QT".includes(i.c)&&(!m||m&&"T"!==m.c)?["Q",a[1],a[2],l,u]:[o,l,u];break;case"Z":h=["M",l,u];break;case"H":h=[o,l];break;case"V":h=[o,u];break;default:h=[o,...s.slice(1,-2),l,u]}return h});return r?n.reverse():[n[0],...n.slice(1).reverse()]}function j(t){return z(y(t),0).replace(/(m|M)/g,"|$1").split("|").map(t=>t.trim()).filter(t=>t)}function E(t,e,r,n){const[s]=t,a=t=>Math.round(1e4*t)/1e4,i=t.slice(1).map(t=>+t),m=e.slice(1).map(t=>+t),{x1:o,y1:c,x2:l,y2:u,x:h,y:f}=r;let y=t;const[x,p]=m.slice(-2);if("TQ".includes(s)||(r.qx=null,r.qy=null),["V","H","S","T","Z"].includes(s))y=[s,...i];else if("L"===s)a(h)===a(x)?y=["V",p]:a(f)===a(p)&&(y=["H",x]);else if("C"===s){const[t,e]=m;"CS".includes(n)&&a(t)===a(2*o-l)&&a(e)===a(2*c-u)&&(y=["S",...m.slice(-4)]),r.x1=t,r.y1=e}else if("Q"===s){const[t,e]=m;r.qx=t,r.qy=e,"QT".includes(n)&&a(t)===a(2*o-l)&&a(e)===a(2*c-u)&&(y=["T",...m.slice(-2)])}return y}function L(t,e){const r=y(t),n=v(r),s={...b},a=[],i=r.length;let m="",o="",c=0,l=0,u=0,h=0;for(let t=0;t<i;t+=1){[m]=r[t],a[t]=m,t&&(o=a[t-1]),r[t]=E(r[t],n[t],s,o);const e=r[t],i=e.length;switch(s.x1=+e[i-2],s.y1=+e[i-1],s.x2=+e[i-4]||s.x1,s.y2=+e[i-3]||s.y1,m){case"Z":c=u,l=h;break;case"H":[,c]=e;break;case"V":[,l]=e;break;default:[c,l]=e.slice(-2).map(Number),"M"===m&&(u=c,h=l)}s.x=c,s.y=l}const f=V(r,e),x=V(p(r),e);return f.map((t,e)=>e?t.join("").length<x[e].join("").length?t:x[e]:t)}function O(t){const e=new J,r=Array.from(t);if(!r.every(t=>!Number.isNaN(t)))throw TypeError(`CSSMatrix: "${t}" must only have numbers.`);if(16===r.length){const[t,n,s,a,i,m,o,c,l,u,h,f,y,x,p,d]=r;e.m11=t,e.a=t,e.m21=i,e.c=i,e.m31=l,e.m41=y,e.e=y,e.m12=n,e.b=n,e.m22=m,e.d=m,e.m32=u,e.m42=x,e.f=x,e.m13=s,e.m23=o,e.m33=h,e.m43=p,e.m14=a,e.m24=c,e.m34=f,e.m44=d}else{if(6!==r.length)throw new TypeError("CSSMatrix: expecting an Array of 6/16 values.");{const[t,n,s,a,i,m]=r;e.m11=t,e.a=t,e.m12=n,e.b=n,e.m21=s,e.c=s,e.m22=a,e.d=a,e.m41=i,e.e=i,e.m42=m,e.f=m}}return e}function Q(t){const e=Object.keys(new J);if("object"==typeof t&&e.every(e=>e in t))return O([t.m11,t.m12,t.m13,t.m14,t.m21,t.m22,t.m23,t.m24,t.m31,t.m32,t.m33,t.m34,t.m41,t.m42,t.m43,t.m44]);throw TypeError(`CSSMatrix: "${t}" is not a DOMMatrix / CSSMatrix / JSON compatible object.`)}function Z(t){if("string"!=typeof t)throw TypeError(`CSSMatrix: "${t}" is not a string.`);const e=String(t).replace(/\s/g,"");let r=new J;const n=`CSSMatrix: invalid transform string "${t}"`;return e.split(")").filter(t=>t).forEach(t=>{const[e,s]=t.split("(");if(!s)throw TypeError(n);const a=s.split(",").map(t=>t.includes("rad")?parseFloat(t)*(180/Math.PI):parseFloat(t)),[i,m,o,c]=a,l=[i,m,o],u=[i,m,o,c];if("perspective"===e&&i&&[m,o].every(t=>void 0===t))r.m34=-1/i;else if(e.includes("matrix")&&[6,16].includes(a.length)&&a.every(t=>!Number.isNaN(+t))){const t=a.map(t=>Math.abs(t)<1e-6?0:t);r=r.multiply(O(t))}else if("translate3d"===e&&l.every(t=>!Number.isNaN(+t)))r=r.translate(i,m,o);else if("translate"===e&&i&&void 0===o)r=r.translate(i,m||0,0);else if("rotate3d"===e&&u.every(t=>!Number.isNaN(+t))&&c)r=r.rotateAxisAngle(i,m,o,c);else if("rotate"===e&&i&&[m,o].every(t=>void 0===t))r=r.rotate(0,0,i);else if("scale3d"===e&&l.every(t=>!Number.isNaN(+t))&&l.some(t=>1!==t))r=r.scale(i,m,o);else if("scale"!==e||Number.isNaN(i)||1===i||void 0!==o)if("skew"===e&&i&&void 0===o)r=r.skewX(i),r=m?r.skewY(m):r;else{if(!(/[XYZ]/.test(e)&&i&&[m,o].every(t=>void 0===t)&&["translate","rotate","scale","skew"].some(t=>e.includes(t))))throw TypeError(n);if(["skewX","skewY"].includes(e))r=r[e](i);else{const t=e.replace(/[XYZ]/,""),n=e.replace(t,""),s=["X","Y","Z"].indexOf(n),a=[0===s?i:0,1===s?i:0,2===s?i:0];r=r[t](...a)}}else{const t=Number.isNaN(+m)?i:m;r=r.scale(i,t,1)}}),r}function D(t,e,r){const n=new J;return n.m41=t,n.e=t,n.m42=e,n.f=e,n.m43=r,n}function X(t,e,r){const n=new J,s=Math.PI/180,a=t*s,i=e*s,m=r*s,o=Math.cos(a),c=-Math.sin(a),l=Math.cos(i),u=-Math.sin(i),h=Math.cos(m),f=-Math.sin(m),y=l*h,x=-l*f;n.m11=y,n.a=y,n.m12=x,n.b=x,n.m13=u;const p=c*u*h+o*f;n.m21=p,n.c=p;const d=o*h-c*u*f;return n.m22=d,n.d=d,n.m23=-c*l,n.m31=c*f-o*u*h,n.m32=c*h+o*u*f,n.m33=o*l,n}function H(t,e,r,n){const s=new J,a=n*(Math.PI/360),i=Math.sin(a),m=Math.cos(a),o=i*i,c=Math.sqrt(t*t+e*e+r*r);let l=t,u=e,h=r;0===c?(l=0,u=0,h=1):(l/=c,u/=c,h/=c);const f=l*l,y=u*u,x=h*h,p=1-2*(y+x)*o;s.m11=p,s.a=p;const d=2*(l*u*o+h*i*m);s.m12=d,s.b=d,s.m13=2*(l*h*o-u*i*m);const g=2*(u*l*o-h*i*m);s.m21=g,s.c=g;const M=1-2*(x+f)*o;return s.m22=M,s.d=M,s.m23=2*(u*h*o+l*i*m),s.m31=2*(h*l*o+u*i*m),s.m32=2*(h*u*o-l*i*m),s.m33=1-2*(f+y)*o,s}function Y(t,e,r){const n=new J;return n.m11=t,n.a=t,n.m22=e,n.d=e,n.m33=r,n}function R(t){const e=new J,r=t*Math.PI/180,n=Math.tan(r);return e.m21=n,e.c=n,e}function F(t){const e=new J,r=t*Math.PI/180,n=Math.tan(r);return e.m12=n,e.b=n,e}function B(t,e){return O([e.m11*t.m11+e.m12*t.m21+e.m13*t.m31+e.m14*t.m41,e.m11*t.m12+e.m12*t.m22+e.m13*t.m32+e.m14*t.m42,e.m11*t.m13+e.m12*t.m23+e.m13*t.m33+e.m14*t.m43,e.m11*t.m14+e.m12*t.m24+e.m13*t.m34+e.m14*t.m44,e.m21*t.m11+e.m22*t.m21+e.m23*t.m31+e.m24*t.m41,e.m21*t.m12+e.m22*t.m22+e.m23*t.m32+e.m24*t.m42,e.m21*t.m13+e.m22*t.m23+e.m23*t.m33+e.m24*t.m43,e.m21*t.m14+e.m22*t.m24+e.m23*t.m34+e.m24*t.m44,e.m31*t.m11+e.m32*t.m21+e.m33*t.m31+e.m34*t.m41,e.m31*t.m12+e.m32*t.m22+e.m33*t.m32+e.m34*t.m42,e.m31*t.m13+e.m32*t.m23+e.m33*t.m33+e.m34*t.m43,e.m31*t.m14+e.m32*t.m24+e.m33*t.m34+e.m34*t.m44,e.m41*t.m11+e.m42*t.m21+e.m43*t.m31+e.m44*t.m41,e.m41*t.m12+e.m42*t.m22+e.m43*t.m32+e.m44*t.m42,e.m41*t.m13+e.m42*t.m23+e.m43*t.m33+e.m44*t.m43,e.m41*t.m14+e.m42*t.m24+e.m43*t.m34+e.m44*t.m44])}class J{constructor(...t){const e=this;if(e.a=1,e.b=0,e.c=0,e.d=1,e.e=0,e.f=0,e.m11=1,e.m12=0,e.m13=0,e.m14=0,e.m21=0,e.m22=1,e.m23=0,e.m24=0,e.m31=0,e.m32=0,e.m33=1,e.m34=0,e.m41=0,e.m42=0,e.m43=0,e.m44=1,t&&t.length){const r=[16,6].some(e=>e===t.length)?t:t[0];return e.setMatrixValue(r)}return e}set isIdentity(t){this.isIdentity=t}get isIdentity(){const t=this;return 1===t.m11&&0===t.m12&&0===t.m13&&0===t.m14&&0===t.m21&&1===t.m22&&0===t.m23&&0===t.m24&&0===t.m31&&0===t.m32&&1===t.m33&&0===t.m34&&0===t.m41&&0===t.m42&&0===t.m43&&1===t.m44}get is2D(){const t=this;return 0===t.m31&&0===t.m32&&1===t.m33&&0===t.m34&&0===t.m43&&1===t.m44}set is2D(t){this.is2D=t}setMatrixValue(t){return[Array,Float64Array,Float32Array].some(e=>t instanceof e)?O(t):"string"==typeof t&&t.length&&"none"!==t?Z(t):"object"==typeof t?Q(t):this}toArray(){const t=this;let e;return e=t.is2D?[t.a,t.b,t.c,t.d,t.e,t.f]:[t.m11,t.m12,t.m13,t.m14,t.m21,t.m22,t.m23,t.m24,t.m31,t.m32,t.m33,t.m34,t.m41,t.m42,t.m43,t.m44],e.map(t=>Math.abs(t)<1e-6?0:(t*10**6>>0)/10**6)}toString(){const t=this.toArray();return`${this.is2D?"matrix":"matrix3d"}(${t})`}toJSON(){const{is2D:t,isIdentity:e}=this;return{...this,is2D:t,isIdentity:e}}multiply(t){return B(this,t)}translate(t,e,r){let n=e,s=r;return void 0===s&&(s=0),void 0===n&&(n=0),B(this,D(t,n,s))}scale(t,e,r){let n=e,s=r;return void 0===n&&(n=t),void 0===s&&(s=1),B(this,Y(t,n,s))}rotate(t,e,r){let n=t,s=e,a=r;return void 0===s&&(s=0),void 0===a&&(a=n,n=0),B(this,X(n,s,a))}rotateAxisAngle(t,e,r,n){if([t,e,r,n].some(t=>Number.isNaN(t)))throw new TypeError("CSSMatrix: expecting 4 values");return B(this,H(t,e,r,n))}skewX(t){return B(this,R(t))}skewY(t){return B(this,F(t))}transformPoint(t){let e=D(t.x,t.y,t.z);return e.m44=t.w||1,e=this.multiply(e),{x:e.m41,y:e.m42,z:e.m43,w:e.m44}}transform(t){const e=this,r=e.m11*t.x+e.m12*t.y+e.m13*t.z+e.m14*t.w,n=e.m21*t.x+e.m22*t.y+e.m23*t.z+e.m24*t.w,s=e.m31*t.x+e.m32*t.y+e.m33*t.z+e.m34*t.w,a=e.m41*t.x+e.m42*t.y+e.m43*t.z+e.m44*t.w;return{x:r/a,y:n/a,z:s/a,w:a}}}Object.assign(J,{Translate:D,Rotate:X,RotateAxisAngle:H,Scale:Y,SkewX:R,SkewY:F,Multiply:B,fromArray:O,fromMatrix:Q,fromString:Z});function U(t,e,r){const[n,s]=e,[a,i,m]=r,o=t.transformPoint({x:n,y:s,z:0,w:1}),c=o.x-a,l=o.y-i,u=o.z-m;return[c*(Math.abs(m)/Math.abs(u))+a,l*(Math.abs(m)/Math.abs(u))+i]}function G(t,e){let r,n,s,a,i,m,o,l=0,u=0;const h=y(t),f=v(h),x=function(t){let e=new J;const{origin:r}=t,[n,s]=r,{translate:a}=t,{rotate:i}=t,{skew:m}=t,{scale:o}=t;return Array.isArray(a)&&a.every(t=>!Number.isNaN(+t))&&a.some(t=>0!==t)?e=e.translate(a[0]||0,a[1]||0,a[2]||0):"number"!=typeof a||Number.isNaN(+a)||(e=e.translate(a||0,0,0)),(i||m||o)&&(e=e.translate(n,s),Array.isArray(i)&&i.every(t=>!Number.isNaN(+t))&&i.some(t=>0!==t)?e=e.rotate(i[0],i[1],i[2]):"number"!=typeof i||Number.isNaN(+i)||(e=e.rotate(0,0,i)),Array.isArray(m)&&m.every(t=>!Number.isNaN(+t))&&m.some(t=>0!==t)?(e=m[0]?e.skewX(m[0]):e,e=m[1]?e.skewY(m[1]):e):"number"!=typeof m||Number.isNaN(+m)||(e=e.skewX(m||0)),Array.isArray(o)&&o.every(t=>!Number.isNaN(+t))&&o.some(t=>1!==t)?e=e.scale(o[0],o[1],o[2]):"number"!=typeof o||Number.isNaN(+o)||(e=e.scale(o||1,o||1,o||1)),e=e.translate(-n,-s)),e}(e),p=Object.keys(e),{origin:g}=e,{a:M,b:N,c:w,d:A,e:C,f:k}=x,S=[M,N,w,A,C,k],q={...b};let P=[],T=0,V="",z=[];const $=[];if(!x.isIdentity){for(r=0,s=h.length;r<s;r+=1){P=h[r],h[r]&&([V]=P),$[r]=V,"A"!==V||x.is2D&&["skewX","skewY"].find(t=>p.includes(t))||(P=I(f[r],q),h[r]=I(f[r],q),d(h,$,r),f[r]=I(f[r],q),d(f,$,r),s=Math.max(h.length,f.length)),P=f[r],T=P.length,q.x1=+P[T-2],q.y1=+P[T-1],q.x2=+P[T-4]||q.x1,q.y2=+P[T-3]||q.y1;const t={s:h[r],c:h[r][0],x:q.x1,y:q.y1};z=[...z,t]}return z.map(t=>{switch(V=t.c,P=t.s,V){case"A":return o=function(t,e,r,n){const s=Math.cos(n*Math.PI/180),a=Math.sin(n*Math.PI/180),i=[e*(t[0]*s+t[2]*a),e*(t[1]*s+t[3]*a),r*(-t[0]*a+t[2]*s),r*(-t[1]*a+t[3]*s)],m=i[0]*i[0]+i[2]*i[2],o=i[1]*i[1]+i[3]*i[3];let c=((i[0]-i[3])*(i[0]-i[3])+(i[2]+i[1])*(i[2]+i[1]))*((i[0]+i[3])*(i[0]+i[3])+(i[2]-i[1])*(i[2]-i[1]));const l=(m+o)/2;if(c<1e-9*l){const t=Math.sqrt(l);return{rx:t,ry:t,ax:0}}const u=i[0]*i[1]+i[2]*i[3];c=Math.sqrt(c);const h=l+c/2,f=l-c/2;let y,x,p=Math.abs(u)<1e-9&&Math.abs(h-o)<1e-9?90:Math.atan(Math.abs(u)>Math.abs(h-o)?(h-m)/u:u/(h-o)*180)/Math.PI;return p>=0?(y=Math.sqrt(h),x=Math.sqrt(f)):(p+=90,y=Math.sqrt(f),x=Math.sqrt(h)),{rx:y,ry:x,ax:p}}(S,P[1],P[2],P[3]),S[0]*S[3]-S[1]*S[2]<0&&(P[5]=P[5]?0:1),[i,m]=U(x,[+P[6],+P[7]],g),P=l===i&&u===m||o.rx<1e-9*o.ry||o.ry<1e-9*o.rx?["L",i,m]:[V,o.rx,o.ry,o.ax,P[4],P[5],i,m],l=i,u=m,P;case"L":case"H":case"V":return[i,m]=U(x,[t.x,t.y],g),l!==i&&u!==m?P=["L",i,m]:u===m?P=["H",i]:l===i&&(P=["V",m]),l=i,u=m,P;default:for(n=1,a=P.length;n<a;n+=2)[l,u]=U(x,[+P[n],+P[n+1]],g),P[n]=l,P[n+1]=u;return P}})}return c(h)}function K(t){if(!t)return{x:0,y:0,width:0,height:0,x2:0,y2:0,cx:0,cy:0,cz:0};const e=T(t);let r=0,n=0,s=[],a=[];e.forEach(t=>{const[e,i]=t.slice(-2).map(Number);if("M"===t[0])r=e,n=i,s.push(e),a.push(i);else{const m=function(t,e,r,n,s,a,i,m){let o=s-2*r+t-(i-2*s+r),c=2*(r-t)-2*(s-r),l=t-r,u=(-c+Math.sqrt(c*c-4*o*l))/2/o,h=(-c-Math.sqrt(c*c-4*o*l))/2/o;const f=[e,m],y=[t,i];let x;return Math.abs(u)>"1e12"&&(u=.5),Math.abs(h)>"1e12"&&(h=.5),u>0&&u<1&&(x=S(t,e,r,n,s,a,i,m,u),y.push(x.x),f.push(x.y)),h>0&&h<1&&(x=S(t,e,r,n,s,a,i,m,h),y.push(x.x),f.push(x.y)),o=a-2*n+e-(m-2*a+n),c=2*(n-e)-2*(a-n),l=e-n,u=(-c+Math.sqrt(c*c-4*o*l))/2/o,h=(-c-Math.sqrt(c*c-4*o*l))/2/o,Math.abs(u)>"1e12"&&(u=.5),Math.abs(h)>"1e12"&&(h=.5),u>0&&u<1&&(x=S(t,e,r,n,s,a,i,m,u),y.push(x.x),f.push(x.y)),h>0&&h<1&&(x=S(t,e,r,n,s,a,i,m,h),y.push(x.x),f.push(x.y)),{min:{x:Math.min.apply(0,y),y:Math.min.apply(0,f)},max:{x:Math.max.apply(0,y),y:Math.max.apply(0,f)}}}(...[r,n,...t.slice(1)]);s=[...s,m.min.x,m.max.x],a=[...a,m.min.y,m.max.y],r=e,n=i}});const i=Math.min(...s),m=Math.min(...a),o=Math.max(...s),c=Math.max(...a),l=o-i,u=c-m;return{width:l,height:u,x:i,y:m,x2:o,y2:c,cx:i+l/2,cy:m+u/2,cz:Math.max(l,u)+Math.min(l,u)/2}}Object.assign(J,{Version:"0.0.24"});class W{constructor(e,r){const n=r||{};this.segments=h(e);const s=K(this.segments),{width:a,height:i,cx:m,cy:o,cz:c}=s;let{round:l,origin:u}=t;const{round:f,origin:y}=n;if("auto"===f){const t=(""+Math.floor(Math.max(a,i))).length;l=t>=4?0:4-t}else(Number.isInteger(f)&&f>=1||!1===f)&&(l=f);if(Array.isArray(y)&&y.length>=2){const[t,e,r]=y.map(Number);u=[Number.isNaN(t)?m:t,Number.isNaN(e)?o:e,r||c]}else u=[m,o,c];return this.round=l,this.origin=u,this}toAbsolute(){const{segments:t}=this;return this.segments=y(t),this}toRelative(){const{segments:t}=this;return this.segments=p(t),this}toCurve(){const{segments:t}=this;return this.segments=T(t),this}reverse(t){this.toAbsolute();const{segments:e}=this,r=j(this.toString()),n=r.length>1?r:0,s=n&&c(n).map((e,r)=>t?r?$(e):h(e):$(e));let a=[];return a=n?s.flat(1):t?e:$(e),this.segments=c(a),this}normalize(){const{segments:t}=this;return this.segments=v(t),this}optimize(){const{segments:t}=this;return this.segments=L(t,this.round),this}transform(t){if(!t||"object"!=typeof t||"object"==typeof t&&!["translate","rotate","skew","scale"].some(e=>e in t))return this;const e={};Object.keys(t).forEach(r=>{e[r]=Array.isArray(t[r])?[...t[r]]:Number(t[r])});const{segments:r}=this,{origin:n}=e;if(n&&n.length>=2){const[t,r,s]=n.map(Number),[a,i,m]=this.origin;e.origin=[Number.isNaN(t)?a:t,Number.isNaN(r)?i:r,s||m]}else e.origin={...this.origin};return this.segments=G(r,e),this}flipX(){return this.transform({rotate:[180,0,0]}),this}flipY(){return this.transform({rotate:[0,180,0]}),this}toString(){return z(this.segments,this.round)}}function _(t){let e=0,r=0,n=0;return T(t).map(t=>{switch(t[0]){case"M":return[,e,r]=t,0;default:return n=function(t,e,r,n,s,a,i,m){return 3*((m-e)*(r+s)-(i-t)*(n+a)+n*(t-s)-r*(e-a)+m*(s+t/3)-i*(a+e/3))/20}(e,r,...t.slice(1)),[e,r]=t.slice(-2).map(Number),n}}).reduce((t,e)=>t+e,0)}function tt(t,e,r,n,s){return s*(s*(-3*t+9*e-9*r+3*n)+6*t-12*e+6*r)-3*t+3*e}function et(t,e,r,n,s,a,i,m,o){let c=o;(null===o||Number.isNaN(+o))&&(c=1),c>1&&(c=1),c<0&&(c=0);const l=c/2;let u=0,h=0,f=0,y=0;const x=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472];return[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816].forEach((o,c)=>{u=l*o+l,h=tt(t,r,s,i,u),f=tt(e,n,a,m,u),y+=x[c]*Math.sqrt(h*h+f*f)}),l*y}const rt={circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],rect:["width","height","x","y","rx","ry"],polygon:["points"],polyline:["points"],glyph:[]};const nt={CSSMatrix:J,parsePathString:h,isPathArray:u,isCurveArray:w,isAbsoluteArray:f,isRelativeArray:x,isNormalizedArray:M,isValidPath:function(t){if("string"!=typeof t)return!1;const e=new l(t);for(i(e);e.index<e.max&&!e.err.length;)o(e);return!e.err.length&&"mM".includes(e.segments[0][0])},pathToAbsolute:y,pathToRelative:p,pathToCurve:T,pathToString:z,getDrawDirection:function(t){return _(T(t))>=0},getPathArea:_,getPathBBox:K,getPathLength:function(t){let e=0;return T(t).forEach((t,r,n)=>{const s="M"!==t[0]?[...n[r-1].slice(-2),...t.slice(1)]:[];e+="M"===t[0]?0:et(...s)}),e},getPointAtLength:function(t,e){let r,n,s,a=0;return T(t).map((t,i,m)=>{if(n=i?[...m[i-1].slice(-2),...t.slice(1)]:t.slice(1),r=i?et(...n):0,a+=r,0===i)s={x:n[0],y:n[1]};else if(a>e&&e>a-r){const t=[...n,1-(a-e)/r];s=S(...t)}else s=null;return s}).filter(t=>t).slice(-1)[0]},clonePath:c,splitPath:j,fixPath:N,roundPath:V,optimizePath:L,reverseCurve:function(t){const e=t.slice(1).map((e,r,n)=>r?[...n[r-1].slice(-2),...e.slice(1)]:[...t[0].slice(1),...e.slice(1)]).map(t=>t.map((e,r)=>t[t.length-r-2*(1-r%2)])).reverse();return[["M",...e[0].slice(0,2)],...e.map(t=>["C",...t.slice(2)])]},reversePath:$,normalizePath:v,transformPath:G,shapeToPath:function(e,r){const n=Object.keys(rt),s=e instanceof Element;if(s&&!n.some(t=>e.tagName===t))throw TypeError(`shapeToPath: "${e}" is not SVGElement`);const a=document.createElementNS("http://www.w3.org/2000/svg","path"),i=s?e.tagName:e.type,m={};if(m.type=i,s){const t=rt[i];t.forEach(t=>{m[t]=e.getAttribute(t)}),Object.values(e.attributes).forEach(({name:e,value:r})=>{t.includes(e)||a.setAttribute(e,r)})}else Object.assign(m,e);let o;const{round:c}=t;return"circle"===i?o=z(function(t){const{cx:e,cy:r,r:n}=t;return[["M",e-n,r],["a",n,n,0,1,0,2*n,0],["a",n,n,0,1,0,-2*n,0]]}(m),c):"ellipse"===i?o=z(function(t){const{cx:e,cy:r,rx:n,ry:s}=t;return[["M",e-n,r],["a",n,s,0,1,0,2*n,0],["a",n,s,0,1,0,-2*n,0]]}(m),c):["polyline","polygon"].includes(i)?o=z(function(t){const e=[],r=t.points.split(/[\s|,]/).map(Number);let n=0;for(;n<r.length;)e.push([n?"L":"M",r[n],r[n+1]]),n+=2;return"polygon"===t.type?[...e,["z"]]:e}(m),c):"rect"===i?o=z(function(t){const e=+t.x||0,r=+t.y||0,n=+t.width,s=+t.height;let a=+t.rx,i=+t.ry;return a||i?(a=a||i,i=i||a,2*a>n&&(a-=(2*a-n)/2),2*i>s&&(i-=(2*i-s)/2),[["M",e+a,r],["h",n-2*a],["s",a,0,a,i],["v",s-2*i],["s",0,i,-a,i],["h",2*a-n],["s",-a,0,-a,-i],["v",2*i-s],["s",0,-i,a,-i]]):[["M",e,r],["h",n],["v",s],["H",e],["Z"]]}(m),c):"line"===i?o=z(function(t){const{x1:e,y1:r,x2:n,y2:s}=t;return[["M",e,r],["L",n,s]]}(m),c):"glyph"===i&&(o=s?e.getAttribute("d"):e.type),!!o&&(a.setAttribute("d",o),r&&s&&(e.before(a,e),e.remove()),a)},options:t};Object.assign(W,nt,{Version:"0.1.21"});export{W as default};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* SVGPathCommander v0.1.
|
|
2
|
+
* SVGPathCommander v0.1.21 (http://thednp.github.io/svg-path-commander)
|
|
3
3
|
* Copyright 2021 © thednp
|
|
4
4
|
* Licensed under MIT (https://github.com/thednp/svg-path-commander/blob/master/LICENSE)
|
|
5
5
|
*/
|
|
@@ -2463,11 +2463,13 @@
|
|
|
2463
2463
|
* @returns {[number, number]} the projected [x,y] coordinates
|
|
2464
2464
|
*/
|
|
2465
2465
|
function projection2d(m, point2D, origin) {
|
|
2466
|
+
var px = point2D[0];
|
|
2467
|
+
var py = point2D[1];
|
|
2466
2468
|
var originX = origin[0];
|
|
2467
2469
|
var originY = origin[1];
|
|
2468
2470
|
var originZ = origin[2];
|
|
2469
2471
|
var point3D = m.transformPoint({
|
|
2470
|
-
x:
|
|
2472
|
+
x: px, y: py, z: 0, w: 1,
|
|
2471
2473
|
});
|
|
2472
2474
|
|
|
2473
2475
|
var relativePositionX = point3D.x - originX;
|
|
@@ -2691,7 +2693,7 @@
|
|
|
2691
2693
|
function getPathBBox(path) {
|
|
2692
2694
|
if (!path) {
|
|
2693
2695
|
return {
|
|
2694
|
-
x: 0, y: 0, width: 0, height: 0, x2: 0, y2: 0, cx: 0, cy: 0,
|
|
2696
|
+
x: 0, y: 0, width: 0, height: 0, x2: 0, y2: 0, cx: 0, cy: 0, cz: 0,
|
|
2695
2697
|
};
|
|
2696
2698
|
}
|
|
2697
2699
|
var pathCurve = pathToCurve(path);
|
|
@@ -2727,16 +2729,22 @@
|
|
|
2727
2729
|
});
|
|
2728
2730
|
|
|
2729
2731
|
// @ts-ignore
|
|
2730
|
-
|
|
2732
|
+
// const xTop = Math.min.apply(0, X);
|
|
2733
|
+
var xTop = Math.min.apply(Math, X);
|
|
2731
2734
|
// @ts-ignore
|
|
2732
|
-
|
|
2735
|
+
// const yTop = Math.min.apply(0, Y);
|
|
2736
|
+
var yTop = Math.min.apply(Math, Y);
|
|
2733
2737
|
// @ts-ignore
|
|
2734
|
-
|
|
2738
|
+
// const xBot = Math.max.apply(0, X);
|
|
2739
|
+
var xBot = Math.max.apply(Math, X);
|
|
2735
2740
|
// @ts-ignore
|
|
2736
|
-
|
|
2741
|
+
// const yBot = Math.max.apply(0, Y);
|
|
2742
|
+
var yBot = Math.max.apply(Math, Y);
|
|
2737
2743
|
var width = xBot - xTop;
|
|
2738
2744
|
var height = yBot - yTop;
|
|
2739
2745
|
|
|
2746
|
+
// an estimted guess
|
|
2747
|
+
var cz = Math.max(width, height) + Math.min(width, height) / 2;
|
|
2740
2748
|
return {
|
|
2741
2749
|
width: width,
|
|
2742
2750
|
height: height,
|
|
@@ -2746,6 +2754,7 @@
|
|
|
2746
2754
|
y2: yBot,
|
|
2747
2755
|
cx: xTop + width / 2,
|
|
2748
2756
|
cy: yTop + height / 2,
|
|
2757
|
+
cz: cz,
|
|
2749
2758
|
};
|
|
2750
2759
|
}
|
|
2751
2760
|
|
|
@@ -2769,8 +2778,11 @@
|
|
|
2769
2778
|
var BBox = getPathBBox(this.segments);
|
|
2770
2779
|
var width = BBox.width;
|
|
2771
2780
|
var height = BBox.height;
|
|
2781
|
+
var cx = BBox.cx;
|
|
2782
|
+
var cy = BBox.cy;
|
|
2783
|
+
var cz = BBox.cz;
|
|
2772
2784
|
|
|
2773
|
-
// set instance options
|
|
2785
|
+
// set instance options.round
|
|
2774
2786
|
var round = defaultOptions.round;
|
|
2775
2787
|
var origin = defaultOptions.origin;
|
|
2776
2788
|
var roundOption = instanceOptions.round;
|
|
@@ -2783,16 +2795,18 @@
|
|
|
2783
2795
|
round = roundOption;
|
|
2784
2796
|
}
|
|
2785
2797
|
|
|
2786
|
-
|
|
2787
|
-
|
|
2788
|
-
|
|
2798
|
+
// set instance options.origin
|
|
2799
|
+
if (Array.isArray(originOption) && originOption.length >= 2) {
|
|
2800
|
+
var ref = originOption.map(Number);
|
|
2801
|
+
var originX = ref[0];
|
|
2802
|
+
var originY = ref[1];
|
|
2803
|
+
var originZ = ref[2];
|
|
2804
|
+
origin = [
|
|
2805
|
+
!Number.isNaN(originX) ? originX : cx,
|
|
2806
|
+
!Number.isNaN(originY) ? originY : cy,
|
|
2807
|
+
originZ || cz ];
|
|
2789
2808
|
} else {
|
|
2790
|
-
|
|
2791
|
-
var cx = BBox.cx;
|
|
2792
|
-
var cy = BBox.cy;
|
|
2793
|
-
// an estimted guess
|
|
2794
|
-
var originZ = Math.max(width, height) + Math.min(width, height) / 2;
|
|
2795
|
-
origin = [cx, cy, originZ];
|
|
2809
|
+
origin = [cx, cy, cz];
|
|
2796
2810
|
}
|
|
2797
2811
|
|
|
2798
2812
|
/**
|
|
@@ -2800,9 +2814,6 @@
|
|
|
2800
2814
|
* @default 4
|
|
2801
2815
|
*/
|
|
2802
2816
|
this.round = round;
|
|
2803
|
-
/**
|
|
2804
|
-
* @default [0,0]
|
|
2805
|
-
*/
|
|
2806
2817
|
this.origin = origin;
|
|
2807
2818
|
|
|
2808
2819
|
return this;
|
|
@@ -2925,7 +2936,21 @@
|
|
|
2925
2936
|
|
|
2926
2937
|
// if origin is not specified
|
|
2927
2938
|
// it's important that we have one
|
|
2928
|
-
|
|
2939
|
+
var origin = transform.origin;
|
|
2940
|
+
if (origin && origin.length >= 2) {
|
|
2941
|
+
var ref$1 = origin.map(Number);
|
|
2942
|
+
var originX = ref$1[0];
|
|
2943
|
+
var originY = ref$1[1];
|
|
2944
|
+
var originZ = ref$1[2];
|
|
2945
|
+
var ref$2 = this.origin;
|
|
2946
|
+
var cx = ref$2[0];
|
|
2947
|
+
var cy = ref$2[1];
|
|
2948
|
+
var cz = ref$2[2];
|
|
2949
|
+
transform.origin = [
|
|
2950
|
+
!Number.isNaN(originX) ? originX : cx,
|
|
2951
|
+
!Number.isNaN(originY) ? originY : cy,
|
|
2952
|
+
originZ || cz ];
|
|
2953
|
+
} else {
|
|
2929
2954
|
// @ts-ignore
|
|
2930
2955
|
transform.origin = Object.assign({}, this.origin);
|
|
2931
2956
|
}
|
|
@@ -3396,7 +3421,7 @@
|
|
|
3396
3421
|
options: defaultOptions,
|
|
3397
3422
|
};
|
|
3398
3423
|
|
|
3399
|
-
var version = "0.1.
|
|
3424
|
+
var version = "0.1.21";
|
|
3400
3425
|
|
|
3401
3426
|
// @ts-ignore
|
|
3402
3427
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// SVGPathCommander v0.1.
|
|
2
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).SVGPathCommander=e()}(this,(function(){"use strict";var t={origin:[0,0,0],round:4},e={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0};function r(t){var r=t.pathValue[t.segmentStart],n=r.toLowerCase(),a=t.data;for("m"===n&&a.length>2&&(t.segments.push([r,a[0],a[1]]),a=a.slice(2),n="l",r="m"===r?"l":"L");a.length>=e[n]&&(t.segments.push([r].concat(a.splice(0,e[n]))),e[n]););}function n(t){var e=t.index,r=t.pathValue.charCodeAt(e);return 48===r?(t.param=0,void(t.index+=1)):49===r?(t.param=1,void(t.index+=1)):void(t.err='Invalid path value: invalid Arc flag "'+r+'", expecting 0 or 1 at index '+e)}function a(t){return t>=48&&t<=57}function i(t){var e,r=t.max,n=t.pathValue,i=t.index,s=i,o=!1,c=!1,u=!1,m=!1;if(s>=r)t.err="Invalid path value at "+s+": missing param "+n[s];else if(43!==(e=n.charCodeAt(s))&&45!==e||(e=(s+=1)<r?n.charCodeAt(s):0),a(e)||46===e){if(46!==e){if(o=48===e,e=(s+=1)<r?n.charCodeAt(s):0,o&&s<r&&e&&a(e))return void(t.err="Invalid path value at index "+i+": "+n[i]+" illegal number");for(;s<r&&a(n.charCodeAt(s));)s+=1,c=!0;e=s<r?n.charCodeAt(s):0}if(46===e){for(m=!0,s+=1;a(n.charCodeAt(s));)s+=1,u=!0;e=s<r?n.charCodeAt(s):0}if(101===e||69===e){if(m&&!c&&!u)return void(t.err="Invalid path value at index "+s+": "+n[s]+" invalid float exponent");if(43!==(e=(s+=1)<r?n.charCodeAt(s):0)&&45!==e||(s+=1),!(s<r&&a(n.charCodeAt(s))))return void(t.err="Invalid path value at index "+s+": "+n[s]+" invalid float exponent");for(;s<r&&a(n.charCodeAt(s));)s+=1}t.index=s,t.param=+t.pathValue.slice(i,s)}else t.err="Invalid path value at index "+s+": "+n[s]+" is not a number"}function s(t){for(var e,r=t.pathValue,n=t.max;t.index<n&&(10===(e=r.charCodeAt(t.index))||13===e||8232===e||8233===e||32===e||9===e||11===e||12===e||160===e||e>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(e)>=0);)t.index+=1}function o(t){return t>=48&&t<=57||43===t||45===t||46===t}function c(t){var a=t.max,c=t.pathValue,u=t.index,m=c.charCodeAt(u),h=e[c[u].toLowerCase()];if(t.segmentStart=u,function(t){switch(32|t){case 109:case 122:case 108:case 104:case 118:case 99:case 115:case 113:case 116:case 97:return!0;default:return!1}}(m))if(t.index+=1,s(t),t.data=[],h){for(;;){for(var l=h;l>0;l-=1){if(97!=(32|m)||3!==l&&4!==l?i(t):n(t),t.err.length)return;t.data.push(t.param),s(t),t.index<a&&44===c.charCodeAt(t.index)&&(t.index+=1,s(t))}if(t.index>=t.max)break;if(!o(c.charCodeAt(t.index)))break}r(t)}else r(t);else t.err="Invalid path value: "+c[u]+" not a path command"}function u(t){return t.map((function(t){return Array.isArray(t)?[].concat(t):t}))}function m(t){this.segments=[],this.pathValue=t,this.max=t.length,this.index=0,this.param=0,this.segmentStart=0,this.data=[],this.err=""}function h(t){return Array.isArray(t)&&t.every((function(t){var r=t[0].toLowerCase();return e[r]===t.length-1&&"achlmqstvz".includes(r)}))}function l(t){if(Array.isArray(t)&&h(t))return u(t);var e=new m(t);for(s(e);e.index<e.max&&!e.err.length;)c(e);return e.err.length?e.segments=[]:e.segments.length&&("mM".includes(e.segments[0][0])?e.segments[0][0]="M":(e.err="Invalid path value: missing M/m",e.segments=[])),e.segments}function f(t){return h(t)&&t.every((function(t){return t[0]===t[0].toUpperCase()}))}function p(t){if(Array.isArray(t)&&f(t))return u(t);var e=l(t),r=0,n=0,a=0,i=0;return e.map((function(t){var e,s=t.slice(1).map(Number),o=t[0],c=o.toUpperCase();if("M"===o)return r=(e=s)[0],n=e[1],a=r,i=n,["M",r,n];var u=[];if(o!==c)switch(c){case"A":u=[c,s[0],s[1],s[2],s[3],s[4],s[5]+r,s[6]+n];break;case"V":u=[c,s[0]+n];break;case"H":u=[c,s[0]+r];break;default:var m=s.map((function(t,e){return t+(e%2?n:r)}));u=[c].concat(m)}else u=[c].concat(s);var h=u.length;switch(c){case"Z":r=a,n=i;break;case"H":r=u[1];break;case"V":n=u[1];break;default:r=u[h-2],n=u[h-1],"M"===c&&(a=r,i=n)}return u}))}function y(t){return h(t)&&t.slice(1).every((function(t){return t[0]===t[0].toLowerCase()}))}function v(t){if(y(t))return u(t);var e=l(t),r=0,n=0,a=0,i=0;return e.map((function(t){var e,s,o=t.slice(1).map(Number),c=t[0],u=c.toLowerCase();if("M"===c)return r=(e=o)[0],n=e[1],a=r,i=n,["M",r,n];var m=[];if(c!==u)switch(u){case"a":m=[u,o[0],o[1],o[2],o[3],o[4],o[5]-r,o[6]-n];break;case"v":m=[u,o[0]-n];break;case"h":m=[u,o[0]-r];break;default:var h=o.map((function(t,e){return t-(e%2?n:r)}));m=[u].concat(h),"m"===u&&(r=(s=o)[0],n=s[1],a=r,i=n)}else"m"===c&&(a=o[0]+r,i=o[1]+n),m=[u].concat(o);var l=m.length;switch(u){case"z":r=a,n=i;break;case"h":r+=m[1];break;case"v":n+=m[1];break;default:r+=m[l-2],n+=m[l-1]}return m}))}function d(t,e,r){if(t[r].length>7){t[r].shift();for(var n=t[r],a=r;n.length;)e[r]="A",t.splice(a+=1,0,["C"].concat(n.splice(0,6)));t.splice(r,1)}}function x(t,e,r){var n=t[0],a=e.x1,i=e.y1,s=e.x2,o=e.y2,c=t.slice(1).map(Number),u=t;if("TQ".includes(n)||(e.qx=null,e.qy=null),"H"===n)u=["L",t[1],i];else if("V"===n)u=["L",a,t[1]];else if("S"===n){var m=function(t,e,r,n,a){return"CS".includes(a)?{x1:2*t-r,y1:2*e-n}:{x1:t,y1:e}}(a,i,s,o,r),h=m.x1,l=m.y1;e.x1=h,e.y1=l,u=["C",h,l].concat(c)}else if("T"===n){var f=function(t,e,r,n,a){return"QT".includes(a)?{qx:2*t-r,qy:2*e-n}:{qx:t,qy:e}}(a,i,e.qx,e.qy,r),p=f.qx,y=f.qy;e.qx=p,e.qy=y,u=["Q",p,y].concat(c)}else if("Q"===n){var v=c[0],d=c[1];e.qx=v,e.qy=d}return u}function g(t){return f(t)&&t.every((function(t){return"ACLMQZ".includes(t[0])}))}var M={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null};function b(t){if(g(t))return u(t);for(var e=p(t),r=Object.assign({},M),n=[],a=e.length,i="",s="",o=0;o<a;o+=1){i=e[o][0],n[o]=i,o&&(s=n[o-1]),e[o]=x(e[o],r,s);var c=e[o],m=c.length;r.x1=+c[m-2],r.y1=+c[m-1],r.x2=+c[m-4]||r.x1,r.y2=+c[m-3]||r.y1}return e}function w(t){var e=l(t),r=b(e),n=e.length,a="Z"===r.slice(-1)[0][0],i=a?n-2:n-1,s=r[0].slice(1),o=s[0],c=s[1],u=r[i].slice(-2),m=u[0],h=u[1];return a&&o===m&&c===h?e.slice(0,-1):e}function A(t){return h(t)&&t.every((function(t){return"MC".includes(t[0])}))}function N(t,e,r){return{x:t*Math.cos(r)-e*Math.sin(r),y:t*Math.sin(r)+e*Math.cos(r)}}function C(t,e,r,n,a,i,s,o,c,u){var m,h,l,f,p,y,v=t,d=e,x=r,g=n,M=o,b=c,w=120*Math.PI/180,A=Math.PI/180*(+a||0),k=[];if(u)l=(m=u)[0],f=m[1],p=m[2],y=m[3];else{v=(h=N(v,d,-A)).x,d=h.y;var S=(v-(M=(h=N(M,b,-A)).x))/2,q=(d-(b=h.y))/2,P=S*S/(x*x)+q*q/(g*g);P>1&&(x*=P=Math.sqrt(P),g*=P);var I=x*x,T=g*g,j=(i===s?-1:1)*Math.sqrt(Math.abs((I*T-I*q*q-T*S*S)/(I*q*q+T*S*S)));p=j*x*q/g+(v+M)/2,y=j*-g*S/x+(d+b)/2,l=(Math.asin((d-y)/g)*Math.pow(10,9)>>0)/Math.pow(10,9),f=(Math.asin((b-y)/g)*Math.pow(10,9)>>0)/Math.pow(10,9),l=v<p?Math.PI-l:l,f=M<p?Math.PI-f:f,l<0&&(l=2*Math.PI+l),f<0&&(f=2*Math.PI+f),s&&l>f&&(l-=2*Math.PI),!s&&f>l&&(f-=2*Math.PI)}var V=f-l;if(Math.abs(V)>w){var O=f,z=M,E=b;f=l+w*(s&&f>l?1:-1),k=C(M=p+x*Math.cos(f),b=y+g*Math.sin(f),x,g,a,0,s,z,E,[f,O,p,y])}V=f-l;var L=Math.cos(l),Q=Math.sin(l),Z=Math.cos(f),D=Math.sin(f),X=Math.tan(V/4),H=4/3*x*X,Y=4/3*g*X,R=[v,d],F=[v+H*Q,d-Y*L],B=[M+H*D,b-Y*Z],G=[M,b];if(F[0]=2*R[0]-F[0],F[1]=2*R[1]-F[1],u)return F.concat(B,G,k);for(var J=[],U=0,$=(k=F.concat(B,G,k)).length;U<$;U+=1)J[U]=U%2?N(k[U-1],k[U],A).y:N(k[U],k[U+1],A).x;return J}function k(t,e,r,n,a,i){return[1/3*t+2/3*r,1/3*e+2/3*n,1/3*a+2/3*r,1/3*i+2/3*n,a,i]}function S(t,e,r,n,a,i,s,o,c){var u=1-c;return{x:Math.pow(u,3)*t+u*u*3*c*r+3*u*c*c*a+Math.pow(c,3)*s,y:Math.pow(u,3)*e+u*u*3*c*n+3*u*c*c*i+Math.pow(c,3)*o}}function q(t,e,r){var n=t[0],a=t[1];return[n+(e[0]-n)*r,a+(e[1]-a)*r]}function P(t,e,r,n){var a=.5,i=[t,e],s=[r,n],o=q(i,s,a),c=q(s,o,a),u=q(o,c,a),m=q(c,u,a),h=q(u,m,a),l=i.concat(o,u,h,[a]),f=S.apply(void 0,l),p=h.concat(m,c,s,[0]),y=S.apply(void 0,p);return[f.x,f.y,y.x,y.y,r,n]}function I(t,e){var r,n=t[0],a=t.slice(1).map((function(t){return+t})),i=a[0],s=a[1],o=e.x1,c=e.y1,u=e.x,m=e.y;switch("TQ".includes(n)||(e.qx=null,e.qy=null),n){case"M":return e.x=i,e.y=s,t;case"A":return r=[o,c].concat(a),["C"].concat(C.apply(void 0,r));case"Q":return e.qx=i,e.qy=s,r=[o,c].concat(a),["C"].concat(k.apply(void 0,r));case"L":return["C"].concat(P(o,c,i,s));case"Z":return["C"].concat(P(o,c,u,m))}return t}function T(t){if(A(t))return u(t);for(var e=w(b(t)),r=Object.assign({},M),n=[],a="",i=e.length,s=0;s<i;s+=1){a=e[s][0],n[s]=a,e[s]=I(e[s],r),d(e,n,s),i=e.length;var o=e[s],c=o.length;r.x1=+o[c-2],r.y1=+o[c-1],r.x2=+o[c-4]||r.x1,r.y2=+o[c-3]||r.y1}return e}function j(e,r){var n=t.round;if(!1===r||!1===n)return u(e);var a=(n=r>=1?r:n)>=1?Math.pow(10,n):1;return e.map((function(t){var e=t.slice(1).map(Number).map((function(t){return t%1==0?t:Math.round(t*a)/a}));return[t[0]].concat(e)}))}function V(t,e){return j(t,e).map((function(t){return t[0]+t.slice(1).join(" ")})).join("")}function O(t){var e=p(t),r="Z"===e.slice(-1)[0][0],n=b(e).map((function(t,r){var n=t.slice(-2).map(Number),a=n[0],i=n[1];return{seg:e[r],n:t,c:e[r][0],x:a,y:i}})).map((function(t,e,n){var a=t.seg,i=t.n,s=e&&n[e-1],o=n[e+1]&&n[e+1],c=t.c,u=n.length,m=e?n[e-1].x:n[u-1].x,h=e?n[e-1].y:n[u-1].y,l=[];switch(c){case"M":l=r?["Z"]:[c,m,h];break;case"A":l=[c].concat(a.slice(1,-3),[1===a[5]?0:1],[m],[h]);break;case"C":l=o&&"S"===o.c?["S",a[1],a[2],m,h]:[c,a[3],a[4],a[1],a[2],m,h];break;case"S":l=s&&"CS".includes(s.c)&&(!o||o&&"S"!==o.c)?["C",i[3],i[4],i[1],i[2],m,h]:[c,i[1],i[2],m,h];break;case"Q":l=o&&"T"===o.c?["T",m,h]:[c].concat(a.slice(1,-2),[m],[h]);break;case"T":l=s&&"QT".includes(s.c)&&(!o||o&&"T"!==o.c)?["Q",i[1],i[2],m,h]:[c,m,h];break;case"Z":l=["M",m,h];break;case"H":l=[c,m];break;case"V":l=[c,h];break;default:l=[c].concat(a.slice(1,-2),[m],[h])}return l}));return r?n.reverse():[n[0]].concat(n.slice(1).reverse())}function z(t){return V(p(t),0).replace(/(m|M)/g,"|$1").split("|").map((function(t){return t.trim()})).filter((function(t){return t}))}function E(t,e,r,n){var a=t[0],i=function(t){return Math.round(t*Math.pow(10,4))/Math.pow(10,4)},s=t.slice(1).map((function(t){return+t})),o=e.slice(1).map((function(t){return+t})),c=r.x1,u=r.y1,m=r.x2,h=r.y2,l=r.x,f=r.y,p=t,y=o.slice(-2),v=y[0],d=y[1];if("TQ".includes(a)||(r.qx=null,r.qy=null),["V","H","S","T","Z"].includes(a))p=[a].concat(s);else if("L"===a)i(l)===i(v)?p=["V",d]:i(f)===i(d)&&(p=["H",v]);else if("C"===a){var x=o[0],g=o[1];"CS".includes(n)&&i(x)===i(2*c-m)&&i(g)===i(2*u-h)&&(p=["S"].concat(o.slice(-4))),r.x1=x,r.y1=g}else if("Q"===a){var M=o[0],b=o[1];r.qx=M,r.qy=b,"QT".includes(n)&&i(M)===i(2*c-m)&&i(b)===i(2*u-h)&&(p=["T"].concat(o.slice(-2)))}return p}function L(t,e){for(var r,n=p(t),a=b(n),i=Object.assign({},M),s=[],o=n.length,c="",u="",m=0,h=0,l=0,f=0,y=0;y<o;y+=1){c=n[y][0],s[y]=c,y&&(u=s[y-1]),n[y]=E(n[y],a[y],i,u);var d=n[y],x=d.length;switch(i.x1=+d[x-2],i.y1=+d[x-1],i.x2=+d[x-4]||i.x1,i.y2=+d[x-3]||i.y1,c){case"Z":m=l,h=f;break;case"H":m=d[1];break;case"V":h=d[1];break;default:m=(r=d.slice(-2).map(Number))[0],h=r[1],"M"===c&&(l=m,f=h)}i.x=m,i.y=h}var g=j(n,e),w=j(v(n),e);return g.map((function(t,e){return e?t.join("").length<w[e].join("").length?t:w[e]:t}))}function Q(t){var e=new J,r=Array.from(t);if(!r.every((function(t){return!Number.isNaN(t)})))throw TypeError('CSSMatrix: "'+t+'" must only have numbers.');if(16===r.length){var n=r[0],a=r[1],i=r[2],s=r[3],o=r[4],c=r[5],u=r[6],m=r[7],h=r[8],l=r[9],f=r[10],p=r[11],y=r[12],v=r[13],d=r[14],x=r[15];e.m11=n,e.a=n,e.m21=o,e.c=o,e.m31=h,e.m41=y,e.e=y,e.m12=a,e.b=a,e.m22=c,e.d=c,e.m32=l,e.m42=v,e.f=v,e.m13=i,e.m23=u,e.m33=f,e.m43=d,e.m14=s,e.m24=m,e.m34=p,e.m44=x}else{if(6!==r.length)throw new TypeError("CSSMatrix: expecting an Array of 6/16 values.");var g=r[0],M=r[1],b=r[2],w=r[3],A=r[4],N=r[5];e.m11=g,e.a=g,e.m12=M,e.b=M,e.m21=b,e.c=b,e.m22=w,e.d=w,e.m41=A,e.e=A,e.m42=N,e.f=N}return e}function Z(t){var e=Object.keys(new J);if("object"==typeof t&&e.every((function(e){return e in t})))return Q([t.m11,t.m12,t.m13,t.m14,t.m21,t.m22,t.m23,t.m24,t.m31,t.m32,t.m33,t.m34,t.m41,t.m42,t.m43,t.m44]);throw TypeError('CSSMatrix: "'+t+'" is not a DOMMatrix / CSSMatrix / JSON compatible object.')}function D(t){if("string"!=typeof t)throw TypeError('CSSMatrix: "'+t+'" is not a string.');var e=String(t).replace(/\s/g,""),r=new J,n='CSSMatrix: invalid transform string "'+t+'"';return e.split(")").filter((function(t){return t})).forEach((function(t){var e=t.split("("),a=e[0],i=e[1];if(!i)throw TypeError(n);var s=i.split(",").map((function(t){return t.includes("rad")?parseFloat(t)*(180/Math.PI):parseFloat(t)})),o=s[0],c=s[1],u=s[2],m=s[3],h=[o,c,u],l=[o,c,u,m];if("perspective"===a&&o&&[c,u].every((function(t){return void 0===t})))r.m34=-1/o;else if(a.includes("matrix")&&[6,16].includes(s.length)&&s.every((function(t){return!Number.isNaN(+t)}))){var f=s.map((function(t){return Math.abs(t)<1e-6?0:t}));r=r.multiply(Q(f))}else if("translate3d"===a&&h.every((function(t){return!Number.isNaN(+t)})))r=r.translate(o,c,u);else if("translate"===a&&o&&void 0===u)r=r.translate(o,c||0,0);else if("rotate3d"===a&&l.every((function(t){return!Number.isNaN(+t)}))&&m)r=r.rotateAxisAngle(o,c,u,m);else if("rotate"===a&&o&&[c,u].every((function(t){return void 0===t})))r=r.rotate(0,0,o);else if("scale3d"===a&&h.every((function(t){return!Number.isNaN(+t)}))&&h.some((function(t){return 1!==t})))r=r.scale(o,c,u);else if("scale"!==a||Number.isNaN(o)||1===o||void 0!==u)if("skew"===a&&o&&void 0===u)r=r.skewX(o),r=c?r.skewY(c):r;else{if(!(/[XYZ]/.test(a)&&o&&[c,u].every((function(t){return void 0===t}))&&["translate","rotate","scale","skew"].some((function(t){return a.includes(t)}))))throw TypeError(n);if(["skewX","skewY"].includes(a))r=r[a](o);else{var p=a.replace(/[XYZ]/,""),y=a.replace(p,""),v=["X","Y","Z"].indexOf(y),d=[0===v?o:0,1===v?o:0,2===v?o:0];r=r[p].apply(r,d)}}else{var x=Number.isNaN(+c)?o:c;r=r.scale(o,x,1)}})),r}function X(t,e,r){var n=new J;return n.m41=t,n.e=t,n.m42=e,n.f=e,n.m43=r,n}function H(t,e,r){var n=new J,a=Math.PI/180,i=t*a,s=e*a,o=r*a,c=Math.cos(i),u=-Math.sin(i),m=Math.cos(s),h=-Math.sin(s),l=Math.cos(o),f=-Math.sin(o),p=m*l,y=-m*f;n.m11=p,n.a=p,n.m12=y,n.b=y,n.m13=h;var v=u*h*l+c*f;n.m21=v,n.c=v;var d=c*l-u*h*f;return n.m22=d,n.d=d,n.m23=-u*m,n.m31=u*f-c*h*l,n.m32=u*l+c*h*f,n.m33=c*m,n}function Y(t,e,r,n){var a=new J,i=n*(Math.PI/360),s=Math.sin(i),o=Math.cos(i),c=s*s,u=Math.sqrt(t*t+e*e+r*r),m=t,h=e,l=r;0===u?(m=0,h=0,l=1):(m/=u,h/=u,l/=u);var f=m*m,p=h*h,y=l*l,v=1-2*(p+y)*c;a.m11=v,a.a=v;var d=2*(m*h*c+l*s*o);a.m12=d,a.b=d,a.m13=2*(m*l*c-h*s*o);var x=2*(h*m*c-l*s*o);a.m21=x,a.c=x;var g=1-2*(y+f)*c;return a.m22=g,a.d=g,a.m23=2*(h*l*c+m*s*o),a.m31=2*(l*m*c+h*s*o),a.m32=2*(l*h*c-m*s*o),a.m33=1-2*(f+p)*c,a}function R(t,e,r){var n=new J;return n.m11=t,n.a=t,n.m22=e,n.d=e,n.m33=r,n}function F(t){var e=new J,r=t*Math.PI/180,n=Math.tan(r);return e.m21=n,e.c=n,e}function B(t){var e=new J,r=t*Math.PI/180,n=Math.tan(r);return e.m12=n,e.b=n,e}function G(t,e){return Q([e.m11*t.m11+e.m12*t.m21+e.m13*t.m31+e.m14*t.m41,e.m11*t.m12+e.m12*t.m22+e.m13*t.m32+e.m14*t.m42,e.m11*t.m13+e.m12*t.m23+e.m13*t.m33+e.m14*t.m43,e.m11*t.m14+e.m12*t.m24+e.m13*t.m34+e.m14*t.m44,e.m21*t.m11+e.m22*t.m21+e.m23*t.m31+e.m24*t.m41,e.m21*t.m12+e.m22*t.m22+e.m23*t.m32+e.m24*t.m42,e.m21*t.m13+e.m22*t.m23+e.m23*t.m33+e.m24*t.m43,e.m21*t.m14+e.m22*t.m24+e.m23*t.m34+e.m24*t.m44,e.m31*t.m11+e.m32*t.m21+e.m33*t.m31+e.m34*t.m41,e.m31*t.m12+e.m32*t.m22+e.m33*t.m32+e.m34*t.m42,e.m31*t.m13+e.m32*t.m23+e.m33*t.m33+e.m34*t.m43,e.m31*t.m14+e.m32*t.m24+e.m33*t.m34+e.m34*t.m44,e.m41*t.m11+e.m42*t.m21+e.m43*t.m31+e.m44*t.m41,e.m41*t.m12+e.m42*t.m22+e.m43*t.m32+e.m44*t.m42,e.m41*t.m13+e.m42*t.m23+e.m43*t.m33+e.m44*t.m43,e.m41*t.m14+e.m42*t.m24+e.m43*t.m34+e.m44*t.m44])}var J=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r=this;if(r.a=1,r.b=0,r.c=0,r.d=1,r.e=0,r.f=0,r.m11=1,r.m12=0,r.m13=0,r.m14=0,r.m21=0,r.m22=1,r.m23=0,r.m24=0,r.m31=0,r.m32=0,r.m33=1,r.m34=0,r.m41=0,r.m42=0,r.m43=0,r.m44=1,t&&t.length){var n=[16,6].some((function(e){return e===t.length}))?t:t[0];return r.setMatrixValue(n)}return r},U={isIdentity:{configurable:!0},is2D:{configurable:!0}};U.isIdentity.set=function(t){this.isIdentity=t},U.isIdentity.get=function(){var t=this;return 1===t.m11&&0===t.m12&&0===t.m13&&0===t.m14&&0===t.m21&&1===t.m22&&0===t.m23&&0===t.m24&&0===t.m31&&0===t.m32&&1===t.m33&&0===t.m34&&0===t.m41&&0===t.m42&&0===t.m43&&1===t.m44},U.is2D.get=function(){var t=this;return 0===t.m31&&0===t.m32&&1===t.m33&&0===t.m34&&0===t.m43&&1===t.m44},U.is2D.set=function(t){this.is2D=t},J.prototype.setMatrixValue=function(t){return[Array,Float64Array,Float32Array].some((function(e){return t instanceof e}))?Q(t):"string"==typeof t&&t.length&&"none"!==t?D(t):"object"==typeof t?Z(t):this},J.prototype.toArray=function(){var t=this,e=Math.pow(10,6);return(t.is2D?[t.a,t.b,t.c,t.d,t.e,t.f]:[t.m11,t.m12,t.m13,t.m14,t.m21,t.m22,t.m23,t.m24,t.m31,t.m32,t.m33,t.m34,t.m41,t.m42,t.m43,t.m44]).map((function(t){return Math.abs(t)<1e-6?0:(t*e>>0)/e}))},J.prototype.toString=function(){var t=this.toArray();return(this.is2D?"matrix":"matrix3d")+"("+t+")"},J.prototype.toJSON=function(){var t=this,e=t.is2D,r=t.isIdentity;return Object.assign({},t,{is2D:e,isIdentity:r})},J.prototype.multiply=function(t){return G(this,t)},J.prototype.translate=function(t,e,r){var n=e,a=r;return void 0===a&&(a=0),void 0===n&&(n=0),G(this,X(t,n,a))},J.prototype.scale=function(t,e,r){var n=e,a=r;return void 0===n&&(n=t),void 0===a&&(a=1),G(this,R(t,n,a))},J.prototype.rotate=function(t,e,r){var n=t,a=e,i=r;return void 0===a&&(a=0),void 0===i&&(i=n,n=0),G(this,H(n,a,i))},J.prototype.rotateAxisAngle=function(t,e,r,n){if([t,e,r,n].some((function(t){return Number.isNaN(t)})))throw new TypeError("CSSMatrix: expecting 4 values");return G(this,Y(t,e,r,n))},J.prototype.skewX=function(t){return G(this,F(t))},J.prototype.skewY=function(t){return G(this,B(t))},J.prototype.transformPoint=function(t){var e=X(t.x,t.y,t.z);return e.m44=t.w||1,{x:(e=this.multiply(e)).m41,y:e.m42,z:e.m43,w:e.m44}},J.prototype.transform=function(t){var e=this,r=e.m11*t.x+e.m12*t.y+e.m13*t.z+e.m14*t.w,n=e.m21*t.x+e.m22*t.y+e.m23*t.z+e.m24*t.w,a=e.m31*t.x+e.m32*t.y+e.m33*t.z+e.m34*t.w,i=e.m41*t.x+e.m42*t.y+e.m43*t.z+e.m44*t.w;return{x:r/i,y:n/i,z:a/i,w:i}},Object.defineProperties(J.prototype,U),Object.assign(J,{Translate:X,Rotate:H,RotateAxisAngle:Y,Scale:R,SkewX:F,SkewY:B,Multiply:G,fromArray:Q,fromMatrix:Z,fromString:D});function $(t,e,r){var n=r[0],a=r[1],i=r[2],s=t.transformPoint({x:e[0],y:e[1],z:0,w:1}),o=s.x-n,c=s.y-a,u=s.z-i;return[o*(Math.abs(i)/Math.abs(u))+n,c*(Math.abs(i)/Math.abs(u))+a]}function K(t,e){var r,n,a,i,s,o,c,m=0,h=0,l=p(t),f=b(l),y=function(t){var e=new J,r=t.origin,n=r[0],a=r[1],i=t.translate,s=t.rotate,o=t.skew,c=t.scale;return Array.isArray(i)&&i.every((function(t){return!Number.isNaN(+t)}))&&i.some((function(t){return 0!==t}))?e=e.translate(i[0]||0,i[1]||0,i[2]||0):"number"!=typeof i||Number.isNaN(+i)||(e=e.translate(i||0,0,0)),(s||o||c)&&(e=e.translate(n,a),Array.isArray(s)&&s.every((function(t){return!Number.isNaN(+t)}))&&s.some((function(t){return 0!==t}))?e=e.rotate(s[0],s[1],s[2]):"number"!=typeof s||Number.isNaN(+s)||(e=e.rotate(0,0,s)),Array.isArray(o)&&o.every((function(t){return!Number.isNaN(+t)}))&&o.some((function(t){return 0!==t}))?(e=o[0]?e.skewX(o[0]):e,e=o[1]?e.skewY(o[1]):e):"number"!=typeof o||Number.isNaN(+o)||(e=e.skewX(o||0)),Array.isArray(c)&&c.every((function(t){return!Number.isNaN(+t)}))&&c.some((function(t){return 1!==t}))?e=e.scale(c[0],c[1],c[2]):"number"!=typeof c||Number.isNaN(+c)||(e=e.scale(c||1,c||1,c||1)),e=e.translate(-n,-a)),e}(e),v=Object.keys(e),x=e.origin,g=[y.a,y.b,y.c,y.d,y.e,y.f],w=Object.assign({},M),A=[],N=0,C="",k=[],S=[];if(!y.isIdentity){for(r=0,a=l.length;r<a;r+=1){A=l[r],l[r]&&(C=A[0]),S[r]=C,"A"!==C||y.is2D&&["skewX","skewY"].find((function(t){return v.includes(t)}))||(A=I(f[r],w),l[r]=I(f[r],w),d(l,S,r),f[r]=I(f[r],w),d(f,S,r),a=Math.max(l.length,f.length)),N=(A=f[r]).length,w.x1=+A[N-2],w.y1=+A[N-1],w.x2=+A[N-4]||w.x1,w.y2=+A[N-3]||w.y1;var q={s:l[r],c:l[r][0],x:w.x1,y:w.y1};k=k.concat([q])}return k.map((function(t){var e,r,a;switch(C=t.c,A=t.s,C){case"A":return c=function(t,e,r,n){var a=Math.cos(n*Math.PI/180),i=Math.sin(n*Math.PI/180),s=[e*(t[0]*a+t[2]*i),e*(t[1]*a+t[3]*i),r*(-t[0]*i+t[2]*a),r*(-t[1]*i+t[3]*a)],o=s[0]*s[0]+s[2]*s[2],c=s[1]*s[1]+s[3]*s[3],u=((s[0]-s[3])*(s[0]-s[3])+(s[2]+s[1])*(s[2]+s[1]))*((s[0]+s[3])*(s[0]+s[3])+(s[2]-s[1])*(s[2]-s[1])),m=(o+c)/2;if(u<1e-9*m){var h=Math.sqrt(m);return{rx:h,ry:h,ax:0}}var l,f,p=s[0]*s[1]+s[2]*s[3],y=m+(u=Math.sqrt(u))/2,v=m-u/2,d=Math.abs(p)<1e-9&&Math.abs(y-c)<1e-9?90:Math.atan(Math.abs(p)>Math.abs(y-c)?(y-o)/p:p/(y-c)*180)/Math.PI;return d>=0?(l=Math.sqrt(y),f=Math.sqrt(v)):(d+=90,l=Math.sqrt(v),f=Math.sqrt(y)),{rx:l,ry:f,ax:d}}(g,A[1],A[2],A[3]),g[0]*g[3]-g[1]*g[2]<0&&(A[5]=A[5]?0:1),e=$(y,[+A[6],+A[7]],x),s=e[0],o=e[1],A=m===s&&h===o||c.rx<1e-9*c.ry||c.ry<1e-9*c.rx?["L",s,o]:[C,c.rx,c.ry,c.ax,A[4],A[5],s,o],m=s,h=o,A;case"L":case"H":case"V":return r=$(y,[t.x,t.y],x),s=r[0],o=r[1],m!==s&&h!==o?A=["L",s,o]:h===o?A=["H",s]:m===s&&(A=["V",o]),m=s,h=o,A;default:for(n=1,i=A.length;n<i;n+=2)a=$(y,[+A[n],+A[n+1]],x),m=a[0],h=a[1],A[n]=m,A[n+1]=h;return A}}))}return u(l)}function W(t,e,r,n,a,i,s,o){var c,u=a-2*r+t-(s-2*a+r),m=2*(r-t)-2*(a-r),h=t-r,l=(-m+Math.sqrt(m*m-4*u*h))/2/u,f=(-m-Math.sqrt(m*m-4*u*h))/2/u,p=[e,o],y=[t,s];return Math.abs(l)>"1e12"&&(l=.5),Math.abs(f)>"1e12"&&(f=.5),l>0&&l<1&&(c=S(t,e,r,n,a,i,s,o,l),y.push(c.x),p.push(c.y)),f>0&&f<1&&(c=S(t,e,r,n,a,i,s,o,f),y.push(c.x),p.push(c.y)),u=i-2*n+e-(o-2*i+n),h=e-n,l=(-(m=2*(n-e)-2*(i-n))+Math.sqrt(m*m-4*u*h))/2/u,f=(-m-Math.sqrt(m*m-4*u*h))/2/u,Math.abs(l)>"1e12"&&(l=.5),Math.abs(f)>"1e12"&&(f=.5),l>0&&l<1&&(c=S(t,e,r,n,a,i,s,o,l),y.push(c.x),p.push(c.y)),f>0&&f<1&&(c=S(t,e,r,n,a,i,s,o,f),y.push(c.x),p.push(c.y)),{min:{x:Math.min.apply(0,y),y:Math.min.apply(0,p)},max:{x:Math.max.apply(0,y),y:Math.max.apply(0,p)}}}function _(t){if(!t)return{x:0,y:0,width:0,height:0,x2:0,y2:0,cx:0,cy:0};var e=T(t),r=0,n=0,a=[],i=[];e.forEach((function(t){var e=t.slice(-2).map(Number),s=e[0],o=e[1];if("M"===t[0])r=s,n=o,a.push(s),i.push(o);else{var c=[r,n].concat(t.slice(1)),u=W.apply(void 0,c);a=a.concat([u.min.x],[u.max.x]),i=i.concat([u.min.y],[u.max.y]),r=s,n=o}}));var s=Math.min.apply(0,a),o=Math.min.apply(0,i),c=Math.max.apply(0,a),u=Math.max.apply(0,i),m=c-s,h=u-o;return{width:m,height:h,x:s,y:o,x2:c,y2:u,cx:s+m/2,cy:o+h/2}}Object.assign(J,{Version:"0.0.24"});var tt=function(e,r){var n=r||{};this.segments=l(e);var a=_(this.segments),i=a.width,s=a.height,o=t.round,c=t.origin,u=n.round,m=n.origin;if("auto"===u){var h=(""+Math.floor(Math.max(i,s))).length;o=h>=4?0:4-h}else(Number.isInteger(u)&&u>=1||!1===u)&&(o=u);Array.isArray(m)&&[2,3].includes(m.length)&&m.map((function(t){return!Number.isNaN(t)}))?c=[].concat(m.map(Number)):c=[a.cx,a.cy,Math.max(i,s)+Math.min(i,s)/2];return this.round=o,this.origin=c,this};function et(t,e,r,n,a,i,s,o){return 3*((o-e)*(r+a)-(s-t)*(n+i)+n*(t-a)-r*(e-i)+o*(a+t/3)-s*(i+e/3))/20}function rt(t){var e=0,r=0,n=0;return T(t).map((function(t){var a,i;switch(t[0]){case"M":return e=(a=t)[1],r=a[2],0;default:return n=et.apply(void 0,[e,r].concat(t.slice(1))),i=t.slice(-2).map(Number),e=i[0],r=i[1],n}})).reduce((function(t,e){return t+e}),0)}function nt(t,e,r,n,a){return a*(a*(-3*t+9*e-9*r+3*n)+6*t-12*e+6*r)-3*t+3*e}function at(t,e,r,n,a,i,s,o,c){var u=c;(null===c||Number.isNaN(+c))&&(u=1),u>1&&(u=1),u<0&&(u=0);var m=u/2,h=0,l=0,f=0,p=0,y=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472];return[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816].forEach((function(c,u){l=nt(t,r,a,s,h=m*c+m),f=nt(e,n,i,o,h),p+=y[u]*Math.sqrt(l*l+f*f)})),m*p}tt.prototype.toAbsolute=function(){var t=this.segments;return this.segments=p(t),this},tt.prototype.toRelative=function(){var t=this.segments;return this.segments=v(t),this},tt.prototype.toCurve=function(){var t=this.segments;return this.segments=T(t),this},tt.prototype.reverse=function(t){this.toAbsolute();var e=this.segments,r=z(this.toString()),n=r.length>1?r:0,a=n&&u(n).map((function(e,r){return t?r?O(e):l(e):O(e)})),i=[];return i=n?a.flat(1):t?e:O(e),this.segments=u(i),this},tt.prototype.normalize=function(){var t=this.segments;return this.segments=b(t),this},tt.prototype.optimize=function(){var t=this.segments;return this.segments=L(t,this.round),this},tt.prototype.transform=function(t){if(!t||"object"!=typeof t||"object"==typeof t&&!["translate","rotate","skew","scale"].some((function(e){return e in t})))return this;var e={};Object.keys(t).forEach((function(r){e[r]=Array.isArray(t[r])?[].concat(t[r]):Number(t[r])}));var r=this.segments;return e.origin||(e.origin=Object.assign({},this.origin)),this.segments=K(r,e),this},tt.prototype.flipX=function(){return this.transform({rotate:[180,0,0]}),this},tt.prototype.flipY=function(){return this.transform({rotate:[0,180,0]}),this},tt.prototype.toString=function(){return V(this.segments,this.round)};var it={circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],rect:["width","height","x","y","rx","ry"],polygon:["points"],polyline:["points"],glyph:[]};var st={CSSMatrix:J,parsePathString:l,isPathArray:h,isCurveArray:A,isAbsoluteArray:f,isRelativeArray:y,isNormalizedArray:g,isValidPath:function(t){if("string"!=typeof t)return!1;var e=new m(t);for(s(e);e.index<e.max&&!e.err.length;)c(e);return!e.err.length&&"mM".includes(e.segments[0][0])},pathToAbsolute:p,pathToRelative:v,pathToCurve:T,pathToString:V,getDrawDirection:function(t){return rt(T(t))>=0},getPathArea:rt,getPathBBox:_,getPathLength:function(t){var e=0;return T(t).forEach((function(t,r,n){var a="M"!==t[0]?n[r-1].slice(-2).concat(t.slice(1)):[];e+="M"===t[0]?0:at.apply(void 0,a)})),e},getPointAtLength:function(t,e){var r,n,a,i=0;return T(t).map((function(t,s,o){if(n=s?o[s-1].slice(-2).concat(t.slice(1)):t.slice(1),r=s?at.apply(void 0,n):0,i+=r,0===s)a={x:n[0],y:n[1]};else if(i>e&&e>i-r){var c=n.concat([1-(i-e)/r]);a=S.apply(void 0,c)}else a=null;return a})).filter((function(t){return t})).slice(-1)[0]},clonePath:u,splitPath:z,fixPath:w,roundPath:j,optimizePath:L,reverseCurve:function(t){var e=t.slice(1).map((function(e,r,n){return r?n[r-1].slice(-2).concat(e.slice(1)):t[0].slice(1).concat(e.slice(1))})).map((function(t){return t.map((function(e,r){return t[t.length-r-2*(1-r%2)]}))})).reverse();return[["M"].concat(e[0].slice(0,2))].concat(e.map((function(t){return["C"].concat(t.slice(2))})))},reversePath:O,normalizePath:b,transformPath:K,shapeToPath:function(e,r){var n=Object.keys(it),a=e instanceof Element;if(a&&!n.some((function(t){return e.tagName===t})))throw TypeError('shapeToPath: "'+e+'" is not SVGElement');var i,s=document.createElementNS("http://www.w3.org/2000/svg","path"),o=a?e.tagName:e.type,c={};if(c.type=o,a){var u=it[o];u.forEach((function(t){c[t]=e.getAttribute(t)})),Object.values(e.attributes).forEach((function(t){var e=t.name,r=t.value;u.includes(e)||s.setAttribute(e,r)}))}else Object.assign(c,e);var m,h,l,f,p=t.round;return"circle"===o?i=V((h=(m=c).cx,l=m.cy,f=m.r,[["M",h-f,l],["a",f,f,0,1,0,2*f,0],["a",f,f,0,1,0,-2*f,0]]),p):"ellipse"===o?i=V(function(t){var e=t.cx,r=t.cy,n=t.rx,a=t.ry;return[["M",e-n,r],["a",n,a,0,1,0,2*n,0],["a",n,a,0,1,0,-2*n,0]]}(c),p):["polyline","polygon"].includes(o)?i=V(function(t){for(var e=[],r=t.points.split(/[\s|,]/).map(Number),n=0;n<r.length;)e.push([n?"L":"M",r[n],r[n+1]]),n+=2;return"polygon"===t.type?e.concat([["z"]]):e}(c),p):"rect"===o?i=V(function(t){var e=+t.x||0,r=+t.y||0,n=+t.width,a=+t.height,i=+t.rx,s=+t.ry;return i||s?(i=i||s,s=s||i,2*i>n&&(i-=(2*i-n)/2),2*s>a&&(s-=(2*s-a)/2),[["M",e+i,r],["h",n-2*i],["s",i,0,i,s],["v",a-2*s],["s",0,s,-i,s],["h",2*i-n],["s",-i,0,-i,-s],["v",2*s-a],["s",0,-s,i,-s]]):[["M",e,r],["h",n],["v",a],["H",e],["Z"]]}(c),p):"line"===o?i=V(function(t){return[["M",t.x1,t.y1],["L",t.x2,t.y2]]}(c),p):"glyph"===o&&(i=a?e.getAttribute("d"):e.type),!!i&&(s.setAttribute("d",i),r&&a&&(e.before(s,e),e.remove()),s)},options:t};return Object.assign(tt,st,{Version:"0.1.20"}),tt}));
|
|
1
|
+
// SVGPathCommander v0.1.21 | thednp © 2021 | MIT-License
|
|
2
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).SVGPathCommander=e()}(this,(function(){"use strict";var t={origin:[0,0,0],round:4},e={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0};function r(t){var r=t.pathValue[t.segmentStart],n=r.toLowerCase(),a=t.data;for("m"===n&&a.length>2&&(t.segments.push([r,a[0],a[1]]),a=a.slice(2),n="l",r="m"===r?"l":"L");a.length>=e[n]&&(t.segments.push([r].concat(a.splice(0,e[n]))),e[n]););}function n(t){var e=t.index,r=t.pathValue.charCodeAt(e);return 48===r?(t.param=0,void(t.index+=1)):49===r?(t.param=1,void(t.index+=1)):void(t.err='Invalid path value: invalid Arc flag "'+r+'", expecting 0 or 1 at index '+e)}function a(t){return t>=48&&t<=57}function i(t){var e,r=t.max,n=t.pathValue,i=t.index,s=i,o=!1,c=!1,u=!1,m=!1;if(s>=r)t.err="Invalid path value at "+s+": missing param "+n[s];else if(43!==(e=n.charCodeAt(s))&&45!==e||(e=(s+=1)<r?n.charCodeAt(s):0),a(e)||46===e){if(46!==e){if(o=48===e,e=(s+=1)<r?n.charCodeAt(s):0,o&&s<r&&e&&a(e))return void(t.err="Invalid path value at index "+i+": "+n[i]+" illegal number");for(;s<r&&a(n.charCodeAt(s));)s+=1,c=!0;e=s<r?n.charCodeAt(s):0}if(46===e){for(m=!0,s+=1;a(n.charCodeAt(s));)s+=1,u=!0;e=s<r?n.charCodeAt(s):0}if(101===e||69===e){if(m&&!c&&!u)return void(t.err="Invalid path value at index "+s+": "+n[s]+" invalid float exponent");if(43!==(e=(s+=1)<r?n.charCodeAt(s):0)&&45!==e||(s+=1),!(s<r&&a(n.charCodeAt(s))))return void(t.err="Invalid path value at index "+s+": "+n[s]+" invalid float exponent");for(;s<r&&a(n.charCodeAt(s));)s+=1}t.index=s,t.param=+t.pathValue.slice(i,s)}else t.err="Invalid path value at index "+s+": "+n[s]+" is not a number"}function s(t){for(var e,r=t.pathValue,n=t.max;t.index<n&&(10===(e=r.charCodeAt(t.index))||13===e||8232===e||8233===e||32===e||9===e||11===e||12===e||160===e||e>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(e)>=0);)t.index+=1}function o(t){return t>=48&&t<=57||43===t||45===t||46===t}function c(t){var a=t.max,c=t.pathValue,u=t.index,m=c.charCodeAt(u),h=e[c[u].toLowerCase()];if(t.segmentStart=u,function(t){switch(32|t){case 109:case 122:case 108:case 104:case 118:case 99:case 115:case 113:case 116:case 97:return!0;default:return!1}}(m))if(t.index+=1,s(t),t.data=[],h){for(;;){for(var l=h;l>0;l-=1){if(97!=(32|m)||3!==l&&4!==l?i(t):n(t),t.err.length)return;t.data.push(t.param),s(t),t.index<a&&44===c.charCodeAt(t.index)&&(t.index+=1,s(t))}if(t.index>=t.max)break;if(!o(c.charCodeAt(t.index)))break}r(t)}else r(t);else t.err="Invalid path value: "+c[u]+" not a path command"}function u(t){return t.map((function(t){return Array.isArray(t)?[].concat(t):t}))}function m(t){this.segments=[],this.pathValue=t,this.max=t.length,this.index=0,this.param=0,this.segmentStart=0,this.data=[],this.err=""}function h(t){return Array.isArray(t)&&t.every((function(t){var r=t[0].toLowerCase();return e[r]===t.length-1&&"achlmqstvz".includes(r)}))}function l(t){if(Array.isArray(t)&&h(t))return u(t);var e=new m(t);for(s(e);e.index<e.max&&!e.err.length;)c(e);return e.err.length?e.segments=[]:e.segments.length&&("mM".includes(e.segments[0][0])?e.segments[0][0]="M":(e.err="Invalid path value: missing M/m",e.segments=[])),e.segments}function f(t){return h(t)&&t.every((function(t){return t[0]===t[0].toUpperCase()}))}function p(t){if(Array.isArray(t)&&f(t))return u(t);var e=l(t),r=0,n=0,a=0,i=0;return e.map((function(t){var e,s=t.slice(1).map(Number),o=t[0],c=o.toUpperCase();if("M"===o)return r=(e=s)[0],n=e[1],a=r,i=n,["M",r,n];var u=[];if(o!==c)switch(c){case"A":u=[c,s[0],s[1],s[2],s[3],s[4],s[5]+r,s[6]+n];break;case"V":u=[c,s[0]+n];break;case"H":u=[c,s[0]+r];break;default:var m=s.map((function(t,e){return t+(e%2?n:r)}));u=[c].concat(m)}else u=[c].concat(s);var h=u.length;switch(c){case"Z":r=a,n=i;break;case"H":r=u[1];break;case"V":n=u[1];break;default:r=u[h-2],n=u[h-1],"M"===c&&(a=r,i=n)}return u}))}function y(t){return h(t)&&t.slice(1).every((function(t){return t[0]===t[0].toLowerCase()}))}function v(t){if(y(t))return u(t);var e=l(t),r=0,n=0,a=0,i=0;return e.map((function(t){var e,s,o=t.slice(1).map(Number),c=t[0],u=c.toLowerCase();if("M"===c)return r=(e=o)[0],n=e[1],a=r,i=n,["M",r,n];var m=[];if(c!==u)switch(u){case"a":m=[u,o[0],o[1],o[2],o[3],o[4],o[5]-r,o[6]-n];break;case"v":m=[u,o[0]-n];break;case"h":m=[u,o[0]-r];break;default:var h=o.map((function(t,e){return t-(e%2?n:r)}));m=[u].concat(h),"m"===u&&(r=(s=o)[0],n=s[1],a=r,i=n)}else"m"===c&&(a=o[0]+r,i=o[1]+n),m=[u].concat(o);var l=m.length;switch(u){case"z":r=a,n=i;break;case"h":r+=m[1];break;case"v":n+=m[1];break;default:r+=m[l-2],n+=m[l-1]}return m}))}function d(t,e,r){if(t[r].length>7){t[r].shift();for(var n=t[r],a=r;n.length;)e[r]="A",t.splice(a+=1,0,["C"].concat(n.splice(0,6)));t.splice(r,1)}}function x(t,e,r){var n=t[0],a=e.x1,i=e.y1,s=e.x2,o=e.y2,c=t.slice(1).map(Number),u=t;if("TQ".includes(n)||(e.qx=null,e.qy=null),"H"===n)u=["L",t[1],i];else if("V"===n)u=["L",a,t[1]];else if("S"===n){var m=function(t,e,r,n,a){return"CS".includes(a)?{x1:2*t-r,y1:2*e-n}:{x1:t,y1:e}}(a,i,s,o,r),h=m.x1,l=m.y1;e.x1=h,e.y1=l,u=["C",h,l].concat(c)}else if("T"===n){var f=function(t,e,r,n,a){return"QT".includes(a)?{qx:2*t-r,qy:2*e-n}:{qx:t,qy:e}}(a,i,e.qx,e.qy,r),p=f.qx,y=f.qy;e.qx=p,e.qy=y,u=["Q",p,y].concat(c)}else if("Q"===n){var v=c[0],d=c[1];e.qx=v,e.qy=d}return u}function g(t){return f(t)&&t.every((function(t){return"ACLMQZ".includes(t[0])}))}var M={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null};function b(t){if(g(t))return u(t);for(var e=p(t),r=Object.assign({},M),n=[],a=e.length,i="",s="",o=0;o<a;o+=1){i=e[o][0],n[o]=i,o&&(s=n[o-1]),e[o]=x(e[o],r,s);var c=e[o],m=c.length;r.x1=+c[m-2],r.y1=+c[m-1],r.x2=+c[m-4]||r.x1,r.y2=+c[m-3]||r.y1}return e}function w(t){var e=l(t),r=b(e),n=e.length,a="Z"===r.slice(-1)[0][0],i=a?n-2:n-1,s=r[0].slice(1),o=s[0],c=s[1],u=r[i].slice(-2),m=u[0],h=u[1];return a&&o===m&&c===h?e.slice(0,-1):e}function N(t){return h(t)&&t.every((function(t){return"MC".includes(t[0])}))}function A(t,e,r){return{x:t*Math.cos(r)-e*Math.sin(r),y:t*Math.sin(r)+e*Math.cos(r)}}function C(t,e,r,n,a,i,s,o,c,u){var m,h,l,f,p,y,v=t,d=e,x=r,g=n,M=o,b=c,w=120*Math.PI/180,N=Math.PI/180*(+a||0),k=[];if(u)l=(m=u)[0],f=m[1],p=m[2],y=m[3];else{v=(h=A(v,d,-N)).x,d=h.y;var S=(v-(M=(h=A(M,b,-N)).x))/2,q=(d-(b=h.y))/2,P=S*S/(x*x)+q*q/(g*g);P>1&&(x*=P=Math.sqrt(P),g*=P);var I=x*x,T=g*g,j=(i===s?-1:1)*Math.sqrt(Math.abs((I*T-I*q*q-T*S*S)/(I*q*q+T*S*S)));p=j*x*q/g+(v+M)/2,y=j*-g*S/x+(d+b)/2,l=(Math.asin((d-y)/g)*Math.pow(10,9)>>0)/Math.pow(10,9),f=(Math.asin((b-y)/g)*Math.pow(10,9)>>0)/Math.pow(10,9),l=v<p?Math.PI-l:l,f=M<p?Math.PI-f:f,l<0&&(l=2*Math.PI+l),f<0&&(f=2*Math.PI+f),s&&l>f&&(l-=2*Math.PI),!s&&f>l&&(f-=2*Math.PI)}var V=f-l;if(Math.abs(V)>w){var z=f,O=M,E=b;f=l+w*(s&&f>l?1:-1),k=C(M=p+x*Math.cos(f),b=y+g*Math.sin(f),x,g,a,0,s,O,E,[f,z,p,y])}V=f-l;var L=Math.cos(l),Q=Math.sin(l),Z=Math.cos(f),D=Math.sin(f),X=Math.tan(V/4),H=4/3*x*X,Y=4/3*g*X,R=[v,d],F=[v+H*Q,d-Y*L],B=[M+H*D,b-Y*Z],G=[M,b];if(F[0]=2*R[0]-F[0],F[1]=2*R[1]-F[1],u)return F.concat(B,G,k);for(var J=[],U=0,$=(k=F.concat(B,G,k)).length;U<$;U+=1)J[U]=U%2?A(k[U-1],k[U],N).y:A(k[U],k[U+1],N).x;return J}function k(t,e,r,n,a,i){return[1/3*t+2/3*r,1/3*e+2/3*n,1/3*a+2/3*r,1/3*i+2/3*n,a,i]}function S(t,e,r,n,a,i,s,o,c){var u=1-c;return{x:Math.pow(u,3)*t+u*u*3*c*r+3*u*c*c*a+Math.pow(c,3)*s,y:Math.pow(u,3)*e+u*u*3*c*n+3*u*c*c*i+Math.pow(c,3)*o}}function q(t,e,r){var n=t[0],a=t[1];return[n+(e[0]-n)*r,a+(e[1]-a)*r]}function P(t,e,r,n){var a=.5,i=[t,e],s=[r,n],o=q(i,s,a),c=q(s,o,a),u=q(o,c,a),m=q(c,u,a),h=q(u,m,a),l=i.concat(o,u,h,[a]),f=S.apply(void 0,l),p=h.concat(m,c,s,[0]),y=S.apply(void 0,p);return[f.x,f.y,y.x,y.y,r,n]}function I(t,e){var r,n=t[0],a=t.slice(1).map((function(t){return+t})),i=a[0],s=a[1],o=e.x1,c=e.y1,u=e.x,m=e.y;switch("TQ".includes(n)||(e.qx=null,e.qy=null),n){case"M":return e.x=i,e.y=s,t;case"A":return r=[o,c].concat(a),["C"].concat(C.apply(void 0,r));case"Q":return e.qx=i,e.qy=s,r=[o,c].concat(a),["C"].concat(k.apply(void 0,r));case"L":return["C"].concat(P(o,c,i,s));case"Z":return["C"].concat(P(o,c,u,m))}return t}function T(t){if(N(t))return u(t);for(var e=w(b(t)),r=Object.assign({},M),n=[],a="",i=e.length,s=0;s<i;s+=1){a=e[s][0],n[s]=a,e[s]=I(e[s],r),d(e,n,s),i=e.length;var o=e[s],c=o.length;r.x1=+o[c-2],r.y1=+o[c-1],r.x2=+o[c-4]||r.x1,r.y2=+o[c-3]||r.y1}return e}function j(e,r){var n=t.round;if(!1===r||!1===n)return u(e);var a=(n=r>=1?r:n)>=1?Math.pow(10,n):1;return e.map((function(t){var e=t.slice(1).map(Number).map((function(t){return t%1==0?t:Math.round(t*a)/a}));return[t[0]].concat(e)}))}function V(t,e){return j(t,e).map((function(t){return t[0]+t.slice(1).join(" ")})).join("")}function z(t){var e=p(t),r="Z"===e.slice(-1)[0][0],n=b(e).map((function(t,r){var n=t.slice(-2).map(Number),a=n[0],i=n[1];return{seg:e[r],n:t,c:e[r][0],x:a,y:i}})).map((function(t,e,n){var a=t.seg,i=t.n,s=e&&n[e-1],o=n[e+1]&&n[e+1],c=t.c,u=n.length,m=e?n[e-1].x:n[u-1].x,h=e?n[e-1].y:n[u-1].y,l=[];switch(c){case"M":l=r?["Z"]:[c,m,h];break;case"A":l=[c].concat(a.slice(1,-3),[1===a[5]?0:1],[m],[h]);break;case"C":l=o&&"S"===o.c?["S",a[1],a[2],m,h]:[c,a[3],a[4],a[1],a[2],m,h];break;case"S":l=s&&"CS".includes(s.c)&&(!o||o&&"S"!==o.c)?["C",i[3],i[4],i[1],i[2],m,h]:[c,i[1],i[2],m,h];break;case"Q":l=o&&"T"===o.c?["T",m,h]:[c].concat(a.slice(1,-2),[m],[h]);break;case"T":l=s&&"QT".includes(s.c)&&(!o||o&&"T"!==o.c)?["Q",i[1],i[2],m,h]:[c,m,h];break;case"Z":l=["M",m,h];break;case"H":l=[c,m];break;case"V":l=[c,h];break;default:l=[c].concat(a.slice(1,-2),[m],[h])}return l}));return r?n.reverse():[n[0]].concat(n.slice(1).reverse())}function O(t){return V(p(t),0).replace(/(m|M)/g,"|$1").split("|").map((function(t){return t.trim()})).filter((function(t){return t}))}function E(t,e,r,n){var a=t[0],i=function(t){return Math.round(t*Math.pow(10,4))/Math.pow(10,4)},s=t.slice(1).map((function(t){return+t})),o=e.slice(1).map((function(t){return+t})),c=r.x1,u=r.y1,m=r.x2,h=r.y2,l=r.x,f=r.y,p=t,y=o.slice(-2),v=y[0],d=y[1];if("TQ".includes(a)||(r.qx=null,r.qy=null),["V","H","S","T","Z"].includes(a))p=[a].concat(s);else if("L"===a)i(l)===i(v)?p=["V",d]:i(f)===i(d)&&(p=["H",v]);else if("C"===a){var x=o[0],g=o[1];"CS".includes(n)&&i(x)===i(2*c-m)&&i(g)===i(2*u-h)&&(p=["S"].concat(o.slice(-4))),r.x1=x,r.y1=g}else if("Q"===a){var M=o[0],b=o[1];r.qx=M,r.qy=b,"QT".includes(n)&&i(M)===i(2*c-m)&&i(b)===i(2*u-h)&&(p=["T"].concat(o.slice(-2)))}return p}function L(t,e){for(var r,n=p(t),a=b(n),i=Object.assign({},M),s=[],o=n.length,c="",u="",m=0,h=0,l=0,f=0,y=0;y<o;y+=1){c=n[y][0],s[y]=c,y&&(u=s[y-1]),n[y]=E(n[y],a[y],i,u);var d=n[y],x=d.length;switch(i.x1=+d[x-2],i.y1=+d[x-1],i.x2=+d[x-4]||i.x1,i.y2=+d[x-3]||i.y1,c){case"Z":m=l,h=f;break;case"H":m=d[1];break;case"V":h=d[1];break;default:m=(r=d.slice(-2).map(Number))[0],h=r[1],"M"===c&&(l=m,f=h)}i.x=m,i.y=h}var g=j(n,e),w=j(v(n),e);return g.map((function(t,e){return e?t.join("").length<w[e].join("").length?t:w[e]:t}))}function Q(t){var e=new J,r=Array.from(t);if(!r.every((function(t){return!Number.isNaN(t)})))throw TypeError('CSSMatrix: "'+t+'" must only have numbers.');if(16===r.length){var n=r[0],a=r[1],i=r[2],s=r[3],o=r[4],c=r[5],u=r[6],m=r[7],h=r[8],l=r[9],f=r[10],p=r[11],y=r[12],v=r[13],d=r[14],x=r[15];e.m11=n,e.a=n,e.m21=o,e.c=o,e.m31=h,e.m41=y,e.e=y,e.m12=a,e.b=a,e.m22=c,e.d=c,e.m32=l,e.m42=v,e.f=v,e.m13=i,e.m23=u,e.m33=f,e.m43=d,e.m14=s,e.m24=m,e.m34=p,e.m44=x}else{if(6!==r.length)throw new TypeError("CSSMatrix: expecting an Array of 6/16 values.");var g=r[0],M=r[1],b=r[2],w=r[3],N=r[4],A=r[5];e.m11=g,e.a=g,e.m12=M,e.b=M,e.m21=b,e.c=b,e.m22=w,e.d=w,e.m41=N,e.e=N,e.m42=A,e.f=A}return e}function Z(t){var e=Object.keys(new J);if("object"==typeof t&&e.every((function(e){return e in t})))return Q([t.m11,t.m12,t.m13,t.m14,t.m21,t.m22,t.m23,t.m24,t.m31,t.m32,t.m33,t.m34,t.m41,t.m42,t.m43,t.m44]);throw TypeError('CSSMatrix: "'+t+'" is not a DOMMatrix / CSSMatrix / JSON compatible object.')}function D(t){if("string"!=typeof t)throw TypeError('CSSMatrix: "'+t+'" is not a string.');var e=String(t).replace(/\s/g,""),r=new J,n='CSSMatrix: invalid transform string "'+t+'"';return e.split(")").filter((function(t){return t})).forEach((function(t){var e=t.split("("),a=e[0],i=e[1];if(!i)throw TypeError(n);var s=i.split(",").map((function(t){return t.includes("rad")?parseFloat(t)*(180/Math.PI):parseFloat(t)})),o=s[0],c=s[1],u=s[2],m=s[3],h=[o,c,u],l=[o,c,u,m];if("perspective"===a&&o&&[c,u].every((function(t){return void 0===t})))r.m34=-1/o;else if(a.includes("matrix")&&[6,16].includes(s.length)&&s.every((function(t){return!Number.isNaN(+t)}))){var f=s.map((function(t){return Math.abs(t)<1e-6?0:t}));r=r.multiply(Q(f))}else if("translate3d"===a&&h.every((function(t){return!Number.isNaN(+t)})))r=r.translate(o,c,u);else if("translate"===a&&o&&void 0===u)r=r.translate(o,c||0,0);else if("rotate3d"===a&&l.every((function(t){return!Number.isNaN(+t)}))&&m)r=r.rotateAxisAngle(o,c,u,m);else if("rotate"===a&&o&&[c,u].every((function(t){return void 0===t})))r=r.rotate(0,0,o);else if("scale3d"===a&&h.every((function(t){return!Number.isNaN(+t)}))&&h.some((function(t){return 1!==t})))r=r.scale(o,c,u);else if("scale"!==a||Number.isNaN(o)||1===o||void 0!==u)if("skew"===a&&o&&void 0===u)r=r.skewX(o),r=c?r.skewY(c):r;else{if(!(/[XYZ]/.test(a)&&o&&[c,u].every((function(t){return void 0===t}))&&["translate","rotate","scale","skew"].some((function(t){return a.includes(t)}))))throw TypeError(n);if(["skewX","skewY"].includes(a))r=r[a](o);else{var p=a.replace(/[XYZ]/,""),y=a.replace(p,""),v=["X","Y","Z"].indexOf(y),d=[0===v?o:0,1===v?o:0,2===v?o:0];r=r[p].apply(r,d)}}else{var x=Number.isNaN(+c)?o:c;r=r.scale(o,x,1)}})),r}function X(t,e,r){var n=new J;return n.m41=t,n.e=t,n.m42=e,n.f=e,n.m43=r,n}function H(t,e,r){var n=new J,a=Math.PI/180,i=t*a,s=e*a,o=r*a,c=Math.cos(i),u=-Math.sin(i),m=Math.cos(s),h=-Math.sin(s),l=Math.cos(o),f=-Math.sin(o),p=m*l,y=-m*f;n.m11=p,n.a=p,n.m12=y,n.b=y,n.m13=h;var v=u*h*l+c*f;n.m21=v,n.c=v;var d=c*l-u*h*f;return n.m22=d,n.d=d,n.m23=-u*m,n.m31=u*f-c*h*l,n.m32=u*l+c*h*f,n.m33=c*m,n}function Y(t,e,r,n){var a=new J,i=n*(Math.PI/360),s=Math.sin(i),o=Math.cos(i),c=s*s,u=Math.sqrt(t*t+e*e+r*r),m=t,h=e,l=r;0===u?(m=0,h=0,l=1):(m/=u,h/=u,l/=u);var f=m*m,p=h*h,y=l*l,v=1-2*(p+y)*c;a.m11=v,a.a=v;var d=2*(m*h*c+l*s*o);a.m12=d,a.b=d,a.m13=2*(m*l*c-h*s*o);var x=2*(h*m*c-l*s*o);a.m21=x,a.c=x;var g=1-2*(y+f)*c;return a.m22=g,a.d=g,a.m23=2*(h*l*c+m*s*o),a.m31=2*(l*m*c+h*s*o),a.m32=2*(l*h*c-m*s*o),a.m33=1-2*(f+p)*c,a}function R(t,e,r){var n=new J;return n.m11=t,n.a=t,n.m22=e,n.d=e,n.m33=r,n}function F(t){var e=new J,r=t*Math.PI/180,n=Math.tan(r);return e.m21=n,e.c=n,e}function B(t){var e=new J,r=t*Math.PI/180,n=Math.tan(r);return e.m12=n,e.b=n,e}function G(t,e){return Q([e.m11*t.m11+e.m12*t.m21+e.m13*t.m31+e.m14*t.m41,e.m11*t.m12+e.m12*t.m22+e.m13*t.m32+e.m14*t.m42,e.m11*t.m13+e.m12*t.m23+e.m13*t.m33+e.m14*t.m43,e.m11*t.m14+e.m12*t.m24+e.m13*t.m34+e.m14*t.m44,e.m21*t.m11+e.m22*t.m21+e.m23*t.m31+e.m24*t.m41,e.m21*t.m12+e.m22*t.m22+e.m23*t.m32+e.m24*t.m42,e.m21*t.m13+e.m22*t.m23+e.m23*t.m33+e.m24*t.m43,e.m21*t.m14+e.m22*t.m24+e.m23*t.m34+e.m24*t.m44,e.m31*t.m11+e.m32*t.m21+e.m33*t.m31+e.m34*t.m41,e.m31*t.m12+e.m32*t.m22+e.m33*t.m32+e.m34*t.m42,e.m31*t.m13+e.m32*t.m23+e.m33*t.m33+e.m34*t.m43,e.m31*t.m14+e.m32*t.m24+e.m33*t.m34+e.m34*t.m44,e.m41*t.m11+e.m42*t.m21+e.m43*t.m31+e.m44*t.m41,e.m41*t.m12+e.m42*t.m22+e.m43*t.m32+e.m44*t.m42,e.m41*t.m13+e.m42*t.m23+e.m43*t.m33+e.m44*t.m43,e.m41*t.m14+e.m42*t.m24+e.m43*t.m34+e.m44*t.m44])}var J=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r=this;if(r.a=1,r.b=0,r.c=0,r.d=1,r.e=0,r.f=0,r.m11=1,r.m12=0,r.m13=0,r.m14=0,r.m21=0,r.m22=1,r.m23=0,r.m24=0,r.m31=0,r.m32=0,r.m33=1,r.m34=0,r.m41=0,r.m42=0,r.m43=0,r.m44=1,t&&t.length){var n=[16,6].some((function(e){return e===t.length}))?t:t[0];return r.setMatrixValue(n)}return r},U={isIdentity:{configurable:!0},is2D:{configurable:!0}};U.isIdentity.set=function(t){this.isIdentity=t},U.isIdentity.get=function(){var t=this;return 1===t.m11&&0===t.m12&&0===t.m13&&0===t.m14&&0===t.m21&&1===t.m22&&0===t.m23&&0===t.m24&&0===t.m31&&0===t.m32&&1===t.m33&&0===t.m34&&0===t.m41&&0===t.m42&&0===t.m43&&1===t.m44},U.is2D.get=function(){var t=this;return 0===t.m31&&0===t.m32&&1===t.m33&&0===t.m34&&0===t.m43&&1===t.m44},U.is2D.set=function(t){this.is2D=t},J.prototype.setMatrixValue=function(t){return[Array,Float64Array,Float32Array].some((function(e){return t instanceof e}))?Q(t):"string"==typeof t&&t.length&&"none"!==t?D(t):"object"==typeof t?Z(t):this},J.prototype.toArray=function(){var t=this,e=Math.pow(10,6);return(t.is2D?[t.a,t.b,t.c,t.d,t.e,t.f]:[t.m11,t.m12,t.m13,t.m14,t.m21,t.m22,t.m23,t.m24,t.m31,t.m32,t.m33,t.m34,t.m41,t.m42,t.m43,t.m44]).map((function(t){return Math.abs(t)<1e-6?0:(t*e>>0)/e}))},J.prototype.toString=function(){var t=this.toArray();return(this.is2D?"matrix":"matrix3d")+"("+t+")"},J.prototype.toJSON=function(){var t=this,e=t.is2D,r=t.isIdentity;return Object.assign({},t,{is2D:e,isIdentity:r})},J.prototype.multiply=function(t){return G(this,t)},J.prototype.translate=function(t,e,r){var n=e,a=r;return void 0===a&&(a=0),void 0===n&&(n=0),G(this,X(t,n,a))},J.prototype.scale=function(t,e,r){var n=e,a=r;return void 0===n&&(n=t),void 0===a&&(a=1),G(this,R(t,n,a))},J.prototype.rotate=function(t,e,r){var n=t,a=e,i=r;return void 0===a&&(a=0),void 0===i&&(i=n,n=0),G(this,H(n,a,i))},J.prototype.rotateAxisAngle=function(t,e,r,n){if([t,e,r,n].some((function(t){return Number.isNaN(t)})))throw new TypeError("CSSMatrix: expecting 4 values");return G(this,Y(t,e,r,n))},J.prototype.skewX=function(t){return G(this,F(t))},J.prototype.skewY=function(t){return G(this,B(t))},J.prototype.transformPoint=function(t){var e=X(t.x,t.y,t.z);return e.m44=t.w||1,{x:(e=this.multiply(e)).m41,y:e.m42,z:e.m43,w:e.m44}},J.prototype.transform=function(t){var e=this,r=e.m11*t.x+e.m12*t.y+e.m13*t.z+e.m14*t.w,n=e.m21*t.x+e.m22*t.y+e.m23*t.z+e.m24*t.w,a=e.m31*t.x+e.m32*t.y+e.m33*t.z+e.m34*t.w,i=e.m41*t.x+e.m42*t.y+e.m43*t.z+e.m44*t.w;return{x:r/i,y:n/i,z:a/i,w:i}},Object.defineProperties(J.prototype,U),Object.assign(J,{Translate:X,Rotate:H,RotateAxisAngle:Y,Scale:R,SkewX:F,SkewY:B,Multiply:G,fromArray:Q,fromMatrix:Z,fromString:D});function $(t,e,r){var n=e[0],a=e[1],i=r[0],s=r[1],o=r[2],c=t.transformPoint({x:n,y:a,z:0,w:1}),u=c.x-i,m=c.y-s,h=c.z-o;return[u*(Math.abs(o)/Math.abs(h))+i,m*(Math.abs(o)/Math.abs(h))+s]}function K(t,e){var r,n,a,i,s,o,c,m=0,h=0,l=p(t),f=b(l),y=function(t){var e=new J,r=t.origin,n=r[0],a=r[1],i=t.translate,s=t.rotate,o=t.skew,c=t.scale;return Array.isArray(i)&&i.every((function(t){return!Number.isNaN(+t)}))&&i.some((function(t){return 0!==t}))?e=e.translate(i[0]||0,i[1]||0,i[2]||0):"number"!=typeof i||Number.isNaN(+i)||(e=e.translate(i||0,0,0)),(s||o||c)&&(e=e.translate(n,a),Array.isArray(s)&&s.every((function(t){return!Number.isNaN(+t)}))&&s.some((function(t){return 0!==t}))?e=e.rotate(s[0],s[1],s[2]):"number"!=typeof s||Number.isNaN(+s)||(e=e.rotate(0,0,s)),Array.isArray(o)&&o.every((function(t){return!Number.isNaN(+t)}))&&o.some((function(t){return 0!==t}))?(e=o[0]?e.skewX(o[0]):e,e=o[1]?e.skewY(o[1]):e):"number"!=typeof o||Number.isNaN(+o)||(e=e.skewX(o||0)),Array.isArray(c)&&c.every((function(t){return!Number.isNaN(+t)}))&&c.some((function(t){return 1!==t}))?e=e.scale(c[0],c[1],c[2]):"number"!=typeof c||Number.isNaN(+c)||(e=e.scale(c||1,c||1,c||1)),e=e.translate(-n,-a)),e}(e),v=Object.keys(e),x=e.origin,g=[y.a,y.b,y.c,y.d,y.e,y.f],w=Object.assign({},M),N=[],A=0,C="",k=[],S=[];if(!y.isIdentity){for(r=0,a=l.length;r<a;r+=1){N=l[r],l[r]&&(C=N[0]),S[r]=C,"A"!==C||y.is2D&&["skewX","skewY"].find((function(t){return v.includes(t)}))||(N=I(f[r],w),l[r]=I(f[r],w),d(l,S,r),f[r]=I(f[r],w),d(f,S,r),a=Math.max(l.length,f.length)),A=(N=f[r]).length,w.x1=+N[A-2],w.y1=+N[A-1],w.x2=+N[A-4]||w.x1,w.y2=+N[A-3]||w.y1;var q={s:l[r],c:l[r][0],x:w.x1,y:w.y1};k=k.concat([q])}return k.map((function(t){var e,r,a;switch(C=t.c,N=t.s,C){case"A":return c=function(t,e,r,n){var a=Math.cos(n*Math.PI/180),i=Math.sin(n*Math.PI/180),s=[e*(t[0]*a+t[2]*i),e*(t[1]*a+t[3]*i),r*(-t[0]*i+t[2]*a),r*(-t[1]*i+t[3]*a)],o=s[0]*s[0]+s[2]*s[2],c=s[1]*s[1]+s[3]*s[3],u=((s[0]-s[3])*(s[0]-s[3])+(s[2]+s[1])*(s[2]+s[1]))*((s[0]+s[3])*(s[0]+s[3])+(s[2]-s[1])*(s[2]-s[1])),m=(o+c)/2;if(u<1e-9*m){var h=Math.sqrt(m);return{rx:h,ry:h,ax:0}}var l,f,p=s[0]*s[1]+s[2]*s[3],y=m+(u=Math.sqrt(u))/2,v=m-u/2,d=Math.abs(p)<1e-9&&Math.abs(y-c)<1e-9?90:Math.atan(Math.abs(p)>Math.abs(y-c)?(y-o)/p:p/(y-c)*180)/Math.PI;return d>=0?(l=Math.sqrt(y),f=Math.sqrt(v)):(d+=90,l=Math.sqrt(v),f=Math.sqrt(y)),{rx:l,ry:f,ax:d}}(g,N[1],N[2],N[3]),g[0]*g[3]-g[1]*g[2]<0&&(N[5]=N[5]?0:1),e=$(y,[+N[6],+N[7]],x),s=e[0],o=e[1],N=m===s&&h===o||c.rx<1e-9*c.ry||c.ry<1e-9*c.rx?["L",s,o]:[C,c.rx,c.ry,c.ax,N[4],N[5],s,o],m=s,h=o,N;case"L":case"H":case"V":return r=$(y,[t.x,t.y],x),s=r[0],o=r[1],m!==s&&h!==o?N=["L",s,o]:h===o?N=["H",s]:m===s&&(N=["V",o]),m=s,h=o,N;default:for(n=1,i=N.length;n<i;n+=2)a=$(y,[+N[n],+N[n+1]],x),m=a[0],h=a[1],N[n]=m,N[n+1]=h;return N}}))}return u(l)}function W(t,e,r,n,a,i,s,o){var c,u=a-2*r+t-(s-2*a+r),m=2*(r-t)-2*(a-r),h=t-r,l=(-m+Math.sqrt(m*m-4*u*h))/2/u,f=(-m-Math.sqrt(m*m-4*u*h))/2/u,p=[e,o],y=[t,s];return Math.abs(l)>"1e12"&&(l=.5),Math.abs(f)>"1e12"&&(f=.5),l>0&&l<1&&(c=S(t,e,r,n,a,i,s,o,l),y.push(c.x),p.push(c.y)),f>0&&f<1&&(c=S(t,e,r,n,a,i,s,o,f),y.push(c.x),p.push(c.y)),u=i-2*n+e-(o-2*i+n),h=e-n,l=(-(m=2*(n-e)-2*(i-n))+Math.sqrt(m*m-4*u*h))/2/u,f=(-m-Math.sqrt(m*m-4*u*h))/2/u,Math.abs(l)>"1e12"&&(l=.5),Math.abs(f)>"1e12"&&(f=.5),l>0&&l<1&&(c=S(t,e,r,n,a,i,s,o,l),y.push(c.x),p.push(c.y)),f>0&&f<1&&(c=S(t,e,r,n,a,i,s,o,f),y.push(c.x),p.push(c.y)),{min:{x:Math.min.apply(0,y),y:Math.min.apply(0,p)},max:{x:Math.max.apply(0,y),y:Math.max.apply(0,p)}}}function _(t){if(!t)return{x:0,y:0,width:0,height:0,x2:0,y2:0,cx:0,cy:0,cz:0};var e=T(t),r=0,n=0,a=[],i=[];e.forEach((function(t){var e=t.slice(-2).map(Number),s=e[0],o=e[1];if("M"===t[0])r=s,n=o,a.push(s),i.push(o);else{var c=[r,n].concat(t.slice(1)),u=W.apply(void 0,c);a=a.concat([u.min.x],[u.max.x]),i=i.concat([u.min.y],[u.max.y]),r=s,n=o}}));var s=Math.min.apply(Math,a),o=Math.min.apply(Math,i),c=Math.max.apply(Math,a),u=Math.max.apply(Math,i),m=c-s,h=u-o;return{width:m,height:h,x:s,y:o,x2:c,y2:u,cx:s+m/2,cy:o+h/2,cz:Math.max(m,h)+Math.min(m,h)/2}}Object.assign(J,{Version:"0.0.24"});var tt=function(e,r){var n=r||{};this.segments=l(e);var a=_(this.segments),i=a.width,s=a.height,o=a.cx,c=a.cy,u=a.cz,m=t.round,h=t.origin,f=n.round,p=n.origin;if("auto"===f){var y=(""+Math.floor(Math.max(i,s))).length;m=y>=4?0:4-y}else(Number.isInteger(f)&&f>=1||!1===f)&&(m=f);if(Array.isArray(p)&&p.length>=2){var v=p.map(Number),d=v[0],x=v[1],g=v[2];h=[Number.isNaN(d)?o:d,Number.isNaN(x)?c:x,g||u]}else h=[o,c,u];return this.round=m,this.origin=h,this};function et(t,e,r,n,a,i,s,o){return 3*((o-e)*(r+a)-(s-t)*(n+i)+n*(t-a)-r*(e-i)+o*(a+t/3)-s*(i+e/3))/20}function rt(t){var e=0,r=0,n=0;return T(t).map((function(t){var a,i;switch(t[0]){case"M":return e=(a=t)[1],r=a[2],0;default:return n=et.apply(void 0,[e,r].concat(t.slice(1))),i=t.slice(-2).map(Number),e=i[0],r=i[1],n}})).reduce((function(t,e){return t+e}),0)}function nt(t,e,r,n,a){return a*(a*(-3*t+9*e-9*r+3*n)+6*t-12*e+6*r)-3*t+3*e}function at(t,e,r,n,a,i,s,o,c){var u=c;(null===c||Number.isNaN(+c))&&(u=1),u>1&&(u=1),u<0&&(u=0);var m=u/2,h=0,l=0,f=0,p=0,y=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472];return[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816].forEach((function(c,u){l=nt(t,r,a,s,h=m*c+m),f=nt(e,n,i,o,h),p+=y[u]*Math.sqrt(l*l+f*f)})),m*p}tt.prototype.toAbsolute=function(){var t=this.segments;return this.segments=p(t),this},tt.prototype.toRelative=function(){var t=this.segments;return this.segments=v(t),this},tt.prototype.toCurve=function(){var t=this.segments;return this.segments=T(t),this},tt.prototype.reverse=function(t){this.toAbsolute();var e=this.segments,r=O(this.toString()),n=r.length>1?r:0,a=n&&u(n).map((function(e,r){return t?r?z(e):l(e):z(e)})),i=[];return i=n?a.flat(1):t?e:z(e),this.segments=u(i),this},tt.prototype.normalize=function(){var t=this.segments;return this.segments=b(t),this},tt.prototype.optimize=function(){var t=this.segments;return this.segments=L(t,this.round),this},tt.prototype.transform=function(t){if(!t||"object"!=typeof t||"object"==typeof t&&!["translate","rotate","skew","scale"].some((function(e){return e in t})))return this;var e={};Object.keys(t).forEach((function(r){e[r]=Array.isArray(t[r])?[].concat(t[r]):Number(t[r])}));var r=this.segments,n=e.origin;if(n&&n.length>=2){var a=n.map(Number),i=a[0],s=a[1],o=a[2],c=this.origin,u=c[0],m=c[1],h=c[2];e.origin=[Number.isNaN(i)?u:i,Number.isNaN(s)?m:s,o||h]}else e.origin=Object.assign({},this.origin);return this.segments=K(r,e),this},tt.prototype.flipX=function(){return this.transform({rotate:[180,0,0]}),this},tt.prototype.flipY=function(){return this.transform({rotate:[0,180,0]}),this},tt.prototype.toString=function(){return V(this.segments,this.round)};var it={circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],rect:["width","height","x","y","rx","ry"],polygon:["points"],polyline:["points"],glyph:[]};var st={CSSMatrix:J,parsePathString:l,isPathArray:h,isCurveArray:N,isAbsoluteArray:f,isRelativeArray:y,isNormalizedArray:g,isValidPath:function(t){if("string"!=typeof t)return!1;var e=new m(t);for(s(e);e.index<e.max&&!e.err.length;)c(e);return!e.err.length&&"mM".includes(e.segments[0][0])},pathToAbsolute:p,pathToRelative:v,pathToCurve:T,pathToString:V,getDrawDirection:function(t){return rt(T(t))>=0},getPathArea:rt,getPathBBox:_,getPathLength:function(t){var e=0;return T(t).forEach((function(t,r,n){var a="M"!==t[0]?n[r-1].slice(-2).concat(t.slice(1)):[];e+="M"===t[0]?0:at.apply(void 0,a)})),e},getPointAtLength:function(t,e){var r,n,a,i=0;return T(t).map((function(t,s,o){if(n=s?o[s-1].slice(-2).concat(t.slice(1)):t.slice(1),r=s?at.apply(void 0,n):0,i+=r,0===s)a={x:n[0],y:n[1]};else if(i>e&&e>i-r){var c=n.concat([1-(i-e)/r]);a=S.apply(void 0,c)}else a=null;return a})).filter((function(t){return t})).slice(-1)[0]},clonePath:u,splitPath:O,fixPath:w,roundPath:j,optimizePath:L,reverseCurve:function(t){var e=t.slice(1).map((function(e,r,n){return r?n[r-1].slice(-2).concat(e.slice(1)):t[0].slice(1).concat(e.slice(1))})).map((function(t){return t.map((function(e,r){return t[t.length-r-2*(1-r%2)]}))})).reverse();return[["M"].concat(e[0].slice(0,2))].concat(e.map((function(t){return["C"].concat(t.slice(2))})))},reversePath:z,normalizePath:b,transformPath:K,shapeToPath:function(e,r){var n=Object.keys(it),a=e instanceof Element;if(a&&!n.some((function(t){return e.tagName===t})))throw TypeError('shapeToPath: "'+e+'" is not SVGElement');var i,s=document.createElementNS("http://www.w3.org/2000/svg","path"),o=a?e.tagName:e.type,c={};if(c.type=o,a){var u=it[o];u.forEach((function(t){c[t]=e.getAttribute(t)})),Object.values(e.attributes).forEach((function(t){var e=t.name,r=t.value;u.includes(e)||s.setAttribute(e,r)}))}else Object.assign(c,e);var m,h,l,f,p=t.round;return"circle"===o?i=V((h=(m=c).cx,l=m.cy,f=m.r,[["M",h-f,l],["a",f,f,0,1,0,2*f,0],["a",f,f,0,1,0,-2*f,0]]),p):"ellipse"===o?i=V(function(t){var e=t.cx,r=t.cy,n=t.rx,a=t.ry;return[["M",e-n,r],["a",n,a,0,1,0,2*n,0],["a",n,a,0,1,0,-2*n,0]]}(c),p):["polyline","polygon"].includes(o)?i=V(function(t){for(var e=[],r=t.points.split(/[\s|,]/).map(Number),n=0;n<r.length;)e.push([n?"L":"M",r[n],r[n+1]]),n+=2;return"polygon"===t.type?e.concat([["z"]]):e}(c),p):"rect"===o?i=V(function(t){var e=+t.x||0,r=+t.y||0,n=+t.width,a=+t.height,i=+t.rx,s=+t.ry;return i||s?(i=i||s,s=s||i,2*i>n&&(i-=(2*i-n)/2),2*s>a&&(s-=(2*s-a)/2),[["M",e+i,r],["h",n-2*i],["s",i,0,i,s],["v",a-2*s],["s",0,s,-i,s],["h",2*i-n],["s",-i,0,-i,-s],["v",2*s-a],["s",0,-s,i,-s]]):[["M",e,r],["h",n],["v",a],["H",e],["Z"]]}(c),p):"line"===o?i=V(function(t){return[["M",t.x1,t.y1],["L",t.x2,t.y2]]}(c),p):"glyph"===o&&(i=a?e.getAttribute("d"):e.type),!!i&&(s.setAttribute("d",i),r&&a&&(e.before(s,e),e.remove()),s)},options:t};return Object.assign(tt,st,{Version:"0.1.21"}),tt}));
|
package/package.json
CHANGED
|
@@ -13,9 +13,10 @@
|
|
|
13
13
|
* @returns {[number, number]} the projected [x,y] coordinates
|
|
14
14
|
*/
|
|
15
15
|
export default function projection2d(m, point2D, origin) {
|
|
16
|
+
const [px, py] = point2D;
|
|
16
17
|
const [originX, originY, originZ] = origin;
|
|
17
18
|
const point3D = m.transformPoint({
|
|
18
|
-
x:
|
|
19
|
+
x: px, y: py, z: 0, w: 1,
|
|
19
20
|
});
|
|
20
21
|
|
|
21
22
|
const relativePositionX = point3D.x - originX;
|
|
@@ -40,9 +40,15 @@ class SVGPathCommander {
|
|
|
40
40
|
*/
|
|
41
41
|
this.segments = parsePathString(pathValue);
|
|
42
42
|
const BBox = getPathBBox(this.segments);
|
|
43
|
-
const {
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
const {
|
|
44
|
+
width,
|
|
45
|
+
height,
|
|
46
|
+
cx,
|
|
47
|
+
cy,
|
|
48
|
+
cz,
|
|
49
|
+
} = BBox;
|
|
50
|
+
|
|
51
|
+
// set instance options.round
|
|
46
52
|
let { round, origin } = defaultOptions;
|
|
47
53
|
const { round: roundOption, origin: originOption } = instanceOptions;
|
|
48
54
|
|
|
@@ -53,15 +59,16 @@ class SVGPathCommander {
|
|
|
53
59
|
round = roundOption;
|
|
54
60
|
}
|
|
55
61
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
62
|
+
// set instance options.origin
|
|
63
|
+
if (Array.isArray(originOption) && originOption.length >= 2) {
|
|
64
|
+
const [originX, originY, originZ] = originOption.map(Number);
|
|
65
|
+
origin = [
|
|
66
|
+
!Number.isNaN(originX) ? originX : cx,
|
|
67
|
+
!Number.isNaN(originY) ? originY : cy,
|
|
68
|
+
originZ || cz,
|
|
69
|
+
];
|
|
59
70
|
} else {
|
|
60
|
-
|
|
61
|
-
const { cx, cy } = BBox;
|
|
62
|
-
// an estimted guess
|
|
63
|
-
const originZ = Math.max(width, height) + Math.min(width, height) / 2;
|
|
64
|
-
origin = [cx, cy, originZ];
|
|
71
|
+
origin = [cx, cy, cz];
|
|
65
72
|
}
|
|
66
73
|
|
|
67
74
|
/**
|
|
@@ -69,9 +76,6 @@ class SVGPathCommander {
|
|
|
69
76
|
* @default 4
|
|
70
77
|
*/
|
|
71
78
|
this.round = round;
|
|
72
|
-
/**
|
|
73
|
-
* @default [0,0]
|
|
74
|
-
*/
|
|
75
79
|
this.origin = origin;
|
|
76
80
|
|
|
77
81
|
return this;
|
|
@@ -187,7 +191,16 @@ class SVGPathCommander {
|
|
|
187
191
|
|
|
188
192
|
// if origin is not specified
|
|
189
193
|
// it's important that we have one
|
|
190
|
-
|
|
194
|
+
const { origin } = transform;
|
|
195
|
+
if (origin && origin.length >= 2) {
|
|
196
|
+
const [originX, originY, originZ] = origin.map(Number);
|
|
197
|
+
const [cx, cy, cz] = this.origin;
|
|
198
|
+
transform.origin = [
|
|
199
|
+
!Number.isNaN(originX) ? originX : cx,
|
|
200
|
+
!Number.isNaN(originY) ? originY : cy,
|
|
201
|
+
originZ || cz,
|
|
202
|
+
];
|
|
203
|
+
} else {
|
|
191
204
|
// @ts-ignore
|
|
192
205
|
transform.origin = { ...this.origin };
|
|
193
206
|
}
|
package/src/util/getPathBBox.js
CHANGED
|
@@ -10,7 +10,7 @@ import pathToCurve from '../convert/pathToCurve';
|
|
|
10
10
|
export default function getPathBBox(path) {
|
|
11
11
|
if (!path) {
|
|
12
12
|
return {
|
|
13
|
-
x: 0, y: 0, width: 0, height: 0, x2: 0, y2: 0, cx: 0, cy: 0,
|
|
13
|
+
x: 0, y: 0, width: 0, height: 0, x2: 0, y2: 0, cx: 0, cy: 0, cz: 0,
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
16
|
const pathCurve = pathToCurve(path);
|
|
@@ -44,16 +44,22 @@ export default function getPathBBox(path) {
|
|
|
44
44
|
});
|
|
45
45
|
|
|
46
46
|
// @ts-ignore
|
|
47
|
-
const xTop = Math.min.apply(0, X);
|
|
47
|
+
// const xTop = Math.min.apply(0, X);
|
|
48
|
+
const xTop = Math.min(...X);
|
|
48
49
|
// @ts-ignore
|
|
49
|
-
const yTop = Math.min.apply(0, Y);
|
|
50
|
+
// const yTop = Math.min.apply(0, Y);
|
|
51
|
+
const yTop = Math.min(...Y);
|
|
50
52
|
// @ts-ignore
|
|
51
|
-
const xBot = Math.max.apply(0, X);
|
|
53
|
+
// const xBot = Math.max.apply(0, X);
|
|
54
|
+
const xBot = Math.max(...X);
|
|
52
55
|
// @ts-ignore
|
|
53
|
-
const yBot = Math.max.apply(0, Y);
|
|
56
|
+
// const yBot = Math.max.apply(0, Y);
|
|
57
|
+
const yBot = Math.max(...Y);
|
|
54
58
|
const width = xBot - xTop;
|
|
55
59
|
const height = yBot - yTop;
|
|
56
60
|
|
|
61
|
+
// an estimted guess
|
|
62
|
+
const cz = Math.max(width, height) + Math.min(width, height) / 2;
|
|
57
63
|
return {
|
|
58
64
|
width,
|
|
59
65
|
height,
|
|
@@ -63,5 +69,6 @@ export default function getPathBBox(path) {
|
|
|
63
69
|
y2: yBot,
|
|
64
70
|
cx: xTop + width / 2,
|
|
65
71
|
cy: yTop + height / 2,
|
|
72
|
+
cz,
|
|
66
73
|
};
|
|
67
74
|
}
|
package/types/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export as namespace SVGPathCommander;
|
|
|
2
2
|
export default SVGPathCommander;
|
|
3
3
|
|
|
4
4
|
// modules
|
|
5
|
+
import './svg-path-commander';
|
|
5
6
|
export { default as pathToAbsolute } from "svg-path-commander/src/convert/pathToAbsolute";
|
|
6
7
|
export { default as pathToRelative } from "svg-path-commander/src/convert/pathToRelative";
|
|
7
8
|
export { default as pathToCurve } from "svg-path-commander/src/convert/pathToCurve";
|
package/types/more/svg.d.ts
CHANGED
|
@@ -1,105 +1,105 @@
|
|
|
1
1
|
// custom types
|
|
2
|
-
export
|
|
3
|
-
export
|
|
2
|
+
export type MCommand = 'M';
|
|
3
|
+
export type mCommand = 'm';
|
|
4
4
|
|
|
5
|
-
export
|
|
6
|
-
export
|
|
5
|
+
export type LCommand = 'L';
|
|
6
|
+
export type lCommand = 'l';
|
|
7
7
|
|
|
8
|
-
export
|
|
9
|
-
export
|
|
8
|
+
export type VCommand = 'V';
|
|
9
|
+
export type vCommand = 'v';
|
|
10
10
|
|
|
11
|
-
export
|
|
12
|
-
export
|
|
11
|
+
export type HCommand = 'H';
|
|
12
|
+
export type hCommand = 'h';
|
|
13
13
|
|
|
14
|
-
export
|
|
15
|
-
export
|
|
14
|
+
export type ZCommand = 'Z';
|
|
15
|
+
export type zCommand = 'z';
|
|
16
16
|
|
|
17
|
-
export
|
|
18
|
-
export
|
|
17
|
+
export type CCommand = 'C';
|
|
18
|
+
export type cCommand = 'c';
|
|
19
19
|
|
|
20
|
-
export
|
|
21
|
-
export
|
|
20
|
+
export type SCommand = 'S';
|
|
21
|
+
export type sCommand = 's';
|
|
22
22
|
|
|
23
|
-
export
|
|
24
|
-
export
|
|
23
|
+
export type QCommand = 'Q';
|
|
24
|
+
export type qCommand = 'q';
|
|
25
25
|
|
|
26
|
-
export
|
|
27
|
-
export
|
|
26
|
+
export type TCommand = 'T';
|
|
27
|
+
export type tCommand = 't';
|
|
28
28
|
|
|
29
|
-
export
|
|
30
|
-
export
|
|
29
|
+
export type ACommand = 'A';
|
|
30
|
+
export type aCommand = 'a';
|
|
31
31
|
|
|
32
|
-
export
|
|
32
|
+
export type absoluteCommand = MCommand | LCommand | VCommand | HCommand | ZCommand
|
|
33
33
|
| CCommand | SCommand | QCommand | TCommand | ACommand;
|
|
34
|
-
export
|
|
34
|
+
export type relativeCommand = mCommand | lCommand | vCommand | hCommand | zCommand
|
|
35
35
|
| cCommand | sCommand | qCommand | tCommand | aCommand;
|
|
36
36
|
|
|
37
|
-
export
|
|
37
|
+
export type pathCommand = absoluteCommand | relativeCommand;
|
|
38
38
|
|
|
39
|
-
export
|
|
40
|
-
export
|
|
41
|
-
export
|
|
39
|
+
export type MSegment = [MCommand, number, number];
|
|
40
|
+
export type mSegment = [mCommand, number, number];
|
|
41
|
+
export type moveSegment = MSegment | mSegment;
|
|
42
42
|
|
|
43
|
-
export
|
|
44
|
-
export
|
|
45
|
-
export
|
|
43
|
+
export type LSegment = [LCommand, number, number];
|
|
44
|
+
export type lSegment = [lCommand, number, number];
|
|
45
|
+
export type lineSegment = LSegment | lSegment;
|
|
46
46
|
|
|
47
|
-
export
|
|
48
|
-
export
|
|
49
|
-
export
|
|
47
|
+
export type VSegment = [VCommand, number];
|
|
48
|
+
export type vSegment = [vCommand, number];
|
|
49
|
+
export type vertLineSegment = vSegment | VSegment;
|
|
50
50
|
|
|
51
|
-
export
|
|
52
|
-
export
|
|
53
|
-
export
|
|
51
|
+
export type HSegment = [HCommand, number];
|
|
52
|
+
export type hSegment = [hCommand, number];
|
|
53
|
+
export type horLineSegment = HSegment | hSegment;
|
|
54
54
|
|
|
55
|
-
export
|
|
56
|
-
export
|
|
57
|
-
export
|
|
55
|
+
export type ZSegment = [ZCommand];
|
|
56
|
+
export type zSegment = [zCommand];
|
|
57
|
+
export type closeSegment = ZSegment | zSegment;
|
|
58
58
|
|
|
59
|
-
export
|
|
60
|
-
export
|
|
61
|
-
export
|
|
59
|
+
export type CSegment = [CCommand, number, number, number, number, number, number];
|
|
60
|
+
export type cSegment = [cCommand, number, number, number, number, number, number];
|
|
61
|
+
export type cubicSegment = CSegment | cSegment;
|
|
62
62
|
|
|
63
|
-
export
|
|
64
|
-
export
|
|
65
|
-
export
|
|
63
|
+
export type SSegment = [SCommand, number, number, number, number];
|
|
64
|
+
export type sSegment = [sCommand, number, number, number, number];
|
|
65
|
+
export type shortCubicSegment = SSegment | sSegment;
|
|
66
66
|
|
|
67
|
-
export
|
|
68
|
-
export
|
|
69
|
-
export
|
|
67
|
+
export type QSegment = [QCommand, number, number, number, number];
|
|
68
|
+
export type qSegment = [qCommand, number, number, number, number];
|
|
69
|
+
export type quadSegment = QSegment | qSegment;
|
|
70
70
|
|
|
71
|
-
export
|
|
72
|
-
export
|
|
73
|
-
export
|
|
71
|
+
export type TSegment = [TCommand, number, number];
|
|
72
|
+
export type tSegment = [tCommand, number, number];
|
|
73
|
+
export type shortQuadSegment = TSegment | tSegment;
|
|
74
74
|
|
|
75
|
-
export
|
|
76
|
-
export
|
|
77
|
-
export
|
|
75
|
+
export type ASegment = [ACommand, number, number, number, number, number, number, number];
|
|
76
|
+
export type aSegment = [aCommand, number, number, number, number, number, number, number];
|
|
77
|
+
export type arcSegment = ASegment | aSegment;
|
|
78
78
|
|
|
79
|
-
export
|
|
79
|
+
export type pathSegment = moveSegment | lineSegment | vertLineSegment | horLineSegment | closeSegment
|
|
80
80
|
| cubicSegment | shortCubicSegment | quadSegment | shortQuadSegment | arcSegment;
|
|
81
81
|
|
|
82
|
-
export
|
|
83
|
-
export
|
|
84
|
-
export
|
|
85
|
-
export
|
|
82
|
+
export type shortSegment = vertLineSegment | horLineSegment | shortCubicSegment | shortQuadSegment | closeSegment;
|
|
83
|
+
export type absoluteSegment = MSegment | LSegment | VSegment | HSegment | CSegment | SSegment | QSegment | TSegment | ASegment | ZSegment;
|
|
84
|
+
export type relativeSegment = mSegment | lSegment | vSegment | hSegment | cSegment | sSegment | qSegment | tSegment | aSegment | zSegment;
|
|
85
|
+
export type normalSegment = MSegment | LSegment | CSegment | QSegment | ASegment | ZSegment;
|
|
86
86
|
|
|
87
|
-
export
|
|
88
|
-
export
|
|
89
|
-
export
|
|
90
|
-
export
|
|
91
|
-
export
|
|
92
|
-
export
|
|
93
|
-
export
|
|
87
|
+
export type pathArray = [(MSegment | mSegment), ...pathSegment[]];
|
|
88
|
+
export type absoluteArray = [MSegment, ...absoluteSegment[]];
|
|
89
|
+
export type relativeArray = [MSegment, ...relativeSegment[]];
|
|
90
|
+
export type normalArray = [MSegment, ...normalSegment[]];
|
|
91
|
+
export type curveArray = [MSegment, ...CSegment[]];
|
|
92
|
+
export type polygonArray = [MSegment, ...LSegment[], ZSegment];
|
|
93
|
+
export type polylineArray = [MSegment, ...LSegment[]];
|
|
94
94
|
|
|
95
|
-
export
|
|
95
|
+
export interface options {
|
|
96
96
|
/** @default 4 */
|
|
97
97
|
round: boolean | number;
|
|
98
98
|
/** @default [0,0,0] */
|
|
99
99
|
origin: number[];
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
export
|
|
102
|
+
export interface pathTransformList {
|
|
103
103
|
/** segment */
|
|
104
104
|
s: pathSegment,
|
|
105
105
|
/** pathCommand */
|
|
@@ -110,7 +110,7 @@ export declare interface pathTransformList {
|
|
|
110
110
|
y: number
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
export
|
|
113
|
+
export interface transformObject {
|
|
114
114
|
// translate?: number | [number, number, number];
|
|
115
115
|
// rotate?: number | [number, number, number];
|
|
116
116
|
// scale?: number | [number, number, number];
|
|
@@ -125,55 +125,55 @@ export declare interface transformObject {
|
|
|
125
125
|
export type shapeTypes = SVGPolylineElement | SVGPolygonElement | SVGLineElement | SVGEllipseElement | SVGCircleElement | SVGRectElement;
|
|
126
126
|
export type shapeOps = lineAttr | polyAttr | ellipseAttr | circleAttr | rectAttr | glyphAttr;
|
|
127
127
|
|
|
128
|
-
export
|
|
128
|
+
export interface lineAttr {
|
|
129
129
|
type: string;
|
|
130
130
|
x1: number;
|
|
131
131
|
y1: number;
|
|
132
132
|
x2: number;
|
|
133
133
|
y2: number
|
|
134
134
|
}
|
|
135
|
-
export
|
|
135
|
+
export interface polyAttr {
|
|
136
136
|
type: string;
|
|
137
137
|
points : string;
|
|
138
138
|
}
|
|
139
|
-
export
|
|
139
|
+
export interface circleAttr {
|
|
140
140
|
type: string;
|
|
141
141
|
cx: number;
|
|
142
142
|
cy: number;
|
|
143
143
|
r: number;
|
|
144
144
|
}
|
|
145
|
-
export
|
|
145
|
+
export interface ellipseAttr {
|
|
146
146
|
type: string;
|
|
147
147
|
cx: number;
|
|
148
148
|
cy: number;
|
|
149
149
|
rx: number;
|
|
150
150
|
ry: number;
|
|
151
151
|
}
|
|
152
|
-
export
|
|
152
|
+
export interface rectAttr {
|
|
153
153
|
type: string;
|
|
154
154
|
width : number;
|
|
155
155
|
height : number;
|
|
156
156
|
x : number; y : number;
|
|
157
157
|
rx : number; ry : number;
|
|
158
158
|
}
|
|
159
|
-
export
|
|
159
|
+
export interface glyphAttr {
|
|
160
160
|
type: string;
|
|
161
161
|
d : string;
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
-
export
|
|
164
|
+
export interface pathBBox {
|
|
165
165
|
width: number;
|
|
166
166
|
height: number;
|
|
167
167
|
x: number; y: number;
|
|
168
168
|
x2: number; y2: number;
|
|
169
|
-
cx: number; cy: number;
|
|
169
|
+
cx: number; cy: number; cz: number;
|
|
170
170
|
}
|
|
171
|
-
export
|
|
171
|
+
export interface segmentLimits {
|
|
172
172
|
min : {x: number; y: number};
|
|
173
173
|
max : {x: number; y: number}
|
|
174
174
|
}
|
|
175
175
|
|
|
176
|
-
export
|
|
176
|
+
export interface parserParams {
|
|
177
177
|
x1: number; y1: number;
|
|
178
178
|
x2: number; y2: number;
|
|
179
179
|
x: number; y: number;
|