svg-path-commander 0.1.21 → 0.1.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +72 -12
- package/dist/svg-path-commander.esm.js +658 -197
- package/dist/svg-path-commander.esm.min.js +2 -2
- package/dist/svg-path-commander.js +679 -196
- package/dist/svg-path-commander.min.js +2 -2
- package/package.json +1 -1
- package/src/convert/pathToAbsolute.js +3 -2
- package/src/convert/pathToCurve.js +2 -1
- package/src/convert/pathToRelative.js +2 -1
- package/src/math/polygonArea.js +4 -4
- package/src/math/polygonLength.js +2 -2
- package/src/parser/isSpace.js +1 -1
- package/src/parser/paramsCount.js +1 -0
- package/src/parser/parsePathString.js +4 -3
- package/src/parser/pathParser.js +2 -1
- package/src/parser/scanSegment.js +0 -1
- package/src/process/fixPath.js +1 -1
- package/src/process/lineToCubic.js +4 -5
- package/src/process/normalizePath.js +4 -2
- package/src/util/getClosestPoint.js +12 -0
- package/src/util/getCubicSize.js +41 -39
- package/src/util/getPathArea.js +19 -19
- package/src/util/getPathBBox.js +0 -11
- package/src/util/getPathLength.js +9 -9
- package/src/util/getPointAtLength.js +6 -29
- package/src/util/getPointAtPathLength.js +15 -0
- package/src/util/getPropertiesAtLength.js +63 -0
- package/src/util/getPropertiesAtPoint.js +78 -0
- package/src/util/getSegmentAtLength.js +13 -0
- package/src/util/getSegmentOfPoint.js +14 -0
- package/src/util/getTotalLength.js +15 -0
- package/src/util/isAbsoluteArray.js +2 -1
- package/src/util/isCurveArray.js +2 -1
- package/src/util/isNormalizedArray.js +2 -1
- package/src/util/isPointInStroke.js +13 -0
- package/src/util/isRelativeArray.js +2 -1
- package/src/util/pathLengthFactory.js +100 -0
- package/src/util/segmentArcFactory.js +52 -0
- package/src/util/segmentCubicFactory.js +83 -0
- package/src/util/segmentLineFactory.js +30 -0
- package/src/util/segmentQuadFactory.js +79 -0
- package/src/util/shapeToPath.js +1 -1
- package/src/util/util.js +19 -1
- package/types/index.d.ts +14 -5
- package/types/more/modules.ts +17 -5
- package/types/more/svg.d.ts +21 -0
- package/types/svg-path-commander.d.ts +253 -129
- package/src/util/getPointAtSegLength.js +0 -28
- package/src/util/getSegArcLength.js +0 -27
- package/src/util/getSegCubicLength.js +0 -52
- package/src/util/getSegLineLength.js +0 -14
- package/src/util/getSegQuadLength.js +0 -31
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// SVGPathCommander v0.1.
|
|
2
|
-
const t={origin:[0,0,0],round:4},e={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0};function r(t){let r=t.pathValue[t.segmentStart],n=r.toLowerCase(),{data:s}=t;for("m"===n&&s.length>2&&(t.segments.push([r,s[0],s[1]]),s=s.slice(2),n="l",r="m"===r?"l":"L");s.length>=e[n]&&(t.segments.push([r,...s.splice(0,e[n])]),e[n]););}function n(t){const{index:e}=t,r=t.pathValue.charCodeAt(e);return 48===r?(t.param=0,void(t.index+=1)):49===r?(t.param=1,void(t.index+=1)):void(t.err=`Invalid path value: invalid Arc flag "${r}", expecting 0 or 1 at index ${e}`)}function s(t){return t>=48&&t<=57}function a(t){const{max:e,pathValue:r,index:n}=t;let a,i=n,m=!1,o=!1,c=!1,l=!1;if(i>=e)t.err=`Invalid path value at ${i}: missing param ${r[i]}`;else if(a=r.charCodeAt(i),43!==a&&45!==a||(i+=1,a=i<e?r.charCodeAt(i):0),s(a)||46===a){if(46!==a){if(m=48===a,i+=1,a=i<e?r.charCodeAt(i):0,m&&i<e&&a&&s(a))return void(t.err=`Invalid path value at index ${n}: ${r[n]} illegal number`);for(;i<e&&s(r.charCodeAt(i));)i+=1,o=!0;a=i<e?r.charCodeAt(i):0}if(46===a){for(l=!0,i+=1;s(r.charCodeAt(i));)i+=1,c=!0;a=i<e?r.charCodeAt(i):0}if(101===a||69===a){if(l&&!o&&!c)return void(t.err=`Invalid path value at index ${i}: ${r[i]} invalid float exponent`);if(i+=1,a=i<e?r.charCodeAt(i):0,43!==a&&45!==a||(i+=1),!(i<e&&s(r.charCodeAt(i))))return void(t.err=`Invalid path value at index ${i}: ${r[i]} invalid float exponent`);for(;i<e&&s(r.charCodeAt(i));)i+=1}t.index=i,t.param=+t.pathValue.slice(n,i)}else t.err=`Invalid path value at index ${i}: ${r[i]} is not a number`}function i(t){const{pathValue:e,max:r}=t;for(;t.index<r&&(10===(n=e.charCodeAt(t.index))||13===n||8232===n||8233===n||32===n||9===n||11===n||12===n||160===n||n>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(n)>=0);)t.index+=1;var n}function m(t){return t>=48&&t<=57||43===t||45===t||46===t}function o(t){const{max:s,pathValue:o,index:c}=t,l=o.charCodeAt(c),u=e[o[c].toLowerCase()];if(t.segmentStart=c,function(t){switch(32|t){case 109:case 122:case 108:case 104:case 118:case 99:case 115:case 113:case 116:case 97:return!0;default:return!1}}(l))if(t.index+=1,i(t),t.data=[],u){for(;;){for(let e=u;e>0;e-=1){if(97!=(32|l)||3!==e&&4!==e?a(t):n(t),t.err.length)return;t.data.push(t.param),i(t),t.index<s&&44===o.charCodeAt(t.index)&&(t.index+=1,i(t))}if(t.index>=t.max)break;if(!m(o.charCodeAt(t.index)))break}r(t)}else r(t);else t.err=`Invalid path value: ${o[c]} not a path command`}function c(t){return t.map(t=>Array.isArray(t)?[...t]:t)}function l(t){this.segments=[],this.pathValue=t,this.max=t.length,this.index=0,this.param=0,this.segmentStart=0,this.data=[],this.err=""}function u(t){return Array.isArray(t)&&t.every(t=>{const r=t[0].toLowerCase();return e[r]===t.length-1&&"achlmqstvz".includes(r)})}function h(t){if(Array.isArray(t)&&u(t))return c(t);const e=new l(t);for(i(e);e.index<e.max&&!e.err.length;)o(e);return e.err.length?e.segments=[]:e.segments.length&&("mM".includes(e.segments[0][0])?e.segments[0][0]="M":(e.err="Invalid path value: missing M/m",e.segments=[])),e.segments}function f(t){return u(t)&&t.every(t=>t[0]===t[0].toUpperCase())}function y(t){if(Array.isArray(t)&&f(t))return c(t);const e=h(t);let r=0,n=0,s=0,a=0;return e.map(t=>{const e=t.slice(1).map(Number),[i]=t,m=i.toUpperCase();if("M"===i)return[r,n]=e,s=r,a=n,["M",r,n];let o=[];if(i!==m)switch(m){case"A":o=[m,e[0],e[1],e[2],e[3],e[4],e[5]+r,e[6]+n];break;case"V":o=[m,e[0]+n];break;case"H":o=[m,e[0]+r];break;default:o=[m,...e.map((t,e)=>t+(e%2?n:r))]}else o=[m,...e];const c=o.length;switch(m){case"Z":r=s,n=a;break;case"H":[,r]=o;break;case"V":[,n]=o;break;default:r=o[c-2],n=o[c-1],"M"===m&&(s=r,a=n)}return o})}function x(t){return u(t)&&t.slice(1).every(t=>t[0]===t[0].toLowerCase())}function p(t){if(x(t))return c(t);const e=h(t);let r=0,n=0,s=0,a=0;return e.map(t=>{const e=t.slice(1).map(Number),[i]=t,m=i.toLowerCase();if("M"===i)return[r,n]=e,s=r,a=n,["M",r,n];let o=[];if(i!==m)switch(m){case"a":o=[m,e[0],e[1],e[2],e[3],e[4],e[5]-r,e[6]-n];break;case"v":o=[m,e[0]-n];break;case"h":o=[m,e[0]-r];break;default:o=[m,...e.map((t,e)=>t-(e%2?n:r))],"m"===m&&([r,n]=e,s=r,a=n)}else"m"===i&&(s=e[0]+r,a=e[1]+n),o=[m,...e];const c=o.length;switch(m){case"z":r=s,n=a;break;case"h":r+=o[1];break;case"v":n+=o[1];break;default:r+=o[c-2],n+=o[c-1]}return o})}function d(t,e,r){if(t[r].length>7){t[r].shift();const n=t[r];let s=r;for(;n.length;)e[r]="A",t.splice(s+=1,0,["C",...n.splice(0,6)]);t.splice(r,1)}}function g(t,e,r){const[n]=t,{x1:s,y1:a,x2:i,y2:m}=e,o=t.slice(1).map(Number);let c=t;if("TQ".includes(n)||(e.qx=null,e.qy=null),"H"===n)c=["L",t[1],a];else if("V"===n)c=["L",s,t[1]];else if("S"===n){const{x1:t,y1:n}=function(t,e,r,n,s){return"CS".includes(s)?{x1:2*t-r,y1:2*e-n}:{x1:t,y1:e}}(s,a,i,m,r);e.x1=t,e.y1=n,c=["C",t,n,...o]}else if("T"===n){const{qx:t,qy:n}=function(t,e,r,n,s){return"QT".includes(s)?{qx:2*t-r,qy:2*e-n}:{qx:t,qy:e}}(s,a,e.qx,e.qy,r);e.qx=t,e.qy=n,c=["Q",t,n,...o]}else if("Q"===n){const[t,r]=o;e.qx=t,e.qy=r}return c}function M(t){return f(t)&&t.every(t=>"ACLMQZ".includes(t[0]))}const b={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null};function v(t){if(M(t))return c(t);const e=y(t),r={...b},n=[],s=e.length;let a="",i="";for(let t=0;t<s;t+=1){[a]=e[t],n[t]=a,t&&(i=n[t-1]),e[t]=g(e[t],r,i);const s=e[t],m=s.length;r.x1=+s[m-2],r.y1=+s[m-1],r.x2=+s[m-4]||r.x1,r.y2=+s[m-3]||r.y1}return e}function N(t){const e=h(t),r=v(e),{length:n}=e,s="Z"===r.slice(-1)[0][0],a=s?n-2:n-1,[i,m]=r[0].slice(1),[o,c]=r[a].slice(-2);return s&&i===o&&m===c?e.slice(0,-1):e}function w(t){return u(t)&&t.every(t=>"MC".includes(t[0]))}function A(t,e,r){return{x:t*Math.cos(r)-e*Math.sin(r),y:t*Math.sin(r)+e*Math.cos(r)}}function C(t,e,r,n,s,a,i,m,o,c){let l=t,u=e,h=r,f=n,y=m,x=o;const p=120*Math.PI/180,d=Math.PI/180*(+s||0);let g,M,b,v,N,w=[];if(c)[M,b,v,N]=c;else{g=A(l,u,-d),l=g.x,u=g.y,g=A(y,x,-d),y=g.x,x=g.y;const t=(l-y)/2,e=(u-x)/2;let r=t*t/(h*h)+e*e/(f*f);r>1&&(r=Math.sqrt(r),h*=r,f*=r);const n=h*h,s=f*f,m=(a===i?-1:1)*Math.sqrt(Math.abs((n*s-n*e*e-s*t*t)/(n*e*e+s*t*t)));v=m*h*e/f+(l+y)/2,N=m*-f*t/h+(u+x)/2,M=(Math.asin((u-N)/f)*10**9>>0)/10**9,b=(Math.asin((x-N)/f)*10**9>>0)/10**9,M=l<v?Math.PI-M:M,b=y<v?Math.PI-b:b,M<0&&(M=2*Math.PI+M),b<0&&(b=2*Math.PI+b),i&&M>b&&(M-=2*Math.PI),!i&&b>M&&(b-=2*Math.PI)}let k=b-M;if(Math.abs(k)>p){const t=b,e=y,r=x;b=M+p*(i&&b>M?1:-1),y=v+h*Math.cos(b),x=N+f*Math.sin(b),w=C(y,x,h,f,s,0,i,e,r,[b,t,v,N])}k=b-M;const S=Math.cos(M),q=Math.sin(M),P=Math.cos(b),I=Math.sin(b),T=Math.tan(k/4),V=4/3*h*T,z=4/3*f*T,$=[l,u],j=[l+V*q,u-z*S],E=[y+V*I,x-z*P],L=[y,x];if(j[0]=2*$[0]-j[0],j[1]=2*$[1]-j[1],c)return[...j,...E,...L,...w];w=[...j,...E,...L,...w];const O=[];for(let t=0,e=w.length;t<e;t+=1)O[t]=t%2?A(w[t-1],w[t],d).y:A(w[t],w[t+1],d).x;return O}function k(t,e,r,n,s,a){return[1/3*t+2/3*r,1/3*e+2/3*n,1/3*s+2/3*r,1/3*a+2/3*n,s,a]}function S(t,e,r,n,s,a,i,m,o){const c=1-o;return{x:c**3*t+c*c*3*o*r+3*c*o*o*s+o**3*i,y:c**3*e+c*c*3*o*n+3*c*o*o*a+o**3*m}}function q(t,e,r){const[n,s]=t,[a,i]=e;return[n+(a-n)*r,s+(i-s)*r]}function P(t,e,r,n){const s=.5,a=[t,e],i=[r,n],m=q(a,i,s),o=q(i,m,s),c=q(m,o,s),l=q(o,c,s),u=q(c,l,s),h=S(...[...a,...m,...c,...u,s]),f=S(...[...u,...l,...o,...i,0]);return[h.x,h.y,f.x,f.y,r,n]}function I(t,e){const[r]=t,n=t.slice(1).map(t=>+t),[s,a]=n;let i;const{x1:m,y1:o,x:c,y:l}=e;switch("TQ".includes(r)||(e.qx=null,e.qy=null),r){case"M":return e.x=s,e.y=a,t;case"A":return i=[m,o,...n],["C",...C(...i)];case"Q":return e.qx=s,e.qy=a,i=[m,o,...n],["C",...k(...i)];case"L":return["C",...P(m,o,s,a)];case"Z":return["C",...P(m,o,c,l)]}return t}function T(t){if(w(t))return c(t);const e=N(v(t)),r={...b},n=[];let s="",a=e.length;for(let t=0;t<a;t+=1){[s]=e[t],n[t]=s,e[t]=I(e[t],r),d(e,n,t),a=e.length;const i=e[t],m=i.length;r.x1=+i[m-2],r.y1=+i[m-1],r.x2=+i[m-4]||r.x1,r.y2=+i[m-3]||r.y1}return e}function V(e,r){let{round:n}=t;if(!1===r||!1===n)return c(e);n=r>=1?r:n;const s=n>=1?10**n:1;return e.map(t=>{const e=t.slice(1).map(Number).map(t=>t%1==0?t:Math.round(t*s)/s);return[t[0],...e]})}function z(t,e){return V(t,e).map(t=>t[0]+t.slice(1).join(" ")).join("")}function $(t){const e=y(t),r="Z"===e.slice(-1)[0][0],n=v(e).map((t,r)=>{const[n,s]=t.slice(-2).map(Number);return{seg:e[r],n:t,c:e[r][0],x:n,y:s}}).map((t,e,n)=>{const s=t.seg,a=t.n,i=e&&n[e-1],m=n[e+1]&&n[e+1],o=t.c,c=n.length,l=e?n[e-1].x:n[c-1].x,u=e?n[e-1].y:n[c-1].y;let h=[];switch(o){case"M":h=r?["Z"]:[o,l,u];break;case"A":h=[o,...s.slice(1,-3),1===s[5]?0:1,l,u];break;case"C":h=m&&"S"===m.c?["S",s[1],s[2],l,u]:[o,s[3],s[4],s[1],s[2],l,u];break;case"S":h=i&&"CS".includes(i.c)&&(!m||m&&"S"!==m.c)?["C",a[3],a[4],a[1],a[2],l,u]:[o,a[1],a[2],l,u];break;case"Q":h=m&&"T"===m.c?["T",l,u]:[o,...s.slice(1,-2),l,u];break;case"T":h=i&&"QT".includes(i.c)&&(!m||m&&"T"!==m.c)?["Q",a[1],a[2],l,u]:[o,l,u];break;case"Z":h=["M",l,u];break;case"H":h=[o,l];break;case"V":h=[o,u];break;default:h=[o,...s.slice(1,-2),l,u]}return h});return r?n.reverse():[n[0],...n.slice(1).reverse()]}function j(t){return z(y(t),0).replace(/(m|M)/g,"|$1").split("|").map(t=>t.trim()).filter(t=>t)}function E(t,e,r,n){const[s]=t,a=t=>Math.round(1e4*t)/1e4,i=t.slice(1).map(t=>+t),m=e.slice(1).map(t=>+t),{x1:o,y1:c,x2:l,y2:u,x:h,y:f}=r;let y=t;const[x,p]=m.slice(-2);if("TQ".includes(s)||(r.qx=null,r.qy=null),["V","H","S","T","Z"].includes(s))y=[s,...i];else if("L"===s)a(h)===a(x)?y=["V",p]:a(f)===a(p)&&(y=["H",x]);else if("C"===s){const[t,e]=m;"CS".includes(n)&&a(t)===a(2*o-l)&&a(e)===a(2*c-u)&&(y=["S",...m.slice(-4)]),r.x1=t,r.y1=e}else if("Q"===s){const[t,e]=m;r.qx=t,r.qy=e,"QT".includes(n)&&a(t)===a(2*o-l)&&a(e)===a(2*c-u)&&(y=["T",...m.slice(-2)])}return y}function L(t,e){const r=y(t),n=v(r),s={...b},a=[],i=r.length;let m="",o="",c=0,l=0,u=0,h=0;for(let t=0;t<i;t+=1){[m]=r[t],a[t]=m,t&&(o=a[t-1]),r[t]=E(r[t],n[t],s,o);const e=r[t],i=e.length;switch(s.x1=+e[i-2],s.y1=+e[i-1],s.x2=+e[i-4]||s.x1,s.y2=+e[i-3]||s.y1,m){case"Z":c=u,l=h;break;case"H":[,c]=e;break;case"V":[,l]=e;break;default:[c,l]=e.slice(-2).map(Number),"M"===m&&(u=c,h=l)}s.x=c,s.y=l}const f=V(r,e),x=V(p(r),e);return f.map((t,e)=>e?t.join("").length<x[e].join("").length?t:x[e]:t)}function O(t){const e=new J,r=Array.from(t);if(!r.every(t=>!Number.isNaN(t)))throw TypeError(`CSSMatrix: "${t}" must only have numbers.`);if(16===r.length){const[t,n,s,a,i,m,o,c,l,u,h,f,y,x,p,d]=r;e.m11=t,e.a=t,e.m21=i,e.c=i,e.m31=l,e.m41=y,e.e=y,e.m12=n,e.b=n,e.m22=m,e.d=m,e.m32=u,e.m42=x,e.f=x,e.m13=s,e.m23=o,e.m33=h,e.m43=p,e.m14=a,e.m24=c,e.m34=f,e.m44=d}else{if(6!==r.length)throw new TypeError("CSSMatrix: expecting an Array of 6/16 values.");{const[t,n,s,a,i,m]=r;e.m11=t,e.a=t,e.m12=n,e.b=n,e.m21=s,e.c=s,e.m22=a,e.d=a,e.m41=i,e.e=i,e.m42=m,e.f=m}}return e}function Q(t){const e=Object.keys(new J);if("object"==typeof t&&e.every(e=>e in t))return O([t.m11,t.m12,t.m13,t.m14,t.m21,t.m22,t.m23,t.m24,t.m31,t.m32,t.m33,t.m34,t.m41,t.m42,t.m43,t.m44]);throw TypeError(`CSSMatrix: "${t}" is not a DOMMatrix / CSSMatrix / JSON compatible object.`)}function Z(t){if("string"!=typeof t)throw TypeError(`CSSMatrix: "${t}" is not a string.`);const e=String(t).replace(/\s/g,"");let r=new J;const n=`CSSMatrix: invalid transform string "${t}"`;return e.split(")").filter(t=>t).forEach(t=>{const[e,s]=t.split("(");if(!s)throw TypeError(n);const a=s.split(",").map(t=>t.includes("rad")?parseFloat(t)*(180/Math.PI):parseFloat(t)),[i,m,o,c]=a,l=[i,m,o],u=[i,m,o,c];if("perspective"===e&&i&&[m,o].every(t=>void 0===t))r.m34=-1/i;else if(e.includes("matrix")&&[6,16].includes(a.length)&&a.every(t=>!Number.isNaN(+t))){const t=a.map(t=>Math.abs(t)<1e-6?0:t);r=r.multiply(O(t))}else if("translate3d"===e&&l.every(t=>!Number.isNaN(+t)))r=r.translate(i,m,o);else if("translate"===e&&i&&void 0===o)r=r.translate(i,m||0,0);else if("rotate3d"===e&&u.every(t=>!Number.isNaN(+t))&&c)r=r.rotateAxisAngle(i,m,o,c);else if("rotate"===e&&i&&[m,o].every(t=>void 0===t))r=r.rotate(0,0,i);else if("scale3d"===e&&l.every(t=>!Number.isNaN(+t))&&l.some(t=>1!==t))r=r.scale(i,m,o);else if("scale"!==e||Number.isNaN(i)||1===i||void 0!==o)if("skew"===e&&i&&void 0===o)r=r.skewX(i),r=m?r.skewY(m):r;else{if(!(/[XYZ]/.test(e)&&i&&[m,o].every(t=>void 0===t)&&["translate","rotate","scale","skew"].some(t=>e.includes(t))))throw TypeError(n);if(["skewX","skewY"].includes(e))r=r[e](i);else{const t=e.replace(/[XYZ]/,""),n=e.replace(t,""),s=["X","Y","Z"].indexOf(n),a=[0===s?i:0,1===s?i:0,2===s?i:0];r=r[t](...a)}}else{const t=Number.isNaN(+m)?i:m;r=r.scale(i,t,1)}}),r}function D(t,e,r){const n=new J;return n.m41=t,n.e=t,n.m42=e,n.f=e,n.m43=r,n}function X(t,e,r){const n=new J,s=Math.PI/180,a=t*s,i=e*s,m=r*s,o=Math.cos(a),c=-Math.sin(a),l=Math.cos(i),u=-Math.sin(i),h=Math.cos(m),f=-Math.sin(m),y=l*h,x=-l*f;n.m11=y,n.a=y,n.m12=x,n.b=x,n.m13=u;const p=c*u*h+o*f;n.m21=p,n.c=p;const d=o*h-c*u*f;return n.m22=d,n.d=d,n.m23=-c*l,n.m31=c*f-o*u*h,n.m32=c*h+o*u*f,n.m33=o*l,n}function H(t,e,r,n){const s=new J,a=n*(Math.PI/360),i=Math.sin(a),m=Math.cos(a),o=i*i,c=Math.sqrt(t*t+e*e+r*r);let l=t,u=e,h=r;0===c?(l=0,u=0,h=1):(l/=c,u/=c,h/=c);const f=l*l,y=u*u,x=h*h,p=1-2*(y+x)*o;s.m11=p,s.a=p;const d=2*(l*u*o+h*i*m);s.m12=d,s.b=d,s.m13=2*(l*h*o-u*i*m);const g=2*(u*l*o-h*i*m);s.m21=g,s.c=g;const M=1-2*(x+f)*o;return s.m22=M,s.d=M,s.m23=2*(u*h*o+l*i*m),s.m31=2*(h*l*o+u*i*m),s.m32=2*(h*u*o-l*i*m),s.m33=1-2*(f+y)*o,s}function Y(t,e,r){const n=new J;return n.m11=t,n.a=t,n.m22=e,n.d=e,n.m33=r,n}function R(t){const e=new J,r=t*Math.PI/180,n=Math.tan(r);return e.m21=n,e.c=n,e}function F(t){const e=new J,r=t*Math.PI/180,n=Math.tan(r);return e.m12=n,e.b=n,e}function B(t,e){return O([e.m11*t.m11+e.m12*t.m21+e.m13*t.m31+e.m14*t.m41,e.m11*t.m12+e.m12*t.m22+e.m13*t.m32+e.m14*t.m42,e.m11*t.m13+e.m12*t.m23+e.m13*t.m33+e.m14*t.m43,e.m11*t.m14+e.m12*t.m24+e.m13*t.m34+e.m14*t.m44,e.m21*t.m11+e.m22*t.m21+e.m23*t.m31+e.m24*t.m41,e.m21*t.m12+e.m22*t.m22+e.m23*t.m32+e.m24*t.m42,e.m21*t.m13+e.m22*t.m23+e.m23*t.m33+e.m24*t.m43,e.m21*t.m14+e.m22*t.m24+e.m23*t.m34+e.m24*t.m44,e.m31*t.m11+e.m32*t.m21+e.m33*t.m31+e.m34*t.m41,e.m31*t.m12+e.m32*t.m22+e.m33*t.m32+e.m34*t.m42,e.m31*t.m13+e.m32*t.m23+e.m33*t.m33+e.m34*t.m43,e.m31*t.m14+e.m32*t.m24+e.m33*t.m34+e.m34*t.m44,e.m41*t.m11+e.m42*t.m21+e.m43*t.m31+e.m44*t.m41,e.m41*t.m12+e.m42*t.m22+e.m43*t.m32+e.m44*t.m42,e.m41*t.m13+e.m42*t.m23+e.m43*t.m33+e.m44*t.m43,e.m41*t.m14+e.m42*t.m24+e.m43*t.m34+e.m44*t.m44])}class J{constructor(...t){const e=this;if(e.a=1,e.b=0,e.c=0,e.d=1,e.e=0,e.f=0,e.m11=1,e.m12=0,e.m13=0,e.m14=0,e.m21=0,e.m22=1,e.m23=0,e.m24=0,e.m31=0,e.m32=0,e.m33=1,e.m34=0,e.m41=0,e.m42=0,e.m43=0,e.m44=1,t&&t.length){const r=[16,6].some(e=>e===t.length)?t:t[0];return e.setMatrixValue(r)}return e}set isIdentity(t){this.isIdentity=t}get isIdentity(){const t=this;return 1===t.m11&&0===t.m12&&0===t.m13&&0===t.m14&&0===t.m21&&1===t.m22&&0===t.m23&&0===t.m24&&0===t.m31&&0===t.m32&&1===t.m33&&0===t.m34&&0===t.m41&&0===t.m42&&0===t.m43&&1===t.m44}get is2D(){const t=this;return 0===t.m31&&0===t.m32&&1===t.m33&&0===t.m34&&0===t.m43&&1===t.m44}set is2D(t){this.is2D=t}setMatrixValue(t){return[Array,Float64Array,Float32Array].some(e=>t instanceof e)?O(t):"string"==typeof t&&t.length&&"none"!==t?Z(t):"object"==typeof t?Q(t):this}toArray(){const t=this;let e;return e=t.is2D?[t.a,t.b,t.c,t.d,t.e,t.f]:[t.m11,t.m12,t.m13,t.m14,t.m21,t.m22,t.m23,t.m24,t.m31,t.m32,t.m33,t.m34,t.m41,t.m42,t.m43,t.m44],e.map(t=>Math.abs(t)<1e-6?0:(t*10**6>>0)/10**6)}toString(){const t=this.toArray();return`${this.is2D?"matrix":"matrix3d"}(${t})`}toJSON(){const{is2D:t,isIdentity:e}=this;return{...this,is2D:t,isIdentity:e}}multiply(t){return B(this,t)}translate(t,e,r){let n=e,s=r;return void 0===s&&(s=0),void 0===n&&(n=0),B(this,D(t,n,s))}scale(t,e,r){let n=e,s=r;return void 0===n&&(n=t),void 0===s&&(s=1),B(this,Y(t,n,s))}rotate(t,e,r){let n=t,s=e,a=r;return void 0===s&&(s=0),void 0===a&&(a=n,n=0),B(this,X(n,s,a))}rotateAxisAngle(t,e,r,n){if([t,e,r,n].some(t=>Number.isNaN(t)))throw new TypeError("CSSMatrix: expecting 4 values");return B(this,H(t,e,r,n))}skewX(t){return B(this,R(t))}skewY(t){return B(this,F(t))}transformPoint(t){let e=D(t.x,t.y,t.z);return e.m44=t.w||1,e=this.multiply(e),{x:e.m41,y:e.m42,z:e.m43,w:e.m44}}transform(t){const e=this,r=e.m11*t.x+e.m12*t.y+e.m13*t.z+e.m14*t.w,n=e.m21*t.x+e.m22*t.y+e.m23*t.z+e.m24*t.w,s=e.m31*t.x+e.m32*t.y+e.m33*t.z+e.m34*t.w,a=e.m41*t.x+e.m42*t.y+e.m43*t.z+e.m44*t.w;return{x:r/a,y:n/a,z:s/a,w:a}}}Object.assign(J,{Translate:D,Rotate:X,RotateAxisAngle:H,Scale:Y,SkewX:R,SkewY:F,Multiply:B,fromArray:O,fromMatrix:Q,fromString:Z});function U(t,e,r){const[n,s]=e,[a,i,m]=r,o=t.transformPoint({x:n,y:s,z:0,w:1}),c=o.x-a,l=o.y-i,u=o.z-m;return[c*(Math.abs(m)/Math.abs(u))+a,l*(Math.abs(m)/Math.abs(u))+i]}function G(t,e){let r,n,s,a,i,m,o,l=0,u=0;const h=y(t),f=v(h),x=function(t){let e=new J;const{origin:r}=t,[n,s]=r,{translate:a}=t,{rotate:i}=t,{skew:m}=t,{scale:o}=t;return Array.isArray(a)&&a.every(t=>!Number.isNaN(+t))&&a.some(t=>0!==t)?e=e.translate(a[0]||0,a[1]||0,a[2]||0):"number"!=typeof a||Number.isNaN(+a)||(e=e.translate(a||0,0,0)),(i||m||o)&&(e=e.translate(n,s),Array.isArray(i)&&i.every(t=>!Number.isNaN(+t))&&i.some(t=>0!==t)?e=e.rotate(i[0],i[1],i[2]):"number"!=typeof i||Number.isNaN(+i)||(e=e.rotate(0,0,i)),Array.isArray(m)&&m.every(t=>!Number.isNaN(+t))&&m.some(t=>0!==t)?(e=m[0]?e.skewX(m[0]):e,e=m[1]?e.skewY(m[1]):e):"number"!=typeof m||Number.isNaN(+m)||(e=e.skewX(m||0)),Array.isArray(o)&&o.every(t=>!Number.isNaN(+t))&&o.some(t=>1!==t)?e=e.scale(o[0],o[1],o[2]):"number"!=typeof o||Number.isNaN(+o)||(e=e.scale(o||1,o||1,o||1)),e=e.translate(-n,-s)),e}(e),p=Object.keys(e),{origin:g}=e,{a:M,b:N,c:w,d:A,e:C,f:k}=x,S=[M,N,w,A,C,k],q={...b};let P=[],T=0,V="",z=[];const $=[];if(!x.isIdentity){for(r=0,s=h.length;r<s;r+=1){P=h[r],h[r]&&([V]=P),$[r]=V,"A"!==V||x.is2D&&["skewX","skewY"].find(t=>p.includes(t))||(P=I(f[r],q),h[r]=I(f[r],q),d(h,$,r),f[r]=I(f[r],q),d(f,$,r),s=Math.max(h.length,f.length)),P=f[r],T=P.length,q.x1=+P[T-2],q.y1=+P[T-1],q.x2=+P[T-4]||q.x1,q.y2=+P[T-3]||q.y1;const t={s:h[r],c:h[r][0],x:q.x1,y:q.y1};z=[...z,t]}return z.map(t=>{switch(V=t.c,P=t.s,V){case"A":return o=function(t,e,r,n){const s=Math.cos(n*Math.PI/180),a=Math.sin(n*Math.PI/180),i=[e*(t[0]*s+t[2]*a),e*(t[1]*s+t[3]*a),r*(-t[0]*a+t[2]*s),r*(-t[1]*a+t[3]*s)],m=i[0]*i[0]+i[2]*i[2],o=i[1]*i[1]+i[3]*i[3];let c=((i[0]-i[3])*(i[0]-i[3])+(i[2]+i[1])*(i[2]+i[1]))*((i[0]+i[3])*(i[0]+i[3])+(i[2]-i[1])*(i[2]-i[1]));const l=(m+o)/2;if(c<1e-9*l){const t=Math.sqrt(l);return{rx:t,ry:t,ax:0}}const u=i[0]*i[1]+i[2]*i[3];c=Math.sqrt(c);const h=l+c/2,f=l-c/2;let y,x,p=Math.abs(u)<1e-9&&Math.abs(h-o)<1e-9?90:Math.atan(Math.abs(u)>Math.abs(h-o)?(h-m)/u:u/(h-o)*180)/Math.PI;return p>=0?(y=Math.sqrt(h),x=Math.sqrt(f)):(p+=90,y=Math.sqrt(f),x=Math.sqrt(h)),{rx:y,ry:x,ax:p}}(S,P[1],P[2],P[3]),S[0]*S[3]-S[1]*S[2]<0&&(P[5]=P[5]?0:1),[i,m]=U(x,[+P[6],+P[7]],g),P=l===i&&u===m||o.rx<1e-9*o.ry||o.ry<1e-9*o.rx?["L",i,m]:[V,o.rx,o.ry,o.ax,P[4],P[5],i,m],l=i,u=m,P;case"L":case"H":case"V":return[i,m]=U(x,[t.x,t.y],g),l!==i&&u!==m?P=["L",i,m]:u===m?P=["H",i]:l===i&&(P=["V",m]),l=i,u=m,P;default:for(n=1,a=P.length;n<a;n+=2)[l,u]=U(x,[+P[n],+P[n+1]],g),P[n]=l,P[n+1]=u;return P}})}return c(h)}function K(t){if(!t)return{x:0,y:0,width:0,height:0,x2:0,y2:0,cx:0,cy:0,cz:0};const e=T(t);let r=0,n=0,s=[],a=[];e.forEach(t=>{const[e,i]=t.slice(-2).map(Number);if("M"===t[0])r=e,n=i,s.push(e),a.push(i);else{const m=function(t,e,r,n,s,a,i,m){let o=s-2*r+t-(i-2*s+r),c=2*(r-t)-2*(s-r),l=t-r,u=(-c+Math.sqrt(c*c-4*o*l))/2/o,h=(-c-Math.sqrt(c*c-4*o*l))/2/o;const f=[e,m],y=[t,i];let x;return Math.abs(u)>"1e12"&&(u=.5),Math.abs(h)>"1e12"&&(h=.5),u>0&&u<1&&(x=S(t,e,r,n,s,a,i,m,u),y.push(x.x),f.push(x.y)),h>0&&h<1&&(x=S(t,e,r,n,s,a,i,m,h),y.push(x.x),f.push(x.y)),o=a-2*n+e-(m-2*a+n),c=2*(n-e)-2*(a-n),l=e-n,u=(-c+Math.sqrt(c*c-4*o*l))/2/o,h=(-c-Math.sqrt(c*c-4*o*l))/2/o,Math.abs(u)>"1e12"&&(u=.5),Math.abs(h)>"1e12"&&(h=.5),u>0&&u<1&&(x=S(t,e,r,n,s,a,i,m,u),y.push(x.x),f.push(x.y)),h>0&&h<1&&(x=S(t,e,r,n,s,a,i,m,h),y.push(x.x),f.push(x.y)),{min:{x:Math.min.apply(0,y),y:Math.min.apply(0,f)},max:{x:Math.max.apply(0,y),y:Math.max.apply(0,f)}}}(...[r,n,...t.slice(1)]);s=[...s,m.min.x,m.max.x],a=[...a,m.min.y,m.max.y],r=e,n=i}});const i=Math.min(...s),m=Math.min(...a),o=Math.max(...s),c=Math.max(...a),l=o-i,u=c-m;return{width:l,height:u,x:i,y:m,x2:o,y2:c,cx:i+l/2,cy:m+u/2,cz:Math.max(l,u)+Math.min(l,u)/2}}Object.assign(J,{Version:"0.0.24"});class W{constructor(e,r){const n=r||{};this.segments=h(e);const s=K(this.segments),{width:a,height:i,cx:m,cy:o,cz:c}=s;let{round:l,origin:u}=t;const{round:f,origin:y}=n;if("auto"===f){const t=(""+Math.floor(Math.max(a,i))).length;l=t>=4?0:4-t}else(Number.isInteger(f)&&f>=1||!1===f)&&(l=f);if(Array.isArray(y)&&y.length>=2){const[t,e,r]=y.map(Number);u=[Number.isNaN(t)?m:t,Number.isNaN(e)?o:e,r||c]}else u=[m,o,c];return this.round=l,this.origin=u,this}toAbsolute(){const{segments:t}=this;return this.segments=y(t),this}toRelative(){const{segments:t}=this;return this.segments=p(t),this}toCurve(){const{segments:t}=this;return this.segments=T(t),this}reverse(t){this.toAbsolute();const{segments:e}=this,r=j(this.toString()),n=r.length>1?r:0,s=n&&c(n).map((e,r)=>t?r?$(e):h(e):$(e));let a=[];return a=n?s.flat(1):t?e:$(e),this.segments=c(a),this}normalize(){const{segments:t}=this;return this.segments=v(t),this}optimize(){const{segments:t}=this;return this.segments=L(t,this.round),this}transform(t){if(!t||"object"!=typeof t||"object"==typeof t&&!["translate","rotate","skew","scale"].some(e=>e in t))return this;const e={};Object.keys(t).forEach(r=>{e[r]=Array.isArray(t[r])?[...t[r]]:Number(t[r])});const{segments:r}=this,{origin:n}=e;if(n&&n.length>=2){const[t,r,s]=n.map(Number),[a,i,m]=this.origin;e.origin=[Number.isNaN(t)?a:t,Number.isNaN(r)?i:r,s||m]}else e.origin={...this.origin};return this.segments=G(r,e),this}flipX(){return this.transform({rotate:[180,0,0]}),this}flipY(){return this.transform({rotate:[0,180,0]}),this}toString(){return z(this.segments,this.round)}}function _(t){let e=0,r=0,n=0;return T(t).map(t=>{switch(t[0]){case"M":return[,e,r]=t,0;default:return n=function(t,e,r,n,s,a,i,m){return 3*((m-e)*(r+s)-(i-t)*(n+a)+n*(t-s)-r*(e-a)+m*(s+t/3)-i*(a+e/3))/20}(e,r,...t.slice(1)),[e,r]=t.slice(-2).map(Number),n}}).reduce((t,e)=>t+e,0)}function tt(t,e,r,n,s){return s*(s*(-3*t+9*e-9*r+3*n)+6*t-12*e+6*r)-3*t+3*e}function et(t,e,r,n,s,a,i,m,o){let c=o;(null===o||Number.isNaN(+o))&&(c=1),c>1&&(c=1),c<0&&(c=0);const l=c/2;let u=0,h=0,f=0,y=0;const x=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472];return[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816].forEach((o,c)=>{u=l*o+l,h=tt(t,r,s,i,u),f=tt(e,n,a,m,u),y+=x[c]*Math.sqrt(h*h+f*f)}),l*y}const rt={circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],rect:["width","height","x","y","rx","ry"],polygon:["points"],polyline:["points"],glyph:[]};const nt={CSSMatrix:J,parsePathString:h,isPathArray:u,isCurveArray:w,isAbsoluteArray:f,isRelativeArray:x,isNormalizedArray:M,isValidPath:function(t){if("string"!=typeof t)return!1;const e=new l(t);for(i(e);e.index<e.max&&!e.err.length;)o(e);return!e.err.length&&"mM".includes(e.segments[0][0])},pathToAbsolute:y,pathToRelative:p,pathToCurve:T,pathToString:z,getDrawDirection:function(t){return _(T(t))>=0},getPathArea:_,getPathBBox:K,getPathLength:function(t){let e=0;return T(t).forEach((t,r,n)=>{const s="M"!==t[0]?[...n[r-1].slice(-2),...t.slice(1)]:[];e+="M"===t[0]?0:et(...s)}),e},getPointAtLength:function(t,e){let r,n,s,a=0;return T(t).map((t,i,m)=>{if(n=i?[...m[i-1].slice(-2),...t.slice(1)]:t.slice(1),r=i?et(...n):0,a+=r,0===i)s={x:n[0],y:n[1]};else if(a>e&&e>a-r){const t=[...n,1-(a-e)/r];s=S(...t)}else s=null;return s}).filter(t=>t).slice(-1)[0]},clonePath:c,splitPath:j,fixPath:N,roundPath:V,optimizePath:L,reverseCurve:function(t){const e=t.slice(1).map((e,r,n)=>r?[...n[r-1].slice(-2),...e.slice(1)]:[...t[0].slice(1),...e.slice(1)]).map(t=>t.map((e,r)=>t[t.length-r-2*(1-r%2)])).reverse();return[["M",...e[0].slice(0,2)],...e.map(t=>["C",...t.slice(2)])]},reversePath:$,normalizePath:v,transformPath:G,shapeToPath:function(e,r){const n=Object.keys(rt),s=e instanceof Element;if(s&&!n.some(t=>e.tagName===t))throw TypeError(`shapeToPath: "${e}" is not SVGElement`);const a=document.createElementNS("http://www.w3.org/2000/svg","path"),i=s?e.tagName:e.type,m={};if(m.type=i,s){const t=rt[i];t.forEach(t=>{m[t]=e.getAttribute(t)}),Object.values(e.attributes).forEach(({name:e,value:r})=>{t.includes(e)||a.setAttribute(e,r)})}else Object.assign(m,e);let o;const{round:c}=t;return"circle"===i?o=z(function(t){const{cx:e,cy:r,r:n}=t;return[["M",e-n,r],["a",n,n,0,1,0,2*n,0],["a",n,n,0,1,0,-2*n,0]]}(m),c):"ellipse"===i?o=z(function(t){const{cx:e,cy:r,rx:n,ry:s}=t;return[["M",e-n,r],["a",n,s,0,1,0,2*n,0],["a",n,s,0,1,0,-2*n,0]]}(m),c):["polyline","polygon"].includes(i)?o=z(function(t){const e=[],r=t.points.split(/[\s|,]/).map(Number);let n=0;for(;n<r.length;)e.push([n?"L":"M",r[n],r[n+1]]),n+=2;return"polygon"===t.type?[...e,["z"]]:e}(m),c):"rect"===i?o=z(function(t){const e=+t.x||0,r=+t.y||0,n=+t.width,s=+t.height;let a=+t.rx,i=+t.ry;return a||i?(a=a||i,i=i||a,2*a>n&&(a-=(2*a-n)/2),2*i>s&&(i-=(2*i-s)/2),[["M",e+a,r],["h",n-2*a],["s",a,0,a,i],["v",s-2*i],["s",0,i,-a,i],["h",2*a-n],["s",-a,0,-a,-i],["v",2*i-s],["s",0,-i,a,-i]]):[["M",e,r],["h",n],["v",s],["H",e],["Z"]]}(m),c):"line"===i?o=z(function(t){const{x1:e,y1:r,x2:n,y2:s}=t;return[["M",e,r],["L",n,s]]}(m),c):"glyph"===i&&(o=s?e.getAttribute("d"):e.type),!!o&&(a.setAttribute("d",o),r&&s&&(e.before(a,e),e.remove()),a)},options:t};Object.assign(W,nt,{Version:"0.1.21"});export{W as default};
|
|
1
|
+
// SVGPathCommander v0.1.25 | thednp © 2022 | MIT-License
|
|
2
|
+
const t={origin:[0,0,0],round:4},e={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0};function n(t){let n=t.pathValue[t.segmentStart],r=n.toLowerCase(),{data:s}=t;for("m"===r&&s.length>2&&(t.segments.push([n,s[0],s[1]]),s=s.slice(2),r="l",n="m"===n?"l":"L");s.length>=e[r]&&(t.segments.push([n,...s.splice(0,e[r])]),e[r]););}function r(t){const{index:e}=t,n=t.pathValue.charCodeAt(e);return 48===n?(t.param=0,void(t.index+=1)):49===n?(t.param=1,void(t.index+=1)):void(t.err=`Invalid path value: invalid Arc flag "${n}", expecting 0 or 1 at index ${e}`)}function s(t){return t>=48&&t<=57}function i(t){const{max:e,pathValue:n,index:r}=t;let i,a=r,o=!1,m=!1,c=!1,u=!1;if(a>=e)t.err=`Invalid path value at ${a}: missing param ${n[a]}`;else if(i=n.charCodeAt(a),43!==i&&45!==i||(a+=1,i=a<e?n.charCodeAt(a):0),s(i)||46===i){if(46!==i){if(o=48===i,a+=1,i=a<e?n.charCodeAt(a):0,o&&a<e&&i&&s(i))return void(t.err=`Invalid path value at index ${r}: ${n[r]} illegal number`);for(;a<e&&s(n.charCodeAt(a));)a+=1,m=!0;i=a<e?n.charCodeAt(a):0}if(46===i){for(u=!0,a+=1;s(n.charCodeAt(a));)a+=1,c=!0;i=a<e?n.charCodeAt(a):0}if(101===i||69===i){if(u&&!m&&!c)return void(t.err=`Invalid path value at index ${a}: ${n[a]} invalid float exponent`);if(a+=1,i=a<e?n.charCodeAt(a):0,43!==i&&45!==i||(a+=1),!(a<e&&s(n.charCodeAt(a))))return void(t.err=`Invalid path value at index ${a}: ${n[a]} invalid float exponent`);for(;a<e&&s(n.charCodeAt(a));)a+=1}t.index=a,t.param=+t.pathValue.slice(r,a)}else t.err=`Invalid path value at index ${a}: ${n[a]} is not a number`}function a(t){const{pathValue:e,max:n}=t;for(;t.index<n&&(10===(r=e.charCodeAt(t.index))||13===r||8232===r||8233===r||32===r||9===r||11===r||12===r||160===r||r>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].includes(r));)t.index+=1;var r}function o(t){return t>=48&&t<=57||43===t||45===t||46===t}function m(t){const{max:s,pathValue:m,index:c}=t,u=m.charCodeAt(c),l=e[m[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}}(u))if(t.index+=1,a(t),t.data=[],l){for(;;){for(let e=l;e>0;e-=1){if(97!=(32|u)||3!==e&&4!==e?i(t):r(t),t.err.length)return;t.data.push(t.param),a(t),t.index<s&&44===m.charCodeAt(t.index)&&(t.index+=1,a(t))}if(t.index>=t.max)break;if(!o(m.charCodeAt(t.index)))break}n(t)}else n(t);else t.err=`Invalid path value: ${m[c]} not a path command`}function c(t){return t.map(t=>Array.isArray(t)?[...t]:t)}function u(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(t=>{const n=t[0].toLowerCase();return e[n]===t.length-1&&"achlmqstvz".includes(n)})}function h(t){if(l(t))return c(t);const e=new u(t);for(a(e);e.index<e.max&&!e.err.length;)m(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 l(t)&&t.every(t=>t[0]===t[0].toUpperCase())}function y(t){if(f(t))return c(t);const e=h(t);let n=0,r=0,s=0,i=0;return e.map(t=>{const e=t.slice(1).map(Number),[a]=t,o=a.toUpperCase();if("M"===a)return[n,r]=e,s=n,i=r,["M",n,r];let m=[];if(a!==o)switch(o){case"A":m=[o,e[0],e[1],e[2],e[3],e[4],e[5]+n,e[6]+r];break;case"V":m=[o,e[0]+r];break;case"H":m=[o,e[0]+n];break;default:m=[o,...e.map((t,e)=>t+(e%2?r:n))]}else m=[o,...e];const c=m.length;switch(o){case"Z":n=s,r=i;break;case"H":[,n]=m;break;case"V":[,r]=m;break;default:n=m[c-2],r=m[c-1],"M"===o&&(s=n,i=r)}return m})}function x(t){return l(t)&&t.slice(1).every(t=>t[0]===t[0].toLowerCase())}function g(t){if(x(t))return c(t);const e=h(t);let n=0,r=0,s=0,i=0;return e.map(t=>{const e=t.slice(1).map(Number),[a]=t,o=a.toLowerCase();if("M"===a)return[n,r]=e,s=n,i=r,["M",n,r];let m=[];if(a!==o)switch(o){case"a":m=[o,e[0],e[1],e[2],e[3],e[4],e[5]-n,e[6]-r];break;case"v":m=[o,e[0]-r];break;case"h":m=[o,e[0]-n];break;default:m=[o,...e.map((t,e)=>t-(e%2?r:n))],"m"===o&&([n,r]=e,s=n,i=r)}else"m"===a&&(s=e[0]+n,i=e[1]+r),m=[o,...e];const c=m.length;switch(o){case"z":n=s,r=i;break;case"h":n+=m[1];break;case"v":r+=m[1];break;default:n+=m[c-2],r+=m[c-1]}return m})}function p(t,e,n){if(t[n].length>7){t[n].shift();const r=t[n];let s=n;for(;r.length;)e[n]="A",t.splice(s+=1,0,["C",...r.splice(0,6)]);t.splice(n,1)}}function d(t,e,n){const[r]=t,{x1:s,y1:i,x2:a,y2:o}=e,m=t.slice(1).map(Number);let c=t;if("TQ".includes(r)||(e.qx=null,e.qy=null),"H"===r)c=["L",t[1],i];else if("V"===r)c=["L",s,t[1]];else if("S"===r){const{x1:t,y1:r}=function(t,e,n,r,s){return"CS".includes(s)?{x1:2*t-n,y1:2*e-r}:{x1:t,y1:e}}(s,i,a,o,n);e.x1=t,e.y1=r,c=["C",t,r,...m]}else if("T"===r){const{qx:t,qy:r}=function(t,e,n,r,s){return"QT".includes(s)?{qx:2*t-n,qy:2*e-r}:{qx:t,qy:e}}(s,i,e.qx,e.qy,n);e.qx=t,e.qy=r,c=["Q",t,r,...m]}else if("Q"===r){const[t,n]=m;e.qx=t,e.qy=n}return c}function M(t){return f(t)&&t.every(t=>"ACLMQZ".includes(t[0]))}const b={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null};function v(t){if(M(t))return c(t);const e=y(t),n={...b},r=[],s=e.length;let i="",a="";for(let t=0;t<s;t+=1){[i]=e[t],r[t]=i,t&&(a=r[t-1]),e[t]=d(e[t],n,a);const s=e[t],o=s.length;n.x1=+s[o-2],n.y1=+s[o-1],n.x2=+s[o-4]||n.x1,n.y2=+s[o-3]||n.y1}return e}function N(t){const e=h(t),n=v(e),{length:r}=e,s="Z"===n.slice(-1)[0][0],i=s?r-2:r-1,[a,o]=n[0].slice(1),[m,c]=n[i].slice(-2);return s&&a===m&&o===c?e.slice(0,-1):e}function A(t){return l(t)&&t.every(t=>"MC".includes(t[0]))}function w(t,e,n){return{x:t*Math.cos(n)-e*Math.sin(n),y:t*Math.sin(n)+e*Math.cos(n)}}function C(t,e,n,r,s,i,a,o,m,c){let u=t,l=e,h=n,f=r,y=o,x=m;const g=120*Math.PI/180,p=Math.PI/180*(+s||0);let d,M,b,v,N,A=[];if(c)[M,b,v,N]=c;else{d=w(u,l,-p),u=d.x,l=d.y,d=w(y,x,-p),y=d.x,x=d.y;const t=(u-y)/2,e=(l-x)/2;let n=t*t/(h*h)+e*e/(f*f);n>1&&(n=Math.sqrt(n),h*=n,f*=n);const r=h*h,s=f*f,o=(i===a?-1:1)*Math.sqrt(Math.abs((r*s-r*e*e-s*t*t)/(r*e*e+s*t*t)));v=o*h*e/f+(u+y)/2,N=o*-f*t/h+(l+x)/2,M=(Math.asin((l-N)/f)*10**9>>0)/10**9,b=(Math.asin((x-N)/f)*10**9>>0)/10**9,M=u<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),a&&M>b&&(M-=2*Math.PI),!a&&b>M&&(b-=2*Math.PI)}let S=b-M;if(Math.abs(S)>g){const t=b,e=y,n=x;b=M+g*(a&&b>M?1:-1),y=v+h*Math.cos(b),x=N+f*Math.sin(b),A=C(y,x,h,f,s,0,a,e,n,[b,t,v,N])}S=b-M;const k=Math.cos(M),P=Math.sin(M),q=Math.cos(b),I=Math.sin(b),T=Math.tan(S/4),L=4/3*h*T,V=4/3*f*T,z=[u,l],$=[u+L*P,l-V*k],j=[y+L*I,x-V*q],E=[y,x];if($[0]=2*z[0]-$[0],$[1]=2*z[1]-$[1],c)return[...$,...j,...E,...A];A=[...$,...j,...E,...A];const Z=[];for(let t=0,e=A.length;t<e;t+=1)Z[t]=t%2?w(A[t-1],A[t],p).y:w(A[t],A[t+1],p).x;return Z}function S(t,e,n,r,s,i){return[1/3*t+2/3*n,1/3*e+2/3*r,1/3*s+2/3*n,1/3*i+2/3*r,s,i]}function k(t,e,n){const[r,s]=t,[i,a]=e;return[r+(i-r)*n,s+(a-s)*n]}function P(t,e){return Math.sqrt((t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1]))}function q(t,e,n,r,s){const i=P([t,e],[n,r]);if("number"==typeof s){if(s<.001)return{x:t,y:e};if(s>i)return{x:n,y:r};const[a,o]=k([t,e],[n,r],s/i);return{x:a,y:o}}return i}function I(t,e,n,r){const s=.5,i=[t,e],a=[n,r],o=k(i,a,s),m=k(a,o,s),c=k(o,m,s),u=k(m,c,s),l=k(c,u,s),h=q(...[...i,...o,...c,...l,s]),f=q(...[...l,...u,...m,...a,0]);return[h.x,h.y,f.x,f.y,n,r]}function T(t,e){const[n]=t,r=t.slice(1).map(t=>+t),[s,i]=r;let a;const{x1:o,y1:m,x:c,y:u}=e;switch("TQ".includes(n)||(e.qx=null,e.qy=null),n){case"M":return e.x=s,e.y=i,t;case"A":return a=[o,m,...r],["C",...C(...a)];case"Q":return e.qx=s,e.qy=i,a=[o,m,...r],["C",...S(...a)];case"L":return["C",...I(o,m,s,i)];case"Z":return["C",...I(o,m,c,u)]}return t}function L(t){if(A(t))return c(t);const e=N(v(t)),n={...b},r=[];let s="",i=e.length;for(let t=0;t<i;t+=1){[s]=e[t],r[t]=s,e[t]=T(e[t],n),p(e,r,t),i=e.length;const a=e[t],o=a.length;n.x1=+a[o-2],n.y1=+a[o-1],n.x2=+a[o-4]||n.x1,n.y2=+a[o-3]||n.y1}return e}function V(e,n){let{round:r}=t;if(!1===n||!1===r)return c(e);r=n>=1?n:r;const s=r>=1?10**r:1;return e.map(t=>{const e=t.slice(1).map(Number).map(t=>t%1==0?t:Math.round(t*s)/s);return[t[0],...e]})}function z(t,e){return V(t,e).map(t=>t[0]+t.slice(1).join(" ")).join("")}function $(t){const e=y(t),n="Z"===e.slice(-1)[0][0],r=v(e).map((t,n)=>{const[r,s]=t.slice(-2).map(Number);return{seg:e[n],n:t,c:e[n][0],x:r,y:s}}).map((t,e,r)=>{const s=t.seg,i=t.n,a=e&&r[e-1],o=r[e+1]&&r[e+1],m=t.c,c=r.length,u=e?r[e-1].x:r[c-1].x,l=e?r[e-1].y:r[c-1].y;let h=[];switch(m){case"M":h=n?["Z"]:[m,u,l];break;case"A":h=[m,...s.slice(1,-3),1===s[5]?0:1,u,l];break;case"C":h=o&&"S"===o.c?["S",s[1],s[2],u,l]:[m,s[3],s[4],s[1],s[2],u,l];break;case"S":h=a&&"CS".includes(a.c)&&(!o||o&&"S"!==o.c)?["C",i[3],i[4],i[1],i[2],u,l]:[m,i[1],i[2],u,l];break;case"Q":h=o&&"T"===o.c?["T",u,l]:[m,...s.slice(1,-2),u,l];break;case"T":h=a&&"QT".includes(a.c)&&(!o||o&&"T"!==o.c)?["Q",i[1],i[2],u,l]:[m,u,l];break;case"Z":h=["M",u,l];break;case"H":h=[m,u];break;case"V":h=[m,l];break;default:h=[m,...s.slice(1,-2),u,l]}return h});return n?r.reverse():[r[0],...r.slice(1).reverse()]}function j(t){return z(y(t),0).replace(/(m|M)/g,"|$1").split("|").map(t=>t.trim()).filter(t=>t)}function E(t,e,n,r){const[s]=t,i=t=>Math.round(1e4*t)/1e4,a=t.slice(1).map(t=>+t),o=e.slice(1).map(t=>+t),{x1:m,y1:c,x2:u,y2:l,x:h,y:f}=n;let y=t;const[x,g]=o.slice(-2);if("TQ".includes(s)||(n.qx=null,n.qy=null),["V","H","S","T","Z"].includes(s))y=[s,...a];else if("L"===s)i(h)===i(x)?y=["V",g]:i(f)===i(g)&&(y=["H",x]);else if("C"===s){const[t,e]=o;"CS".includes(r)&&i(t)===i(2*m-u)&&i(e)===i(2*c-l)&&(y=["S",...o.slice(-4)]),n.x1=t,n.y1=e}else if("Q"===s){const[t,e]=o;n.qx=t,n.qy=e,"QT".includes(r)&&i(t)===i(2*m-u)&&i(e)===i(2*c-l)&&(y=["T",...o.slice(-2)])}return y}function Z(t,e){const n=y(t),r=v(n),s={...b},i=[],a=n.length;let o="",m="",c=0,u=0,l=0,h=0;for(let t=0;t<a;t+=1){[o]=n[t],i[t]=o,t&&(m=i[t-1]),n[t]=E(n[t],r[t],s,m);const e=n[t],a=e.length;switch(s.x1=+e[a-2],s.y1=+e[a-1],s.x2=+e[a-4]||s.x1,s.y2=+e[a-3]||s.y1,o){case"Z":c=l,u=h;break;case"H":[,c]=e;break;case"V":[,u]=e;break;default:[c,u]=e.slice(-2).map(Number),"M"===o&&(l=c,h=u)}s.x=c,s.y=u}const f=V(n,e),x=V(g(n),e);return f.map((t,e)=>e?t.join("").length<x[e].join("").length?t:x[e]:t)}function O(t){const e=new U,n=Array.from(t);if(!n.every(t=>!Number.isNaN(t)))throw TypeError(`CSSMatrix: "${t}" must only have numbers.`);if(16===n.length){const[t,r,s,i,a,o,m,c,u,l,h,f,y,x,g,p]=n;e.m11=t,e.a=t,e.m21=a,e.c=a,e.m31=u,e.m41=y,e.e=y,e.m12=r,e.b=r,e.m22=o,e.d=o,e.m32=l,e.m42=x,e.f=x,e.m13=s,e.m23=m,e.m33=h,e.m43=g,e.m14=i,e.m24=c,e.m34=f,e.m44=p}else{if(6!==n.length)throw new TypeError("CSSMatrix: expecting an Array of 6/16 values.");{const[t,r,s,i,a,o]=n;e.m11=t,e.a=t,e.m12=r,e.b=r,e.m21=s,e.c=s,e.m22=i,e.d=i,e.m41=a,e.e=a,e.m42=o,e.f=o}}return e}function Q(t){const e=Object.keys(new U);if("object"==typeof t&&e.every(e=>e in t))return O([t.m11,t.m12,t.m13,t.m14,t.m21,t.m22,t.m23,t.m24,t.m31,t.m32,t.m33,t.m34,t.m41,t.m42,t.m43,t.m44]);throw TypeError(`CSSMatrix: "${t}" is not a DOMMatrix / CSSMatrix / JSON compatible object.`)}function D(t){if("string"!=typeof t)throw TypeError(`CSSMatrix: "${t}" is not a string.`);const e=String(t).replace(/\s/g,"");let n=new U;const r=`CSSMatrix: invalid transform string "${t}"`;return e.split(")").filter(t=>t).forEach(t=>{const[e,s]=t.split("(");if(!s)throw TypeError(r);const i=s.split(",").map(t=>t.includes("rad")?parseFloat(t)*(180/Math.PI):parseFloat(t)),[a,o,m,c]=i,u=[a,o,m],l=[a,o,m,c];if("perspective"===e&&a&&[o,m].every(t=>void 0===t))n.m34=-1/a;else if(e.includes("matrix")&&[6,16].includes(i.length)&&i.every(t=>!Number.isNaN(+t))){const t=i.map(t=>Math.abs(t)<1e-6?0:t);n=n.multiply(O(t))}else if("translate3d"===e&&u.every(t=>!Number.isNaN(+t)))n=n.translate(a,o,m);else if("translate"===e&&a&&void 0===m)n=n.translate(a,o||0,0);else if("rotate3d"===e&&l.every(t=>!Number.isNaN(+t))&&c)n=n.rotateAxisAngle(a,o,m,c);else if("rotate"===e&&a&&[o,m].every(t=>void 0===t))n=n.rotate(0,0,a);else if("scale3d"===e&&u.every(t=>!Number.isNaN(+t))&&u.some(t=>1!==t))n=n.scale(a,o,m);else if("scale"!==e||Number.isNaN(a)||1===a||void 0!==m)if("skew"===e&&a&&void 0===m)n=n.skewX(a),n=o?n.skewY(o):n;else{if(!(/[XYZ]/.test(e)&&a&&[o,m].every(t=>void 0===t)&&["translate","rotate","scale","skew"].some(t=>e.includes(t))))throw TypeError(r);if(["skewX","skewY"].includes(e))n=n[e](a);else{const t=e.replace(/[XYZ]/,""),r=e.replace(t,""),s=["X","Y","Z"].indexOf(r),i=[0===s?a:0,1===s?a:0,2===s?a:0];n=n[t](...i)}}else{const t=Number.isNaN(+o)?a:o;n=n.scale(a,t,1)}}),n}function X(t,e,n){const r=new U;return r.m41=t,r.e=t,r.m42=e,r.f=e,r.m43=n,r}function H(t,e,n){const r=new U,s=Math.PI/180,i=t*s,a=e*s,o=n*s,m=Math.cos(i),c=-Math.sin(i),u=Math.cos(a),l=-Math.sin(a),h=Math.cos(o),f=-Math.sin(o),y=u*h,x=-u*f;r.m11=y,r.a=y,r.m12=x,r.b=x,r.m13=l;const g=c*l*h+m*f;r.m21=g,r.c=g;const p=m*h-c*l*f;return r.m22=p,r.d=p,r.m23=-c*u,r.m31=c*f-m*l*h,r.m32=c*h+m*l*f,r.m33=m*u,r}function Y(t,e,n,r){const s=new U,i=r*(Math.PI/360),a=Math.sin(i),o=Math.cos(i),m=a*a,c=Math.sqrt(t*t+e*e+n*n);let u=t,l=e,h=n;0===c?(u=0,l=0,h=1):(u/=c,l/=c,h/=c);const f=u*u,y=l*l,x=h*h,g=1-2*(y+x)*m;s.m11=g,s.a=g;const p=2*(u*l*m+h*a*o);s.m12=p,s.b=p,s.m13=2*(u*h*m-l*a*o);const d=2*(l*u*m-h*a*o);s.m21=d,s.c=d;const M=1-2*(x+f)*m;return s.m22=M,s.d=M,s.m23=2*(l*h*m+u*a*o),s.m31=2*(h*u*m+l*a*o),s.m32=2*(h*l*m-u*a*o),s.m33=1-2*(f+y)*m,s}function F(t,e,n){const r=new U;return r.m11=t,r.a=t,r.m22=e,r.d=e,r.m33=n,r}function R(t){const e=new U,n=t*Math.PI/180,r=Math.tan(n);return e.m21=r,e.c=r,e}function B(t){const e=new U,n=t*Math.PI/180,r=Math.tan(n);return e.m12=r,e.b=r,e}function J(t,e){return O([e.m11*t.m11+e.m12*t.m21+e.m13*t.m31+e.m14*t.m41,e.m11*t.m12+e.m12*t.m22+e.m13*t.m32+e.m14*t.m42,e.m11*t.m13+e.m12*t.m23+e.m13*t.m33+e.m14*t.m43,e.m11*t.m14+e.m12*t.m24+e.m13*t.m34+e.m14*t.m44,e.m21*t.m11+e.m22*t.m21+e.m23*t.m31+e.m24*t.m41,e.m21*t.m12+e.m22*t.m22+e.m23*t.m32+e.m24*t.m42,e.m21*t.m13+e.m22*t.m23+e.m23*t.m33+e.m24*t.m43,e.m21*t.m14+e.m22*t.m24+e.m23*t.m34+e.m24*t.m44,e.m31*t.m11+e.m32*t.m21+e.m33*t.m31+e.m34*t.m41,e.m31*t.m12+e.m32*t.m22+e.m33*t.m32+e.m34*t.m42,e.m31*t.m13+e.m32*t.m23+e.m33*t.m33+e.m34*t.m43,e.m31*t.m14+e.m32*t.m24+e.m33*t.m34+e.m34*t.m44,e.m41*t.m11+e.m42*t.m21+e.m43*t.m31+e.m44*t.m41,e.m41*t.m12+e.m42*t.m22+e.m43*t.m32+e.m44*t.m42,e.m41*t.m13+e.m42*t.m23+e.m43*t.m33+e.m44*t.m43,e.m41*t.m14+e.m42*t.m24+e.m43*t.m34+e.m44*t.m44])}class U{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 n=[16,6].some(e=>e===t.length)?t:t[0];return e.setMatrixValue(n)}return e}set isIdentity(t){this.isIdentity=t}get isIdentity(){const t=this;return 1===t.m11&&0===t.m12&&0===t.m13&&0===t.m14&&0===t.m21&&1===t.m22&&0===t.m23&&0===t.m24&&0===t.m31&&0===t.m32&&1===t.m33&&0===t.m34&&0===t.m41&&0===t.m42&&0===t.m43&&1===t.m44}get is2D(){const t=this;return 0===t.m31&&0===t.m32&&1===t.m33&&0===t.m34&&0===t.m43&&1===t.m44}set is2D(t){this.is2D=t}setMatrixValue(t){return[Array,Float64Array,Float32Array].some(e=>t instanceof e)?O(t):"string"==typeof t&&t.length&&"none"!==t?D(t):"object"==typeof t?Q(t):this}toArray(){const t=this;let e;return e=t.is2D?[t.a,t.b,t.c,t.d,t.e,t.f]:[t.m11,t.m12,t.m13,t.m14,t.m21,t.m22,t.m23,t.m24,t.m31,t.m32,t.m33,t.m34,t.m41,t.m42,t.m43,t.m44],e.map(t=>Math.abs(t)<1e-6?0:(t*10**6>>0)/10**6)}toString(){const t=this.toArray();return`${this.is2D?"matrix":"matrix3d"}(${t})`}toJSON(){const{is2D:t,isIdentity:e}=this;return{...this,is2D:t,isIdentity:e}}multiply(t){return J(this,t)}translate(t,e,n){let r=e,s=n;return void 0===s&&(s=0),void 0===r&&(r=0),J(this,X(t,r,s))}scale(t,e,n){let r=e,s=n;return void 0===r&&(r=t),void 0===s&&(s=1),J(this,F(t,r,s))}rotate(t,e,n){let r=t,s=e,i=n;return void 0===s&&(s=0),void 0===i&&(i=r,r=0),J(this,H(r,s,i))}rotateAxisAngle(t,e,n,r){if([t,e,n,r].some(t=>Number.isNaN(t)))throw new TypeError("CSSMatrix: expecting 4 values");return J(this,Y(t,e,n,r))}skewX(t){return J(this,R(t))}skewY(t){return J(this,B(t))}transformPoint(t){let e=X(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,n=e.m11*t.x+e.m12*t.y+e.m13*t.z+e.m14*t.w,r=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,i=e.m41*t.x+e.m42*t.y+e.m43*t.z+e.m44*t.w;return{x:n/i,y:r/i,z:s/i,w:i}}}Object.assign(U,{Translate:X,Rotate:H,RotateAxisAngle:Y,Scale:F,SkewX:R,SkewY:B,Multiply:J,fromArray:O,fromMatrix:Q,fromString:D});function G(t,e,n){const[r,s]=e,[i,a,o]=n,m=t.transformPoint({x:r,y:s,z:0,w:1}),c=m.x-i,u=m.y-a,l=m.z-o;return[c*(Math.abs(o)/Math.abs(l))+i,u*(Math.abs(o)/Math.abs(l))+a]}function K(t,e){let n,r,s,i,a,o,m,u=0,l=0;const h=y(t),f=v(h),x=function(t){let e=new U;const{origin:n}=t,[r,s]=n,{translate:i}=t,{rotate:a}=t,{skew:o}=t,{scale:m}=t;return Array.isArray(i)&&i.every(t=>!Number.isNaN(+t))&&i.some(t=>0!==t)?e=e.translate(i[0]||0,i[1]||0,i[2]||0):"number"!=typeof i||Number.isNaN(+i)||(e=e.translate(i||0,0,0)),(a||o||m)&&(e=e.translate(r,s),Array.isArray(a)&&a.every(t=>!Number.isNaN(+t))&&a.some(t=>0!==t)?e=e.rotate(a[0],a[1],a[2]):"number"!=typeof a||Number.isNaN(+a)||(e=e.rotate(0,0,a)),Array.isArray(o)&&o.every(t=>!Number.isNaN(+t))&&o.some(t=>0!==t)?(e=o[0]?e.skewX(o[0]):e,e=o[1]?e.skewY(o[1]):e):"number"!=typeof o||Number.isNaN(+o)||(e=e.skewX(o||0)),Array.isArray(m)&&m.every(t=>!Number.isNaN(+t))&&m.some(t=>1!==t)?e=e.scale(m[0],m[1],m[2]):"number"!=typeof m||Number.isNaN(+m)||(e=e.scale(m||1,m||1,m||1)),e=e.translate(-r,-s)),e}(e),g=Object.keys(e),{origin:d}=e,{a:M,b:N,c:A,d:w,e:C,f:S}=x,k=[M,N,A,w,C,S],P={...b};let q=[],I=0,L="",V=[];const z=[];if(!x.isIdentity){for(n=0,s=h.length;n<s;n+=1){q=h[n],h[n]&&([L]=q),z[n]=L,"A"!==L||x.is2D&&["skewX","skewY"].find(t=>g.includes(t))||(q=T(f[n],P),h[n]=T(f[n],P),p(h,z,n),f[n]=T(f[n],P),p(f,z,n),s=Math.max(h.length,f.length)),q=f[n],I=q.length,P.x1=+q[I-2],P.y1=+q[I-1],P.x2=+q[I-4]||P.x1,P.y2=+q[I-3]||P.y1;const t={s:h[n],c:h[n][0],x:P.x1,y:P.y1};V=[...V,t]}return V.map(t=>{switch(L=t.c,q=t.s,L){case"A":return m=function(t,e,n,r){const s=Math.cos(r*Math.PI/180),i=Math.sin(r*Math.PI/180),a=[e*(t[0]*s+t[2]*i),e*(t[1]*s+t[3]*i),n*(-t[0]*i+t[2]*s),n*(-t[1]*i+t[3]*s)],o=a[0]*a[0]+a[2]*a[2],m=a[1]*a[1]+a[3]*a[3];let c=((a[0]-a[3])*(a[0]-a[3])+(a[2]+a[1])*(a[2]+a[1]))*((a[0]+a[3])*(a[0]+a[3])+(a[2]-a[1])*(a[2]-a[1]));const u=(o+m)/2;if(c<1e-9*u){const t=Math.sqrt(u);return{rx:t,ry:t,ax:0}}const l=a[0]*a[1]+a[2]*a[3];c=Math.sqrt(c);const h=u+c/2,f=u-c/2;let y,x,g=Math.abs(l)<1e-9&&Math.abs(h-m)<1e-9?90:Math.atan(Math.abs(l)>Math.abs(h-m)?(h-o)/l:l/(h-m)*180)/Math.PI;return g>=0?(y=Math.sqrt(h),x=Math.sqrt(f)):(g+=90,y=Math.sqrt(f),x=Math.sqrt(h)),{rx:y,ry:x,ax:g}}(k,q[1],q[2],q[3]),k[0]*k[3]-k[1]*k[2]<0&&(q[5]=q[5]?0:1),[a,o]=G(x,[+q[6],+q[7]],d),q=u===a&&l===o||m.rx<1e-9*m.ry||m.ry<1e-9*m.rx?["L",a,o]:[L,m.rx,m.ry,m.ax,q[4],q[5],a,o],u=a,l=o,q;case"L":case"H":case"V":return[a,o]=G(x,[t.x,t.y],d),u!==a&&l!==o?q=["L",a,o]:l===o?q=["H",a]:u===a&&(q=["V",o]),u=a,l=o,q;default:for(r=1,i=q.length;r<i;r+=2)[u,l]=G(x,[+q[r],+q[r+1]],d),q[r]=u,q[r+1]=l;return q}})}return c(h)}function W(t,e,n,r,s,i,a,o,m){const c=1-m;return{x:c**3*t+3*c**2*m*n+3*c*m**2*s+m**3*a,y:c**3*e+3*c**2*m*r+3*c*m**2*i+m**3*o}}function _(t,e,n,r,s,i,a,o,m){const c="number"==typeof m;let u=t,l=e,h=0,f=[t,e,h],y=[t,e],x=0;if(c&&m<.001)return{x:u,y:l};for(let g=0;g<=100;g+=1){if(x=g/100,({x:u,y:l}=W(t,e,n,r,s,i,a,o,x)),h+=P(y,[u,l]),y=[u,l],c&&h>=m){const t=(h-m)/(h-f[2]);return{x:y[0]*(1-t)+f[0]*t,y:y[1]*(1-t)+f[1]*t}}f=[u,l,h]}return c&&m>=h?{x:a,y:o}:h}function tt(t){if(!t)return{x:0,y:0,width:0,height:0,x2:0,y2:0,cx:0,cy:0,cz:0};const e=L(t);let n=0,r=0,s=[],i=[];e.forEach(t=>{const[e,a]=t.slice(-2).map(Number);if("M"===t[0])n=e,r=a,s.push(e),i.push(a);else{const o=function(t,e,n,r,s,i,a,o){let m=s-2*n+t-(a-2*s+n),c=2*(n-t)-2*(s-n),u=t-n,l=(-c+Math.sqrt(c*c-4*m*u))/2/m,h=(-c-Math.sqrt(c*c-4*m*u))/2/m;const f=[t,a],y=[e,o];let x=0,g=0;return Math.abs(l)>1e12&&(l=.5),Math.abs(h)>1e12&&(h=.5),l>0&&l<1&&(({x:x,y:g}=_(t,e,n,r,s,i,a,o,l)),f.push(x),y.push(g)),h>0&&h<1&&(({x:x,y:g}=_(t,e,n,r,s,i,a,o,h)),f.push(x),y.push(g)),m=i-2*r+e-(o-2*i+r),c=2*(r-e)-2*(i-r),u=e-r,l=(-c+Math.sqrt(c*c-4*m*u))/2/m,h=(-c-Math.sqrt(c*c-4*m*u))/2/m,Math.abs(l)>1e12&&(l=.5),Math.abs(h)>1e12&&(h=.5),l>0&&l<1&&(({x:x,y:g}=_(t,e,n,r,s,i,a,o,l)),f.push(x),y.push(g)),h>0&&h<1&&(({x:x,y:g}=_(t,e,n,r,s,i,a,o,h)),f.push(x),y.push(g)),{min:{x:Math.min(...f),y:Math.min(...y)},max:{x:Math.max(...f),y:Math.max(...y)}}}(...[n,r,...t.slice(1)]);s=[...s,o.min.x,o.max.x],i=[...i,o.min.y,o.max.y],n=e,r=a}});const a=Math.min(...s),o=Math.min(...i),m=Math.max(...s),c=Math.max(...i),u=m-a,l=c-o;return{width:u,height:l,x:a,y:o,x2:m,y2:c,cx:a+u/2,cy:o+l/2,cz:Math.max(u,l)+Math.min(u,l)/2}}Object.assign(U,{Version:"0.0.24"});class et{constructor(e,n){const r=n||{};this.segments=h(e);const s=tt(this.segments),{width:i,height:a,cx:o,cy:m,cz:c}=s;let{round:u,origin:l}=t;const{round:f,origin:y}=r;if("auto"===f){const t=(""+Math.floor(Math.max(i,a))).length;u=t>=4?0:4-t}else(Number.isInteger(f)&&f>=1||!1===f)&&(u=f);if(Array.isArray(y)&&y.length>=2){const[t,e,n]=y.map(Number);l=[Number.isNaN(t)?o:t,Number.isNaN(e)?m:e,n||c]}else l=[o,m,c];return this.round=u,this.origin=l,this}toAbsolute(){const{segments:t}=this;return this.segments=y(t),this}toRelative(){const{segments:t}=this;return this.segments=g(t),this}toCurve(){const{segments:t}=this;return this.segments=L(t),this}reverse(t){this.toAbsolute();const{segments:e}=this,n=j(this.toString()),r=n.length>1?n:0,s=r&&c(r).map((e,n)=>t?n?$(e):h(e):$(e));let i=[];return i=r?s.flat(1):t?e:$(e),this.segments=c(i),this}normalize(){const{segments:t}=this;return this.segments=v(t),this}optimize(){const{segments:t}=this;return this.segments=Z(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(n=>{e[n]=Array.isArray(t[n])?[...t[n]]:Number(t[n])});const{segments:n}=this,{origin:r}=e;if(r&&r.length>=2){const[t,n,s]=r.map(Number),[i,a,o]=this.origin;e.origin=[Number.isNaN(t)?i:t,Number.isNaN(n)?a:n,s||o]}else e.origin={...this.origin};return this.segments=K(n,e),this}flipX(){return this.transform({rotate:[180,0,0]}),this}flipY(){return this.transform({rotate:[0,180,0]}),this}toString(){return z(this.segments,this.round)}}function nt(t){let e=0,n=0,r=0;return L(t).map(t=>{switch(t[0]){case"M":return[,e,n]=t,0;default:return r=function(t,e,n,r,s,i,a,o){return 3*((o-e)*(n+s)-(a-t)*(r+i)+r*(t-s)-n*(e-i)+o*(s+t/3)-a*(i+e/3))/20}(e,n,...t.slice(1)),[e,n]=t.slice(-2),r}}).reduce((t,e)=>t+e,0)}function rt(t,e,n,r,s,i,a,o,m,c){const u=C(t,e,n,r,s,i,a,o,m),l="number"==typeof c;let[h,f]=[t,e];let y=0,x=[],g=[],p=0;if(l&&c<.001)return{x:h,y:f};for(let t=0,e=u.length;t<e;t+=6){if(x=u.slice(t,t+6),g=[h,f,...x],p=_(...g),l&&y+p>=c)return _(...g,c-y);y+=p,[h,f]=x.slice(-2)}return l&&c>=y?{x:o,y:m}:y}function st(t,e,n,r,s,i,a){const o=1-a;return{x:o**2*t+2*o*a*n+a**2*s,y:o**2*e+2*o*a*r+a**2*i}}function it(t,e,n,r,s,i,a){const o="number"==typeof a;let m=t,c=e,u=0,l=[t,e,u],h=[t,e],f=0;if(o&&a<.001)return{x:m,y:c};for(let y=0;y<=100;y+=1){if(f=y/100,({x:m,y:c}=st(t,e,n,r,s,i,f)),u+=P(h,[m,c]),h=[m,c],o&&u>=a){const t=(u-a)/(u-l[2]);return{x:h[0]*(1-t)+l[0]*t,y:h[1]*(1-t)+l[1]*t}}l=[m,c,u]}return o&&a>=u?{x:s,y:i}:u}function at(t,e){const n=N(v(t)),r="number"==typeof e;let s,i=0,a=!0,o=[],m="M",c=0,u=0,l=0,h=0,f=0;for(let t=0,y=n.length;t<y;t+=1){if(s=n[t],[m]=s,a="M"===m,o=a?o:[u,l,...s.slice(1)],a){if([,h,f]=s,r&&e<.001)return{x:h,y:f}}else if("L"===m){if(c=q(...o),r&&i+c>=e)return q(...o,e-i);i+=c}else if("A"===m){if(c=rt(...o),r&&i+c>=e)return rt(...o,e-i);i+=c}else if("C"===m){if(c=_(...o),r&&i+c>=e)return _(...o,e-i);i+=c}else if("Q"===m){if(c=it(...o),r&&i+c>=e)return it(...o,e-i);i+=c}else if("Z"===m){if(o=[u,l,h,f],c=q(...o),r&&i+c>=e)return q(...o,e-i);i+=c}[u,l]="Z"!==m?s.slice(-2):[h,f]}return r&&e>=i?{x:u,y:l}:i}function ot(t){return at(t)}function mt(t,e){return at(t,e)}function ct(t,e){const n=h(t),r=[];let s=[...n],i=ot(s),a=s.length-1,o=0,m=0,c=n[0];const[u,l]=c.slice(-2),f={x:u,y:l};if(a<=0||!e||!Number.isFinite(e))return{segment:c,index:0,length:m,point:f,lengthAtSegment:o};if(e>=i)return s=n.slice(0,-1),o=ot(s),m=i-o,{segment:n[a],index:a,length:m,lengthAtSegment:o};for(;a>0;)c=s[a],s=s.slice(0,-1),o=ot(s),m=i-o,i=o,r.push({segment:c,index:a,length:m,lengthAtSegment:o}),a-=1;return r.find(({lengthAtSegment:t})=>t<=e)}function ut(t,e){const n=N(h(t)),r=v(n),s=ot(n),i=t=>{const n=t.x-e.x,r=t.y-e.y;return n*n+r*r};let a=8,o={x:0,y:0},m=0,c=o,u=0,l=1/0;for(let t=0;t<=s;t+=a)o=mt(r,t),m=i(o),m<l&&(c=o,u=t,l=m);a/=2;let f={x:0,y:0},y=f,x=0,g=0,p=0,d=0;for(;a>.5;)x=u-a,f=mt(r,x),p=i(f),g=u+a,y=mt(r,g),d=i(y),x>=0&&p<l?(c=f,u=x,l=p):g<=s&&d<l?(c=y,u=g,l=d):a/=2;const M=ct(n,u);return{closest:c,distance:Math.sqrt(l),segment:M}}const lt={circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],rect:["width","height","x","y","rx","ry"],polygon:["points"],polyline:["points"],glyph:[]};const ht={CSSMatrix:U,parsePathString:h,isPathArray:l,isCurveArray:A,isAbsoluteArray:f,isRelativeArray:x,isNormalizedArray:M,isValidPath:function(t){if("string"!=typeof t)return!1;const e=new u(t);for(a(e);e.index<e.max&&!e.err.length;)m(e);return!e.err.length&&"mM".includes(e.segments[0][0])},pathToAbsolute:y,pathToRelative:g,pathToCurve:L,pathToString:z,getDrawDirection:function(t){return nt(L(t))>=0},getPathArea:nt,getPathBBox:tt,getTotalLength:ot,getPathLength:function(t){let e=0;return L(t).forEach((t,n,r)=>{const s="M"!==t[0]?[...r[n-1].slice(-2),...t.slice(1)]:[];e+="M"===t[0]?0:_(...s)}),e},getPointAtLength:mt,getPointAtPathLength:function(t,e){return mt(t,e)},getClosestPoint:function(t,e){return ut(t,e).closest},getSegmentOfPoint:function(t,e){const n=ut(t,e),{segment:r}=n;return void 0!==r?r.segment:null},getPropertiesAtPoint:ut,getPropertiesAtLength:ct,getSegmentAtLength:function(t,e){const n=ct(t,e),{segment:r}=void 0!==n?n:{segment:null};return r},isPointInStroke:function(t,e){const{distance:n}=ut(t,e);return Math.abs(n)<.01},clonePath:c,splitPath:j,fixPath:N,roundPath:V,optimizePath:Z,reverseCurve:function(t){const e=t.slice(1).map((e,n,r)=>n?[...r[n-1].slice(-2),...e.slice(1)]:[...t[0].slice(1),...e.slice(1)]).map(t=>t.map((e,n)=>t[t.length-n-2*(1-n%2)])).reverse();return[["M",...e[0].slice(0,2)],...e.map(t=>["C",...t.slice(2)])]},reversePath:$,normalizePath:v,transformPath:K,shapeToPath:function(e,n){const r=Object.keys(lt),s=e instanceof Element;if(s&&!r.some(t=>e.tagName===t))throw TypeError(`shapeToPath: "${e}" is not SVGElement`);const i=document.createElementNS("http://www.w3.org/2000/svg","path"),a=s?e.tagName:e.type,o={};if(o.type=a,s){const t=lt[a];t.forEach(t=>{o[t]=e.getAttribute(t)}),Object.values(e.attributes).forEach(({name:e,value:n})=>{t.includes(e)||i.setAttribute(e,n)})}else Object.assign(o,e);let m;const{round:c}=t;return"circle"===a?m=z(function(t){const{cx:e,cy:n,r:r}=t;return[["M",e-r,n],["a",r,r,0,1,0,2*r,0],["a",r,r,0,1,0,-2*r,0]]}(o),c):"ellipse"===a?m=z(function(t){const{cx:e,cy:n,rx:r,ry:s}=t;return[["M",e-r,n],["a",r,s,0,1,0,2*r,0],["a",r,s,0,1,0,-2*r,0]]}(o),c):["polyline","polygon"].includes(a)?m=z(function(t){const e=[],n=t.points.trim().split(/[\s|,]/).map(Number);let r=0;for(;r<n.length;)e.push([r?"L":"M",n[r],n[r+1]]),r+=2;return"polygon"===t.type?[...e,["z"]]:e}(o),c):"rect"===a?m=z(function(t){const e=+t.x||0,n=+t.y||0,r=+t.width,s=+t.height;let i=+t.rx,a=+t.ry;return i||a?(i=i||a,a=a||i,2*i>r&&(i-=(2*i-r)/2),2*a>s&&(a-=(2*a-s)/2),[["M",e+i,n],["h",r-2*i],["s",i,0,i,a],["v",s-2*a],["s",0,a,-i,a],["h",2*i-r],["s",-i,0,-i,-a],["v",2*a-s],["s",0,-a,i,-a]]):[["M",e,n],["h",r],["v",s],["H",e],["Z"]]}(o),c):"line"===a?m=z(function(t){const{x1:e,y1:n,x2:r,y2:s}=t;return[["M",e,n],["L",r,s]]}(o),c):"glyph"===a&&(m=s?e.getAttribute("d"):e.type),!!m&&(i.setAttribute("d",m),n&&s&&(e.before(i,e),e.remove()),i)},options:t};Object.assign(et,ht,{Version:"0.1.25"});export{et as default};
|