svg-path-commander 2.1.0 → 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -7
- package/dist/svg-path-commander.cjs +1 -1
- package/dist/svg-path-commander.cjs.map +1 -1
- package/dist/svg-path-commander.d.ts +314 -40
- package/dist/svg-path-commander.js +1 -1
- package/dist/svg-path-commander.js.map +1 -1
- package/dist/svg-path-commander.mjs +1085 -1032
- package/dist/svg-path-commander.mjs.map +1 -1
- package/package.json +8 -8
- package/src/convert/pathToAbsolute.ts +5 -88
- package/src/convert/pathToCurve.ts +22 -28
- package/src/convert/pathToRelative.ts +4 -78
- package/src/convert/pathToString.ts +40 -7
- package/src/index.ts +145 -58
- package/src/interface.ts +3 -2
- package/src/math/arcTools.ts +259 -80
- package/src/math/bezier.ts +58 -58
- package/src/math/cubicTools.ts +68 -25
- package/src/math/distanceSquareRoot.ts +3 -1
- package/src/math/lineTools.ts +42 -25
- package/src/math/midPoint.ts +3 -1
- package/src/math/polygonTools.ts +48 -0
- package/src/math/quadTools.ts +46 -25
- package/src/math/rotateVector.ts +3 -2
- package/src/math/roundTo.ts +7 -0
- package/src/parser/finalizeSegment.ts +11 -7
- package/src/parser/parsePathString.ts +4 -5
- package/src/parser/pathParser.ts +1 -1
- package/src/process/absolutizeSegment.ts +63 -0
- package/src/process/arcToCubic.ts +2 -2
- package/src/process/iterate.ts +58 -0
- package/src/process/lineToCubic.ts +1 -1
- package/src/process/normalizePath.ts +17 -28
- package/src/process/normalizeSegment.ts +55 -18
- package/src/process/optimizePath.ts +40 -60
- package/src/process/projection2d.ts +4 -3
- package/src/process/relativizeSegment.ts +59 -0
- package/src/process/reverseCurve.ts +8 -5
- package/src/process/reversePath.ts +88 -75
- package/src/process/roundPath.ts +18 -14
- package/src/process/roundSegment.ts +9 -0
- package/src/process/segmentToCubic.ts +10 -8
- package/src/process/shortenSegment.ts +26 -34
- package/src/process/splitCubic.ts +10 -9
- package/src/process/splitPath.ts +38 -4
- package/src/process/transformPath.ts +75 -73
- package/src/types.ts +30 -0
- package/src/util/getPathArea.ts +3 -3
- package/src/util/getPathBBox.ts +69 -19
- package/src/util/getPointAtLength.ts +100 -4
- package/src/util/getPropertiesAtLength.ts +3 -4
- package/src/util/getPropertiesAtPoint.ts +5 -5
- package/src/util/getTotalLength.ts +56 -4
- package/test/class.test.ts +17 -14
- package/test/fixtures/shapes.js +26 -26
- package/test/fixtures/simpleShapes.js +18 -18
- package/test/static.test.ts +54 -28
- package/cypress.config.ts +0 -29
- package/src/math/polygonArea.ts +0 -27
- package/src/math/polygonLength.ts +0 -21
- package/src/process/fixArc.ts +0 -23
- package/src/process/replaceArc.ts +0 -52
- package/src/util/pathFactory.ts +0 -130
|
@@ -5,7 +5,6 @@ export type SegmentProperties = {
|
|
|
5
5
|
index: number;
|
|
6
6
|
length: number;
|
|
7
7
|
lengthAtSegment: number;
|
|
8
|
-
[key: string]: any;
|
|
9
8
|
};
|
|
10
9
|
export type PointProperties = {
|
|
11
10
|
closest: {
|
|
@@ -141,7 +140,7 @@ export type LengthFactory = {
|
|
|
141
140
|
};
|
|
142
141
|
};
|
|
143
142
|
export type Options = {
|
|
144
|
-
round: "
|
|
143
|
+
round: "off" | number;
|
|
145
144
|
origin: number[];
|
|
146
145
|
};
|
|
147
146
|
export type PathTransform = {
|
|
@@ -364,6 +363,128 @@ export type Point = {
|
|
|
364
363
|
x: number;
|
|
365
364
|
y: number;
|
|
366
365
|
};
|
|
366
|
+
export type PointTuple = [
|
|
367
|
+
number,
|
|
368
|
+
number
|
|
369
|
+
];
|
|
370
|
+
export type DerivedPoint = Point & {
|
|
371
|
+
t: number;
|
|
372
|
+
};
|
|
373
|
+
export type QuadPoints = [
|
|
374
|
+
Point,
|
|
375
|
+
Point,
|
|
376
|
+
Point,
|
|
377
|
+
Point,
|
|
378
|
+
Point,
|
|
379
|
+
Point
|
|
380
|
+
];
|
|
381
|
+
export type CubicPoints = [
|
|
382
|
+
Point,
|
|
383
|
+
Point,
|
|
384
|
+
Point,
|
|
385
|
+
Point,
|
|
386
|
+
Point,
|
|
387
|
+
Point,
|
|
388
|
+
Point,
|
|
389
|
+
Point
|
|
390
|
+
];
|
|
391
|
+
export type DerivedQuadPoints = [
|
|
392
|
+
DerivedPoint,
|
|
393
|
+
DerivedPoint,
|
|
394
|
+
DerivedPoint,
|
|
395
|
+
DerivedPoint,
|
|
396
|
+
DerivedPoint,
|
|
397
|
+
DerivedPoint
|
|
398
|
+
];
|
|
399
|
+
export type DerivedCubicPoints = [
|
|
400
|
+
DerivedPoint,
|
|
401
|
+
DerivedPoint,
|
|
402
|
+
DerivedPoint,
|
|
403
|
+
DerivedPoint,
|
|
404
|
+
DerivedPoint,
|
|
405
|
+
DerivedPoint,
|
|
406
|
+
DerivedPoint,
|
|
407
|
+
DerivedPoint
|
|
408
|
+
];
|
|
409
|
+
export type QuadCoordinates = [
|
|
410
|
+
number,
|
|
411
|
+
number,
|
|
412
|
+
number,
|
|
413
|
+
number,
|
|
414
|
+
number,
|
|
415
|
+
number
|
|
416
|
+
];
|
|
417
|
+
export type CubicCoordinates = [
|
|
418
|
+
number,
|
|
419
|
+
number,
|
|
420
|
+
number,
|
|
421
|
+
number,
|
|
422
|
+
number,
|
|
423
|
+
number,
|
|
424
|
+
number,
|
|
425
|
+
number
|
|
426
|
+
];
|
|
427
|
+
export type ArcCoordinates = [
|
|
428
|
+
number,
|
|
429
|
+
number,
|
|
430
|
+
number,
|
|
431
|
+
number,
|
|
432
|
+
number,
|
|
433
|
+
number,
|
|
434
|
+
number,
|
|
435
|
+
number,
|
|
436
|
+
number
|
|
437
|
+
];
|
|
438
|
+
export type LineCoordinates = [
|
|
439
|
+
number,
|
|
440
|
+
number,
|
|
441
|
+
number,
|
|
442
|
+
number
|
|
443
|
+
];
|
|
444
|
+
export type DeriveCallback = (t: number) => Point;
|
|
445
|
+
export type IteratorCallback = (segment: PathSegment, index: number, lastX: number, lastY: number) => PathSegment | false | void | undefined;
|
|
446
|
+
declare const arcLength: (rx: number, ry: number, theta: number) => number;
|
|
447
|
+
declare const arcPoint: (cx: number, cy: number, rx: number, ry: number, alpha: number, theta: number) => {
|
|
448
|
+
x: number;
|
|
449
|
+
y: number;
|
|
450
|
+
};
|
|
451
|
+
declare const angleBetween: (v0: Point, v1: Point) => number;
|
|
452
|
+
declare const getArcProps: (x1: number, y1: number, RX: number, RY: number, angle: number, LAF: number, SF: number, x: number, y: number) => {
|
|
453
|
+
rx: number;
|
|
454
|
+
ry: number;
|
|
455
|
+
startAngle: number;
|
|
456
|
+
endAngle: number;
|
|
457
|
+
center: {
|
|
458
|
+
x: number;
|
|
459
|
+
y: number;
|
|
460
|
+
};
|
|
461
|
+
};
|
|
462
|
+
declare const getArcLength: (x1: number, y1: number, RX: number, RY: number, angle: number, LAF: number, SF: number, x: number, y: number) => number;
|
|
463
|
+
declare const getPointAtArcLength: (x1: number, y1: number, RX: number, RY: number, angle: number, LAF: number, SF: number, x: number, y: number, distance?: number) => {
|
|
464
|
+
x: number;
|
|
465
|
+
y: number;
|
|
466
|
+
};
|
|
467
|
+
declare const getArcBBox: (x1: number, y1: number, RX: number, RY: number, angle: number, LAF: number, SF: number, x: number, y: number) => {
|
|
468
|
+
min: {
|
|
469
|
+
x: number;
|
|
470
|
+
y: number;
|
|
471
|
+
};
|
|
472
|
+
max: {
|
|
473
|
+
x: number;
|
|
474
|
+
y: number;
|
|
475
|
+
};
|
|
476
|
+
};
|
|
477
|
+
declare class PathParser {
|
|
478
|
+
segments: PathArray | PathSegment[];
|
|
479
|
+
pathValue: string;
|
|
480
|
+
max: number;
|
|
481
|
+
index: number;
|
|
482
|
+
param: number;
|
|
483
|
+
segmentStart: number;
|
|
484
|
+
data: (string | number)[];
|
|
485
|
+
err: string;
|
|
486
|
+
constructor(pathString: string);
|
|
487
|
+
}
|
|
367
488
|
/**
|
|
368
489
|
* Creates a new SVGPathCommander instance with the following properties:
|
|
369
490
|
* * segments: `pathArray`
|
|
@@ -376,22 +497,59 @@ export type Point = {
|
|
|
376
497
|
*/
|
|
377
498
|
declare class SVGPathCommander {
|
|
378
499
|
static CSSMatrix: typeof CSSMatrix$1;
|
|
379
|
-
static
|
|
380
|
-
static
|
|
381
|
-
static
|
|
382
|
-
static
|
|
383
|
-
static
|
|
384
|
-
static
|
|
385
|
-
|
|
386
|
-
|
|
500
|
+
static pathToAbsolute: (pathInput: string | PathArray) => AbsoluteArray;
|
|
501
|
+
static pathToRelative: (pathInput: string | PathArray) => RelativeArray;
|
|
502
|
+
static pathToCurve: (pathInput: string | PathArray) => CurveArray;
|
|
503
|
+
static pathToString: (path: PathArray, roundOption?: number | "off") => string;
|
|
504
|
+
static arcTools: typeof arcTools;
|
|
505
|
+
static bezierTools: {
|
|
506
|
+
Cvalues: number[];
|
|
507
|
+
Tvalues: number[];
|
|
508
|
+
minmaxC: ([v1, cp1, cp2, v2]: [
|
|
509
|
+
number,
|
|
510
|
+
number,
|
|
511
|
+
number,
|
|
512
|
+
number
|
|
513
|
+
]) => PointTuple;
|
|
514
|
+
minmaxQ: ([v1, cp, v2]: [
|
|
515
|
+
number,
|
|
516
|
+
number,
|
|
517
|
+
number
|
|
518
|
+
]) => PointTuple;
|
|
519
|
+
getBezierLength: (curve: CubicCoordinates | QuadCoordinates) => number;
|
|
520
|
+
bezierLength: (derivativeFn: DeriveCallback) => number;
|
|
521
|
+
calculateBezier: (derivativeFn: DeriveCallback, t: number) => number;
|
|
522
|
+
computeBezier: (points: DerivedQuadPoints | DerivedCubicPoints, t: number) => DerivedPoint;
|
|
523
|
+
deriveBezier: (points: QuadPoints | CubicPoints) => (DerivedQuadPoints | DerivedCubicPoints)[];
|
|
524
|
+
CBEZIER_MINMAX_EPSILON: number;
|
|
525
|
+
};
|
|
526
|
+
static cubicTools: {
|
|
527
|
+
getCubicLength: (x1: number, y1: number, c1x: number, c1y: number, c2x: number, c2y: number, x2: number, y2: number) => number;
|
|
528
|
+
getCubicBBox: (x1: number, y1: number, c1x: number, c1y: number, c2x: number, c2y: number, x2: number, y2: number) => {
|
|
529
|
+
min: {
|
|
530
|
+
x: number;
|
|
531
|
+
y: number;
|
|
532
|
+
};
|
|
533
|
+
max: {
|
|
534
|
+
x: number;
|
|
535
|
+
y: number;
|
|
536
|
+
};
|
|
537
|
+
};
|
|
538
|
+
getPointAtCubicLength: (x1: number, y1: number, c1x: number, c1y: number, c2x: number, c2y: number, x2: number, y2: number, distance?: number) => {
|
|
539
|
+
x: number;
|
|
540
|
+
y: number;
|
|
541
|
+
};
|
|
542
|
+
getPointAtCubicSegmentLength: ([x1, y1, c1x, c1y, c2x, c2y, x2, y2]: CubicCoordinates, t: number) => {
|
|
543
|
+
x: number;
|
|
544
|
+
y: number;
|
|
545
|
+
};
|
|
387
546
|
};
|
|
388
|
-
static
|
|
389
|
-
|
|
547
|
+
static lineTools: {
|
|
548
|
+
getPointAtLineLength: (x1: number, y1: number, x2: number, y2: number, distance?: number) => {
|
|
390
549
|
x: number;
|
|
391
550
|
y: number;
|
|
392
551
|
};
|
|
393
|
-
|
|
394
|
-
readonly bbox: {
|
|
552
|
+
getLineBBox: (x1: number, y1: number, x2: number, y2: number) => {
|
|
395
553
|
min: {
|
|
396
554
|
x: number;
|
|
397
555
|
y: number;
|
|
@@ -401,20 +559,88 @@ declare class SVGPathCommander {
|
|
|
401
559
|
y: number;
|
|
402
560
|
};
|
|
403
561
|
};
|
|
562
|
+
getLineLength: (x1: number, y1: number, x2: number, y2: number) => number;
|
|
404
563
|
};
|
|
405
|
-
static
|
|
406
|
-
|
|
564
|
+
static quadTools: {
|
|
565
|
+
getPointAtQuadSegmentLength: ([x1, y1, cx, cy, x2, y2]: QuadCoordinates, t: number) => {
|
|
566
|
+
x: number;
|
|
567
|
+
y: number;
|
|
568
|
+
};
|
|
569
|
+
getQuadLength: (x1: number, y1: number, cx: number, cy: number, x2: number, y2: number) => number;
|
|
570
|
+
getQuadBBox: (x1: number, y1: number, cx: number, cy: number, x2: number, y2: number) => {
|
|
571
|
+
min: {
|
|
572
|
+
x: number;
|
|
573
|
+
y: number;
|
|
574
|
+
};
|
|
575
|
+
max: {
|
|
576
|
+
x: number;
|
|
577
|
+
y: number;
|
|
578
|
+
};
|
|
579
|
+
};
|
|
580
|
+
getPointAtQuadLength: (x1: number, y1: number, cx: number, cy: number, x2: number, y2: number, distance?: number) => {
|
|
581
|
+
x: number;
|
|
582
|
+
y: number;
|
|
583
|
+
};
|
|
584
|
+
};
|
|
585
|
+
static polygonTools: {
|
|
586
|
+
polygonArea: (polygon: PointTuple[]) => number;
|
|
587
|
+
polygonLength: (polygon: PointTuple[]) => number;
|
|
588
|
+
};
|
|
589
|
+
static distanceSquareRoot: (a: PointTuple, b: PointTuple) => number;
|
|
590
|
+
static distanceEpsilon: number;
|
|
591
|
+
static midPoint: (a: PointTuple, b: PointTuple, t: number) => PointTuple;
|
|
592
|
+
static rotateVector: (x: number, y: number, rad: number) => {
|
|
407
593
|
x: number;
|
|
408
594
|
y: number;
|
|
409
|
-
}
|
|
410
|
-
static
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
static
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
595
|
+
};
|
|
596
|
+
static roundTo: (n: number, round: number) => number;
|
|
597
|
+
static finalizeSegment: (path: PathParser) => void;
|
|
598
|
+
static invalidPathValue: string;
|
|
599
|
+
static isArcCommand: (code: number) => code is 97;
|
|
600
|
+
static isDigit: (code: number) => code is DigitNumber;
|
|
601
|
+
static isDigitStart: (code: number) => code is DigitNumber | 43 | 45 | 46;
|
|
602
|
+
static isMoveCommand: (code: number) => code is 109 | 77;
|
|
603
|
+
static isPathCommand: (code: number) => code is PathCommandNumber;
|
|
604
|
+
static isSpace: (ch: number) => ch is SpaceNumber;
|
|
605
|
+
static paramsCount: {
|
|
606
|
+
a: number;
|
|
607
|
+
c: number;
|
|
608
|
+
h: number;
|
|
609
|
+
l: number;
|
|
610
|
+
m: number;
|
|
611
|
+
r: number;
|
|
612
|
+
q: number;
|
|
613
|
+
s: number;
|
|
614
|
+
t: number;
|
|
615
|
+
v: number;
|
|
616
|
+
z: number;
|
|
617
|
+
};
|
|
618
|
+
static paramsParser: ParserParams;
|
|
619
|
+
static pathParser: typeof PathParser;
|
|
620
|
+
static scanFlag: (path: PathParser) => void;
|
|
621
|
+
static scanParam: (path: PathParser) => void;
|
|
622
|
+
static scanSegment: (path: PathParser) => void;
|
|
623
|
+
static skipSpaces: (path: PathParser) => void;
|
|
624
|
+
static getPathBBox: (pathInput: PathArray | string) => {
|
|
625
|
+
x: number;
|
|
626
|
+
y: number;
|
|
627
|
+
width: number;
|
|
628
|
+
height: number;
|
|
629
|
+
x2: number;
|
|
630
|
+
y2: number;
|
|
631
|
+
cx: number;
|
|
632
|
+
cy: number;
|
|
633
|
+
cz: number;
|
|
634
|
+
};
|
|
635
|
+
static getPathArea: (path: PathArray) => number;
|
|
636
|
+
static getTotalLength: (pathInput: string | PathArray) => number;
|
|
637
|
+
static getDrawDirection: (path: string | PathArray) => boolean;
|
|
638
|
+
static getPointAtLength: (pathInput: string | PathArray, distance?: number) => {
|
|
639
|
+
x: number;
|
|
640
|
+
y: number;
|
|
641
|
+
};
|
|
642
|
+
static getPropertiesAtLength: (pathInput: string | PathArray, distance?: number) => SegmentProperties;
|
|
643
|
+
static getPropertiesAtPoint: (pathInput: string | PathArray, point: Point) => PointProperties;
|
|
418
644
|
static getClosestPoint: (pathInput: string | PathArray, point: {
|
|
419
645
|
x: number;
|
|
420
646
|
y: number;
|
|
@@ -439,23 +665,47 @@ declare class SVGPathCommander {
|
|
|
439
665
|
static isNormalizedArray: (path: unknown) => path is NormalArray;
|
|
440
666
|
static shapeToPath: (element: ShapeTypes | ShapeOps, replace?: boolean, ownerDocument?: Document) => SVGPathElement | false;
|
|
441
667
|
static shapeToPathArray: (element: ShapeTypes | ShapeOps, ownerDocument?: Document) => false | PathArray;
|
|
442
|
-
static
|
|
668
|
+
static shapeParams: ShapeParams;
|
|
669
|
+
static parsePathString: <T extends PathArray>(pathInput: string | T) => PathArray;
|
|
670
|
+
static absolutizeSegment: (segment: PathSegment, index: number, lastX: number, lastY: number) => AbsoluteSegment;
|
|
671
|
+
static arcToCubic: (X1: number, Y1: number, RX: number, RY: number, angle: number, LAF: number, SF: number, X2: number, Y2: number, recursive?: [
|
|
672
|
+
number,
|
|
673
|
+
number,
|
|
674
|
+
number,
|
|
675
|
+
number
|
|
676
|
+
]) => number[];
|
|
677
|
+
static getSVGMatrix: (transform: TransformObjectValues) => CSSMatrix$1;
|
|
678
|
+
static iterate: <T extends PathArray>(path: PathArray, iterator: IteratorCallback) => T;
|
|
679
|
+
static lineToCubic: (x1: number, y1: number, x2: number, y2: number) => number[];
|
|
680
|
+
static normalizePath: (pathInput: string | PathArray) => NormalArray;
|
|
681
|
+
static normalizeSegment: (segment: PathSegment, params: ParserParams) => NormalSegment;
|
|
682
|
+
static optimizePath: (pathInput: PathArray, roundOption: number) => PathArray;
|
|
683
|
+
static projection2d: (m: CSSMatrix$1, point2D: PointTuple, origin: [
|
|
684
|
+
number,
|
|
685
|
+
number,
|
|
686
|
+
number
|
|
687
|
+
]) => PointTuple;
|
|
688
|
+
static quadToCubic: (x1: number, y1: number, qx: number, qy: number, x2: number, y2: number) => [
|
|
689
|
+
number,
|
|
690
|
+
number,
|
|
691
|
+
number,
|
|
692
|
+
number,
|
|
693
|
+
number,
|
|
694
|
+
number
|
|
695
|
+
];
|
|
696
|
+
static relativizeSegment: (segment: PathSegment, index: number, lastX: number, lastY: number) => MSegment | RelativeSegment;
|
|
697
|
+
static reverseCurve: (path: CurveArray) => CurveArray;
|
|
698
|
+
static reversePath: (pathInput: PathArray) => PathArray;
|
|
443
699
|
static roundPath: (path: PathArray, roundOption?: number | "off") => PathArray;
|
|
444
|
-
static
|
|
445
|
-
static
|
|
700
|
+
static roundSegment: <T extends PathSegment>(segment: T, roundOption: number) => T;
|
|
701
|
+
static segmentToCubic: (segment: PathSegment, params: ParserParams) => MSegment | CSegment;
|
|
702
|
+
static shortenSegment: (segment: AbsoluteSegment, normalSegment: NormalSegment, params: ParserParams, prevCommand: PathCommand) => ShortSegment;
|
|
703
|
+
static splitCubic: (pts: number[], ratio?: number) => [
|
|
446
704
|
CubicSegment,
|
|
447
705
|
CubicSegment
|
|
448
706
|
];
|
|
449
|
-
static
|
|
450
|
-
static
|
|
451
|
-
static reverseCurve: (path: CurveArray) => CurveArray;
|
|
452
|
-
static reversePath: (pathInput: PathArray) => PathArray;
|
|
453
|
-
static normalizePath: (pathInput: string | PathArray) => NormalArray;
|
|
454
|
-
static transformPath: (path: string | PathArray, transform?: Partial<TransformObject>) => PathArray;
|
|
455
|
-
static pathToAbsolute: (pathInput: string | PathArray) => AbsoluteArray;
|
|
456
|
-
static pathToRelative: (pathInput: string | PathArray) => RelativeArray;
|
|
457
|
-
static pathToCurve: (pathInput: string | PathArray) => CurveArray;
|
|
458
|
-
static pathToString: (path: PathArray, round?: number | "off") => string;
|
|
707
|
+
static splitPath: (pathInput: PathArray) => PathArray[];
|
|
708
|
+
static transformPath: (pathInput: PathArray | string, transform?: Partial<TransformObject>) => PathArray;
|
|
459
709
|
segments: PathArray;
|
|
460
710
|
round: number | "off";
|
|
461
711
|
origin: [
|
|
@@ -469,7 +719,17 @@ declare class SVGPathCommander {
|
|
|
469
719
|
* @param config instance options
|
|
470
720
|
*/
|
|
471
721
|
constructor(pathValue: string, config?: Partial<Options>);
|
|
472
|
-
get bbox():
|
|
722
|
+
get bbox(): {
|
|
723
|
+
x: number;
|
|
724
|
+
y: number;
|
|
725
|
+
width: number;
|
|
726
|
+
height: number;
|
|
727
|
+
x2: number;
|
|
728
|
+
y2: number;
|
|
729
|
+
cx: number;
|
|
730
|
+
cy: number;
|
|
731
|
+
cz: number;
|
|
732
|
+
};
|
|
473
733
|
get length(): number;
|
|
474
734
|
/**
|
|
475
735
|
* Returns the path bounding box, equivalent to native `path.getBBox()`.
|
|
@@ -477,7 +737,17 @@ declare class SVGPathCommander {
|
|
|
477
737
|
* @public
|
|
478
738
|
* @returns the pathBBox
|
|
479
739
|
*/
|
|
480
|
-
getBBox():
|
|
740
|
+
getBBox(): {
|
|
741
|
+
x: number;
|
|
742
|
+
y: number;
|
|
743
|
+
width: number;
|
|
744
|
+
height: number;
|
|
745
|
+
x2: number;
|
|
746
|
+
y2: number;
|
|
747
|
+
cx: number;
|
|
748
|
+
cy: number;
|
|
749
|
+
cz: number;
|
|
750
|
+
};
|
|
481
751
|
/**
|
|
482
752
|
* Returns the total path length, equivalent to native `path.getTotalLength()`.
|
|
483
753
|
*
|
|
@@ -571,6 +841,10 @@ declare class SVGPathCommander {
|
|
|
571
841
|
toString(): string;
|
|
572
842
|
}
|
|
573
843
|
|
|
844
|
+
declare namespace arcTools {
|
|
845
|
+
export { angleBetween, arcLength, arcPoint, getArcBBox, getArcLength, getArcProps, getPointAtArcLength };
|
|
846
|
+
}
|
|
847
|
+
|
|
574
848
|
export {
|
|
575
849
|
SVGPathCommander as default,
|
|
576
850
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var SVGPathCommander=function(){"use strict";var Ue=Object.defineProperty;var Ve=(S,A,q)=>A in S?Ue(S,A,{enumerable:!0,configurable:!0,writable:!0,value:q}):S[A]=q;var N=(S,A,q)=>Ve(S,typeof A!="symbol"?A+"":A,q);const S={origin:[0,0,0],round:4},A="SVGPathCommander Error",q={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},Tt=e=>{let t=e.pathValue[e.segmentStart],n=t.toLowerCase();const{data:s}=e;for(;s.length>=q[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,q[n])]),!!q[n]););},oe=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=`${A}: invalid Arc flag "${n[t]}", expecting 0 or 1 at index ${t}`},X=e=>e>=48&&e<=57,Z="Invalid path value",ce=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=`${A}: ${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=`${A}: ${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=`${A}: ${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=`${A}: ${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=`${A}: ${Z} at index ${r}, "${n[r]}" invalid integer exponent`;return}}e.index=r,e.param=+e.pathValue.slice(s,r)},le=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),_=e=>{const{pathValue:t,max:n}=e;for(;e.index<n&&le(t.charCodeAt(e.index));)e.index+=1},ae=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}},me=e=>X(e)||e===43||e===45||e===46,he=e=>(e|32)===97,ue=e=>{switch(e|32){case 109:case 77:return!0;default:return!1}},Lt=e=>{var a;const{max:t,pathValue:n,index:s,segments:r}=e,i=n.charCodeAt(s),o=q[n[s].toLowerCase()];if(e.segmentStart=s,!ae(i)){e.err=`${A}: ${Z} "${n[s]}" is not a path command at index ${s}`;return}const c=r[r.length-1];if(!ue(i)&&((a=c==null?void 0:c[0])==null?void 0:a.toLocaleLowerCase())==="z"){e.err=`${A}: ${Z} "${n[s]}" is not a MoveTo path command at index ${s}`;return}if(e.index+=1,_(e),e.data=[],!o){Tt(e);return}for(;;){for(let l=o;l>0;l-=1){if(he(i)&&(l===3||l===4)?oe(e):ce(e),e.err.length)return;e.data.push(e.param),_(e),e.index<t&&n.charCodeAt(e.index)===44&&(e.index+=1,_(e))}if(e.index>=e.max||!me(n.charCodeAt(e.index)))break}Tt(e)};class $t{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 K=e=>Array.isArray(e)&&e.every(t=>{const n=t[0].toLowerCase();return q[n]===t.length-1&&"achlmqstvz".includes(n)&&t.slice(1).every(Number.isFinite)})&&e.length>0,Y=e=>{if(K(e))return e.slice(0);const t=new $t(e);for(_(t);t.index<t.max&&!t.err.length;)Lt(t);if(t.err&&t.err.length)throw TypeError(t.err);return t.segments},fe=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},kt=(e,t)=>Math.sqrt((e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])),ge=e=>e.reduce((t,n,s)=>s?t+kt(e[s-1],n):0,0);var ye=Object.defineProperty,xe=(e,t,n)=>t in e?ye(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,T=(e,t,n)=>xe(e,typeof t!="symbol"?t+"":t,n);const pe={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),qt=e=>e instanceof DOMMatrix||e instanceof P||typeof e=="object"&&Object.keys(pe).every(t=>e&&t in e),U=e=>{const t=new P,n=Array.from(e);if(!St(n))throw TypeError(`CSSMatrix: "${n.join(",")}" must be an array with 6/16 numbers.`);if(n.length===16){const[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},Et=e=>{if(qt(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.`)},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 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(U(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},pt=(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 s=new P;return s.m41=e,s.e=e,s.m42=t,s.f=t,s.m43=n,s},jt=(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},It=(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},Dt=(e,t,n)=>{const s=new P;return s.m11=e,s.a=e,s.m22=t,s.d=t,s.m33=n,s},st=(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},Rt=e=>st(e,0),Xt=e=>st(0,e),O=(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 U([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"?zt(t):Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array?U(t):typeof t=="object"?Et(t):this}toFloat32Array(t){return Float32Array.from(pt(this,t))}toFloat64Array(t){return Float64Array.from(pt(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,s){const r=t;let i=n,o=s;return typeof i>"u"&&(i=0),typeof o>"u"&&(o=0),O(this,Ot(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),O(this,Dt(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),O(this,jt(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 O(this,It(t,n,s,r))}skewX(t){return O(this,Rt(t))}skewY(t){return O(this,Xt(t))}skew(t,n){return O(this,st(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}}}T(P,"Translate",Ot),T(P,"Rotate",jt),T(P,"RotateAxisAngle",It),T(P,"Scale",Dt),T(P,"SkewX",Rt),T(P,"SkewY",Xt),T(P,"Skew",st),T(P,"Multiply",O),T(P,"fromArray",U),T(P,"fromMatrix",Et),T(P,"fromString",zt),T(P,"toArray",pt),T(P,"isCompatibleArray",St),T(P,"isCompatibleObject",qt);const rt=e=>K(e)&&e.every(([t])=>t===t.toUpperCase()),H=e=>{if(rt(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})},be=(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},it=e=>rt(e)&&e.every(([t])=>"ACLMQZ".includes(t)),V={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},j=e=>{if(it(e))return e.slice(0);const t=H(e),n={...V},s=t.length;for(let r=0;r<s;r+=1){t[r],t[r]=be(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},I=(e,t,n)=>{const[s,r]=e,[i,o]=t;return[s+(i-s)*n,r+(o-r)*n]},bt=(e,t,n,s,r)=>{const{min:i,max:o}=Math;let c={x:0,y:0};const a=()=>kt([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]=I([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)}}}}},de=(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)},Me=(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)}}},Zt=(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)},Ne=(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 bt(e,t,c,a,l);const v=(e-c)/2,M=(t-a)/2,w={x:y(b)*v+u(b)*M,y:-u(b)*v+y(b)*M},L=w.x**2/h**2+w.y**2/g**2;L>1&&(h*=x(L),g*=x(L));const D=h**2*g**2-h**2*w.y**2-g**2*w.x**2,G=h**2*w.y**2+g**2*w.x**2;let J=D/G;J=J<0?0:J;const gt=(i!==o?1:-1)*x(J),E={x:gt*(h*w.y/g),y:gt*(-(g*w.x)/h)},Q={x:y(b)*E.x-u(b)*E.y+(e+c)/2,y:u(b)*E.x+y(b)*E.y+(t+a)/2},tt={x:(w.x-E.x)/h,y:(w.y-E.y)/g},R=Zt({x:1,y:0},tt),yt={x:(-w.x-E.x)/h,y:(-w.y-E.y)/g};let $=Zt(tt,yt);!o&&$>0?$-=2*f:o&&$<0&&($+=2*f),$%=2*f;const z=R+$*(l||0),xt=R+$,et=h*y(z),nt=g*u(z);return{point:{x:y(b)*et-u(b)*nt+Q.x,y:u(b)*et+y(b)*nt+Q.y},center:Q,angle:z,startAngle:R,endAngle:xt,radiusX:h,radiusY:g,get length(){return de(h,g,$)},get bbox(){return Me(Q.x,Q.y,h,g,b,R,R+$)}}},we={x:0,y:0},Yt=[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213],ve=[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872],Pe=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},Ae=(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],we],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}},Ce=(e,t)=>{const n=e(t),s=n.x*n.x+n.y*n.y;return Math.sqrt(s)},Te=e=>{const n=Yt.length;let s=0;for(let r=0,i;r<n;r++)i=.5*Yt[r]+.5,s+=ve[r]*Ce(e,i);return .5*s},Qt=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=Pe(t);return Te(s=>Ae(n[0],s))},Le=1e-8,dt=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]},Ft=e=>{const t=e[0]-3*e[1]+3*e[2]-e[3];if(Math.abs(t)<Le)return e[0]===e[3]&&e[0]===e[1]?[e[0],e[3]]:dt([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]},$e=([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}},ke=(e,t,n,s,r,i,o,c,a)=>{const l=typeof a=="number";let m={x:e,y:t};const u=()=>Qt([e,t,n,s,r,i,o,c]);if(l){const y=u();a<=0||(a>=y?m={x:o,y:c}:m=$e([e,t,n,s,r,i,o,c],a/y))}return{point:m,get length(){return u()},get bbox(){const y=Ft([e,n,r,o]),x=Ft([t,s,i,c]);return{min:{x:y[0],y:x[0]},max:{x:y[1],y:x[1]}}}}},Se=([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}},qe=(e,t,n,s,r,i,o)=>{const c=typeof o=="number";let a={x:e,y:t};const l=()=>Qt([e,t,n,s,r,i]);if(c){const m=l();o<=0||(o>=m?a={x:r,y:i}:a=Se([e,t,n,s,r,i],o/m))}return{point:a,get length(){return l()},get bbox(){const m=dt([e,n,r]),u=dt([t,s,i]);return{min:{x:m[0],y:u[0]},max:{x:m[1],y:u[1]}}}}},Mt=1e-5,ot=(e,t)=>{const n=j(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,M=n.length;v<M;v+=1)u=n[v],[o]=u,r=o==="M",i=r?i:[c,a,...u.slice(1)],s&&t<Mt&&(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=bt(...i,s?t-p:void 0):o==="A"?b=Ne(...i,s?t-p:void 0):o==="C"?b=ke(...i,s?t-p:void 0):o==="Q"?b=qe(...i,s?t-p:void 0):o==="Z"&&(i=[c,a,l,m],b=bt(...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-Mt&&(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))}}}}},Ht=e=>{if(!e)return{x:0,y:0,width:0,height:0,x2:0,y2:0,cx:0,cy:0,cz:0};const t=ot(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}},Nt=(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)}},Bt=e=>it(e)&&e.every(([t])=>"MC".includes(t)),ct=(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}},Jt=(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,M,w,L,D;if(l)[M,w,L,D]=l;else{v=ct(m,u,-p),m=v.x,u=v.y,v=ct(f,h,-p),f=v.x,h=v.y;const C=(m-f)/2,k=(u-h)/2;let F=C*C/(y*y)+k*k/(x*x);F>1&&(F=Math.sqrt(F),y*=F,x*=F);const At=y*y,Ct=x*x,ie=(i===o?-1:1)*Math.sqrt(Math.abs((At*Ct-At*k*k-Ct*C*C)/(At*k*k+Ct*C*C)));L=ie*y*k/x+(m+f)/2,D=ie*-x*C/y+(u+h)/2,M=Math.asin(((u-D)/x*10**9>>0)/10**9),w=Math.asin(((h-D)/x*10**9>>0)/10**9),M=m<L?Math.PI-M:M,w=f<L?Math.PI-w:w,M<0&&(M=Math.PI*2+M),w<0&&(w=Math.PI*2+w),o&&M>w&&(M-=Math.PI*2),!o&&w>M&&(w-=Math.PI*2)}let G=w-M;if(Math.abs(G)>g){const C=w,k=f,F=h;w=M+g*(o&&w>M?1:-1),f=L+y*Math.cos(w),h=D+x*Math.sin(w),b=Jt(f,h,y,x,r,0,o,k,F,[w,C,L,D])}G=w-M;const J=Math.cos(M),gt=Math.sin(M),E=Math.cos(w),Q=Math.sin(w),tt=Math.tan(G/4),R=4/3*y*tt,yt=4/3*x*tt,$=[m,u],z=[m+R*gt,u-yt*J],xt=[f+R*Q,h-yt*E],et=[f,h];if(z[0]=2*$[0]-z[0],z[1]=2*$[1]-z[1],l)return[...z,...xt,...et,...b];b=[...z,...xt,...et,...b];const nt=[];for(let C=0,k=b.length;C<k;C+=1)nt[C]=C%2?ct(b[C-1],b[C],p).y:ct(b[C],b[C+1],p).x;return nt},Ee=(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]},_t=(e,t,n,s)=>{const r=I([e,t],[n,s],.3333333333333333),i=I([e,t],[n,s],2/3);return[...r,...i,n,s]},lt=(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",...Jt(...o)]):n==="Q"?(t.qx=r,t.qy=i,o=[c,a,...s],["C",...Ee(...o)]):n==="L"?["C",..._t(c,a,r,i)]:n==="Z"?["C",..._t(c,a,l,m)]:e},at=e=>{if(Bt(e))return e.slice(0);const t=j(e),n={...V},s=[];let r="",i=t.length;for(let o=0;o<i;o+=1){[r]=t[o],s[o]=r,t[o]=lt(t[o],n),Nt(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},ze=(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,Kt=e=>{let t=0,n=0,s=0;return at(e).map(r=>{switch(r[0]){case"M":return[,t,n]=r,0;default:return s=ze(t,n,...r.slice(1)),[t,n]=r.slice(-2),s}}).reduce((r,i)=>r+i,0)},B=e=>ot(e).length,Oe=e=>Kt(at(e))>=0,W=(e,t)=>ot(e,t).point,wt=(e,t)=>{const n=Y(e);let s=n.slice(0),r=B(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=B(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=B(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)},mt=(e,t)=>{const n=Y(e),s=j(n),r=B(n),i=M=>{const w=M.x-t.x,L=M.y-t.y;return w*w+L*L};let o=8,c,a={x:0,y:0},l=0,m=0,u=1/0;for(let M=0;M<=r;M+=o)c=W(s,M),l=i(c),l<u&&(a=c,m=M,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=wt(n,m),v=Math.sqrt(u);return{closest:a,distance:v,segment:b}},je=(e,t)=>mt(e,t).closest,Ie=(e,t)=>mt(e,t).segment,De=(e,t)=>wt(e,t).segment,Re=(e,t)=>{const{distance:n}=mt(e,t);return Math.abs(n)<Mt},Ut=e=>{if(typeof e!="string"||!e.length)return!1;const t=new $t(e);for(_(t);t.index<t.max&&!t.err.length;)Lt(t);return!t.err.length&&"mM".includes(t.segments[0][0])},Vt=e=>K(e)&&e.slice(1).every(([t])=>t===t.toLowerCase()),ht={line:["x1","y1","x2","y2"],circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],rect:["width","height","x","y","rx","ry"],polygon:["points"],polyline:["points"],glyph:["d"]},Xe=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]]},Ze=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},Ye=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]]},Qe=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]]},Fe=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"]]},Wt=(e,t)=>{const s=(t||document).defaultView||window,r=Object.keys(ht),i=e instanceof s.SVGElement,o=i?e.tagName:null;if(o&&[...r,"path"].every(u=>o!==u))throw TypeError(`${A}: "${o}" is not SVGElement`);const c=i?o:e.type,a=ht[c],l={type:c};i?a.forEach(u=>{l[u]=e.getAttribute(u)}):Object.assign(l,e);let m=[];return c==="circle"?m=Ye(l):c==="ellipse"?m=Qe(l):["polyline","polygon"].includes(c)?m=Ze(l):c==="rect"?m=Fe(l):c==="line"?m=Xe(l):["glyph","path"].includes(c)&&(m=Y(i?e.getAttribute("d")||"":e.d||"")),K(m)&&m.length?m:!1},ut=(e,t)=>{let{round:n}=S;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]})},vt=(e,t)=>ut(e,t).map(n=>n[0]+n.slice(1).join(" ")).join(""),He=(e,t,n)=>{const s=n||document,r=s.defaultView||window,i=Object.keys(ht),o=e instanceof r.SVGElement,c=o?e.tagName:null;if(c==="path")throw TypeError(`${A}: "${c}" is already SVGPathElement`);if(c&&i.every(h=>c!==h))throw TypeError(`${A}: "${c}" is not SVGElement`);const a=s.createElementNS("http://www.w3.org/2000/svg","path"),l=o?c:e.type,m=ht[l],u={type:l},y=S.round,x=Wt(e,s),f=x&&x.length?vt(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])})),Ut(f)?(a.setAttribute("d",f),t&&o&&(e.before(a,e),e.remove()),a):!1},Gt=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},te=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},Pt=e=>{if(Vt(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})},Be=(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},ee=(e,t)=>{const n=H(e),s=j(n),r={...V},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]=Be(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=ut(n,t),f=ut(Pt(n),t);return x.map((h,g)=>g?h.join("").length<f[g].join("").length?h:f[g]:h)},Je=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)])]},ft=e=>{const t=H(e),n=t.slice(-1)[0][0]==="Z",s=j(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()]},_e=(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]},ne=(e,t,n)=>{const[s,r,i]=n,[o,c,a]=_e(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]},se=e=>{const t=rt(e)?e:H(e),n=it(t)?t:j(t),s={...V},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=lt(n[l],s),t[l]=lt(n[l],s),Nt(t,r,l),n[l]=lt(n[l],s),Nt(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},re=(e,t)=>{let n=0,s=0,r,i,o,c,a,l;const m=se(e),u=t&&Object.keys(t);if(!t||u&&!u.length)return m.slice(0);const y=j(m);if(!t.origin){const{origin:M}=S;Object.assign(t,{origin:M})}const x=te(t),{origin:f}=t,h={...V};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 M={s:m[r],c:m[r][0],x:h.x1,y:h.y1};v.push(M)}return v.map(M=>{if(b=M.c,g=M.s,b==="L"||b==="H"||b==="V")return[a,l]=ne(x,[M.x,M.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]=ne(x,[+g[i],+g[i+1]],f),g[i]=n,g[i+1]=s;return g})}return m.slice(0)},Ke=e=>{const n=e.slice(0,2),s=e.slice(2,4),r=e.slice(4,6),i=e.slice(6,8),o=I(n,s,.5),c=I(s,r,.5),a=I(r,i,.5),l=I(o,c,.5),m=I(c,a,.5),u=I(l,m,.5);return[["C",...o,...l,...u],["C",...m,...a,...i]]};class d{constructor(t,n){const s=n||{},r=typeof t>"u";if(r||!t.length)throw TypeError(`${A}: "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=S.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 Ht(this.segments)}get length(){return B(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=Pt(t),this}toCurve(){const{segments:t}=this;return this.segments=at(t),this}reverse(t){this.toAbsolute();const{segments:n}=this,s=Gt(n),r=s.length>1?s:!1,i=r?r.map((c,a)=>t?a?ft(c):c.slice(0):ft(c)):n.slice(0);let o=[];return r?o=i.flat(1):o=t?n:ft(n),this.segments=o.slice(0),this}normalize(){const{segments:t}=this;return this.segments=j(t),this}optimize(){const{segments:t}=this;return this.segments=ee(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=re(n,o),this}flipX(){return this.transform({rotate:[0,180,0]}),this}flipY(){return this.transform({rotate:[180,0,0]}),this}toString(){return vt(this.segments,this.round)}}return N(d,"CSSMatrix",P),N(d,"getSVGMatrix",te),N(d,"getPathBBox",Ht),N(d,"getPathArea",Kt),N(d,"getTotalLength",B),N(d,"getDrawDirection",Oe),N(d,"getPointAtLength",W),N(d,"pathFactory",ot),N(d,"getPropertiesAtLength",wt),N(d,"getPropertiesAtPoint",mt),N(d,"polygonLength",ge),N(d,"polygonArea",fe),N(d,"getClosestPoint",je),N(d,"getSegmentOfPoint",Ie),N(d,"getSegmentAtLength",De),N(d,"isPointInStroke",Re),N(d,"isValidPath",Ut),N(d,"isPathArray",K),N(d,"isAbsoluteArray",rt),N(d,"isRelativeArray",Vt),N(d,"isCurveArray",Bt),N(d,"isNormalizedArray",it),N(d,"shapeToPath",He),N(d,"shapeToPathArray",Wt),N(d,"parsePathString",Y),N(d,"roundPath",ut),N(d,"splitPath",Gt),N(d,"splitCubic",Ke),N(d,"replaceArc",se),N(d,"optimizePath",ee),N(d,"reverseCurve",Je),N(d,"reversePath",ft),N(d,"normalizePath",j),N(d,"transformPath",re),N(d,"pathToAbsolute",H),N(d,"pathToRelative",Pt),N(d,"pathToCurve",at),N(d,"pathToString",vt),d}();
|
|
1
|
+
var SVGPathCommander=function(){"use strict";var an=Object.defineProperty;var ln=(Y,Q,$)=>Q in Y?an(Y,Q,{enumerable:!0,configurable:!0,writable:!0,value:$}):Y[Q]=$;var p=(Y,Q,$)=>ln(Y,typeof Q!="symbol"?Q+"":Q,$);var Y=Object.defineProperty,Q=(e,t,s)=>t in e?Y(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,$=(e,t,s)=>Q(e,typeof t!="symbol"?t+"":t,s);const Ze={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},Jt=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 C||typeof e=="object"&&Object.keys(Ze).every(t=>e&&t in e),ct=e=>{const t=new C,s=Array.from(e);if(!Jt(s))throw TypeError(`CSSMatrix: "${s.join(",")}" must be an array with 6/16 numbers.`);if(s.length===16){const[r,n,i,o,a,c,l,u,m,f,y,h,x,b,A,w]=s;t.m11=r,t.a=r,t.m21=a,t.c=a,t.m31=m,t.m41=x,t.e=x,t.m12=n,t.b=n,t.m22=c,t.d=c,t.m32=f,t.m42=b,t.f=b,t.m13=i,t.m23=l,t.m33=y,t.m43=A,t.m14=o,t.m24=u,t.m34=h,t.m44=w}else if(s.length===6){const[r,n,i,o,a,c]=s;t.m11=r,t.a=r,t.m12=n,t.b=n,t.m21=i,t.c=i,t.m22=o,t.d=o,t.m41=a,t.e=a,t.m42=c,t.f=c}return t},Kt=e=>{if(Yt(e))return ct([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.`)},Wt=e=>{if(typeof e!="string")throw TypeError(`CSSMatrix: "${JSON.stringify(e)}" is not a string.`);const t=String(e).replace(/\s/g,"");let s=new C;const r=`CSSMatrix: invalid transform string "${e}"`;return t.split(")").filter(n=>n).forEach(n=>{const[i,o]=n.split("(");if(!o)throw TypeError(r);const a=o.split(",").map(h=>h.includes("rad")?parseFloat(h)*(180/Math.PI):parseFloat(h)),[c,l,u,m]=a,f=[c,l,u],y=[c,l,u,m];if(i==="perspective"&&c&&[l,u].every(h=>h===void 0))s.m34=-1/c;else if(i.includes("matrix")&&[6,16].includes(a.length)&&a.every(h=>!Number.isNaN(+h))){const h=a.map(x=>Math.abs(x)<1e-6?0:x);s=s.multiply(ct(h))}else if(i==="translate3d"&&f.every(h=>!Number.isNaN(+h)))s=s.translate(c,l,u);else if(i==="translate"&&c&&u===void 0)s=s.translate(c,l||0,0);else if(i==="rotate3d"&&y.every(h=>!Number.isNaN(+h))&&m)s=s.rotateAxisAngle(c,l,u,m);else if(i==="rotate"&&c&&[l,u].every(h=>h===void 0))s=s.rotate(0,0,c);else if(i==="scale3d"&&f.every(h=>!Number.isNaN(+h))&&f.some(h=>h!==1))s=s.scale(c,l,u);else if(i==="scale"&&!Number.isNaN(c)&&c!==1&&u===void 0){const h=Number.isNaN(+l)?c:l;s=s.scale(c,h,1)}else if(i==="skew"&&(c||!Number.isNaN(c)&&l)&&u===void 0)s=s.skew(c,l||0);else if(["translate","rotate","scale","skew"].some(h=>i.includes(h))&&/[XYZ]/.test(i)&&c&&[l,u].every(h=>h===void 0))if(i==="skewX"||i==="skewY")s=s[i](c);else{const h=i.replace(/[XYZ]/,""),x=i.replace(h,""),b=["X","Y","Z"].indexOf(x),A=h==="scale"?1:0,w=[b===0?c:A,b===1?c:A,b===2?c:A];s=s[h](...w)}else throw TypeError(r)}),s},Ct=(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],Vt=(e,t,s)=>{const r=new C;return r.m41=e,r.e=e,r.m42=t,r.f=t,r.m43=s,r},Gt=(e,t,s)=>{const r=new C,n=Math.PI/180,i=e*n,o=t*n,a=s*n,c=Math.cos(i),l=-Math.sin(i),u=Math.cos(o),m=-Math.sin(o),f=Math.cos(a),y=-Math.sin(a),h=u*f,x=-u*y;r.m11=h,r.a=h,r.m12=x,r.b=x,r.m13=m;const b=l*m*f+c*y;r.m21=b,r.c=b;const A=c*f-l*m*y;return r.m22=A,r.d=A,r.m23=-l*u,r.m31=l*y-c*m*f,r.m32=l*f+c*m*y,r.m33=c*u,r},te=(e,t,s,r)=>{const n=new C,i=Math.sqrt(e*e+t*t+s*s);if(i===0)return n;const o=e/i,a=t/i,c=s/i,l=r*(Math.PI/360),u=Math.sin(l),m=Math.cos(l),f=u*u,y=o*o,h=a*a,x=c*c,b=1-2*(h+x)*f;n.m11=b,n.a=b;const A=2*(o*a*f+c*u*m);n.m12=A,n.b=A,n.m13=2*(o*c*f-a*u*m);const w=2*(a*o*f-c*u*m);n.m21=w,n.c=w;const N=1-2*(x+y)*f;return n.m22=N,n.d=N,n.m23=2*(a*c*f+o*u*m),n.m31=2*(c*o*f+a*u*m),n.m32=2*(c*a*f-o*u*m),n.m33=1-2*(y+h)*f,n},ee=(e,t,s)=>{const r=new C;return r.m11=e,r.a=e,r.m22=t,r.d=t,r.m33=s,r},gt=(e,t)=>{const s=new C;if(e){const r=e*Math.PI/180,n=Math.tan(r);s.m21=n,s.c=n}if(t){const r=t*Math.PI/180,n=Math.tan(r);s.m12=n,s.b=n}return s},ne=e=>gt(e,0),se=e=>gt(0,e),B=(e,t)=>{const s=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,n=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,a=t.m21*e.m12+t.m22*e.m22+t.m23*e.m32+t.m24*e.m42,c=t.m21*e.m13+t.m22*e.m23+t.m23*e.m33+t.m24*e.m43,l=t.m21*e.m14+t.m22*e.m24+t.m23*e.m34+t.m24*e.m44,u=t.m31*e.m11+t.m32*e.m21+t.m33*e.m31+t.m34*e.m41,m=t.m31*e.m12+t.m32*e.m22+t.m33*e.m32+t.m34*e.m42,f=t.m31*e.m13+t.m32*e.m23+t.m33*e.m33+t.m34*e.m43,y=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,x=t.m41*e.m12+t.m42*e.m22+t.m43*e.m32+t.m44*e.m42,b=t.m41*e.m13+t.m42*e.m23+t.m43*e.m33+t.m44*e.m43,A=t.m41*e.m14+t.m42*e.m24+t.m43*e.m34+t.m44*e.m44;return ct([s,r,n,i,o,a,c,l,u,m,f,y,h,x,b,A])};class C{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"?Wt(t):Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array?ct(t):typeof t=="object"?Kt(t):this}toFloat32Array(t){return Float32Array.from(Ct(this,t))}toFloat64Array(t){return Float64Array.from(Ct(this,t))}toString(){const{is2D:t}=this,s=this.toFloat64Array(t).join(", ");return`${t?"matrix":"matrix3d"}(${s})`}toJSON(){const{is2D:t,isIdentity:s}=this;return{...this,is2D:t,isIdentity:s}}multiply(t){return B(this,t)}translate(t,s,r){const n=t;let i=s,o=r;return typeof i>"u"&&(i=0),typeof o>"u"&&(o=0),B(this,Vt(n,i,o))}scale(t,s,r){const n=t;let i=s,o=r;return typeof i>"u"&&(i=t),typeof o>"u"&&(o=1),B(this,ee(n,i,o))}rotate(t,s,r){let n=t,i=s||0,o=r||0;return typeof t=="number"&&typeof s>"u"&&typeof r>"u"&&(o=n,n=0,i=0),B(this,Gt(n,i,o))}rotateAxisAngle(t,s,r,n){if([t,s,r,n].some(i=>Number.isNaN(+i)))throw new TypeError("CSSMatrix: expecting 4 values");return B(this,te(t,s,r,n))}skewX(t){return B(this,ne(t))}skewY(t){return B(this,se(t))}skew(t,s){return B(this,gt(t,s))}transformPoint(t){const s=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,n=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(s,r,n,i):{x:s,y:r,z:n,w:i}}}$(C,"Translate",Vt),$(C,"Rotate",Gt),$(C,"RotateAxisAngle",te),$(C,"Scale",ee),$(C,"SkewX",ne),$(C,"SkewY",se),$(C,"Skew",gt),$(C,"Multiply",B),$(C,"fromArray",ct),$(C,"fromMatrix",Kt),$(C,"fromString",Wt),$(C,"toArray",Ct),$(C,"isCompatibleArray",Jt),$(C,"isCompatibleObject",Yt);const K={origin:[0,0,0],round:4},nt={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},Pt=e=>{let t=e.pathValue[e.segmentStart],s=t.toLowerCase();const{data:r}=e;for(;r.length>=nt[s]&&(s==="m"&&r.length>2?(e.segments.push([t].concat(r.splice(0,2))),s="l",t=t==="m"?"l":"L"):e.segments.push([t].concat(r.splice(0,nt[s]))),!!nt[s]););},I="SVGPathCommander Error",re=e=>{const{index:t,pathValue:s}=e,r=s.charCodeAt(t);if(r===48){e.param=0,e.index+=1;return}if(r===49){e.param=1,e.index+=1;return}e.err=`${I}: invalid Arc flag "${s[t]}", expecting 0 or 1 at index ${t}`},F=e=>e>=48&&e<=57,H="Invalid path value",ie=e=>{const{max:t,pathValue:s,index:r}=e;let n=r,i=!1,o=!1,a=!1,c=!1,l;if(n>=t){e.err=`${I}: ${H} at index ${n}, "pathValue" is missing param`;return}if(l=s.charCodeAt(n),(l===43||l===45)&&(n+=1,l=s.charCodeAt(n)),!F(l)&&l!==46){e.err=`${I}: ${H} at index ${n}, "${s[n]}" is not a number`;return}if(l!==46){if(i=l===48,n+=1,l=s.charCodeAt(n),i&&n<t&&l&&F(l)){e.err=`${I}: ${H} at index ${r}, "${s[r]}" illegal number`;return}for(;n<t&&F(s.charCodeAt(n));)n+=1,o=!0;l=s.charCodeAt(n)}if(l===46){for(c=!0,n+=1;F(s.charCodeAt(n));)n+=1,a=!0;l=s.charCodeAt(n)}if(l===101||l===69){if(c&&!o&&!a){e.err=`${I}: ${H} at index ${n}, "${s[n]}" invalid float exponent`;return}if(n+=1,l=s.charCodeAt(n),(l===43||l===45)&&(n+=1),n<t&&F(s.charCodeAt(n)))for(;n<t&&F(s.charCodeAt(n));)n+=1;else{e.err=`${I}: ${H} at index ${n}, "${s[n]}" invalid integer exponent`;return}}e.index=n,e.param=+e.pathValue.slice(r,n)},oe=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),st=e=>{const{pathValue:t,max:s}=e;for(;e.index<s&&oe(t.charCodeAt(e.index));)e.index+=1},ce=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}},ae=e=>F(e)||e===43||e===45||e===46,le=e=>(e|32)===97,ue=e=>{switch(e|32){case 109:case 77:return!0;default:return!1}},$t=e=>{var c;const{max:t,pathValue:s,index:r,segments:n}=e,i=s.charCodeAt(r),o=nt[s[r].toLowerCase()];if(e.segmentStart=r,!ce(i)){e.err=`${I}: ${H} "${s[r]}" is not a path command at index ${r}`;return}const a=n[n.length-1];if(!ue(i)&&((c=a==null?void 0:a[0])==null?void 0:c.toLocaleLowerCase())==="z"){e.err=`${I}: ${H} "${s[r]}" is not a MoveTo path command at index ${r}`;return}if(e.index+=1,st(e),e.data=[],!o){Pt(e);return}for(;;){for(let l=o;l>0;l-=1){if(le(i)&&(l===3||l===4)?re(e):ie(e),e.err.length)return;e.data.push(e.param),st(e),e.index<t&&s.charCodeAt(e.index)===44&&(e.index+=1,st(e))}if(e.index>=e.max||!ae(s.charCodeAt(e.index)))break}Pt(e)};class zt{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 E=e=>{if(typeof e!="string")return e.slice(0);const t=new zt(e);for(st(t);t.index<t.max&&!t.err.length;)$t(t);if(t!=null&&t.err.length)throw TypeError(t.err);return t.segments},qt=(e,t,s,r)=>{const[n]=e,i=n.toUpperCase();if(t===0||i===n)return e;if(i==="A")return[i,e[1],e[2],e[3],e[4],e[5],e[6]+s,e[7]+r];if(i==="V")return[i,e[1]+r];if(i==="H")return[i,e[1]+s];if(i==="L")return[i,e[1]+s,e[2]+r];{const a=e.slice(1).map((c,l)=>c+(l%2?r:s));return[i].concat(a)}},R=(e,t)=>{let s=e.length,r,n="M",i="M",o=!1,a=0,c=0,l=0,u=0,m=0;for(let f=0;f<s;f+=1){r=e[f],[n]=r,m=r.length,i=n.toUpperCase(),o=i!==n;const y=t(r,f,a,c);if(y===!1)break;i==="Z"?(a=l,c=u):i==="H"?a=r[1]+(o?a:0):i==="V"?c=r[1]+(o?c:0):(a=r[m-2]+(o?a:0),c=r[m-1]+(o?c:0),i==="M"&&(l=a,u=c)),y&&(e[f]=y,y[0]==="C"&&(s=e.length))}return e},pt=e=>{const t=E(e);return R(t,qt)},kt=(e,t,s,r)=>{const[n]=e,i=n.toLowerCase();if(t===0||n===i)return e;if(i==="a")return[i,e[1],e[2],e[3],e[4],e[5],e[6]-s,e[7]-r];if(i==="v")return[i,e[1]-r];if(i==="h")return[i,e[1]-s];if(i==="l")return[i,e[1]-s,e[2]-r];{const a=e.slice(1).map((c,l)=>c-(l%2?r:s));return[i].concat(a)}},me=e=>{const t=E(e);return R(t,kt)},at=(e,t,s)=>{const{sin:r,cos:n}=Math,i=e*n(s)-t*r(s),o=e*r(s)+t*n(s);return{x:i,y:o}},It=(e,t,s,r,n,i,o,a,c,l)=>{let u=e,m=t,f=s,y=r,h=a,x=c;const b=Math.PI*120/180,A=Math.PI/180*(+n||0);let w=[],N,M,d,v,L;if(l)[M,d,v,L]=l;else{N=at(u,m,-A),u=N.x,m=N.y,N=at(h,x,-A),h=N.x,x=N.y;const P=(u-h)/2,q=(m-x)/2;let _=P*P/(f*f)+q*q/(y*y);_>1&&(_=Math.sqrt(_),f*=_,y*=_);const J=f*f,D=y*y,De=(i===o?-1:1)*Math.sqrt(Math.abs((J*D-J*q*q-D*P*P)/(J*q*q+D*P*P)));v=De*f*q/y+(u+h)/2,L=De*-y*P/f+(m+x)/2,M=Math.asin(((m-L)/y*10**9>>0)/10**9),d=Math.asin(((x-L)/y*10**9>>0)/10**9),M=u<v?Math.PI-M:M,d=h<v?Math.PI-d:d,M<0&&(M=Math.PI*2+M),d<0&&(d=Math.PI*2+d),o&&M>d&&(M-=Math.PI*2),!o&&d>M&&(d-=Math.PI*2)}let T=d-M;if(Math.abs(T)>b){const P=d,q=h,_=x;d=M+b*(o&&d>M?1:-1),h=v+f*Math.cos(d),x=L+y*Math.sin(d),w=It(h,x,f,y,n,0,o,q,_,[d,P,v,L])}T=d-M;const O=Math.cos(M),k=Math.sin(M),yt=Math.cos(d),it=Math.sin(d),X=Math.tan(T/4),ot=4/3*f*X,j=4/3*y*X,G=[u,m],S=[u+ot*k,m-j*O],tt=[h+ot*it,x-j*yt],et=[h,x];if(S[0]=2*G[0]-S[0],S[1]=2*G[1]-S[1],l)return[S[0],S[1],tt[0],tt[1],et[0],et[1]].concat(w);w=[S[0],S[1],tt[0],tt[1],et[0],et[1]].concat(w);const xt=[];for(let P=0,q=w.length;P<q;P+=1)xt[P]=P%2?at(w[P-1],w[P],A).y:at(w[P],w[P+1],A).x;return xt},he=(e,t,s,r,n,i)=>{const o=.3333333333333333,a=2/3;return[o*e+a*s,o*t+a*r,o*n+a*s,o*i+a*r,n,i]},Z=(e,t,s)=>{const[r,n]=e,[i,o]=t;return[r+(i-r)*s,n+(o-n)*s]},Et=(e,t,s,r)=>{const n=Z([e,t],[s,r],.3333333333333333),i=Z([e,t],[s,r],2/3);return[n[0],n[1],i[0],i[1],s,r]},Rt=(e,t)=>{const[s]=e,r=e.slice(1).map(Number),[n,i]=r,{x1:o,y1:a,x:c,y:l}=t;return"TQ".includes(s)||(t.qx=null,t.qy=null),s==="M"?(t.x=n,t.y=i,e):s==="A"?["C"].concat(It(o,a,r[0],r[1],r[2],r[3],r[4],r[5],r[6])):s==="Q"?(t.qx=n,t.qy=i,["C"].concat(he(o,a,r[0],r[1],r[2],r[3]))):s==="L"?["C"].concat(Et(o,a,n,i)):s==="Z"?["C"].concat(Et(o,a,c,l)):e},W=(e,t)=>{const[s]=e,r=s.toUpperCase(),n=s!==r,{x1:i,y1:o,x2:a,y2:c,x:l,y:u}=t,m=e.slice(1);let f=m.map((y,h)=>y+(n?h%2?u:l:0));if("TQ".includes(r)||(t.qx=null,t.qy=null),r==="A")return f=m.slice(0,-2).concat(m[5]+(n?l:0),m[6]+(n?u:0)),["A"].concat(f);if(r==="H")return["L",e[1]+(n?l:0),o];if(r==="V")return["L",i,e[1]+(n?u:0)];if(r==="L")return["L",e[1]+(n?l:0),e[2]+(n?u:0)];if(r==="M")return["M",e[1]+(n?l:0),e[2]+(n?u:0)];if(r==="C")return["C"].concat(f);if(r==="S"){const y=i*2-a,h=o*2-c;return t.x1=y,t.y1=h,["C",y,h].concat(f)}else if(r==="T"){const y=i*2-(t.qx?t.qx:0),h=o*2-(t.qy?t.qy:0);return t.qx=y,t.qy=h,["Q",y,h].concat(f)}else if(r==="Q"){const[y,h]=f;return t.qx=y,t.qy=h,["Q"].concat(f)}else if(r==="Z")return["Z"];return e},U={x1:0,y1:0,x2:0,y2:0,x:0,y:0,qx:null,qy:null},bt=e=>{const t={...U},s=E(e);return R(s,(r,n,i,o)=>{t.x=i,t.y=o;const a=W(r,t);let c=Rt(a,t);c[0]==="C"&&c.length>7&&(s.splice(n+1,0,["C"].concat(c.slice(7))),c=c.slice(0,7));const u=c.length;return t.x1=+c[u-2],t.y1=+c[u-1],t.x2=+c[u-4]||t.x1,t.y2=+c[u-3]||t.y1,c})},z=(e,t)=>{const s=t>=1?10**t:1;return t>0?Math.round(e*s)/s:Math.round(e)},jt=(e,t)=>{const s=e.length;let{round:r}=K,n=e[0],i="";r=t==="off"||typeof t=="number"&&t>=0?t:typeof r=="number"&&r>=0?r:"off";for(let o=0;o<s;o+=1){n=e[o];const[a]=n,c=n.slice(1);if(i+=a,r==="off")i+=c.join(" ");else{let l=0;const u=c.length;for(;l<u;)i+=z(c[l],r),l!==u-1&&(i+=" "),l+=1}}return i},dt=(e,t)=>Math.sqrt((e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])),lt=(e,t,s,r)=>dt([e,t],[s,r]),St=(e,t,s,r,n)=>{let i={x:e,y:t};if(typeof n=="number"){const o=dt([e,t],[s,r]);if(n<=0)i={x:e,y:t};else if(n>=o)i={x:s,y:r};else{const[a,c]=Z([e,t],[s,r],n/o);i={x:a,y:c}}}return i},Dt=(e,t,s,r)=>{const{min:n,max:i}=Math;return{min:{x:n(e,s),y:n(t,r)},max:{x:i(e,s),y:i(t,r)}}},Zt=(e,t,s)=>{const r=s/2,n=Math.sin(r),i=Math.cos(r),o=e**2*n**2,a=t**2*i**2,c=Math.sqrt(o+a)*s;return Math.abs(c)},V=(e,t,s,r,n,i)=>{const{sin:o,cos:a}=Math,c=a(n),l=o(n),u=s*a(i),m=r*o(i);return{x:e+c*u-l*m,y:t+l*u+c*m}},Ot=(e,t)=>{const{x:s,y:r}=e,{x:n,y:i}=t,o=s*n+r*i,a=Math.sqrt((s**2+r**2)*(n**2+i**2));return(s*i-r*n<0?-1:1)*Math.acos(o/a)},At=(e,t,s,r,n,i,o,a,c)=>{const{abs:l,sin:u,cos:m,sqrt:f,PI:y}=Math;let h=l(s),x=l(r);const A=(n%360+360)%360*(y/180);if(e===a&&t===c)return{rx:h,ry:x,startAngle:0,endAngle:0,center:{x:a,y:c}};if(h===0||x===0)return{rx:h,ry:x,startAngle:0,endAngle:0,center:{x:(a+e)/2,y:(c+t)/2}};const w=(e-a)/2,N=(t-c)/2,M={x:m(A)*w+u(A)*N,y:-u(A)*w+m(A)*N},d=M.x**2/h**2+M.y**2/x**2;d>1&&(h*=f(d),x*=f(d));const v=h**2*x**2-h**2*M.y**2-x**2*M.x**2,L=h**2*M.y**2+x**2*M.x**2;let T=v/L;T=T<0?0:T;const O=(i!==o?1:-1)*f(T),k={x:O*(h*M.y/x),y:O*(-(x*M.x)/h)},yt={x:m(A)*k.x-u(A)*k.y+(e+a)/2,y:u(A)*k.x+m(A)*k.y+(t+c)/2},it={x:(M.x-k.x)/h,y:(M.y-k.y)/x},X=Ot({x:1,y:0},it),ot={x:(-M.x-k.x)/h,y:(-M.y-k.y)/x};let j=Ot(it,ot);!o&&j>0?j-=2*y:o&&j<0&&(j+=2*y),j%=2*y;const G=X+j;return{center:yt,startAngle:X,endAngle:G,rx:h,ry:x}},Qt=(e,t,s,r,n,i,o,a,c)=>{const{rx:l,ry:u,startAngle:m,endAngle:f}=At(e,t,s,r,n,i,o,a,c);return Zt(l,u,f-m)},fe=(e,t,s,r,n,i,o,a,c,l)=>{let u={x:e,y:t};const{center:m,rx:f,ry:y,startAngle:h,endAngle:x}=At(e,t,s,r,n,i,o,a,c);if(typeof l=="number"){const b=Zt(f,y,x-h);if(l<=0)u={x:e,y:t};else if(l>=b)u={x:a,y:c};else{if(e===a&&t===c)return{x:a,y:c};if(f===0||y===0)return St(e,t,a,c,l);const{PI:A,cos:w,sin:N}=Math,M=x-h,v=(n%360+360)%360*(A/180),L=h+M*(l/b),T=f*w(L),O=y*N(L);u={x:w(v)*T-N(v)*O+m.x,y:N(v)*T+w(v)*O+m.y}}}return u},ye=(e,t,s,r,n,i,o,a,c)=>{const{center:l,rx:u,ry:m,startAngle:f,endAngle:y}=At(e,t,s,r,n,i,o,a,c),h=y-f,{min:x,max:b,tan:A,atan2:w,PI:N}=Math,M={x:a,y:c},{x:d,y:v}=l,L=[M],T=n*N/180,O=A(T),k=w(-m*O,u),yt=k,it=k+N,X=w(m,u*O),ot=X+N,j=[e,a],G=[t,c],S=x(...j),tt=b(...j),et=x(...G),xt=b(...G),P=y-h*.001,q=V(d,v,u,m,T,P),_=y-h*.999,J=V(d,v,u,m,T,_);return(q.x>tt||J.x>tt)&&L.push(V(d,v,u,m,T,yt)),(q.x<S||J.x<S)&&L.push(V(d,v,u,m,T,it)),(q.y<et||J.y<et)&&L.push(V(d,v,u,m,T,ot)),(q.y>xt||J.y>xt)&&L.push(V(d,v,u,m,T,X)),{min:{x:x(...L.map(D=>D.x)),y:x(...L.map(D=>D.y))},max:{x:b(...L.map(D=>D.x)),y:b(...L.map(D=>D.y))}}},Oe=Object.freeze(Object.defineProperty({__proto__:null,angleBetween:Ot,arcLength:Zt,arcPoint:V,getArcBBox:ye,getArcLength:Qt,getArcProps:At,getPointAtArcLength:fe},Symbol.toStringTag,{value:"Module"})),Bt=[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213],xe=[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872],ge=e=>{const t=[];for(let s=e,r=s.length,n=r-1;r>1;r-=1,n-=1){const i=[];for(let o=0;o<n;o+=1)i.push({x:n*(s[o+1].x-s[o].x),y:n*(s[o+1].y-s[o].y),t:0});t.push(i),s=i}return t},pe=(e,t)=>{if(t===0)return e[0].t=0,e[0];const s=e.length-1;if(t===1)return e[s].t=1,e[s];const r=1-t;let n=e;if(s===0)return e[0].t=t,e[0];if(s===1)return{x:r*n[0].x+t*n[1].x,y:r*n[0].y+t*n[1].y,t};const i=r*r,o=t*t;let a=0,c=0,l=0,u=0;return s===2?(n=[n[0],n[1],n[2],{x:0,y:0}],a=i,c=r*t*2,l=o):s===3&&(a=i*r,c=i*t*3,l=r*o*3,u=t*o),{x:a*n[0].x+c*n[1].x+l*n[2].x+u*n[3].x,y:a*n[0].y+c*n[1].y+l*n[2].y+u*n[3].y,t}},be=(e,t)=>{const s=e(t),r=s.x*s.x+s.y*s.y;return Math.sqrt(r)},de=e=>{const s=Bt.length;let r=0;for(let n=0,i;n<s;n++)i=.5*Bt[n]+.5,r+=xe[n]*be(e,i);return .5*r},ut=e=>{const t=[];for(let r=0,n=e.length,i=2;r<n;r+=i)t.push({x:e[r],y:e[r+1]});const s=ge(t);return de(r=>pe(s[0],r))},Ae=1e-8,Mt=([e,t,s])=>{const r=Math.min(e,s),n=Math.max(e,s);if(t>=e?s>=t:s<=t)return[r,n];const i=(e*s-t*t)/(e-2*t+s);return i<r?[i,n]:[r,i]},_t=([e,t,s,r])=>{const n=e-3*t+3*s-r;if(Math.abs(n)<Ae)return e===r&&e===t?[e,r]:Mt([e,-.5*e+1.5*t,e-3*t+3*s]);const i=-e*s+e*r-t*s-t*r+t*t+s*s;if(i<=0)return[Math.min(e,r),Math.max(e,r)];const o=Math.sqrt(i);let a=Math.min(e,r),c=Math.max(e,r);const l=e-2*t+s;for(let u=(l+o)/n,m=1;m<=2;u=(l-o)/n,m++)if(u>0&&u<1){const f=e*(1-u)*(1-u)*(1-u)+t*3*(1-u)*(1-u)*u+s*3*(1-u)*u*u+r*u*u*u;f<a&&(a=f),f>c&&(c=f)}return[a,c]},Me=([e,t,s,r,n,i,o,a],c)=>{const l=1-c;return{x:l**3*e+3*l**2*c*s+3*l*c**2*n+c**3*o,y:l**3*t+3*l**2*c*r+3*l*c**2*i+c**3*a}},Ft=(e,t,s,r,n,i,o,a)=>ut([e,t,s,r,n,i,o,a]),we=(e,t,s,r,n,i,o,a,c)=>{const l=typeof c=="number";let u={x:e,y:t};if(l){const m=ut([e,t,s,r,n,i,o,a]);c<=0||(c>=m?u={x:o,y:a}:u=Me([e,t,s,r,n,i,o,a],c/m))}return u},Ne=(e,t,s,r,n,i,o,a)=>{const c=_t([e,s,n,o]),l=_t([t,r,i,a]);return{min:{x:c[0],y:l[0]},max:{x:c[1],y:l[1]}}},Le=([e,t,s,r,n,i],o)=>{const a=1-o;return{x:a**2*e+2*a*o*s+o**2*n,y:a**2*t+2*a*o*r+o**2*i}},Ht=(e,t,s,r,n,i)=>ut([e,t,s,r,n,i]),ve=(e,t,s,r,n,i,o)=>{const a=typeof o=="number";let c={x:e,y:t};if(a){const l=ut([e,t,s,r,n,i]);o<=0||(o>=l?c={x:n,y:i}:c=Le([e,t,s,r,n,i],o/l))}return c},Te=(e,t,s,r,n,i)=>{const o=Mt([e,s,n]),a=Mt([t,r,i]);return{min:{x:o[0],y:a[0]},max:{x:o[1],y:a[1]}}},Qe=e=>{const t=e.length;let s=-1,r,n=e[t-1],i=0;for(;++s<t;)r=n,n=e[s],i+=r[1]*n[0]-r[0]*n[1];return i/2},Be=e=>e.reduce((t,s,r)=>r?t+dt(e[r-1],s):0,0),wt=1e-5,mt=e=>{const t=E(e),s={...U};return R(t,(r,n,i,o)=>{s.x=i,s.y=o;const a=W(r,s),c=a.length;return s.x1=+a[c-2],s.y1=+a[c-1],s.x2=+a[c-4]||s.x1,s.y2=+a[c-3]||s.y1,a})},ht=(e,t)=>{const s=mt(e);let r=!1,n=[],i="M",o=0,a=0,[c,l]=s[0].slice(1);const u=typeof t=="number";let m={x:c,y:l},f=0,y=m,h=0;return!u||t<wt?m:(R(s,(x,b,A,w)=>{if([i]=x,r=i==="M",n=r?n:[A,w].concat(x.slice(1)),r?([,c,l]=x,m={x:c,y:l},f=0):i==="L"?(m=St(n[0],n[1],n[2],n[3],t-h),f=lt(n[0],n[1],n[2],n[3])):i==="A"?(m=fe(n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7],n[8],t-h),f=Qt(n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7],n[8])):i==="C"?(m=we(n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7],t-h),f=Ft(n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7])):i==="Q"?(m=ve(n[0],n[1],n[2],n[3],n[4],n[5],t-h),f=Ht(n[0],n[1],n[2],n[3],n[4],n[5])):i==="Z"&&(n=[A,w,c,l],m={x:c,y:l},f=lt(n[0],n[1],n[2],n[3])),[o,a]=n.slice(-2),h<t)y=m;else return!1;h+=f}),t>h-wt?{x:o,y:a}:y)},rt=e=>{const t=E(e),s={...U};let r=!1,n=[],i="M",o=0,a=0,c=0;return R(t,(l,u,m,f)=>{s.x=m,s.y=f;const y=W(l,s);[i]=y,r=i==="M",n=r?n:[m,f].concat(y.slice(1)),r?[,o,a]=y:i==="L"?c+=lt(n[0],n[1],n[2],n[3]):i==="A"?c+=Qt(n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7],n[8]):i==="C"?c+=Ft(n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7]):i==="Q"?c+=Ht(n[0],n[1],n[2],n[3],n[4],n[5]):i==="Z"&&(n=[m,f,o,a],c+=lt(n[0],n[1],n[2],n[3]));const h=y.length;s.x1=+y[h-2],s.y1=+y[h-1],s.x2=+y[h-4]||s.x1,s.y2=+y[h-3]||s.y1}),c},Ut=(e,t)=>{const s=E(e);let r=s.slice(0),n=rt(r),i=r.length-1,o=0,a=0,c=s[0];if(i<=0||!t||!Number.isFinite(t))return{segment:c,index:0,length:a,lengthAtSegment:o};if(t>=n)return r=s.slice(0,-1),o=rt(r),a=n-o,c=s[i],{segment:c,index:i,length:a,lengthAtSegment:o};const l=[];for(;i>0;)c=r[i],r=r.slice(0,-1),o=rt(r),a=n-o,n=o,l.push({segment:c,index:i,length:a,lengthAtSegment:o}),i-=1;return l.find(({lengthAtSegment:u})=>u<=t)},Nt=(e,t)=>{const s=E(e),r=mt(s),n=rt(r),i=M=>{const d=M.x-t.x,v=M.y-t.y;return d*d+v*v};let o=8,a,c={x:0,y:0},l=0,u=0,m=1/0;for(let M=0;M<=n;M+=o)a=ht(r,M),l=i(a),l<m&&(c=a,u=M,m=l);o/=2;let f,y,h=0,x=0,b=0,A=0;for(;o>1e-6&&(h=u-o,f=ht(r,h),b=i(f),x=u+o,y=ht(r,x),A=i(y),h>=0&&b<m?(c=f,u=h,m=b):x<=n&&A<m?(c=y,u=x,m=A):o/=2,!(o<1e-5)););const w=Ut(s,u),N=Math.sqrt(m);return{closest:c,distance:N,segment:w}},_e=(e,t)=>Nt(e,t).closest,Fe=(e,t,s,r,n,i,o,a)=>3*((a-t)*(s+n)-(o-e)*(r+i)+r*(e-n)-s*(t-i)+a*(n+e/3)-o*(i+t/3))/20,Ce=e=>{let t=0,s=0,r=0;return bt(e).map(n=>{switch(n[0]){case"M":return[,t,s]=n,0;default:return r=Fe(t,s,n[1],n[2],n[3],n[4],n[5],n[6]),[t,s]=n.slice(-2),r}}).reduce((n,i)=>n+i,0)},He=e=>Ce(bt(e))>=0,Pe=e=>{if(!e)return{x:0,y:0,width:0,height:0,x2:0,y2:0,cx:0,cy:0,cz:0};const t=E(e);let s=[],r="M";const n=0,i=0;let o=0,a=0;const c=[],l=[];let u={x:n,y:i},m={x:n,y:i};const f={...U};R(t,(N,M,d,v)=>{f.x=d,f.y=v;const L=W(N,f);[r]=L,s=[d,v].concat(L.slice(1)),r==="M"?([,o,a]=L,u={x:o,y:a},m={x:o,y:a}):r==="L"?{min:u,max:m}=Dt(s[0],s[1],s[2],s[3]):r==="A"?{min:u,max:m}=ye(s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7],s[8]):r==="C"?{min:u,max:m}=Ne(s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7]):r==="Q"?{min:u,max:m}=Te(s[0],s[1],s[2],s[3],s[4],s[5]):r==="Z"&&(s=[d,v,o,a],{min:u,max:m}=Dt(s[0],s[1],s[2],s[3])),c.push(u),l.push(m);const T=L.length;f.x1=+L[T-2],f.y1=+L[T-1],f.x2=+L[T-4]||f.x1,f.y2=+L[T-3]||f.y1});const y=Math.min(...c.map(N=>N.x)),h=Math.max(...l.map(N=>N.x)),x=Math.min(...c.map(N=>N.y)),b=Math.max(...l.map(N=>N.y)),A=h-y,w=b-x;return{width:A,height:w,x:y,y:x,x2:h,y2:b,cx:y+A/2,cy:x+w/2,cz:Math.max(A,w)+Math.min(A,w)/2}},Ue=(e,t)=>Ut(e,t).segment,Xe=(e,t)=>Nt(e,t).segment,Lt=e=>Array.isArray(e)&&e.every(t=>{const s=t[0].toLowerCase();return nt[s]===t.length-1&&"achlmqstvz".includes(s)&&t.slice(1).every(Number.isFinite)})&&e.length>0,$e=e=>Lt(e)&&e.every(([t])=>t===t.toUpperCase()),ze=e=>$e(e)&&e.every(([t])=>"ACLMQZ".includes(t)),Je=e=>ze(e)&&e.every(([t])=>"MC".includes(t)),Ye=(e,t)=>{const{distance:s}=Nt(e,t);return Math.abs(s)<wt},Ke=e=>Lt(e)&&e.slice(1).every(([t])=>t===t.toLowerCase()),qe=e=>{if(typeof e!="string"||!e.length)return!1;const t=new zt(e);for(st(t);t.index<t.max&&!t.err.length;)$t(t);return!t.err.length&&"mM".includes(t.segments[0][0])},ft={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"]},We=e=>{let{x1:t,y1:s,x2:r,y2:n}=e;return[t,s,r,n]=[t,s,r,n].map(i=>+i),[["M",t,s],["L",r,n]]},Ve=e=>{const t=[],s=(e.points||"").trim().split(/[\s|,]/).map(n=>+n);let r=0;for(;r<s.length;)t.push([r?"L":"M",s[r],s[r+1]]),r+=2;return e.type==="polygon"?[...t,["z"]]:t},Ge=e=>{let{cx:t,cy:s,r}=e;return[t,s,r]=[t,s,r].map(n=>+n),[["M",t-r,s],["a",r,r,0,1,0,2*r,0],["a",r,r,0,1,0,-2*r,0]]},tn=e=>{let{cx:t,cy:s}=e,r=e.rx||0,n=e.ry||r;return[t,s,r,n]=[t,s,r,n].map(i=>+i),[["M",t-r,s],["a",r,n,0,1,0,2*r,0],["a",r,n,0,1,0,-2*r,0]]},en=e=>{const t=+e.x||0,s=+e.y||0,r=+e.width,n=+e.height;let i=+(e.rx||0),o=+(e.ry||i);return i||o?(i*2>r&&(i-=(i*2-r)/2),o*2>n&&(o-=(o*2-n)/2),[["M",t+i,s],["h",r-i*2],["s",i,0,i,o],["v",n-o*2],["s",0,o,-i,o],["h",-r+i*2],["s",-i,0,-i,-o],["v",-n+o*2],["s",0,-o,i,-o]]):[["M",t,s],["h",r],["v",n],["H",t],["Z"]]},ke=(e,t)=>{const r=(t||document).defaultView||window,n=Object.keys(ft),i=e instanceof r.SVGElement,o=i?e.tagName:null;if(o&&[...n,"path"].every(m=>o!==m))throw TypeError(`${I}: "${o}" is not SVGElement`);const a=i?o:e.type,c=ft[a],l={type:a};i?c.forEach(m=>{l[m]=e.getAttribute(m)}):Object.assign(l,e);let u=[];return a==="circle"?u=Ge(l):a==="ellipse"?u=tn(l):["polyline","polygon"].includes(a)?u=Ve(l):a==="rect"?u=en(l):a==="line"?u=We(l):["glyph","path"].includes(a)&&(u=E(i?e.getAttribute("d")||"":e.d||"")),Lt(u)&&u.length?u:!1},nn=(e,t,s)=>{const r=s||document,n=r.defaultView||window,i=Object.keys(ft),o=e instanceof n.SVGElement,a=o?e.tagName:null;if(a==="path")throw TypeError(`${I}: "${a}" is already SVGPathElement`);if(a&&i.every(x=>a!==x))throw TypeError(`${I}: "${a}" is not SVGElement`);const c=r.createElementNS("http://www.w3.org/2000/svg","path"),l=o?a:e.type,u=ft[l],m={type:l},f=K.round,y=ke(e,r),h=y&&y.length?jt(y,f):"";return o?(u.forEach(x=>{m[x]=e.getAttribute(x)}),Object.values(e.attributes).forEach(({name:x,value:b})=>{u.includes(x)||c.setAttribute(x,b)})):(Object.assign(m,e),Object.keys(m).forEach(x=>{!u.includes(x)&&x!=="type"&&c.setAttribute(x.replace(/[A-Z]/g,b=>`-${b.toLowerCase()}`),m[x])})),qe(h)?(c.setAttribute("d",h),t&&o&&(e.before(c,e),e.remove()),c):!1},Ie=e=>{let t=new C;const{origin:s}=e,[r,n]=s,{translate:i}=e,{rotate:o}=e,{skew:a}=e,{scale:c}=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||a||c)&&(t=t.translate(r,n),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(a)&&a.length===2&&a.every(l=>!Number.isNaN(+l))&&a.some(l=>l!==0)?(t=a[0]?t.skewX(a[0]):t,t=a[1]?t.skewY(a[1]):t):typeof a=="number"&&!Number.isNaN(a)&&(t=t.skewX(a)),Array.isArray(c)&&c.length>=2&&c.every(l=>!Number.isNaN(+l))&&c.some(l=>l!==1)?t=t.scale(...c):typeof c=="number"&&!Number.isNaN(c)&&(t=t.scale(c)),t=t.translate(-r,-n)),t},Ee=(e,t,s,r)=>{const[n]=e,{round:i}=K,o=typeof i=="number"?i:4,a=t.slice(1),{x1:c,y1:l,x2:u,y2:m,x:f,y}=s,[h,x]=a.slice(-2),b=e;if("TQ".includes(n)||(s.qx=null,s.qy=null),n==="L"){if(z(f,o)===z(h,o))return["V",x];if(z(y,o)===z(x,o))return["H",h]}else if(n==="C"){const[A,w]=a;if(s.x1=A,s.y1=w,"CS".includes(r)&&(z(A,o)===z(c*2-u,o)&&z(w,o)===z(l*2-m,o)||z(c,o)===z(u*2-f,o)&&z(l,o)===z(m*2-y,o)))return["S",a[2],a[3],a[4],a[5]]}else if(n==="Q"){const[A,w]=a;if(s.qx=A,s.qy=w,"QT".includes(r)&&z(A,o)===z(c*2-u,o)&&z(w,o)===z(l*2-m,o))return["T",a[2],a[3]]}return b},vt=(e,t)=>{const s=e.slice(1).map(r=>z(r,t));return[e[0]].concat(s)},Re=(e,t)=>{const s=pt(e),r=typeof t=="number"&&t>=0?t:2,n={...U},i=[];let o="M",a="Z";return R(s,(c,l,u,m)=>{n.x=u,n.y=m;const f=W(c,n);let y=c;if([o]=c,i[l]=o,l){a=i[l-1];const x=Ee(c,f,n,a),b=vt(x,r),A=b.join(""),w=kt(x,l,u,m),N=vt(w,r),M=N.join("");y=A.length<M.length?b:N}const h=f.length;return n.x1=+f[h-2],n.y1=+f[h-1],n.x2=+f[h-4]||n.x1,n.y2=+f[h-3]||n.y1,y})},sn=(e,t)=>{let s=C.Translate(t[0],t[1],t[2]);return[,,,s.m44]=t,s=e.multiply(s),[s.m41,s.m42,s.m43,s.m44]},Xt=(e,t,s)=>{const[r,n,i]=s,[o,a,c]=sn(e,[t[0],t[1],0,1]),l=o-r,u=a-n,m=c-i;return[l*(Math.abs(i)/Math.abs(m)||1)+r,u*(Math.abs(i)/Math.abs(m)||1)+n]},rn=e=>{const t=e.slice(1).map((s,r,n)=>r?n[r-1].slice(-2).concat(s.slice(1)):e[0].slice(1).concat(s.slice(1))).map(s=>s.map((r,n)=>s[s.length-n-2*(1-n%2)])).reverse();return[["M"].concat(t[0].slice(0,2))].concat(t.map(s=>["C"].concat(s.slice(2))))},Tt=e=>{const t=pt(e),s=mt(t),r=t.length,n=t[r-1][0]==="Z",i=R(t,(o,a)=>{const c=s[a],l=a&&t[a-1],u=l&&l[0],m=t[a+1],f=m&&m[0],[y]=o,[h,x]=s[a?a-1:r-1].slice(-2);let b=o;switch(y){case"M":b=n?["Z"]:[y,h,x];break;case"A":b=[y,o[1],o[2],o[3],o[4],o[5]===1?0:1,h,x];break;case"C":m&&f==="S"?b=["S",o[1],o[2],h,x]:b=[y,o[3],o[4],o[1],o[2],h,x];break;case"S":u&&"CS".includes(u)&&(!m||f!=="S")?b=["C",c[3],c[4],c[1],c[2],h,x]:b=[y,c[1],c[2],h,x];break;case"Q":m&&f==="T"?b=["T",h,x]:b=[y,o[1],o[2],h,x];break;case"T":u&&"QT".includes(u)&&(!m||f!=="T")?b=["Q",c[1],c[2],h,x]:b=[y,h,x];break;case"Z":b=["M",h,x];break;case"H":b=[y,h];break;case"V":b=[y,x];break;default:b=[y].concat(o.slice(1,-2),h,x)}return b});return n?i.reverse():[i[0]].concat(i.slice(1).reverse())},on=(e,t)=>{let{round:s}=K;return s=t==="off"||typeof t=="number"&&t>=0?t:typeof s=="number"&&s>=0?s:"off",s==="off"?e.slice(0):R(e,r=>vt(r,s))},cn=(e,t=.5)=>{const s=t,r=e.slice(0,2),n=e.slice(2,4),i=e.slice(4,6),o=e.slice(6,8),a=Z(r,n,s),c=Z(n,i,s),l=Z(i,o,s),u=Z(a,c,s),m=Z(c,l,s),f=Z(u,m,s);return[["C",a[0],a[1],u[0],u[1],f[0],f[1]],["C",m[0],m[1],l[0],l[1],o[0],o[1]]]},je=e=>{const t=[];let s,r=-1,n=0,i=0,o=0,a=0;const c={...U};return e.forEach(l=>{const[u]=l,m=u.toUpperCase(),f=u.toLowerCase(),y=u===f,h=l.slice(1);m==="M"?(r+=1,[n,i]=h,n+=y?c.x:0,i+=y?c.y:0,o=n,a=i,s=[y?[m,o,a]:l]):(m==="Z"?(n=o,i=a):m==="H"?([,n]=l,n+=y?c.x:0):m==="V"?([,i]=l,i+=y?c.y:0):([n,i]=l.slice(-2),n+=y?c.x:0,i+=y?c.y:0),s.push(l)),c.x=n,c.y=i,t[r]=s}),t},Se=(e,t)=>{let s=0,r=0,n=0,i=0,o=0,a=0,c="M";const l={...U},u=E(e),m=t&&Object.keys(t);if(!t||m&&!m.length)return u.slice(0);t.origin||Object.assign(t,{origin:K.origin});const f=t.origin,y=Ie(t);return y.isIdentity?u.slice(0):R(u,(h,x,b,A)=>{l.x=b,l.y=A,[c]=h;const w=c.toUpperCase(),M=w!==c?qt(h,x,b,A):h.slice(0);let d=w==="A"?Rt(M,l):["V","H"].includes(w)?W(M,l):M;c=d[0];const v=c==="C"&&d.length>7,L=v?d.slice(0,7):d.slice(0);if(v&&(u.splice(x+1,0,["C"].concat(d.slice(7))),d=L),c==="L")[n,i]=Xt(y,[d[1],d[2]],f),s!==n&&r!==i?d=["L",n,i]:r===i?d=["H",n]:s===n&&(d=["V",i]);else for(o=1,a=d.length;o<a;o+=2)[n,i]=Xt(y,[+d[o],+d[o+1]],f),d[o]=n,d[o+1]=i;s=n,r=i;const T=L.length;return l.x1=+L[T-2],l.y1=+L[T-1],l.x2=+L[T-4]||l.x1,l.y2=+L[T-3]||l.y1,d})};class g{constructor(t,s){const r=s||{},n=typeof t>"u";if(n||!t.length)throw TypeError(`${I}: "pathValue" is ${n?"undefined":"empty"}`);this.segments=E(t);const{round:i,origin:o}=r;let a;Number.isInteger(i)||i==="off"?a=i:a=K.round;let c=K.origin;if(Array.isArray(o)&&o.length>=2){const[l,u,m]=o.map(Number);c=[Number.isNaN(l)?0:l,Number.isNaN(u)?0:u,Number.isNaN(m)?0:m]}return this.round=a,this.origin=c,this}get bbox(){return Pe(this.segments)}get length(){return rt(this.segments)}getBBox(){return this.bbox}getTotalLength(){return this.length}getPointAtLength(t){return ht(this.segments,t)}toAbsolute(){const{segments:t}=this;return this.segments=pt(t),this}toRelative(){const{segments:t}=this;return this.segments=me(t),this}toCurve(){const{segments:t}=this;return this.segments=bt(t),this}reverse(t){this.toAbsolute();const{segments:s}=this,r=je(s),n=r.length>1?r:!1,i=n?n.map((a,c)=>t?c?Tt(a):a.slice(0):Tt(a)):s.slice(0);let o=[];return n?o=i.flat(1):o=t?s:Tt(s),this.segments=o.slice(0),this}normalize(){const{segments:t}=this;return this.segments=mt(t),this}optimize(){const{segments:t}=this,s=this.round==="off"?2:this.round;return this.segments=Re(t,s),this}transform(t){if(!t||typeof t!="object"||typeof t=="object"&&!["translate","rotate","skew","scale"].some(c=>c in t))return this;const{segments:s,origin:[r,n,i]}=this,o={};for(const[c,l]of Object.entries(t))c==="skew"&&Array.isArray(l)||(c==="rotate"||c==="translate"||c==="origin"||c==="scale")&&Array.isArray(l)?o[c]=l.map(Number):c!=="origin"&&typeof Number(l)=="number"&&(o[c]=Number(l));const{origin:a}=o;if(Array.isArray(a)&&a.length>=2){const[c,l,u]=a.map(Number);o.origin=[Number.isNaN(c)?r:c,Number.isNaN(l)?n:l,u||i]}else o.origin=[r,n,i];return this.segments=Se(s,o),this}flipX(){const{cx:t,cy:s}=this.bbox;return this.transform({rotate:[0,180,0],origin:[t,s,0]}),this}flipY(){const{cx:t,cy:s}=this.bbox;return this.transform({rotate:[180,0,0],origin:[t,s,0]}),this}toString(){return jt(this.segments,this.round)}}return p(g,"CSSMatrix",C),p(g,"pathToAbsolute",pt),p(g,"pathToRelative",me),p(g,"pathToCurve",bt),p(g,"pathToString",jt),p(g,"arcTools",Oe),p(g,"bezierTools",{Cvalues:xe,Tvalues:Bt,minmaxC:_t,minmaxQ:Mt,getBezierLength:ut,bezierLength:de,calculateBezier:be,computeBezier:pe,deriveBezier:ge,CBEZIER_MINMAX_EPSILON:Ae}),p(g,"cubicTools",{getCubicLength:Ft,getCubicBBox:Ne,getPointAtCubicLength:we,getPointAtCubicSegmentLength:Me}),p(g,"lineTools",{getPointAtLineLength:St,getLineBBox:Dt,getLineLength:lt}),p(g,"quadTools",{getPointAtQuadSegmentLength:Le,getQuadLength:Ht,getQuadBBox:Te,getPointAtQuadLength:ve}),p(g,"polygonTools",{polygonArea:Qe,polygonLength:Be}),p(g,"distanceSquareRoot",dt),p(g,"distanceEpsilon",wt),p(g,"midPoint",Z),p(g,"rotateVector",at),p(g,"roundTo",z),p(g,"finalizeSegment",Pt),p(g,"invalidPathValue",H),p(g,"isArcCommand",le),p(g,"isDigit",F),p(g,"isDigitStart",ae),p(g,"isMoveCommand",ue),p(g,"isPathCommand",ce),p(g,"isSpace",oe),p(g,"paramsCount",nt),p(g,"paramsParser",U),p(g,"pathParser",zt),p(g,"scanFlag",re),p(g,"scanParam",ie),p(g,"scanSegment",$t),p(g,"skipSpaces",st),p(g,"getPathBBox",Pe),p(g,"getPathArea",Ce),p(g,"getTotalLength",rt),p(g,"getDrawDirection",He),p(g,"getPointAtLength",ht),p(g,"getPropertiesAtLength",Ut),p(g,"getPropertiesAtPoint",Nt),p(g,"getClosestPoint",_e),p(g,"getSegmentOfPoint",Xe),p(g,"getSegmentAtLength",Ue),p(g,"isPointInStroke",Ye),p(g,"isValidPath",qe),p(g,"isPathArray",Lt),p(g,"isAbsoluteArray",$e),p(g,"isRelativeArray",Ke),p(g,"isCurveArray",Je),p(g,"isNormalizedArray",ze),p(g,"shapeToPath",nn),p(g,"shapeToPathArray",ke),p(g,"shapeParams",ft),p(g,"parsePathString",E),p(g,"absolutizeSegment",qt),p(g,"arcToCubic",It),p(g,"getSVGMatrix",Ie),p(g,"iterate",R),p(g,"lineToCubic",Et),p(g,"normalizePath",mt),p(g,"normalizeSegment",W),p(g,"optimizePath",Re),p(g,"projection2d",Xt),p(g,"quadToCubic",he),p(g,"relativizeSegment",kt),p(g,"reverseCurve",rn),p(g,"reversePath",Tt),p(g,"roundPath",on),p(g,"roundSegment",vt),p(g,"segmentToCubic",Rt),p(g,"shortenSegment",Ee),p(g,"splitCubic",cn),p(g,"splitPath",je),p(g,"transformPath",Se),g}();
|
|
2
2
|
//# sourceMappingURL=svg-path-commander.js.map
|