svg-path-commander 2.0.10 → 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.
- package/.eslintrc.cjs +1 -0
- package/README.md +64 -8
- package/dist/svg-path-commander.cjs +1 -1
- package/dist/svg-path-commander.cjs.map +1 -1
- package/dist/svg-path-commander.d.ts +236 -43
- package/dist/svg-path-commander.js +1 -1
- package/dist/svg-path-commander.js.map +1 -1
- package/dist/svg-path-commander.mjs +790 -650
- package/dist/svg-path-commander.mjs.map +1 -1
- package/package.json +20 -22
- package/src/convert/pathToAbsolute.ts +16 -70
- package/src/convert/pathToCurve.ts +36 -28
- package/src/convert/pathToRelative.ts +33 -62
- package/src/index.ts +37 -39
- package/src/interface.ts +33 -33
- package/src/math/arcTools.ts +394 -0
- package/src/math/bezier.ts +253 -0
- package/src/math/cubicTools.ts +122 -0
- package/src/math/distanceSquareRoot.ts +3 -1
- package/src/math/lineTools.ts +67 -0
- package/src/math/midPoint.ts +3 -1
- package/src/math/polygonArea.ts +3 -1
- package/src/math/polygonLength.ts +2 -1
- package/src/math/quadTools.ts +98 -0
- package/src/parser/isMoveCommand.ts +17 -0
- package/src/parser/parsePathString.ts +5 -5
- package/src/parser/scanSegment.ts +12 -3
- package/src/process/absolutizeSegment.ts +58 -0
- package/src/process/iterate.ts +33 -0
- package/src/process/normalizePath.ts +34 -28
- package/src/process/normalizeSegment.ts +8 -9
- package/src/process/projection2d.ts +2 -1
- package/src/process/relativizeSegment.ts +61 -0
- package/src/process/reversePath.ts +1 -1
- package/src/process/roundPath.ts +8 -10
- package/src/process/segmentToCubic.ts +1 -1
- package/src/process/shortenSegment.ts +3 -3
- package/src/process/splitCubic.ts +8 -7
- package/src/process/splitPath.ts +39 -5
- package/src/process/transformPath.ts +81 -94
- package/src/types.ts +40 -1
- package/src/util/distanceEpsilon.ts +3 -0
- package/src/util/getClosestPoint.ts +1 -1
- package/src/util/getPathArea.ts +3 -3
- package/src/util/getPathBBox.ts +86 -18
- package/src/util/getPointAtLength.ts +98 -4
- package/src/util/getPropertiesAtLength.ts +4 -3
- package/src/util/getPropertiesAtPoint.ts +4 -1
- package/src/util/getTotalLength.ts +71 -4
- package/src/util/isPointInStroke.ts +2 -1
- package/src/util/shapeToPathArray.ts +8 -4
- package/test/class.test.ts +502 -0
- package/test/fixtures/getMarkup.ts +17 -0
- package/{cypress → test}/fixtures/shapes.js +39 -39
- package/test/fixtures/simpleShapes.js +75 -0
- package/test/static.test.ts +324 -0
- package/tsconfig.json +9 -4
- package/{vite.config.ts → vite.config.mts} +10 -1
- package/vitest.config-ui.mts +26 -0
- package/vitest.config.mts +26 -0
- package/cypress/e2e/svg-path-commander.spec.ts +0 -868
- package/cypress/fixtures/simpleShapes.js +0 -75
- package/cypress/plugins/esbuild-istanbul.ts +0 -50
- package/cypress/plugins/tsCompile.ts +0 -34
- package/cypress/support/commands.ts +0 -37
- package/cypress/support/e2e.ts +0 -21
- package/cypress/test.html +0 -36
- package/cypress.config.ts +0 -29
- package/src/process/fixArc.ts +0 -23
- package/src/util/pathLengthFactory.ts +0 -114
- package/src/util/segmentArcFactory.ts +0 -219
- package/src/util/segmentCubicFactory.ts +0 -114
- package/src/util/segmentLineFactory.ts +0 -45
- package/src/util/segmentQuadFactory.ts +0 -109
- /package/{cypress/fixtures/shapeObjects.js → test/fixtures/shapeObjects.ts} +0 -0
|
@@ -1,49 +1,49 @@
|
|
|
1
1
|
import CSSMatrix$1 from '@thednp/dommatrix';
|
|
2
2
|
|
|
3
|
-
export
|
|
3
|
+
export type SegmentProperties = {
|
|
4
4
|
segment: PathSegment;
|
|
5
5
|
index: number;
|
|
6
6
|
length: number;
|
|
7
7
|
lengthAtSegment: number;
|
|
8
8
|
[key: string]: any;
|
|
9
|
-
}
|
|
10
|
-
export
|
|
9
|
+
};
|
|
10
|
+
export type PointProperties = {
|
|
11
11
|
closest: {
|
|
12
12
|
x: number;
|
|
13
13
|
y: number;
|
|
14
14
|
};
|
|
15
15
|
distance: number;
|
|
16
16
|
segment?: SegmentProperties;
|
|
17
|
-
}
|
|
18
|
-
export
|
|
17
|
+
};
|
|
18
|
+
export type LineAttr = {
|
|
19
19
|
type: "line";
|
|
20
20
|
x1: number;
|
|
21
21
|
y1: number;
|
|
22
22
|
x2: number;
|
|
23
23
|
y2: number;
|
|
24
24
|
[key: string]: string | number;
|
|
25
|
-
}
|
|
26
|
-
export
|
|
25
|
+
};
|
|
26
|
+
export type PolyAttr = {
|
|
27
27
|
type: "polygon" | "polyline";
|
|
28
28
|
points: string;
|
|
29
29
|
[key: string]: string | number;
|
|
30
|
-
}
|
|
31
|
-
export
|
|
30
|
+
};
|
|
31
|
+
export type CircleAttr = {
|
|
32
32
|
type: "circle";
|
|
33
33
|
cx: number;
|
|
34
34
|
cy: number;
|
|
35
35
|
r: number;
|
|
36
36
|
[key: string]: string | number;
|
|
37
|
-
}
|
|
38
|
-
export
|
|
37
|
+
};
|
|
38
|
+
export type EllipseAttr = {
|
|
39
39
|
type: "ellipse";
|
|
40
40
|
cx: number;
|
|
41
41
|
cy: number;
|
|
42
42
|
rx: number;
|
|
43
43
|
ry?: number;
|
|
44
44
|
[key: string]: string | number | undefined;
|
|
45
|
-
}
|
|
46
|
-
export
|
|
45
|
+
};
|
|
46
|
+
export type RectAttr = {
|
|
47
47
|
type: "rect";
|
|
48
48
|
width: number;
|
|
49
49
|
height: number;
|
|
@@ -52,13 +52,49 @@ export interface RectAttr {
|
|
|
52
52
|
rx?: number;
|
|
53
53
|
ry?: number;
|
|
54
54
|
[key: string]: string | number | undefined;
|
|
55
|
-
}
|
|
56
|
-
export
|
|
55
|
+
};
|
|
56
|
+
export type GlyphAttr = {
|
|
57
57
|
type: "glyph";
|
|
58
58
|
d: string;
|
|
59
59
|
[key: string]: string | number;
|
|
60
|
-
}
|
|
61
|
-
export
|
|
60
|
+
};
|
|
61
|
+
export type ShapeParams = {
|
|
62
|
+
line: [
|
|
63
|
+
"x1",
|
|
64
|
+
"y1",
|
|
65
|
+
"x2",
|
|
66
|
+
"y2"
|
|
67
|
+
];
|
|
68
|
+
circle: [
|
|
69
|
+
"cx",
|
|
70
|
+
"cy",
|
|
71
|
+
"r"
|
|
72
|
+
];
|
|
73
|
+
ellipse: [
|
|
74
|
+
"cx",
|
|
75
|
+
"cy",
|
|
76
|
+
"rx",
|
|
77
|
+
"ry"
|
|
78
|
+
];
|
|
79
|
+
rect: [
|
|
80
|
+
"width",
|
|
81
|
+
"height",
|
|
82
|
+
"x",
|
|
83
|
+
"y",
|
|
84
|
+
"rx",
|
|
85
|
+
"ry"
|
|
86
|
+
];
|
|
87
|
+
polygon: [
|
|
88
|
+
"points"
|
|
89
|
+
];
|
|
90
|
+
polyline: [
|
|
91
|
+
"points"
|
|
92
|
+
];
|
|
93
|
+
glyph: [
|
|
94
|
+
"d"
|
|
95
|
+
];
|
|
96
|
+
};
|
|
97
|
+
export type PathBBox = {
|
|
62
98
|
width: number;
|
|
63
99
|
height: number;
|
|
64
100
|
x: number;
|
|
@@ -68,8 +104,28 @@ export interface PathBBox {
|
|
|
68
104
|
cx: number;
|
|
69
105
|
cy: number;
|
|
70
106
|
cz: number;
|
|
71
|
-
}
|
|
72
|
-
export
|
|
107
|
+
};
|
|
108
|
+
export type SegmentLimits = {
|
|
109
|
+
min: {
|
|
110
|
+
x: number;
|
|
111
|
+
y: number;
|
|
112
|
+
};
|
|
113
|
+
max: {
|
|
114
|
+
x: number;
|
|
115
|
+
y: number;
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
export type ParserParams = {
|
|
119
|
+
x1: number;
|
|
120
|
+
y1: number;
|
|
121
|
+
x2: number;
|
|
122
|
+
y2: number;
|
|
123
|
+
x: number;
|
|
124
|
+
y: number;
|
|
125
|
+
qx: number | null;
|
|
126
|
+
qy: number | null;
|
|
127
|
+
};
|
|
128
|
+
export type LengthFactory = {
|
|
73
129
|
length: number;
|
|
74
130
|
point: {
|
|
75
131
|
x: number;
|
|
@@ -83,18 +139,32 @@ export interface LengthFactory {
|
|
|
83
139
|
x: number;
|
|
84
140
|
y: number;
|
|
85
141
|
};
|
|
86
|
-
}
|
|
87
|
-
export
|
|
88
|
-
round: "
|
|
142
|
+
};
|
|
143
|
+
export type Options = {
|
|
144
|
+
round: "off" | number;
|
|
89
145
|
origin: number[];
|
|
90
|
-
}
|
|
91
|
-
export
|
|
146
|
+
};
|
|
147
|
+
export type PathTransform = {
|
|
148
|
+
s: PathSegment;
|
|
149
|
+
c: string;
|
|
150
|
+
x: number;
|
|
151
|
+
y: number;
|
|
152
|
+
};
|
|
153
|
+
export type TransformObject = {
|
|
92
154
|
translate: number | number[];
|
|
93
155
|
rotate: number | number[];
|
|
94
156
|
scale: number | number[];
|
|
95
157
|
skew: number | number[];
|
|
96
158
|
origin: number[];
|
|
97
|
-
}
|
|
159
|
+
};
|
|
160
|
+
export type TransformProps = keyof TransformObject;
|
|
161
|
+
export type TransformEntries = [
|
|
162
|
+
TransformProps,
|
|
163
|
+
TransformObject[TransformProps]
|
|
164
|
+
][];
|
|
165
|
+
export type SpaceNumber = 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 | 5760;
|
|
166
|
+
export type PathCommandNumber = 109 | 122 | 108 | 104 | 118 | 99 | 115 | 113 | 116 | 97;
|
|
167
|
+
export type DigitNumber = 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57;
|
|
98
168
|
export type MCommand = "M";
|
|
99
169
|
export type mCommand = "m";
|
|
100
170
|
export type LCommand = "L";
|
|
@@ -115,6 +185,9 @@ export type TCommand = "T";
|
|
|
115
185
|
export type tCommand = "t";
|
|
116
186
|
export type ACommand = "A";
|
|
117
187
|
export type aCommand = "a";
|
|
188
|
+
export type AbsoluteCommand = MCommand | LCommand | VCommand | HCommand | ZCommand | CCommand | SCommand | QCommand | TCommand | ACommand;
|
|
189
|
+
export type RelativeCommand = mCommand | lCommand | vCommand | hCommand | zCommand | cCommand | sCommand | qCommand | tCommand | aCommand;
|
|
190
|
+
export type PathCommand = AbsoluteCommand | RelativeCommand;
|
|
118
191
|
export type MSegment = [
|
|
119
192
|
MCommand,
|
|
120
193
|
number,
|
|
@@ -244,6 +317,7 @@ export type aSegment = [
|
|
|
244
317
|
];
|
|
245
318
|
export type ArcSegment = ASegment | aSegment;
|
|
246
319
|
export type PathSegment = MoveSegment | LineSegment | VertLineSegment | HorLineSegment | CloseSegment | CubicSegment | ShortCubicSegment | QuadSegment | ShortQuadSegment | ArcSegment;
|
|
320
|
+
export type ShortSegment = VertLineSegment | HorLineSegment | ShortCubicSegment | ShortQuadSegment | CloseSegment;
|
|
247
321
|
export type AbsoluteSegment = MSegment | LSegment | VSegment | HSegment | CSegment | SSegment | QSegment | TSegment | ASegment | ZSegment;
|
|
248
322
|
export type RelativeSegment = mSegment | lSegment | vSegment | hSegment | cSegment | sSegment | qSegment | tSegment | aSegment | zSegment;
|
|
249
323
|
export type NormalSegment = MSegment | LSegment | CSegment | QSegment | ASegment | ZSegment;
|
|
@@ -267,7 +341,17 @@ export type CurveArray = [
|
|
|
267
341
|
MSegment,
|
|
268
342
|
...CSegment[]
|
|
269
343
|
];
|
|
344
|
+
export type PolygonArray = [
|
|
345
|
+
MSegment,
|
|
346
|
+
...LSegment[],
|
|
347
|
+
ZSegment
|
|
348
|
+
];
|
|
349
|
+
export type PolylineArray = [
|
|
350
|
+
MSegment,
|
|
351
|
+
...LSegment[]
|
|
352
|
+
];
|
|
270
353
|
export type ShapeTypes = SVGPolylineElement | SVGPolygonElement | SVGLineElement | SVGEllipseElement | SVGCircleElement | SVGRectElement;
|
|
354
|
+
export type ShapeTags = "line" | "polyline" | "polygon" | "ellipse" | "circle" | "rect" | "glyph";
|
|
271
355
|
export type ShapeOps = LineAttr | PolyAttr | PolyAttr | EllipseAttr | CircleAttr | RectAttr | GlyphAttr;
|
|
272
356
|
export type TransformObjectValues = Partial<TransformObject> & {
|
|
273
357
|
origin: [
|
|
@@ -276,6 +360,90 @@ export type TransformObjectValues = Partial<TransformObject> & {
|
|
|
276
360
|
number
|
|
277
361
|
];
|
|
278
362
|
};
|
|
363
|
+
export type Point = {
|
|
364
|
+
x: number;
|
|
365
|
+
y: number;
|
|
366
|
+
};
|
|
367
|
+
export type PointTuple = [
|
|
368
|
+
number,
|
|
369
|
+
number
|
|
370
|
+
];
|
|
371
|
+
export type DerivedPoint = Point & {
|
|
372
|
+
t: number;
|
|
373
|
+
};
|
|
374
|
+
export type QuadPoints = [
|
|
375
|
+
Point,
|
|
376
|
+
Point,
|
|
377
|
+
Point,
|
|
378
|
+
Point,
|
|
379
|
+
Point,
|
|
380
|
+
Point
|
|
381
|
+
];
|
|
382
|
+
export type CubicPoints = [
|
|
383
|
+
Point,
|
|
384
|
+
Point,
|
|
385
|
+
Point,
|
|
386
|
+
Point,
|
|
387
|
+
Point,
|
|
388
|
+
Point,
|
|
389
|
+
Point,
|
|
390
|
+
Point
|
|
391
|
+
];
|
|
392
|
+
export type DerivedQuadPoints = [
|
|
393
|
+
DerivedPoint,
|
|
394
|
+
DerivedPoint,
|
|
395
|
+
DerivedPoint,
|
|
396
|
+
DerivedPoint,
|
|
397
|
+
DerivedPoint,
|
|
398
|
+
DerivedPoint
|
|
399
|
+
];
|
|
400
|
+
export type DerivedCubicPoints = [
|
|
401
|
+
DerivedPoint,
|
|
402
|
+
DerivedPoint,
|
|
403
|
+
DerivedPoint,
|
|
404
|
+
DerivedPoint,
|
|
405
|
+
DerivedPoint,
|
|
406
|
+
DerivedPoint,
|
|
407
|
+
DerivedPoint,
|
|
408
|
+
DerivedPoint
|
|
409
|
+
];
|
|
410
|
+
export type QuadCoordinates = [
|
|
411
|
+
number,
|
|
412
|
+
number,
|
|
413
|
+
number,
|
|
414
|
+
number,
|
|
415
|
+
number,
|
|
416
|
+
number
|
|
417
|
+
];
|
|
418
|
+
export type CubicCoordinates = [
|
|
419
|
+
number,
|
|
420
|
+
number,
|
|
421
|
+
number,
|
|
422
|
+
number,
|
|
423
|
+
number,
|
|
424
|
+
number,
|
|
425
|
+
number,
|
|
426
|
+
number
|
|
427
|
+
];
|
|
428
|
+
export type ArcCoordinates = [
|
|
429
|
+
number,
|
|
430
|
+
number,
|
|
431
|
+
number,
|
|
432
|
+
number,
|
|
433
|
+
number,
|
|
434
|
+
number,
|
|
435
|
+
number,
|
|
436
|
+
number,
|
|
437
|
+
number
|
|
438
|
+
];
|
|
439
|
+
export type LineCoordinates = [
|
|
440
|
+
number,
|
|
441
|
+
number,
|
|
442
|
+
number,
|
|
443
|
+
number
|
|
444
|
+
];
|
|
445
|
+
export type DeriveCallback = (t: number) => Point;
|
|
446
|
+
export type IteratorCallback = (segment: PathSegment, params: ParserParams, index: number) => PathSegment;
|
|
279
447
|
/**
|
|
280
448
|
* Creates a new SVGPathCommander instance with the following properties:
|
|
281
449
|
* * segments: `pathArray`
|
|
@@ -284,33 +452,36 @@ export type TransformObjectValues = Partial<TransformObject> & {
|
|
|
284
452
|
*
|
|
285
453
|
* @class
|
|
286
454
|
* @author thednp <https://github.com/thednp/svg-path-commander>
|
|
287
|
-
* @returns
|
|
455
|
+
* @returns a new SVGPathCommander instance
|
|
288
456
|
*/
|
|
289
457
|
declare class SVGPathCommander {
|
|
290
458
|
static CSSMatrix: typeof CSSMatrix$1;
|
|
291
459
|
static getSVGMatrix: (transform: TransformObjectValues) => CSSMatrix$1;
|
|
292
|
-
static getPathBBox: (
|
|
460
|
+
static getPathBBox: (pathInput: PathArray | string) => {
|
|
461
|
+
x: number;
|
|
462
|
+
y: number;
|
|
463
|
+
width: number;
|
|
464
|
+
height: number;
|
|
465
|
+
x2: number;
|
|
466
|
+
y2: number;
|
|
467
|
+
cx: number;
|
|
468
|
+
cy: number;
|
|
469
|
+
cz: number;
|
|
470
|
+
};
|
|
293
471
|
static getPathArea: (path: PathArray) => number;
|
|
294
472
|
static getTotalLength: (pathInput: string | PathArray) => number;
|
|
295
473
|
static getDrawDirection: (path: string | PathArray) => boolean;
|
|
296
|
-
static getPointAtLength: (pathInput: string | PathArray, distance
|
|
474
|
+
static getPointAtLength: (pathInput: string | PathArray, distance?: number) => {
|
|
297
475
|
x: number;
|
|
298
476
|
y: number;
|
|
299
477
|
};
|
|
300
|
-
static pathLengthFactory: (pathInput: string | PathArray, distance?: number) => LengthFactory;
|
|
301
478
|
static getPropertiesAtLength: (pathInput: string | PathArray, distance?: number) => SegmentProperties;
|
|
302
479
|
static getPropertiesAtPoint: (pathInput: string | PathArray, point: {
|
|
303
480
|
x: number;
|
|
304
481
|
y: number;
|
|
305
482
|
}) => PointProperties;
|
|
306
|
-
static polygonLength: (polygon: [
|
|
307
|
-
|
|
308
|
-
number
|
|
309
|
-
][]) => number;
|
|
310
|
-
static polygonArea: (polygon: [
|
|
311
|
-
number,
|
|
312
|
-
number
|
|
313
|
-
][]) => number;
|
|
483
|
+
static polygonLength: (polygon: PointTuple[]) => number;
|
|
484
|
+
static polygonArea: (polygon: PointTuple[]) => number;
|
|
314
485
|
static getClosestPoint: (pathInput: string | PathArray, point: {
|
|
315
486
|
x: number;
|
|
316
487
|
y: number;
|
|
@@ -334,11 +505,11 @@ declare class SVGPathCommander {
|
|
|
334
505
|
static isCurveArray: (path: unknown) => path is CurveArray;
|
|
335
506
|
static isNormalizedArray: (path: unknown) => path is NormalArray;
|
|
336
507
|
static shapeToPath: (element: ShapeTypes | ShapeOps, replace?: boolean, ownerDocument?: Document) => SVGPathElement | false;
|
|
337
|
-
static shapeToPathArray: (element: ShapeTypes | ShapeOps, ownerDocument?: Document) =>
|
|
508
|
+
static shapeToPathArray: (element: ShapeTypes | ShapeOps, ownerDocument?: Document) => false | PathArray;
|
|
338
509
|
static parsePathString: (pathInput: string | PathArray) => PathArray;
|
|
339
510
|
static roundPath: (path: PathArray, roundOption?: number | "off") => PathArray;
|
|
340
511
|
static splitPath: (pathInput: PathArray) => PathArray[];
|
|
341
|
-
static splitCubic: (pts: number[]) => [
|
|
512
|
+
static splitCubic: (pts: number[], ratio?: number) => [
|
|
342
513
|
CubicSegment,
|
|
343
514
|
CubicSegment
|
|
344
515
|
];
|
|
@@ -346,7 +517,7 @@ declare class SVGPathCommander {
|
|
|
346
517
|
static reverseCurve: (path: CurveArray) => CurveArray;
|
|
347
518
|
static reversePath: (pathInput: PathArray) => PathArray;
|
|
348
519
|
static normalizePath: (pathInput: string | PathArray) => NormalArray;
|
|
349
|
-
static transformPath: (
|
|
520
|
+
static transformPath: (pathInput: PathArray | string, transform?: Partial<TransformObject>) => PathArray;
|
|
350
521
|
static pathToAbsolute: (pathInput: string | PathArray) => AbsoluteArray;
|
|
351
522
|
static pathToRelative: (pathInput: string | PathArray) => RelativeArray;
|
|
352
523
|
static pathToCurve: (pathInput: string | PathArray) => CurveArray;
|
|
@@ -360,17 +531,39 @@ declare class SVGPathCommander {
|
|
|
360
531
|
];
|
|
361
532
|
/**
|
|
362
533
|
* @constructor
|
|
363
|
-
* @param
|
|
364
|
-
* @param
|
|
534
|
+
* @param pathValue the path string
|
|
535
|
+
* @param config instance options
|
|
365
536
|
*/
|
|
366
537
|
constructor(pathValue: string, config?: Partial<Options>);
|
|
538
|
+
get bbox(): {
|
|
539
|
+
x: number;
|
|
540
|
+
y: number;
|
|
541
|
+
width: number;
|
|
542
|
+
height: number;
|
|
543
|
+
x2: number;
|
|
544
|
+
y2: number;
|
|
545
|
+
cx: number;
|
|
546
|
+
cy: number;
|
|
547
|
+
cz: number;
|
|
548
|
+
};
|
|
549
|
+
get length(): number;
|
|
367
550
|
/**
|
|
368
551
|
* Returns the path bounding box, equivalent to native `path.getBBox()`.
|
|
369
552
|
*
|
|
370
553
|
* @public
|
|
371
554
|
* @returns the pathBBox
|
|
372
555
|
*/
|
|
373
|
-
getBBox():
|
|
556
|
+
getBBox(): {
|
|
557
|
+
x: number;
|
|
558
|
+
y: number;
|
|
559
|
+
width: number;
|
|
560
|
+
height: number;
|
|
561
|
+
x2: number;
|
|
562
|
+
y2: number;
|
|
563
|
+
cx: number;
|
|
564
|
+
cy: number;
|
|
565
|
+
cz: number;
|
|
566
|
+
};
|
|
374
567
|
/**
|
|
375
568
|
* Returns the total path length, equivalent to native `path.getTotalLength()`.
|
|
376
569
|
*
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var SVGPathCommander=function(){"use strict";var je=Object.defineProperty;var ze=(k,P,$)=>P in k?je(k,P,{enumerable:!0,configurable:!0,writable:!0,value:$}):k[P]=$;var w=(k,P,$)=>ze(k,typeof P!="symbol"?P+"":P,$);const k={origin:[0,0,0],round:4},P="SVGPathCommander Error",$={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>=$[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,$[n])]),!!$[n]););},te=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=`${P}: invalid Arc flag "${n[t]}", expecting 0 or 1 at index ${t}`},Z=e=>e>=48&&e<=57,X="Invalid path value",ee=e=>{const{max:t,pathValue:n,index:r}=e;let s=r,i=!1,o=!1,l=!1,a=!1,c;if(s>=t){e.err=`${P}: ${X} at index ${s}, "pathValue" is missing param`;return}if(c=n.charCodeAt(s),(c===43||c===45)&&(s+=1,c=n.charCodeAt(s)),!Z(c)&&c!==46){e.err=`${P}: ${X} at index ${s}, "${n[s]}" is not a number`;return}if(c!==46){if(i=c===48,s+=1,c=n.charCodeAt(s),i&&s<t&&c&&Z(c)){e.err=`${P}: ${X} at index ${r}, "${n[r]}" illegal number`;return}for(;s<t&&Z(n.charCodeAt(s));)s+=1,o=!0;c=n.charCodeAt(s)}if(c===46){for(a=!0,s+=1;Z(n.charCodeAt(s));)s+=1,l=!0;c=n.charCodeAt(s)}if(c===101||c===69){if(a&&!o&&!l){e.err=`${P}: ${X} at index ${s}, "${n[s]}" invalid float exponent`;return}if(s+=1,c=n.charCodeAt(s),(c===43||c===45)&&(s+=1),s<t&&Z(n.charCodeAt(s)))for(;s<t&&Z(n.charCodeAt(s));)s+=1;else{e.err=`${P}: ${X} at index ${s}, "${n[s]}" invalid integer exponent`;return}}e.index=s,e.param=+e.pathValue.slice(r,s)},ne=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),B=e=>{const{pathValue:t,max:n}=e;for(;e.index<n&&ne(t.charCodeAt(e.index));)e.index+=1},se=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}},re=e=>Z(e)||e===43||e===45||e===46,ie=e=>(e|32)===97,Tt=e=>{const{max:t,pathValue:n,index:r}=e,s=n.charCodeAt(r),i=$[n[r].toLowerCase()];if(e.segmentStart=r,!se(s)){e.err=`${P}: ${X} "${n[r]}" is not a path command`;return}if(e.index+=1,B(e),e.data=[],!i){Ct(e);return}for(;;){for(let o=i;o>0;o-=1){if(ie(s)&&(o===3||o===4)?te(e):ee(e),e.err.length)return;e.data.push(e.param),B(e),e.index<t&&n.charCodeAt(e.index)===44&&(e.index+=1,B(e))}if(e.index>=e.max||!re(n.charCodeAt(e.index)))break}Ct(e)};class Lt{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 J=e=>Array.isArray(e)&&e.every(t=>{const n=t[0].toLowerCase();return $[n]===t.length-1&&"achlmqstvz".includes(n)&&t.slice(1).every(Number.isFinite)})&&e.length>0,F=e=>{if(J(e))return[...e];const t=new Lt(e);for(B(t);t.index<t.max&&!t.err.length;)Tt(t);if(t.err&&t.err.length)throw TypeError(t.err);return t.segments},oe=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},V=(e,t)=>Math.sqrt((e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])),ce=e=>e.reduce((t,n,r)=>r?t+V(e[r-1],n):0,0);var ae=Object.defineProperty,le=(e,t,n)=>t in e?ae(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,T=(e,t,n)=>le(e,typeof t!="symbol"?t+"":t,n);const me={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),kt=e=>e instanceof DOMMatrix||e instanceof v||typeof e=="object"&&Object.keys(me).every(t=>e&&t in e),U=e=>{const t=new v,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,a,c,m,u,y,g,f,h,x,p,b]=n;t.m11=r,t.a=r,t.m21=l,t.c=l,t.m31=u,t.m41=h,t.e=h,t.m12=s,t.b=s,t.m22=a,t.d=a,t.m32=y,t.m42=x,t.f=x,t.m13=i,t.m23=c,t.m33=g,t.m43=p,t.m14=o,t.m24=m,t.m34=f,t.m44=b}else if(n.length===6){const[r,s,i,o,l,a]=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=a,t.f=a}return t},$t=e=>{if(kt(e))return U([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.`)},qt=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 l=o.split(",").map(f=>f.includes("rad")?parseFloat(f)*(180/Math.PI):parseFloat(f)),[a,c,m,u]=l,y=[a,c,m],g=[a,c,m,u];if(i==="perspective"&&a&&[c,m].every(f=>f===void 0))n.m34=-1/a;else if(i.includes("matrix")&&[6,16].includes(l.length)&&l.every(f=>!Number.isNaN(+f))){const f=l.map(h=>Math.abs(h)<1e-6?0:h);n=n.multiply(U(f))}else if(i==="translate3d"&&y.every(f=>!Number.isNaN(+f)))n=n.translate(a,c,m);else if(i==="translate"&&a&&m===void 0)n=n.translate(a,c||0,0);else if(i==="rotate3d"&&g.every(f=>!Number.isNaN(+f))&&u)n=n.rotateAxisAngle(a,c,m,u);else if(i==="rotate"&&a&&[c,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,c,m);else if(i==="scale"&&!Number.isNaN(a)&&a!==1&&m===void 0){const f=Number.isNaN(+c)?a:c;n=n.scale(a,f,1)}else if(i==="skew"&&(a||!Number.isNaN(a)&&c)&&m===void 0)n=n.skew(a,c||0);else if(["translate","rotate","scale","skew"].some(f=>i.includes(f))&&/[XYZ]/.test(i)&&a&&[c,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,""),x=["X","Y","Z"].indexOf(h),p=f==="scale"?1:0,b=[x===0?a:p,x===1?a:p,x===2?a:p];n=n[f](...b)}else throw TypeError(r)}),n},gt=(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],Ot=(e,t,n)=>{const r=new v;return r.m41=e,r.e=e,r.m42=t,r.f=t,r.m43=n,r},Et=(e,t,n)=>{const r=new v,s=Math.PI/180,i=e*s,o=t*s,l=n*s,a=Math.cos(i),c=-Math.sin(i),m=Math.cos(o),u=-Math.sin(o),y=Math.cos(l),g=-Math.sin(l),f=m*y,h=-m*g;r.m11=f,r.a=f,r.m12=h,r.b=h,r.m13=u;const x=c*u*y+a*g;r.m21=x,r.c=x;const p=a*y-c*u*g;return r.m22=p,r.d=p,r.m23=-c*m,r.m31=c*g-a*u*y,r.m32=c*y+a*u*g,r.m33=a*m,r},jt=(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,l=t/i,a=n/i,c=r*(Math.PI/360),m=Math.sin(c),u=Math.cos(c),y=m*m,g=o*o,f=l*l,h=a*a,x=1-2*(f+h)*y;s.m11=x,s.a=x;const p=2*(o*l*y+a*m*u);s.m12=p,s.b=p,s.m13=2*(o*a*y-l*m*u);const b=2*(l*o*y-a*m*u);s.m21=b,s.c=b;const A=1-2*(h+g)*y;return s.m22=A,s.d=A,s.m23=2*(l*a*y+o*m*u),s.m31=2*(a*o*y+l*m*u),s.m32=2*(a*l*y-o*m*u),s.m33=1-2*(g+f)*y,s},zt=(e,t,n)=>{const r=new v;return r.m11=e,r.a=e,r.m22=t,r.d=t,r.m33=n,r},et=(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},It=e=>et(e,0),Dt=e=>et(0,e),O=(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,a=t.m21*e.m13+t.m22*e.m23+t.m23*e.m33+t.m24*e.m43,c=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,g=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,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 U([n,r,s,i,o,l,a,c,m,u,y,g,f,h,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"?qt(t):Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array?U(t):typeof t=="object"?$t(t):this}toFloat32Array(t){return Float32Array.from(gt(this,t))}toFloat64Array(t){return Float64Array.from(gt(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 O(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),O(this,Ot(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),O(this,zt(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),O(this,Et(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 O(this,jt(t,n,r,s))}skewX(t){return O(this,It(t))}skewY(t){return O(this,Dt(t))}skew(t,n){return O(this,et(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}}}T(v,"Translate",Ot),T(v,"Rotate",Et),T(v,"RotateAxisAngle",jt),T(v,"Scale",zt),T(v,"SkewX",It),T(v,"SkewY",Dt),T(v,"Skew",et),T(v,"Multiply",O),T(v,"fromArray",U),T(v,"fromMatrix",$t),T(v,"fromString",qt),T(v,"toArray",gt),T(v,"isCompatibleArray",St),T(v,"isCompatibleObject",kt);const xt=e=>J(e)&&e.every(([t])=>t===t.toUpperCase()),Q=e=>{if(xt(e))return[...e];const t=F(e);let n=0,r=0,s=0,i=0;return t.map(o=>{const l=o.slice(1).map(Number),[a]=o,c=a.toUpperCase();if(a==="M")return[n,r]=l,s=n,i=r,["M",n,r];let m=[];if(a!==c)if(c==="A")m=[c,l[0],l[1],l[2],l[3],l[4],l[5]+n,l[6]+r];else if(c==="V")m=[c,l[0]+r];else if(c==="H")m=[c,l[0]+n];else{const u=l.map((y,g)=>y+(g%2?r:n));m=[c,...u]}else m=[c,...l];return c==="Z"?(n=s,r=i):c==="H"?[,n]=m:c==="V"?[,r]=m:([n,r]=m.slice(-2),c==="M"&&(s=n,i=r)),m})},he=(e,t)=>{const[n]=e,{x1:r,y1:s,x2:i,y2:o}=t,l=e.slice(1).map(Number);let a=e;if("TQ".includes(n)||(t.qx=null,t.qy=null),n==="H")a=["L",e[1],s];else if(n==="V")a=["L",r,e[1]];else if(n==="S"){const c=r*2-i,m=s*2-o;t.x1=c,t.y1=m,a=["C",c,m,...l]}else if(n==="T"){const c=r*2-(t.qx?t.qx:0),m=s*2-(t.qy?t.qy:0);t.qx=c,t.qy=m,a=["Q",c,m,...l]}else if(n==="Q"){const[c,m]=l;t.qx=c,t.qy=m}return a},pt=e=>xt(e)&&e.every(([t])=>"ACLMQZ".includes(t)),nt={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},I=e=>{if(pt(e))return[...e];const t=Q(e),n={...nt},r=t.length;for(let s=0;s<r;s+=1){t[s],t[s]=he(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},E=(e,t,n)=>{const[r,s]=e,[i,o]=t;return[r+(i-r)*n,s+(o-s)*n]},bt=(e,t,n,r,s)=>{const i=V([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,a]=E([e,t],[n,r],s/i);o={x:l,y:a}}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)}}},Zt=(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)},ue=(e,t,n,r,s,i,o,l,a,c)=>{const{abs:m,sin:u,cos:y,sqrt:g,PI:f}=Math;let h=m(n),x=m(r);const b=(s%360+360)%360*(f/180);if(e===l&&t===a)return{x:e,y:t};if(h===0||x===0)return bt(e,t,l,a,c).point;const A=(e-l)/2,d=(t-a)/2,M={x:y(b)*A+u(b)*d,y:-u(b)*A+y(b)*d},L=M.x**2/h**2+M.y**2/x**2;L>1&&(h*=g(L),x*=g(L));const D=h**2*x**2-h**2*M.y**2-x**2*M.x**2,_=h**2*M.y**2+x**2*M.x**2;let Y=D/_;Y=Y<0?0:Y;const ht=(i!==o?1:-1)*g(Y),q={x:ht*(h*M.y/x),y:ht*(-(x*M.x)/h)},ut={x:y(b)*q.x-u(b)*q.y+(e+l)/2,y:u(b)*q.x+y(b)*q.y+(t+a)/2},W={x:(M.x-q.x)/h,y:(M.y-q.y)/x},ft=Zt({x:1,y:0},W),yt={x:(-M.x-q.x)/h,y:(-M.y-q.y)/x};let j=Zt(W,yt);!o&&j>0?j-=2*f:o&&j<0&&(j+=2*f),j%=2*f;const z=ft+j*c,G=h*y(z),tt=x*u(z);return{x:y(b)*G-u(b)*tt+ut.x,y:u(b)*G+y(b)*tt+ut.y}},fe=(e,t,n,r,s,i,o,l,a,c)=>{const m=typeof c=="number";let u=e,y=t,g=0,f=[u,y,g],h=[u,y],x=0,p={x:0,y:0},b=[{x:u,y}];m&&c<=0&&(p={x:u,y});const A=300;for(let d=0;d<=A;d+=1){if(x=d/A,{x:u,y}=ue(e,t,n,r,s,i,o,l,a,x),b=[...b,{x:u,y}],g+=V(h,[u,y]),h=[u,y],m&&g>c&&c>f[2]){const M=(g-c)/(g-f[2]);p={x:h[0]*(1-M)+f[0]*M,y:h[1]*(1-M)+f[1]*M}}f=[u,y,g]}return m&&c>=g&&(p={x:l,y:a}),{length:g,point:p,min:{x:Math.min(...b.map(d=>d.x)),y:Math.min(...b.map(d=>d.y))},max:{x:Math.max(...b.map(d=>d.x)),y:Math.max(...b.map(d=>d.y))}}},ye=(e,t,n,r,s,i,o,l,a)=>{const c=1-a;return{x:c**3*e+3*c**2*a*n+3*c*a**2*s+a**3*o,y:c**3*t+3*c**2*a*r+3*c*a**2*i+a**3*l}},ge=(e,t,n,r,s,i,o,l,a)=>{const c=typeof a=="number";let m=e,u=t,y=0,g=[m,u,y],f=[m,u],h=0,x={x:0,y:0},p=[{x:m,y:u}];c&&a<=0&&(x={x:m,y:u});const b=300;for(let A=0;A<=b;A+=1){if(h=A/b,{x:m,y:u}=ye(e,t,n,r,s,i,o,l,h),p=[...p,{x:m,y:u}],y+=V(f,[m,u]),f=[m,u],c&&y>a&&a>g[2]){const d=(y-a)/(y-g[2]);x={x:f[0]*(1-d)+g[0]*d,y:f[1]*(1-d)+g[1]*d}}g=[m,u,y]}return c&&a>=y&&(x={x:o,y:l}),{length:y,point:x,min:{x:Math.min(...p.map(A=>A.x)),y:Math.min(...p.map(A=>A.y))},max:{x:Math.max(...p.map(A=>A.x)),y:Math.max(...p.map(A=>A.y))}}},xe=(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}},pe=(e,t,n,r,s,i,o)=>{const l=typeof o=="number";let a=e,c=t,m=0,u=[a,c,m],y=[a,c],g=0,f={x:0,y:0},h=[{x:a,y:c}];l&&o<=0&&(f={x:a,y:c});const x=300;for(let p=0;p<=x;p+=1){if(g=p/x,{x:a,y:c}=xe(e,t,n,r,s,i,g),h=[...h,{x:a,y:c}],m+=V(y,[a,c]),y=[a,c],l&&m>o&&o>u[2]){const b=(m-o)/(m-u[2]);f={x:y[0]*(1-b)+u[0]*b,y:y[1]*(1-b)+u[1]*b}}u=[a,c,m]}return l&&o>=m&&(f={x:s,y:i}),{length:m,point:f,min:{x:Math.min(...h.map(p=>p.x)),y:Math.min(...h.map(p=>p.y))},max:{x:Math.max(...h.map(p=>p.x)),y:Math.max(...h.map(p=>p.y))}}},st=(e,t)=>{const n=I(e),r=typeof t=="number";let s,i=[],o,l=0,a=0,c=0,m=0,u,y=[],g=[],f=0,h={x:0,y:0},x=h,p=h,b=h,A=0;for(let d=0,M=n.length;d<M;d+=1)u=n[d],[o]=u,s=o==="M",i=s?i:[l,a,...u.slice(1)],s?([,c,m]=u,h={x:c,y:m},x=h,f=0,r&&t<.001&&(b=h)):o==="L"?{length:f,min:h,max:x,point:p}=bt(...i,(t||0)-A):o==="A"?{length:f,min:h,max:x,point:p}=fe(...i,(t||0)-A):o==="C"?{length:f,min:h,max:x,point:p}=ge(...i,(t||0)-A):o==="Q"?{length:f,min:h,max:x,point:p}=pe(...i,(t||0)-A):o==="Z"&&(i=[l,a,c,m],{length:f,min:h,max:x,point:p}=bt(...i,(t||0)-A)),r&&A<t&&A+f>=t&&(b=p),g=[...g,x],y=[...y,h],A+=f,[l,a]=o!=="Z"?u.slice(-2):[c,m];return r&&t>=A&&(b={x:l,y:a}),{length:A,point:b,min:{x:Math.min(...y.map(d=>d.x)),y:Math.min(...y.map(d=>d.y))},max:{x:Math.max(...g.map(d=>d.x)),y:Math.max(...g.map(d=>d.y))}}},Ft=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}}=st(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)}},Rt=e=>pt(e)&&e.every(([t])=>"MC".includes(t)),rt=(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}},Xt=(e,t,n,r,s,i,o,l,a,c)=>{let m=e,u=t,y=n,g=r,f=l,h=a;const x=Math.PI*120/180,p=Math.PI/180*(+s||0);let b=[],A,d,M,L,D;if(c)[d,M,L,D]=c;else{A=rt(m,u,-p),m=A.x,u=A.y,A=rt(f,h,-p),f=A.x,h=A.y;const C=(m-f)/2,S=(u-h)/2;let R=C*C/(y*y)+S*S/(g*g);R>1&&(R=Math.sqrt(R),y*=R,g*=R);const vt=y*y,Pt=g*g,Gt=(i===o?-1:1)*Math.sqrt(Math.abs((vt*Pt-vt*S*S-Pt*C*C)/(vt*S*S+Pt*C*C)));L=Gt*y*S/g+(m+f)/2,D=Gt*-g*C/y+(u+h)/2,d=Math.asin(((u-D)/g*10**9>>0)/10**9),M=Math.asin(((h-D)/g*10**9>>0)/10**9),d=m<L?Math.PI-d:d,M=f<L?Math.PI-M:M,d<0&&(d=Math.PI*2+d),M<0&&(M=Math.PI*2+M),o&&d>M&&(d-=Math.PI*2),!o&&M>d&&(M-=Math.PI*2)}let _=M-d;if(Math.abs(_)>x){const C=M,S=f,R=h;M=d+x*(o&&M>d?1:-1),f=L+y*Math.cos(M),h=D+g*Math.sin(M),b=Xt(f,h,y,g,s,0,o,S,R,[M,C,L,D])}_=M-d;const Y=Math.cos(d),ht=Math.sin(d),q=Math.cos(M),ut=Math.sin(M),W=Math.tan(_/4),ft=4/3*y*W,yt=4/3*g*W,j=[m,u],z=[m+ft*ht,u-yt*Y],G=[f+ft*ut,h-yt*q],tt=[f,h];if(z[0]=2*j[0]-z[0],z[1]=2*j[1]-z[1],c)return[...z,...G,...tt,...b];b=[...z,...G,...tt,...b];const wt=[];for(let C=0,S=b.length;C<S;C+=1)wt[C]=C%2?rt(b[C-1],b[C],p).y:rt(b[C],b[C+1],p).x;return wt},be=(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]},Qt=(e,t,n,r)=>{const s=E([e,t],[n,r],.3333333333333333),i=E([e,t],[n,r],2/3);return[...s,...i,n,r]},it=(e,t)=>{const[n]=e,r=e.slice(1).map(Number),[s,i]=r;let o;const{x1:l,y1:a,x:c,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,a,...r],["C",...Xt(...o)]):n==="Q"?(t.qx=s,t.qy=i,o=[l,a,...r],["C",...be(...o)]):n==="L"?["C",...Qt(l,a,s,i)]:n==="Z"?["C",...Qt(l,a,c,m)]:e},ot=e=>{if(Rt(e))return[...e];const t=I(e),n={...nt},r=[];let s="",i=t.length;for(let o=0;o<i;o+=1){[s]=t[o],r[o]=s,t[o]=it(t[o],n),dt(t,r,o),i=t.length;const l=t[o],a=l.length;n.x1=+l[a-2],n.y1=+l[a-1],n.x2=+l[a-4]||n.x1,n.y2=+l[a-3]||n.y1}return t},de=(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,Ht=e=>{let t=0,n=0,r=0;return ot(e).map(s=>{switch(s[0]){case"M":return[,t,n]=s,0;default:return r=de(t,n,...s.slice(1)),[t,n]=s.slice(-2),r}}).reduce((s,i)=>s+i,0)},H=e=>st(e).length,Me=e=>Ht(ot(e))>=0,K=(e,t)=>st(e,t).point,Mt=(e,t)=>{const n=F(e);let r=[...n],s=H(r),i=r.length-1,o=0,l=0,a=n[0];const[c,m]=a.slice(-2),u={x:c,y:m};if(i<=0||!t||!Number.isFinite(t))return{segment:a,index:0,length:l,point:u,lengthAtSegment:o};if(t>=s)return r=n.slice(0,-1),o=H(r),l=s-o,{segment:n[i],index:i,length:l,lengthAtSegment:o};const y=[];for(;i>0;)a=r[i],r=r.slice(0,-1),o=H(r),l=s-o,s=o,y.push({segment:a,index:i,length:l,lengthAtSegment:o}),i-=1;return y.find(({lengthAtSegment:g})=>g<=t)},ct=(e,t)=>{const n=F(e),r=I(n),s=H(n),i=d=>{const M=d.x-t.x,L=d.y-t.y;return M*M+L*L};let o=8,l,a={x:0,y:0},c=0,m=0,u=1/0;for(let d=0;d<=s;d+=o)l=K(r,d),c=i(l),c<u&&(a=l,m=d,u=c);o/=2;let y,g,f=0,h=0,x=0,p=0;for(;o>.5;)f=m-o,y=K(r,f),x=i(y),h=m+o,g=K(r,h),p=i(g),f>=0&&x<u?(a=y,m=f,u=x):h<=s&&p<u?(a=g,m=h,u=p):o/=2;const b=Mt(n,m),A=Math.sqrt(u);return{closest:a,distance:A,segment:b}},Ae=(e,t)=>ct(e,t).closest,Ne=(e,t)=>ct(e,t).segment,we=(e,t)=>Mt(e,t).segment,ve=(e,t)=>{const{distance:n}=ct(e,t);return Math.abs(n)<.001},Yt=e=>{if(typeof e!="string"||!e.length)return!1;const t=new Lt(e);for(B(t);t.index<t.max&&!t.err.length;)Tt(t);return!t.err.length&&"mM".includes(t.segments[0][0])},Bt=e=>J(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"]},Pe=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]]},Ce=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},Te=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]]},Le=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]]},Se=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"]]},Jt=(e,t)=>{const r=(t||document).defaultView||window,s=Object.keys(at),i=e instanceof r.SVGElement,o=i?e.tagName:null;if(o&&[...s,"path"].every(u=>o!==u))throw TypeError(`${P}: "${o}" is not SVGElement`);const l=i?o:e.type,a=at[l],c={type:l};i?a.forEach(u=>{c[u]=e.getAttribute(u)}):Object.assign(c,e);let m=[];return l==="circle"?m=Te(c):l==="ellipse"?m=Le(c):["polyline","polygon"].includes(l)?m=Ce(c):l==="rect"?m=Se(c):l==="line"?m=Pe(c):["glyph","path"].includes(l)&&(m=F(i?e.getAttribute("d")||"":e.d||"")),J(m)&&m.length?m:!1},lt=(e,t)=>{let{round:n}=k;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]})},At=(e,t)=>lt(e,t).map(n=>n[0]+n.slice(1).join(" ")).join(""),ke=(e,t,n)=>{const r=n||document,s=r.defaultView||window,i=Object.keys(at),o=e instanceof s.SVGElement,l=o?e.tagName:null;if(l==="path")throw TypeError(`${P}: "${l}" is already SVGPathElement`);if(l&&i.every(h=>l!==h))throw TypeError(`${P}: "${l}" is not SVGElement`);const a=r.createElementNS("http://www.w3.org/2000/svg","path"),c=o?l:e.type,m=at[c],u={type:c},y=k.round,g=Jt(e,r),f=g&&g.length?At(g,y):"";return o?(m.forEach(h=>{u[h]=e.getAttribute(h)}),Object.values(e.attributes).forEach(({name:h,value:x})=>{m.includes(h)||a.setAttribute(h,x)})):(Object.assign(u,e),Object.keys(u).forEach(h=>{!m.includes(h)&&h!=="type"&&a.setAttribute(h.replace(/[A-Z]/g,x=>`-${x.toLowerCase()}`),u[h])})),Yt(f)?(a.setAttribute("d",f),t&&o&&(e.before(a,e),e.remove()),a):!1},Vt=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},Ut=e=>{let t=new v;const{origin:n}=e,[r,s]=n,{translate:i}=e,{rotate:o}=e,{skew:l}=e,{scale:a}=e;return Array.isArray(i)&&i.length>=2&&i.every(c=>!Number.isNaN(+c))&&i.some(c=>c!==0)?t=t.translate(...i):typeof i=="number"&&!Number.isNaN(i)&&(t=t.translate(i)),(o||l||a)&&(t=t.translate(r,s),Array.isArray(o)&&o.length>=2&&o.every(c=>!Number.isNaN(+c))&&o.some(c=>c!==0)?t=t.rotate(...o):typeof o=="number"&&!Number.isNaN(o)&&(t=t.rotate(o)),Array.isArray(l)&&l.length===2&&l.every(c=>!Number.isNaN(+c))&&l.some(c=>c!==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(a)&&a.length>=2&&a.every(c=>!Number.isNaN(+c))&&a.some(c=>c!==1)?t=t.scale(...a):typeof a=="number"&&!Number.isNaN(a)&&(t=t.scale(a)),t=t.translate(-r,-s)),t},Nt=e=>{if(Bt(e))return[...e];const t=F(e);let n=0,r=0,s=0,i=0;return t.map(o=>{const l=o.slice(1).map(Number),[a]=o,c=a.toLowerCase();if(a==="M")return[n,r]=l,s=n,i=r,["M",n,r];let m=[];if(a!==c)if(c==="a")m=[c,l[0],l[1],l[2],l[3],l[4],l[5]-n,l[6]-r];else if(c==="v")m=[c,l[0]-r];else if(c==="h")m=[c,l[0]-n];else{const y=l.map((g,f)=>g-(f%2?r:n));m=[c,...y]}else a==="m"&&(s=l[0]+n,i=l[1]+r),m=[c,...l];const u=m.length;return c==="z"?(n=s,r=i):c==="h"?n+=m[1]:c==="v"?r+=m[1]:(n+=m[u-2],r+=m[u-1]),m})},$e=(e,t,n,r)=>{const[s]=e,i=p=>Math.round(p*10**4)/10**4,o=e.slice(1).map(p=>+p),l=t.slice(1).map(p=>+p),{x1:a,y1:c,x2:m,y2:u,x:y,y:g}=n;let f=e;const[h,x]=l.slice(-2);if("TQ".includes(s)||(n.qx=null,n.qy=null),["V","H","S","T","Z"].includes(s))f=[s,...o];else if(s==="L")i(y)===i(h)?f=["V",x]:i(g)===i(x)&&(f=["H",h]);else if(s==="C"){const[p,b]=l;"CS".includes(r)&&(i(p)===i(a*2-m)&&i(b)===i(c*2-u)||i(a)===i(m*2-y)&&i(c)===i(u*2-g))&&(f=["S",...l.slice(-4)]),n.x1=p,n.y1=b}else if(s==="Q"){const[p,b]=l;n.qx=p,n.qy=b,"QT".includes(r)&&(i(p)===i(a*2-m)&&i(b)===i(c*2-u)||i(a)===i(m*2-y)&&i(c)===i(u*2-g))&&(f=["T",...l.slice(-2)])}return f},Kt=(e,t)=>{const n=Q(e),r=I(n),s={...nt},i=[],o=n.length;let l="",a="",c=0,m=0,u=0,y=0;for(let h=0;h<o;h+=1){[l]=n[h],i[h]=l,h&&(a=i[h-1]),n[h]=$e(n[h],r[h],s,a);const x=n[h],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,l){case"Z":c=u,m=y;break;case"H":[,c]=x;break;case"V":[,m]=x;break;default:[c,m]=x.slice(-2).map(Number),l==="M"&&(u=c,y=m)}s.x=c,s.y=m}const g=lt(n,t),f=lt(Nt(n),t);return g.map((h,x)=>x?h.join("").length<f[x].join("").length?h:f[x]:h)},qe=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)])]},mt=e=>{const t=Q(e),n=t.slice(-1)[0][0]==="Z",r=I(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,a=s.n,c=i&&o[i-1],m=o[i+1],u=s.c,y=o.length,g=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,g,f];break;case"A":h=[u,...l.slice(1,-3),l[5]===1?0:1,g,f];break;case"C":m&&m.c==="S"?h=["S",l[1],l[2],g,f]:h=[u,l[3],l[4],l[1],l[2],g,f];break;case"S":c&&"CS".includes(c.c)&&(!m||m.c!=="S")?h=["C",a[3],a[4],a[1],a[2],g,f]:h=[u,a[1],a[2],g,f];break;case"Q":m&&m.c==="T"?h=["T",g,f]:h=[u,...l.slice(1,-2),g,f];break;case"T":c&&"QT".includes(c.c)&&(!m||m.c!=="T")?h=["Q",a[1],a[2],g,f]:h=[u,g,f];break;case"Z":h=["M",g,f];break;case"H":h=[u,g];break;case"V":h=[u,f];break;default:h=[u,...l.slice(1,-2),g,f]}return h});return n?r.reverse():[r[0],...r.slice(1).reverse()]},Oe=(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]},_t=(e,t,n)=>{const[r,s,i]=n,[o,l,a]=Oe(e,[...t,0,1]),c=o-r,m=l-s,u=a-i;return[c*(Math.abs(i)/Math.abs(u)||1)+r,m*(Math.abs(i)/Math.abs(u)||1)+s]},Wt=(e,t)=>{let n=0,r=0,s,i,o,l,a,c;const m=Q(e),u=t&&Object.keys(t);if(!t||u&&!u.length)return[...m];const y=I(m);if(!t.origin){const{origin:M}=k;Object.assign(t,{origin:M})}const g=Ut(t),{origin:f}=t,h={...nt};let x=[],p=0,b="",A=[];const d=[];if(!g.isIdentity){for(s=0,o=m.length;s<o;s+=1){x=m[s],m[s]&&([b]=x),d[s]=b,b==="A"&&(x=it(y[s],h),m[s]=it(y[s],h),dt(m,d,s),y[s]=it(y[s],h),dt(y,d,s),o=Math.max(m.length,y.length)),x=y[s],p=x.length,h.x1=+x[p-2],h.y1=+x[p-1],h.x2=+x[p-4]||h.x1,h.y2=+x[p-3]||h.y1;const M={s:m[s],c:m[s][0],x:h.x1,y:h.y1};A=[...A,M]}return A.map(M=>{if(b=M.c,x=M.s,b==="L"||b==="H"||b==="V")return[a,c]=_t(g,[M.x,M.y],f),n!==a&&r!==c?x=["L",a,c]:r===c?x=["H",a]:n===a&&(x=["V",c]),n=a,r=c,x;for(i=1,l=x.length;i<l;i+=2)[n,r]=_t(g,[+x[i],+x[i+1]],f),x[i]=n,x[i+1]=r;return x})}return[...m]},Ee=e=>{const n=e.slice(0,2),r=e.slice(2,4),s=e.slice(4,6),i=e.slice(6,8),o=E(n,r,.5),l=E(r,s,.5),a=E(s,i,.5),c=E(o,l,.5),m=E(l,a,.5),u=E(c,m,.5);return[["C",...o,...c,...u],["C",...m,...a,...i]]};class N{constructor(t,n){const r=n||{},s=typeof t>"u";if(s||!t.length)throw TypeError(`${P}: "pathValue" is ${s?"undefined":"empty"}`);const i=F(t);this.segments=i;const{width:o,height:l,cx:a,cy:c,cz:m}=this.getBBox(),{round:u,origin:y}=r;let g;if(u==="auto"){const h=`${Math.floor(Math.max(o,l))}`.length;g=h>=4?0:4-h}else Number.isInteger(u)||u==="off"?g=u:g=k.round;let f;if(Array.isArray(y)&&y.length>=2){const[h,x,p]=y.map(Number);f=[Number.isNaN(h)?a:h,Number.isNaN(x)?c:x,Number.isNaN(p)?m:p]}else f=[a,c,m];return this.round=g,this.origin=f,this}getBBox(){return Ft(this.segments)}getTotalLength(){return H(this.segments)}getPointAtLength(t){return K(this.segments,t)}toAbsolute(){const{segments:t}=this;return this.segments=Q(t),this}toRelative(){const{segments:t}=this;return this.segments=Nt(t),this}toCurve(){const{segments:t}=this;return this.segments=ot(t),this}reverse(t){this.toAbsolute();const{segments:n}=this,r=Vt(n),s=r.length>1?r:!1,i=s?[...s].map((l,a)=>t?a?mt(l):[...l]:mt(l)):[...n];let o=[];return s?o=i.flat(1):o=t?n:mt(n),this.segments=[...o],this}normalize(){const{segments:t}=this;return this.segments=I(t),this}optimize(){const{segments:t}=this;return this.segments=Kt(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:[r,s,i]}=this,o={};for(const[a,c]of Object.entries(t))a==="skew"&&Array.isArray(c)||(a==="rotate"||a==="translate"||a==="origin"||a==="scale")&&Array.isArray(c)?o[a]=c.map(Number):a!=="origin"&&typeof Number(c)=="number"&&(o[a]=Number(c));const{origin:l}=o;if(Array.isArray(l)&&l.length>=2){const[a,c,m]=l.map(Number);o.origin=[Number.isNaN(a)?r:a,Number.isNaN(c)?s:c,m||i]}else o.origin=[r,s,i];return this.segments=Wt(n,o),this}flipX(){return this.transform({rotate:[0,180,0]}),this}flipY(){return this.transform({rotate:[180,0,0]}),this}toString(){return At(this.segments,this.round)}}return w(N,"CSSMatrix",v),w(N,"getSVGMatrix",Ut),w(N,"getPathBBox",Ft),w(N,"getPathArea",Ht),w(N,"getTotalLength",H),w(N,"getDrawDirection",Me),w(N,"getPointAtLength",K),w(N,"pathLengthFactory",st),w(N,"getPropertiesAtLength",Mt),w(N,"getPropertiesAtPoint",ct),w(N,"polygonLength",ce),w(N,"polygonArea",oe),w(N,"getClosestPoint",Ae),w(N,"getSegmentOfPoint",Ne),w(N,"getSegmentAtLength",we),w(N,"isPointInStroke",ve),w(N,"isValidPath",Yt),w(N,"isPathArray",J),w(N,"isAbsoluteArray",xt),w(N,"isRelativeArray",Bt),w(N,"isCurveArray",Rt),w(N,"isNormalizedArray",pt),w(N,"shapeToPath",ke),w(N,"shapeToPathArray",Jt),w(N,"parsePathString",F),w(N,"roundPath",lt),w(N,"splitPath",Vt),w(N,"splitCubic",Ee),w(N,"optimizePath",Kt),w(N,"reverseCurve",qe),w(N,"reversePath",mt),w(N,"normalizePath",I),w(N,"transformPath",Wt),w(N,"pathToAbsolute",Q),w(N,"pathToRelative",Nt),w(N,"pathToCurve",ot),w(N,"pathToString",At),N}();
|
|
1
|
+
var SVGPathCommander=function(){"use strict";var on=Object.defineProperty;var cn=(z,L,j)=>L in z?on(z,L,{enumerable:!0,configurable:!0,writable:!0,value:j}):z[L]=j;var A=(z,L,j)=>cn(z,typeof L!="symbol"?L+"":L,j);const z={origin:[0,0,0],round:4},L="SVGPathCommander Error",j={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},St=e=>{let t=e.pathValue[e.segmentStart],n=t.toLowerCase();const{data:r}=e;for(;r.length>=j[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,j[n])]),!!j[n]););},he=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=`${L}: invalid Arc flag "${n[t]}", expecting 0 or 1 at index ${t}`},Y=e=>e>=48&&e<=57,H="Invalid path value",fe=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=`${L}: ${H} at index ${s}, "pathValue" is missing param`;return}if(a=n.charCodeAt(s),(a===43||a===45)&&(s+=1,a=n.charCodeAt(s)),!Y(a)&&a!==46){e.err=`${L}: ${H} 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&&Y(a)){e.err=`${L}: ${H} at index ${r}, "${n[r]}" illegal number`;return}for(;s<t&&Y(n.charCodeAt(s));)s+=1,o=!0;a=n.charCodeAt(s)}if(a===46){for(l=!0,s+=1;Y(n.charCodeAt(s));)s+=1,c=!0;a=n.charCodeAt(s)}if(a===101||a===69){if(l&&!o&&!c){e.err=`${L}: ${H} at index ${s}, "${n[s]}" invalid float exponent`;return}if(s+=1,a=n.charCodeAt(s),(a===43||a===45)&&(s+=1),s<t&&Y(n.charCodeAt(s)))for(;s<t&&Y(n.charCodeAt(s));)s+=1;else{e.err=`${L}: ${H} at index ${s}, "${n[s]}" invalid integer exponent`;return}}e.index=s,e.param=+e.pathValue.slice(r,s)},ye=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),nt=e=>{const{pathValue:t,max:n}=e;for(;e.index<n&&ye(t.charCodeAt(e.index));)e.index+=1},ge=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}},xe=e=>Y(e)||e===43||e===45||e===46,pe=e=>(e|32)===97,de=e=>{switch(e|32){case 109:case 77:return!0;default:return!1}},$t=e=>{var l;const{max:t,pathValue:n,index:r,segments:s}=e,i=n.charCodeAt(r),o=j[n[r].toLowerCase()];if(e.segmentStart=r,!ge(i)){e.err=`${L}: ${H} "${n[r]}" is not a path command at index ${r}`;return}const c=s[s.length-1];if(!de(i)&&((l=c==null?void 0:c[0])==null?void 0:l.toLocaleLowerCase())==="z"){e.err=`${L}: ${H} "${n[r]}" is not a MoveTo path command at index ${r}`;return}if(e.index+=1,nt(e),e.data=[],!o){St(e);return}for(;;){for(let a=o;a>0;a-=1){if(pe(i)&&(a===3||a===4)?he(e):fe(e),e.err.length)return;e.data.push(e.param),nt(e),e.index<t&&n.charCodeAt(e.index)===44&&(e.index+=1,nt(e))}if(e.index>=e.max||!xe(n.charCodeAt(e.index)))break}St(e)};class kt{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 I=e=>{if(typeof e!="string")return e.slice(0);const t=new kt(e);for(nt(t);t.index<t.max&&!t.err.length;)$t(t);if(t!=null&&t.err.length)throw TypeError(t.err);return t.segments},Me=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},Mt=(e,t)=>Math.sqrt((e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])),be=e=>e.reduce((t,n,r)=>r?t+Mt(e[r-1],n):0,0);var we=Object.defineProperty,Ne=(e,t,n)=>t in e?we(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,k=(e,t,n)=>Ne(e,typeof t!="symbol"?t+"":t,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},qt=e=>(e instanceof Float64Array||e instanceof Float32Array||Array.isArray(e)&&e.every(t=>typeof t=="number"))&&[6,16].some(t=>e.length===t),It=e=>e instanceof DOMMatrix||e instanceof v||typeof e=="object"&&Object.keys(Ae).every(t=>e&&t in e),st=e=>{const t=new v,n=Array.from(e);if(!qt(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},Et=e=>{if(It(e))return st([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.`)},zt=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(st(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},bt=(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],Zt=(e,t,n)=>{const r=new v;return r.m41=e,r.e=e,r.m42=t,r.f=t,r.m43=n,r},Ot=(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},jt=(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},Rt=(e,t,n)=>{const r=new v;return r.m11=e,r.a=e,r.m22=t,r.d=t,r.m33=n,r},ot=(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},Dt=e=>ot(e,0),Qt=e=>ot(0,e),D=(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 st([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"?zt(t):Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array?st(t):typeof t=="object"?Et(t):this}toFloat32Array(t){return Float32Array.from(bt(this,t))}toFloat64Array(t){return Float64Array.from(bt(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 D(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),D(this,Zt(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),D(this,Rt(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),D(this,Ot(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 D(this,jt(t,n,r,s))}skewX(t){return D(this,Dt(t))}skewY(t){return D(this,Qt(t))}skew(t,n){return D(this,ot(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",Zt),k(v,"Rotate",Ot),k(v,"RotateAxisAngle",jt),k(v,"Scale",Rt),k(v,"SkewX",Dt),k(v,"SkewY",Qt),k(v,"Skew",ot),k(v,"Multiply",D),k(v,"fromArray",st),k(v,"fromMatrix",Et),k(v,"fromString",zt),k(v,"toArray",bt),k(v,"isCompatibleArray",qt),k(v,"isCompatibleObject",It);const ct={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},Q=(e,t)=>{const n={...ct};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},F=(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},K=(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},X=(e,t,n)=>{const[r,s]=e,[i,o]=t;return[r+(i-r)*n,s+(o-s)*n]},lt=(e,t,n,r)=>Mt([e,t],[n,r]),Xt=(e,t,n,r,s)=>{const i=Mt([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]=X([e,t],[n,r],s/i);o={x:c,y:l}}return o},Bt=(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)}}},Yt=(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)},W=(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}},Ht=(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)},wt=(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 N=h**2*y**2-h**2*M.y**2-y**2*M.x**2,S=h**2*M.y**2+y**2*M.x**2;let P=N/S;P=P<0?0:P;const q=(i!==o?1:-1)*g(P),$={x:q*(h*M.y/y),y:q*(-(y*M.x)/h)},tt={x:u(p)*$.x-m(p)*$.y+(e+c)/2,y:m(p)*$.x+u(p)*$.y+(t+l)/2},U={x:(M.x-$.x)/h,y:(M.y-$.y)/y},B=Ht({x:1,y:0},U),V={x:(-M.x-$.x)/h,y:(-M.y-$.y)/y};let E=Ht(U,V);!o&&E>0?E-=2*f:o&&E<0&&(E+=2*f),E%=2*f;const et=B+E;return{center:tt,startAngle:B,endAngle:et,rx:h,ry:y}},Ft=(e,t,n,r,s,i,o,c,l)=>{const{rx:a,ry:m,startAngle:u,endAngle:g}=wt(e,t,n,r,s,i,o,c,l);return Yt(a,m,g-u)},Ce=(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}=wt(e,t,n,r,s,i,o,c,l),x=Yt(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 Xt(e,t,c,l,a);const{PI:p,cos:d,sin:C}=Math,M=y-h,N=(s%360+360)%360*(p/180),S=h+M*(a/x),P=g*d(S),q=f*C(S);m={x:d(N)*P-C(N)*q+u.x,y:C(N)*P+d(N)*q+u.y}}return m},ve=(e,t,n,r,s,i,o,c,l)=>{const{center:a,rx:m,ry:u,startAngle:g,endAngle:f}=wt(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),N=b,S=b+Math.PI,P=Math.atan2(u,m*M),q=P+Math.PI,$=[e,c],tt=[t,l],U=Math.min(...$),B=Math.max(...$),V=Math.min(...tt),E=Math.max(...tt),et=f-h*.001,Z=W(et,x,p,m,u,C),dt=f-h*.999,_=W(dt,x,p,m,u,C);return(Z.x>B||_.x>B)&&d.push(W(N,x,p,m,u,C)),(Z.x<U||_.x<U)&&d.push(W(S,x,p,m,u,C)),(Z.y<V||_.y<V)&&d.push(W(q,x,p,m,u,C)),(Z.y>E||_.y>E)&&d.push(W(P,x,p,m,u,C)),{min:{x:Math.min(...d.map(R=>R.x)),y:Math.min(...d.map(R=>R.y))},max:{x:Math.max(...d.map(R=>R.x)),y:Math.max(...d.map(R=>R.y))}}},Pe={x:0,y:0},Ut=[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213],Le=[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872],Te=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},Se=(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],Pe],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}},$e=(e,t)=>{const n=e(t),r=n.x*n.x+n.y*n.y;return Math.sqrt(r)},ke=e=>{const n=Ut.length;let r=0;for(let s=0,i;s<n;s++)i=.5*Ut[s]+.5,r+=Le[s]*$e(e,i);return .5*r},at=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=Te(t);return ke(r=>Se(n[0],r))},qe=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]},Vt=e=>{const t=e[0]-3*e[1]+3*e[2]-e[3];if(Math.abs(t)<qe)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]},Ie=([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}},_t=(e,t,n,r,s,i,o,c)=>at([e,t,n,r,s,i,o,c]),Ee=(e,t,n,r,s,i,o,c,l)=>{const a=typeof l=="number";let m={x:e,y:t};if(a){const u=at([e,t,n,r,s,i,o,c]);l<=0||(l>=u?m={x:o,y:c}:m=Ie([e,t,n,r,s,i,o,c],l/u))}return m},ze=(e,t,n,r,s,i,o,c)=>{const l=Vt([e,n,s,o]),a=Vt([t,r,i,c]);return{min:{x:l[0],y:a[0]},max:{x:l[1],y:a[1]}}},Ze=([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}},Jt=(e,t,n,r,s,i)=>at([e,t,n,r,s,i]),Oe=(e,t,n,r,s,i,o)=>{const c=typeof o=="number";let l={x:e,y:t};if(c){const a=at([e,t,n,r,s,i]);o<=0||(o>=a?l={x:s,y:i}:l=Ze([e,t,n,r,s,i],o/a))}return l},je=(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]}}},Kt=e=>{if(!e)return{x:0,y:0,width:0,height:0,x2:0,y2:0,cx:0,cy:0,cz:0};const t=I(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};Q(t,(d,C)=>{const M=F(d,C),b=K(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}=Bt(...n):r==="A"?{min:m,max:u}=ve(...n):r==="C"?{min:m,max:u}=ze(...n):r==="Q"?{min:m,max:u}=je(...n):r==="Z"&&(n=[s,i,o,c],{min:m,max:u}=Bt(...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}},mt=(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}},Wt=(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,N,S;if(a)[M,b,N,S]=a;else{C=mt(m,u,-p),m=C.x,u=C.y,C=mt(h,y,-p),h=C.x,y=C.y;const T=(m-h)/2,O=(u-y)/2;let J=T*T/(g*g)+O*O/(f*f);J>1&&(J=Math.sqrt(J),g*=J,f*=J);const Lt=g*g,Tt=f*f,ue=(i===o?-1:1)*Math.sqrt(Math.abs((Lt*Tt-Lt*O*O-Tt*T*T)/(Lt*O*O+Tt*T*T)));N=ue*g*O/f+(m+h)/2,S=ue*-f*T/g+(u+y)/2,M=Math.asin(((u-S)/f*10**9>>0)/10**9),b=Math.asin(((y-S)/f*10**9>>0)/10**9),M=m<N?Math.PI-M:M,b=h<N?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 T=b,O=h,J=y;b=M+x*(o&&b>M?1:-1),h=N+g*Math.cos(b),y=S+f*Math.sin(b),d=Wt(h,y,g,f,s,0,o,O,J,[b,T,N,S])}P=b-M;const q=Math.cos(M),$=Math.sin(M),tt=Math.cos(b),U=Math.sin(b),B=Math.tan(P/4),V=4/3*g*B,E=4/3*f*B,et=[m,u],Z=[m+V*$,u-E*q],dt=[h+V*U,y-E*tt],_=[h,y];if(Z[0]=2*et[0]-Z[0],Z[1]=2*et[1]-Z[1],a)return[...Z,...dt,..._,...d];d=[...Z,...dt,..._,...d];const R=[];for(let T=0,O=d.length;T<O;T+=1)R[T]=T%2?mt(d[T-1],d[T],p).y:mt(d[T],d[T+1],p).x;return R},Re=(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]},Gt=(e,t,n,r)=>{const s=X([e,t],[n,r],.3333333333333333),i=X([e,t],[n,r],2/3);return[...s,...i,n,r]},te=(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",...Wt(...o)]):n==="Q"?(t.qx=s,t.qy=i,o=[c,l,...r],["C",...Re(...o)]):n==="L"?["C",...Gt(c,l,s,i)]:n==="Z"?["C",...Gt(c,l,a,m)]:e},ut=e=>{let t=0,n=0,r=0,s=0,i="M";const o=I(e);return Q(o,(c,l,a)=>{const m=F(c,l);[i]=m;const u=i.toUpperCase(),g=K(m,l);let f=te(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})},De=(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,ee=e=>{let t=0,n=0,r=0;return ut(e).map(s=>{switch(s[0]){case"M":return[,t,n]=s,0;default:return r=De(t,n,...s.slice(1)),[t,n]=s.slice(-2),r}}).reduce((s,i)=>s+i,0)},G=e=>{const t=I(e);let n=!1,r=[],s="M",i=0,o=0,c=0,l=0,a=0;return Q(t,(m,u)=>{const g=F(m,u),f=K(g,u);return[s]=f,n=s==="M",r=n?r:[i,o,...f.slice(1)],n?[,c,l]=m:s==="L"?a+=lt(...r):s==="A"?a+=Ft(...r):s==="C"?a+=_t(...r):s==="Q"?a+=Jt(...r):s==="Z"&&(r=[i,o,c,l],a+=lt(...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},Qe=e=>ee(ut(e))>=0,At=1e-5,rt=(e,t)=>{const n=I(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),Q(n,(y,x)=>{const p=F(y,x),d=K(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=Xt(...s,t-h),g=lt(...s)):i==="A"?(u=Ce(...s,t-h),g=Ft(...s)):i==="C"?(u=Ee(...s,t-h),g=_t(...s)):i==="Q"?(u=Oe(...s,t-h),g=Jt(...s)):i==="Z"&&(s=[o,c,l,a],u={x:l,y:a},g=lt(...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},Ct=(e,t)=>{const n=I(e);let r=n.slice(0),s=G(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=G(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=G(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)},it=e=>{let t=0,n=0,r=0,s=0,i="M";return Q(I(e),(o,c)=>{const l=F(o,c),a=K(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})},ht=(e,t)=>{const n=I(e),r=it(n),s=G(n),i=M=>{const b=M.x-t.x,N=M.y-t.y;return b*b+N*N};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=rt(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=rt(r,h),x=i(g),y=m+o,f=rt(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=Ct(n,m),C=Math.sqrt(u);return{closest:l,distance:C,segment:d}},Xe=(e,t)=>ht(e,t).closest,Be=(e,t)=>ht(e,t).segment,Ye=(e,t)=>Ct(e,t).segment,He=(e,t)=>{const{distance:n}=ht(e,t);return Math.abs(n)<At},ne=e=>{if(typeof e!="string"||!e.length)return!1;const t=new kt(e);for(nt(t);t.index<t.max&&!t.err.length;)$t(t);return!t.err.length&&"mM".includes(t.segments[0][0])},ft=e=>Array.isArray(e)&&e.every(t=>{const n=t[0].toLowerCase();return j[n]===t.length-1&&"achlmqstvz".includes(n)&&t.slice(1).every(Number.isFinite)})&&e.length>0,se=e=>ft(e)&&e.every(([t])=>t===t.toUpperCase()),Fe=e=>ft(e)&&e.slice(1).every(([t])=>t===t.toLowerCase()),re=e=>se(e)&&e.every(([t])=>"ACLMQZ".includes(t)),Ue=e=>re(e)&&e.every(([t])=>"MC".includes(t)),yt={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"]},Ve=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]]},_e=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},Je=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]]},Ke=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]]},We=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"]]},ie=(e,t)=>{const r=(t||document).defaultView||window,s=Object.keys(yt),i=e instanceof r.SVGElement,o=i?e.tagName:null;if(o&&[...s,"path"].every(u=>o!==u))throw TypeError(`${L}: "${o}" is not SVGElement`);const c=i?o:e.type,l=yt[c],a={type:c};i?l.forEach(u=>{a[u]=e.getAttribute(u)}):Object.assign(a,e);let m=[];return c==="circle"?m=Je(a):c==="ellipse"?m=Ke(a):["polyline","polygon"].includes(c)?m=_e(a):c==="rect"?m=We(a):c==="line"?m=Ve(a):["glyph","path"].includes(c)&&(m=I(i?e.getAttribute("d")||"":e.d||"")),ft(m)&&m.length?m:!1},gt=(e,t)=>{let{round:n}=z;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 Q(e,s=>{const i=s.slice(1).map(o=>n?Math.round(o*r)/r:Math.round(o));return[s[0],...i]})},vt=(e,t)=>gt(e,t).map(n=>n[0]+n.slice(1).join(" ")).join(""),Ge=(e,t,n)=>{const r=n||document,s=r.defaultView||window,i=Object.keys(yt),o=e instanceof s.SVGElement,c=o?e.tagName:null;if(c==="path")throw TypeError(`${L}: "${c}" is already SVGPathElement`);if(c&&i.every(y=>c!==y))throw TypeError(`${L}: "${c}" is not SVGElement`);const l=r.createElementNS("http://www.w3.org/2000/svg","path"),a=o?c:e.type,m=yt[a],u={type:a},g=z.round,f=ie(e,r),h=f&&f.length?vt(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])})),ne(h)?(l.setAttribute("d",h),t&&o&&(e.before(l,e),e.remove()),l):!1},oe=e=>{const t=[];let n,r=-1,s=0,i=0,o=0,c=0;const l={...ct};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},ce=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},xt=e=>{let t=0,n=0,r=0,s=0,i="M";const o=I(e);return Q(o,(c,l)=>{[i]=c;const a=F(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})},tn=(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},Pt=e=>{let t=0,n=0,r=0,s=0,i="M";const o=I(e);return Q(o,(c,l,a)=>{[i]=c;const m=tn(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})},en=(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},le=(e,t)=>{const n=xt(e),r=it(n),s={...ct},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]=en(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=gt(n,t),h=gt(Pt(n),t);return f.map((y,x)=>x?y.join("").length<h[x].join("").length?y:h[x]:y)},nn=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)])]},pt=e=>{const t=xt(e),n=t.slice(-1)[0][0]==="Z",r=it(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()]},sn=(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]},ae=(e,t,n)=>{const[r,s,i]=n,[o,c,l]=sn(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]},me=(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={...ct},h=I(e),y=t&&Object.keys(t);if(!t||y&&!y.length)return h;t.origin||Object.assign(t,{origin:z.origin});const x=t.origin,p=ce(t);return p.isIdentity?h:Q(h,(d,C,M)=>{const b=F(d,f);[g]=b;let N=g==="A"?te(b,f):["V","H"].includes(g)?K(b,f):b;const S=N[0]==="C"&&N.length>7,P=S?N.slice(0,7):N.slice(0);if(S&&(h.splice(M+1,0,["C",...N.slice(7)]),N=N.slice(0,7)),N[0]==="L"){const $=N.slice(-2);[o,c]=ae(p,$,x),n!==o&&r!==c?N=["L",o,c]:r===c?N=["H",o]:n===o&&(N=["V",c])}else for(l=1,a=N.length;l<a;l+=2)[o,c]=ae(p,[+N[l],+N[l+1]],x),N[l]=o,N[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 q=P.length;return f.x1=+P[q-2],f.y1=+P[q-1],f.x2=+P[q-4]||f.x1,f.y2=+P[q-3]||f.y1,f.x=m,f.y=u,N})},rn=(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=X(r,s,n),l=X(s,i,n),a=X(i,o,n),m=X(c,l,n),u=X(l,a,n),g=X(m,u,n);return[["C",...c,...m,...g],["C",...u,...a,...o]]};class w{constructor(t,n){const r=n||{},s=typeof t>"u";if(s||!t.length)throw TypeError(`${L}: "pathValue" is ${s?"undefined":"empty"}`);const i=I(t);this.segments=i;const{round:o,origin:c}=r;let l;Number.isInteger(o)||o==="off"?l=o:l=z.round;let a=z.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 Kt(this.segments)}get length(){return G(this.segments)}getBBox(){return this.bbox}getTotalLength(){return this.length}getPointAtLength(t){return rt(this.segments,t)}toAbsolute(){const{segments:t}=this;return this.segments=xt(t),this}toRelative(){const{segments:t}=this;return this.segments=Pt(t),this}toCurve(){const{segments:t}=this;return this.segments=ut(t),this}reverse(t){this.toAbsolute();const{segments:n}=this,r=oe(n),s=r.length>1?r:!1,i=s?s.map((c,l)=>t?l?pt(c):c.slice(0):pt(c)):n.slice(0);let o=[];return s?o=i.flat(1):o=t?n:pt(n),this.segments=o.slice(0),this}normalize(){const{segments:t}=this;return this.segments=it(t),this}optimize(){const{segments:t}=this;return this.segments=le(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=me(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 vt(this.segments,this.round)}}return A(w,"CSSMatrix",v),A(w,"getSVGMatrix",ce),A(w,"getPathBBox",Kt),A(w,"getPathArea",ee),A(w,"getTotalLength",G),A(w,"getDrawDirection",Qe),A(w,"getPointAtLength",rt),A(w,"getPropertiesAtLength",Ct),A(w,"getPropertiesAtPoint",ht),A(w,"polygonLength",be),A(w,"polygonArea",Me),A(w,"getClosestPoint",Xe),A(w,"getSegmentOfPoint",Be),A(w,"getSegmentAtLength",Ye),A(w,"isPointInStroke",He),A(w,"isValidPath",ne),A(w,"isPathArray",ft),A(w,"isAbsoluteArray",se),A(w,"isRelativeArray",Fe),A(w,"isCurveArray",Ue),A(w,"isNormalizedArray",re),A(w,"shapeToPath",Ge),A(w,"shapeToPathArray",ie),A(w,"parsePathString",I),A(w,"roundPath",gt),A(w,"splitPath",oe),A(w,"splitCubic",rn),A(w,"optimizePath",le),A(w,"reverseCurve",nn),A(w,"reversePath",pt),A(w,"normalizePath",it),A(w,"transformPath",me),A(w,"pathToAbsolute",xt),A(w,"pathToRelative",Pt),A(w,"pathToCurve",ut),A(w,"pathToString",vt),w}();
|
|
2
2
|
//# sourceMappingURL=svg-path-commander.js.map
|