svg-path-commander 2.1.0 → 2.1.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.
Files changed (51) hide show
  1. package/README.md +61 -5
  2. package/dist/svg-path-commander.cjs +1 -1
  3. package/dist/svg-path-commander.cjs.map +1 -1
  4. package/dist/svg-path-commander.d.ts +119 -33
  5. package/dist/svg-path-commander.js +1 -1
  6. package/dist/svg-path-commander.js.map +1 -1
  7. package/dist/svg-path-commander.mjs +798 -828
  8. package/dist/svg-path-commander.mjs.map +1 -1
  9. package/package.json +3 -3
  10. package/src/convert/pathToAbsolute.ts +16 -70
  11. package/src/convert/pathToCurve.ts +36 -28
  12. package/src/convert/pathToRelative.ts +33 -62
  13. package/src/index.ts +13 -19
  14. package/src/interface.ts +1 -1
  15. package/src/math/arcTools.ts +248 -71
  16. package/src/math/bezier.ts +19 -27
  17. package/src/math/cubicTools.ts +67 -26
  18. package/src/math/distanceSquareRoot.ts +3 -1
  19. package/src/math/lineTools.ts +41 -26
  20. package/src/math/midPoint.ts +3 -1
  21. package/src/math/polygonArea.ts +3 -1
  22. package/src/math/polygonLength.ts +2 -1
  23. package/src/math/quadTools.ts +45 -26
  24. package/src/parser/parsePathString.ts +4 -4
  25. package/src/process/absolutizeSegment.ts +58 -0
  26. package/src/process/iterate.ts +33 -0
  27. package/src/process/normalizePath.ts +34 -28
  28. package/src/process/normalizeSegment.ts +8 -9
  29. package/src/process/projection2d.ts +2 -1
  30. package/src/process/relativizeSegment.ts +61 -0
  31. package/src/process/reversePath.ts +1 -1
  32. package/src/process/roundPath.ts +8 -10
  33. package/src/process/segmentToCubic.ts +1 -1
  34. package/src/process/shortenSegment.ts +3 -3
  35. package/src/process/splitCubic.ts +8 -7
  36. package/src/process/splitPath.ts +38 -4
  37. package/src/process/transformPath.ts +80 -73
  38. package/src/types.ts +35 -1
  39. package/src/util/getPathArea.ts +3 -3
  40. package/src/util/getPathBBox.ts +86 -19
  41. package/src/util/getPointAtLength.ts +98 -4
  42. package/src/util/getPropertiesAtLength.ts +2 -2
  43. package/src/util/getTotalLength.ts +71 -4
  44. package/test/class.test.ts +15 -14
  45. package/test/fixtures/shapes.js +27 -27
  46. package/test/fixtures/simpleShapes.js +18 -18
  47. package/test/static.test.ts +37 -17
  48. package/cypress.config.ts +0 -29
  49. package/src/process/fixArc.ts +0 -23
  50. package/src/process/replaceArc.ts +0 -52
  51. package/src/util/pathFactory.ts +0 -130
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  [![NPM Version](https://img.shields.io/npm/v/svg-path-commander.svg)](https://www.npmjs.com/package/svg-path-commander)
5
5
  [![NPM Downloads](https://img.shields.io/npm/dm/svg-path-commander.svg)](http://npm-stat.com/charts.html?svg-path-commander)
6
6
  [![jsDeliver](https://img.shields.io/jsdelivr/npm/hw/svg-path-commander)](https://www.jsdelivr.com/package/npm/svg-path-commander)
7
- [![typescript version](https://img.shields.io/badge/typescript-5.6.2-brightgreen)](https://www.typescriptlang.org/)
7
+ [![typescript version](https://img.shields.io/badge/typescript-5.6.3-brightgreen)](https://www.typescriptlang.org/)
8
8
  [![prettier version](https://img.shields.io/badge/prettier-2.8.8-brightgreen)](https://prettier.io/)
9
9
  [![eslint version](https://img.shields.io/badge/eslint-8.57.1-brightgreen)](https://github.com/eslint)
10
10
  [![vitest version](https://img.shields.io/badge/vitest-2.1.2-brightgreen)](https://vitest.dev/)
@@ -16,14 +16,14 @@ A modern set of Typescript tools for manipulating the `d` (description) attribut
16
16
 
17
17
 
18
18
  While you may find familiar tools inside, this library brings ***new additions***:
19
- * the build in `getBBox`, `getPointAtLength` and `getTotalLength` are more reliable and much more accurate than the native methods, not to mention their world class performance ratings;
19
+ * the build in `getBBox`, `getPointAtLength` and `getTotalLength` are more reliable and much more accurate than the native methods, not to mention their high [performance](https://github.com/thednp/svg-path-commander/issues/44) ratings;
20
20
  * thanks to the community contributions we've implemented useful tools like `getPropertiesAtLength`, `getSegmentOfPoint` or `isPointInStroke`;
21
21
  * a tool that can *reverse path draw direction* without altering path commands, even with specific shorthand path commands;
22
22
  * a unique tool that can *reverse path draw direction* for path strings with only 'C' path commands;
23
23
  * a new and unique tool to *apply transform functions to path commands* via the modern *DOMMatrix* API.
24
24
 
25
25
  **The key differences with other libraries**:
26
- * Typescript sourced with modernized codebase and build tools; all inherited codebase has been modernized as well;
26
+ * Typescript sourced with modernized codebase, all inherited codebase has been modernized as well;
27
27
  * along with the modern codebase, the library also comes with strong TypeScript definitions;
28
28
  * this library can create 3D to 2D projections, making your SVGs look like 3D but in the SVG coordinate system;
29
29
  * you can use this library in both web apps and Node.js, you are not restricted to a single environment;
@@ -75,7 +75,7 @@ const transform = {
75
75
  rotate: 15, // Z axis rotation
76
76
  scale: 0.75, // uniform scale on X, Y, Z axis
77
77
  skew: 15, // skew 15deg on the X axis
78
- origin: [15, 0] // if not specified, it will calculate a bounding box to determine a proper `transform-origin`
78
+ origin: [15, 0] // if not specified, it will use the default origin value [0, 0]
79
79
  }
80
80
  const transformed2DPathString = new SVGPathCommander(path).transform(transform).toString();
81
81
 
@@ -90,6 +90,21 @@ const transform = {
90
90
  const transformed3DPathString = new SVGPathCommander(path).transform(transform).toString();
91
91
  ```
92
92
 
93
+ Access the `bbox` instance property to apply a consistent `transform-origin`:
94
+ ```js
95
+ // apply a 3D transformation with a consistent origin
96
+ const transformed3DPath = new SVGPathCommander(path);
97
+ const { cx, cy, cz } = transformed3DPath.bbox;
98
+ const transform = {
99
+ translate: [15, 15, 15], // `[15, 15]` would apply a 2D translation, and only `15` for X axis translation
100
+ rotate: [15, 15, 15], // or only "15" for 2D rotation on Z axis
101
+ scale: [0.7, 0.75, 0.8], // or only "0.7" for 2D scale on all X, Y, Z axis
102
+ skew: [15, 15], // or only "15" for the X axis
103
+ origin: [cx, cy, cz] // the origin
104
+ }
105
+ const transformed3DPathString = transformed3DPath.transform(transform).toString();
106
+ ```
107
+
93
108
  SVGPathCommander comes with a full range of additional static methods, here's how to normalize a path:
94
109
  ```js
95
110
  const path = 'M0 0 H50';
@@ -112,13 +127,53 @@ const myPathString = SVGPathCommander.pathToString([['M', 0, 0], ['L', 50, 0]]);
112
127
  // result => 'M0 0 L50 0'
113
128
  ```
114
129
 
115
-
116
130
  Check a path string validity:
117
131
  ```js
118
132
  SVGPathCommander.isValidPath(path);
119
133
  // result => boolean
120
134
  ```
121
135
 
136
+ Check if path is a certain kind of `PathArray`:
137
+ ```js
138
+ SVGPathCommander.isAbsoluteArray([['M', 0, 0], ['L', 50, 0]]);
139
+ // result => true
140
+ ```
141
+
142
+ Create a custom function to apply a 3D transformation using static methods:
143
+ ```ts
144
+ import { parsePathString, getPathBBox, transformPath, pathToString } from 'svg-path-commander';
145
+
146
+ function myTransformFn(pathInput: string | PathArray, transformObject: TransformObject) {
147
+ const path = parsePathString(pathInput);
148
+ const { cx, cy, cz } = getPathBBox(path);
149
+
150
+ return pathToString(
151
+ transformPath(path, {
152
+ ...transformObject, origin: [cx, cy, cz]
153
+ })
154
+ )
155
+ }
156
+ ```
157
+ In extreme cases where performance is paramount, you can consider the parent SVG `viewBox` attribute to extract a bounding box required for a consistent transform origin.
158
+
159
+ ```ts
160
+ // const svgViewBox = document.getElementById('my-svg').getAttribute('viewBox');
161
+ const viewBox = '0 0 24 24';
162
+
163
+ const [x, y, width, height] = viewBox.split(/\s/).map(Number);
164
+ const origin = [
165
+ x + width / 2, // CX
166
+ y + height / 2, // CY
167
+ Math.max(width, height) + Math.min(width, height) / 2, // CZ
168
+ ];
169
+
170
+ // use this origin for your shape transformation
171
+ const myNewString = new SVGPathCommander('M0 0 H50')
172
+ .transform({ rotate: [35, 0, 0], origin })
173
+ .toString();
174
+ ```
175
+
176
+
122
177
  Convert a shape to `<path>` and transfer all non-specific attributes
123
178
  ```js
124
179
  const myCircle = document.getElementById('myCircle');
@@ -213,6 +268,7 @@ For developer guidelines, and a complete list of static methods, head over to th
213
268
  * James Halliday for his excelent [point-at-length](https://github.com/substack/point-at-length)
214
269
  * Eric Eastwood for his excelent [svg-curve-lib](https://github.com/MadLittleMods/svg-curve-lib)
215
270
  * PhET Interactive Simulations for their [kite](https://github.com/phetsims/kite)
271
+ * [herrstrietzel](https://github.com/herrstrietzel) for his awesome [svg-pathdata-getbbox](https://github.com/herrstrietzel/svg-pathdata-getbbox)
216
272
 
217
273
  # License
218
274
  **SVGPathCommander** is released under [MIT Licence](https://github.com/thednp/svg-path-commander/blob/master/LICENSE).
@@ -1,2 +1,2 @@
1
- "use strict";var oe=Object.defineProperty;var ce=(e,t,n)=>t in e?oe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var M=(e,t,n)=>ce(e,typeof t!="symbol"?t+"":t,n);const ht={origin:[0,0,0],round:4},$="SVGPathCommander Error",U={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},Lt=e=>{let t=e.pathValue[e.segmentStart],n=t.toLowerCase();const{data:s}=e;for(;s.length>=U[n]&&(n==="m"&&s.length>2?(e.segments.push([t,...s.splice(0,2)]),n="l",t=t==="m"?"l":"L"):e.segments.push([t,...s.splice(0,U[n])]),!!U[n]););},le=e=>{const{index:t,pathValue:n}=e,s=n.charCodeAt(t);if(s===48){e.param=0,e.index+=1;return}if(s===49){e.param=1,e.index+=1;return}e.err=`${$}: invalid Arc flag "${n[t]}", expecting 0 or 1 at index ${t}`},X=e=>e>=48&&e<=57,Z="Invalid path value",ae=e=>{const{max:t,pathValue:n,index:s}=e;let r=s,i=!1,o=!1,c=!1,a=!1,l;if(r>=t){e.err=`${$}: ${Z} at index ${r}, "pathValue" is missing param`;return}if(l=n.charCodeAt(r),(l===43||l===45)&&(r+=1,l=n.charCodeAt(r)),!X(l)&&l!==46){e.err=`${$}: ${Z} at index ${r}, "${n[r]}" is not a number`;return}if(l!==46){if(i=l===48,r+=1,l=n.charCodeAt(r),i&&r<t&&l&&X(l)){e.err=`${$}: ${Z} at index ${s}, "${n[s]}" illegal number`;return}for(;r<t&&X(n.charCodeAt(r));)r+=1,o=!0;l=n.charCodeAt(r)}if(l===46){for(a=!0,r+=1;X(n.charCodeAt(r));)r+=1,c=!0;l=n.charCodeAt(r)}if(l===101||l===69){if(a&&!o&&!c){e.err=`${$}: ${Z} at index ${r}, "${n[r]}" invalid float exponent`;return}if(r+=1,l=n.charCodeAt(r),(l===43||l===45)&&(r+=1),r<t&&X(n.charCodeAt(r)))for(;r<t&&X(n.charCodeAt(r));)r+=1;else{e.err=`${$}: ${Z} at index ${r}, "${n[r]}" invalid integer exponent`;return}}e.index=r,e.param=+e.pathValue.slice(s,r)},me=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),V=e=>{const{pathValue:t,max:n}=e;for(;e.index<n&&me(t.charCodeAt(e.index));)e.index+=1},he=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}},ue=e=>X(e)||e===43||e===45||e===46,fe=e=>(e|32)===97,ge=e=>{switch(e|32){case 109:case 77:return!0;default:return!1}},Dt=e=>{var a;const{max:t,pathValue:n,index:s,segments:r}=e,i=n.charCodeAt(s),o=U[n[s].toLowerCase()];if(e.segmentStart=s,!he(i)){e.err=`${$}: ${Z} "${n[s]}" is not a path command at index ${s}`;return}const c=r[r.length-1];if(!ge(i)&&((a=c==null?void 0:c[0])==null?void 0:a.toLocaleLowerCase())==="z"){e.err=`${$}: ${Z} "${n[s]}" is not a MoveTo path command at index ${s}`;return}if(e.index+=1,V(e),e.data=[],!o){Lt(e);return}for(;;){for(let l=o;l>0;l-=1){if(fe(i)&&(l===3||l===4)?le(e):ae(e),e.err.length)return;e.data.push(e.param),V(e),e.index<t&&n.charCodeAt(e.index)===44&&(e.index+=1,V(e))}if(e.index>=e.max||!ue(n.charCodeAt(e.index)))break}Lt(e)};class Rt{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 G=e=>Array.isArray(e)&&e.every(t=>{const n=t[0].toLowerCase();return U[n]===t.length-1&&"achlmqstvz".includes(n)&&t.slice(1).every(Number.isFinite)})&&e.length>0,Y=e=>{if(G(e))return e.slice(0);const t=new Rt(e);for(V(t);t.index<t.max&&!t.err.length;)Dt(t);if(t.err&&t.err.length)throw TypeError(t.err);return t.segments},ye=e=>{const t=e.length;let n=-1,s,r=e[t-1],i=0;for(;++n<t;)s=r,r=e[n],i+=s[1]*r[0]-s[0]*r[1];return i/2},Xt=(e,t)=>Math.sqrt((e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])),xe=e=>e.reduce((t,n,s)=>s?t+Xt(e[s-1],n):0,0);var pe=Object.defineProperty,be=(e,t,n)=>t in e?pe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,C=(e,t,n)=>be(e,typeof t!="symbol"?t+"":t,n);const de={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},Zt=e=>(e instanceof Float64Array||e instanceof Float32Array||Array.isArray(e)&&e.every(t=>typeof t=="number"))&&[6,16].some(t=>e.length===t),Yt=e=>e instanceof DOMMatrix||e instanceof P||typeof e=="object"&&Object.keys(de).every(t=>e&&t in e),tt=e=>{const t=new P,n=Array.from(e);if(!Zt(n))throw TypeError(`CSSMatrix: "${n.join(",")}" must be an array with 6/16 numbers.`);if(n.length===16){const[s,r,i,o,c,a,l,m,u,y,x,f,h,g,p,b]=n;t.m11=s,t.a=s,t.m21=c,t.c=c,t.m31=u,t.m41=h,t.e=h,t.m12=r,t.b=r,t.m22=a,t.d=a,t.m32=y,t.m42=g,t.f=g,t.m13=i,t.m23=l,t.m33=x,t.m43=p,t.m14=o,t.m24=m,t.m34=f,t.m44=b}else if(n.length===6){const[s,r,i,o,c,a]=n;t.m11=s,t.a=s,t.m12=r,t.b=r,t.m21=i,t.c=i,t.m22=o,t.d=o,t.m41=c,t.e=c,t.m42=a,t.f=a}return t},Qt=e=>{if(Yt(e))return tt([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.`)},Ft=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 s=`CSSMatrix: invalid transform string "${e}"`;return t.split(")").filter(r=>r).forEach(r=>{const[i,o]=r.split("(");if(!o)throw TypeError(s);const c=o.split(",").map(f=>f.includes("rad")?parseFloat(f)*(180/Math.PI):parseFloat(f)),[a,l,m,u]=c,y=[a,l,m],x=[a,l,m,u];if(i==="perspective"&&a&&[l,m].every(f=>f===void 0))n.m34=-1/a;else if(i.includes("matrix")&&[6,16].includes(c.length)&&c.every(f=>!Number.isNaN(+f))){const f=c.map(h=>Math.abs(h)<1e-6?0:h);n=n.multiply(tt(f))}else if(i==="translate3d"&&y.every(f=>!Number.isNaN(+f)))n=n.translate(a,l,m);else if(i==="translate"&&a&&m===void 0)n=n.translate(a,l||0,0);else if(i==="rotate3d"&&x.every(f=>!Number.isNaN(+f))&&u)n=n.rotateAxisAngle(a,l,m,u);else if(i==="rotate"&&a&&[l,m].every(f=>f===void 0))n=n.rotate(0,0,a);else if(i==="scale3d"&&y.every(f=>!Number.isNaN(+f))&&y.some(f=>f!==1))n=n.scale(a,l,m);else if(i==="scale"&&!Number.isNaN(a)&&a!==1&&m===void 0){const f=Number.isNaN(+l)?a:l;n=n.scale(a,f,1)}else if(i==="skew"&&(a||!Number.isNaN(a)&&l)&&m===void 0)n=n.skew(a,l||0);else if(["translate","rotate","scale","skew"].some(f=>i.includes(f))&&/[XYZ]/.test(i)&&a&&[l,m].every(f=>f===void 0))if(i==="skewX"||i==="skewY")n=n[i](a);else{const f=i.replace(/[XYZ]/,""),h=i.replace(f,""),g=["X","Y","Z"].indexOf(h),p=f==="scale"?1:0,b=[g===0?a:p,g===1?a:p,g===2?a:p];n=n[f](...b)}else throw TypeError(s)}),n},dt=(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],Ht=(e,t,n)=>{const s=new P;return s.m41=e,s.e=e,s.m42=t,s.f=t,s.m43=n,s},Bt=(e,t,n)=>{const s=new P,r=Math.PI/180,i=e*r,o=t*r,c=n*r,a=Math.cos(i),l=-Math.sin(i),m=Math.cos(o),u=-Math.sin(o),y=Math.cos(c),x=-Math.sin(c),f=m*y,h=-m*x;s.m11=f,s.a=f,s.m12=h,s.b=h,s.m13=u;const g=l*u*y+a*x;s.m21=g,s.c=g;const p=a*y-l*u*x;return s.m22=p,s.d=p,s.m23=-l*m,s.m31=l*x-a*u*y,s.m32=l*y+a*u*x,s.m33=a*m,s},Jt=(e,t,n,s)=>{const r=new P,i=Math.sqrt(e*e+t*t+n*n);if(i===0)return r;const o=e/i,c=t/i,a=n/i,l=s*(Math.PI/360),m=Math.sin(l),u=Math.cos(l),y=m*m,x=o*o,f=c*c,h=a*a,g=1-2*(f+h)*y;r.m11=g,r.a=g;const p=2*(o*c*y+a*m*u);r.m12=p,r.b=p,r.m13=2*(o*a*y-c*m*u);const b=2*(c*o*y-a*m*u);r.m21=b,r.c=b;const v=1-2*(h+x)*y;return r.m22=v,r.d=v,r.m23=2*(c*a*y+o*m*u),r.m31=2*(a*o*y+c*m*u),r.m32=2*(a*c*y-o*m*u),r.m33=1-2*(x+f)*y,r},_t=(e,t,n)=>{const s=new P;return s.m11=e,s.a=e,s.m22=t,s.d=t,s.m33=n,s},ut=(e,t)=>{const n=new P;if(e){const s=e*Math.PI/180,r=Math.tan(s);n.m21=r,n.c=r}if(t){const s=t*Math.PI/180,r=Math.tan(s);n.m12=r,n.b=r}return n},Kt=e=>ut(e,0),Ut=e=>ut(0,e),E=(e,t)=>{const n=t.m11*e.m11+t.m12*e.m21+t.m13*e.m31+t.m14*e.m41,s=t.m11*e.m12+t.m12*e.m22+t.m13*e.m32+t.m14*e.m42,r=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,c=t.m21*e.m12+t.m22*e.m22+t.m23*e.m32+t.m24*e.m42,a=t.m21*e.m13+t.m22*e.m23+t.m23*e.m33+t.m24*e.m43,l=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,u=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,x=t.m31*e.m14+t.m32*e.m24+t.m33*e.m34+t.m34*e.m44,f=t.m41*e.m11+t.m42*e.m21+t.m43*e.m31+t.m44*e.m41,h=t.m41*e.m12+t.m42*e.m22+t.m43*e.m32+t.m44*e.m42,g=t.m41*e.m13+t.m42*e.m23+t.m43*e.m33+t.m44*e.m43,p=t.m41*e.m14+t.m42*e.m24+t.m43*e.m34+t.m44*e.m44;return tt([n,s,r,i,o,c,a,l,m,u,y,x,f,h,g,p])};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"?Ft(t):Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array?tt(t):typeof t=="object"?Qt(t):this}toFloat32Array(t){return Float32Array.from(dt(this,t))}toFloat64Array(t){return Float64Array.from(dt(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 E(this,t)}translate(t,n,s){const r=t;let i=n,o=s;return typeof i>"u"&&(i=0),typeof o>"u"&&(o=0),E(this,Ht(r,i,o))}scale(t,n,s){const r=t;let i=n,o=s;return typeof i>"u"&&(i=t),typeof o>"u"&&(o=1),E(this,_t(r,i,o))}rotate(t,n,s){let r=t,i=n||0,o=s||0;return typeof t=="number"&&typeof n>"u"&&typeof s>"u"&&(o=r,r=0,i=0),E(this,Bt(r,i,o))}rotateAxisAngle(t,n,s,r){if([t,n,s,r].some(i=>Number.isNaN(+i)))throw new TypeError("CSSMatrix: expecting 4 values");return E(this,Jt(t,n,s,r))}skewX(t){return E(this,Kt(t))}skewY(t){return E(this,Ut(t))}skew(t,n){return E(this,ut(t,n))}transformPoint(t){const n=this.m11*t.x+this.m21*t.y+this.m31*t.z+this.m41*t.w,s=this.m12*t.x+this.m22*t.y+this.m32*t.z+this.m42*t.w,r=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,s,r,i):{x:n,y:s,z:r,w:i}}}C(P,"Translate",Ht),C(P,"Rotate",Bt),C(P,"RotateAxisAngle",Jt),C(P,"Scale",_t),C(P,"SkewX",Kt),C(P,"SkewY",Ut),C(P,"Skew",ut),C(P,"Multiply",E),C(P,"fromArray",tt),C(P,"fromMatrix",Qt),C(P,"fromString",Ft),C(P,"toArray",dt),C(P,"isCompatibleArray",Zt),C(P,"isCompatibleObject",Yt);const ft=e=>G(e)&&e.every(([t])=>t===t.toUpperCase()),H=e=>{if(ft(e))return e.slice(0);const t=Y(e);let n=0,s=0,r=0,i=0;return t.map(o=>{const c=o.slice(1).map(Number),[a]=o,l=a.toUpperCase();if(a==="M")return[n,s]=c,r=n,i=s,["M",n,s];let m=[];if(a!==l)if(l==="A")m=[l,c[0],c[1],c[2],c[3],c[4],c[5]+n,c[6]+s];else if(l==="V")m=[l,c[0]+s];else if(l==="H")m=[l,c[0]+n];else{const u=c.map((y,x)=>y+(x%2?s:n));m=[l,...u]}else m=[l,...c];return l==="Z"?(n=r,s=i):l==="H"?[,n]=m:l==="V"?[,s]=m:([n,s]=m.slice(-2),l==="M"&&(r=n,i=s)),m})},Me=(e,t)=>{const[n]=e,{x1:s,y1:r,x2:i,y2:o}=t,c=e.slice(1).map(Number);let a=e;if("TQ".includes(n)||(t.qx=null,t.qy=null),n==="H")a=["L",e[1],r];else if(n==="V")a=["L",s,e[1]];else if(n==="S"){const l=s*2-i,m=r*2-o;t.x1=l,t.y1=m,a=["C",l,m,...c]}else if(n==="T"){const l=s*2-(t.qx?t.qx:0),m=r*2-(t.qy?t.qy:0);t.qx=l,t.qy=m,a=["Q",l,m,...c]}else if(n==="Q"){const[l,m]=c;t.qx=l,t.qy=m}return a},gt=e=>ft(e)&&e.every(([t])=>"ACLMQZ".includes(t)),et={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},O=e=>{if(gt(e))return e.slice(0);const t=H(e),n={...et},s=t.length;for(let r=0;r<s;r+=1){t[r],t[r]=Me(t[r],n);const i=t[r],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},z=(e,t,n)=>{const[s,r]=e,[i,o]=t;return[s+(i-s)*n,r+(o-r)*n]},Mt=(e,t,n,s,r)=>{const{min:i,max:o}=Math;let c={x:0,y:0};const a=()=>Xt([e,t],[n,s]);if(typeof r=="number"){const l=a();if(r<=0)c={x:e,y:t};else if(r>=l)c={x:n,y:s};else{const[m,u]=z([e,t],[n,s],r/l);c={x:m,y:u}}}return{point:c,get length(){return a()},get bbox(){return{min:{x:i(e,n),y:i(t,s)},max:{x:o(e,n),y:o(t,s)}}}}},Ne=(e,t,n)=>{const s=n/2,r=Math.sin(s),i=Math.cos(s),o=e**2*r**2,c=t**2*i**2,a=Math.sqrt(o+c)*n;return Math.abs(a)},we=(e,t,n,s,r,i,o)=>{const{cos:c,sin:a,min:l,max:m}=Math,u=c(r),y=a(r),x=v=>e+n*c(v)*u-s*a(v)*y,f=v=>t+s*a(v)*u+n*c(v)*y,h=x(i),g=f(i),p=x(o),b=f(o);return{min:{x:l(h,p),y:l(g,b)},max:{x:m(h,p),y:m(g,b)}}},$t=(e,t)=>{const{x:n,y:s}=e,{x:r,y:i}=t,o=n*r+s*i,c=Math.sqrt((n**2+s**2)*(r**2+i**2));return(n*i-s*r<0?-1:1)*Math.acos(o/c)},ve=(e,t,n,s,r,i,o,c,a,l)=>{const{abs:m,sin:u,cos:y,sqrt:x,PI:f}=Math;let h=m(n),g=m(s);const b=(r%360+360)%360*(f/180);if(e===c&&t===a)return{point:{x:c,y:a},length:0,bbox:{min:{x:c,y:a},max:{x:c,y:a}}};if(h===0||g===0)return Mt(e,t,c,a,l);const v=(e-c)/2,d=(t-a)/2,w={x:y(b)*v+u(b)*d,y:-u(b)*v+y(b)*d},T=w.x**2/h**2+w.y**2/g**2;T>1&&(h*=x(T),g*=x(T));const j=h**2*g**2-h**2*w.y**2-g**2*w.x**2,B=h**2*w.y**2+g**2*w.x**2;let Q=j/B;Q=Q<0?0:Q;const nt=(i!==o?1:-1)*x(Q),q={x:nt*(h*w.y/g),y:nt*(-(g*w.x)/h)},D={x:y(b)*q.x-u(b)*q.y+(e+c)/2,y:u(b)*q.x+y(b)*q.y+(t+a)/2},J={x:(w.x-q.x)/h,y:(w.y-q.y)/g},I=$t({x:1,y:0},J),st={x:(-w.x-q.x)/h,y:(-w.y-q.y)/g};let L=$t(J,st);!o&&L>0?L-=2*f:o&&L<0&&(L+=2*f),L%=2*f;const S=I+L*(l||0),rt=I+L,_=h*y(S),K=g*u(S);return{point:{x:y(b)*_-u(b)*K+D.x,y:u(b)*_+y(b)*K+D.y},center:D,angle:S,startAngle:I,endAngle:rt,radiusX:h,radiusY:g,get length(){return Ne(h,g,L)},get bbox(){return we(D.x,D.y,h,g,b,I,I+L)}}},Pe={x:0,y:0},kt=[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213],Ae=[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872],Ce=e=>{const t=[];for(let n=e,s=n.length,r=s-1;s>1;s-=1,r-=1){const i=[];for(let o=0;o<r;o+=1)i.push({x:r*(n[o+1].x-n[o].x),y:r*(n[o+1].y-n[o].y),t:0});t.push(i),n=i}return t},Te=(e,t)=>{if(t===0)return e[0].t=0,e[0];const n=e.length-1;if(t===1)return e[n].t=1,e[n];const s=1-t;let r=e;if(n===0)return e[0].t=t,e[0];if(n===1)return{x:s*r[0].x+t*r[1].x,y:s*r[0].y+t*r[1].y,t};const i=s*s,o=t*t;let c=0,a=0,l=0,m=0;return n===2?(r=[r[0],r[1],r[2],Pe],c=i,a=s*t*2,l=o):n===3&&(c=i*s,a=i*t*3,l=s*o*3,m=t*o),{x:c*r[0].x+a*r[1].x+l*r[2].x+m*r[3].x,y:c*r[0].y+a*r[1].y+l*r[2].y+m*r[3].y,t}},Le=(e,t)=>{const n=e(t),s=n.x*n.x+n.y*n.y;return Math.sqrt(s)},$e=e=>{const n=kt.length;let s=0;for(let r=0,i;r<n;r++)i=.5*kt[r]+.5,s+=Ae[r]*Le(e,i);return .5*s},Vt=e=>{const t=[];for(let s=0,r=e.length,i=2;s<r;s+=i)t.push({x:e[s],y:e[s+1]});const n=Ce(t);return $e(s=>Te(n[0],s))},ke=1e-8,Nt=e=>{const t=Math.min(e[0],e[2]),n=Math.max(e[0],e[2]);if(e[1]>=e[0]?e[2]>=e[1]:e[2]<=e[1])return[t,n];const s=(e[0]*e[2]-e[1]*e[1])/(e[0]-2*e[1]+e[2]);return s<t?[s,n]:[t,s]},qt=e=>{const t=e[0]-3*e[1]+3*e[2]-e[3];if(Math.abs(t)<ke)return e[0]===e[3]&&e[0]===e[1]?[e[0],e[3]]:Nt([e[0],-.5*e[0]+1.5*e[1],e[0]-3*e[1]+3*e[2]]);const n=-e[0]*e[2]+e[0]*e[3]-e[1]*e[2]-e[1]*e[3]+e[1]*e[1]+e[2]*e[2];if(n<=0)return[Math.min(e[0],e[3]),Math.max(e[0],e[3])];const s=Math.sqrt(n);let r=Math.min(e[0],e[3]),i=Math.max(e[0],e[3]);const o=e[0]-2*e[1]+e[2];for(let c=(o+s)/t,a=1;a<=2;c=(o-s)/t,a++)if(c>0&&c<1){const l=e[0]*(1-c)*(1-c)*(1-c)+e[1]*3*(1-c)*(1-c)*c+e[2]*3*(1-c)*c*c+e[3]*c*c*c;l<r&&(r=l),l>i&&(i=l)}return[r,i]},qe=([e,t,n,s,r,i,o,c],a)=>{const l=1-a;return{x:l**3*e+3*l**2*a*n+3*l*a**2*r+a**3*o,y:l**3*t+3*l**2*a*s+3*l*a**2*i+a**3*c}},Se=(e,t,n,s,r,i,o,c,a)=>{const l=typeof a=="number";let m={x:e,y:t};const u=()=>Vt([e,t,n,s,r,i,o,c]);if(l){const y=u();a<=0||(a>=y?m={x:o,y:c}:m=qe([e,t,n,s,r,i,o,c],a/y))}return{point:m,get length(){return u()},get bbox(){const y=qt([e,n,r,o]),x=qt([t,s,i,c]);return{min:{x:y[0],y:x[0]},max:{x:y[1],y:x[1]}}}}},Ee=([e,t,n,s,r,i],o)=>{const c=1-o;return{x:c**2*e+2*c*o*n+o**2*r,y:c**2*t+2*c*o*s+o**2*i}},ze=(e,t,n,s,r,i,o)=>{const c=typeof o=="number";let a={x:e,y:t};const l=()=>Vt([e,t,n,s,r,i]);if(c){const m=l();o<=0||(o>=m?a={x:r,y:i}:a=Ee([e,t,n,s,r,i],o/m))}return{point:a,get length(){return l()},get bbox(){const m=Nt([e,n,r]),u=Nt([t,s,i]);return{min:{x:m[0],y:u[0]},max:{x:m[1],y:u[1]}}}}},wt=1e-5,yt=(e,t)=>{const n=O(e),s=typeof t=="number";let r=!1,i=[],o="M",c=0,a=0,l=0,m=0,u=n[0];const y=[],x=[];let f={x:0,y:0},h={x:0,y:0},g=f,p=0,b={point:{x:0,y:0},length:0,bbox:{min:{x:0,y:0},max:{x:0,y:0}}};for(let v=0,d=n.length;v<d;v+=1)u=n[v],[o]=u,r=o==="M",i=r?i:[c,a,...u.slice(1)],s&&t<wt&&(g=f),r?([,l,m]=u,f={x:l,y:m},h={x:l,y:m},b={point:f,length:0,bbox:{min:f,max:h}}):o==="L"?b=Mt(...i,s?t-p:void 0):o==="A"?b=ve(...i,s?t-p:void 0):o==="C"?b=Se(...i,s?t-p:void 0):o==="Q"?b=ze(...i,s?t-p:void 0):o==="Z"&&(i=[c,a,l,m],b=Mt(...i,s?t-p:void 0)),s&&p<t&&p+b.length>=t&&(g=b.point),y.push(b.bbox.min),x.push(b.bbox.max),p+=b.length,[c,a]=o!=="Z"?u.slice(-2):[l,m];return s&&t>p-wt&&(g={x:c,y:a}),{point:g,length:p,get bbox(){return{min:{x:Math.min(...y.map(v=>v.x)),y:Math.min(...y.map(v=>v.y))},max:{x:Math.max(...x.map(v=>v.x)),y:Math.max(...x.map(v=>v.y))}}}}},St=e=>{if(!e)return{x:0,y:0,width:0,height:0,x2:0,y2:0,cx:0,cy:0,cz:0};const t=yt(e),{min:{x:n,y:s},max:{x:r,y:i}}=t.bbox,o=r-n,c=i-s;return{width:o,height:c,x:n,y:s,x2:r,y2:i,cx:n+o/2,cy:s+c/2,cz:Math.max(o,c)+Math.min(o,c)/2}},vt=(e,t,n)=>{if(e[n].length>7){e[n].shift();const s=e[n];let r=n;for(;s.length;)t[n]="A",e.splice(r+=1,0,["C",...s.splice(0,6)]);e.splice(n,1)}},Wt=e=>gt(e)&&e.every(([t])=>"MC".includes(t)),it=(e,t,n)=>{const s=e*Math.cos(n)-t*Math.sin(n),r=e*Math.sin(n)+t*Math.cos(n);return{x:s,y:r}},Gt=(e,t,n,s,r,i,o,c,a,l)=>{let m=e,u=t,y=n,x=s,f=c,h=a;const g=Math.PI*120/180,p=Math.PI/180*(+r||0);let b=[],v,d,w,T,j;if(l)[d,w,T,j]=l;else{v=it(m,u,-p),m=v.x,u=v.y,v=it(f,h,-p),f=v.x,h=v.y;const A=(m-f)/2,k=(u-h)/2;let R=A*A/(y*y)+k*k/(x*x);R>1&&(R=Math.sqrt(R),y*=R,x*=R);const pt=y*y,bt=x*x,Tt=(i===o?-1:1)*Math.sqrt(Math.abs((pt*bt-pt*k*k-bt*A*A)/(pt*k*k+bt*A*A)));T=Tt*y*k/x+(m+f)/2,j=Tt*-x*A/y+(u+h)/2,d=Math.asin(((u-j)/x*10**9>>0)/10**9),w=Math.asin(((h-j)/x*10**9>>0)/10**9),d=m<T?Math.PI-d:d,w=f<T?Math.PI-w:w,d<0&&(d=Math.PI*2+d),w<0&&(w=Math.PI*2+w),o&&d>w&&(d-=Math.PI*2),!o&&w>d&&(w-=Math.PI*2)}let B=w-d;if(Math.abs(B)>g){const A=w,k=f,R=h;w=d+g*(o&&w>d?1:-1),f=T+y*Math.cos(w),h=j+x*Math.sin(w),b=Gt(f,h,y,x,r,0,o,k,R,[w,A,T,j])}B=w-d;const Q=Math.cos(d),nt=Math.sin(d),q=Math.cos(w),D=Math.sin(w),J=Math.tan(B/4),I=4/3*y*J,st=4/3*x*J,L=[m,u],S=[m+I*nt,u-st*Q],rt=[f+I*D,h-st*q],_=[f,h];if(S[0]=2*L[0]-S[0],S[1]=2*L[1]-S[1],l)return[...S,...rt,..._,...b];b=[...S,...rt,..._,...b];const K=[];for(let A=0,k=b.length;A<k;A+=1)K[A]=A%2?it(b[A-1],b[A],p).y:it(b[A],b[A+1],p).x;return K},Oe=(e,t,n,s,r,i)=>{const o=.3333333333333333,c=2/3;return[o*e+c*n,o*t+c*s,o*r+c*n,o*i+c*s,r,i]},Et=(e,t,n,s)=>{const r=z([e,t],[n,s],.3333333333333333),i=z([e,t],[n,s],2/3);return[...r,...i,n,s]},ct=(e,t)=>{const[n]=e,s=e.slice(1).map(Number),[r,i]=s;let o;const{x1:c,y1:a,x:l,y:m}=t;return"TQ".includes(n)||(t.qx=null,t.qy=null),n==="M"?(t.x=r,t.y=i,e):n==="A"?(o=[c,a,...s],["C",...Gt(...o)]):n==="Q"?(t.qx=r,t.qy=i,o=[c,a,...s],["C",...Oe(...o)]):n==="L"?["C",...Et(c,a,r,i)]:n==="Z"?["C",...Et(c,a,l,m)]:e},lt=e=>{if(Wt(e))return e.slice(0);const t=O(e),n={...et},s=[];let r="",i=t.length;for(let o=0;o<i;o+=1){[r]=t[o],s[o]=r,t[o]=ct(t[o],n),vt(t,s,o),i=t.length;const c=t[o],a=c.length;n.x1=+c[a-2],n.y1=+c[a-1],n.x2=+c[a-4]||n.x1,n.y2=+c[a-3]||n.y1}return t},je=(e,t,n,s,r,i,o,c)=>3*((c-t)*(n+r)-(o-e)*(s+i)+s*(e-r)-n*(t-i)+c*(r+e/3)-o*(i+t/3))/20,te=e=>{let t=0,n=0,s=0;return lt(e).map(r=>{switch(r[0]){case"M":return[,t,n]=r,0;default:return s=je(t,n,...r.slice(1)),[t,n]=r.slice(-2),s}}).reduce((r,i)=>r+i,0)},F=e=>yt(e).length,Ie=e=>te(lt(e))>=0,W=(e,t)=>yt(e,t).point,Ct=(e,t)=>{const n=Y(e);let s=n.slice(0),r=F(s),i=s.length-1,o=0,c=0,a=n[0];const[l,m]=a.slice(-2),u={x:l,y:m};if(i<=0||!t||!Number.isFinite(t))return{segment:a,index:0,length:c,point:u,lengthAtSegment:o};if(t>=r)return s=n.slice(0,-1),o=F(s),c=r-o,{segment:n[i],index:i,length:c,lengthAtSegment:o};const y=[];for(;i>0;)a=s[i],s=s.slice(0,-1),o=F(s),c=r-o,r=o,y.push({segment:a,index:i,length:c,lengthAtSegment:o}),i-=1;return y.find(({lengthAtSegment:x})=>x<=t)},xt=(e,t)=>{const n=Y(e),s=O(n),r=F(n),i=d=>{const w=d.x-t.x,T=d.y-t.y;return w*w+T*T};let o=8,c,a={x:0,y:0},l=0,m=0,u=1/0;for(let d=0;d<=r;d+=o)c=W(s,d),l=i(c),l<u&&(a=c,m=d,u=l);o/=2;let y,x,f=0,h=0,g=0,p=0;for(;o>1e-6&&(f=m-o,y=W(s,f),g=i(y),h=m+o,x=W(s,h),p=i(x),f>=0&&g<u?(a=y,m=f,u=g):h<=r&&p<u?(a=x,m=h,u=p):o/=2,!(o<1e-5)););const b=Ct(n,m),v=Math.sqrt(u);return{closest:a,distance:v,segment:b}},De=(e,t)=>xt(e,t).closest,Re=(e,t)=>xt(e,t).segment,Xe=(e,t)=>Ct(e,t).segment,Ze=(e,t)=>{const{distance:n}=xt(e,t);return Math.abs(n)<wt},ee=e=>{if(typeof e!="string"||!e.length)return!1;const t=new Rt(e);for(V(t);t.index<t.max&&!t.err.length;)Dt(t);return!t.err.length&&"mM".includes(t.segments[0][0])},ne=e=>G(e)&&e.slice(1).every(([t])=>t===t.toLowerCase()),at={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"]},Ye=e=>{let{x1:t,y1:n,x2:s,y2:r}=e;return[t,n,s,r]=[t,n,s,r].map(i=>+i),[["M",t,n],["L",s,r]]},Qe=e=>{const t=[],n=(e.points||"").trim().split(/[\s|,]/).map(r=>+r);let s=0;for(;s<n.length;)t.push([s?"L":"M",n[s],n[s+1]]),s+=2;return e.type==="polygon"?[...t,["z"]]:t},Fe=e=>{let{cx:t,cy:n,r:s}=e;return[t,n,s]=[t,n,s].map(r=>+r),[["M",t-s,n],["a",s,s,0,1,0,2*s,0],["a",s,s,0,1,0,-2*s,0]]},He=e=>{let{cx:t,cy:n}=e,s=e.rx||0,r=e.ry||s;return[t,n,s,r]=[t,n,s,r].map(i=>+i),[["M",t-s,n],["a",s,r,0,1,0,2*s,0],["a",s,r,0,1,0,-2*s,0]]},Be=e=>{const t=+e.x||0,n=+e.y||0,s=+e.width,r=+e.height;let i=+(e.rx||0),o=+(e.ry||i);return i||o?(i*2>s&&(i-=(i*2-s)/2),o*2>r&&(o-=(o*2-r)/2),[["M",t+i,n],["h",s-i*2],["s",i,0,i,o],["v",r-o*2],["s",0,o,-i,o],["h",-s+i*2],["s",-i,0,-i,-o],["v",-r+o*2],["s",0,-o,i,-o]]):[["M",t,n],["h",s],["v",r],["H",t],["Z"]]},se=(e,t)=>{const s=(t||document).defaultView||window,r=Object.keys(at),i=e instanceof s.SVGElement,o=i?e.tagName:null;if(o&&[...r,"path"].every(u=>o!==u))throw TypeError(`${$}: "${o}" is not SVGElement`);const c=i?o:e.type,a=at[c],l={type:c};i?a.forEach(u=>{l[u]=e.getAttribute(u)}):Object.assign(l,e);let m=[];return c==="circle"?m=Fe(l):c==="ellipse"?m=He(l):["polyline","polygon"].includes(c)?m=Qe(l):c==="rect"?m=Be(l):c==="line"?m=Ye(l):["glyph","path"].includes(c)&&(m=Y(i?e.getAttribute("d")||"":e.d||"")),G(m)&&m.length?m:!1},mt=(e,t)=>{let{round:n}=ht;if(t==="off"||n==="off")return[...e];n=typeof t=="number"&&t>=0?t:n;const s=typeof n=="number"&&n>=1?10**n:1;return e.map(r=>{const i=r.slice(1).map(Number).map(o=>n?Math.round(o*s)/s:Math.round(o));return[r[0],...i]})},Pt=(e,t)=>mt(e,t).map(n=>n[0]+n.slice(1).join(" ")).join(""),Je=(e,t,n)=>{const s=n||document,r=s.defaultView||window,i=Object.keys(at),o=e instanceof r.SVGElement,c=o?e.tagName:null;if(c==="path")throw TypeError(`${$}: "${c}" is already SVGPathElement`);if(c&&i.every(h=>c!==h))throw TypeError(`${$}: "${c}" is not SVGElement`);const a=s.createElementNS("http://www.w3.org/2000/svg","path"),l=o?c:e.type,m=at[l],u={type:l},y=ht.round,x=se(e,s),f=x&&x.length?Pt(x,y):"";return o?(m.forEach(h=>{u[h]=e.getAttribute(h)}),Object.values(e.attributes).forEach(({name:h,value:g})=>{m.includes(h)||a.setAttribute(h,g)})):(Object.assign(u,e),Object.keys(u).forEach(h=>{!m.includes(h)&&h!=="type"&&a.setAttribute(h.replace(/[A-Z]/g,g=>`-${g.toLowerCase()}`),u[h])})),ee(f)?(a.setAttribute("d",f),t&&o&&(e.before(a,e),e.remove()),a):!1},zt=e=>{const t=[];let n,s=-1;return e.forEach(r=>{r[0]==="M"?(n=[r],s+=1):n.push(r),t[s]=n}),t},re=e=>{let t=new P;const{origin:n}=e,[s,r]=n,{translate:i}=e,{rotate:o}=e,{skew:c}=e,{scale:a}=e;return Array.isArray(i)&&i.length>=2&&i.every(l=>!Number.isNaN(+l))&&i.some(l=>l!==0)?t=t.translate(...i):typeof i=="number"&&!Number.isNaN(i)&&(t=t.translate(i)),(o||c||a)&&(t=t.translate(s,r),Array.isArray(o)&&o.length>=2&&o.every(l=>!Number.isNaN(+l))&&o.some(l=>l!==0)?t=t.rotate(...o):typeof o=="number"&&!Number.isNaN(o)&&(t=t.rotate(o)),Array.isArray(c)&&c.length===2&&c.every(l=>!Number.isNaN(+l))&&c.some(l=>l!==0)?(t=c[0]?t.skewX(c[0]):t,t=c[1]?t.skewY(c[1]):t):typeof c=="number"&&!Number.isNaN(c)&&(t=t.skewX(c)),Array.isArray(a)&&a.length>=2&&a.every(l=>!Number.isNaN(+l))&&a.some(l=>l!==1)?t=t.scale(...a):typeof a=="number"&&!Number.isNaN(a)&&(t=t.scale(a)),t=t.translate(-s,-r)),t},At=e=>{if(ne(e))return e.slice(0);const t=Y(e);let n=0,s=0,r=0,i=0;return t.map(o=>{const c=o.slice(1).map(Number),[a]=o,l=a.toLowerCase();if(a==="M")return[n,s]=c,r=n,i=s,["M",n,s];let m=[];if(a!==l)if(l==="a")m=[l,c[0],c[1],c[2],c[3],c[4],c[5]-n,c[6]-s];else if(l==="v")m=[l,c[0]-s];else if(l==="h")m=[l,c[0]-n];else{const y=c.map((x,f)=>x-(f%2?s:n));m=[l,...y]}else a==="m"&&(r=c[0]+n,i=c[1]+s),m=[l,...c];const u=m.length;return l==="z"?(n=r,s=i):l==="h"?n+=m[1]:l==="v"?s+=m[1]:(n+=m[u-2],s+=m[u-1]),m})},_e=(e,t,n,s)=>{const[r]=e,i=p=>Math.round(p*10**4)/10**4,o=e.slice(1).map(p=>+p),c=t.slice(1).map(p=>+p),{x1:a,y1:l,x2:m,y2:u,x:y,y:x}=n;let f=e;const[h,g]=c.slice(-2);if("TQ".includes(r)||(n.qx=null,n.qy=null),["V","H","S","T","Z"].includes(r))f=[r,...o];else if(r==="L")i(y)===i(h)?f=["V",g]:i(x)===i(g)&&(f=["H",h]);else if(r==="C"){const[p,b]=c;"CS".includes(s)&&(i(p)===i(a*2-m)&&i(b)===i(l*2-u)||i(a)===i(m*2-y)&&i(l)===i(u*2-x))&&(f=["S",...c.slice(-4)]),n.x1=p,n.y1=b}else if(r==="Q"){const[p,b]=c;n.qx=p,n.qy=b,"QT".includes(s)&&(i(p)===i(a*2-m)&&i(b)===i(l*2-u)||i(a)===i(m*2-y)&&i(l)===i(u*2-x))&&(f=["T",...c.slice(-2)])}return f},Ot=(e,t)=>{const n=H(e),s=O(n),r={...et},i=[],o=n.length;let c="",a="",l=0,m=0,u=0,y=0;for(let h=0;h<o;h+=1){[c]=n[h],i[h]=c,h&&(a=i[h-1]),n[h]=_e(n[h],s[h],r,a);const g=n[h],p=g.length;switch(r.x1=+g[p-2],r.y1=+g[p-1],r.x2=+g[p-4]||r.x1,r.y2=+g[p-3]||r.y1,c){case"Z":l=u,m=y;break;case"H":[,l]=g;break;case"V":[,m]=g;break;default:[l,m]=g.slice(-2).map(Number),c==="M"&&(u=l,y=m)}r.x=l,r.y=m}const x=mt(n,t),f=mt(At(n),t);return x.map((h,g)=>g?h.join("").length<f[g].join("").length?h:f[g]:h)},Ke=e=>{const t=e.slice(1).map((n,s,r)=>s?[...r[s-1].slice(-2),...n.slice(1)]:[...e[0].slice(1),...n.slice(1)]).map(n=>n.map((s,r)=>n[n.length-r-2*(1-r%2)])).reverse();return[["M",...t[0].slice(0,2)],...t.map(n=>["C",...n.slice(2)])]},ot=e=>{const t=H(e),n=t.slice(-1)[0][0]==="Z",s=O(t).map((r,i)=>{const[o,c]=r.slice(-2).map(Number);return{seg:t[i],n:r,c:t[i][0],x:o,y:c}}).map((r,i,o)=>{const c=r.seg,a=r.n,l=i&&o[i-1],m=o[i+1],u=r.c,y=o.length,x=i?o[i-1].x:o[y-1].x,f=i?o[i-1].y:o[y-1].y;let h=[];switch(u){case"M":h=n?["Z"]:[u,x,f];break;case"A":h=[u,...c.slice(1,-3),c[5]===1?0:1,x,f];break;case"C":m&&m.c==="S"?h=["S",c[1],c[2],x,f]:h=[u,c[3],c[4],c[1],c[2],x,f];break;case"S":l&&"CS".includes(l.c)&&(!m||m.c!=="S")?h=["C",a[3],a[4],a[1],a[2],x,f]:h=[u,a[1],a[2],x,f];break;case"Q":m&&m.c==="T"?h=["T",x,f]:h=[u,...c.slice(1,-2),x,f];break;case"T":l&&"QT".includes(l.c)&&(!m||m.c!=="T")?h=["Q",a[1],a[2],x,f]:h=[u,x,f];break;case"Z":h=["M",x,f];break;case"H":h=[u,x];break;case"V":h=[u,f];break;default:h=[u,...c.slice(1,-2),x,f]}return h});return n?s.reverse():[s[0],...s.slice(1).reverse()]},Ue=(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]},jt=(e,t,n)=>{const[s,r,i]=n,[o,c,a]=Ue(e,[...t,0,1]),l=o-s,m=c-r,u=a-i;return[l*(Math.abs(i)/Math.abs(u)||1)+s,m*(Math.abs(i)/Math.abs(u)||1)+r]},ie=e=>{const t=ft(e)?e:H(e),n=gt(t)?t:O(t),s={...et},r=[];let i=[],o=0,c="";const a=[];let l=0,m=t.length;for(l=0;l<m;l+=1)t[l]&&([c]=t[l]),r[l]=c,c==="A"&&(i=ct(n[l],s),t[l]=ct(n[l],s),vt(t,r,l),n[l]=ct(n[l],s),vt(n,r,l),m=Math.max(t.length,n.length)),i=n[l],o=i.length,s.x1=+i[o-2],s.y1=+i[o-1],s.x2=+i[o-4]||s.x1,s.y2=+i[o-3]||s.y1,a.push(t[l]);return a},It=(e,t)=>{let n=0,s=0,r,i,o,c,a,l;const m=ie(e),u=t&&Object.keys(t);if(!t||u&&!u.length)return m.slice(0);const y=O(m);if(!t.origin){const{origin:d}=ht;Object.assign(t,{origin:d})}const x=re(t),{origin:f}=t,h={...et};let g=[],p=0,b="";const v=[];if(!x.isIdentity){for(r=0,o=m.length;r<o;r+=1){g=y[r],p=g.length,h.x1=+g[p-2],h.y1=+g[p-1],h.x2=+g[p-4]||h.x1,h.y2=+g[p-3]||h.y1;const d={s:m[r],c:m[r][0],x:h.x1,y:h.y1};v.push(d)}return v.map(d=>{if(b=d.c,g=d.s,b==="L"||b==="H"||b==="V")return[a,l]=jt(x,[d.x,d.y],f),n!==a&&s!==l?g=["L",a,l]:s===l?g=["H",a]:n===a&&(g=["V",l]),n=a,s=l,g;for(i=1,c=g.length;i<c;i+=2)[n,s]=jt(x,[+g[i],+g[i+1]],f),g[i]=n,g[i+1]=s;return g})}return m.slice(0)},Ve=e=>{const n=e.slice(0,2),s=e.slice(2,4),r=e.slice(4,6),i=e.slice(6,8),o=z(n,s,.5),c=z(s,r,.5),a=z(r,i,.5),l=z(o,c,.5),m=z(c,a,.5),u=z(l,m,.5);return[["C",...o,...l,...u],["C",...m,...a,...i]]};class N{constructor(t,n){const s=n||{},r=typeof t>"u";if(r||!t.length)throw TypeError(`${$}: "pathValue" is ${r?"undefined":"empty"}`);const i=Y(t);this.segments=i;const{width:o,height:c,cx:a,cy:l,cz:m}=this.bbox,{round:u,origin:y}=s;let x;if(u==="auto"){const h=`${Math.floor(Math.max(o,c))}`.length;x=h>=4?0:4-h}else Number.isInteger(u)||u==="off"?x=u:x=ht.round;let f=[a,l,m];if(Array.isArray(y)&&y.length>=2){const[h,g,p]=y.map(Number);f=[Number.isNaN(h)?a:h,Number.isNaN(g)?l:g,Number.isNaN(p)?m:p]}return this.round=x,this.origin=f,this}get bbox(){return St(this.segments)}get length(){return F(this.segments)}getBBox(){return this.bbox}getTotalLength(){return this.length}getPointAtLength(t){return W(this.segments,t)}toAbsolute(){const{segments:t}=this;return this.segments=H(t),this}toRelative(){const{segments:t}=this;return this.segments=At(t),this}toCurve(){const{segments:t}=this;return this.segments=lt(t),this}reverse(t){this.toAbsolute();const{segments:n}=this,s=zt(n),r=s.length>1?s:!1,i=r?r.map((c,a)=>t?a?ot(c):c.slice(0):ot(c)):n.slice(0);let o=[];return r?o=i.flat(1):o=t?n:ot(n),this.segments=o.slice(0),this}normalize(){const{segments:t}=this;return this.segments=O(t),this}optimize(){const{segments:t}=this;return this.segments=Ot(t,this.round),this}transform(t){if(!t||typeof t!="object"||typeof t=="object"&&!["translate","rotate","skew","scale"].some(a=>a in t))return this;const{segments:n,origin:[s,r,i]}=this,o={};for(const[a,l]of Object.entries(t))a==="skew"&&Array.isArray(l)||(a==="rotate"||a==="translate"||a==="origin"||a==="scale")&&Array.isArray(l)?o[a]=l.map(Number):a!=="origin"&&typeof Number(l)=="number"&&(o[a]=Number(l));const{origin:c}=o;if(Array.isArray(c)&&c.length>=2){const[a,l,m]=c.map(Number);o.origin=[Number.isNaN(a)?s:a,Number.isNaN(l)?r:l,m||i]}else o.origin=[s,r,i];return this.segments=It(n,o),this}flipX(){return this.transform({rotate:[0,180,0]}),this}flipY(){return this.transform({rotate:[180,0,0]}),this}toString(){return Pt(this.segments,this.round)}}M(N,"CSSMatrix",P),M(N,"getSVGMatrix",re),M(N,"getPathBBox",St),M(N,"getPathArea",te),M(N,"getTotalLength",F),M(N,"getDrawDirection",Ie),M(N,"getPointAtLength",W),M(N,"pathFactory",yt),M(N,"getPropertiesAtLength",Ct),M(N,"getPropertiesAtPoint",xt),M(N,"polygonLength",xe),M(N,"polygonArea",ye),M(N,"getClosestPoint",De),M(N,"getSegmentOfPoint",Re),M(N,"getSegmentAtLength",Xe),M(N,"isPointInStroke",Ze),M(N,"isValidPath",ee),M(N,"isPathArray",G),M(N,"isAbsoluteArray",ft),M(N,"isRelativeArray",ne),M(N,"isCurveArray",Wt),M(N,"isNormalizedArray",gt),M(N,"shapeToPath",Je),M(N,"shapeToPathArray",se),M(N,"parsePathString",Y),M(N,"roundPath",mt),M(N,"splitPath",zt),M(N,"splitCubic",Ve),M(N,"replaceArc",ie),M(N,"optimizePath",Ot),M(N,"reverseCurve",Ke),M(N,"reversePath",ot),M(N,"normalizePath",O),M(N,"transformPath",It),M(N,"pathToAbsolute",H),M(N,"pathToRelative",At),M(N,"pathToCurve",lt),M(N,"pathToString",Pt);module.exports=N;
1
+ "use strict";var he=Object.defineProperty;var fe=(e,t,n)=>t in e?he(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var N=(e,t,n)=>fe(e,typeof t!="symbol"?t+"":t,n);const st={origin:[0,0,0],round:4},E="SVGPathCommander Error",tt={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},$t=e=>{let t=e.pathValue[e.segmentStart],n=t.toLowerCase();const{data:r}=e;for(;r.length>=tt[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,tt[n])]),!!tt[n]););},ye=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=`${E}: invalid Arc flag "${n[t]}", expecting 0 or 1 at index ${t}`},F=e=>e>=48&&e<=57,U="Invalid path value",ge=e=>{const{max:t,pathValue:n,index:r}=e;let s=r,i=!1,o=!1,c=!1,l=!1,a;if(s>=t){e.err=`${E}: ${U} at index ${s}, "pathValue" is missing param`;return}if(a=n.charCodeAt(s),(a===43||a===45)&&(s+=1,a=n.charCodeAt(s)),!F(a)&&a!==46){e.err=`${E}: ${U} 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&&F(a)){e.err=`${E}: ${U} at index ${r}, "${n[r]}" illegal number`;return}for(;s<t&&F(n.charCodeAt(s));)s+=1,o=!0;a=n.charCodeAt(s)}if(a===46){for(l=!0,s+=1;F(n.charCodeAt(s));)s+=1,c=!0;a=n.charCodeAt(s)}if(a===101||a===69){if(l&&!o&&!c){e.err=`${E}: ${U} at index ${s}, "${n[s]}" invalid float exponent`;return}if(s+=1,a=n.charCodeAt(s),(a===43||a===45)&&(s+=1),s<t&&F(n.charCodeAt(s)))for(;s<t&&F(n.charCodeAt(s));)s+=1;else{e.err=`${E}: ${U} at index ${s}, "${n[s]}" invalid integer exponent`;return}}e.index=s,e.param=+e.pathValue.slice(r,s)},xe=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),et=e=>{const{pathValue:t,max:n}=e;for(;e.index<n&&xe(t.charCodeAt(e.index));)e.index+=1},pe=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}},de=e=>F(e)||e===43||e===45||e===46,Me=e=>(e|32)===97,be=e=>{switch(e|32){case 109:case 77:return!0;default:return!1}},Qt=e=>{var l;const{max:t,pathValue:n,index:r,segments:s}=e,i=n.charCodeAt(r),o=tt[n[r].toLowerCase()];if(e.segmentStart=r,!pe(i)){e.err=`${E}: ${U} "${n[r]}" is not a path command at index ${r}`;return}const c=s[s.length-1];if(!be(i)&&((l=c==null?void 0:c[0])==null?void 0:l.toLocaleLowerCase())==="z"){e.err=`${E}: ${U} "${n[r]}" is not a MoveTo path command at index ${r}`;return}if(e.index+=1,et(e),e.data=[],!o){$t(e);return}for(;;){for(let a=o;a>0;a-=1){if(Me(i)&&(a===3||a===4)?ye(e):ge(e),e.err.length)return;e.data.push(e.param),et(e),e.index<t&&n.charCodeAt(e.index)===44&&(e.index+=1,et(e))}if(e.index>=e.max||!de(n.charCodeAt(e.index)))break}$t(e)};class Xt{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 q=e=>{if(typeof e!="string")return e.slice(0);const t=new Xt(e);for(et(t);t.index<t.max&&!t.err.length;)Qt(t);if(t!=null&&t.err.length)throw TypeError(t.err);return t.segments},we=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},Pt=(e,t)=>Math.sqrt((e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])),Ne=e=>e.reduce((t,n,r)=>r?t+Pt(e[r-1],n):0,0);var Ae=Object.defineProperty,Ce=(e,t,n)=>t in e?Ae(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,k=(e,t,n)=>Ce(e,typeof t!="symbol"?t+"":t,n);const ve={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},Bt=e=>(e instanceof Float64Array||e instanceof Float32Array||Array.isArray(e)&&e.every(t=>typeof t=="number"))&&[6,16].some(t=>e.length===t),Yt=e=>e instanceof DOMMatrix||e instanceof v||typeof e=="object"&&Object.keys(ve).every(t=>e&&t in e),it=e=>{const t=new v,n=Array.from(e);if(!Bt(n))throw TypeError(`CSSMatrix: "${n.join(",")}" must be an array with 6/16 numbers.`);if(n.length===16){const[r,s,i,o,c,l,a,m,u,g,f,h,y,x,p,d]=n;t.m11=r,t.a=r,t.m21=c,t.c=c,t.m31=u,t.m41=y,t.e=y,t.m12=s,t.b=s,t.m22=l,t.d=l,t.m32=g,t.m42=x,t.f=x,t.m13=i,t.m23=a,t.m33=f,t.m43=p,t.m14=o,t.m24=m,t.m34=h,t.m44=d}else if(n.length===6){const[r,s,i,o,c,l]=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=c,t.e=c,t.m42=l,t.f=l}return t},Ht=e=>{if(Yt(e))return it([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.`)},Ft=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 v;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 c=o.split(",").map(h=>h.includes("rad")?parseFloat(h)*(180/Math.PI):parseFloat(h)),[l,a,m,u]=c,g=[l,a,m],f=[l,a,m,u];if(i==="perspective"&&l&&[a,m].every(h=>h===void 0))n.m34=-1/l;else if(i.includes("matrix")&&[6,16].includes(c.length)&&c.every(h=>!Number.isNaN(+h))){const h=c.map(y=>Math.abs(y)<1e-6?0:y);n=n.multiply(it(h))}else if(i==="translate3d"&&g.every(h=>!Number.isNaN(+h)))n=n.translate(l,a,m);else if(i==="translate"&&l&&m===void 0)n=n.translate(l,a||0,0);else if(i==="rotate3d"&&f.every(h=>!Number.isNaN(+h))&&u)n=n.rotateAxisAngle(l,a,m,u);else if(i==="rotate"&&l&&[a,m].every(h=>h===void 0))n=n.rotate(0,0,l);else if(i==="scale3d"&&g.every(h=>!Number.isNaN(+h))&&g.some(h=>h!==1))n=n.scale(l,a,m);else if(i==="scale"&&!Number.isNaN(l)&&l!==1&&m===void 0){const h=Number.isNaN(+a)?l:a;n=n.scale(l,h,1)}else if(i==="skew"&&(l||!Number.isNaN(l)&&a)&&m===void 0)n=n.skew(l,a||0);else if(["translate","rotate","scale","skew"].some(h=>i.includes(h))&&/[XYZ]/.test(i)&&l&&[a,m].every(h=>h===void 0))if(i==="skewX"||i==="skewY")n=n[i](l);else{const h=i.replace(/[XYZ]/,""),y=i.replace(h,""),x=["X","Y","Z"].indexOf(y),p=h==="scale"?1:0,d=[x===0?l:p,x===1?l:p,x===2?l:p];n=n[h](...d)}else throw TypeError(r)}),n},wt=(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],Ut=(e,t,n)=>{const r=new v;return r.m41=e,r.e=e,r.m42=t,r.f=t,r.m43=n,r},Vt=(e,t,n)=>{const r=new v,s=Math.PI/180,i=e*s,o=t*s,c=n*s,l=Math.cos(i),a=-Math.sin(i),m=Math.cos(o),u=-Math.sin(o),g=Math.cos(c),f=-Math.sin(c),h=m*g,y=-m*f;r.m11=h,r.a=h,r.m12=y,r.b=y,r.m13=u;const x=a*u*g+l*f;r.m21=x,r.c=x;const p=l*g-a*u*f;return r.m22=p,r.d=p,r.m23=-a*m,r.m31=a*f-l*u*g,r.m32=a*g+l*u*f,r.m33=l*m,r},_t=(e,t,n,r)=>{const s=new v,i=Math.sqrt(e*e+t*t+n*n);if(i===0)return s;const o=e/i,c=t/i,l=n/i,a=r*(Math.PI/360),m=Math.sin(a),u=Math.cos(a),g=m*m,f=o*o,h=c*c,y=l*l,x=1-2*(h+y)*g;s.m11=x,s.a=x;const p=2*(o*c*g+l*m*u);s.m12=p,s.b=p,s.m13=2*(o*l*g-c*m*u);const d=2*(c*o*g-l*m*u);s.m21=d,s.c=d;const C=1-2*(y+f)*g;return s.m22=C,s.d=C,s.m23=2*(c*l*g+o*m*u),s.m31=2*(l*o*g+c*m*u),s.m32=2*(l*c*g-o*m*u),s.m33=1-2*(f+h)*g,s},Jt=(e,t,n)=>{const r=new v;return r.m11=e,r.a=e,r.m22=t,r.d=t,r.m33=n,r},yt=(e,t)=>{const n=new v;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},Kt=e=>yt(e,0),Wt=e=>yt(0,e),j=(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,c=t.m21*e.m12+t.m22*e.m22+t.m23*e.m32+t.m24*e.m42,l=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,u=t.m31*e.m12+t.m32*e.m22+t.m33*e.m32+t.m34*e.m42,g=t.m31*e.m13+t.m32*e.m23+t.m33*e.m33+t.m34*e.m43,f=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,y=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,p=t.m41*e.m14+t.m42*e.m24+t.m43*e.m34+t.m44*e.m44;return it([n,r,s,i,o,c,l,a,m,u,g,f,h,y,x,p])};class v{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"?Ft(t):Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array?it(t):typeof t=="object"?Ht(t):this}toFloat32Array(t){return Float32Array.from(wt(this,t))}toFloat64Array(t){return Float64Array.from(wt(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 j(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),j(this,Ut(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),j(this,Jt(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),j(this,Vt(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 j(this,_t(t,n,r,s))}skewX(t){return j(this,Kt(t))}skewY(t){return j(this,Wt(t))}skew(t,n){return j(this,yt(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}}}k(v,"Translate",Ut),k(v,"Rotate",Vt),k(v,"RotateAxisAngle",_t),k(v,"Scale",Jt),k(v,"SkewX",Kt),k(v,"SkewY",Wt),k(v,"Skew",yt),k(v,"Multiply",j),k(v,"fromArray",it),k(v,"fromMatrix",Ht),k(v,"fromString",Ft),k(v,"toArray",wt),k(v,"isCompatibleArray",Bt),k(v,"isCompatibleObject",Yt);const gt={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},D=(e,t)=>{const n={...gt};let r=e.length,s;for(let i=0;i<r;i+=1){s=e[i];const o=t(s,n,i);e[i]=o,o[0]==="C"&&(r=e.length),s=e[i];const c=s.length;n.x1=+s[c-2],n.y1=+s[c-1],n.x2=+s[c-4]||n.x1,n.y2=+s[c-3]||n.y1}return e},V=(e,t)=>{const[n]=e,{x:r,y:s}=t,i=e.slice(1).map(Number),o=n.toUpperCase();if(!(o===n)){if(o==="A")return[o,i[0],i[1],i[2],i[3],i[4],i[5]+r,i[6]+s];if(o==="V")return[o,i[0]+s];if(o==="H")return[o,i[0]+r];{const l=i.map((a,m)=>a+(m%2?s:r));return[o,...l]}}return e},G=(e,t)=>{const[n]=e,{x1:r,y1:s,x2:i,y2:o}=t,c=e.slice(1).map(Number);if("TQ".includes(n)||(t.qx=null,t.qy=null),n==="H")return["L",e[1],s];if(n==="V")return["L",r,e[1]];if(n==="S"){const l=r*2-i,a=s*2-o;return t.x1=l,t.y1=a,["C",l,a,...c]}else if(n==="T"){const l=r*2-(t.qx?t.qx:0),a=s*2-(t.qy?t.qy:0);return t.qx=l,t.qy=a,["Q",l,a,...c]}else if(n==="Q"){const[l,a]=c;t.qx=l,t.qy=a}return e},R=(e,t,n)=>{const[r,s]=e,[i,o]=t;return[r+(i-r)*n,s+(o-s)*n]},at=(e,t,n,r)=>Pt([e,t],[n,r]),Gt=(e,t,n,r,s)=>{const i=Pt([e,t],[n,r]);let o={x:e,y:t};if(typeof s=="number")if(s<=0)o={x:e,y:t};else if(s>=i)o={x:n,y:r};else{const[c,l]=R([e,t],[n,r],s/i);o={x:c,y:l}}return o},kt=(e,t,n,r)=>{const{min:s,max:i}=Math;return{min:{x:s(e,n),y:s(t,r)},max:{x:i(e,n),y:i(t,r)}}},te=(e,t,n)=>{const r=n/2,s=Math.sin(r),i=Math.cos(r),o=e**2*s**2,c=t**2*i**2,l=Math.sqrt(o+c)*n;return Math.abs(l)},K=(e,t,n,r,s,i)=>{const o=Math.cos(i),c=Math.sin(i),l=r*Math.cos(e),a=s*Math.sin(e);return{x:t+o*l-c*a,y:n+c*l+o*a}},qt=(e,t)=>{const{x:n,y:r}=e,{x:s,y:i}=t,o=n*s+r*i,c=Math.sqrt((n**2+r**2)*(s**2+i**2));return(n*i-r*s<0?-1:1)*Math.acos(o/c)},Lt=(e,t,n,r,s,i,o,c,l)=>{const{abs:a,sin:m,cos:u,sqrt:g,PI:f}=Math;let h=a(n),y=a(r);const p=(s%360+360)%360*(f/180);if(e===c&&t===l)return{rx:h,ry:y,startAngle:0,endAngle:0,center:{x:c,y:l}};if(h===0||y===0)return{rx:h,ry:y,startAngle:0,endAngle:0,center:{x:c,y:l}};const d=(e-c)/2,C=(t-l)/2,M={x:u(p)*d+m(p)*C,y:-m(p)*d+u(p)*C},b=M.x**2/h**2+M.y**2/y**2;b>1&&(h*=g(b),y*=g(b));const w=h**2*y**2-h**2*M.y**2-y**2*M.x**2,T=h**2*M.y**2+y**2*M.x**2;let P=w/T;P=P<0?0:P;const $=(i!==o?1:-1)*g(P),S={x:$*(h*M.y/y),y:$*(-(y*M.x)/h)},_={x:u(p)*S.x-m(p)*S.y+(e+c)/2,y:m(p)*S.x+u(p)*S.y+(t+l)/2},X={x:(M.x-S.x)/h,y:(M.y-S.y)/y},Q=qt({x:1,y:0},X),B={x:(-M.x-S.x)/h,y:(-M.y-S.y)/y};let I=qt(X,B);!o&&I>0?I-=2*f:o&&I<0&&(I+=2*f),I%=2*f;const J=Q+I;return{center:_,startAngle:Q,endAngle:J,rx:h,ry:y}},ee=(e,t,n,r,s,i,o,c,l)=>{const{rx:a,ry:m,startAngle:u,endAngle:g}=Lt(e,t,n,r,s,i,o,c,l);return te(a,m,g-u)},Pe=(e,t,n,r,s,i,o,c,l,a)=>{let m={x:e,y:t};const{center:u,rx:g,ry:f,startAngle:h,endAngle:y}=Lt(e,t,n,r,s,i,o,c,l),x=te(g,f,y-h);if(typeof a=="number")if(a<=0)m={x:e,y:t};else if(a>=x)m={x:c,y:l};else{if(e===c&&t===l)return{x:c,y:l};if(g===0||f===0)return Gt(e,t,c,l,a);const{PI:p,cos:d,sin:C}=Math,M=y-h,w=(s%360+360)%360*(p/180),T=h+M*(a/x),P=g*d(T),$=f*C(T);m={x:d(w)*P-C(w)*$+u.x,y:C(w)*P+d(w)*$+u.y}}return m},Le=(e,t,n,r,s,i,o,c,l)=>{const{center:a,rx:m,ry:u,startAngle:g,endAngle:f}=Lt(e,t,n,r,s,i,o,c,l),h=f-g,y={x:c,y:l},[x,p]=[a.x,a.y],d=[y],C=s*Math.PI/180,M=Math.tan(C),b=Math.atan2(-u*M,m),w=b,T=b+Math.PI,P=Math.atan2(u,m*M),$=P+Math.PI,S=[e,c],_=[t,l],X=Math.min(...S),Q=Math.max(...S),B=Math.min(..._),I=Math.max(..._),J=f-h*.001,z=K(J,x,p,m,u,C),ot=f-h*.999,Y=K(ot,x,p,m,u,C);return(z.x>Q||Y.x>Q)&&d.push(K(w,x,p,m,u,C)),(z.x<X||Y.x<X)&&d.push(K(T,x,p,m,u,C)),(z.y<B||Y.y<B)&&d.push(K($,x,p,m,u,C)),(z.y>I||Y.y>I)&&d.push(K(P,x,p,m,u,C)),{min:{x:Math.min(...d.map(O=>O.x)),y:Math.min(...d.map(O=>O.y))},max:{x:Math.max(...d.map(O=>O.x)),y:Math.max(...d.map(O=>O.y))}}},Te={x:0,y:0},It=[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213],Se=[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872],$e=e=>{const t=[];for(let n=e,r=n.length,s=r-1;r>1;r-=1,s-=1){const i=[];for(let o=0;o<s;o+=1)i.push({x:s*(n[o+1].x-n[o].x),y:s*(n[o+1].y-n[o].y),t:0});t.push(i),n=i}return t},ke=(e,t)=>{if(t===0)return e[0].t=0,e[0];const n=e.length-1;if(t===1)return e[n].t=1,e[n];const r=1-t;let s=e;if(n===0)return e[0].t=t,e[0];if(n===1)return{x:r*s[0].x+t*s[1].x,y:r*s[0].y+t*s[1].y,t};const i=r*r,o=t*t;let c=0,l=0,a=0,m=0;return n===2?(s=[s[0],s[1],s[2],Te],c=i,l=r*t*2,a=o):n===3&&(c=i*r,l=i*t*3,a=r*o*3,m=t*o),{x:c*s[0].x+l*s[1].x+a*s[2].x+m*s[3].x,y:c*s[0].y+l*s[1].y+a*s[2].y+m*s[3].y,t}},qe=(e,t)=>{const n=e(t),r=n.x*n.x+n.y*n.y;return Math.sqrt(r)},Ie=e=>{const n=It.length;let r=0;for(let s=0,i;s<n;s++)i=.5*It[s]+.5,r+=Se[s]*qe(e,i);return .5*r},xt=e=>{const t=[];for(let r=0,s=e.length,i=2;r<s;r+=i)t.push({x:e[r],y:e[r+1]});const n=$e(t);return Ie(r=>ke(n[0],r))},Ee=1e-8,Nt=e=>{const t=Math.min(e[0],e[2]),n=Math.max(e[0],e[2]);if(e[1]>=e[0]?e[2]>=e[1]:e[2]<=e[1])return[t,n];const r=(e[0]*e[2]-e[1]*e[1])/(e[0]-2*e[1]+e[2]);return r<t?[r,n]:[t,r]},Et=e=>{const t=e[0]-3*e[1]+3*e[2]-e[3];if(Math.abs(t)<Ee)return e[0]===e[3]&&e[0]===e[1]?[e[0],e[3]]:Nt([e[0],-.5*e[0]+1.5*e[1],e[0]-3*e[1]+3*e[2]]);const n=-e[0]*e[2]+e[0]*e[3]-e[1]*e[2]-e[1]*e[3]+e[1]*e[1]+e[2]*e[2];if(n<=0)return[Math.min(e[0],e[3]),Math.max(e[0],e[3])];const r=Math.sqrt(n);let s=Math.min(e[0],e[3]),i=Math.max(e[0],e[3]);const o=e[0]-2*e[1]+e[2];for(let c=(o+r)/t,l=1;l<=2;c=(o-r)/t,l++)if(c>0&&c<1){const a=e[0]*(1-c)*(1-c)*(1-c)+e[1]*3*(1-c)*(1-c)*c+e[2]*3*(1-c)*c*c+e[3]*c*c*c;a<s&&(s=a),a>i&&(i=a)}return[s,i]},ze=([e,t,n,r,s,i,o,c],l)=>{const a=1-l;return{x:a**3*e+3*a**2*l*n+3*a*l**2*s+l**3*o,y:a**3*t+3*a**2*l*r+3*a*l**2*i+l**3*c}},ne=(e,t,n,r,s,i,o,c)=>xt([e,t,n,r,s,i,o,c]),Ze=(e,t,n,r,s,i,o,c,l)=>{const a=typeof l=="number";let m={x:e,y:t};if(a){const u=xt([e,t,n,r,s,i,o,c]);l<=0||(l>=u?m={x:o,y:c}:m=ze([e,t,n,r,s,i,o,c],l/u))}return m},Oe=(e,t,n,r,s,i,o,c)=>{const l=Et([e,n,s,o]),a=Et([t,r,i,c]);return{min:{x:l[0],y:a[0]},max:{x:l[1],y:a[1]}}},je=([e,t,n,r,s,i],o)=>{const c=1-o;return{x:c**2*e+2*c*o*n+o**2*s,y:c**2*t+2*c*o*r+o**2*i}},se=(e,t,n,r,s,i)=>xt([e,t,n,r,s,i]),Re=(e,t,n,r,s,i,o)=>{const c=typeof o=="number";let l={x:e,y:t};if(c){const a=xt([e,t,n,r,s,i]);o<=0||(o>=a?l={x:s,y:i}:l=je([e,t,n,r,s,i],o/a))}return l},De=(e,t,n,r,s,i)=>{const o=Nt([e,n,s]),c=Nt([t,r,i]);return{min:{x:o[0],y:c[0]},max:{x:o[1],y:c[1]}}},zt=e=>{if(!e)return{x:0,y:0,width:0,height:0,x2:0,y2:0,cx:0,cy:0,cz:0};const t=q(e);let n=[],r="M",s=0,i=0,o=0,c=0;const l=[],a=[];let m={x:s,y:i},u={x:s,y:i};D(t,(d,C)=>{const M=V(d,C),b=G(M,C);return[r]=b,n=[s,i,...b.slice(1)],r==="M"?([,o,c]=b,m={x:o,y:c},u={x:o,y:c}):r==="L"?{min:m,max:u}=kt(...n):r==="A"?{min:m,max:u}=Le(...n):r==="C"?{min:m,max:u}=Oe(...n):r==="Q"?{min:m,max:u}=De(...n):r==="Z"&&(n=[s,i,o,c],{min:m,max:u}=kt(...n)),l.push(m),a.push(u),r==="Z"?(s=o,i=c):([s,i]=b.slice(-2),r==="M"&&(o=s,c=i)),C.x=s,C.y=i,b});const g=Math.min(...l.map(d=>d.x)),f=Math.max(...a.map(d=>d.x)),h=Math.min(...l.map(d=>d.y)),y=Math.max(...a.map(d=>d.y)),x=f-g,p=y-h;return{width:x,height:p,x:g,y:h,x2:f,y2:y,cx:g+x/2,cy:h+p/2,cz:Math.max(x,p)+Math.min(x,p)/2}},ct=(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}},re=(e,t,n,r,s,i,o,c,l,a)=>{let m=e,u=t,g=n,f=r,h=c,y=l;const x=Math.PI*120/180,p=Math.PI/180*(+s||0);let d=[],C,M,b,w,T;if(a)[M,b,w,T]=a;else{C=ct(m,u,-p),m=C.x,u=C.y,C=ct(h,y,-p),h=C.x,y=C.y;const L=(m-h)/2,Z=(u-y)/2;let H=L*L/(g*g)+Z*Z/(f*f);H>1&&(H=Math.sqrt(H),g*=H,f*=H);const Mt=g*g,bt=f*f,St=(i===o?-1:1)*Math.sqrt(Math.abs((Mt*bt-Mt*Z*Z-bt*L*L)/(Mt*Z*Z+bt*L*L)));w=St*g*Z/f+(m+h)/2,T=St*-f*L/g+(u+y)/2,M=Math.asin(((u-T)/f*10**9>>0)/10**9),b=Math.asin(((y-T)/f*10**9>>0)/10**9),M=m<w?Math.PI-M:M,b=h<w?Math.PI-b:b,M<0&&(M=Math.PI*2+M),b<0&&(b=Math.PI*2+b),o&&M>b&&(M-=Math.PI*2),!o&&b>M&&(b-=Math.PI*2)}let P=b-M;if(Math.abs(P)>x){const L=b,Z=h,H=y;b=M+x*(o&&b>M?1:-1),h=w+g*Math.cos(b),y=T+f*Math.sin(b),d=re(h,y,g,f,s,0,o,Z,H,[b,L,w,T])}P=b-M;const $=Math.cos(M),S=Math.sin(M),_=Math.cos(b),X=Math.sin(b),Q=Math.tan(P/4),B=4/3*g*Q,I=4/3*f*Q,J=[m,u],z=[m+B*S,u-I*$],ot=[h+B*X,y-I*_],Y=[h,y];if(z[0]=2*J[0]-z[0],z[1]=2*J[1]-z[1],a)return[...z,...ot,...Y,...d];d=[...z,...ot,...Y,...d];const O=[];for(let L=0,Z=d.length;L<Z;L+=1)O[L]=L%2?ct(d[L-1],d[L],p).y:ct(d[L],d[L+1],p).x;return O},Qe=(e,t,n,r,s,i)=>{const o=.3333333333333333,c=2/3;return[o*e+c*n,o*t+c*r,o*s+c*n,o*i+c*r,s,i]},Zt=(e,t,n,r)=>{const s=R([e,t],[n,r],.3333333333333333),i=R([e,t],[n,r],2/3);return[...s,...i,n,r]},ie=(e,t)=>{const[n]=e,r=e.slice(1).map(Number),[s,i]=r;let o;const{x1:c,y1:l,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=[c,l,...r],["C",...re(...o)]):n==="Q"?(t.qx=s,t.qy=i,o=[c,l,...r],["C",...Qe(...o)]):n==="L"?["C",...Zt(c,l,s,i)]:n==="Z"?["C",...Zt(c,l,a,m)]:e},mt=e=>{let t=0,n=0,r=0,s=0,i="M";const o=q(e);return D(o,(c,l,a)=>{const m=V(c,l);[i]=m;const u=i.toUpperCase(),g=G(m,l);let f=ie(g,l);return f[0]==="C"&&f.length>7&&(o.splice(a+1,0,["C",...f.slice(7)]),f=f.slice(0,7)),u==="Z"?(t=r,n=s):([t,n]=f.slice(-2),u==="M"&&(r=t,s=n)),l.x=t,l.y=n,f})},Xe=(e,t,n,r,s,i,o,c)=>3*((c-t)*(n+s)-(o-e)*(r+i)+r*(e-s)-n*(t-i)+c*(s+e/3)-o*(i+t/3))/20,oe=e=>{let t=0,n=0,r=0;return mt(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)},W=e=>{const t=q(e);let n=!1,r=[],s="M",i=0,o=0,c=0,l=0,a=0;return D(t,(m,u)=>{const g=V(m,u),f=G(g,u);return[s]=f,n=s==="M",r=n?r:[i,o,...f.slice(1)],n?[,c,l]=m:s==="L"?a+=at(...r):s==="A"?a+=ee(...r):s==="C"?a+=ne(...r):s==="Q"?a+=se(...r):s==="Z"&&(r=[i,o,c,l],a+=at(...r)),s==="Z"?(i=c,o=l):([i,o]=f.slice(-2),n&&(c=i,l=o)),u.x=i,u.y=o,f}),a},Be=e=>oe(mt(e))>=0,At=1e-5,nt=(e,t)=>{const n=q(e);let r=!1,s=[],i="M",o=0,c=0,[l,a]=n[0].slice(1);const m=typeof t=="number";let u={x:l,y:a},g=0,f=u,h=0;return m?(t<At&&(f=u),D(n,(y,x)=>{const p=V(y,x),d=G(p,x);return[i]=d,r=i==="M",s=r?s:[o,c,...d.slice(1)],r?([,l,a]=y,u={x:l,y:a},g=0):i==="L"?(u=Gt(...s,t-h),g=at(...s)):i==="A"?(u=Pe(...s,t-h),g=ee(...s)):i==="C"?(u=Ze(...s,t-h),g=ne(...s)):i==="Q"?(u=Re(...s,t-h),g=se(...s)):i==="Z"&&(s=[o,c,l,a],u={x:l,y:a},g=at(...s)),h<t&&h+g>=t&&(f=u),h+=g,i==="Z"?(o=l,c=a):([o,c]=d.slice(-2),i==="M"&&(l=o,a=c)),x.x=o,x.y=c,d}),t>h-At&&(f={x:o,y:c}),f):u},Tt=(e,t)=>{const n=q(e);let r=n.slice(0),s=W(r),i=r.length-1,o=0,c=0,l=n[0];const[a,m]=l.slice(-2),u={x:a,y:m};if(i<=0||!t||!Number.isFinite(t))return{segment:l,index:0,length:c,point:u,lengthAtSegment:o};if(t>=s)return r=n.slice(0,-1),o=W(r),c=s-o,{segment:n[i],index:i,length:c,lengthAtSegment:o};const g=[];for(;i>0;)l=r[i],r=r.slice(0,-1),o=W(r),c=s-o,s=o,g.push({segment:l,index:i,length:c,lengthAtSegment:o}),i-=1;return g.find(({lengthAtSegment:f})=>f<=t)},rt=e=>{let t=0,n=0,r=0,s=0,i="M";return D(q(e),(o,c)=>{const l=V(o,c),a=G(l,c);[i]=a;const m=i.toUpperCase();return m==="Z"?(t=r,n=s):([t,n]=a.slice(-2),m==="M"&&(r=t,s=n)),c.x=t,c.y=n,a})},pt=(e,t)=>{const n=q(e),r=rt(n),s=W(n),i=M=>{const b=M.x-t.x,w=M.y-t.y;return b*b+w*w};let o=8,c,l={x:0,y:0},a=0,m=0,u=1/0;for(let M=0;M<=s;M+=o)c=nt(r,M),a=i(c),a<u&&(l=c,m=M,u=a);o/=2;let g,f,h=0,y=0,x=0,p=0;for(;o>1e-6&&(h=m-o,g=nt(r,h),x=i(g),y=m+o,f=nt(r,y),p=i(f),h>=0&&x<u?(l=g,m=h,u=x):y<=s&&p<u?(l=f,m=y,u=p):o/=2,!(o<1e-5)););const d=Tt(n,m),C=Math.sqrt(u);return{closest:l,distance:C,segment:d}},Ye=(e,t)=>pt(e,t).closest,He=(e,t)=>pt(e,t).segment,Fe=(e,t)=>Tt(e,t).segment,Ue=(e,t)=>{const{distance:n}=pt(e,t);return Math.abs(n)<At},ce=e=>{if(typeof e!="string"||!e.length)return!1;const t=new Xt(e);for(et(t);t.index<t.max&&!t.err.length;)Qt(t);return!t.err.length&&"mM".includes(t.segments[0][0])},dt=e=>Array.isArray(e)&&e.every(t=>{const n=t[0].toLowerCase();return tt[n]===t.length-1&&"achlmqstvz".includes(n)&&t.slice(1).every(Number.isFinite)})&&e.length>0,le=e=>dt(e)&&e.every(([t])=>t===t.toUpperCase()),Ve=e=>dt(e)&&e.slice(1).every(([t])=>t===t.toLowerCase()),ae=e=>le(e)&&e.every(([t])=>"ACLMQZ".includes(t)),_e=e=>ae(e)&&e.every(([t])=>"MC".includes(t)),ut={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"]},Je=e=>{let{x1:t,y1:n,x2:r,y2:s}=e;return[t,n,r,s]=[t,n,r,s].map(i=>+i),[["M",t,n],["L",r,s]]},Ke=e=>{const t=[],n=(e.points||"").trim().split(/[\s|,]/).map(s=>+s);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},We=e=>{let{cx:t,cy:n,r}=e;return[t,n,r]=[t,n,r].map(s=>+s),[["M",t-r,n],["a",r,r,0,1,0,2*r,0],["a",r,r,0,1,0,-2*r,0]]},Ge=e=>{let{cx:t,cy:n}=e,r=e.rx||0,s=e.ry||r;return[t,n,r,s]=[t,n,r,s].map(i=>+i),[["M",t-r,n],["a",r,s,0,1,0,2*r,0],["a",r,s,0,1,0,-2*r,0]]},tn=e=>{const t=+e.x||0,n=+e.y||0,r=+e.width,s=+e.height;let i=+(e.rx||0),o=+(e.ry||i);return i||o?(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"]]},me=(e,t)=>{const r=(t||document).defaultView||window,s=Object.keys(ut),i=e instanceof r.SVGElement,o=i?e.tagName:null;if(o&&[...s,"path"].every(u=>o!==u))throw TypeError(`${E}: "${o}" is not SVGElement`);const c=i?o:e.type,l=ut[c],a={type:c};i?l.forEach(u=>{a[u]=e.getAttribute(u)}):Object.assign(a,e);let m=[];return c==="circle"?m=We(a):c==="ellipse"?m=Ge(a):["polyline","polygon"].includes(c)?m=Ke(a):c==="rect"?m=tn(a):c==="line"?m=Je(a):["glyph","path"].includes(c)&&(m=q(i?e.getAttribute("d")||"":e.d||"")),dt(m)&&m.length?m:!1},ht=(e,t)=>{let{round:n}=st;if(t==="off"||n==="off")return e.slice(0);n=typeof t=="number"&&t>=0?t:n;const r=typeof n=="number"&&n>=1?10**n:1;return D(e,s=>{const i=s.slice(1).map(o=>n?Math.round(o*r)/r:Math.round(o));return[s[0],...i]})},Ct=(e,t)=>ht(e,t).map(n=>n[0]+n.slice(1).join(" ")).join(""),en=(e,t,n)=>{const r=n||document,s=r.defaultView||window,i=Object.keys(ut),o=e instanceof s.SVGElement,c=o?e.tagName:null;if(c==="path")throw TypeError(`${E}: "${c}" is already SVGPathElement`);if(c&&i.every(y=>c!==y))throw TypeError(`${E}: "${c}" is not SVGElement`);const l=r.createElementNS("http://www.w3.org/2000/svg","path"),a=o?c:e.type,m=ut[a],u={type:a},g=st.round,f=me(e,r),h=f&&f.length?Ct(f,g):"";return o?(m.forEach(y=>{u[y]=e.getAttribute(y)}),Object.values(e.attributes).forEach(({name:y,value:x})=>{m.includes(y)||l.setAttribute(y,x)})):(Object.assign(u,e),Object.keys(u).forEach(y=>{!m.includes(y)&&y!=="type"&&l.setAttribute(y.replace(/[A-Z]/g,x=>`-${x.toLowerCase()}`),u[y])})),ce(h)?(l.setAttribute("d",h),t&&o&&(e.before(l,e),e.remove()),l):!1},Ot=e=>{const t=[];let n,r=-1,s=0,i=0,o=0,c=0;const l={...gt};return e.forEach(a=>{const[m]=a,u=m.toUpperCase(),g=m.toLowerCase(),f=m===g,h=a.slice(1);u==="M"?(r+=1,[s,i]=h,s+=f?l.x:0,i+=f?l.y:0,o=s,c=i,n=[f?[u,o,c]:a]):(u==="Z"?(s=o,i=c):u==="H"?([,s]=a,s+=f?l.x:0):u==="V"?([,i]=a,i+=f?l.y:0):([s,i]=a.slice(-2),s+=f?l.x:0,i+=f?l.y:0),n.push(a)),l.x=s,l.y=i,t[r]=n}),t},ue=e=>{let t=new v;const{origin:n}=e,[r,s]=n,{translate:i}=e,{rotate:o}=e,{skew:c}=e,{scale:l}=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||c||l)&&(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(c)&&c.length===2&&c.every(a=>!Number.isNaN(+a))&&c.some(a=>a!==0)?(t=c[0]?t.skewX(c[0]):t,t=c[1]?t.skewY(c[1]):t):typeof c=="number"&&!Number.isNaN(c)&&(t=t.skewX(c)),Array.isArray(l)&&l.length>=2&&l.every(a=>!Number.isNaN(+a))&&l.some(a=>a!==1)?t=t.scale(...l):typeof l=="number"&&!Number.isNaN(l)&&(t=t.scale(l)),t=t.translate(-r,-s)),t},ft=e=>{let t=0,n=0,r=0,s=0,i="M";const o=q(e);return D(o,(c,l)=>{[i]=c;const a=V(c,l),m=i.toUpperCase();return m==="Z"?(t=r,n=s):m==="H"?[,t]=a:m==="V"?[,n]=a:([t,n]=a.slice(-2),m==="M"&&(r=t,s=n)),l.x=t,l.y=n,a})},nn=(e,t,n)=>{const[r]=e,{x:s,y:i}=t,o=e.slice(1).map(Number),c=r.toLowerCase();if(n===0&&r==="M")return e;if(r!==c){if(c==="a")return[c,o[0],o[1],o[2],o[3],o[4],o[5]-s,o[6]-i];if(c==="v")return[c,o[0]-i];if(c==="h")return[c,o[0]-s];{const l=o.map((a,m)=>a-(m%2?i:s));return[c,...l]}}return e},vt=e=>{let t=0,n=0,r=0,s=0,i="M";const o=q(e);return D(o,(c,l,a)=>{[i]=c;const m=nn(c,l,a),[u]=m,g=i.toUpperCase(),f=i.toLowerCase(),h=u===f;return g==="Z"?(t=r,n=s):g==="H"?([,t]=m,t+=h?l.x:0):g==="V"?([,n]=m,n+=h?l.y:0):([t,n]=m.slice(-2),t+=h?l.x:0,n+=h?l.y:0,g==="M"&&(r=t,s=n)),l.x=t,l.y=n,m})},sn=(e,t,n,r)=>{const[s]=e,i=p=>Math.round(p*10**4)/10**4,o=e.slice(1),c=t.slice(1),{x1:l,y1:a,x2:m,y2:u,x:g,y:f}=n;let h=e;const[y,x]=c.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(g)===i(y)?h=["V",x]:i(f)===i(x)&&(h=["H",y]);else if(s==="C"){const[p,d]=c;"CS".includes(r)&&(i(p)===i(l*2-m)&&i(d)===i(a*2-u)||i(l)===i(m*2-g)&&i(a)===i(u*2-f))&&(h=["S",...c.slice(-4)]),n.x1=p,n.y1=d}else if(s==="Q"){const[p,d]=c;n.qx=p,n.qy=d,"QT".includes(r)&&(i(p)===i(l*2-m)&&i(d)===i(a*2-u)||i(l)===i(m*2-g)&&i(a)===i(u*2-f))&&(h=["T",...c.slice(-2)])}return h},jt=(e,t)=>{const n=ft(e),r=rt(n),s={...gt},i=[],o=n.length;let c="",l="",a=0,m=0,u=0,g=0;for(let y=0;y<o;y+=1){[c]=n[y],i[y]=c,y&&(l=i[y-1]),n[y]=sn(n[y],r[y],s,l);const x=n[y],p=x.length;switch(s.x1=+x[p-2],s.y1=+x[p-1],s.x2=+x[p-4]||s.x1,s.y2=+x[p-3]||s.y1,c){case"Z":a=u,m=g;break;case"H":[,a]=x;break;case"V":[,m]=x;break;default:[a,m]=x.slice(-2).map(Number),c==="M"&&(u=a,g=m)}s.x=a,s.y=m}const f=ht(n,t),h=ht(vt(n),t);return f.map((y,x)=>x?y.join("").length<h[x].join("").length?y:h[x]:y)},rn=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)])]},lt=e=>{const t=ft(e),n=t.slice(-1)[0][0]==="Z",r=rt(t).map((s,i)=>{const[o,c]=s.slice(-2).map(Number);return{seg:t[i],n:s,c:t[i][0],x:o,y:c}}).map((s,i,o)=>{const c=s.seg,l=s.n,a=i&&o[i-1],m=o[i+1],u=s.c,g=o.length,f=i?o[i-1].x:o[g-1].x,h=i?o[i-1].y:o[g-1].y;let y=[];switch(u){case"M":y=n?["Z"]:[u,f,h];break;case"A":y=[u,...c.slice(1,-3),c[5]===1?0:1,f,h];break;case"C":m&&m.c==="S"?y=["S",c[1],c[2],f,h]:y=[u,c[3],c[4],c[1],c[2],f,h];break;case"S":a&&"CS".includes(a.c)&&(!m||m.c!=="S")?y=["C",l[3],l[4],l[1],l[2],f,h]:y=[u,l[1],l[2],f,h];break;case"Q":m&&m.c==="T"?y=["T",f,h]:y=[u,...c.slice(1,-2),f,h];break;case"T":a&&"QT".includes(a.c)&&(!m||m.c!=="T")?y=["Q",l[1],l[2],f,h]:y=[u,f,h];break;case"Z":y=["M",f,h];break;case"H":y=[u,f];break;case"V":y=[u,h];break;default:y=[u,...c.slice(1,-2),f,h]}return y});return n?r.reverse():[r[0],...r.slice(1).reverse()]},on=(e,t)=>{let n=v.Translate(...t.slice(0,-1));return[,,,n.m44]=t,n=e.multiply(n),[n.m41,n.m42,n.m43,n.m44]},Rt=(e,t,n)=>{const[r,s,i]=n,[o,c,l]=on(e,[...t,0,1]),a=o-r,m=c-s,u=l-i;return[a*(Math.abs(i)/Math.abs(u)||1)+r,m*(Math.abs(i)/Math.abs(u)||1)+s]},Dt=(e,t)=>{let n=0,r=0,s=0,i=0,o=0,c=0,l=0,a=0,m=0,u=0,g="M";const f={...gt},h=q(e),y=t&&Object.keys(t);if(!t||y&&!y.length)return h;t.origin||Object.assign(t,{origin:st.origin});const x=t.origin,p=ue(t);return p.isIdentity?h:D(h,(d,C,M)=>{const b=V(d,f);[g]=b;let w=g==="A"?ie(b,f):["V","H"].includes(g)?G(b,f):b;const T=w[0]==="C"&&w.length>7,P=T?w.slice(0,7):w.slice(0);if(T&&(h.splice(M+1,0,["C",...w.slice(7)]),w=w.slice(0,7)),w[0]==="L"){const S=w.slice(-2);[o,c]=Rt(p,S,x),n!==o&&r!==c?w=["L",o,c]:r===c?w=["H",o]:n===o&&(w=["V",c])}else for(l=1,a=w.length;l<a;l+=2)[o,c]=Rt(p,[+w[l],+w[l+1]],x),w[l]=o,w[l+1]=c;n=o,r=c,g==="Z"?(m=s,u=i):([m,u]=P.slice(-2),g==="M"&&(s=m,i=u));const $=P.length;return f.x1=+P[$-2],f.y1=+P[$-1],f.x2=+P[$-4]||f.x1,f.y2=+P[$-3]||f.y1,f.x=m,f.y=u,w})},cn=(e,t=.5)=>{const n=t,r=e.slice(0,2),s=e.slice(2,4),i=e.slice(4,6),o=e.slice(6,8),c=R(r,s,n),l=R(s,i,n),a=R(i,o,n),m=R(c,l,n),u=R(l,a,n),g=R(m,u,n);return[["C",...c,...m,...g],["C",...u,...a,...o]]};class A{constructor(t,n){const r=n||{},s=typeof t>"u";if(s||!t.length)throw TypeError(`${E}: "pathValue" is ${s?"undefined":"empty"}`);const i=q(t);this.segments=i;const{round:o,origin:c}=r;let l;Number.isInteger(o)||o==="off"?l=o:l=st.round;let a=st.origin;if(Array.isArray(c)&&c.length>=2){const[m,u,g]=c.map(Number);a=[Number.isNaN(m)?0:m,Number.isNaN(u)?0:u,Number.isNaN(g)?0:g]}return this.round=l,this.origin=a,this}get bbox(){return zt(this.segments)}get length(){return W(this.segments)}getBBox(){return this.bbox}getTotalLength(){return this.length}getPointAtLength(t){return nt(this.segments,t)}toAbsolute(){const{segments:t}=this;return this.segments=ft(t),this}toRelative(){const{segments:t}=this;return this.segments=vt(t),this}toCurve(){const{segments:t}=this;return this.segments=mt(t),this}reverse(t){this.toAbsolute();const{segments:n}=this,r=Ot(n),s=r.length>1?r:!1,i=s?s.map((c,l)=>t?l?lt(c):c.slice(0):lt(c)):n.slice(0);let o=[];return s?o=i.flat(1):o=t?n:lt(n),this.segments=o.slice(0),this}normalize(){const{segments:t}=this;return this.segments=rt(t),this}optimize(){const{segments:t}=this;return this.segments=jt(t,this.round),this}transform(t){if(!t||typeof t!="object"||typeof t=="object"&&!["translate","rotate","skew","scale"].some(l=>l in t))return this;const{segments:n,origin:[r,s,i]}=this,o={};for(const[l,a]of Object.entries(t))l==="skew"&&Array.isArray(a)||(l==="rotate"||l==="translate"||l==="origin"||l==="scale")&&Array.isArray(a)?o[l]=a.map(Number):l!=="origin"&&typeof Number(a)=="number"&&(o[l]=Number(a));const{origin:c}=o;if(Array.isArray(c)&&c.length>=2){const[l,a,m]=c.map(Number);o.origin=[Number.isNaN(l)?r:l,Number.isNaN(a)?s:a,m||i]}else o.origin=[r,s,i];return this.segments=Dt(n,o),this}flipX(){const{cx:t,cy:n}=this.bbox;return this.transform({rotate:[0,180,0],origin:[t,n,0]}),this}flipY(){const{cx:t,cy:n}=this.bbox;return this.transform({rotate:[180,0,0],origin:[t,n,0]}),this}toString(){return Ct(this.segments,this.round)}}N(A,"CSSMatrix",v),N(A,"getSVGMatrix",ue),N(A,"getPathBBox",zt),N(A,"getPathArea",oe),N(A,"getTotalLength",W),N(A,"getDrawDirection",Be),N(A,"getPointAtLength",nt),N(A,"getPropertiesAtLength",Tt),N(A,"getPropertiesAtPoint",pt),N(A,"polygonLength",Ne),N(A,"polygonArea",we),N(A,"getClosestPoint",Ye),N(A,"getSegmentOfPoint",He),N(A,"getSegmentAtLength",Fe),N(A,"isPointInStroke",Ue),N(A,"isValidPath",ce),N(A,"isPathArray",dt),N(A,"isAbsoluteArray",le),N(A,"isRelativeArray",Ve),N(A,"isCurveArray",_e),N(A,"isNormalizedArray",ae),N(A,"shapeToPath",en),N(A,"shapeToPathArray",me),N(A,"parsePathString",q),N(A,"roundPath",ht),N(A,"splitPath",Ot),N(A,"splitCubic",cn),N(A,"optimizePath",jt),N(A,"reverseCurve",rn),N(A,"reversePath",lt),N(A,"normalizePath",rt),N(A,"transformPath",Dt),N(A,"pathToAbsolute",ft),N(A,"pathToRelative",vt),N(A,"pathToCurve",mt),N(A,"pathToString",Ct);module.exports=A;
2
2
  //# sourceMappingURL=svg-path-commander.cjs.map