svg-path-commander 2.1.2 → 2.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/README.md +4 -4
  2. package/dist/svg-path-commander.cjs +1 -1
  3. package/dist/svg-path-commander.cjs.map +1 -1
  4. package/dist/svg-path-commander.d.ts +755 -849
  5. package/dist/svg-path-commander.js +1 -1
  6. package/dist/svg-path-commander.js.map +1 -1
  7. package/dist/svg-path-commander.mjs +947 -611
  8. package/dist/svg-path-commander.mjs.map +1 -1
  9. package/package.json +14 -22
  10. package/.eslintrc.cjs +0 -225
  11. package/.prettierrc.json +0 -15
  12. package/dts.config.ts +0 -15
  13. package/src/convert/pathToAbsolute.ts +0 -18
  14. package/src/convert/pathToCurve.ts +0 -43
  15. package/src/convert/pathToRelative.ts +0 -18
  16. package/src/convert/pathToString.ts +0 -50
  17. package/src/index.ts +0 -454
  18. package/src/interface.ts +0 -130
  19. package/src/math/arcTools.ts +0 -396
  20. package/src/math/bezier.ts +0 -261
  21. package/src/math/cubicTools.ts +0 -124
  22. package/src/math/distanceSquareRoot.ts +0 -15
  23. package/src/math/lineTools.ts +0 -69
  24. package/src/math/midPoint.ts +0 -18
  25. package/src/math/polygonTools.ts +0 -48
  26. package/src/math/quadTools.ts +0 -100
  27. package/src/math/rotateVector.ts +0 -17
  28. package/src/math/roundTo.ts +0 -7
  29. package/src/options/options.ts +0 -9
  30. package/src/parser/error.ts +0 -2
  31. package/src/parser/finalizeSegment.ts +0 -35
  32. package/src/parser/invalidPathValue.ts +0 -2
  33. package/src/parser/isArcCommand.ts +0 -11
  34. package/src/parser/isDigit.ts +0 -12
  35. package/src/parser/isDigitStart.ts +0 -14
  36. package/src/parser/isMoveCommand.ts +0 -17
  37. package/src/parser/isPathCommand.ts +0 -28
  38. package/src/parser/isSpace.ts +0 -23
  39. package/src/parser/paramsCount.ts +0 -16
  40. package/src/parser/paramsParser.ts +0 -14
  41. package/src/parser/parsePathString.ts +0 -33
  42. package/src/parser/pathParser.ts +0 -29
  43. package/src/parser/scanFlag.ts +0 -29
  44. package/src/parser/scanParam.ts +0 -102
  45. package/src/parser/scanSegment.ts +0 -84
  46. package/src/parser/skipSpaces.ts +0 -17
  47. package/src/process/absolutizeSegment.ts +0 -63
  48. package/src/process/arcToCubic.ts +0 -128
  49. package/src/process/getSVGMatrix.ts +0 -70
  50. package/src/process/iterate.ts +0 -58
  51. package/src/process/lineToCubic.ts +0 -17
  52. package/src/process/normalizePath.ts +0 -33
  53. package/src/process/normalizeSegment.ts +0 -84
  54. package/src/process/optimizePath.ts +0 -63
  55. package/src/process/projection2d.ts +0 -52
  56. package/src/process/quadToCubic.ts +0 -31
  57. package/src/process/relativizeSegment.ts +0 -59
  58. package/src/process/reverseCurve.ts +0 -24
  59. package/src/process/reversePath.ts +0 -114
  60. package/src/process/roundPath.ts +0 -33
  61. package/src/process/roundSegment.ts +0 -9
  62. package/src/process/segmentToCubic.ts +0 -48
  63. package/src/process/shortenSegment.ts +0 -71
  64. package/src/process/splitCubic.ts +0 -29
  65. package/src/process/splitPath.ts +0 -63
  66. package/src/process/transformPath.ts +0 -110
  67. package/src/types.ts +0 -228
  68. package/src/util/distanceEpsilon.ts +0 -3
  69. package/src/util/getClosestPoint.ts +0 -15
  70. package/src/util/getDrawDirection.ts +0 -16
  71. package/src/util/getPathArea.ts +0 -70
  72. package/src/util/getPathBBox.ts +0 -98
  73. package/src/util/getPointAtLength.ts +0 -110
  74. package/src/util/getPropertiesAtLength.ts +0 -67
  75. package/src/util/getPropertiesAtPoint.ts +0 -84
  76. package/src/util/getSegmentAtLength.ts +0 -15
  77. package/src/util/getSegmentOfPoint.ts +0 -18
  78. package/src/util/getTotalLength.ts +0 -68
  79. package/src/util/isAbsoluteArray.ts +0 -18
  80. package/src/util/isCurveArray.ts +0 -15
  81. package/src/util/isNormalizedArray.ts +0 -16
  82. package/src/util/isPathArray.ts +0 -24
  83. package/src/util/isPointInStroke.ts +0 -16
  84. package/src/util/isRelativeArray.ts +0 -18
  85. package/src/util/isValidPath.ts +0 -27
  86. package/src/util/shapeParams.ts +0 -16
  87. package/src/util/shapeToPath.ts +0 -86
  88. package/src/util/shapeToPathArray.ts +0 -183
  89. package/test/class.test.ts +0 -504
  90. package/test/fixtures/getMarkup.ts +0 -17
  91. package/test/fixtures/shapeObjects.ts +0 -11
  92. package/test/fixtures/shapes.js +0 -104
  93. package/test/fixtures/simpleShapes.js +0 -75
  94. package/test/static.test.ts +0 -330
  95. package/vite.config.mts +0 -41
  96. package/vitest.config-ui.mts +0 -26
  97. package/vitest.config.mts +0 -26
@@ -1,854 +1,760 @@
1
- import CSSMatrix$1 from '@thednp/dommatrix';
1
+ import * as arcTools from './math/arcTools';
2
+ import { default as default_2 } from '@thednp/dommatrix';
3
+ import { default as default_3 } from './parser/pathParser';
4
+
5
+ export declare type AbsoluteArray = [MSegment, ...AbsoluteSegment[]];
6
+
7
+ export declare type AbsoluteCommand = MCommand | LCommand | VCommand | HCommand | ZCommand | CCommand | SCommand | QCommand | TCommand | ACommand;
8
+
9
+ export declare type AbsoluteSegment = MSegment | LSegment | VSegment | HSegment | CSegment | SSegment | QSegment | TSegment | ASegment | ZSegment;
10
+
11
+ export declare type ACommand = "A";
12
+
13
+ export declare type aCommand = "a";
14
+
15
+ export declare type ArcCoordinates = [
16
+ number,
17
+ number,
18
+ number,
19
+ number,
20
+ number,
21
+ number,
22
+ number,
23
+ number,
24
+ number
25
+ ];
26
+
27
+ export declare type ArcSegment = ASegment | aSegment;
28
+
29
+ export declare type ASegment = [
30
+ ACommand,
31
+ number,
32
+ number,
33
+ number,
34
+ number,
35
+ number,
36
+ number,
37
+ number
38
+ ];
39
+
40
+ export declare type aSegment = [
41
+ aCommand,
42
+ number,
43
+ number,
44
+ number,
45
+ number,
46
+ number,
47
+ number,
48
+ number
49
+ ];
50
+
51
+ export declare type CCommand = "C";
52
+
53
+ export declare type cCommand = "c";
54
+
55
+ export declare type CircleAttr = {
56
+ type: "circle";
57
+ cx: number;
58
+ cy: number;
59
+ r: number;
60
+ [key: string]: string | number;
61
+ };
62
+
63
+ export declare type CloseSegment = ZSegment | zSegment;
64
+
65
+ export declare type CSegment = [
66
+ CCommand,
67
+ number,
68
+ number,
69
+ number,
70
+ number,
71
+ number,
72
+ number
73
+ ];
74
+
75
+ export declare type cSegment = [
76
+ cCommand,
77
+ number,
78
+ number,
79
+ number,
80
+ number,
81
+ number,
82
+ number
83
+ ];
84
+
85
+ export declare type CubicCoordinates = [
86
+ number,
87
+ number,
88
+ number,
89
+ number,
90
+ number,
91
+ number,
92
+ number,
93
+ number
94
+ ];
95
+
96
+ export declare type CubicPoints = [
97
+ Point,
98
+ Point,
99
+ Point,
100
+ Point,
101
+ Point,
102
+ Point,
103
+ Point,
104
+ Point
105
+ ];
106
+
107
+ export declare type CubicSegment = CSegment | cSegment;
108
+
109
+ export declare type CurveArray = [MSegment, ...CSegment[]];
110
+
111
+ export declare type DeriveCallback = (t: number) => Point;
112
+
113
+ export declare type DerivedCubicPoints = [
114
+ DerivedPoint,
115
+ DerivedPoint,
116
+ DerivedPoint,
117
+ DerivedPoint,
118
+ DerivedPoint,
119
+ DerivedPoint,
120
+ DerivedPoint,
121
+ DerivedPoint
122
+ ];
123
+
124
+ export declare type DerivedPoint = Point & {
125
+ t: number;
126
+ };
127
+
128
+ export declare type DerivedQuadPoints = [
129
+ DerivedPoint,
130
+ DerivedPoint,
131
+ DerivedPoint,
132
+ DerivedPoint,
133
+ DerivedPoint,
134
+ DerivedPoint
135
+ ];
136
+
137
+ export declare type DigitNumber = 0x30 | 0x31 | 0x32 | 0x33 | 0x34 | 0x35 | 0x36 | 0x37 | 0x38 | 0x39;
138
+
139
+ export declare type EllipseAttr = {
140
+ type: "ellipse";
141
+ cx: number;
142
+ cy: number;
143
+ rx: number;
144
+ ry?: number;
145
+ [key: string]: string | number | undefined;
146
+ };
147
+
148
+ export declare type GlyphAttr = {
149
+ type: "glyph";
150
+ d: string;
151
+ [key: string]: string | number;
152
+ };
153
+
154
+ export declare type HCommand = "H";
155
+
156
+ export declare type hCommand = "h";
157
+
158
+ export declare type HorLineSegment = HSegment | hSegment;
159
+
160
+ export declare type HSegment = [HCommand, number];
161
+
162
+ export declare type hSegment = [hCommand, number];
163
+
164
+ export declare type IteratorCallback = (segment: PathSegment, index: number, lastX: number, lastY: number) => PathSegment | false | void | undefined;
165
+
166
+ export declare type LCommand = "L";
167
+
168
+ export declare type lCommand = "l";
169
+
170
+ export declare type LengthFactory = {
171
+ length: number;
172
+ point: {
173
+ x: number;
174
+ y: number;
175
+ };
176
+ min: {
177
+ x: number;
178
+ y: number;
179
+ };
180
+ max: {
181
+ x: number;
182
+ y: number;
183
+ };
184
+ };
185
+
186
+ export declare type LineAttr = {
187
+ type: "line";
188
+ x1: number;
189
+ y1: number;
190
+ x2: number;
191
+ y2: number;
192
+ [key: string]: string | number;
193
+ };
194
+
195
+ export declare type LineCoordinates = [number, number, number, number];
196
+
197
+ export declare type LineSegment = LSegment | lSegment;
198
+
199
+ export declare type LSegment = [LCommand, number, number];
200
+
201
+ export declare type lSegment = [lCommand, number, number];
202
+
203
+ export declare type MCommand = "M";
204
+
205
+ export declare type mCommand = "m";
206
+
207
+ export declare type MoveSegment = MSegment | mSegment;
208
+
209
+ export declare type MSegment = [MCommand, number, number];
210
+
211
+ export declare type mSegment = [mCommand, number, number];
212
+
213
+ export declare type NormalArray = [MSegment, ...NormalSegment[]];
214
+
215
+ export declare type NormalSegment = MSegment | LSegment | CSegment | QSegment | ASegment | ZSegment;
216
+
217
+ export declare type Options = {
218
+ round: "off" | number;
219
+ origin: number[];
220
+ };
221
+
222
+ export declare type ParserParams = {
223
+ x1: number;
224
+ y1: number;
225
+ x2: number;
226
+ y2: number;
227
+ x: number;
228
+ y: number;
229
+ qx: number | null;
230
+ qy: number | null;
231
+ };
232
+
233
+ export declare type PathArray = [MSegment | mSegment, ...PathSegment[]];
234
+
235
+ export declare type PathBBox = {
236
+ width: number;
237
+ height: number;
238
+ x: number;
239
+ y: number;
240
+ x2: number;
241
+ y2: number;
242
+ cx: number;
243
+ cy: number;
244
+ cz: number;
245
+ };
246
+
247
+ export declare type PathCommand = AbsoluteCommand | RelativeCommand;
248
+
249
+ export declare type PathCommandNumber = 0x6d | 0x7a | 0x6c | 0x68 | 0x76 | 0x63 | 0x73 | 0x71 | 0x74 | 0x61;
250
+
251
+ export declare type PathSegment = MoveSegment | LineSegment | VertLineSegment | HorLineSegment | CloseSegment | CubicSegment | ShortCubicSegment | QuadSegment | ShortQuadSegment | ArcSegment;
252
+
253
+ export declare type PathTransform = {
254
+ s: PathSegment;
255
+ c: string;
256
+ x: number;
257
+ y: number;
258
+ };
259
+
260
+ export declare type Point = {
261
+ x: number;
262
+ y: number;
263
+ };
264
+
265
+ export declare type PointProperties = {
266
+ closest: {
267
+ x: number;
268
+ y: number;
269
+ };
270
+ distance: number;
271
+ segment?: SegmentProperties;
272
+ };
273
+
274
+ export declare type PointTuple = [number, number];
275
+
276
+ export declare type PolyAttr = {
277
+ type: "polygon" | "polyline";
278
+ points: string;
279
+ [key: string]: string | number;
280
+ };
281
+
282
+ export declare type PolygonArray = [MSegment, ...LSegment[], ZSegment];
283
+
284
+ export declare type PolylineArray = [MSegment, ...LSegment[]];
285
+
286
+ export declare type QCommand = "Q";
287
+
288
+ export declare type qCommand = "q";
289
+
290
+ export declare type QSegment = [QCommand, number, number, number, number];
291
+
292
+ export declare type qSegment = [qCommand, number, number, number, number];
293
+
294
+ export declare type QuadCoordinates = [number, number, number, number, number, number];
295
+
296
+ export declare type QuadPoints = [Point, Point, Point, Point, Point, Point];
297
+
298
+ export declare type QuadSegment = QSegment | qSegment;
299
+
300
+ export declare type RectAttr = {
301
+ type: "rect";
302
+ width: number;
303
+ height: number;
304
+ x: number;
305
+ y: number;
306
+ rx?: number;
307
+ ry?: number;
308
+ [key: string]: string | number | undefined;
309
+ };
310
+
311
+ export declare type RelativeArray = [MSegment, ...RelativeSegment[]];
312
+
313
+ export declare type RelativeCommand = mCommand | lCommand | vCommand | hCommand | zCommand | cCommand | sCommand | qCommand | tCommand | aCommand;
314
+
315
+ export declare type RelativeSegment = mSegment | lSegment | vSegment | hSegment | cSegment | sSegment | qSegment | tSegment | aSegment | zSegment;
316
+
317
+ export declare type SCommand = "S";
318
+
319
+ export declare type sCommand = "s";
320
+
321
+ export declare type SegmentLimits = {
322
+ min: {
323
+ x: number;
324
+ y: number;
325
+ };
326
+ max: {
327
+ x: number;
328
+ y: number;
329
+ };
330
+ };
331
+
332
+ export declare type SegmentProperties = {
333
+ segment: PathSegment;
334
+ index: number;
335
+ length: number;
336
+ lengthAtSegment: number;
337
+ };
338
+
339
+ export declare type ShapeOps = LineAttr | PolyAttr | PolyAttr | EllipseAttr | CircleAttr | RectAttr | GlyphAttr;
340
+
341
+ export declare type ShapeParams = {
342
+ line: ["x1", "y1", "x2", "y2"];
343
+ circle: ["cx", "cy", "r"];
344
+ ellipse: ["cx", "cy", "rx", "ry"];
345
+ rect: ["width", "height", "x", "y", "rx", "ry"];
346
+ polygon: ["points"];
347
+ polyline: ["points"];
348
+ glyph: ["d"];
349
+ };
350
+
351
+ export declare type ShapeTags = "line" | "polyline" | "polygon" | "ellipse" | "circle" | "rect" | "glyph";
352
+
353
+ export declare type ShapeTypes = SVGPolylineElement | SVGPolygonElement | SVGLineElement | SVGEllipseElement | SVGCircleElement | SVGRectElement;
354
+
355
+ export declare type ShortCubicSegment = SSegment | sSegment;
356
+
357
+ export declare type ShortQuadSegment = TSegment | tSegment;
358
+
359
+ export declare type ShortSegment = VertLineSegment | HorLineSegment | ShortCubicSegment | ShortQuadSegment | CloseSegment;
360
+
361
+ export declare type SpaceNumber = 0x1680 | 0x180e | 0x2000 | 0x2001 | 0x2002 | 0x2003 | 0x2004 | 0x2005 | 0x2006 | 0x2007 | 0x2008 | 0x2009 | 0x200a | 0x202f | 0x205f | 0x3000 | 0xfeff | 0x0a | 0x0d | 0x2028 | 0x2029 | 0x20 | 0x09 | 0x0b | 0x0c | 0xa0 | 0x1680;
362
+
363
+ export declare type SSegment = [SCommand, number, number, number, number];
364
+
365
+ export declare type sSegment = [sCommand, number, number, number, number];
366
+
367
+ /**
368
+ * Creates a new SVGPathCommander instance with the following properties:
369
+ * * segments: `pathArray`
370
+ * * round: number
371
+ * * origin: [number, number, number?]
372
+ *
373
+ * @class
374
+ * @author thednp <https://github.com/thednp/svg-path-commander>
375
+ * @returns a new SVGPathCommander instance
376
+ */
377
+ declare class SVGPathCommander_2 {
378
+ static CSSMatrix: typeof default_2;
379
+ static pathToAbsolute: (pathInput: string | PathArray) => AbsoluteArray;
380
+ static pathToRelative: (pathInput: string | PathArray) => RelativeArray;
381
+ static pathToCurve: (pathInput: string | PathArray) => CurveArray;
382
+ static pathToString: (path: PathArray, roundOption?: number | "off") => string;
383
+ static arcTools: typeof arcTools;
384
+ static bezierTools: {
385
+ Cvalues: number[];
386
+ Tvalues: number[];
387
+ minmaxC: ([v1, cp1, cp2, v2]: [number, number, number, number]) => PointTuple;
388
+ minmaxQ: ([v1, cp, v2]: [number, number, number]) => PointTuple;
389
+ getBezierLength: (curve: CubicCoordinates | QuadCoordinates) => number;
390
+ bezierLength: (derivativeFn: DeriveCallback) => number;
391
+ calculateBezier: (derivativeFn: DeriveCallback, t: number) => number;
392
+ computeBezier: (points: DerivedQuadPoints | DerivedCubicPoints, t: number) => DerivedPoint;
393
+ deriveBezier: (points: QuadPoints | CubicPoints) => (DerivedQuadPoints | DerivedCubicPoints)[];
394
+ CBEZIER_MINMAX_EPSILON: number;
395
+ };
396
+ static cubicTools: {
397
+ getCubicLength: (x1: number, y1: number, c1x: number, c1y: number, c2x: number, c2y: number, x2: number, y2: number) => number;
398
+ getCubicBBox: (x1: number, y1: number, c1x: number, c1y: number, c2x: number, c2y: number, x2: number, y2: number) => [number, number, number, number];
399
+ getPointAtCubicLength: (x1: number, y1: number, c1x: number, c1y: number, c2x: number, c2y: number, x2: number, y2: number, distance?: number) => {
400
+ x: number;
401
+ y: number;
402
+ };
403
+ getPointAtCubicSegmentLength: ([x1, y1, c1x, c1y, c2x, c2y, x2, y2]: CubicCoordinates, t: number) => {
404
+ x: number;
405
+ y: number;
406
+ };
407
+ };
408
+ static lineTools: {
409
+ getPointAtLineLength: (x1: number, y1: number, x2: number, y2: number, distance?: number) => {
410
+ x: number;
411
+ y: number;
412
+ };
413
+ getLineBBox: (x1: number, y1: number, x2: number, y2: number) => [number, number, number, number];
414
+ getLineLength: (x1: number, y1: number, x2: number, y2: number) => number;
415
+ };
416
+ static quadTools: {
417
+ getPointAtQuadSegmentLength: ([x1, y1, cx, cy, x2, y2]: QuadCoordinates, t: number) => {
418
+ x: number;
419
+ y: number;
420
+ };
421
+ getQuadLength: (x1: number, y1: number, cx: number, cy: number, x2: number, y2: number) => number;
422
+ getQuadBBox: (x1: number, y1: number, cx: number, cy: number, x2: number, y2: number) => [number, number, number, number];
423
+ getPointAtQuadLength: (x1: number, y1: number, cx: number, cy: number, x2: number, y2: number, distance?: number) => {
424
+ x: number;
425
+ y: number;
426
+ };
427
+ };
428
+ static polygonTools: {
429
+ polygonArea: (polygon: PointTuple[]) => number;
430
+ polygonLength: (polygon: PointTuple[]) => number;
431
+ };
432
+ static distanceSquareRoot: (a: PointTuple, b: PointTuple) => number;
433
+ static distanceEpsilon: number;
434
+ static midPoint: (a: PointTuple, b: PointTuple, t: number) => PointTuple;
435
+ static rotateVector: (x: number, y: number, rad: number) => {
436
+ x: number;
437
+ y: number;
438
+ };
439
+ static roundTo: (n: number, round: number) => number;
440
+ static finalizeSegment: (path: default_3) => void;
441
+ static invalidPathValue: string;
442
+ static isArcCommand: (code: number) => code is 97;
443
+ static isDigit: (code: number) => code is DigitNumber;
444
+ static isDigitStart: (code: number) => code is DigitNumber | 43 | 45 | 46;
445
+ static isMoveCommand: (code: number) => code is 109 | 77;
446
+ static isPathCommand: (code: number) => code is PathCommandNumber;
447
+ static isSpace: (ch: number) => ch is SpaceNumber;
448
+ static paramsCount: {
449
+ a: number;
450
+ c: number;
451
+ h: number;
452
+ l: number;
453
+ m: number;
454
+ r: number;
455
+ q: number;
456
+ s: number;
457
+ t: number;
458
+ v: number;
459
+ z: number;
460
+ };
461
+ static paramsParser: ParserParams;
462
+ static pathParser: typeof default_3;
463
+ static scanFlag: (path: default_3) => void;
464
+ static scanParam: (path: default_3) => void;
465
+ static scanSegment: (path: default_3) => void;
466
+ static skipSpaces: (path: default_3) => void;
467
+ static getPathBBox: (pathInput: PathArray | string) => {
468
+ x: number;
469
+ y: number;
470
+ width: number;
471
+ height: number;
472
+ x2: number;
473
+ y2: number;
474
+ cx: number;
475
+ cy: number;
476
+ cz: number;
477
+ };
478
+ static getPathArea: (path: PathArray) => number;
479
+ static getTotalLength: (pathInput: string | PathArray) => number;
480
+ static getDrawDirection: (path: string | PathArray) => boolean;
481
+ static getPointAtLength: (pathInput: string | PathArray, distance?: number) => {
482
+ x: number;
483
+ y: number;
484
+ };
485
+ static getPropertiesAtLength: (pathInput: string | PathArray, distance?: number) => SegmentProperties;
486
+ static getPropertiesAtPoint: (pathInput: string | PathArray, point: Point) => PointProperties;
487
+ static getClosestPoint: (pathInput: string | PathArray, point: {
488
+ x: number;
489
+ y: number;
490
+ }) => {
491
+ x: number;
492
+ y: number;
493
+ };
494
+ static getSegmentOfPoint: (path: string | PathArray, point: {
495
+ x: number;
496
+ y: number;
497
+ }) => SegmentProperties | undefined;
498
+ static getSegmentAtLength: (pathInput: string | PathArray, distance?: number) => PathSegment | undefined;
499
+ static isPointInStroke: (pathInput: string | PathArray, point: {
500
+ x: number;
501
+ y: number;
502
+ }) => boolean;
503
+ static isValidPath: (pathString: string) => boolean;
504
+ static isPathArray: (path: unknown) => path is PathArray;
505
+ static isAbsoluteArray: (path: unknown) => path is AbsoluteArray;
506
+ static isRelativeArray: (path: unknown) => path is RelativeArray;
507
+ static isCurveArray: (path: unknown) => path is CurveArray;
508
+ static isNormalizedArray: (path: unknown) => path is NormalArray;
509
+ static shapeToPath: (element: ShapeTypes | ShapeOps, replace?: boolean, ownerDocument?: Document) => SVGPathElement | false;
510
+ static shapeToPathArray: (element: ShapeTypes | ShapeOps, ownerDocument?: Document) => false | PathArray;
511
+ static shapeParams: ShapeParams;
512
+ static parsePathString: <T extends PathArray>(pathInput: string | T) => PathArray;
513
+ static absolutizeSegment: (segment: PathSegment, index: number, lastX: number, lastY: number) => AbsoluteSegment;
514
+ static arcToCubic: (X1: number, Y1: number, RX: number, RY: number, angle: number, LAF: number, SF: number, X2: number, Y2: number, recursive?: [number, number, number, number]) => number[];
515
+ static getSVGMatrix: (transform: TransformObjectValues) => default_2;
516
+ static iterate: <T extends PathArray>(path: PathArray, iterator: IteratorCallback) => T;
517
+ static lineToCubic: (x1: number, y1: number, x2: number, y2: number) => number[];
518
+ static normalizePath: (pathInput: string | PathArray) => NormalArray;
519
+ static normalizeSegment: (segment: PathSegment, params: ParserParams) => NormalSegment;
520
+ static optimizePath: (pathInput: PathArray, roundOption?: number) => PathArray;
521
+ static projection2d: (m: default_2, point2D: PointTuple, origin: [number, number, number]) => PointTuple;
522
+ static quadToCubic: (x1: number, y1: number, qx: number, qy: number, x2: number, y2: number) => [number, number, number, number, number, number];
523
+ static relativizeSegment: (segment: PathSegment, index: number, lastX: number, lastY: number) => MSegment | RelativeSegment;
524
+ static reverseCurve: (path: CurveArray) => CurveArray;
525
+ static reversePath: (pathInput: PathArray) => PathArray;
526
+ static roundPath: (path: PathArray, roundOption?: number | "off") => PathArray;
527
+ static roundSegment: <T extends PathSegment>(segment: T, roundOption: number) => T;
528
+ static segmentToCubic: (segment: PathSegment, params: ParserParams) => MSegment | CSegment;
529
+ static shortenSegment: (segment: AbsoluteSegment, normalSegment: NormalSegment, params: ParserParams, prevCommand: PathCommand) => ShortSegment;
530
+ static splitCubic: (pts: number[], ratio?: number) => [CubicSegment, CubicSegment];
531
+ static splitPath: (pathInput: PathArray) => PathArray[];
532
+ static transformPath: (pathInput: PathArray | string, transform?: Partial<TransformObject>) => PathArray;
533
+ segments: PathArray;
534
+ round: number | "off";
535
+ origin: [number, number, number];
536
+ /**
537
+ * @constructor
538
+ * @param pathValue the path string
539
+ * @param config instance options
540
+ */
541
+ constructor(pathValue: string, config?: Partial<Options>);
542
+ get bbox(): {
543
+ x: number;
544
+ y: number;
545
+ width: number;
546
+ height: number;
547
+ x2: number;
548
+ y2: number;
549
+ cx: number;
550
+ cy: number;
551
+ cz: number;
552
+ };
553
+ get length(): number;
554
+ /**
555
+ * Returns the path bounding box, equivalent to native `path.getBBox()`.
556
+ *
557
+ * @public
558
+ * @returns the pathBBox
559
+ */
560
+ getBBox(): {
561
+ x: number;
562
+ y: number;
563
+ width: number;
564
+ height: number;
565
+ x2: number;
566
+ y2: number;
567
+ cx: number;
568
+ cy: number;
569
+ cz: number;
570
+ };
571
+ /**
572
+ * Returns the total path length, equivalent to native `path.getTotalLength()`.
573
+ *
574
+ * @public
575
+ * @returns the path total length
576
+ */
577
+ getTotalLength(): number;
578
+ /**
579
+ * Returns an `{x,y}` point in the path stroke at a given length,
580
+ * equivalent to the native `path.getPointAtLength()`.
581
+ *
582
+ * @public
583
+ * @param length the length
584
+ * @returns the requested point
585
+ */
586
+ getPointAtLength(length: number): {
587
+ x: number;
588
+ y: number;
589
+ };
590
+ /**
591
+ * Convert path to absolute values
592
+ *
593
+ * @public
594
+ */
595
+ toAbsolute(): this;
596
+ /**
597
+ * Convert path to relative values
598
+ *
599
+ * @public
600
+ */
601
+ toRelative(): this;
602
+ /**
603
+ * Convert path to cubic-bezier values. In addition, un-necessary `Z`
604
+ * segment is removed if previous segment extends to the `M` segment.
605
+ *
606
+ * @public
607
+ */
608
+ toCurve(): this;
609
+ /**
610
+ * Reverse the order of the segments and their values.
611
+ *
612
+ * @param onlySubpath option to reverse all sub-paths except first
613
+ * @public
614
+ */
615
+ reverse(onlySubpath?: boolean): this;
616
+ /**
617
+ * Normalize path in 2 steps:
618
+ * * convert `pathArray`(s) to absolute values
619
+ * * convert shorthand notation to standard notation
620
+ *
621
+ * @public
622
+ */
623
+ normalize(): this;
624
+ /**
625
+ * Optimize `pathArray` values:
626
+ * * convert segments to absolute and/or relative values
627
+ * * select segments with shortest resulted string
628
+ * * round values to the specified `decimals` option value
629
+ *
630
+ * @public
631
+ */
632
+ optimize(): this;
633
+ /**
634
+ * Transform path using values from an `Object` defined as `transformObject`.
635
+ *
636
+ * @see TransformObject for a quick refference
637
+ *
638
+ * @param source a `transformObject`as described above
639
+ * @public
640
+ */
641
+ transform(source?: Partial<TransformObject>): this;
642
+ /**
643
+ * Rotate path 180deg vertically
644
+ *
645
+ * @public
646
+ */
647
+ flipX(): this;
648
+ /**
649
+ * Rotate path 180deg horizontally
650
+ *
651
+ * @public
652
+ */
653
+ flipY(): this;
654
+ /**
655
+ * Export the current path to be used
656
+ * for the `d` (description) attribute.
657
+ *
658
+ * @public
659
+ * @return the path string
660
+ */
661
+ toString(): string;
662
+ /**
663
+ * Remove the instance.
664
+ *
665
+ * @public
666
+ * @return void
667
+ */
668
+ dispose(): void;
669
+ }
670
+ export default SVGPathCommander_2;
671
+
672
+ export declare type TCommand = "T";
673
+
674
+ export declare type tCommand = "t";
675
+
676
+ export declare type TransformEntries = [
677
+ TransformProps,
678
+ TransformObject[TransformProps]
679
+ ][];
680
+
681
+ export declare type TransformObject = {
682
+ translate: number | number[];
683
+ rotate: number | number[];
684
+ scale: number | number[];
685
+ skew: number | number[];
686
+ origin: number[];
687
+ };
688
+
689
+ export declare type TransformObjectValues = Partial<TransformObject> & {
690
+ origin: [number, number, number];
691
+ };
692
+
693
+ export declare type TransformProps = keyof TransformObject;
694
+
695
+ export declare type TSegment = [TCommand, number, number];
696
+
697
+ export declare type tSegment = [tCommand, number, number];
698
+
699
+ export declare type VCommand = "V";
700
+
701
+ export declare type vCommand = "v";
702
+
703
+ export declare type VertLineSegment = vSegment | VSegment;
704
+
705
+ export declare type VSegment = [VCommand, number];
706
+
707
+ export declare type vSegment = [vCommand, number];
708
+
709
+ export declare type ZCommand = "Z";
710
+
711
+ export declare type zCommand = "z";
712
+
713
+ export declare type ZSegment = [ZCommand];
714
+
715
+ export declare type zSegment = [zCommand];
716
+
717
+ export { }
2
718
 
3
- export type SegmentProperties = {
4
- segment: PathSegment;
5
- index: number;
6
- length: number;
7
- lengthAtSegment: number;
8
- };
9
- export type PointProperties = {
10
- closest: {
11
- x: number;
12
- y: number;
13
- };
14
- distance: number;
15
- segment?: SegmentProperties;
16
- };
17
- export type LineAttr = {
18
- type: "line";
19
- x1: number;
20
- y1: number;
21
- x2: number;
22
- y2: number;
23
- [key: string]: string | number;
24
- };
25
- export type PolyAttr = {
26
- type: "polygon" | "polyline";
27
- points: string;
28
- [key: string]: string | number;
29
- };
30
- export type CircleAttr = {
31
- type: "circle";
32
- cx: number;
33
- cy: number;
34
- r: number;
35
- [key: string]: string | number;
36
- };
37
- export type EllipseAttr = {
38
- type: "ellipse";
39
- cx: number;
40
- cy: number;
41
- rx: number;
42
- ry?: number;
43
- [key: string]: string | number | undefined;
44
- };
45
- export type RectAttr = {
46
- type: "rect";
47
- width: number;
48
- height: number;
49
- x: number;
50
- y: number;
51
- rx?: number;
52
- ry?: number;
53
- [key: string]: string | number | undefined;
54
- };
55
- export type GlyphAttr = {
56
- type: "glyph";
57
- d: string;
58
- [key: string]: string | number;
59
- };
60
- export type ShapeParams = {
61
- line: [
62
- "x1",
63
- "y1",
64
- "x2",
65
- "y2"
66
- ];
67
- circle: [
68
- "cx",
69
- "cy",
70
- "r"
71
- ];
72
- ellipse: [
73
- "cx",
74
- "cy",
75
- "rx",
76
- "ry"
77
- ];
78
- rect: [
79
- "width",
80
- "height",
81
- "x",
82
- "y",
83
- "rx",
84
- "ry"
85
- ];
86
- polygon: [
87
- "points"
88
- ];
89
- polyline: [
90
- "points"
91
- ];
92
- glyph: [
93
- "d"
94
- ];
95
- };
96
- export type PathBBox = {
97
- width: number;
98
- height: number;
99
- x: number;
100
- y: number;
101
- x2: number;
102
- y2: number;
103
- cx: number;
104
- cy: number;
105
- cz: number;
106
- };
107
- export type SegmentLimits = {
108
- min: {
109
- x: number;
110
- y: number;
111
- };
112
- max: {
113
- x: number;
114
- y: number;
115
- };
116
- };
117
- export type ParserParams = {
118
- x1: number;
119
- y1: number;
120
- x2: number;
121
- y2: number;
122
- x: number;
123
- y: number;
124
- qx: number | null;
125
- qy: number | null;
126
- };
127
- export type LengthFactory = {
128
- length: number;
129
- point: {
130
- x: number;
131
- y: number;
132
- };
133
- min: {
134
- x: number;
135
- y: number;
136
- };
137
- max: {
138
- x: number;
139
- y: number;
140
- };
141
- };
142
- export type Options = {
143
- round: "off" | number;
144
- origin: number[];
145
- };
146
- export type PathTransform = {
147
- s: PathSegment;
148
- c: string;
149
- x: number;
150
- y: number;
151
- };
152
- export type TransformObject = {
153
- translate: number | number[];
154
- rotate: number | number[];
155
- scale: number | number[];
156
- skew: number | number[];
157
- origin: number[];
158
- };
159
- export type TransformProps = keyof TransformObject;
160
- export type TransformEntries = [
161
- TransformProps,
162
- TransformObject[TransformProps]
163
- ][];
164
- 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;
165
- export type PathCommandNumber = 109 | 122 | 108 | 104 | 118 | 99 | 115 | 113 | 116 | 97;
166
- export type DigitNumber = 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57;
167
- export type MCommand = "M";
168
- export type mCommand = "m";
169
- export type LCommand = "L";
170
- export type lCommand = "l";
171
- export type VCommand = "V";
172
- export type vCommand = "v";
173
- export type HCommand = "H";
174
- export type hCommand = "h";
175
- export type ZCommand = "Z";
176
- export type zCommand = "z";
177
- export type CCommand = "C";
178
- export type cCommand = "c";
179
- export type SCommand = "S";
180
- export type sCommand = "s";
181
- export type QCommand = "Q";
182
- export type qCommand = "q";
183
- export type TCommand = "T";
184
- export type tCommand = "t";
185
- export type ACommand = "A";
186
- export type aCommand = "a";
187
- export type AbsoluteCommand = MCommand | LCommand | VCommand | HCommand | ZCommand | CCommand | SCommand | QCommand | TCommand | ACommand;
188
- export type RelativeCommand = mCommand | lCommand | vCommand | hCommand | zCommand | cCommand | sCommand | qCommand | tCommand | aCommand;
189
- export type PathCommand = AbsoluteCommand | RelativeCommand;
190
- export type MSegment = [
191
- MCommand,
192
- number,
193
- number
194
- ];
195
- export type mSegment = [
196
- mCommand,
197
- number,
198
- number
199
- ];
200
- export type MoveSegment = MSegment | mSegment;
201
- export type LSegment = [
202
- LCommand,
203
- number,
204
- number
205
- ];
206
- export type lSegment = [
207
- lCommand,
208
- number,
209
- number
210
- ];
211
- export type LineSegment = LSegment | lSegment;
212
- export type VSegment = [
213
- VCommand,
214
- number
215
- ];
216
- export type vSegment = [
217
- vCommand,
218
- number
219
- ];
220
- export type VertLineSegment = vSegment | VSegment;
221
- export type HSegment = [
222
- HCommand,
223
- number
224
- ];
225
- export type hSegment = [
226
- hCommand,
227
- number
228
- ];
229
- export type HorLineSegment = HSegment | hSegment;
230
- export type ZSegment = [
231
- ZCommand
232
- ];
233
- export type zSegment = [
234
- zCommand
235
- ];
236
- export type CloseSegment = ZSegment | zSegment;
237
- export type CSegment = [
238
- CCommand,
239
- number,
240
- number,
241
- number,
242
- number,
243
- number,
244
- number
245
- ];
246
- export type cSegment = [
247
- cCommand,
248
- number,
249
- number,
250
- number,
251
- number,
252
- number,
253
- number
254
- ];
255
- export type CubicSegment = CSegment | cSegment;
256
- export type SSegment = [
257
- SCommand,
258
- number,
259
- number,
260
- number,
261
- number
262
- ];
263
- export type sSegment = [
264
- sCommand,
265
- number,
266
- number,
267
- number,
268
- number
269
- ];
270
- export type ShortCubicSegment = SSegment | sSegment;
271
- export type QSegment = [
272
- QCommand,
273
- number,
274
- number,
275
- number,
276
- number
277
- ];
278
- export type qSegment = [
279
- qCommand,
280
- number,
281
- number,
282
- number,
283
- number
284
- ];
285
- export type QuadSegment = QSegment | qSegment;
286
- export type TSegment = [
287
- TCommand,
288
- number,
289
- number
290
- ];
291
- export type tSegment = [
292
- tCommand,
293
- number,
294
- number
295
- ];
296
- export type ShortQuadSegment = TSegment | tSegment;
297
- export type ASegment = [
298
- ACommand,
299
- number,
300
- number,
301
- number,
302
- number,
303
- number,
304
- number,
305
- number
306
- ];
307
- export type aSegment = [
308
- aCommand,
309
- number,
310
- number,
311
- number,
312
- number,
313
- number,
314
- number,
315
- number
316
- ];
317
- export type ArcSegment = ASegment | aSegment;
318
- export type PathSegment = MoveSegment | LineSegment | VertLineSegment | HorLineSegment | CloseSegment | CubicSegment | ShortCubicSegment | QuadSegment | ShortQuadSegment | ArcSegment;
319
- export type ShortSegment = VertLineSegment | HorLineSegment | ShortCubicSegment | ShortQuadSegment | CloseSegment;
320
- export type AbsoluteSegment = MSegment | LSegment | VSegment | HSegment | CSegment | SSegment | QSegment | TSegment | ASegment | ZSegment;
321
- export type RelativeSegment = mSegment | lSegment | vSegment | hSegment | cSegment | sSegment | qSegment | tSegment | aSegment | zSegment;
322
- export type NormalSegment = MSegment | LSegment | CSegment | QSegment | ASegment | ZSegment;
323
- export type PathArray = [
324
- MSegment | mSegment,
325
- ...PathSegment[]
326
- ];
327
- export type AbsoluteArray = [
328
- MSegment,
329
- ...AbsoluteSegment[]
330
- ];
331
- export type RelativeArray = [
332
- MSegment,
333
- ...RelativeSegment[]
334
- ];
335
- export type NormalArray = [
336
- MSegment,
337
- ...NormalSegment[]
338
- ];
339
- export type CurveArray = [
340
- MSegment,
341
- ...CSegment[]
342
- ];
343
- export type PolygonArray = [
344
- MSegment,
345
- ...LSegment[],
346
- ZSegment
347
- ];
348
- export type PolylineArray = [
349
- MSegment,
350
- ...LSegment[]
351
- ];
352
- export type ShapeTypes = SVGPolylineElement | SVGPolygonElement | SVGLineElement | SVGEllipseElement | SVGCircleElement | SVGRectElement;
353
- export type ShapeTags = "line" | "polyline" | "polygon" | "ellipse" | "circle" | "rect" | "glyph";
354
- export type ShapeOps = LineAttr | PolyAttr | PolyAttr | EllipseAttr | CircleAttr | RectAttr | GlyphAttr;
355
- export type TransformObjectValues = Partial<TransformObject> & {
356
- origin: [
357
- number,
358
- number,
359
- number
360
- ];
361
- };
362
- export type Point = {
363
- x: number;
364
- y: number;
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
- }
488
- /**
489
- * Creates a new SVGPathCommander instance with the following properties:
490
- * * segments: `pathArray`
491
- * * round: number
492
- * * origin: [number, number, number?]
493
- *
494
- * @class
495
- * @author thednp <https://github.com/thednp/svg-path-commander>
496
- * @returns a new SVGPathCommander instance
497
- */
498
- declare class SVGPathCommander {
499
- static CSSMatrix: typeof CSSMatrix$1;
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
- };
546
- };
547
- static lineTools: {
548
- getPointAtLineLength: (x1: number, y1: number, x2: number, y2: number, distance?: number) => {
549
- x: number;
550
- y: number;
551
- };
552
- getLineBBox: (x1: number, y1: number, x2: number, y2: number) => {
553
- min: {
554
- x: number;
555
- y: number;
556
- };
557
- max: {
558
- x: number;
559
- y: number;
560
- };
561
- };
562
- getLineLength: (x1: number, y1: number, x2: number, y2: number) => number;
563
- };
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) => {
593
- x: number;
594
- y: number;
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;
644
- static getClosestPoint: (pathInput: string | PathArray, point: {
645
- x: number;
646
- y: number;
647
- }) => {
648
- x: number;
649
- y: number;
650
- };
651
- static getSegmentOfPoint: (path: string | PathArray, point: {
652
- x: number;
653
- y: number;
654
- }) => SegmentProperties | undefined;
655
- static getSegmentAtLength: (pathInput: string | PathArray, distance?: number) => PathSegment | undefined;
656
- static isPointInStroke: (pathInput: string | PathArray, point: {
657
- x: number;
658
- y: number;
659
- }) => boolean;
660
- static isValidPath: (pathString: string) => boolean;
661
- static isPathArray: (path: unknown) => path is PathArray;
662
- static isAbsoluteArray: (path: unknown) => path is AbsoluteArray;
663
- static isRelativeArray: (path: unknown) => path is RelativeArray;
664
- static isCurveArray: (path: unknown) => path is CurveArray;
665
- static isNormalizedArray: (path: unknown) => path is NormalArray;
666
- static shapeToPath: (element: ShapeTypes | ShapeOps, replace?: boolean, ownerDocument?: Document) => SVGPathElement | false;
667
- static shapeToPathArray: (element: ShapeTypes | ShapeOps, ownerDocument?: Document) => false | PathArray;
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;
699
- static roundPath: (path: PathArray, roundOption?: number | "off") => PathArray;
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) => [
704
- CubicSegment,
705
- CubicSegment
706
- ];
707
- static splitPath: (pathInput: PathArray) => PathArray[];
708
- static transformPath: (pathInput: PathArray | string, transform?: Partial<TransformObject>) => PathArray;
709
- segments: PathArray;
710
- round: number | "off";
711
- origin: [
712
- number,
713
- number,
714
- number
715
- ];
716
- /**
717
- * @constructor
718
- * @param pathValue the path string
719
- * @param config instance options
720
- */
721
- constructor(pathValue: string, config?: Partial<Options>);
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
- };
733
- get length(): number;
734
- /**
735
- * Returns the path bounding box, equivalent to native `path.getBBox()`.
736
- *
737
- * @public
738
- * @returns the pathBBox
739
- */
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
- };
751
- /**
752
- * Returns the total path length, equivalent to native `path.getTotalLength()`.
753
- *
754
- * @public
755
- * @returns the path total length
756
- */
757
- getTotalLength(): number;
758
- /**
759
- * Returns an `{x,y}` point in the path stroke at a given length,
760
- * equivalent to the native `path.getPointAtLength()`.
761
- *
762
- * @public
763
- * @param length the length
764
- * @returns the requested point
765
- */
766
- getPointAtLength(length: number): {
767
- x: number;
768
- y: number;
769
- };
770
- /**
771
- * Convert path to absolute values
772
- *
773
- * @public
774
- */
775
- toAbsolute(): this;
776
- /**
777
- * Convert path to relative values
778
- *
779
- * @public
780
- */
781
- toRelative(): this;
782
- /**
783
- * Convert path to cubic-bezier values. In addition, un-necessary `Z`
784
- * segment is removed if previous segment extends to the `M` segment.
785
- *
786
- * @public
787
- */
788
- toCurve(): this;
789
- /**
790
- * Reverse the order of the segments and their values.
791
- *
792
- * @param onlySubpath option to reverse all sub-paths except first
793
- * @public
794
- */
795
- reverse(onlySubpath?: boolean): this;
796
- /**
797
- * Normalize path in 2 steps:
798
- * * convert `pathArray`(s) to absolute values
799
- * * convert shorthand notation to standard notation
800
- *
801
- * @public
802
- */
803
- normalize(): this;
804
- /**
805
- * Optimize `pathArray` values:
806
- * * convert segments to absolute and/or relative values
807
- * * select segments with shortest resulted string
808
- * * round values to the specified `decimals` option value
809
- *
810
- * @public
811
- */
812
- optimize(): this;
813
- /**
814
- * Transform path using values from an `Object` defined as `transformObject`.
815
- *
816
- * @see TransformObject for a quick refference
817
- *
818
- * @param source a `transformObject`as described above
819
- * @public
820
- */
821
- transform(source?: Partial<TransformObject>): this;
822
- /**
823
- * Rotate path 180deg vertically
824
- *
825
- * @public
826
- */
827
- flipX(): this;
828
- /**
829
- * Rotate path 180deg horizontally
830
- *
831
- * @public
832
- */
833
- flipY(): this;
834
- /**
835
- * Export the current path to be used
836
- * for the `d` (description) attribute.
837
- *
838
- * @public
839
- * @return the path string
840
- */
841
- toString(): string;
842
- }
843
719
 
844
- declare namespace arcTools {
845
- export { angleBetween, arcLength, arcPoint, getArcBBox, getArcLength, getArcProps, getPointAtArcLength };
720
+ declare namespace shapes {
721
+ let initial: string[];
722
+ let normalized: string[];
723
+ let optimized: string[];
724
+ let relative: string[];
725
+ let absolute: string[];
726
+ let curve: string[];
727
+ let scaled: string[];
728
+ let translated: string[];
729
+ let length: number[];
730
+ let pointAt50: {
731
+ x: number;
732
+ y: number;
733
+ }[];
846
734
  }
847
735
 
848
- export {
849
- SVGPathCommander as default,
850
- };
851
736
 
852
- export as namespace SVGPathCommander;
853
-
854
- export {};
737
+ declare namespace simpleShapes {
738
+ let initial: string[];
739
+ let normalized: string[];
740
+ let transformed: string[];
741
+ let scaled3d: string[];
742
+ let skewedX: string[];
743
+ let skewedY: string[];
744
+ let reversed: string[];
745
+ let length: number[];
746
+ let width: number[];
747
+ let height: number[];
748
+ let pointAt0: {
749
+ x: number;
750
+ y: number;
751
+ }[];
752
+ let pointAt400: {
753
+ x: number;
754
+ y: number;
755
+ }[];
756
+ let pointAt50: {
757
+ x: number;
758
+ y: number;
759
+ }[];
760
+ }