svg-path-commander 0.1.11-alpha3 → 0.1.11-alpha4
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.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* SVGPathCommander v0.1.
|
|
2
|
+
* SVGPathCommander v0.1.11alpha4 (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
|
*/
|
|
@@ -998,11 +998,8 @@ function shortenSegment(segment, params, prevCommand) {
|
|
|
998
998
|
|
|
999
999
|
/**
|
|
1000
1000
|
* Optimizes a `pathArray` object:
|
|
1001
|
-
* * convert segments to
|
|
1002
|
-
* *
|
|
1003
|
-
* from absolute and relative `pathArray`s
|
|
1004
|
-
*
|
|
1005
|
-
* TO DO - denormalize segments, normalToShorthand
|
|
1001
|
+
* * convert segments to shorthand if possible
|
|
1002
|
+
* * select shortest segments from absolute and relative `pathArray`s
|
|
1006
1003
|
*
|
|
1007
1004
|
* @param {string | SVGPathCommander.pathArray} pathInput a string or `pathArray`
|
|
1008
1005
|
* @param {number | boolean | null} round the amount of decimals to round values to
|
|
@@ -2733,7 +2730,7 @@ function getSegCubicLength(x1, y1, x2, y2, x3, y3, x4, y4, z) {
|
|
|
2733
2730
|
function getPathLength(path) {
|
|
2734
2731
|
let totalLength = 0;
|
|
2735
2732
|
pathToCurve(path).forEach((s, i, curveArray) => {
|
|
2736
|
-
const args = [...curveArray[i - 1].slice(-2), ...s.slice(1)];
|
|
2733
|
+
const args = s[0] !== 'M' ? [...curveArray[i - 1].slice(-2), ...s.slice(1)] : [];
|
|
2737
2734
|
totalLength += s[0] === 'M' ? 0
|
|
2738
2735
|
// : getSegCubicLength.apply(0, curveArray[i - 1].slice(-2).concat(s.slice(1)));
|
|
2739
2736
|
// @ts-ignore
|
|
@@ -3050,7 +3047,7 @@ function fixPath(pathInput) {
|
|
|
3050
3047
|
return pathArray;
|
|
3051
3048
|
}
|
|
3052
3049
|
|
|
3053
|
-
var version = "0.1.
|
|
3050
|
+
var version = "0.1.11alpha4";
|
|
3054
3051
|
|
|
3055
3052
|
// @ts-ignore
|
|
3056
3053
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// SVGPathCommander v0.1.
|
|
2
|
-
const t={origin:[0,0],decimals:4,round:1},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 Array.isArray(t)?t.map(t=>Array.isArray(t)?c(t):Number.isNaN(+t)?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]/gi.test(r)})}function h(t){if(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 Array.isArray(t)&&u(t)&&t.every(t=>t[0]===t[0].toUpperCase())}function y(t){if(f(t))return c(t);const e=h(t),r=e.length,n=[];let s=0,a=0,i=0,m=0,o=0;"M"===e[0][0]&&([s,a]=e[0].slice(1).map(Number),i=s,m=a,o+=1,n.push(["M",s,a]));for(let t=o;t<r;t+=1){const r=e[t],[o]=r,c=o.toUpperCase(),l=[];let u=[];if(n.push(l),o!==c)switch(l[0]=c,c){case"A":u=[...r.slice(1,-2).map(Number),r[6]+s,r[7]+a];for(let t=0;t<u.length;t+=1)l.push(u[t]);break;case"V":l[1]=r[1]+a;break;case"H":l[1]=r[1]+s;break;default:"M"===c&&(i=r[1]+s,m=r[2]+a);for(let t=1;t<r.length;t+=1)l.push(+r[t]+(t%2?s:a))}else for(let t=0;t<r.length;t+=1)l.push(r[t]);const h=l.length;switch(c){case"Z":s=i,a=m;break;case"H":s=+l[1];break;case"V":a=+l[1];break;default:s=+l[h-2],a=+l[h-1],"M"===c&&(i=s,m=a)}}return n}function x(t){return Array.isArray(t)&&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),r=e.length,n=[];let s=0,a=0,i=0,m=0,o=0;"M"===e[0][0]&&(s=+e[0][1],a=+e[0][2],i=s,m=a,o+=1,n.push(["M",s,a]));for(let t=o;t<r;t+=1){const r=e[t],[o]=r,c=o.toLowerCase(),l=[];let u=[];if(n.push(l),o!==c)switch(l[0]=c,c){case"a":u=[...r.slice(1,-2).map(Number),r[6]-s,r[7]-a];for(let t=0;t<u.length;t+=1)l.push(u[t]);break;case"v":l[1]=+r[1]-a;break;default:for(let t=1;t<r.length;t+=1)l.push(+r[t]-(t%2?s:a));"m"===c&&(i=+r[1],m=+r[2])}else{"m"===o&&(i=+r[1]+s,m=+r[2]+a);for(let t=0;t<r.length;t+=1)l.push(r[t])}const h=l.length;switch(l[0]){case"z":s=i,a=m;break;case"h":s+=+l[h-1];break;case"v":a+=+l[h-1];break;default:s+=+n[t][h-2],a+=+n[t][h-1]}}return n}function d(e,r){const{round:n,decimals:s}=t,a=r&&!Number.isNaN(+r)?+r:n&&s;if(!1===r||!n&&!a)return c(e);const i=10**a,m=[],o=e.length;let l,u=0,h=[];for(let t=0;t<o;t+=1){h=e[t],l=[""];for(let t=0;t<h.length;t+=1)t?(u=+h[t],l.push(t&&u%1!=0?Math.round(u*i)/i:u)):l[t]=h[t];m.push(l)}return m}function g(t,e){return d(t,e).map(t=>t[0]+t.slice(1).join(" ")).join("")}function M(t,e,r){const{x1:n,y1:s,x2:a,y2:i}=e,[m]=t,o=t.slice(1).map(Number),[c,l]=o;let u=t;if("TQ".includes(t[0])||(e.qx=null,e.qy=null),"H"===m)u=["L",t[1],s];else if("V"===m)u=["L",n,t[1]];else if("S"===m){const{x1:t,y1:m}=function(t,e,r,n,s){return"CS".includes(s)?{x1:2*t-r,y1:2*e-n}:{x1:t,y1:e}}(n,s,a,i,r);e.x1=t,e.y1=m,u=["C",t,m,...o]}else if("T"===m){const{qx:t,qy:a}=function(t,e,r,n,s){return"QT".includes(s)?{qx:2*t-r,qy:2*e-n}:{qx:t,qy:e}}(n,s,e.qx,e.qy,r);e.qx=t,e.qy=a,u=["Q",t,a,...o]}else"Q"===m&&(e.qx=c,e.qy=l);return u}function b(t){return Array.isArray(t)&&u(t)&&t.every(t=>{const r=t[0].toLowerCase();return e[r]===t.length-1&&"ACLMQZ".includes(t[0])})}function v(t){if(b(t))return c(t);const e=y(t),r={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},n=[],s=e.length;let a,i,m="",o="";for(let t=0;t<s;t+=1)[m]=e[t],n[t]=m,t&&(o=n[t-1]),e[t]=M(e[t],r,o),a=e[t],i=a.length,r.x1=+a[i-2],r.y1=+a[i-1],r.x2=+a[i-4]||r.x1,r.y2=+a[i-3]||r.y1;return e}function N(t){const e=y(t),r="Z"===e.slice(-1)[0][0];let n=[];return n=v(e).map((t,r)=>{const n=t.slice(1).map(Number),[s,a]=n.slice(-2);return{seg:e[r],n:t,c:e[r][0],values:n,x:s,y:a}}).map((t,e,n)=>{const s=t.seg,{values:a}=t,i=t.n,m=e&&n[e-1],o=n[e+1]&&n[e+1],c=t.c,l=n.length,u=e?n[e-1].x:n[l-1].x,h=e?n[e-1].y:n[l-1].y;let f=[""];switch(c){case"M":f=r?["Z"]:[c,u,h];break;case"A":f=[c,...a.slice(0,-3),1===s[5]?0:1,u,h];break;case"C":f=o&&"S"===o.c?["S",s[1],s[2],u,h]:[c,s[3],s[4],s[1],s[2],u,h];break;case"S":f=m&&"CS".includes(m.c)&&(!o||o&&"S"!==o.c)?["C",i[3],i[4],i[1],i[2],u,h]:[c,i[1],i[2],u,h];break;case"Q":f=o&&"T"===o.c?["T",u,h]:[c,...a.slice(0,-2),u,h];break;case"T":f=m&&"QT".includes(m.c)&&(!o||o&&"T"!==o.c)?["Q",i[1],i[2],u,h]:[c,u,h];break;case"Z":f=["M",u,h];break;case"H":f=[c,u];break;case"V":f=[c,h];break;default:f=[c,...a.slice(0,-2),u,h]}return f}),r?n.reverse():[n[0],...n.slice(1).reverse()]}function A(t){return g(y(t),0).replace(/(m|M)/g,"|$1").split("|").map(t=>t.trim()).filter(t=>t)}function w(t,e,r){const[n]=t,s=t.slice(1),{x1:a,y1:i,x2:m,y2:o}=e;let c=t.slice();const[l,u]=t.slice(-2);if("TQ".includes(t[0])||(e.qx=null,e.qy=null),"L"===n)a===t[1]?c=["V",t[1]]:i===t[2]&&(c=["H",t[2]]),e.x=+l,e.y=+u;else if("C"===n){const[t,n]=s.slice(-4),[h,f]=s;["C","S"].includes(r)&&h===2*a-m&&f===2*i-o&&(c=["S",t,n,l,u]),e.x1=h,e.y1=f}else if("Q"===n){const[t,n]=s;["Q","T"].includes(r)&&t===2*a-m&&n===2*i-o&&(c=["T",l,u]),e.qx=t,e.qy=n}return c}function C(t,e){const r=y(t),n={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},s=[],a=r.length;let i,m,o="",c="";for(let t=0;t<a;t+=1)[o]=r[t],s[t]=o,t&&(c=s[t-1]),r[t]=w(r[t],n,c),i=r[t],m=i.length,n.x1=+i[m-2],n.y1=+i[m-1],n.x2=+i[m-4]||n.x1,n.y2=+i[m-3]||n.y1;const l=d(y(r),e),u=d(p(r),e);return l.map((t,e)=>e?t.join("").length<u[e].join("").length?t:u[e]:t)}function q(t,e,r){return{x:t*Math.cos(r)-e*Math.sin(r),y:t*Math.sin(r)+e*Math.cos(r)}}function k(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,A=[];if(c)[M,b,v,N]=c;else{g=q(l,u,-d),l=g.x,u=g.y,g=q(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 w=b-M;if(Math.abs(w)>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),A=k(y,x,h,f,s,0,i,e,r,[b,t,v,N])}w=b-M;const C=Math.cos(M),S=Math.sin(M),P=Math.cos(b),I=Math.sin(b),T=Math.tan(w/4),V=4/3*h*T,$=4/3*f*T,L=[l,u],z=[l+V*S,u-$*C],E=[y+V*I,x-$*P],j=[y,x];if(z[0]=2*L[0]-z[0],z[1]=2*L[1]-z[1],c)return[...z,...E,...j,...A];A=[...z,...E,...j,...A];const O=[];for(let t=0,e=A.length;t<e;t+=1)O[t]=t%2?q(A[t-1],A[t],d).y:q(A[t],A[t+1],d).x;return O}function S(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 P(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 I(t,e,r){const[n,s]=t,[a,i]=e;return[n+(a-n)*r,s+(i-s)*r]}function T(t,e,r,n){const s=.5,a=[t,e],i=[r,n],m=I(a,i,s),o=I(i,m,s),c=I(m,o,s),l=I(o,c,s),u=I(c,l,s),h=P(...[...a,...m,...c,...u,s]),f=P(...[...u,...l,...o,...i,0]);return[h.x,h.y,f.x,f.y,r,n]}function V(t,e){"TQ".includes(t[0])||(e.qx=null,e.qy=null);const r=t.slice(1).map(Number),[n,s]=r,{x1:a,y1:i,x:m,y:o}=e;switch(t[0]){case"M":return e.x=n,e.y=s,t;case"A":return["C",...k(a,i,...r)];case"Q":return e.qx=n,e.qy=s,["C",...S(a,i,...r)];case"L":return["C",...T(a,i,n,s)];case"Z":return["C",...T(a,i,m,o)]}return t}function $(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).map(Number)]);t.splice(r,1)}}function L(t){const e=new H,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 z(t){const e=Object.keys(new H);if("object"==typeof t&&e.every(e=>e in t))return L([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 E(t){if("string"!=typeof t)throw TypeError(`CSSMatrix: "${t}" is not a string.`);const e=String(t).replace(/\s/g,"");let r=new H;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(L(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 j(t,e,r){const n=new H;return n.m41=t,n.e=t,n.m42=e,n.f=e,n.m43=r,n}function O(t,e,r){const n=new H,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 Q(t,e,r,n){const s=new H,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 Z(t,e,r){const n=new H;return n.m11=t,n.a=t,n.m22=e,n.d=e,n.m33=r,n}function D(t){const e=new H,r=t*Math.PI/180,n=Math.tan(r);return e.m21=n,e.c=n,e}function X(t){const e=new H,r=t*Math.PI/180,n=Math.tan(r);return e.m12=n,e.b=n,e}function Y(t,e){return L([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 H{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)?L(t):"string"==typeof t&&t.length&&"none"!==t?E(t):"object"==typeof t?z(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 Y(this,t)}translate(t,e,r){let n=e,s=r;return void 0===s&&(s=0),void 0===n&&(n=0),Y(this,j(t,n,s))}scale(t,e,r){let n=e,s=r;return void 0===n&&(n=t),void 0===s&&(s=1),Y(this,Z(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),Y(this,O(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 Y(this,Q(t,e,r,n))}skewX(t){return Y(this,D(t))}skewY(t){return Y(this,X(t))}transformPoint(t){let e=j(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}}}function R(t){let e=new H;const{origin:r}=t,[n,s]=r,{translate:a}=t,{rotate:i}=t,{skew:m}=t,{scale:o}=t;return(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.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.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.isNaN(+o)||(e=e.scale(o||1,o||1,o||1)),e=e.translate(-n,-s)),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.isNaN(+a)||(e=e.translate(a||0,0,0)),e}function F(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 B(t,e){let r,n,s,a,i,m,o,l=0,u=0;const h=y(t),f=v(h),x=R(e),p=Object.keys(e),{origin:d}=e,{a:g,b:M,c:b,d:N,e:A,f:w}=x,C=[g,M,b,N,A,w],q={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null};let k=[""],S=0,P="",I=[];const T=[];if(!x.isIdentity){for(r=0,s=h.length;r<s;r+=1){k=h[r],h[r]&&([P]=k),T[r]=P,"A"!==P||x.is2D&&["skewX","skewY"].find(t=>p.includes(t))||(k=V(f[r],q),h[r]=V(f[r],q),$(h,T,r),f[r]=V(f[r],q),$(f,T,r),s=Math.max(h.length,f.length)),k=f[r],S=k.length,q.x1=+k[S-2],q.y1=+k[S-1],q.x2=+k[S-4]||q.x1,q.y2=+k[S-3]||q.y1;const t={s:h[r],c:h[r][0],x:q.x1,y:q.y1};I=[...I,t]}return I.map(t=>{switch(P=t.c,k=t.s,P){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}}(C,+k[1],+k[2],+k[3]),C[0]*C[3]-C[1]*C[2]<0&&(k[5]=+k[5]?0:1),[i,m]=F(x,[+k[6],+k[7]],d),k=l===i&&u===m||o.rx<1e-9*o.ry||o.ry<1e-9*o.rx?["L",i,m]:[P,o.rx,o.ry,o.ax,k[4],k[5],i,m],l=i,u=m,k;case"L":case"H":case"V":return[i,m]=F(x,[t.x,t.y],d),l!==i&&u!==m?k=["L",i,m]:u===m?k=["H",i]:l===i&&(k=["V",m]),l=i,u=m,k;default:for(n=1,a=k.length;n<a;n+=2)[l,u]=F(x,[+k[n],+k[n+1]],d),k[n]=l,k[n+1]=u;return k}})}return c(h)}function G(t){return Array.isArray(t)&&u(t)&&t.slice(1).every(t=>"C"===t[0])}function J(t){if(G(t))return c(t);const e=v(t),r={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},n=[];let s="",a=e.length;for(let t=0;t<a;t+=1){const i=e[t],m=i.length;i&&([s]=i),n[t]=s,e[t]=V(i,r),$(e,n,t),a=e.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 U(t){if(!t)return{x:0,y:0,width:0,height:0,x2:0,y2:0,cx:0,cy:0};const e=J(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=P(t,e,r,n,s,a,i,m,u),y.push(x.x),f.push(x.y)),h>0&&h<1&&(x=P(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=P(t,e,r,n,s,a,i,m,u),y.push(x.x),f.push(x.y)),h>0&&h<1&&(x=P(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).map(Number));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}}function K(t){let e=0,r=0,n=0,s=0,a=0;return J(t).map(t=>{switch(t[0]){case"M":case"Z":return n="M"===t[0]?t[1]:n,s="M"===t[0]?t[2]:s,e=n,r=s,0;default:return a=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).map(Number)),[e,r]=t.slice(-2).map(Number),a}}).reduce((t,e)=>t+e,0)}function W(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 _(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=W(t,r,s,i,u),f=W(e,n,a,m,u),y+=x[c]*Math.sqrt(h*h+f*f)}),l*y}Object.assign(H,{Translate:j,Rotate:O,RotateAxisAngle:Q,Scale:Z,SkewX:D,SkewY:X,Multiply:Y,fromArray:L,fromMatrix:z,fromString:E});const tt={circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],rect:["width","height","x","y","rx","ry"],polygon:["points"],polyline:["points"],glyph:[]};const et={CSSMatrix:H,parsePathString:h,isPathArray:u,isCurveArray:G,isAbsoluteArray:f,isRelativeArray:x,isNormalizedArray:b,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:J,pathToString:g,getDrawDirection:function(t){return K(J(t))>=0},getPathArea:K,getPathBBox:U,getPathLength:function(t){let e=0;return J(t).forEach((t,r,n)=>{const s=[...n[r-1].slice(-2),...t.slice(1)];e+="M"===t[0]?0:_(...s)}),e},getPointAtLength:function(t,e){let r,n,s,a=0;return J(t).map((t,i,m)=>{if(n=i?[...m[i-1].slice(-2),...t.slice(1)]:t.slice(1),r=i?_(...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=P(...t)}else s=null;return s}).filter(t=>t).slice(-1)[0]},clonePath:c,splitPath:A,fixPath:function(t){const e=h(t),r=y(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(1);return s&&i===o&&m===c?e.slice(0,-1):e},roundPath:d,optimizePath:C,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).map(Number)],...e.map(t=>["C",...t.slice(2).map(Number)])]},reversePath:N,normalizePath:v,transformPath:B,getSVGMatrix:R,shapeToPath:function(e,r){const n=Object.keys(tt),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=tt[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,decimals:l}=t,u=c&&l?l:null;return"circle"===i?o=g(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),u):"ellipse"===i?o=g(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),u):["polyline","polygon"].includes(i)?o=g(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),u):"rect"===i?o=g(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),u):"line"===i?o=g(function(t){const{x1:e,y1:r,x2:n,y2:s}=t;return[["M",e,r],["L",n,s]]}(m),u):"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,Version:"0.1.11alpha3"};class rt{constructor(e,r){const n=r||{};let{round:s}=t;const{round:a}=n;(a&&0==+a||!1===a)&&(s=0);const{decimals:i}=s?n||t:{decimals:!1};return this.round=i,this.segments=h(e),this.pathValue=e,this}toAbsolute(){const{segments:t}=this;return this.segments=y(t),this}toRelative(){const{segments:t}=this;return this.segments=p(t),this}reverse(t){this.toAbsolute();const{segments:e}=this,r=A(this.toString()),n=r.length>1?r:0,s=n&&c(n).map((e,r)=>t?r?N(e):h(e):N(e));let a=[];return a=n?s.flat(1):t?e:N(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=C(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].map(Number):Number(t[r])});const{segments:r}=this;if(!e.origin){const t=U(r),{cx:n,cy:s,width:a,height:i}=t,m=Math.max(a,i)+Math.min(a,i)/2;e.origin=[n,s,m]}return this.segments=B(r,e),this}flipX(){return this.transform({rotate:[180,0,0]}),this}flipY(){return this.transform({rotate:[0,180,0]}),this}toString(){return g(this.segments,this.round)}}Object.assign(rt,et);export{rt as default};
|
|
1
|
+
// SVGPathCommander v0.1.11alpha4 | thednp © 2021 | MIT-License
|
|
2
|
+
const t={origin:[0,0],decimals:4,round:1},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 Array.isArray(t)?t.map(t=>Array.isArray(t)?c(t):Number.isNaN(+t)?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]/gi.test(r)})}function h(t){if(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 Array.isArray(t)&&u(t)&&t.every(t=>t[0]===t[0].toUpperCase())}function y(t){if(f(t))return c(t);const e=h(t),r=e.length,n=[];let s=0,a=0,i=0,m=0,o=0;"M"===e[0][0]&&([s,a]=e[0].slice(1).map(Number),i=s,m=a,o+=1,n.push(["M",s,a]));for(let t=o;t<r;t+=1){const r=e[t],[o]=r,c=o.toUpperCase(),l=[];let u=[];if(n.push(l),o!==c)switch(l[0]=c,c){case"A":u=[...r.slice(1,-2).map(Number),r[6]+s,r[7]+a];for(let t=0;t<u.length;t+=1)l.push(u[t]);break;case"V":l[1]=r[1]+a;break;case"H":l[1]=r[1]+s;break;default:"M"===c&&(i=r[1]+s,m=r[2]+a);for(let t=1;t<r.length;t+=1)l.push(+r[t]+(t%2?s:a))}else for(let t=0;t<r.length;t+=1)l.push(r[t]);const h=l.length;switch(c){case"Z":s=i,a=m;break;case"H":s=+l[1];break;case"V":a=+l[1];break;default:s=+l[h-2],a=+l[h-1],"M"===c&&(i=s,m=a)}}return n}function x(t){return Array.isArray(t)&&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),r=e.length,n=[];let s=0,a=0,i=0,m=0,o=0;"M"===e[0][0]&&(s=+e[0][1],a=+e[0][2],i=s,m=a,o+=1,n.push(["M",s,a]));for(let t=o;t<r;t+=1){const r=e[t],[o]=r,c=o.toLowerCase(),l=[];let u=[];if(n.push(l),o!==c)switch(l[0]=c,c){case"a":u=[...r.slice(1,-2).map(Number),r[6]-s,r[7]-a];for(let t=0;t<u.length;t+=1)l.push(u[t]);break;case"v":l[1]=+r[1]-a;break;default:for(let t=1;t<r.length;t+=1)l.push(+r[t]-(t%2?s:a));"m"===c&&(i=+r[1],m=+r[2])}else{"m"===o&&(i=+r[1]+s,m=+r[2]+a);for(let t=0;t<r.length;t+=1)l.push(r[t])}const h=l.length;switch(l[0]){case"z":s=i,a=m;break;case"h":s+=+l[h-1];break;case"v":a+=+l[h-1];break;default:s+=+n[t][h-2],a+=+n[t][h-1]}}return n}function d(e,r){const{round:n,decimals:s}=t,a=r&&!Number.isNaN(+r)?+r:n&&s;if(!1===r||!n&&!a)return c(e);const i=10**a,m=[],o=e.length;let l,u=0,h=[];for(let t=0;t<o;t+=1){h=e[t],l=[""];for(let t=0;t<h.length;t+=1)t?(u=+h[t],l.push(t&&u%1!=0?Math.round(u*i)/i:u)):l[t]=h[t];m.push(l)}return m}function g(t,e){return d(t,e).map(t=>t[0]+t.slice(1).join(" ")).join("")}function M(t,e,r){const{x1:n,y1:s,x2:a,y2:i}=e,[m]=t,o=t.slice(1).map(Number),[c,l]=o;let u=t;if("TQ".includes(t[0])||(e.qx=null,e.qy=null),"H"===m)u=["L",t[1],s];else if("V"===m)u=["L",n,t[1]];else if("S"===m){const{x1:t,y1:m}=function(t,e,r,n,s){return"CS".includes(s)?{x1:2*t-r,y1:2*e-n}:{x1:t,y1:e}}(n,s,a,i,r);e.x1=t,e.y1=m,u=["C",t,m,...o]}else if("T"===m){const{qx:t,qy:a}=function(t,e,r,n,s){return"QT".includes(s)?{qx:2*t-r,qy:2*e-n}:{qx:t,qy:e}}(n,s,e.qx,e.qy,r);e.qx=t,e.qy=a,u=["Q",t,a,...o]}else"Q"===m&&(e.qx=c,e.qy=l);return u}function b(t){return Array.isArray(t)&&u(t)&&t.every(t=>{const r=t[0].toLowerCase();return e[r]===t.length-1&&"ACLMQZ".includes(t[0])})}function v(t){if(b(t))return c(t);const e=y(t),r={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},n=[],s=e.length;let a,i,m="",o="";for(let t=0;t<s;t+=1)[m]=e[t],n[t]=m,t&&(o=n[t-1]),e[t]=M(e[t],r,o),a=e[t],i=a.length,r.x1=+a[i-2],r.y1=+a[i-1],r.x2=+a[i-4]||r.x1,r.y2=+a[i-3]||r.y1;return e}function N(t){const e=y(t),r="Z"===e.slice(-1)[0][0];let n=[];return n=v(e).map((t,r)=>{const n=t.slice(1).map(Number),[s,a]=n.slice(-2);return{seg:e[r],n:t,c:e[r][0],values:n,x:s,y:a}}).map((t,e,n)=>{const s=t.seg,{values:a}=t,i=t.n,m=e&&n[e-1],o=n[e+1]&&n[e+1],c=t.c,l=n.length,u=e?n[e-1].x:n[l-1].x,h=e?n[e-1].y:n[l-1].y;let f=[""];switch(c){case"M":f=r?["Z"]:[c,u,h];break;case"A":f=[c,...a.slice(0,-3),1===s[5]?0:1,u,h];break;case"C":f=o&&"S"===o.c?["S",s[1],s[2],u,h]:[c,s[3],s[4],s[1],s[2],u,h];break;case"S":f=m&&"CS".includes(m.c)&&(!o||o&&"S"!==o.c)?["C",i[3],i[4],i[1],i[2],u,h]:[c,i[1],i[2],u,h];break;case"Q":f=o&&"T"===o.c?["T",u,h]:[c,...a.slice(0,-2),u,h];break;case"T":f=m&&"QT".includes(m.c)&&(!o||o&&"T"!==o.c)?["Q",i[1],i[2],u,h]:[c,u,h];break;case"Z":f=["M",u,h];break;case"H":f=[c,u];break;case"V":f=[c,h];break;default:f=[c,...a.slice(0,-2),u,h]}return f}),r?n.reverse():[n[0],...n.slice(1).reverse()]}function A(t){return g(y(t),0).replace(/(m|M)/g,"|$1").split("|").map(t=>t.trim()).filter(t=>t)}function w(t,e,r){const[n]=t,s=t.slice(1),{x1:a,y1:i,x2:m,y2:o}=e;let c=t.slice();const[l,u]=t.slice(-2);if("TQ".includes(t[0])||(e.qx=null,e.qy=null),"L"===n)a===t[1]?c=["V",t[1]]:i===t[2]&&(c=["H",t[2]]),e.x=+l,e.y=+u;else if("C"===n){const[t,n]=s.slice(-4),[h,f]=s;["C","S"].includes(r)&&h===2*a-m&&f===2*i-o&&(c=["S",t,n,l,u]),e.x1=h,e.y1=f}else if("Q"===n){const[t,n]=s;["Q","T"].includes(r)&&t===2*a-m&&n===2*i-o&&(c=["T",l,u]),e.qx=t,e.qy=n}return c}function C(t,e){const r=y(t),n={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},s=[],a=r.length;let i,m,o="",c="";for(let t=0;t<a;t+=1)[o]=r[t],s[t]=o,t&&(c=s[t-1]),r[t]=w(r[t],n,c),i=r[t],m=i.length,n.x1=+i[m-2],n.y1=+i[m-1],n.x2=+i[m-4]||n.x1,n.y2=+i[m-3]||n.y1;const l=d(y(r),e),u=d(p(r),e);return l.map((t,e)=>e?t.join("").length<u[e].join("").length?t:u[e]:t)}function q(t,e,r){return{x:t*Math.cos(r)-e*Math.sin(r),y:t*Math.sin(r)+e*Math.cos(r)}}function k(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,A=[];if(c)[M,b,v,N]=c;else{g=q(l,u,-d),l=g.x,u=g.y,g=q(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 w=b-M;if(Math.abs(w)>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),A=k(y,x,h,f,s,0,i,e,r,[b,t,v,N])}w=b-M;const C=Math.cos(M),S=Math.sin(M),P=Math.cos(b),I=Math.sin(b),T=Math.tan(w/4),V=4/3*h*T,$=4/3*f*T,L=[l,u],z=[l+V*S,u-$*C],E=[y+V*I,x-$*P],j=[y,x];if(z[0]=2*L[0]-z[0],z[1]=2*L[1]-z[1],c)return[...z,...E,...j,...A];A=[...z,...E,...j,...A];const O=[];for(let t=0,e=A.length;t<e;t+=1)O[t]=t%2?q(A[t-1],A[t],d).y:q(A[t],A[t+1],d).x;return O}function S(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 P(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 I(t,e,r){const[n,s]=t,[a,i]=e;return[n+(a-n)*r,s+(i-s)*r]}function T(t,e,r,n){const s=.5,a=[t,e],i=[r,n],m=I(a,i,s),o=I(i,m,s),c=I(m,o,s),l=I(o,c,s),u=I(c,l,s),h=P(...[...a,...m,...c,...u,s]),f=P(...[...u,...l,...o,...i,0]);return[h.x,h.y,f.x,f.y,r,n]}function V(t,e){"TQ".includes(t[0])||(e.qx=null,e.qy=null);const r=t.slice(1).map(Number),[n,s]=r,{x1:a,y1:i,x:m,y:o}=e;switch(t[0]){case"M":return e.x=n,e.y=s,t;case"A":return["C",...k(a,i,...r)];case"Q":return e.qx=n,e.qy=s,["C",...S(a,i,...r)];case"L":return["C",...T(a,i,n,s)];case"Z":return["C",...T(a,i,m,o)]}return t}function $(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).map(Number)]);t.splice(r,1)}}function L(t){const e=new H,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 z(t){const e=Object.keys(new H);if("object"==typeof t&&e.every(e=>e in t))return L([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 E(t){if("string"!=typeof t)throw TypeError(`CSSMatrix: "${t}" is not a string.`);const e=String(t).replace(/\s/g,"");let r=new H;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(L(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 j(t,e,r){const n=new H;return n.m41=t,n.e=t,n.m42=e,n.f=e,n.m43=r,n}function O(t,e,r){const n=new H,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 Q(t,e,r,n){const s=new H,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 Z(t,e,r){const n=new H;return n.m11=t,n.a=t,n.m22=e,n.d=e,n.m33=r,n}function D(t){const e=new H,r=t*Math.PI/180,n=Math.tan(r);return e.m21=n,e.c=n,e}function X(t){const e=new H,r=t*Math.PI/180,n=Math.tan(r);return e.m12=n,e.b=n,e}function Y(t,e){return L([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 H{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)?L(t):"string"==typeof t&&t.length&&"none"!==t?E(t):"object"==typeof t?z(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 Y(this,t)}translate(t,e,r){let n=e,s=r;return void 0===s&&(s=0),void 0===n&&(n=0),Y(this,j(t,n,s))}scale(t,e,r){let n=e,s=r;return void 0===n&&(n=t),void 0===s&&(s=1),Y(this,Z(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),Y(this,O(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 Y(this,Q(t,e,r,n))}skewX(t){return Y(this,D(t))}skewY(t){return Y(this,X(t))}transformPoint(t){let e=j(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}}}function R(t){let e=new H;const{origin:r}=t,[n,s]=r,{translate:a}=t,{rotate:i}=t,{skew:m}=t,{scale:o}=t;return(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.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.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.isNaN(+o)||(e=e.scale(o||1,o||1,o||1)),e=e.translate(-n,-s)),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.isNaN(+a)||(e=e.translate(a||0,0,0)),e}function F(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 B(t,e){let r,n,s,a,i,m,o,l=0,u=0;const h=y(t),f=v(h),x=R(e),p=Object.keys(e),{origin:d}=e,{a:g,b:M,c:b,d:N,e:A,f:w}=x,C=[g,M,b,N,A,w],q={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null};let k=[""],S=0,P="",I=[];const T=[];if(!x.isIdentity){for(r=0,s=h.length;r<s;r+=1){k=h[r],h[r]&&([P]=k),T[r]=P,"A"!==P||x.is2D&&["skewX","skewY"].find(t=>p.includes(t))||(k=V(f[r],q),h[r]=V(f[r],q),$(h,T,r),f[r]=V(f[r],q),$(f,T,r),s=Math.max(h.length,f.length)),k=f[r],S=k.length,q.x1=+k[S-2],q.y1=+k[S-1],q.x2=+k[S-4]||q.x1,q.y2=+k[S-3]||q.y1;const t={s:h[r],c:h[r][0],x:q.x1,y:q.y1};I=[...I,t]}return I.map(t=>{switch(P=t.c,k=t.s,P){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}}(C,+k[1],+k[2],+k[3]),C[0]*C[3]-C[1]*C[2]<0&&(k[5]=+k[5]?0:1),[i,m]=F(x,[+k[6],+k[7]],d),k=l===i&&u===m||o.rx<1e-9*o.ry||o.ry<1e-9*o.rx?["L",i,m]:[P,o.rx,o.ry,o.ax,k[4],k[5],i,m],l=i,u=m,k;case"L":case"H":case"V":return[i,m]=F(x,[t.x,t.y],d),l!==i&&u!==m?k=["L",i,m]:u===m?k=["H",i]:l===i&&(k=["V",m]),l=i,u=m,k;default:for(n=1,a=k.length;n<a;n+=2)[l,u]=F(x,[+k[n],+k[n+1]],d),k[n]=l,k[n+1]=u;return k}})}return c(h)}function G(t){return Array.isArray(t)&&u(t)&&t.slice(1).every(t=>"C"===t[0])}function J(t){if(G(t))return c(t);const e=v(t),r={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},n=[];let s="",a=e.length;for(let t=0;t<a;t+=1){const i=e[t],m=i.length;i&&([s]=i),n[t]=s,e[t]=V(i,r),$(e,n,t),a=e.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 U(t){if(!t)return{x:0,y:0,width:0,height:0,x2:0,y2:0,cx:0,cy:0};const e=J(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=P(t,e,r,n,s,a,i,m,u),y.push(x.x),f.push(x.y)),h>0&&h<1&&(x=P(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=P(t,e,r,n,s,a,i,m,u),y.push(x.x),f.push(x.y)),h>0&&h<1&&(x=P(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).map(Number));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}}function K(t){let e=0,r=0,n=0,s=0,a=0;return J(t).map(t=>{switch(t[0]){case"M":case"Z":return n="M"===t[0]?t[1]:n,s="M"===t[0]?t[2]:s,e=n,r=s,0;default:return a=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).map(Number)),[e,r]=t.slice(-2).map(Number),a}}).reduce((t,e)=>t+e,0)}function W(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 _(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=W(t,r,s,i,u),f=W(e,n,a,m,u),y+=x[c]*Math.sqrt(h*h+f*f)}),l*y}Object.assign(H,{Translate:j,Rotate:O,RotateAxisAngle:Q,Scale:Z,SkewX:D,SkewY:X,Multiply:Y,fromArray:L,fromMatrix:z,fromString:E});const tt={circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],rect:["width","height","x","y","rx","ry"],polygon:["points"],polyline:["points"],glyph:[]};const et={CSSMatrix:H,parsePathString:h,isPathArray:u,isCurveArray:G,isAbsoluteArray:f,isRelativeArray:x,isNormalizedArray:b,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:J,pathToString:g,getDrawDirection:function(t){return K(J(t))>=0},getPathArea:K,getPathBBox:U,getPathLength:function(t){let e=0;return J(t).forEach((t,r,n)=>{const s="M"!==t[0]?[...n[r-1].slice(-2),...t.slice(1)]:[];e+="M"===t[0]?0:_(...s)}),e},getPointAtLength:function(t,e){let r,n,s,a=0;return J(t).map((t,i,m)=>{if(n=i?[...m[i-1].slice(-2),...t.slice(1)]:t.slice(1),r=i?_(...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=P(...t)}else s=null;return s}).filter(t=>t).slice(-1)[0]},clonePath:c,splitPath:A,fixPath:function(t){const e=h(t),r=y(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(1);return s&&i===o&&m===c?e.slice(0,-1):e},roundPath:d,optimizePath:C,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).map(Number)],...e.map(t=>["C",...t.slice(2).map(Number)])]},reversePath:N,normalizePath:v,transformPath:B,getSVGMatrix:R,shapeToPath:function(e,r){const n=Object.keys(tt),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=tt[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,decimals:l}=t,u=c&&l?l:null;return"circle"===i?o=g(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),u):"ellipse"===i?o=g(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),u):["polyline","polygon"].includes(i)?o=g(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),u):"rect"===i?o=g(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),u):"line"===i?o=g(function(t){const{x1:e,y1:r,x2:n,y2:s}=t;return[["M",e,r],["L",n,s]]}(m),u):"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,Version:"0.1.11alpha4"};class rt{constructor(e,r){const n=r||{};let{round:s}=t;const{round:a}=n;(a&&0==+a||!1===a)&&(s=0);const{decimals:i}=s?n||t:{decimals:!1};return this.round=i,this.segments=h(e),this.pathValue=e,this}toAbsolute(){const{segments:t}=this;return this.segments=y(t),this}toRelative(){const{segments:t}=this;return this.segments=p(t),this}reverse(t){this.toAbsolute();const{segments:e}=this,r=A(this.toString()),n=r.length>1?r:0,s=n&&c(n).map((e,r)=>t?r?N(e):h(e):N(e));let a=[];return a=n?s.flat(1):t?e:N(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=C(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].map(Number):Number(t[r])});const{segments:r}=this;if(!e.origin){const t=U(r),{cx:n,cy:s,width:a,height:i}=t,m=Math.max(a,i)+Math.min(a,i)/2;e.origin=[n,s,m]}return this.segments=B(r,e),this}flipX(){return this.transform({rotate:[180,0,0]}),this}flipY(){return this.transform({rotate:[0,180,0]}),this}toString(){return g(this.segments,this.round)}}Object.assign(rt,et);export{rt as default};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* SVGPathCommander v0.1.
|
|
2
|
+
* SVGPathCommander v0.1.11alpha4 (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
|
*/
|
|
@@ -1029,11 +1029,8 @@
|
|
|
1029
1029
|
|
|
1030
1030
|
/**
|
|
1031
1031
|
* Optimizes a `pathArray` object:
|
|
1032
|
-
* * convert segments to
|
|
1033
|
-
* *
|
|
1034
|
-
* from absolute and relative `pathArray`s
|
|
1035
|
-
*
|
|
1036
|
-
* TO DO - denormalize segments, normalToShorthand
|
|
1032
|
+
* * convert segments to shorthand if possible
|
|
1033
|
+
* * select shortest segments from absolute and relative `pathArray`s
|
|
1037
1034
|
*
|
|
1038
1035
|
* @param {string | SVGPathCommander.pathArray} pathInput a string or `pathArray`
|
|
1039
1036
|
* @param {number | boolean | null} round the amount of decimals to round values to
|
|
@@ -2806,7 +2803,7 @@
|
|
|
2806
2803
|
function getPathLength(path) {
|
|
2807
2804
|
var totalLength = 0;
|
|
2808
2805
|
pathToCurve(path).forEach(function (s, i, curveArray) {
|
|
2809
|
-
var args = curveArray[i - 1].slice(-2).concat( s.slice(1));
|
|
2806
|
+
var args = s[0] !== 'M' ? curveArray[i - 1].slice(-2).concat( s.slice(1)) : [];
|
|
2810
2807
|
totalLength += s[0] === 'M' ? 0
|
|
2811
2808
|
// : getSegCubicLength.apply(0, curveArray[i - 1].slice(-2).concat(s.slice(1)));
|
|
2812
2809
|
// @ts-ignore
|
|
@@ -3127,7 +3124,7 @@
|
|
|
3127
3124
|
return pathArray;
|
|
3128
3125
|
}
|
|
3129
3126
|
|
|
3130
|
-
var version = "0.1.
|
|
3127
|
+
var version = "0.1.11alpha4";
|
|
3131
3128
|
|
|
3132
3129
|
// @ts-ignore
|
|
3133
3130
|
|
|
@@ -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],decimals:4,round:1},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,u=!1,c=!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,u=!0;e=s<r?n.charCodeAt(s):0}if(46===e){for(m=!0,s+=1;a(n.charCodeAt(s));)s+=1,c=!0;e=s<r?n.charCodeAt(s):0}if(101===e||69===e){if(m&&!u&&!c)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 u(t){var a=t.max,u=t.pathValue,c=t.index,m=u.charCodeAt(c),l=e[u[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}}(m))if(t.index+=1,s(t),t.data=[],l){for(;;){for(var h=l;h>0;h-=1){if(97!=(32|m)||3!==h&&4!==h?i(t):n(t),t.err.length)return;t.data.push(t.param),s(t),t.index<a&&44===u.charCodeAt(t.index)&&(t.index+=1,s(t))}if(t.index>=t.max)break;if(!o(u.charCodeAt(t.index)))break}r(t)}else r(t);else t.err="Invalid path value: "+u[c]+" not a path command"}function c(t){return Array.isArray(t)?t.map((function(t){return Array.isArray(t)?c(t):Number.isNaN(+t)?t:+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 l(t){return Array.isArray(t)&&t.every((function(t){var r=t[0].toLowerCase();return e[r]===t.length-1&&/[achlmqstvz]/gi.test(r)}))}function h(t){if(l(t))return c(t);var e=new m(""+t);for(s(e);e.index<e.max&&!e.err.length;)u(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 Array.isArray(t)&&l(t)&&t.every((function(t){return t[0]===t[0].toUpperCase()}))}function p(t){var e;if(f(t))return c(t);var r=h(t),n=r.length,a=[],i=0,s=0,o=0,u=0,m=0;"M"===r[0][0]&&(o=i=(e=r[0].slice(1).map(Number))[0],u=s=e[1],m+=1,a.push(["M",i,s]));for(var l=m;l<n;l+=1){var p=r[l],y=p[0],v=y.toUpperCase(),x=[],d=[];if(a.push(x),y!==v)switch(x[0]=v,v){case"A":d=p.slice(1,-2).map(Number).concat([p[6]+i],[p[7]+s]);for(var g=0;g<d.length;g+=1)x.push(d[g]);break;case"V":x[1]=p[1]+s;break;case"H":x[1]=p[1]+i;break;default:"M"===v&&(o=p[1]+i,u=p[2]+s);for(var M=1;M<p.length;M+=1)x.push(+p[M]+(M%2?i:s))}else for(var b=0;b<p.length;b+=1)x.push(p[b]);var w=x.length;switch(v){case"Z":i=o,s=u;break;case"H":i=+x[1];break;case"V":s=+x[1];break;default:i=+x[w-2],s=+x[w-1],"M"===v&&(o=i,u=s)}}return a}function y(t){return Array.isArray(t)&&l(t)&&t.slice(1).every((function(t){return t[0]===t[0].toLowerCase()}))}function v(t){if(y(t))return c(t);var e=h(t),r=e.length,n=[],a=0,i=0,s=0,o=0,u=0;"M"===e[0][0]&&(s=a=+e[0][1],o=i=+e[0][2],u+=1,n.push(["M",a,i]));for(var m=u;m<r;m+=1){var l=e[m],f=l[0],p=f.toLowerCase(),v=[],x=[];if(n.push(v),f!==p)switch(v[0]=p,p){case"a":x=l.slice(1,-2).map(Number).concat([l[6]-a],[l[7]-i]);for(var d=0;d<x.length;d+=1)v.push(x[d]);break;case"v":v[1]=+l[1]-i;break;default:for(var g=1;g<l.length;g+=1)v.push(+l[g]-(g%2?a:i));"m"===p&&(s=+l[1],o=+l[2])}else{"m"===f&&(s=+l[1]+a,o=+l[2]+i);for(var M=0;M<l.length;M+=1)v.push(l[M])}var b=v.length;switch(v[0]){case"z":a=s,i=o;break;case"h":a+=+v[b-1];break;case"v":i+=+v[b-1];break;default:a+=+n[m][b-2],i+=+n[m][b-1]}}return n}function x(e,r){var n=t.round,a=t.decimals,i=r&&!Number.isNaN(+r)?+r:n&&a;if(!1===r||!n&&!i)return c(e);for(var s,o=Math.pow(10,i),u=[],m=e.length,l=0,h=[],f=0;f<m;f+=1){h=e[f],s=[""];for(var p=0;p<h.length;p+=1)p?(l=+h[p],s.push(p&&l%1!=0?Math.round(l*o)/o:l)):s[p]=h[p];u.push(s)}return u}function d(t,e){return x(t,e).map((function(t){return t[0]+t.slice(1).join(" ")})).join("")}function g(t,e,r){var n=e.x1,a=e.y1,i=e.x2,s=e.y2,o=t[0],u=t.slice(1).map(Number),c=u[0],m=u[1],l=t;if("TQ".includes(t[0])||(e.qx=null,e.qy=null),"H"===o)l=["L",t[1],a];else if("V"===o)l=["L",n,t[1]];else if("S"===o){var h=function(t,e,r,n,a){return"CS".includes(a)?{x1:2*t-r,y1:2*e-n}:{x1:t,y1:e}}(n,a,i,s,r),f=h.x1,p=h.y1;e.x1=f,e.y1=p,l=["C",f,p].concat(u)}else if("T"===o){var y=function(t,e,r,n,a){return"QT".includes(a)?{qx:2*t-r,qy:2*e-n}:{qx:t,qy:e}}(n,a,e.qx,e.qy,r),v=y.qx,x=y.qy;e.qx=v,e.qy=x,l=["Q",v,x].concat(u)}else"Q"===o&&(e.qx=c,e.qy=m);return l}function M(t){return Array.isArray(t)&&l(t)&&t.every((function(t){var r=t[0].toLowerCase();return e[r]===t.length-1&&"ACLMQZ".includes(t[0])}))}function b(t){if(M(t))return c(t);for(var e,r,n=p(t),a={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},i=[],s=n.length,o="",u="",m=0;m<s;m+=1)o=n[m][0],i[m]=o,m&&(u=i[m-1]),n[m]=g(n[m],a,u),r=(e=n[m]).length,a.x1=+e[r-2],a.y1=+e[r-1],a.x2=+e[r-4]||a.x1,a.y2=+e[r-3]||a.y1;return n}function w(t){var e=p(t),r="Z"===e.slice(-1)[0][0],n=[];return n=b(e).map((function(t,r){var n=t.slice(1).map(Number),a=n.slice(-2),i=a[0],s=a[1];return{seg:e[r],n:t,c:e[r][0],values:n,x:i,y:s}})).map((function(t,e,n){var a=t.seg,i=t.values,s=t.n,o=e&&n[e-1],u=n[e+1]&&n[e+1],c=t.c,m=n.length,l=e?n[e-1].x:n[m-1].x,h=e?n[e-1].y:n[m-1].y,f=[""];switch(c){case"M":f=r?["Z"]:[c,l,h];break;case"A":f=[c].concat(i.slice(0,-3),[1===a[5]?0:1],[l],[h]);break;case"C":f=u&&"S"===u.c?["S",a[1],a[2],l,h]:[c,a[3],a[4],a[1],a[2],l,h];break;case"S":f=o&&"CS".includes(o.c)&&(!u||u&&"S"!==u.c)?["C",s[3],s[4],s[1],s[2],l,h]:[c,s[1],s[2],l,h];break;case"Q":f=u&&"T"===u.c?["T",l,h]:[c].concat(i.slice(0,-2),[l],[h]);break;case"T":f=o&&"QT".includes(o.c)&&(!u||u&&"T"!==u.c)?["Q",s[1],s[2],l,h]:[c,l,h];break;case"Z":f=["M",l,h];break;case"H":f=[c,l];break;case"V":f=[c,h];break;default:f=[c].concat(i.slice(0,-2),[l],[h])}return f})),r?n.reverse():[n[0]].concat(n.slice(1).reverse())}function N(t){return d(p(t),0).replace(/(m|M)/g,"|$1").split("|").map((function(t){return t.trim()})).filter((function(t){return t}))}function A(t,e,r){var n=t[0],a=t.slice(1),i=e.x1,s=e.y1,o=e.x2,u=e.y2,c=t.slice(),m=t.slice(-2),l=m[0],h=m[1];if("TQ".includes(t[0])||(e.qx=null,e.qy=null),"L"===n)i===t[1]?c=["V",t[1]]:s===t[2]&&(c=["H",t[2]]),e.x=+l,e.y=+h;else if("C"===n){var f=a.slice(-4),p=f[0],y=f[1],v=a[0],x=a[1];["C","S"].includes(r)&&v===2*i-o&&x===2*s-u&&(c=["S",p,y,l,h]),e.x1=v,e.y1=x}else if("Q"===n){var d=a[0],g=a[1];["Q","T"].includes(r)&&d===2*i-o&&g===2*s-u&&(c=["T",l,h]),e.qx=d,e.qy=g}return c}function C(t,e){for(var r,n,a=p(t),i={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},s=[],o=a.length,u="",c="",m=0;m<o;m+=1)u=a[m][0],s[m]=u,m&&(c=s[m-1]),a[m]=A(a[m],i,c),n=(r=a[m]).length,i.x1=+r[n-2],i.y1=+r[n-1],i.x2=+r[n-4]||i.x1,i.y2=+r[n-3]||i.y1;var l=x(p(a),e),h=x(v(a),e);return l.map((function(t,e){return e?t.join("").length<h[e].join("").length?t:h[e]:t}))}function q(t,e,r){return{x:t*Math.cos(r)-e*Math.sin(r),y:t*Math.sin(r)+e*Math.cos(r)}}function S(t,e,r,n,a,i,s,o,u,c){var m,l,h,f,p,y,v=t,x=e,d=r,g=n,M=o,b=u,w=120*Math.PI/180,N=Math.PI/180*(+a||0),A=[];if(c)h=(m=c)[0],f=m[1],p=m[2],y=m[3];else{v=(l=q(v,x,-N)).x,x=l.y;var C=(v-(M=(l=q(M,b,-N)).x))/2,k=(x-(b=l.y))/2,P=C*C/(d*d)+k*k/(g*g);P>1&&(d*=P=Math.sqrt(P),g*=P);var I=d*d,T=g*g,V=(i===s?-1:1)*Math.sqrt(Math.abs((I*T-I*k*k-T*C*C)/(I*k*k+T*C*C)));p=V*d*k/g+(v+M)/2,y=V*-g*C/d+(x+b)/2,h=(Math.asin((x-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),h=v<p?Math.PI-h:h,f=M<p?Math.PI-f:f,h<0&&(h=2*Math.PI+h),f<0&&(f=2*Math.PI+f),s&&h>f&&(h-=2*Math.PI),!s&&f>h&&(f-=2*Math.PI)}var j=f-h;if(Math.abs(j)>w){var L=f,z=M,E=b;f=h+w*(s&&f>h?1:-1),A=S(M=p+d*Math.cos(f),b=y+g*Math.sin(f),d,g,a,0,s,z,E,[f,L,p,y])}j=f-h;var O=Math.cos(h),Q=Math.sin(h),D=Math.cos(f),Z=Math.sin(f),X=Math.tan(j/4),Y=4/3*d*X,H=4/3*g*X,R=[v,x],F=[v+Y*Q,x-H*O],G=[M+Y*Z,b-H*D],B=[M,b];if(F[0]=2*R[0]-F[0],F[1]=2*R[1]-F[1],c)return F.concat(G,B,A);for(var J=[],U=0,$=(A=F.concat(G,B,A)).length;U<$;U+=1)J[U]=U%2?q(A[U-1],A[U],N).y:q(A[U],A[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 P(t,e,r,n,a,i,s,o,u){var c=1-u;return{x:Math.pow(c,3)*t+c*c*3*u*r+3*c*u*u*a+Math.pow(u,3)*s,y:Math.pow(c,3)*e+c*c*3*u*n+3*c*u*u*i+Math.pow(u,3)*o}}function I(t,e,r){var n=t[0],a=t[1];return[n+(e[0]-n)*r,a+(e[1]-a)*r]}function T(t,e,r,n){var a=.5,i=[t,e],s=[r,n],o=I(i,s,a),u=I(s,o,a),c=I(o,u,a),m=I(u,c,a),l=I(c,m,a),h=i.concat(o,c,l,[a]),f=P.apply(void 0,h),p=l.concat(m,u,s,[0]),y=P.apply(void 0,p);return[f.x,f.y,y.x,y.y,r,n]}function V(t,e){"TQ".includes(t[0])||(e.qx=null,e.qy=null);var r=t.slice(1).map(Number),n=r[0],a=r[1],i=e.x1,s=e.y1,o=e.x,u=e.y;switch(t[0]){case"M":return e.x=n,e.y=a,t;case"A":return["C"].concat(S.apply(void 0,[i,s].concat(r)));case"Q":return e.qx=n,e.qy=a,["C"].concat(k.apply(void 0,[i,s].concat(r)));case"L":return["C"].concat(T(i,s,n,a));case"Z":return["C"].concat(T(i,s,o,u))}return t}function j(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).map(Number)));t.splice(r,1)}}function L(t){var e=new R,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],u=r[5],c=r[6],m=r[7],l=r[8],h=r[9],f=r[10],p=r[11],y=r[12],v=r[13],x=r[14],d=r[15];e.m11=n,e.a=n,e.m21=o,e.c=o,e.m31=l,e.m41=y,e.e=y,e.m12=a,e.b=a,e.m22=u,e.d=u,e.m32=h,e.m42=v,e.f=v,e.m13=i,e.m23=c,e.m33=f,e.m43=x,e.m14=s,e.m24=m,e.m34=p,e.m44=d}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 R);if("object"==typeof t&&e.every((function(e){return e in t})))return L([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 E(t){if("string"!=typeof t)throw TypeError('CSSMatrix: "'+t+'" is not a string.');var e=String(t).replace(/\s/g,""),r=new R,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],u=s[1],c=s[2],m=s[3],l=[o,u,c],h=[o,u,c,m];if("perspective"===a&&o&&[u,c].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(L(f))}else if("translate3d"===a&&l.every((function(t){return!Number.isNaN(+t)})))r=r.translate(o,u,c);else if("translate"===a&&o&&void 0===c)r=r.translate(o,u||0,0);else if("rotate3d"===a&&h.every((function(t){return!Number.isNaN(+t)}))&&m)r=r.rotateAxisAngle(o,u,c,m);else if("rotate"===a&&o&&[u,c].every((function(t){return void 0===t})))r=r.rotate(0,0,o);else if("scale3d"===a&&l.every((function(t){return!Number.isNaN(+t)}))&&l.some((function(t){return 1!==t})))r=r.scale(o,u,c);else if("scale"!==a||Number.isNaN(o)||1===o||void 0!==c)if("skew"===a&&o&&void 0===c)r=r.skewX(o),r=u?r.skewY(u):r;else{if(!(/[XYZ]/.test(a)&&o&&[u,c].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),x=[0===v?o:0,1===v?o:0,2===v?o:0];r=r[p].apply(r,x)}}else{var d=Number.isNaN(+u)?o:u;r=r.scale(o,d,1)}})),r}function O(t,e,r){var n=new R;return n.m41=t,n.e=t,n.m42=e,n.f=e,n.m43=r,n}function Q(t,e,r){var n=new R,a=Math.PI/180,i=t*a,s=e*a,o=r*a,u=Math.cos(i),c=-Math.sin(i),m=Math.cos(s),l=-Math.sin(s),h=Math.cos(o),f=-Math.sin(o),p=m*h,y=-m*f;n.m11=p,n.a=p,n.m12=y,n.b=y,n.m13=l;var v=c*l*h+u*f;n.m21=v,n.c=v;var x=u*h-c*l*f;return n.m22=x,n.d=x,n.m23=-c*m,n.m31=c*f-u*l*h,n.m32=c*h+u*l*f,n.m33=u*m,n}function D(t,e,r,n){var a=new R,i=n*(Math.PI/360),s=Math.sin(i),o=Math.cos(i),u=s*s,c=Math.sqrt(t*t+e*e+r*r),m=t,l=e,h=r;0===c?(m=0,l=0,h=1):(m/=c,l/=c,h/=c);var f=m*m,p=l*l,y=h*h,v=1-2*(p+y)*u;a.m11=v,a.a=v;var x=2*(m*l*u+h*s*o);a.m12=x,a.b=x,a.m13=2*(m*h*u-l*s*o);var d=2*(l*m*u-h*s*o);a.m21=d,a.c=d;var g=1-2*(y+f)*u;return a.m22=g,a.d=g,a.m23=2*(l*h*u+m*s*o),a.m31=2*(h*m*u+l*s*o),a.m32=2*(h*l*u-m*s*o),a.m33=1-2*(f+p)*u,a}function Z(t,e,r){var n=new R;return n.m11=t,n.a=t,n.m22=e,n.d=e,n.m33=r,n}function X(t){var e=new R,r=t*Math.PI/180,n=Math.tan(r);return e.m21=n,e.c=n,e}function Y(t){var e=new R,r=t*Math.PI/180,n=Math.tan(r);return e.m12=n,e.b=n,e}function H(t,e){return L([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 R=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},F={isIdentity:{configurable:!0},is2D:{configurable:!0}};function G(t){var e=new R,r=t.origin,n=r[0],a=r[1],i=t.translate,s=t.rotate,o=t.skew,u=t.scale;return(s||o||u)&&(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.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.isNaN(+o)||(e=e.skewX(o||0)),Array.isArray(u)&&u.every((function(t){return!Number.isNaN(+t)}))&&u.some((function(t){return 1!==t}))?e=e.scale(u[0],u[1],u[2]):Number.isNaN(+u)||(e=e.scale(u||1,u||1,u||1)),e=e.translate(-n,-a)),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.isNaN(+i)||(e=e.translate(i||0,0,0)),e}function B(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,u=s.y-a,c=s.z-i;return[o*(Math.abs(i)/Math.abs(c))+n,u*(Math.abs(i)/Math.abs(c))+a]}function J(t,e){var r,n,a,i,s,o,u,m=0,l=0,h=p(t),f=b(h),y=G(e),v=Object.keys(e),x=e.origin,d=[y.a,y.b,y.c,y.d,y.e,y.f],g={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},M=[""],w=0,N="",A=[],C=[];if(!y.isIdentity){for(r=0,a=h.length;r<a;r+=1){M=h[r],h[r]&&(N=M[0]),C[r]=N,"A"!==N||y.is2D&&["skewX","skewY"].find((function(t){return v.includes(t)}))||(M=V(f[r],g),h[r]=V(f[r],g),j(h,C,r),f[r]=V(f[r],g),j(f,C,r),a=Math.max(h.length,f.length)),w=(M=f[r]).length,g.x1=+M[w-2],g.y1=+M[w-1],g.x2=+M[w-4]||g.x1,g.y2=+M[w-3]||g.y1;var q={s:h[r],c:h[r][0],x:g.x1,y:g.y1};A=A.concat([q])}return A.map((function(t){var e,r,a;switch(N=t.c,M=t.s,N){case"A":return u=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],u=s[1]*s[1]+s[3]*s[3],c=((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+u)/2;if(c<1e-9*m){var l=Math.sqrt(m);return{rx:l,ry:l,ax:0}}var h,f,p=s[0]*s[1]+s[2]*s[3],y=m+(c=Math.sqrt(c))/2,v=m-c/2,x=Math.abs(p)<1e-9&&Math.abs(y-u)<1e-9?90:Math.atan(Math.abs(p)>Math.abs(y-u)?(y-o)/p:p/(y-u)*180)/Math.PI;return x>=0?(h=Math.sqrt(y),f=Math.sqrt(v)):(x+=90,h=Math.sqrt(v),f=Math.sqrt(y)),{rx:h,ry:f,ax:x}}(d,+M[1],+M[2],+M[3]),d[0]*d[3]-d[1]*d[2]<0&&(M[5]=+M[5]?0:1),e=B(y,[+M[6],+M[7]],x),s=e[0],o=e[1],M=m===s&&l===o||u.rx<1e-9*u.ry||u.ry<1e-9*u.rx?["L",s,o]:[N,u.rx,u.ry,u.ax,M[4],M[5],s,o],m=s,l=o,M;case"L":case"H":case"V":return r=B(y,[t.x,t.y],x),s=r[0],o=r[1],m!==s&&l!==o?M=["L",s,o]:l===o?M=["H",s]:m===s&&(M=["V",o]),m=s,l=o,M;default:for(n=1,i=M.length;n<i;n+=2)a=B(y,[+M[n],+M[n+1]],x),m=a[0],l=a[1],M[n]=m,M[n+1]=l;return M}}))}return c(h)}function U(t,e,r,n,a,i,s,o){var u,c=a-2*r+t-(s-2*a+r),m=2*(r-t)-2*(a-r),l=t-r,h=(-m+Math.sqrt(m*m-4*c*l))/2/c,f=(-m-Math.sqrt(m*m-4*c*l))/2/c,p=[e,o],y=[t,s];return Math.abs(h)>"1e12"&&(h=.5),Math.abs(f)>"1e12"&&(f=.5),h>0&&h<1&&(u=P(t,e,r,n,a,i,s,o,h),y.push(u.x),p.push(u.y)),f>0&&f<1&&(u=P(t,e,r,n,a,i,s,o,f),y.push(u.x),p.push(u.y)),c=i-2*n+e-(o-2*i+n),l=e-n,h=(-(m=2*(n-e)-2*(i-n))+Math.sqrt(m*m-4*c*l))/2/c,f=(-m-Math.sqrt(m*m-4*c*l))/2/c,Math.abs(h)>"1e12"&&(h=.5),Math.abs(f)>"1e12"&&(f=.5),h>0&&h<1&&(u=P(t,e,r,n,a,i,s,o,h),y.push(u.x),p.push(u.y)),f>0&&f<1&&(u=P(t,e,r,n,a,i,s,o,f),y.push(u.x),p.push(u.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){return Array.isArray(t)&&l(t)&&t.slice(1).every((function(t){return"C"===t[0]}))}function K(t){if($(t))return c(t);for(var e=b(t),r={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},n=[],a="",i=e.length,s=0;s<i;s+=1){var o=e[s],u=o.length;o&&(a=o[0]),n[s]=a,e[s]=V(o,r),j(e,n,s),i=e.length,r.x1=+o[u-2],r.y1=+o[u-1],r.x2=+o[u-4]||r.x1,r.y2=+o[u-3]||r.y1}return e}function W(t){if(!t)return{x:0,y:0,width:0,height:0,x2:0,y2:0,cx:0,cy:0};var e=K(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 u=U.apply(void 0,[r,n].concat(t.slice(1).map(Number)));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),u=Math.max.apply(0,a),c=Math.max.apply(0,i),m=u-s,l=c-o;return{width:m,height:l,x:s,y:o,x2:u,y2:c,cx:s+m/2,cy:o+l/2}}function _(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 tt(t){var e=0,r=0,n=0,a=0,i=0;return K(t).map((function(t){var s;switch(t[0]){case"M":case"Z":return n="M"===t[0]?t[1]:n,a="M"===t[0]?t[2]:a,e=n,r=a,0;default:return i=_.apply(void 0,[e,r].concat(t.slice(1).map(Number))),s=t.slice(-2).map(Number),e=s[0],r=s[1],i}})).reduce((function(t,e){return t+e}),0)}function et(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 rt(t,e,r,n,a,i,s,o,u){var c=u;(null===u||Number.isNaN(+u))&&(c=1),c>1&&(c=1),c<0&&(c=0);var m=c/2,l=0,h=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(u,c){h=et(t,r,a,s,l=m*u+m),f=et(e,n,i,o,l),p+=y[c]*Math.sqrt(h*h+f*f)})),m*p}F.isIdentity.set=function(t){this.isIdentity=t},F.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},F.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},F.is2D.set=function(t){this.is2D=t},R.prototype.setMatrixValue=function(t){return[Array,Float64Array,Float32Array].some((function(e){return t instanceof e}))?L(t):"string"==typeof t&&t.length&&"none"!==t?E(t):"object"==typeof t?z(t):this},R.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}))},R.prototype.toString=function(){var t=this.toArray();return(this.is2D?"matrix":"matrix3d")+"("+t+")"},R.prototype.toJSON=function(){var t=this,e=t.is2D,r=t.isIdentity;return Object.assign({},t,{is2D:e,isIdentity:r})},R.prototype.multiply=function(t){return H(this,t)},R.prototype.translate=function(t,e,r){var n=e,a=r;return void 0===a&&(a=0),void 0===n&&(n=0),H(this,O(t,n,a))},R.prototype.scale=function(t,e,r){var n=e,a=r;return void 0===n&&(n=t),void 0===a&&(a=1),H(this,Z(t,n,a))},R.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),H(this,Q(n,a,i))},R.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 H(this,D(t,e,r,n))},R.prototype.skewX=function(t){return H(this,X(t))},R.prototype.skewY=function(t){return H(this,Y(t))},R.prototype.transformPoint=function(t){var e=O(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}},R.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(R.prototype,F),Object.assign(R,{Translate:O,Rotate:Q,RotateAxisAngle:D,Scale:Z,SkewX:X,SkewY:Y,Multiply:H,fromArray:L,fromMatrix:z,fromString:E});var nt={circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],rect:["width","height","x","y","rx","ry"],polygon:["points"],polyline:["points"],glyph:[]};var at={CSSMatrix:R,parsePathString:h,isPathArray:l,isCurveArray:$,isAbsoluteArray:f,isRelativeArray:y,isNormalizedArray:M,isValidPath:function(t){if("string"!=typeof t)return!1;var e=new m(t);for(s(e);e.index<e.max&&!e.err.length;)u(e);return!e.err.length&&"mM".includes(e.segments[0][0])},pathToAbsolute:p,pathToRelative:v,pathToCurve:K,pathToString:d,getDrawDirection:function(t){return tt(K(t))>=0},getPathArea:tt,getPathBBox:W,getPathLength:function(t){var e=0;return K(t).forEach((function(t,r,n){var a=n[r-1].slice(-2).concat(t.slice(1));e+="M"===t[0]?0:rt.apply(void 0,a)})),e},getPointAtLength:function(t,e){var r,n,a,i=0;return K(t).map((function(t,s,o){if(n=s?o[s-1].slice(-2).concat(t.slice(1)):t.slice(1),r=s?rt.apply(void 0,n):0,i+=r,0===s)a={x:n[0],y:n[1]};else if(i>e&&e>i-r){var u=n.concat([1-(i-e)/r]);a=P.apply(void 0,u)}else a=null;return a})).filter((function(t){return t})).slice(-1)[0]},clonePath:c,splitPath:N,fixPath:function(t){var e=h(t),r=p(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],u=s[1],c=r[i].slice(1),m=c[0],l=c[1];return a&&o===m&&u===l?e.slice(0,-1):e},roundPath:x,optimizePath:C,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).map(Number))].concat(e.map((function(t){return["C"].concat(t.slice(2).map(Number))})))},reversePath:w,normalizePath:b,transformPath:J,getSVGMatrix:G,shapeToPath:function(e,r){var n=Object.keys(nt),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,u={};if(u.type=o,a){var c=nt[o];c.forEach((function(t){u[t]=e.getAttribute(t)})),Object.values(e.attributes).forEach((function(t){var e=t.name,r=t.value;c.includes(e)||s.setAttribute(e,r)}))}else Object.assign(u,e);var m,l,h,f,p=t.decimals,y=t.round&&p?p:null;return"circle"===o?i=d((l=(m=u).cx,h=m.cy,f=m.r,[["M",l-f,h],["a",f,f,0,1,0,2*f,0],["a",f,f,0,1,0,-2*f,0]]),y):"ellipse"===o?i=d(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]]}(u),y):["polyline","polygon"].includes(o)?i=d(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}(u),y):"rect"===o?i=d(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"]]}(u),y):"line"===o?i=d(function(t){return[["M",t.x1,t.y1],["L",t.x2,t.y2]]}(u),y):"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,Version:"0.1.11alpha3"},it=function(e,r){var n=r||{},a=t.round,i=n.round;(i&&0==+i||!1===i)&&(a=0);var s=(a?n||t:{decimals:!1}).decimals;return this.round=s,this.segments=h(e),this.pathValue=e,this};return it.prototype.toAbsolute=function(){var t=this.segments;return this.segments=p(t),this},it.prototype.toRelative=function(){var t=this.segments;return this.segments=v(t),this},it.prototype.reverse=function(t){this.toAbsolute();var e=this.segments,r=N(this.toString()),n=r.length>1?r:0,a=n&&c(n).map((function(e,r){return t?r?w(e):h(e):w(e)})),i=[];return i=n?a.flat(1):t?e:w(e),this.segments=c(i),this},it.prototype.normalize=function(){var t=this.segments;return this.segments=b(t),this},it.prototype.optimize=function(){var t=this.segments;return this.segments=C(t,this.round),this},it.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])?t[r].map(Number):Number(t[r])}));var r=this.segments;if(!e.origin){var n=W(r),a=n.cx,i=n.cy,s=n.width,o=n.height,u=Math.max(s,o)+Math.min(s,o)/2;e.origin=[a,i,u]}return this.segments=J(r,e),this},it.prototype.flipX=function(){return this.transform({rotate:[180,0,0]}),this},it.prototype.flipY=function(){return this.transform({rotate:[0,180,0]}),this},it.prototype.toString=function(){return d(this.segments,this.round)},Object.assign(it,at),it}));
|
|
1
|
+
// SVGPathCommander v0.1.11alpha4 | 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],decimals:4,round:1},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,u=!1,c=!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,u=!0;e=s<r?n.charCodeAt(s):0}if(46===e){for(m=!0,s+=1;a(n.charCodeAt(s));)s+=1,c=!0;e=s<r?n.charCodeAt(s):0}if(101===e||69===e){if(m&&!u&&!c)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 u(t){var a=t.max,u=t.pathValue,c=t.index,m=u.charCodeAt(c),l=e[u[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}}(m))if(t.index+=1,s(t),t.data=[],l){for(;;){for(var h=l;h>0;h-=1){if(97!=(32|m)||3!==h&&4!==h?i(t):n(t),t.err.length)return;t.data.push(t.param),s(t),t.index<a&&44===u.charCodeAt(t.index)&&(t.index+=1,s(t))}if(t.index>=t.max)break;if(!o(u.charCodeAt(t.index)))break}r(t)}else r(t);else t.err="Invalid path value: "+u[c]+" not a path command"}function c(t){return Array.isArray(t)?t.map((function(t){return Array.isArray(t)?c(t):Number.isNaN(+t)?t:+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 l(t){return Array.isArray(t)&&t.every((function(t){var r=t[0].toLowerCase();return e[r]===t.length-1&&/[achlmqstvz]/gi.test(r)}))}function h(t){if(l(t))return c(t);var e=new m(""+t);for(s(e);e.index<e.max&&!e.err.length;)u(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 Array.isArray(t)&&l(t)&&t.every((function(t){return t[0]===t[0].toUpperCase()}))}function p(t){var e;if(f(t))return c(t);var r=h(t),n=r.length,a=[],i=0,s=0,o=0,u=0,m=0;"M"===r[0][0]&&(o=i=(e=r[0].slice(1).map(Number))[0],u=s=e[1],m+=1,a.push(["M",i,s]));for(var l=m;l<n;l+=1){var p=r[l],y=p[0],v=y.toUpperCase(),x=[],d=[];if(a.push(x),y!==v)switch(x[0]=v,v){case"A":d=p.slice(1,-2).map(Number).concat([p[6]+i],[p[7]+s]);for(var g=0;g<d.length;g+=1)x.push(d[g]);break;case"V":x[1]=p[1]+s;break;case"H":x[1]=p[1]+i;break;default:"M"===v&&(o=p[1]+i,u=p[2]+s);for(var M=1;M<p.length;M+=1)x.push(+p[M]+(M%2?i:s))}else for(var b=0;b<p.length;b+=1)x.push(p[b]);var w=x.length;switch(v){case"Z":i=o,s=u;break;case"H":i=+x[1];break;case"V":s=+x[1];break;default:i=+x[w-2],s=+x[w-1],"M"===v&&(o=i,u=s)}}return a}function y(t){return Array.isArray(t)&&l(t)&&t.slice(1).every((function(t){return t[0]===t[0].toLowerCase()}))}function v(t){if(y(t))return c(t);var e=h(t),r=e.length,n=[],a=0,i=0,s=0,o=0,u=0;"M"===e[0][0]&&(s=a=+e[0][1],o=i=+e[0][2],u+=1,n.push(["M",a,i]));for(var m=u;m<r;m+=1){var l=e[m],f=l[0],p=f.toLowerCase(),v=[],x=[];if(n.push(v),f!==p)switch(v[0]=p,p){case"a":x=l.slice(1,-2).map(Number).concat([l[6]-a],[l[7]-i]);for(var d=0;d<x.length;d+=1)v.push(x[d]);break;case"v":v[1]=+l[1]-i;break;default:for(var g=1;g<l.length;g+=1)v.push(+l[g]-(g%2?a:i));"m"===p&&(s=+l[1],o=+l[2])}else{"m"===f&&(s=+l[1]+a,o=+l[2]+i);for(var M=0;M<l.length;M+=1)v.push(l[M])}var b=v.length;switch(v[0]){case"z":a=s,i=o;break;case"h":a+=+v[b-1];break;case"v":i+=+v[b-1];break;default:a+=+n[m][b-2],i+=+n[m][b-1]}}return n}function x(e,r){var n=t.round,a=t.decimals,i=r&&!Number.isNaN(+r)?+r:n&&a;if(!1===r||!n&&!i)return c(e);for(var s,o=Math.pow(10,i),u=[],m=e.length,l=0,h=[],f=0;f<m;f+=1){h=e[f],s=[""];for(var p=0;p<h.length;p+=1)p?(l=+h[p],s.push(p&&l%1!=0?Math.round(l*o)/o:l)):s[p]=h[p];u.push(s)}return u}function d(t,e){return x(t,e).map((function(t){return t[0]+t.slice(1).join(" ")})).join("")}function g(t,e,r){var n=e.x1,a=e.y1,i=e.x2,s=e.y2,o=t[0],u=t.slice(1).map(Number),c=u[0],m=u[1],l=t;if("TQ".includes(t[0])||(e.qx=null,e.qy=null),"H"===o)l=["L",t[1],a];else if("V"===o)l=["L",n,t[1]];else if("S"===o){var h=function(t,e,r,n,a){return"CS".includes(a)?{x1:2*t-r,y1:2*e-n}:{x1:t,y1:e}}(n,a,i,s,r),f=h.x1,p=h.y1;e.x1=f,e.y1=p,l=["C",f,p].concat(u)}else if("T"===o){var y=function(t,e,r,n,a){return"QT".includes(a)?{qx:2*t-r,qy:2*e-n}:{qx:t,qy:e}}(n,a,e.qx,e.qy,r),v=y.qx,x=y.qy;e.qx=v,e.qy=x,l=["Q",v,x].concat(u)}else"Q"===o&&(e.qx=c,e.qy=m);return l}function M(t){return Array.isArray(t)&&l(t)&&t.every((function(t){var r=t[0].toLowerCase();return e[r]===t.length-1&&"ACLMQZ".includes(t[0])}))}function b(t){if(M(t))return c(t);for(var e,r,n=p(t),a={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},i=[],s=n.length,o="",u="",m=0;m<s;m+=1)o=n[m][0],i[m]=o,m&&(u=i[m-1]),n[m]=g(n[m],a,u),r=(e=n[m]).length,a.x1=+e[r-2],a.y1=+e[r-1],a.x2=+e[r-4]||a.x1,a.y2=+e[r-3]||a.y1;return n}function w(t){var e=p(t),r="Z"===e.slice(-1)[0][0],n=[];return n=b(e).map((function(t,r){var n=t.slice(1).map(Number),a=n.slice(-2),i=a[0],s=a[1];return{seg:e[r],n:t,c:e[r][0],values:n,x:i,y:s}})).map((function(t,e,n){var a=t.seg,i=t.values,s=t.n,o=e&&n[e-1],u=n[e+1]&&n[e+1],c=t.c,m=n.length,l=e?n[e-1].x:n[m-1].x,h=e?n[e-1].y:n[m-1].y,f=[""];switch(c){case"M":f=r?["Z"]:[c,l,h];break;case"A":f=[c].concat(i.slice(0,-3),[1===a[5]?0:1],[l],[h]);break;case"C":f=u&&"S"===u.c?["S",a[1],a[2],l,h]:[c,a[3],a[4],a[1],a[2],l,h];break;case"S":f=o&&"CS".includes(o.c)&&(!u||u&&"S"!==u.c)?["C",s[3],s[4],s[1],s[2],l,h]:[c,s[1],s[2],l,h];break;case"Q":f=u&&"T"===u.c?["T",l,h]:[c].concat(i.slice(0,-2),[l],[h]);break;case"T":f=o&&"QT".includes(o.c)&&(!u||u&&"T"!==u.c)?["Q",s[1],s[2],l,h]:[c,l,h];break;case"Z":f=["M",l,h];break;case"H":f=[c,l];break;case"V":f=[c,h];break;default:f=[c].concat(i.slice(0,-2),[l],[h])}return f})),r?n.reverse():[n[0]].concat(n.slice(1).reverse())}function N(t){return d(p(t),0).replace(/(m|M)/g,"|$1").split("|").map((function(t){return t.trim()})).filter((function(t){return t}))}function A(t,e,r){var n=t[0],a=t.slice(1),i=e.x1,s=e.y1,o=e.x2,u=e.y2,c=t.slice(),m=t.slice(-2),l=m[0],h=m[1];if("TQ".includes(t[0])||(e.qx=null,e.qy=null),"L"===n)i===t[1]?c=["V",t[1]]:s===t[2]&&(c=["H",t[2]]),e.x=+l,e.y=+h;else if("C"===n){var f=a.slice(-4),p=f[0],y=f[1],v=a[0],x=a[1];["C","S"].includes(r)&&v===2*i-o&&x===2*s-u&&(c=["S",p,y,l,h]),e.x1=v,e.y1=x}else if("Q"===n){var d=a[0],g=a[1];["Q","T"].includes(r)&&d===2*i-o&&g===2*s-u&&(c=["T",l,h]),e.qx=d,e.qy=g}return c}function C(t,e){for(var r,n,a=p(t),i={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},s=[],o=a.length,u="",c="",m=0;m<o;m+=1)u=a[m][0],s[m]=u,m&&(c=s[m-1]),a[m]=A(a[m],i,c),n=(r=a[m]).length,i.x1=+r[n-2],i.y1=+r[n-1],i.x2=+r[n-4]||i.x1,i.y2=+r[n-3]||i.y1;var l=x(p(a),e),h=x(v(a),e);return l.map((function(t,e){return e?t.join("").length<h[e].join("").length?t:h[e]:t}))}function q(t,e,r){return{x:t*Math.cos(r)-e*Math.sin(r),y:t*Math.sin(r)+e*Math.cos(r)}}function S(t,e,r,n,a,i,s,o,u,c){var m,l,h,f,p,y,v=t,x=e,d=r,g=n,M=o,b=u,w=120*Math.PI/180,N=Math.PI/180*(+a||0),A=[];if(c)h=(m=c)[0],f=m[1],p=m[2],y=m[3];else{v=(l=q(v,x,-N)).x,x=l.y;var C=(v-(M=(l=q(M,b,-N)).x))/2,k=(x-(b=l.y))/2,P=C*C/(d*d)+k*k/(g*g);P>1&&(d*=P=Math.sqrt(P),g*=P);var I=d*d,T=g*g,V=(i===s?-1:1)*Math.sqrt(Math.abs((I*T-I*k*k-T*C*C)/(I*k*k+T*C*C)));p=V*d*k/g+(v+M)/2,y=V*-g*C/d+(x+b)/2,h=(Math.asin((x-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),h=v<p?Math.PI-h:h,f=M<p?Math.PI-f:f,h<0&&(h=2*Math.PI+h),f<0&&(f=2*Math.PI+f),s&&h>f&&(h-=2*Math.PI),!s&&f>h&&(f-=2*Math.PI)}var j=f-h;if(Math.abs(j)>w){var L=f,z=M,E=b;f=h+w*(s&&f>h?1:-1),A=S(M=p+d*Math.cos(f),b=y+g*Math.sin(f),d,g,a,0,s,z,E,[f,L,p,y])}j=f-h;var O=Math.cos(h),Q=Math.sin(h),D=Math.cos(f),Z=Math.sin(f),X=Math.tan(j/4),Y=4/3*d*X,H=4/3*g*X,R=[v,x],F=[v+Y*Q,x-H*O],G=[M+Y*Z,b-H*D],B=[M,b];if(F[0]=2*R[0]-F[0],F[1]=2*R[1]-F[1],c)return F.concat(G,B,A);for(var J=[],U=0,$=(A=F.concat(G,B,A)).length;U<$;U+=1)J[U]=U%2?q(A[U-1],A[U],N).y:q(A[U],A[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 P(t,e,r,n,a,i,s,o,u){var c=1-u;return{x:Math.pow(c,3)*t+c*c*3*u*r+3*c*u*u*a+Math.pow(u,3)*s,y:Math.pow(c,3)*e+c*c*3*u*n+3*c*u*u*i+Math.pow(u,3)*o}}function I(t,e,r){var n=t[0],a=t[1];return[n+(e[0]-n)*r,a+(e[1]-a)*r]}function T(t,e,r,n){var a=.5,i=[t,e],s=[r,n],o=I(i,s,a),u=I(s,o,a),c=I(o,u,a),m=I(u,c,a),l=I(c,m,a),h=i.concat(o,c,l,[a]),f=P.apply(void 0,h),p=l.concat(m,u,s,[0]),y=P.apply(void 0,p);return[f.x,f.y,y.x,y.y,r,n]}function V(t,e){"TQ".includes(t[0])||(e.qx=null,e.qy=null);var r=t.slice(1).map(Number),n=r[0],a=r[1],i=e.x1,s=e.y1,o=e.x,u=e.y;switch(t[0]){case"M":return e.x=n,e.y=a,t;case"A":return["C"].concat(S.apply(void 0,[i,s].concat(r)));case"Q":return e.qx=n,e.qy=a,["C"].concat(k.apply(void 0,[i,s].concat(r)));case"L":return["C"].concat(T(i,s,n,a));case"Z":return["C"].concat(T(i,s,o,u))}return t}function j(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).map(Number)));t.splice(r,1)}}function L(t){var e=new R,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],u=r[5],c=r[6],m=r[7],l=r[8],h=r[9],f=r[10],p=r[11],y=r[12],v=r[13],x=r[14],d=r[15];e.m11=n,e.a=n,e.m21=o,e.c=o,e.m31=l,e.m41=y,e.e=y,e.m12=a,e.b=a,e.m22=u,e.d=u,e.m32=h,e.m42=v,e.f=v,e.m13=i,e.m23=c,e.m33=f,e.m43=x,e.m14=s,e.m24=m,e.m34=p,e.m44=d}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 R);if("object"==typeof t&&e.every((function(e){return e in t})))return L([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 E(t){if("string"!=typeof t)throw TypeError('CSSMatrix: "'+t+'" is not a string.');var e=String(t).replace(/\s/g,""),r=new R,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],u=s[1],c=s[2],m=s[3],l=[o,u,c],h=[o,u,c,m];if("perspective"===a&&o&&[u,c].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(L(f))}else if("translate3d"===a&&l.every((function(t){return!Number.isNaN(+t)})))r=r.translate(o,u,c);else if("translate"===a&&o&&void 0===c)r=r.translate(o,u||0,0);else if("rotate3d"===a&&h.every((function(t){return!Number.isNaN(+t)}))&&m)r=r.rotateAxisAngle(o,u,c,m);else if("rotate"===a&&o&&[u,c].every((function(t){return void 0===t})))r=r.rotate(0,0,o);else if("scale3d"===a&&l.every((function(t){return!Number.isNaN(+t)}))&&l.some((function(t){return 1!==t})))r=r.scale(o,u,c);else if("scale"!==a||Number.isNaN(o)||1===o||void 0!==c)if("skew"===a&&o&&void 0===c)r=r.skewX(o),r=u?r.skewY(u):r;else{if(!(/[XYZ]/.test(a)&&o&&[u,c].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),x=[0===v?o:0,1===v?o:0,2===v?o:0];r=r[p].apply(r,x)}}else{var d=Number.isNaN(+u)?o:u;r=r.scale(o,d,1)}})),r}function O(t,e,r){var n=new R;return n.m41=t,n.e=t,n.m42=e,n.f=e,n.m43=r,n}function Q(t,e,r){var n=new R,a=Math.PI/180,i=t*a,s=e*a,o=r*a,u=Math.cos(i),c=-Math.sin(i),m=Math.cos(s),l=-Math.sin(s),h=Math.cos(o),f=-Math.sin(o),p=m*h,y=-m*f;n.m11=p,n.a=p,n.m12=y,n.b=y,n.m13=l;var v=c*l*h+u*f;n.m21=v,n.c=v;var x=u*h-c*l*f;return n.m22=x,n.d=x,n.m23=-c*m,n.m31=c*f-u*l*h,n.m32=c*h+u*l*f,n.m33=u*m,n}function D(t,e,r,n){var a=new R,i=n*(Math.PI/360),s=Math.sin(i),o=Math.cos(i),u=s*s,c=Math.sqrt(t*t+e*e+r*r),m=t,l=e,h=r;0===c?(m=0,l=0,h=1):(m/=c,l/=c,h/=c);var f=m*m,p=l*l,y=h*h,v=1-2*(p+y)*u;a.m11=v,a.a=v;var x=2*(m*l*u+h*s*o);a.m12=x,a.b=x,a.m13=2*(m*h*u-l*s*o);var d=2*(l*m*u-h*s*o);a.m21=d,a.c=d;var g=1-2*(y+f)*u;return a.m22=g,a.d=g,a.m23=2*(l*h*u+m*s*o),a.m31=2*(h*m*u+l*s*o),a.m32=2*(h*l*u-m*s*o),a.m33=1-2*(f+p)*u,a}function Z(t,e,r){var n=new R;return n.m11=t,n.a=t,n.m22=e,n.d=e,n.m33=r,n}function X(t){var e=new R,r=t*Math.PI/180,n=Math.tan(r);return e.m21=n,e.c=n,e}function Y(t){var e=new R,r=t*Math.PI/180,n=Math.tan(r);return e.m12=n,e.b=n,e}function H(t,e){return L([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 R=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},F={isIdentity:{configurable:!0},is2D:{configurable:!0}};function G(t){var e=new R,r=t.origin,n=r[0],a=r[1],i=t.translate,s=t.rotate,o=t.skew,u=t.scale;return(s||o||u)&&(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.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.isNaN(+o)||(e=e.skewX(o||0)),Array.isArray(u)&&u.every((function(t){return!Number.isNaN(+t)}))&&u.some((function(t){return 1!==t}))?e=e.scale(u[0],u[1],u[2]):Number.isNaN(+u)||(e=e.scale(u||1,u||1,u||1)),e=e.translate(-n,-a)),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.isNaN(+i)||(e=e.translate(i||0,0,0)),e}function B(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,u=s.y-a,c=s.z-i;return[o*(Math.abs(i)/Math.abs(c))+n,u*(Math.abs(i)/Math.abs(c))+a]}function J(t,e){var r,n,a,i,s,o,u,m=0,l=0,h=p(t),f=b(h),y=G(e),v=Object.keys(e),x=e.origin,d=[y.a,y.b,y.c,y.d,y.e,y.f],g={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},M=[""],w=0,N="",A=[],C=[];if(!y.isIdentity){for(r=0,a=h.length;r<a;r+=1){M=h[r],h[r]&&(N=M[0]),C[r]=N,"A"!==N||y.is2D&&["skewX","skewY"].find((function(t){return v.includes(t)}))||(M=V(f[r],g),h[r]=V(f[r],g),j(h,C,r),f[r]=V(f[r],g),j(f,C,r),a=Math.max(h.length,f.length)),w=(M=f[r]).length,g.x1=+M[w-2],g.y1=+M[w-1],g.x2=+M[w-4]||g.x1,g.y2=+M[w-3]||g.y1;var q={s:h[r],c:h[r][0],x:g.x1,y:g.y1};A=A.concat([q])}return A.map((function(t){var e,r,a;switch(N=t.c,M=t.s,N){case"A":return u=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],u=s[1]*s[1]+s[3]*s[3],c=((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+u)/2;if(c<1e-9*m){var l=Math.sqrt(m);return{rx:l,ry:l,ax:0}}var h,f,p=s[0]*s[1]+s[2]*s[3],y=m+(c=Math.sqrt(c))/2,v=m-c/2,x=Math.abs(p)<1e-9&&Math.abs(y-u)<1e-9?90:Math.atan(Math.abs(p)>Math.abs(y-u)?(y-o)/p:p/(y-u)*180)/Math.PI;return x>=0?(h=Math.sqrt(y),f=Math.sqrt(v)):(x+=90,h=Math.sqrt(v),f=Math.sqrt(y)),{rx:h,ry:f,ax:x}}(d,+M[1],+M[2],+M[3]),d[0]*d[3]-d[1]*d[2]<0&&(M[5]=+M[5]?0:1),e=B(y,[+M[6],+M[7]],x),s=e[0],o=e[1],M=m===s&&l===o||u.rx<1e-9*u.ry||u.ry<1e-9*u.rx?["L",s,o]:[N,u.rx,u.ry,u.ax,M[4],M[5],s,o],m=s,l=o,M;case"L":case"H":case"V":return r=B(y,[t.x,t.y],x),s=r[0],o=r[1],m!==s&&l!==o?M=["L",s,o]:l===o?M=["H",s]:m===s&&(M=["V",o]),m=s,l=o,M;default:for(n=1,i=M.length;n<i;n+=2)a=B(y,[+M[n],+M[n+1]],x),m=a[0],l=a[1],M[n]=m,M[n+1]=l;return M}}))}return c(h)}function U(t,e,r,n,a,i,s,o){var u,c=a-2*r+t-(s-2*a+r),m=2*(r-t)-2*(a-r),l=t-r,h=(-m+Math.sqrt(m*m-4*c*l))/2/c,f=(-m-Math.sqrt(m*m-4*c*l))/2/c,p=[e,o],y=[t,s];return Math.abs(h)>"1e12"&&(h=.5),Math.abs(f)>"1e12"&&(f=.5),h>0&&h<1&&(u=P(t,e,r,n,a,i,s,o,h),y.push(u.x),p.push(u.y)),f>0&&f<1&&(u=P(t,e,r,n,a,i,s,o,f),y.push(u.x),p.push(u.y)),c=i-2*n+e-(o-2*i+n),l=e-n,h=(-(m=2*(n-e)-2*(i-n))+Math.sqrt(m*m-4*c*l))/2/c,f=(-m-Math.sqrt(m*m-4*c*l))/2/c,Math.abs(h)>"1e12"&&(h=.5),Math.abs(f)>"1e12"&&(f=.5),h>0&&h<1&&(u=P(t,e,r,n,a,i,s,o,h),y.push(u.x),p.push(u.y)),f>0&&f<1&&(u=P(t,e,r,n,a,i,s,o,f),y.push(u.x),p.push(u.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){return Array.isArray(t)&&l(t)&&t.slice(1).every((function(t){return"C"===t[0]}))}function K(t){if($(t))return c(t);for(var e=b(t),r={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},n=[],a="",i=e.length,s=0;s<i;s+=1){var o=e[s],u=o.length;o&&(a=o[0]),n[s]=a,e[s]=V(o,r),j(e,n,s),i=e.length,r.x1=+o[u-2],r.y1=+o[u-1],r.x2=+o[u-4]||r.x1,r.y2=+o[u-3]||r.y1}return e}function W(t){if(!t)return{x:0,y:0,width:0,height:0,x2:0,y2:0,cx:0,cy:0};var e=K(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 u=U.apply(void 0,[r,n].concat(t.slice(1).map(Number)));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),u=Math.max.apply(0,a),c=Math.max.apply(0,i),m=u-s,l=c-o;return{width:m,height:l,x:s,y:o,x2:u,y2:c,cx:s+m/2,cy:o+l/2}}function _(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 tt(t){var e=0,r=0,n=0,a=0,i=0;return K(t).map((function(t){var s;switch(t[0]){case"M":case"Z":return n="M"===t[0]?t[1]:n,a="M"===t[0]?t[2]:a,e=n,r=a,0;default:return i=_.apply(void 0,[e,r].concat(t.slice(1).map(Number))),s=t.slice(-2).map(Number),e=s[0],r=s[1],i}})).reduce((function(t,e){return t+e}),0)}function et(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 rt(t,e,r,n,a,i,s,o,u){var c=u;(null===u||Number.isNaN(+u))&&(c=1),c>1&&(c=1),c<0&&(c=0);var m=c/2,l=0,h=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(u,c){h=et(t,r,a,s,l=m*u+m),f=et(e,n,i,o,l),p+=y[c]*Math.sqrt(h*h+f*f)})),m*p}F.isIdentity.set=function(t){this.isIdentity=t},F.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},F.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},F.is2D.set=function(t){this.is2D=t},R.prototype.setMatrixValue=function(t){return[Array,Float64Array,Float32Array].some((function(e){return t instanceof e}))?L(t):"string"==typeof t&&t.length&&"none"!==t?E(t):"object"==typeof t?z(t):this},R.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}))},R.prototype.toString=function(){var t=this.toArray();return(this.is2D?"matrix":"matrix3d")+"("+t+")"},R.prototype.toJSON=function(){var t=this,e=t.is2D,r=t.isIdentity;return Object.assign({},t,{is2D:e,isIdentity:r})},R.prototype.multiply=function(t){return H(this,t)},R.prototype.translate=function(t,e,r){var n=e,a=r;return void 0===a&&(a=0),void 0===n&&(n=0),H(this,O(t,n,a))},R.prototype.scale=function(t,e,r){var n=e,a=r;return void 0===n&&(n=t),void 0===a&&(a=1),H(this,Z(t,n,a))},R.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),H(this,Q(n,a,i))},R.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 H(this,D(t,e,r,n))},R.prototype.skewX=function(t){return H(this,X(t))},R.prototype.skewY=function(t){return H(this,Y(t))},R.prototype.transformPoint=function(t){var e=O(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}},R.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(R.prototype,F),Object.assign(R,{Translate:O,Rotate:Q,RotateAxisAngle:D,Scale:Z,SkewX:X,SkewY:Y,Multiply:H,fromArray:L,fromMatrix:z,fromString:E});var nt={circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],rect:["width","height","x","y","rx","ry"],polygon:["points"],polyline:["points"],glyph:[]};var at={CSSMatrix:R,parsePathString:h,isPathArray:l,isCurveArray:$,isAbsoluteArray:f,isRelativeArray:y,isNormalizedArray:M,isValidPath:function(t){if("string"!=typeof t)return!1;var e=new m(t);for(s(e);e.index<e.max&&!e.err.length;)u(e);return!e.err.length&&"mM".includes(e.segments[0][0])},pathToAbsolute:p,pathToRelative:v,pathToCurve:K,pathToString:d,getDrawDirection:function(t){return tt(K(t))>=0},getPathArea:tt,getPathBBox:W,getPathLength:function(t){var e=0;return K(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:rt.apply(void 0,a)})),e},getPointAtLength:function(t,e){var r,n,a,i=0;return K(t).map((function(t,s,o){if(n=s?o[s-1].slice(-2).concat(t.slice(1)):t.slice(1),r=s?rt.apply(void 0,n):0,i+=r,0===s)a={x:n[0],y:n[1]};else if(i>e&&e>i-r){var u=n.concat([1-(i-e)/r]);a=P.apply(void 0,u)}else a=null;return a})).filter((function(t){return t})).slice(-1)[0]},clonePath:c,splitPath:N,fixPath:function(t){var e=h(t),r=p(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],u=s[1],c=r[i].slice(1),m=c[0],l=c[1];return a&&o===m&&u===l?e.slice(0,-1):e},roundPath:x,optimizePath:C,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).map(Number))].concat(e.map((function(t){return["C"].concat(t.slice(2).map(Number))})))},reversePath:w,normalizePath:b,transformPath:J,getSVGMatrix:G,shapeToPath:function(e,r){var n=Object.keys(nt),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,u={};if(u.type=o,a){var c=nt[o];c.forEach((function(t){u[t]=e.getAttribute(t)})),Object.values(e.attributes).forEach((function(t){var e=t.name,r=t.value;c.includes(e)||s.setAttribute(e,r)}))}else Object.assign(u,e);var m,l,h,f,p=t.decimals,y=t.round&&p?p:null;return"circle"===o?i=d((l=(m=u).cx,h=m.cy,f=m.r,[["M",l-f,h],["a",f,f,0,1,0,2*f,0],["a",f,f,0,1,0,-2*f,0]]),y):"ellipse"===o?i=d(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]]}(u),y):["polyline","polygon"].includes(o)?i=d(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}(u),y):"rect"===o?i=d(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"]]}(u),y):"line"===o?i=d(function(t){return[["M",t.x1,t.y1],["L",t.x2,t.y2]]}(u),y):"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,Version:"0.1.11alpha4"},it=function(e,r){var n=r||{},a=t.round,i=n.round;(i&&0==+i||!1===i)&&(a=0);var s=(a?n||t:{decimals:!1}).decimals;return this.round=s,this.segments=h(e),this.pathValue=e,this};return it.prototype.toAbsolute=function(){var t=this.segments;return this.segments=p(t),this},it.prototype.toRelative=function(){var t=this.segments;return this.segments=v(t),this},it.prototype.reverse=function(t){this.toAbsolute();var e=this.segments,r=N(this.toString()),n=r.length>1?r:0,a=n&&c(n).map((function(e,r){return t?r?w(e):h(e):w(e)})),i=[];return i=n?a.flat(1):t?e:w(e),this.segments=c(i),this},it.prototype.normalize=function(){var t=this.segments;return this.segments=b(t),this},it.prototype.optimize=function(){var t=this.segments;return this.segments=C(t,this.round),this},it.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])?t[r].map(Number):Number(t[r])}));var r=this.segments;if(!e.origin){var n=W(r),a=n.cx,i=n.cy,s=n.width,o=n.height,u=Math.max(s,o)+Math.min(s,o)/2;e.origin=[a,i,u]}return this.segments=J(r,e),this},it.prototype.flipX=function(){return this.transform({rotate:[180,0,0]}),this},it.prototype.flipY=function(){return this.transform({rotate:[0,180,0]}),this},it.prototype.toString=function(){return d(this.segments,this.round)},Object.assign(it,at),it}));
|
package/package.json
CHANGED
|
@@ -5,11 +5,8 @@ import shortenSegment from './shortenSegment';
|
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Optimizes a `pathArray` object:
|
|
8
|
-
* * convert segments to
|
|
9
|
-
* *
|
|
10
|
-
* from absolute and relative `pathArray`s
|
|
11
|
-
*
|
|
12
|
-
* TO DO - denormalize segments, normalToShorthand
|
|
8
|
+
* * convert segments to shorthand if possible
|
|
9
|
+
* * select shortest segments from absolute and relative `pathArray`s
|
|
13
10
|
*
|
|
14
11
|
* @param {string | SVGPathCommander.pathArray} pathInput a string or `pathArray`
|
|
15
12
|
* @param {number | boolean | null} round the amount of decimals to round values to
|
|
@@ -12,7 +12,7 @@ import pathToCurve from '../convert/pathToCurve';
|
|
|
12
12
|
export default function getPathLength(path) {
|
|
13
13
|
let totalLength = 0;
|
|
14
14
|
pathToCurve(path).forEach((s, i, curveArray) => {
|
|
15
|
-
const args = [...curveArray[i - 1].slice(-2), ...s.slice(1)];
|
|
15
|
+
const args = s[0] !== 'M' ? [...curveArray[i - 1].slice(-2), ...s.slice(1)] : [];
|
|
16
16
|
totalLength += s[0] === 'M' ? 0
|
|
17
17
|
// : getSegCubicLength.apply(0, curveArray[i - 1].slice(-2).concat(s.slice(1)));
|
|
18
18
|
// @ts-ignore
|