svg-path-commander 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.cjs +224 -0
- package/.lgtm.yml +9 -0
- package/.prettierrc.json +15 -0
- package/README.md +1 -1
- package/cypress/e2e/svg-path-commander.spec.ts +826 -0
- package/cypress/fixtures/shapeObjects.js +11 -0
- package/cypress/fixtures/shapes.js +104 -0
- package/cypress/fixtures/simpleShapes.js +75 -0
- package/cypress/plugins/esbuild-istanbul.ts +50 -0
- package/cypress/plugins/tsCompile.ts +34 -0
- package/cypress/support/commands.ts +37 -0
- package/cypress/support/e2e.ts +21 -0
- package/cypress/test.html +36 -0
- package/cypress.config.ts +29 -0
- package/dist/svg-path-commander.cjs +1 -1
- package/dist/svg-path-commander.cjs.map +1 -1
- package/dist/svg-path-commander.js +1 -1
- package/dist/svg-path-commander.js.map +1 -1
- package/dist/svg-path-commander.mjs +325 -276
- package/dist/svg-path-commander.mjs.map +1 -1
- package/dts.config.ts +15 -0
- package/package.json +7 -17
- package/tsconfig.json +28 -0
- package/vite.config.ts +38 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var SVGPathCommander=function(){"use strict";const _={origin:[0,0,0],round:4},T="SVGPathCommander Error",F={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},Nt=e=>{let t=e.pathValue[e.segmentStart],n=t.toLowerCase();const{data:r}=e;for(;r.length>=F[n]&&(n==="m"&&r.length>2?(e.segments.push([t,...r.splice(0,2)]),n="l",t=t==="m"?"l":"L"):e.segments.push([t,...r.splice(0,F[n])]),!!F[n]););},Ut=e=>{const{index:t,pathValue:n}=e,r=n.charCodeAt(t);if(r===48){e.param=0,e.index+=1;return}if(r===49){e.param=1,e.index+=1;return}e.err=`${T}: invalid Arc flag "${n[t]}", expecting 0 or 1 at index ${t}`},z=e=>e>=48&&e<=57,E="Invalid path value",Kt=e=>{const{max:t,pathValue:n,index:r}=e;let s=r,i=!1,o=!1,l=!1,c=!1,a;if(s>=t){e.err=`${T}: ${E} at index ${s}, "pathValue" is missing param`;return}if(a=n.charCodeAt(s),(a===43||a===45)&&(s+=1,a=n.charCodeAt(s)),!z(a)&&a!==46){e.err=`${T}: ${E} at index ${s}, "${n[s]}" is not a number`;return}if(a!==46){if(i=a===48,s+=1,a=n.charCodeAt(s),i&&s<t&&a&&z(a)){e.err=`${T}: ${E} at index ${r}, "${n[r]}" illegal number`;return}for(;s<t&&z(n.charCodeAt(s));)s+=1,o=!0;a=n.charCodeAt(s)}if(a===46){for(c=!0,s+=1;z(n.charCodeAt(s));)s+=1,l=!0;a=n.charCodeAt(s)}if(a===101||a===69){if(c&&!o&&!l){e.err=`${T}: ${E} at index ${s}, "${n[s]}" invalid float exponent`;return}if(s+=1,a=n.charCodeAt(s),(a===43||a===45)&&(s+=1),s<t&&z(n.charCodeAt(s)))for(;s<t&&z(n.charCodeAt(s));)s+=1;else{e.err=`${T}: ${E} at index ${s}, "${n[s]}" invalid integer exponent`;return}}e.index=s,e.param=+e.pathValue.slice(r,s)},_t=e=>[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279,10,13,8232,8233,32,9,11,12,160].includes(e),Q=e=>{const{pathValue:t,max:n}=e;for(;e.index<n&&_t(t.charCodeAt(e.index));)e.index+=1},Wt=e=>{switch(e|32){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}},te=e=>z(e)||e===43||e===45||e===46,ee=e=>(e|32)===97,Ct=e=>{const{max:t,pathValue:n,index:r}=e,s=n.charCodeAt(r),i=F[n[r].toLowerCase()];if(e.segmentStart=r,!Wt(s)){e.err=`${T}: ${E} "${n[r]}" is not a path command`;return}if(e.index+=1,Q(e),e.data=[],!i){Nt(e);return}for(;;){for(let o=i;o>0;o-=1){if(ee(s)&&(o===3||o===4)?Ut(e):Kt(e),e.err.length)return;e.data.push(e.param),Q(e),e.index<t&&n.charCodeAt(e.index)===44&&(e.index+=1,Q(e))}if(e.index>=e.max||!te(n.charCodeAt(e.index)))break}Nt(e)};class vt{constructor(t){this.segments=[],this.pathValue=t,this.max=t.length,this.index=0,this.param=0,this.segmentStart=0,this.data=[],this.err=""}}const W=e=>Array.isArray(e)&&e.every(t=>{const n=t[0].toLowerCase();return F[n]===t.length-1&&"achlmqstvz".includes(n)}),D=e=>{if(W(e))return[...e];const t=new vt(e);for(Q(t);t.index<t.max&&!t.err.length;)Ct(t);if(t.err&&t.err.length)throw TypeError(t.err);return t.segments},ne=e=>{const t=e.length;let n=-1,r,s=e[t-1],i=0;for(;++n<t;)r=s,s=e[n],i+=r[1]*s[0]-r[0]*s[1];return i/2},H=(e,t)=>Math.sqrt((e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])),se=e=>e.reduce((t,n,r)=>r?t+H(e[r-1],n):0,0);var re=Object.defineProperty,ie=(e,t,n)=>t in e?re(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,C=(e,t,n)=>(ie(e,typeof t!="symbol"?t+"":t,n),n);const oe={a:1,b:0,c:0,d:1,e:0,f:0,m11:1,m12:0,m13:0,m14:0,m21:0,m22:1,m23:0,m24:0,m31:0,m32:0,m33:1,m34:0,m41:0,m42:0,m43:0,m44:1,is2D:!0,isIdentity:!0},wt=e=>(e instanceof Float64Array||e instanceof Float32Array||Array.isArray(e)&&e.every(t=>typeof t=="number"))&&[6,16].some(t=>e.length===t),St=e=>e instanceof DOMMatrix||e instanceof P||typeof e=="object"&&Object.keys(oe).every(t=>e&&t in e),Y=e=>{const t=new P,n=Array.from(e);if(!wt(n))throw TypeError(`CSSMatrix: "${n.join(",")}" must be an array with 6/16 numbers.`);if(n.length===16){const[r,s,i,o,l,c,a,m,f,y,g,h,u,x,d,p]=n;t.m11=r,t.a=r,t.m21=l,t.c=l,t.m31=f,t.m41=u,t.e=u,t.m12=s,t.b=s,t.m22=c,t.d=c,t.m32=y,t.m42=x,t.f=x,t.m13=i,t.m23=a,t.m33=g,t.m43=d,t.m14=o,t.m24=m,t.m34=h,t.m44=p}else if(n.length===6){const[r,s,i,o,l,c]=n;t.m11=r,t.a=r,t.m12=s,t.b=s,t.m21=i,t.c=i,t.m22=o,t.d=o,t.m41=l,t.e=l,t.m42=c,t.f=c}return t},Tt=e=>{if(St(e))return Y([e.m11,e.m12,e.m13,e.m14,e.m21,e.m22,e.m23,e.m24,e.m31,e.m32,e.m33,e.m34,e.m41,e.m42,e.m43,e.m44]);throw TypeError(`CSSMatrix: "${JSON.stringify(e)}" is not a DOMMatrix / CSSMatrix / JSON compatible object.`)},Lt=e=>{if(typeof e!="string")throw TypeError(`CSSMatrix: "${JSON.stringify(e)}" is not a string.`);const t=String(e).replace(/\s/g,"");let n=new P;const r=`CSSMatrix: invalid transform string "${e}"`;return t.split(")").filter(s=>s).forEach(s=>{const[i,o]=s.split("(");if(!o)throw TypeError(r);const l=o.split(",").map(h=>h.includes("rad")?parseFloat(h)*(180/Math.PI):parseFloat(h)),[c,a,m,f]=l,y=[c,a,m],g=[c,a,m,f];if(i==="perspective"&&c&&[a,m].every(h=>h===void 0))n.m34=-1/c;else if(i.includes("matrix")&&[6,16].includes(l.length)&&l.every(h=>!Number.isNaN(+h))){const h=l.map(u=>Math.abs(u)<1e-6?0:u);n=n.multiply(Y(h))}else if(i==="translate3d"&&y.every(h=>!Number.isNaN(+h)))n=n.translate(c,a,m);else if(i==="translate"&&c&&m===void 0)n=n.translate(c,a||0,0);else if(i==="rotate3d"&&g.every(h=>!Number.isNaN(+h))&&f)n=n.rotateAxisAngle(c,a,m,f);else if(i==="rotate"&&c&&[a,m].every(h=>h===void 0))n=n.rotate(0,0,c);else if(i==="scale3d"&&y.every(h=>!Number.isNaN(+h))&&y.some(h=>h!==1))n=n.scale(c,a,m);else if(i==="scale"&&!Number.isNaN(c)&&c!==1&&m===void 0){const h=Number.isNaN(+a)?c:a;n=n.scale(c,h,1)}else if(i==="skew"&&(c||!Number.isNaN(c)&&a)&&m===void 0)n=n.skew(c,a||0);else if(["translate","rotate","scale","skew"].some(h=>i.includes(h))&&/[XYZ]/.test(i)&&c&&[a,m].every(h=>h===void 0))if(i==="skewX"||i==="skewY")n=n[i](c);else{const h=i.replace(/[XYZ]/,""),u=i.replace(h,""),x=["X","Y","Z"].indexOf(u),d=h==="scale"?1:0,p=[x===0?c:d,x===1?c:d,x===2?c:d];n=n[h](...p)}else throw TypeError(r)}),n},ft=(e,t)=>t?[e.a,e.b,e.c,e.d,e.e,e.f]:[e.m11,e.m12,e.m13,e.m14,e.m21,e.m22,e.m23,e.m24,e.m31,e.m32,e.m33,e.m34,e.m41,e.m42,e.m43,e.m44],kt=(e,t,n)=>{const r=new P;return r.m41=e,r.e=e,r.m42=t,r.f=t,r.m43=n,r},qt=(e,t,n)=>{const r=new P,s=Math.PI/180,i=e*s,o=t*s,l=n*s,c=Math.cos(i),a=-Math.sin(i),m=Math.cos(o),f=-Math.sin(o),y=Math.cos(l),g=-Math.sin(l),h=m*y,u=-m*g;r.m11=h,r.a=h,r.m12=u,r.b=u,r.m13=f;const x=a*f*y+c*g;r.m21=x,r.c=x;const d=c*y-a*f*g;return r.m22=d,r.d=d,r.m23=-a*m,r.m31=a*g-c*f*y,r.m32=a*y+c*f*g,r.m33=c*m,r},$t=(e,t,n,r)=>{const s=new P,i=Math.sqrt(e*e+t*t+n*n);if(i===0)return s;const o=e/i,l=t/i,c=n/i,a=r*(Math.PI/360),m=Math.sin(a),f=Math.cos(a),y=m*m,g=o*o,h=l*l,u=c*c,x=1-2*(h+u)*y;s.m11=x,s.a=x;const d=2*(o*l*y+c*m*f);s.m12=d,s.b=d,s.m13=2*(o*c*y-l*m*f);const p=2*(l*o*y-c*m*f);s.m21=p,s.c=p;const A=1-2*(u+g)*y;return s.m22=A,s.d=A,s.m23=2*(l*c*y+o*m*f),s.m31=2*(c*o*y+l*m*f),s.m32=2*(c*l*y-o*m*f),s.m33=1-2*(g+h)*y,s},Vt=(e,t,n)=>{const r=new P;return r.m11=e,r.a=e,r.m22=t,r.d=t,r.m33=n,r},tt=(e,t)=>{const n=new P;if(e){const r=e*Math.PI/180,s=Math.tan(r);n.m21=s,n.c=s}if(t){const r=t*Math.PI/180,s=Math.tan(r);n.m12=s,n.b=s}return n},Ot=e=>tt(e,0),zt=e=>tt(0,e),L=(e,t)=>{const n=t.m11*e.m11+t.m12*e.m21+t.m13*e.m31+t.m14*e.m41,r=t.m11*e.m12+t.m12*e.m22+t.m13*e.m32+t.m14*e.m42,s=t.m11*e.m13+t.m12*e.m23+t.m13*e.m33+t.m14*e.m43,i=t.m11*e.m14+t.m12*e.m24+t.m13*e.m34+t.m14*e.m44,o=t.m21*e.m11+t.m22*e.m21+t.m23*e.m31+t.m24*e.m41,l=t.m21*e.m12+t.m22*e.m22+t.m23*e.m32+t.m24*e.m42,c=t.m21*e.m13+t.m22*e.m23+t.m23*e.m33+t.m24*e.m43,a=t.m21*e.m14+t.m22*e.m24+t.m23*e.m34+t.m24*e.m44,m=t.m31*e.m11+t.m32*e.m21+t.m33*e.m31+t.m34*e.m41,f=t.m31*e.m12+t.m32*e.m22+t.m33*e.m32+t.m34*e.m42,y=t.m31*e.m13+t.m32*e.m23+t.m33*e.m33+t.m34*e.m43,g=t.m31*e.m14+t.m32*e.m24+t.m33*e.m34+t.m34*e.m44,h=t.m41*e.m11+t.m42*e.m21+t.m43*e.m31+t.m44*e.m41,u=t.m41*e.m12+t.m42*e.m22+t.m43*e.m32+t.m44*e.m42,x=t.m41*e.m13+t.m42*e.m23+t.m43*e.m33+t.m44*e.m43,d=t.m41*e.m14+t.m42*e.m24+t.m43*e.m34+t.m44*e.m44;return Y([n,r,s,i,o,l,c,a,m,f,y,g,h,u,x,d])};class P{constructor(t){return this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0,this.m11=1,this.m12=0,this.m13=0,this.m14=0,this.m21=0,this.m22=1,this.m23=0,this.m24=0,this.m31=0,this.m32=0,this.m33=1,this.m34=0,this.m41=0,this.m42=0,this.m43=0,this.m44=1,t?this.setMatrixValue(t):this}get isIdentity(){return this.m11===1&&this.m12===0&&this.m13===0&&this.m14===0&&this.m21===0&&this.m22===1&&this.m23===0&&this.m24===0&&this.m31===0&&this.m32===0&&this.m33===1&&this.m34===0&&this.m41===0&&this.m42===0&&this.m43===0&&this.m44===1}get is2D(){return this.m31===0&&this.m32===0&&this.m33===1&&this.m34===0&&this.m43===0&&this.m44===1}setMatrixValue(t){return typeof t=="string"&&t.length&&t!=="none"?Lt(t):Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array?Y(t):typeof t=="object"?Tt(t):this}toFloat32Array(t){return Float32Array.from(ft(this,t))}toFloat64Array(t){return Float64Array.from(ft(this,t))}toString(){const{is2D:t}=this,n=this.toFloat64Array(t).join(", ");return`${t?"matrix":"matrix3d"}(${n})`}toJSON(){const{is2D:t,isIdentity:n}=this;return{...this,is2D:t,isIdentity:n}}multiply(t){return L(this,t)}translate(t,n,r){const s=t;let i=n,o=r;return typeof i>"u"&&(i=0),typeof o>"u"&&(o=0),L(this,kt(s,i,o))}scale(t,n,r){const s=t;let i=n,o=r;return typeof i>"u"&&(i=t),typeof o>"u"&&(o=1),L(this,Vt(s,i,o))}rotate(t,n,r){let s=t,i=n||0,o=r||0;return typeof t=="number"&&typeof n>"u"&&typeof r>"u"&&(o=s,s=0,i=0),L(this,qt(s,i,o))}rotateAxisAngle(t,n,r,s){if([t,n,r,s].some(i=>Number.isNaN(+i)))throw new TypeError("CSSMatrix: expecting 4 values");return L(this,$t(t,n,r,s))}skewX(t){return L(this,Ot(t))}skewY(t){return L(this,zt(t))}skew(t,n){return L(this,tt(t,n))}transformPoint(t){const n=this.m11*t.x+this.m21*t.y+this.m31*t.z+this.m41*t.w,r=this.m12*t.x+this.m22*t.y+this.m32*t.z+this.m42*t.w,s=this.m13*t.x+this.m23*t.y+this.m33*t.z+this.m43*t.w,i=this.m14*t.x+this.m24*t.y+this.m34*t.z+this.m44*t.w;return t instanceof DOMPoint?new DOMPoint(n,r,s,i):{x:n,y:r,z:s,w:i}}}C(P,"Translate",kt),C(P,"Rotate",qt),C(P,"RotateAxisAngle",$t),C(P,"Scale",Vt),C(P,"SkewX",Ot),C(P,"SkewY",zt),C(P,"Skew",tt),C(P,"Multiply",L),C(P,"fromArray",Y),C(P,"fromMatrix",Tt),C(P,"fromString",Lt),C(P,"toArray",ft),C(P,"isCompatibleArray",wt),C(P,"isCompatibleObject",St);const yt=e=>W(e)&&e.every(([t])=>t===t.toUpperCase()),Z=e=>{if(yt(e))return[...e];const t=D(e);let n=0,r=0,s=0,i=0;return t.map(o=>{const l=o.slice(1).map(Number),[c]=o,a=c.toUpperCase();if(c==="M")return[n,r]=l,s=n,i=r,["M",n,r];let m=[];if(c!==a)if(a==="A")m=[a,l[0],l[1],l[2],l[3],l[4],l[5]+n,l[6]+r];else if(a==="V")m=[a,l[0]+r];else if(a==="H")m=[a,l[0]+n];else{const f=l.map((y,g)=>y+(g%2?r:n));m=[a,...f]}else m=[a,...l];return a==="Z"?(n=s,r=i):a==="H"?[,n]=m:a==="V"?[,r]=m:([n,r]=m.slice(-2),a==="M"&&(s=n,i=r)),m})},ae=(e,t)=>{const[n]=e,{x1:r,y1:s,x2:i,y2:o}=t,l=e.slice(1).map(Number);let c=e;if("TQ".includes(n)||(t.qx=null,t.qy=null),n==="H")c=["L",e[1],s];else if(n==="V")c=["L",r,e[1]];else if(n==="S"){const a=r*2-i,m=s*2-o;t.x1=a,t.y1=m,c=["C",a,m,...l]}else if(n==="T"){const a=r*2-(t.qx?t.qx:0),m=s*2-(t.qy?t.qy:0);t.qx=a,t.qy=m,c=["Q",a,m,...l]}else if(n==="Q"){const[a,m]=l;t.qx=a,t.qy=m}return c},gt=e=>yt(e)&&e.every(([t])=>"ACLMQZ".includes(t)),et={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},$=e=>{if(gt(e))return[...e];const t=Z(e),n={...et},r=t.length;for(let s=0;s<r;s+=1){t[s],t[s]=ae(t[s],n);const i=t[s],o=i.length;n.x1=+i[o-2],n.y1=+i[o-1],n.x2=+i[o-4]||n.x1,n.y2=+i[o-3]||n.y1}return t},V=(e,t,n)=>{const[r,s]=e,[i,o]=t;return[r+(i-r)*n,s+(o-s)*n]},xt=(e,t,n,r,s)=>{const i=H([e,t],[n,r]);let o={x:0,y:0};if(typeof s=="number")if(s<=0)o={x:e,y:t};else if(s>=i)o={x:n,y:r};else{const[l,c]=V([e,t],[n,r],s/i);o={x:l,y:c}}return{length:i,point:o,min:{x:Math.min(e,n),y:Math.min(t,r)},max:{x:Math.max(e,n),y:Math.max(t,r)}}},It=(e,t)=>{const{x:n,y:r}=e,{x:s,y:i}=t,o=n*s+r*i,l=Math.sqrt((n**2+r**2)*(s**2+i**2));return(n*i-r*s<0?-1:1)*Math.acos(o/l)},ce=(e,t,n,r,s,i,o,l,c,a)=>{const{abs:m,sin:f,cos:y,sqrt:g,PI:h}=Math;let u=m(n),x=m(r);const p=(s%360+360)%360*(h/180);if(e===l&&t===c)return{x:e,y:t};if(u===0||x===0)return xt(e,t,l,c,a).point;const A=(e-l)/2,b=(t-c)/2,M={x:y(p)*A+f(p)*b,y:-f(p)*A+y(p)*b},v=M.x**2/u**2+M.y**2/x**2;v>1&&(u*=g(v),x*=g(v));const O=u**2*x**2-u**2*M.y**2-x**2*M.x**2,B=u**2*M.y**2+x**2*M.x**2;let X=O/B;X=X<0?0:X;const lt=(i!==o?1:-1)*g(X),S={x:lt*(u*M.y/x),y:lt*(-(x*M.x)/u)},mt={x:y(p)*S.x-f(p)*S.y+(e+l)/2,y:f(p)*S.x+y(p)*S.y+(t+c)/2},J={x:(M.x-S.x)/u,y:(M.y-S.y)/x},ht=It({x:1,y:0},J),ut={x:(-M.x-S.x)/u,y:(-M.y-S.y)/x};let k=It(J,ut);!o&&k>0?k-=2*h:o&&k<0&&(k+=2*h),k%=2*h;const q=ht+k*a,U=u*y(q),K=x*f(q);return{x:y(p)*U-f(p)*K+mt.x,y:f(p)*U+y(p)*K+mt.y}},le=(e,t,n,r,s,i,o,l,c,a)=>{const m=typeof a=="number";let f=e,y=t,g=0,h=[f,y,g],u=[f,y],x=0,d={x:0,y:0},p=[{x:f,y}];m&&a<=0&&(d={x:f,y});const A=300;for(let b=0;b<=A;b+=1){if(x=b/A,{x:f,y}=ce(e,t,n,r,s,i,o,l,c,x),p=[...p,{x:f,y}],g+=H(u,[f,y]),u=[f,y],m&&g>a&&a>h[2]){const M=(g-a)/(g-h[2]);d={x:u[0]*(1-M)+h[0]*M,y:u[1]*(1-M)+h[1]*M}}h=[f,y,g]}return m&&a>=g&&(d={x:l,y:c}),{length:g,point:d,min:{x:Math.min(...p.map(b=>b.x)),y:Math.min(...p.map(b=>b.y))},max:{x:Math.max(...p.map(b=>b.x)),y:Math.max(...p.map(b=>b.y))}}},me=(e,t,n,r,s,i,o,l,c)=>{const a=1-c;return{x:a**3*e+3*a**2*c*n+3*a*c**2*s+c**3*o,y:a**3*t+3*a**2*c*r+3*a*c**2*i+c**3*l}},he=(e,t,n,r,s,i,o,l,c)=>{const a=typeof c=="number";let m=e,f=t,y=0,g=[m,f,y],h=[m,f],u=0,x={x:0,y:0},d=[{x:m,y:f}];a&&c<=0&&(x={x:m,y:f});const p=300;for(let A=0;A<=p;A+=1){if(u=A/p,{x:m,y:f}=me(e,t,n,r,s,i,o,l,u),d=[...d,{x:m,y:f}],y+=H(h,[m,f]),h=[m,f],a&&y>c&&c>g[2]){const b=(y-c)/(y-g[2]);x={x:h[0]*(1-b)+g[0]*b,y:h[1]*(1-b)+g[1]*b}}g=[m,f,y]}return a&&c>=y&&(x={x:o,y:l}),{length:y,point:x,min:{x:Math.min(...d.map(A=>A.x)),y:Math.min(...d.map(A=>A.y))},max:{x:Math.max(...d.map(A=>A.x)),y:Math.max(...d.map(A=>A.y))}}},ue=(e,t,n,r,s,i,o)=>{const l=1-o;return{x:l**2*e+2*l*o*n+o**2*s,y:l**2*t+2*l*o*r+o**2*i}},fe=(e,t,n,r,s,i,o)=>{const l=typeof o=="number";let c=e,a=t,m=0,f=[c,a,m],y=[c,a],g=0,h={x:0,y:0},u=[{x:c,y:a}];l&&o<=0&&(h={x:c,y:a});const x=300;for(let d=0;d<=x;d+=1){if(g=d/x,{x:c,y:a}=ue(e,t,n,r,s,i,g),u=[...u,{x:c,y:a}],m+=H(y,[c,a]),y=[c,a],l&&m>o&&o>f[2]){const p=(m-o)/(m-f[2]);h={x:y[0]*(1-p)+f[0]*p,y:y[1]*(1-p)+f[1]*p}}f=[c,a,m]}return l&&o>=m&&(h={x:s,y:i}),{length:m,point:h,min:{x:Math.min(...u.map(d=>d.x)),y:Math.min(...u.map(d=>d.y))},max:{x:Math.max(...u.map(d=>d.x)),y:Math.max(...u.map(d=>d.y))}}},nt=(e,t)=>{const n=$(e),r=typeof t=="number";let s,i=[],o,l=0,c=0,a=0,m=0,f,y=[],g=[],h=0,u={x:0,y:0},x=u,d=u,p=u,A=0;for(let b=0,M=n.length;b<M;b+=1)f=n[b],[o]=f,s=o==="M",i=s?i:[l,c,...f.slice(1)],s?([,a,m]=f,u={x:a,y:m},x=u,h=0,r&&t<.001&&(p=u)):o==="L"?{length:h,min:u,max:x,point:d}=xt(...i,(t||0)-A):o==="A"?{length:h,min:u,max:x,point:d}=le(...i,(t||0)-A):o==="C"?{length:h,min:u,max:x,point:d}=he(...i,(t||0)-A):o==="Q"?{length:h,min:u,max:x,point:d}=fe(...i,(t||0)-A):o==="Z"&&(i=[l,c,a,m],{length:h,min:u,max:x,point:d}=xt(...i,(t||0)-A)),r&&A<t&&A+h>=t&&(p=d),g=[...g,x],y=[...y,u],A+=h,[l,c]=o!=="Z"?f.slice(-2):[a,m];return r&&t>=A&&(p={x:l,y:c}),{length:A,point:p,min:{x:Math.min(...y.map(b=>b.x)),y:Math.min(...y.map(b=>b.y))},max:{x:Math.max(...g.map(b=>b.x)),y:Math.max(...g.map(b=>b.y))}}},jt=e=>{if(!e)return{x:0,y:0,width:0,height:0,x2:0,y2:0,cx:0,cy:0,cz:0};const{min:{x:t,y:n},max:{x:r,y:s}}=nt(e),i=r-t,o=s-n;return{width:i,height:o,x:t,y:n,x2:r,y2:s,cx:t+i/2,cy:n+o/2,cz:Math.max(i,o)+Math.min(i,o)/2}},dt=(e,t,n)=>{if(e[n].length>7){e[n].shift();const r=e[n];let s=n;for(;r.length;)t[n]="A",e.splice(s+=1,0,["C",...r.splice(0,6)]);e.splice(n,1)}},Et=e=>gt(e)&&e.every(([t])=>"MC".includes(t)),st=(e,t,n)=>{const r=e*Math.cos(n)-t*Math.sin(n),s=e*Math.sin(n)+t*Math.cos(n);return{x:r,y:s}},Dt=(e,t,n,r,s,i,o,l,c,a)=>{let m=e,f=t,y=n,g=r,h=l,u=c;const x=Math.PI*120/180,d=Math.PI/180*(+s||0);let p=[],A,b,M,v,O;if(a)[b,M,v,O]=a;else{A=st(m,f,-d),m=A.x,f=A.y,A=st(h,u,-d),h=A.x,u=A.y;const N=(m-h)/2,w=(f-u)/2;let j=N*N/(y*y)+w*w/(g*g);j>1&&(j=Math.sqrt(j),y*=j,g*=j);const At=y*y,Pt=g*g,Jt=(i===o?-1:1)*Math.sqrt(Math.abs((At*Pt-At*w*w-Pt*N*N)/(At*w*w+Pt*N*N)));v=Jt*y*w/g+(m+h)/2,O=Jt*-g*N/y+(f+u)/2,b=Math.asin(((f-O)/g*10**9>>0)/10**9),M=Math.asin(((u-O)/g*10**9>>0)/10**9),b=m<v?Math.PI-b:b,M=h<v?Math.PI-M:M,b<0&&(b=Math.PI*2+b),M<0&&(M=Math.PI*2+M),o&&b>M&&(b-=Math.PI*2),!o&&M>b&&(M-=Math.PI*2)}let B=M-b;if(Math.abs(B)>x){const N=M,w=h,j=u;M=b+x*(o&&M>b?1:-1),h=v+y*Math.cos(M),u=O+g*Math.sin(M),p=Dt(h,u,y,g,s,0,o,w,j,[M,N,v,O])}B=M-b;const X=Math.cos(b),lt=Math.sin(b),S=Math.cos(M),mt=Math.sin(M),J=Math.tan(B/4),ht=4/3*y*J,ut=4/3*g*J,k=[m,f],q=[m+ht*lt,f-ut*X],U=[h+ht*mt,u-ut*S],K=[h,u];if(q[0]=2*k[0]-q[0],q[1]=2*k[1]-q[1],a)return[...q,...U,...K,...p];p=[...q,...U,...K,...p];const Mt=[];for(let N=0,w=p.length;N<w;N+=1)Mt[N]=N%2?st(p[N-1],p[N],d).y:st(p[N],p[N+1],d).x;return Mt},ye=(e,t,n,r,s,i)=>{const o=.3333333333333333,l=2/3;return[o*e+l*n,o*t+l*r,o*s+l*n,o*i+l*r,s,i]},Zt=(e,t,n,r)=>[...V([e,t],[n,r],.5),n,r,n,r],rt=(e,t)=>{const[n]=e,r=e.slice(1).map(Number),[s,i]=r;let o;const{x1:l,y1:c,x:a,y:m}=t;return"TQ".includes(n)||(t.qx=null,t.qy=null),n==="M"?(t.x=s,t.y=i,e):n==="A"?(o=[l,c,...r],["C",...Dt(...o)]):n==="Q"?(t.qx=s,t.qy=i,o=[l,c,...r],["C",...ye(...o)]):n==="L"?["C",...Zt(l,c,s,i)]:n==="Z"?["C",...Zt(l,c,a,m)]:e},it=e=>{if(Et(e))return[...e];const t=$(e),n={...et},r=[];let s="",i=t.length;for(let o=0;o<i;o+=1){[s]=t[o],r[o]=s,t[o]=rt(t[o],n),dt(t,r,o),i=t.length;const l=t[o],c=l.length;n.x1=+l[c-2],n.y1=+l[c-1],n.x2=+l[c-4]||n.x1,n.y2=+l[c-3]||n.y1}return t},ge=(e,t,n,r,s,i,o,l)=>3*((l-t)*(n+s)-(o-e)*(r+i)+r*(e-s)-n*(t-i)+l*(s+e/3)-o*(i+t/3))/20,Rt=e=>{let t=0,n=0,r=0;return it(e).map(s=>{switch(s[0]){case"M":return[,t,n]=s,0;default:return r=ge(t,n,...s.slice(1)),[t,n]=s.slice(-2),r}}).reduce((s,i)=>s+i,0)},R=e=>nt(e).length,xe=e=>Rt(it(e))>=0,G=(e,t)=>nt(e,t).point,pt=(e,t)=>{const n=D(e);let r=[...n],s=R(r),i=r.length-1,o=0,l=0,c=n[0];const[a,m]=c.slice(-2),f={x:a,y:m};if(i<=0||!t||!Number.isFinite(t))return{segment:c,index:0,length:l,point:f,lengthAtSegment:o};if(t>=s)return r=n.slice(0,-1),o=R(r),l=s-o,{segment:n[i],index:i,length:l,lengthAtSegment:o};const y=[];for(;i>0;)c=r[i],r=r.slice(0,-1),o=R(r),l=s-o,s=o,y.push({segment:c,index:i,length:l,lengthAtSegment:o}),i-=1;return y.find(({lengthAtSegment:g})=>g<=t)},ot=(e,t)=>{const n=D(e),r=$(n),s=R(n),i=b=>{const M=b.x-t.x,v=b.y-t.y;return M*M+v*v};let o=8,l,c={x:0,y:0},a=0,m=0,f=1/0;for(let b=0;b<=s;b+=o)l=G(r,b),a=i(l),a<f&&(c=l,m=b,f=a);o/=2;let y,g,h=0,u=0,x=0,d=0;for(;o>.5;)h=m-o,y=G(r,h),x=i(y),u=m+o,g=G(r,u),d=i(g),h>=0&&x<f?(c=y,m=h,f=x):u<=s&&d<f?(c=g,m=u,f=d):o/=2;const p=pt(n,m),A=Math.sqrt(f);return{closest:c,distance:A,segment:p}},de=(e,t)=>ot(e,t).closest,pe=(e,t)=>ot(e,t).segment,be=(e,t)=>pt(e,t).segment,Me=(e,t)=>{const{distance:n}=ot(e,t);return Math.abs(n)<.001},Xt=e=>{if(typeof e!="string")return!1;const t=new vt(e);for(Q(t);t.index<t.max&&!t.err.length;)Ct(t);return!t.err.length&&"mM".includes(t.segments[0][0])},Ft=e=>W(e)&&e.slice(1).every(([t])=>t===t.toLowerCase()),at=(e,t)=>{let{round:n}=_;if(t==="off"||n==="off")return[...e];n=typeof t=="number"&&t>=0?t:n;const r=typeof n=="number"&&n>=1?10**n:1;return e.map(s=>{const i=s.slice(1).map(Number).map(o=>n?Math.round(o*r)/r:Math.round(o));return[s[0],...i]})},I=(e,t)=>at(e,t).map(n=>n[0]+n.slice(1).join(" ")).join(""),Qt={line:["x1","y1","x2","y2"],circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],rect:["width","height","x","y","rx","ry"],polygon:["points"],polyline:["points"],glyph:["d"]},Ae=e=>{const{x1:t,y1:n,x2:r,y2:s}=e;return[["M",t,n],["L",r,s]]},Pe=e=>{const t=[],n=(e.points||"").trim().split(/[\s|,]/).map(Number);let r=0;for(;r<n.length;)t.push([r?"L":"M",n[r],n[r+1]]),r+=2;return e.type==="polygon"?[...t,["z"]]:t},Ne=e=>{const{cx:t,cy:n,r}=e;return[["M",t-r,n],["a",r,r,0,1,0,2*r,0],["a",r,r,0,1,0,-2*r,0]]},Ce=e=>{const{cx:t,cy:n,rx:r,ry:s}=e;return[["M",t-r,n],["a",r,s,0,1,0,2*r,0],["a",r,s,0,1,0,-2*r,0]]},ve=e=>{const t=+e.x||0,n=+e.y||0,r=+e.width,s=+e.height;let i=+e.rx,o=+e.ry;return i||o?(i=i||o,o=o||i,i*2>r&&(i-=(i*2-r)/2),o*2>s&&(o-=(o*2-s)/2),[["M",t+i,n],["h",r-i*2],["s",i,0,i,o],["v",s-o*2],["s",0,o,-i,o],["h",-r+i*2],["s",-i,0,-i,-o],["v",-s+o*2],["s",0,-o,i,-o]]):[["M",t,n],["h",r],["v",s],["H",t],["Z"]]},we=(e,t,n)=>{const r=n||document,s=r.defaultView||window,i=Object.keys(Qt),o=e instanceof s.SVGElement,l=o?e.tagName:null;if(l&&i.every(h=>l!==h))throw TypeError(`${T}: "${l}" is not SVGElement`);const c=r.createElementNS("http://www.w3.org/2000/svg","path"),a=o?l:e.type,m=Qt[a],f={type:a};o?(m.forEach(h=>{m.includes(h)&&(f[h]=e.getAttribute(h))}),Object.values(e.attributes).forEach(({name:h,value:u})=>{m.includes(h)||c.setAttribute(h,u)})):(Object.assign(f,e),Object.keys(f).forEach(h=>{!m.includes(h)&&h!=="type"&&c.setAttribute(h.replace(/[A-Z]/g,u=>`-${u.toLowerCase()}`),f[h])}));let y="";const g=_.round;return a==="circle"?y=I(Ne(f),g):a==="ellipse"?y=I(Ce(f),g):["polyline","polygon"].includes(a)?y=I(Pe(f),g):a==="rect"?y=I(ve(f),g):a==="line"?y=I(Ae(f),g):a==="glyph"&&(y=o?e.getAttribute("d"):e.d),Xt(y)?(c.setAttribute("d",y),t&&o&&(e.before(c,e),e.remove()),c):!1},Ht=e=>{const t=[];let n,r=-1;return e.forEach(s=>{s[0]==="M"?(n=[s],r+=1):n=[...n,s],t[r]=n}),t},bt=e=>{if(Ft(e))return[...e];const t=D(e);let n=0,r=0,s=0,i=0;return t.map(o=>{const l=o.slice(1).map(Number),[c]=o,a=c.toLowerCase();if(c==="M")return[n,r]=l,s=n,i=r,["M",n,r];let m=[];if(c!==a)if(a==="a")m=[a,l[0],l[1],l[2],l[3],l[4],l[5]-n,l[6]-r];else if(a==="v")m=[a,l[0]-r];else if(a==="h")m=[a,l[0]-n];else{const y=l.map((g,h)=>g-(h%2?r:n));m=[a,...y]}else c==="m"&&(s=l[0]+n,i=l[1]+r),m=[a,...l];const f=m.length;return a==="z"?(n=s,r=i):a==="h"?n+=m[1]:a==="v"?r+=m[1]:(n+=m[f-2],r+=m[f-1]),m})},Se=(e,t,n,r)=>{const[s]=e,i=d=>Math.round(d*10**4)/10**4,o=e.slice(1).map(d=>+d),l=t.slice(1).map(d=>+d),{x1:c,y1:a,x2:m,y2:f,x:y,y:g}=n;let h=e;const[u,x]=l.slice(-2);if("TQ".includes(s)||(n.qx=null,n.qy=null),["V","H","S","T","Z"].includes(s))h=[s,...o];else if(s==="L")i(y)===i(u)?h=["V",x]:i(g)===i(x)&&(h=["H",u]);else if(s==="C"){const[d,p]=l;"CS".includes(r)&&(i(d)===i(c*2-m)&&i(p)===i(a*2-f)||i(c)===i(m*2-y)&&i(a)===i(f*2-g))&&(h=["S",...l.slice(-4)]),n.x1=d,n.y1=p}else if(s==="Q"){const[d,p]=l;n.qx=d,n.qy=p,"QT".includes(r)&&(i(d)===i(c*2-m)&&i(p)===i(a*2-f)||i(c)===i(m*2-y)&&i(a)===i(f*2-g))&&(h=["T",...l.slice(-2)])}return h},Yt=(e,t)=>{const n=Z(e),r=$(n),s={...et},i=[],o=n.length;let l="",c="",a=0,m=0,f=0,y=0;for(let u=0;u<o;u+=1){[l]=n[u],i[u]=l,u&&(c=i[u-1]),n[u]=Se(n[u],r[u],s,c);const x=n[u],d=x.length;switch(s.x1=+x[d-2],s.y1=+x[d-1],s.x2=+x[d-4]||s.x1,s.y2=+x[d-3]||s.y1,l){case"Z":a=f,m=y;break;case"H":[,a]=x;break;case"V":[,m]=x;break;default:[a,m]=x.slice(-2).map(Number),l==="M"&&(f=a,y=m)}s.x=a,s.y=m}const g=at(n,t),h=at(bt(n),t);return g.map((u,x)=>x?u.join("").length<h[x].join("").length?u:h[x]:u)},Te=e=>{const t=e.slice(1).map((n,r,s)=>r?[...s[r-1].slice(-2),...n.slice(1)]:[...e[0].slice(1),...n.slice(1)]).map(n=>n.map((r,s)=>n[n.length-s-2*(1-s%2)])).reverse();return[["M",...t[0].slice(0,2)],...t.map(n=>["C",...n.slice(2)])]},ct=e=>{const t=Z(e),n=t.slice(-1)[0][0]==="Z",r=$(t).map((s,i)=>{const[o,l]=s.slice(-2).map(Number);return{seg:t[i],n:s,c:t[i][0],x:o,y:l}}).map((s,i,o)=>{const l=s.seg,c=s.n,a=i&&o[i-1],m=o[i+1],f=s.c,y=o.length,g=i?o[i-1].x:o[y-1].x,h=i?o[i-1].y:o[y-1].y;let u=[];switch(f){case"M":u=n?["Z"]:[f,g,h];break;case"A":u=[f,...l.slice(1,-3),l[5]===1?0:1,g,h];break;case"C":m&&m.c==="S"?u=["S",l[1],l[2],g,h]:u=[f,l[3],l[4],l[1],l[2],g,h];break;case"S":a&&"CS".includes(a.c)&&(!m||m.c!=="S")?u=["C",c[3],c[4],c[1],c[2],g,h]:u=[f,c[1],c[2],g,h];break;case"Q":m&&m.c==="T"?u=["T",g,h]:u=[f,...l.slice(1,-2),g,h];break;case"T":a&&"QT".includes(a.c)&&(!m||m.c!=="T")?u=["Q",c[1],c[2],g,h]:u=[f,g,h];break;case"Z":u=["M",g,h];break;case"H":u=[f,g];break;case"V":u=[f,h];break;default:u=[f,...l.slice(1,-2),g,h]}return u});return n?r.reverse():[r[0],...r.slice(1).reverse()]},Le=e=>{let t=new P;const{origin:n}=e,[r,s]=n,{translate:i}=e,{rotate:o}=e,{skew:l}=e,{scale:c}=e;return Array.isArray(i)&&i.length>=2&&i.every(a=>!Number.isNaN(+a))&&i.some(a=>a!==0)?t=t.translate(...i):typeof i=="number"&&!Number.isNaN(i)&&(t=t.translate(i)),(o||l||c)&&(t=t.translate(r,s),Array.isArray(o)&&o.length>=2&&o.every(a=>!Number.isNaN(+a))&&o.some(a=>a!==0)?t=t.rotate(...o):typeof o=="number"&&!Number.isNaN(o)&&(t=t.rotate(o)),Array.isArray(l)&&l.length===2&&l.every(a=>!Number.isNaN(+a))&&l.some(a=>a!==0)?(t=l[0]?t.skewX(l[0]):t,t=l[1]?t.skewY(l[1]):t):typeof l=="number"&&!Number.isNaN(l)&&(t=t.skewX(l)),Array.isArray(c)&&c.length>=2&&c.every(a=>!Number.isNaN(+a))&&c.some(a=>a!==1)?t=t.scale(...c):typeof c=="number"&&!Number.isNaN(c)&&(t=t.scale(c)),t=t.translate(-r,-s)),t},ke=(e,t)=>{let n=P.Translate(...t.slice(0,-1));return[,,,n.m44]=t,n=e.multiply(n),[n.m41,n.m42,n.m43,n.m44]},Gt=(e,t,n)=>{const[r,s,i]=n,[o,l,c]=ke(e,[...t,0,1]),a=o-r,m=l-s,f=c-i;return[a*(Math.abs(i)/Math.abs(f)||1)+r,m*(Math.abs(i)/Math.abs(f)||1)+s]},Bt=(e,t)=>{let n=0,r=0,s,i,o,l,c,a;const m=Z(e),f=t&&Object.keys(t);if(!t||f&&!f.length)return[...m];const y=$(m);if(!t.origin){const{origin:M}=_;Object.assign(t,{origin:M})}const g=Le(t),{origin:h}=t,u={...et};let x=[],d=0,p="",A=[];const b=[];if(!g.isIdentity){for(s=0,o=m.length;s<o;s+=1){x=m[s],m[s]&&([p]=x),b[s]=p,p==="A"&&(x=rt(y[s],u),m[s]=rt(y[s],u),dt(m,b,s),y[s]=rt(y[s],u),dt(y,b,s),o=Math.max(m.length,y.length)),x=y[s],d=x.length,u.x1=+x[d-2],u.y1=+x[d-1],u.x2=+x[d-4]||u.x1,u.y2=+x[d-3]||u.y1;const M={s:m[s],c:m[s][0],x:u.x1,y:u.y1};A=[...A,M]}return A.map(M=>{if(p=M.c,x=M.s,p==="L"||p==="H"||p==="V")return[c,a]=Gt(g,[M.x,M.y],h),n!==c&&r!==a?x=["L",c,a]:r===a?x=["H",c]:n===c&&(x=["V",a]),n=c,r=a,x;for(i=1,l=x.length;i<l;i+=2)[n,r]=Gt(g,[+x[i],+x[i+1]],h),x[i]=n,x[i+1]=r;return x})}return[...m]},qe=e=>{const n=e.slice(0,2),r=e.slice(2,4),s=e.slice(4,6),i=e.slice(6,8),o=V(n,r,.5),l=V(r,s,.5),c=V(s,i,.5),a=V(o,l,.5),m=V(l,c,.5),f=V(a,m,.5);return[["C",...o,...a,...f],["C",...m,...c,...i]]};class $e{static CSSMatrix=P;static getPathBBox=jt;static getPathArea=Rt;static getTotalLength=R;static getDrawDirection=xe;static getPointAtLength=G;static pathLengthFactory=nt;static getPropertiesAtLength=pt;static getPropertiesAtPoint=ot;static polygonLength=se;static polygonArea=ne;static getClosestPoint=de;static getSegmentOfPoint=pe;static getSegmentAtLength=be;static isPointInStroke=Me;static isValidPath=Xt;static isPathArray=W;static isAbsoluteArray=yt;static isRelativeArray=Ft;static isCurveArray=Et;static isNormalizedArray=gt;static shapeToPath=we;static parsePathString=D;static roundPath=at;static splitPath=Ht;static splitCubic=qe;static optimizePath=Yt;static reverseCurve=Te;static reversePath=ct;static normalizePath=$;static transformPath=Bt;static pathToAbsolute=Z;static pathToRelative=bt;static pathToCurve=it;static pathToString=I;constructor(t,n){const r=n||{},s=typeof t>"u";if(s||!t.length)throw TypeError(`${T}: "pathValue" is ${s?"undefined":"empty"}`);const i=D(t);this.segments=i;const{width:o,height:l,cx:c,cy:a,cz:m}=this.getBBox(),{round:f,origin:y}=r;let g;if(f==="auto"){const u=`${Math.floor(Math.max(o,l))}`.length;g=u>=4?0:4-u}else Number.isInteger(f)||f==="off"?g=f:g=_.round;let h;if(Array.isArray(y)&&y.length>=2){const[u,x,d]=y.map(Number);h=[Number.isNaN(u)?c:u,Number.isNaN(x)?a:x,Number.isNaN(d)?m:d]}else h=[c,a,m];return this.round=g,this.origin=h,this}getBBox(){return jt(this.segments)}getTotalLength(){return R(this.segments)}getPointAtLength(t){return G(this.segments,t)}toAbsolute(){const{segments:t}=this;return this.segments=Z(t),this}toRelative(){const{segments:t}=this;return this.segments=bt(t),this}toCurve(){const{segments:t}=this;return this.segments=it(t),this}reverse(t){this.toAbsolute();const{segments:n}=this,r=Ht(n),s=r.length>1?r:!1,i=s?[...s].map((l,c)=>t?c?ct(l):[...l]:ct(l)):[...n];let o=[];return s?o=i.flat(1):o=t?n:ct(n),this.segments=[...o],this}normalize(){const{segments:t}=this;return this.segments=$(t),this}optimize(){const{segments:t}=this;return this.segments=Yt(t,this.round),this}transform(t){if(!t||typeof t!="object"||typeof t=="object"&&!["translate","rotate","skew","scale"].some(c=>c in t))return this;const{segments:n,origin:[r,s,i]}=this,o={};for(const[c,a]of Object.entries(t))c==="skew"&&Array.isArray(a)||(c==="rotate"||c==="translate"||c==="origin"||c==="scale")&&Array.isArray(a)?o[c]=a.map(Number):c!=="origin"&&typeof Number(a)=="number"&&(o[c]=Number(a));const{origin:l}=o;if(Array.isArray(l)&&l.length>=2){const[c,a,m]=l.map(Number);o.origin=[Number.isNaN(c)?r:c,Number.isNaN(a)?s:a,m||i]}else o.origin=[r,s,i];return this.segments=Bt(n,o),this}flipX(){return this.transform({rotate:[0,180,0]}),this}flipY(){return this.transform({rotate:[180,0,0]}),this}toString(){return I(this.segments,this.round)}}return $e}();
|
|
1
|
+
var SVGPathCommander=function(){"use strict";const _={origin:[0,0,0],round:4},T="SVGPathCommander Error",F={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},Ct=e=>{let t=e.pathValue[e.segmentStart],n=t.toLowerCase();const{data:r}=e;for(;r.length>=F[n]&&(n==="m"&&r.length>2?(e.segments.push([t,...r.splice(0,2)]),n="l",t=t==="m"?"l":"L"):e.segments.push([t,...r.splice(0,F[n])]),!!F[n]););},Kt=e=>{const{index:t,pathValue:n}=e,r=n.charCodeAt(t);if(r===48){e.param=0,e.index+=1;return}if(r===49){e.param=1,e.index+=1;return}e.err=`${T}: invalid Arc flag "${n[t]}", expecting 0 or 1 at index ${t}`},z=e=>e>=48&&e<=57,E="Invalid path value",_t=e=>{const{max:t,pathValue:n,index:r}=e;let s=r,i=!1,o=!1,l=!1,c=!1,a;if(s>=t){e.err=`${T}: ${E} at index ${s}, "pathValue" is missing param`;return}if(a=n.charCodeAt(s),(a===43||a===45)&&(s+=1,a=n.charCodeAt(s)),!z(a)&&a!==46){e.err=`${T}: ${E} at index ${s}, "${n[s]}" is not a number`;return}if(a!==46){if(i=a===48,s+=1,a=n.charCodeAt(s),i&&s<t&&a&&z(a)){e.err=`${T}: ${E} at index ${r}, "${n[r]}" illegal number`;return}for(;s<t&&z(n.charCodeAt(s));)s+=1,o=!0;a=n.charCodeAt(s)}if(a===46){for(c=!0,s+=1;z(n.charCodeAt(s));)s+=1,l=!0;a=n.charCodeAt(s)}if(a===101||a===69){if(c&&!o&&!l){e.err=`${T}: ${E} at index ${s}, "${n[s]}" invalid float exponent`;return}if(s+=1,a=n.charCodeAt(s),(a===43||a===45)&&(s+=1),s<t&&z(n.charCodeAt(s)))for(;s<t&&z(n.charCodeAt(s));)s+=1;else{e.err=`${T}: ${E} at index ${s}, "${n[s]}" invalid integer exponent`;return}}e.index=s,e.param=+e.pathValue.slice(r,s)},Wt=e=>[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279,10,13,8232,8233,32,9,11,12,160].includes(e),Q=e=>{const{pathValue:t,max:n}=e;for(;e.index<n&&Wt(t.charCodeAt(e.index));)e.index+=1},te=e=>{switch(e|32){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}},ee=e=>z(e)||e===43||e===45||e===46,ne=e=>(e|32)===97,vt=e=>{const{max:t,pathValue:n,index:r}=e,s=n.charCodeAt(r),i=F[n[r].toLowerCase()];if(e.segmentStart=r,!te(s)){e.err=`${T}: ${E} "${n[r]}" is not a path command`;return}if(e.index+=1,Q(e),e.data=[],!i){Ct(e);return}for(;;){for(let o=i;o>0;o-=1){if(ne(s)&&(o===3||o===4)?Kt(e):_t(e),e.err.length)return;e.data.push(e.param),Q(e),e.index<t&&n.charCodeAt(e.index)===44&&(e.index+=1,Q(e))}if(e.index>=e.max||!ee(n.charCodeAt(e.index)))break}Ct(e)};class wt{constructor(t){this.segments=[],this.pathValue=t,this.max=t.length,this.index=0,this.param=0,this.segmentStart=0,this.data=[],this.err=""}}const W=e=>Array.isArray(e)&&e.every(t=>{const n=t[0].toLowerCase();return F[n]===t.length-1&&"achlmqstvz".includes(n)}),D=e=>{if(W(e))return[...e];const t=new wt(e);for(Q(t);t.index<t.max&&!t.err.length;)vt(t);if(t.err&&t.err.length)throw TypeError(t.err);return t.segments},se=e=>{const t=e.length;let n=-1,r,s=e[t-1],i=0;for(;++n<t;)r=s,s=e[n],i+=r[1]*s[0]-r[0]*s[1];return i/2},H=(e,t)=>Math.sqrt((e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])),re=e=>e.reduce((t,n,r)=>r?t+H(e[r-1],n):0,0);var ie=Object.defineProperty,oe=(e,t,n)=>t in e?ie(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,C=(e,t,n)=>(oe(e,typeof t!="symbol"?t+"":t,n),n);const ae={a:1,b:0,c:0,d:1,e:0,f:0,m11:1,m12:0,m13:0,m14:0,m21:0,m22:1,m23:0,m24:0,m31:0,m32:0,m33:1,m34:0,m41:0,m42:0,m43:0,m44:1,is2D:!0,isIdentity:!0},St=e=>(e instanceof Float64Array||e instanceof Float32Array||Array.isArray(e)&&e.every(t=>typeof t=="number"))&&[6,16].some(t=>e.length===t),Tt=e=>e instanceof DOMMatrix||e instanceof P||typeof e=="object"&&Object.keys(ae).every(t=>e&&t in e),Y=e=>{const t=new P,n=Array.from(e);if(!St(n))throw TypeError(`CSSMatrix: "${n.join(",")}" must be an array with 6/16 numbers.`);if(n.length===16){const[r,s,i,o,l,c,a,m,f,y,g,h,u,x,d,p]=n;t.m11=r,t.a=r,t.m21=l,t.c=l,t.m31=f,t.m41=u,t.e=u,t.m12=s,t.b=s,t.m22=c,t.d=c,t.m32=y,t.m42=x,t.f=x,t.m13=i,t.m23=a,t.m33=g,t.m43=d,t.m14=o,t.m24=m,t.m34=h,t.m44=p}else if(n.length===6){const[r,s,i,o,l,c]=n;t.m11=r,t.a=r,t.m12=s,t.b=s,t.m21=i,t.c=i,t.m22=o,t.d=o,t.m41=l,t.e=l,t.m42=c,t.f=c}return t},Lt=e=>{if(Tt(e))return Y([e.m11,e.m12,e.m13,e.m14,e.m21,e.m22,e.m23,e.m24,e.m31,e.m32,e.m33,e.m34,e.m41,e.m42,e.m43,e.m44]);throw TypeError(`CSSMatrix: "${JSON.stringify(e)}" is not a DOMMatrix / CSSMatrix / JSON compatible object.`)},kt=e=>{if(typeof e!="string")throw TypeError(`CSSMatrix: "${JSON.stringify(e)}" is not a string.`);const t=String(e).replace(/\s/g,"");let n=new P;const r=`CSSMatrix: invalid transform string "${e}"`;return t.split(")").filter(s=>s).forEach(s=>{const[i,o]=s.split("(");if(!o)throw TypeError(r);const l=o.split(",").map(h=>h.includes("rad")?parseFloat(h)*(180/Math.PI):parseFloat(h)),[c,a,m,f]=l,y=[c,a,m],g=[c,a,m,f];if(i==="perspective"&&c&&[a,m].every(h=>h===void 0))n.m34=-1/c;else if(i.includes("matrix")&&[6,16].includes(l.length)&&l.every(h=>!Number.isNaN(+h))){const h=l.map(u=>Math.abs(u)<1e-6?0:u);n=n.multiply(Y(h))}else if(i==="translate3d"&&y.every(h=>!Number.isNaN(+h)))n=n.translate(c,a,m);else if(i==="translate"&&c&&m===void 0)n=n.translate(c,a||0,0);else if(i==="rotate3d"&&g.every(h=>!Number.isNaN(+h))&&f)n=n.rotateAxisAngle(c,a,m,f);else if(i==="rotate"&&c&&[a,m].every(h=>h===void 0))n=n.rotate(0,0,c);else if(i==="scale3d"&&y.every(h=>!Number.isNaN(+h))&&y.some(h=>h!==1))n=n.scale(c,a,m);else if(i==="scale"&&!Number.isNaN(c)&&c!==1&&m===void 0){const h=Number.isNaN(+a)?c:a;n=n.scale(c,h,1)}else if(i==="skew"&&(c||!Number.isNaN(c)&&a)&&m===void 0)n=n.skew(c,a||0);else if(["translate","rotate","scale","skew"].some(h=>i.includes(h))&&/[XYZ]/.test(i)&&c&&[a,m].every(h=>h===void 0))if(i==="skewX"||i==="skewY")n=n[i](c);else{const h=i.replace(/[XYZ]/,""),u=i.replace(h,""),x=["X","Y","Z"].indexOf(u),d=h==="scale"?1:0,p=[x===0?c:d,x===1?c:d,x===2?c:d];n=n[h](...p)}else throw TypeError(r)}),n},ft=(e,t)=>t?[e.a,e.b,e.c,e.d,e.e,e.f]:[e.m11,e.m12,e.m13,e.m14,e.m21,e.m22,e.m23,e.m24,e.m31,e.m32,e.m33,e.m34,e.m41,e.m42,e.m43,e.m44],qt=(e,t,n)=>{const r=new P;return r.m41=e,r.e=e,r.m42=t,r.f=t,r.m43=n,r},$t=(e,t,n)=>{const r=new P,s=Math.PI/180,i=e*s,o=t*s,l=n*s,c=Math.cos(i),a=-Math.sin(i),m=Math.cos(o),f=-Math.sin(o),y=Math.cos(l),g=-Math.sin(l),h=m*y,u=-m*g;r.m11=h,r.a=h,r.m12=u,r.b=u,r.m13=f;const x=a*f*y+c*g;r.m21=x,r.c=x;const d=c*y-a*f*g;return r.m22=d,r.d=d,r.m23=-a*m,r.m31=a*g-c*f*y,r.m32=a*y+c*f*g,r.m33=c*m,r},Vt=(e,t,n,r)=>{const s=new P,i=Math.sqrt(e*e+t*t+n*n);if(i===0)return s;const o=e/i,l=t/i,c=n/i,a=r*(Math.PI/360),m=Math.sin(a),f=Math.cos(a),y=m*m,g=o*o,h=l*l,u=c*c,x=1-2*(h+u)*y;s.m11=x,s.a=x;const d=2*(o*l*y+c*m*f);s.m12=d,s.b=d,s.m13=2*(o*c*y-l*m*f);const p=2*(l*o*y-c*m*f);s.m21=p,s.c=p;const A=1-2*(u+g)*y;return s.m22=A,s.d=A,s.m23=2*(l*c*y+o*m*f),s.m31=2*(c*o*y+l*m*f),s.m32=2*(c*l*y-o*m*f),s.m33=1-2*(g+h)*y,s},Ot=(e,t,n)=>{const r=new P;return r.m11=e,r.a=e,r.m22=t,r.d=t,r.m33=n,r},tt=(e,t)=>{const n=new P;if(e){const r=e*Math.PI/180,s=Math.tan(r);n.m21=s,n.c=s}if(t){const r=t*Math.PI/180,s=Math.tan(r);n.m12=s,n.b=s}return n},zt=e=>tt(e,0),It=e=>tt(0,e),L=(e,t)=>{const n=t.m11*e.m11+t.m12*e.m21+t.m13*e.m31+t.m14*e.m41,r=t.m11*e.m12+t.m12*e.m22+t.m13*e.m32+t.m14*e.m42,s=t.m11*e.m13+t.m12*e.m23+t.m13*e.m33+t.m14*e.m43,i=t.m11*e.m14+t.m12*e.m24+t.m13*e.m34+t.m14*e.m44,o=t.m21*e.m11+t.m22*e.m21+t.m23*e.m31+t.m24*e.m41,l=t.m21*e.m12+t.m22*e.m22+t.m23*e.m32+t.m24*e.m42,c=t.m21*e.m13+t.m22*e.m23+t.m23*e.m33+t.m24*e.m43,a=t.m21*e.m14+t.m22*e.m24+t.m23*e.m34+t.m24*e.m44,m=t.m31*e.m11+t.m32*e.m21+t.m33*e.m31+t.m34*e.m41,f=t.m31*e.m12+t.m32*e.m22+t.m33*e.m32+t.m34*e.m42,y=t.m31*e.m13+t.m32*e.m23+t.m33*e.m33+t.m34*e.m43,g=t.m31*e.m14+t.m32*e.m24+t.m33*e.m34+t.m34*e.m44,h=t.m41*e.m11+t.m42*e.m21+t.m43*e.m31+t.m44*e.m41,u=t.m41*e.m12+t.m42*e.m22+t.m43*e.m32+t.m44*e.m42,x=t.m41*e.m13+t.m42*e.m23+t.m43*e.m33+t.m44*e.m43,d=t.m41*e.m14+t.m42*e.m24+t.m43*e.m34+t.m44*e.m44;return Y([n,r,s,i,o,l,c,a,m,f,y,g,h,u,x,d])};class P{constructor(t){return this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0,this.m11=1,this.m12=0,this.m13=0,this.m14=0,this.m21=0,this.m22=1,this.m23=0,this.m24=0,this.m31=0,this.m32=0,this.m33=1,this.m34=0,this.m41=0,this.m42=0,this.m43=0,this.m44=1,t?this.setMatrixValue(t):this}get isIdentity(){return this.m11===1&&this.m12===0&&this.m13===0&&this.m14===0&&this.m21===0&&this.m22===1&&this.m23===0&&this.m24===0&&this.m31===0&&this.m32===0&&this.m33===1&&this.m34===0&&this.m41===0&&this.m42===0&&this.m43===0&&this.m44===1}get is2D(){return this.m31===0&&this.m32===0&&this.m33===1&&this.m34===0&&this.m43===0&&this.m44===1}setMatrixValue(t){return typeof t=="string"&&t.length&&t!=="none"?kt(t):Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array?Y(t):typeof t=="object"?Lt(t):this}toFloat32Array(t){return Float32Array.from(ft(this,t))}toFloat64Array(t){return Float64Array.from(ft(this,t))}toString(){const{is2D:t}=this,n=this.toFloat64Array(t).join(", ");return`${t?"matrix":"matrix3d"}(${n})`}toJSON(){const{is2D:t,isIdentity:n}=this;return{...this,is2D:t,isIdentity:n}}multiply(t){return L(this,t)}translate(t,n,r){const s=t;let i=n,o=r;return typeof i>"u"&&(i=0),typeof o>"u"&&(o=0),L(this,qt(s,i,o))}scale(t,n,r){const s=t;let i=n,o=r;return typeof i>"u"&&(i=t),typeof o>"u"&&(o=1),L(this,Ot(s,i,o))}rotate(t,n,r){let s=t,i=n||0,o=r||0;return typeof t=="number"&&typeof n>"u"&&typeof r>"u"&&(o=s,s=0,i=0),L(this,$t(s,i,o))}rotateAxisAngle(t,n,r,s){if([t,n,r,s].some(i=>Number.isNaN(+i)))throw new TypeError("CSSMatrix: expecting 4 values");return L(this,Vt(t,n,r,s))}skewX(t){return L(this,zt(t))}skewY(t){return L(this,It(t))}skew(t,n){return L(this,tt(t,n))}transformPoint(t){const n=this.m11*t.x+this.m21*t.y+this.m31*t.z+this.m41*t.w,r=this.m12*t.x+this.m22*t.y+this.m32*t.z+this.m42*t.w,s=this.m13*t.x+this.m23*t.y+this.m33*t.z+this.m43*t.w,i=this.m14*t.x+this.m24*t.y+this.m34*t.z+this.m44*t.w;return t instanceof DOMPoint?new DOMPoint(n,r,s,i):{x:n,y:r,z:s,w:i}}}C(P,"Translate",qt),C(P,"Rotate",$t),C(P,"RotateAxisAngle",Vt),C(P,"Scale",Ot),C(P,"SkewX",zt),C(P,"SkewY",It),C(P,"Skew",tt),C(P,"Multiply",L),C(P,"fromArray",Y),C(P,"fromMatrix",Lt),C(P,"fromString",kt),C(P,"toArray",ft),C(P,"isCompatibleArray",St),C(P,"isCompatibleObject",Tt);var yt=P;const gt=e=>W(e)&&e.every(([t])=>t===t.toUpperCase()),Z=e=>{if(gt(e))return[...e];const t=D(e);let n=0,r=0,s=0,i=0;return t.map(o=>{const l=o.slice(1).map(Number),[c]=o,a=c.toUpperCase();if(c==="M")return[n,r]=l,s=n,i=r,["M",n,r];let m=[];if(c!==a)if(a==="A")m=[a,l[0],l[1],l[2],l[3],l[4],l[5]+n,l[6]+r];else if(a==="V")m=[a,l[0]+r];else if(a==="H")m=[a,l[0]+n];else{const f=l.map((y,g)=>y+(g%2?r:n));m=[a,...f]}else m=[a,...l];return a==="Z"?(n=s,r=i):a==="H"?[,n]=m:a==="V"?[,r]=m:([n,r]=m.slice(-2),a==="M"&&(s=n,i=r)),m})},ce=(e,t)=>{const[n]=e,{x1:r,y1:s,x2:i,y2:o}=t,l=e.slice(1).map(Number);let c=e;if("TQ".includes(n)||(t.qx=null,t.qy=null),n==="H")c=["L",e[1],s];else if(n==="V")c=["L",r,e[1]];else if(n==="S"){const a=r*2-i,m=s*2-o;t.x1=a,t.y1=m,c=["C",a,m,...l]}else if(n==="T"){const a=r*2-(t.qx?t.qx:0),m=s*2-(t.qy?t.qy:0);t.qx=a,t.qy=m,c=["Q",a,m,...l]}else if(n==="Q"){const[a,m]=l;t.qx=a,t.qy=m}return c},xt=e=>gt(e)&&e.every(([t])=>"ACLMQZ".includes(t)),et={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},$=e=>{if(xt(e))return[...e];const t=Z(e),n={...et},r=t.length;for(let s=0;s<r;s+=1){t[s],t[s]=ce(t[s],n);const i=t[s],o=i.length;n.x1=+i[o-2],n.y1=+i[o-1],n.x2=+i[o-4]||n.x1,n.y2=+i[o-3]||n.y1}return t},V=(e,t,n)=>{const[r,s]=e,[i,o]=t;return[r+(i-r)*n,s+(o-s)*n]},dt=(e,t,n,r,s)=>{const i=H([e,t],[n,r]);let o={x:0,y:0};if(typeof s=="number")if(s<=0)o={x:e,y:t};else if(s>=i)o={x:n,y:r};else{const[l,c]=V([e,t],[n,r],s/i);o={x:l,y:c}}return{length:i,point:o,min:{x:Math.min(e,n),y:Math.min(t,r)},max:{x:Math.max(e,n),y:Math.max(t,r)}}},jt=(e,t)=>{const{x:n,y:r}=e,{x:s,y:i}=t,o=n*s+r*i,l=Math.sqrt((n**2+r**2)*(s**2+i**2));return(n*i-r*s<0?-1:1)*Math.acos(o/l)},le=(e,t,n,r,s,i,o,l,c,a)=>{const{abs:m,sin:f,cos:y,sqrt:g,PI:h}=Math;let u=m(n),x=m(r);const p=(s%360+360)%360*(h/180);if(e===l&&t===c)return{x:e,y:t};if(u===0||x===0)return dt(e,t,l,c,a).point;const A=(e-l)/2,b=(t-c)/2,M={x:y(p)*A+f(p)*b,y:-f(p)*A+y(p)*b},v=M.x**2/u**2+M.y**2/x**2;v>1&&(u*=g(v),x*=g(v));const O=u**2*x**2-u**2*M.y**2-x**2*M.x**2,B=u**2*M.y**2+x**2*M.x**2;let X=O/B;X=X<0?0:X;const lt=(i!==o?1:-1)*g(X),S={x:lt*(u*M.y/x),y:lt*(-(x*M.x)/u)},mt={x:y(p)*S.x-f(p)*S.y+(e+l)/2,y:f(p)*S.x+y(p)*S.y+(t+c)/2},J={x:(M.x-S.x)/u,y:(M.y-S.y)/x},ht=jt({x:1,y:0},J),ut={x:(-M.x-S.x)/u,y:(-M.y-S.y)/x};let k=jt(J,ut);!o&&k>0?k-=2*h:o&&k<0&&(k+=2*h),k%=2*h;const q=ht+k*a,U=u*y(q),K=x*f(q);return{x:y(p)*U-f(p)*K+mt.x,y:f(p)*U+y(p)*K+mt.y}},me=(e,t,n,r,s,i,o,l,c,a)=>{const m=typeof a=="number";let f=e,y=t,g=0,h=[f,y,g],u=[f,y],x=0,d={x:0,y:0},p=[{x:f,y}];m&&a<=0&&(d={x:f,y});const A=300;for(let b=0;b<=A;b+=1){if(x=b/A,{x:f,y}=le(e,t,n,r,s,i,o,l,c,x),p=[...p,{x:f,y}],g+=H(u,[f,y]),u=[f,y],m&&g>a&&a>h[2]){const M=(g-a)/(g-h[2]);d={x:u[0]*(1-M)+h[0]*M,y:u[1]*(1-M)+h[1]*M}}h=[f,y,g]}return m&&a>=g&&(d={x:l,y:c}),{length:g,point:d,min:{x:Math.min(...p.map(b=>b.x)),y:Math.min(...p.map(b=>b.y))},max:{x:Math.max(...p.map(b=>b.x)),y:Math.max(...p.map(b=>b.y))}}},he=(e,t,n,r,s,i,o,l,c)=>{const a=1-c;return{x:a**3*e+3*a**2*c*n+3*a*c**2*s+c**3*o,y:a**3*t+3*a**2*c*r+3*a*c**2*i+c**3*l}},ue=(e,t,n,r,s,i,o,l,c)=>{const a=typeof c=="number";let m=e,f=t,y=0,g=[m,f,y],h=[m,f],u=0,x={x:0,y:0},d=[{x:m,y:f}];a&&c<=0&&(x={x:m,y:f});const p=300;for(let A=0;A<=p;A+=1){if(u=A/p,{x:m,y:f}=he(e,t,n,r,s,i,o,l,u),d=[...d,{x:m,y:f}],y+=H(h,[m,f]),h=[m,f],a&&y>c&&c>g[2]){const b=(y-c)/(y-g[2]);x={x:h[0]*(1-b)+g[0]*b,y:h[1]*(1-b)+g[1]*b}}g=[m,f,y]}return a&&c>=y&&(x={x:o,y:l}),{length:y,point:x,min:{x:Math.min(...d.map(A=>A.x)),y:Math.min(...d.map(A=>A.y))},max:{x:Math.max(...d.map(A=>A.x)),y:Math.max(...d.map(A=>A.y))}}},fe=(e,t,n,r,s,i,o)=>{const l=1-o;return{x:l**2*e+2*l*o*n+o**2*s,y:l**2*t+2*l*o*r+o**2*i}},ye=(e,t,n,r,s,i,o)=>{const l=typeof o=="number";let c=e,a=t,m=0,f=[c,a,m],y=[c,a],g=0,h={x:0,y:0},u=[{x:c,y:a}];l&&o<=0&&(h={x:c,y:a});const x=300;for(let d=0;d<=x;d+=1){if(g=d/x,{x:c,y:a}=fe(e,t,n,r,s,i,g),u=[...u,{x:c,y:a}],m+=H(y,[c,a]),y=[c,a],l&&m>o&&o>f[2]){const p=(m-o)/(m-f[2]);h={x:y[0]*(1-p)+f[0]*p,y:y[1]*(1-p)+f[1]*p}}f=[c,a,m]}return l&&o>=m&&(h={x:s,y:i}),{length:m,point:h,min:{x:Math.min(...u.map(d=>d.x)),y:Math.min(...u.map(d=>d.y))},max:{x:Math.max(...u.map(d=>d.x)),y:Math.max(...u.map(d=>d.y))}}},nt=(e,t)=>{const n=$(e),r=typeof t=="number";let s,i=[],o,l=0,c=0,a=0,m=0,f,y=[],g=[],h=0,u={x:0,y:0},x=u,d=u,p=u,A=0;for(let b=0,M=n.length;b<M;b+=1)f=n[b],[o]=f,s=o==="M",i=s?i:[l,c,...f.slice(1)],s?([,a,m]=f,u={x:a,y:m},x=u,h=0,r&&t<.001&&(p=u)):o==="L"?{length:h,min:u,max:x,point:d}=dt(...i,(t||0)-A):o==="A"?{length:h,min:u,max:x,point:d}=me(...i,(t||0)-A):o==="C"?{length:h,min:u,max:x,point:d}=ue(...i,(t||0)-A):o==="Q"?{length:h,min:u,max:x,point:d}=ye(...i,(t||0)-A):o==="Z"&&(i=[l,c,a,m],{length:h,min:u,max:x,point:d}=dt(...i,(t||0)-A)),r&&A<t&&A+h>=t&&(p=d),g=[...g,x],y=[...y,u],A+=h,[l,c]=o!=="Z"?f.slice(-2):[a,m];return r&&t>=A&&(p={x:l,y:c}),{length:A,point:p,min:{x:Math.min(...y.map(b=>b.x)),y:Math.min(...y.map(b=>b.y))},max:{x:Math.max(...g.map(b=>b.x)),y:Math.max(...g.map(b=>b.y))}}},Et=e=>{if(!e)return{x:0,y:0,width:0,height:0,x2:0,y2:0,cx:0,cy:0,cz:0};const{min:{x:t,y:n},max:{x:r,y:s}}=nt(e),i=r-t,o=s-n;return{width:i,height:o,x:t,y:n,x2:r,y2:s,cx:t+i/2,cy:n+o/2,cz:Math.max(i,o)+Math.min(i,o)/2}},pt=(e,t,n)=>{if(e[n].length>7){e[n].shift();const r=e[n];let s=n;for(;r.length;)t[n]="A",e.splice(s+=1,0,["C",...r.splice(0,6)]);e.splice(n,1)}},Dt=e=>xt(e)&&e.every(([t])=>"MC".includes(t)),st=(e,t,n)=>{const r=e*Math.cos(n)-t*Math.sin(n),s=e*Math.sin(n)+t*Math.cos(n);return{x:r,y:s}},Zt=(e,t,n,r,s,i,o,l,c,a)=>{let m=e,f=t,y=n,g=r,h=l,u=c;const x=Math.PI*120/180,d=Math.PI/180*(+s||0);let p=[],A,b,M,v,O;if(a)[b,M,v,O]=a;else{A=st(m,f,-d),m=A.x,f=A.y,A=st(h,u,-d),h=A.x,u=A.y;const N=(m-h)/2,w=(f-u)/2;let j=N*N/(y*y)+w*w/(g*g);j>1&&(j=Math.sqrt(j),y*=j,g*=j);const Pt=y*y,Nt=g*g,Ut=(i===o?-1:1)*Math.sqrt(Math.abs((Pt*Nt-Pt*w*w-Nt*N*N)/(Pt*w*w+Nt*N*N)));v=Ut*y*w/g+(m+h)/2,O=Ut*-g*N/y+(f+u)/2,b=Math.asin(((f-O)/g*10**9>>0)/10**9),M=Math.asin(((u-O)/g*10**9>>0)/10**9),b=m<v?Math.PI-b:b,M=h<v?Math.PI-M:M,b<0&&(b=Math.PI*2+b),M<0&&(M=Math.PI*2+M),o&&b>M&&(b-=Math.PI*2),!o&&M>b&&(M-=Math.PI*2)}let B=M-b;if(Math.abs(B)>x){const N=M,w=h,j=u;M=b+x*(o&&M>b?1:-1),h=v+y*Math.cos(M),u=O+g*Math.sin(M),p=Zt(h,u,y,g,s,0,o,w,j,[M,N,v,O])}B=M-b;const X=Math.cos(b),lt=Math.sin(b),S=Math.cos(M),mt=Math.sin(M),J=Math.tan(B/4),ht=4/3*y*J,ut=4/3*g*J,k=[m,f],q=[m+ht*lt,f-ut*X],U=[h+ht*mt,u-ut*S],K=[h,u];if(q[0]=2*k[0]-q[0],q[1]=2*k[1]-q[1],a)return[...q,...U,...K,...p];p=[...q,...U,...K,...p];const At=[];for(let N=0,w=p.length;N<w;N+=1)At[N]=N%2?st(p[N-1],p[N],d).y:st(p[N],p[N+1],d).x;return At},ge=(e,t,n,r,s,i)=>{const o=.3333333333333333,l=2/3;return[o*e+l*n,o*t+l*r,o*s+l*n,o*i+l*r,s,i]},Rt=(e,t,n,r)=>[...V([e,t],[n,r],.5),n,r,n,r],rt=(e,t)=>{const[n]=e,r=e.slice(1).map(Number),[s,i]=r;let o;const{x1:l,y1:c,x:a,y:m}=t;return"TQ".includes(n)||(t.qx=null,t.qy=null),n==="M"?(t.x=s,t.y=i,e):n==="A"?(o=[l,c,...r],["C",...Zt(...o)]):n==="Q"?(t.qx=s,t.qy=i,o=[l,c,...r],["C",...ge(...o)]):n==="L"?["C",...Rt(l,c,s,i)]:n==="Z"?["C",...Rt(l,c,a,m)]:e},it=e=>{if(Dt(e))return[...e];const t=$(e),n={...et},r=[];let s="",i=t.length;for(let o=0;o<i;o+=1){[s]=t[o],r[o]=s,t[o]=rt(t[o],n),pt(t,r,o),i=t.length;const l=t[o],c=l.length;n.x1=+l[c-2],n.y1=+l[c-1],n.x2=+l[c-4]||n.x1,n.y2=+l[c-3]||n.y1}return t},xe=(e,t,n,r,s,i,o,l)=>3*((l-t)*(n+s)-(o-e)*(r+i)+r*(e-s)-n*(t-i)+l*(s+e/3)-o*(i+t/3))/20,Xt=e=>{let t=0,n=0,r=0;return it(e).map(s=>{switch(s[0]){case"M":return[,t,n]=s,0;default:return r=xe(t,n,...s.slice(1)),[t,n]=s.slice(-2),r}}).reduce((s,i)=>s+i,0)},R=e=>nt(e).length,de=e=>Xt(it(e))>=0,G=(e,t)=>nt(e,t).point,bt=(e,t)=>{const n=D(e);let r=[...n],s=R(r),i=r.length-1,o=0,l=0,c=n[0];const[a,m]=c.slice(-2),f={x:a,y:m};if(i<=0||!t||!Number.isFinite(t))return{segment:c,index:0,length:l,point:f,lengthAtSegment:o};if(t>=s)return r=n.slice(0,-1),o=R(r),l=s-o,{segment:n[i],index:i,length:l,lengthAtSegment:o};const y=[];for(;i>0;)c=r[i],r=r.slice(0,-1),o=R(r),l=s-o,s=o,y.push({segment:c,index:i,length:l,lengthAtSegment:o}),i-=1;return y.find(({lengthAtSegment:g})=>g<=t)},ot=(e,t)=>{const n=D(e),r=$(n),s=R(n),i=b=>{const M=b.x-t.x,v=b.y-t.y;return M*M+v*v};let o=8,l,c={x:0,y:0},a=0,m=0,f=1/0;for(let b=0;b<=s;b+=o)l=G(r,b),a=i(l),a<f&&(c=l,m=b,f=a);o/=2;let y,g,h=0,u=0,x=0,d=0;for(;o>.5;)h=m-o,y=G(r,h),x=i(y),u=m+o,g=G(r,u),d=i(g),h>=0&&x<f?(c=y,m=h,f=x):u<=s&&d<f?(c=g,m=u,f=d):o/=2;const p=bt(n,m),A=Math.sqrt(f);return{closest:c,distance:A,segment:p}},pe=(e,t)=>ot(e,t).closest,be=(e,t)=>ot(e,t).segment,Me=(e,t)=>bt(e,t).segment,Ae=(e,t)=>{const{distance:n}=ot(e,t);return Math.abs(n)<.001},Ft=e=>{if(typeof e!="string")return!1;const t=new wt(e);for(Q(t);t.index<t.max&&!t.err.length;)vt(t);return!t.err.length&&"mM".includes(t.segments[0][0])},Qt=e=>W(e)&&e.slice(1).every(([t])=>t===t.toLowerCase()),at=(e,t)=>{let{round:n}=_;if(t==="off"||n==="off")return[...e];n=typeof t=="number"&&t>=0?t:n;const r=typeof n=="number"&&n>=1?10**n:1;return e.map(s=>{const i=s.slice(1).map(Number).map(o=>n?Math.round(o*r)/r:Math.round(o));return[s[0],...i]})},I=(e,t)=>at(e,t).map(n=>n[0]+n.slice(1).join(" ")).join(""),Ht={line:["x1","y1","x2","y2"],circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],rect:["width","height","x","y","rx","ry"],polygon:["points"],polyline:["points"],glyph:["d"]},Pe=e=>{const{x1:t,y1:n,x2:r,y2:s}=e;return[["M",t,n],["L",r,s]]},Ne=e=>{const t=[],n=(e.points||"").trim().split(/[\s|,]/).map(Number);let r=0;for(;r<n.length;)t.push([r?"L":"M",n[r],n[r+1]]),r+=2;return e.type==="polygon"?[...t,["z"]]:t},Ce=e=>{const{cx:t,cy:n,r}=e;return[["M",t-r,n],["a",r,r,0,1,0,2*r,0],["a",r,r,0,1,0,-2*r,0]]},ve=e=>{const{cx:t,cy:n,rx:r,ry:s}=e;return[["M",t-r,n],["a",r,s,0,1,0,2*r,0],["a",r,s,0,1,0,-2*r,0]]},we=e=>{const t=+e.x||0,n=+e.y||0,r=+e.width,s=+e.height;let i=+e.rx,o=+e.ry;return i||o?(i=i||o,o=o||i,i*2>r&&(i-=(i*2-r)/2),o*2>s&&(o-=(o*2-s)/2),[["M",t+i,n],["h",r-i*2],["s",i,0,i,o],["v",s-o*2],["s",0,o,-i,o],["h",-r+i*2],["s",-i,0,-i,-o],["v",-s+o*2],["s",0,-o,i,-o]]):[["M",t,n],["h",r],["v",s],["H",t],["Z"]]},Se=(e,t,n)=>{const r=n||document,s=r.defaultView||window,i=Object.keys(Ht),o=e instanceof s.SVGElement,l=o?e.tagName:null;if(l&&i.every(h=>l!==h))throw TypeError(`${T}: "${l}" is not SVGElement`);const c=r.createElementNS("http://www.w3.org/2000/svg","path"),a=o?l:e.type,m=Ht[a],f={type:a};o?(m.forEach(h=>{m.includes(h)&&(f[h]=e.getAttribute(h))}),Object.values(e.attributes).forEach(({name:h,value:u})=>{m.includes(h)||c.setAttribute(h,u)})):(Object.assign(f,e),Object.keys(f).forEach(h=>{!m.includes(h)&&h!=="type"&&c.setAttribute(h.replace(/[A-Z]/g,u=>`-${u.toLowerCase()}`),f[h])}));let y="";const g=_.round;return a==="circle"?y=I(Ce(f),g):a==="ellipse"?y=I(ve(f),g):["polyline","polygon"].includes(a)?y=I(Ne(f),g):a==="rect"?y=I(we(f),g):a==="line"?y=I(Pe(f),g):a==="glyph"&&(y=o?e.getAttribute("d"):e.d),Ft(y)?(c.setAttribute("d",y),t&&o&&(e.before(c,e),e.remove()),c):!1},Yt=e=>{const t=[];let n,r=-1;return e.forEach(s=>{s[0]==="M"?(n=[s],r+=1):n=[...n,s],t[r]=n}),t},Mt=e=>{if(Qt(e))return[...e];const t=D(e);let n=0,r=0,s=0,i=0;return t.map(o=>{const l=o.slice(1).map(Number),[c]=o,a=c.toLowerCase();if(c==="M")return[n,r]=l,s=n,i=r,["M",n,r];let m=[];if(c!==a)if(a==="a")m=[a,l[0],l[1],l[2],l[3],l[4],l[5]-n,l[6]-r];else if(a==="v")m=[a,l[0]-r];else if(a==="h")m=[a,l[0]-n];else{const y=l.map((g,h)=>g-(h%2?r:n));m=[a,...y]}else c==="m"&&(s=l[0]+n,i=l[1]+r),m=[a,...l];const f=m.length;return a==="z"?(n=s,r=i):a==="h"?n+=m[1]:a==="v"?r+=m[1]:(n+=m[f-2],r+=m[f-1]),m})},Te=(e,t,n,r)=>{const[s]=e,i=d=>Math.round(d*10**4)/10**4,o=e.slice(1).map(d=>+d),l=t.slice(1).map(d=>+d),{x1:c,y1:a,x2:m,y2:f,x:y,y:g}=n;let h=e;const[u,x]=l.slice(-2);if("TQ".includes(s)||(n.qx=null,n.qy=null),["V","H","S","T","Z"].includes(s))h=[s,...o];else if(s==="L")i(y)===i(u)?h=["V",x]:i(g)===i(x)&&(h=["H",u]);else if(s==="C"){const[d,p]=l;"CS".includes(r)&&(i(d)===i(c*2-m)&&i(p)===i(a*2-f)||i(c)===i(m*2-y)&&i(a)===i(f*2-g))&&(h=["S",...l.slice(-4)]),n.x1=d,n.y1=p}else if(s==="Q"){const[d,p]=l;n.qx=d,n.qy=p,"QT".includes(r)&&(i(d)===i(c*2-m)&&i(p)===i(a*2-f)||i(c)===i(m*2-y)&&i(a)===i(f*2-g))&&(h=["T",...l.slice(-2)])}return h},Gt=(e,t)=>{const n=Z(e),r=$(n),s={...et},i=[],o=n.length;let l="",c="",a=0,m=0,f=0,y=0;for(let u=0;u<o;u+=1){[l]=n[u],i[u]=l,u&&(c=i[u-1]),n[u]=Te(n[u],r[u],s,c);const x=n[u],d=x.length;switch(s.x1=+x[d-2],s.y1=+x[d-1],s.x2=+x[d-4]||s.x1,s.y2=+x[d-3]||s.y1,l){case"Z":a=f,m=y;break;case"H":[,a]=x;break;case"V":[,m]=x;break;default:[a,m]=x.slice(-2).map(Number),l==="M"&&(f=a,y=m)}s.x=a,s.y=m}const g=at(n,t),h=at(Mt(n),t);return g.map((u,x)=>x?u.join("").length<h[x].join("").length?u:h[x]:u)},Le=e=>{const t=e.slice(1).map((n,r,s)=>r?[...s[r-1].slice(-2),...n.slice(1)]:[...e[0].slice(1),...n.slice(1)]).map(n=>n.map((r,s)=>n[n.length-s-2*(1-s%2)])).reverse();return[["M",...t[0].slice(0,2)],...t.map(n=>["C",...n.slice(2)])]},ct=e=>{const t=Z(e),n=t.slice(-1)[0][0]==="Z",r=$(t).map((s,i)=>{const[o,l]=s.slice(-2).map(Number);return{seg:t[i],n:s,c:t[i][0],x:o,y:l}}).map((s,i,o)=>{const l=s.seg,c=s.n,a=i&&o[i-1],m=o[i+1],f=s.c,y=o.length,g=i?o[i-1].x:o[y-1].x,h=i?o[i-1].y:o[y-1].y;let u=[];switch(f){case"M":u=n?["Z"]:[f,g,h];break;case"A":u=[f,...l.slice(1,-3),l[5]===1?0:1,g,h];break;case"C":m&&m.c==="S"?u=["S",l[1],l[2],g,h]:u=[f,l[3],l[4],l[1],l[2],g,h];break;case"S":a&&"CS".includes(a.c)&&(!m||m.c!=="S")?u=["C",c[3],c[4],c[1],c[2],g,h]:u=[f,c[1],c[2],g,h];break;case"Q":m&&m.c==="T"?u=["T",g,h]:u=[f,...l.slice(1,-2),g,h];break;case"T":a&&"QT".includes(a.c)&&(!m||m.c!=="T")?u=["Q",c[1],c[2],g,h]:u=[f,g,h];break;case"Z":u=["M",g,h];break;case"H":u=[f,g];break;case"V":u=[f,h];break;default:u=[f,...l.slice(1,-2),g,h]}return u});return n?r.reverse():[r[0],...r.slice(1).reverse()]},ke=e=>{let t=new yt;const{origin:n}=e,[r,s]=n,{translate:i}=e,{rotate:o}=e,{skew:l}=e,{scale:c}=e;return Array.isArray(i)&&i.length>=2&&i.every(a=>!Number.isNaN(+a))&&i.some(a=>a!==0)?t=t.translate(...i):typeof i=="number"&&!Number.isNaN(i)&&(t=t.translate(i)),(o||l||c)&&(t=t.translate(r,s),Array.isArray(o)&&o.length>=2&&o.every(a=>!Number.isNaN(+a))&&o.some(a=>a!==0)?t=t.rotate(...o):typeof o=="number"&&!Number.isNaN(o)&&(t=t.rotate(o)),Array.isArray(l)&&l.length===2&&l.every(a=>!Number.isNaN(+a))&&l.some(a=>a!==0)?(t=l[0]?t.skewX(l[0]):t,t=l[1]?t.skewY(l[1]):t):typeof l=="number"&&!Number.isNaN(l)&&(t=t.skewX(l)),Array.isArray(c)&&c.length>=2&&c.every(a=>!Number.isNaN(+a))&&c.some(a=>a!==1)?t=t.scale(...c):typeof c=="number"&&!Number.isNaN(c)&&(t=t.scale(c)),t=t.translate(-r,-s)),t},qe=(e,t)=>{let n=yt.Translate(...t.slice(0,-1));return[,,,n.m44]=t,n=e.multiply(n),[n.m41,n.m42,n.m43,n.m44]},Bt=(e,t,n)=>{const[r,s,i]=n,[o,l,c]=qe(e,[...t,0,1]),a=o-r,m=l-s,f=c-i;return[a*(Math.abs(i)/Math.abs(f)||1)+r,m*(Math.abs(i)/Math.abs(f)||1)+s]},Jt=(e,t)=>{let n=0,r=0,s,i,o,l,c,a;const m=Z(e),f=t&&Object.keys(t);if(!t||f&&!f.length)return[...m];const y=$(m);if(!t.origin){const{origin:M}=_;Object.assign(t,{origin:M})}const g=ke(t),{origin:h}=t,u={...et};let x=[],d=0,p="",A=[];const b=[];if(!g.isIdentity){for(s=0,o=m.length;s<o;s+=1){x=m[s],m[s]&&([p]=x),b[s]=p,p==="A"&&(x=rt(y[s],u),m[s]=rt(y[s],u),pt(m,b,s),y[s]=rt(y[s],u),pt(y,b,s),o=Math.max(m.length,y.length)),x=y[s],d=x.length,u.x1=+x[d-2],u.y1=+x[d-1],u.x2=+x[d-4]||u.x1,u.y2=+x[d-3]||u.y1;const M={s:m[s],c:m[s][0],x:u.x1,y:u.y1};A=[...A,M]}return A.map(M=>{if(p=M.c,x=M.s,p==="L"||p==="H"||p==="V")return[c,a]=Bt(g,[M.x,M.y],h),n!==c&&r!==a?x=["L",c,a]:r===a?x=["H",c]:n===c&&(x=["V",a]),n=c,r=a,x;for(i=1,l=x.length;i<l;i+=2)[n,r]=Bt(g,[+x[i],+x[i+1]],h),x[i]=n,x[i+1]=r;return x})}return[...m]},$e=e=>{const n=e.slice(0,2),r=e.slice(2,4),s=e.slice(4,6),i=e.slice(6,8),o=V(n,r,.5),l=V(r,s,.5),c=V(s,i,.5),a=V(o,l,.5),m=V(l,c,.5),f=V(a,m,.5);return[["C",...o,...a,...f],["C",...m,...c,...i]]};class Ve{static CSSMatrix=yt;static getPathBBox=Et;static getPathArea=Xt;static getTotalLength=R;static getDrawDirection=de;static getPointAtLength=G;static pathLengthFactory=nt;static getPropertiesAtLength=bt;static getPropertiesAtPoint=ot;static polygonLength=re;static polygonArea=se;static getClosestPoint=pe;static getSegmentOfPoint=be;static getSegmentAtLength=Me;static isPointInStroke=Ae;static isValidPath=Ft;static isPathArray=W;static isAbsoluteArray=gt;static isRelativeArray=Qt;static isCurveArray=Dt;static isNormalizedArray=xt;static shapeToPath=Se;static parsePathString=D;static roundPath=at;static splitPath=Yt;static splitCubic=$e;static optimizePath=Gt;static reverseCurve=Le;static reversePath=ct;static normalizePath=$;static transformPath=Jt;static pathToAbsolute=Z;static pathToRelative=Mt;static pathToCurve=it;static pathToString=I;constructor(t,n){const r=n||{},s=typeof t>"u";if(s||!t.length)throw TypeError(`${T}: "pathValue" is ${s?"undefined":"empty"}`);const i=D(t);this.segments=i;const{width:o,height:l,cx:c,cy:a,cz:m}=this.getBBox(),{round:f,origin:y}=r;let g;if(f==="auto"){const u=`${Math.floor(Math.max(o,l))}`.length;g=u>=4?0:4-u}else Number.isInteger(f)||f==="off"?g=f:g=_.round;let h;if(Array.isArray(y)&&y.length>=2){const[u,x,d]=y.map(Number);h=[Number.isNaN(u)?c:u,Number.isNaN(x)?a:x,Number.isNaN(d)?m:d]}else h=[c,a,m];return this.round=g,this.origin=h,this}getBBox(){return Et(this.segments)}getTotalLength(){return R(this.segments)}getPointAtLength(t){return G(this.segments,t)}toAbsolute(){const{segments:t}=this;return this.segments=Z(t),this}toRelative(){const{segments:t}=this;return this.segments=Mt(t),this}toCurve(){const{segments:t}=this;return this.segments=it(t),this}reverse(t){this.toAbsolute();const{segments:n}=this,r=Yt(n),s=r.length>1?r:!1,i=s?[...s].map((l,c)=>t?c?ct(l):[...l]:ct(l)):[...n];let o=[];return s?o=i.flat(1):o=t?n:ct(n),this.segments=[...o],this}normalize(){const{segments:t}=this;return this.segments=$(t),this}optimize(){const{segments:t}=this;return this.segments=Gt(t,this.round),this}transform(t){if(!t||typeof t!="object"||typeof t=="object"&&!["translate","rotate","skew","scale"].some(c=>c in t))return this;const{segments:n,origin:[r,s,i]}=this,o={};for(const[c,a]of Object.entries(t))c==="skew"&&Array.isArray(a)||(c==="rotate"||c==="translate"||c==="origin"||c==="scale")&&Array.isArray(a)?o[c]=a.map(Number):c!=="origin"&&typeof Number(a)=="number"&&(o[c]=Number(a));const{origin:l}=o;if(Array.isArray(l)&&l.length>=2){const[c,a,m]=l.map(Number);o.origin=[Number.isNaN(c)?r:c,Number.isNaN(a)?s:a,m||i]}else o.origin=[r,s,i];return this.segments=Jt(n,o),this}flipX(){return this.transform({rotate:[0,180,0]}),this}flipY(){return this.transform({rotate:[180,0,0]}),this}toString(){return I(this.segments,this.round)}}return Ve}();
|
|
2
2
|
//# sourceMappingURL=svg-path-commander.js.map
|