svg-path-commander 1.0.5 → 2.0.0-alpha2

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 (131) hide show
  1. package/README.md +26 -4
  2. package/dist/svg-path-commander.cjs +2 -0
  3. package/dist/svg-path-commander.cjs.map +1 -0
  4. package/dist/svg-path-commander.d.ts +454 -0
  5. package/dist/svg-path-commander.js +2 -3762
  6. package/dist/svg-path-commander.js.map +1 -0
  7. package/dist/svg-path-commander.mjs +1194 -0
  8. package/dist/svg-path-commander.mjs.map +1 -0
  9. package/package.json +39 -42
  10. package/src/convert/pathToAbsolute.ts +101 -0
  11. package/src/convert/{pathToCurve.js → pathToCurve.ts} +12 -14
  12. package/src/convert/pathToRelative.ts +92 -0
  13. package/src/convert/pathToString.ts +17 -0
  14. package/src/{svg-path-commander.js → index.ts} +143 -66
  15. package/src/interface.ts +129 -0
  16. package/src/math/distanceSquareRoot.ts +13 -0
  17. package/src/math/midPoint.ts +16 -0
  18. package/src/math/{polygonArea.js → polygonArea.ts} +6 -4
  19. package/src/math/{polygonLength.js → polygonLength.ts} +5 -3
  20. package/src/math/rotateVector.ts +16 -0
  21. package/src/options/options.ts +9 -0
  22. package/src/parser/error.ts +2 -0
  23. package/src/parser/finalizeSegment.ts +31 -0
  24. package/src/parser/{invalidPathValue.js → invalidPathValue.ts} +0 -0
  25. package/src/parser/{isArcCommand.js → isArcCommand.ts} +5 -4
  26. package/src/parser/isDigit.ts +12 -0
  27. package/src/parser/isDigitStart.ts +14 -0
  28. package/src/parser/isPathCommand.ts +28 -0
  29. package/src/parser/isSpace.ts +23 -0
  30. package/src/parser/paramsCount.ts +16 -0
  31. package/src/parser/paramsParser.ts +14 -0
  32. package/src/parser/{parsePathString.js → parsePathString.ts} +13 -7
  33. package/src/parser/pathParser.ts +29 -0
  34. package/src/parser/{scanFlag.js → scanFlag.ts} +8 -5
  35. package/src/parser/{scanParam.js → scanParam.ts} +12 -11
  36. package/src/parser/{scanSegment.js → scanSegment.ts} +9 -5
  37. package/src/parser/{skipSpaces.js → skipSpaces.ts} +5 -3
  38. package/src/process/{arcToCubic.js → arcToCubic.ts} +42 -28
  39. package/src/process/fixArc.ts +23 -0
  40. package/src/process/getSVGMatrix.ts +70 -0
  41. package/src/process/lineToCubic.ts +17 -0
  42. package/src/process/{normalizePath.js → normalizePath.ts} +10 -10
  43. package/src/process/normalizeSegment.ts +47 -0
  44. package/src/process/{optimizePath.js → optimizePath.ts} +18 -21
  45. package/src/process/{projection2d.js → projection2d.ts} +16 -15
  46. package/src/process/quadToCubic.ts +31 -0
  47. package/src/process/reverseCurve.ts +21 -0
  48. package/src/process/reversePath.ts +101 -0
  49. package/src/process/roundPath.ts +29 -0
  50. package/src/process/segmentToCubic.ts +46 -0
  51. package/src/process/shortenSegment.ts +79 -0
  52. package/src/process/splitCubic.ts +28 -0
  53. package/src/process/{splitPath.js → splitPath.ts} +9 -8
  54. package/src/process/{transformPath.js → transformPath.ts} +55 -48
  55. package/src/types.ts +193 -0
  56. package/src/util/getClosestPoint.ts +15 -0
  57. package/src/util/{getDrawDirection.js → getDrawDirection.ts} +7 -4
  58. package/src/util/getPathArea.ts +70 -0
  59. package/src/util/{getPathBBox.js → getPathBBox.ts} +16 -5
  60. package/src/util/getPointAtLength.ts +14 -0
  61. package/src/util/{getPropertiesAtLength.js → getPropertiesAtLength.ts} +28 -19
  62. package/src/util/{getPropertiesAtPoint.js → getPropertiesAtPoint.ts} +16 -12
  63. package/src/util/getSegmentAtLength.ts +15 -0
  64. package/src/util/getSegmentOfPoint.ts +18 -0
  65. package/src/util/{getTotalLength.js → getTotalLength.ts} +6 -4
  66. package/src/util/isAbsoluteArray.ts +18 -0
  67. package/src/util/{isCurveArray.js → isCurveArray.ts} +6 -4
  68. package/src/util/{isNormalizedArray.js → isNormalizedArray.ts} +4 -2
  69. package/src/util/isPathArray.ts +19 -0
  70. package/src/util/isPointInStroke.ts +15 -0
  71. package/src/util/isRelativeArray.ts +18 -0
  72. package/src/util/{isValidPath.js → isValidPath.ts} +5 -4
  73. package/src/util/{pathLengthFactory.js → pathLengthFactory.ts} +38 -31
  74. package/src/util/{segmentArcFactory.js → segmentArcFactory.ts} +71 -55
  75. package/src/util/segmentCubicFactory.ts +114 -0
  76. package/src/util/{segmentLineFactory.js → segmentLineFactory.ts} +10 -8
  77. package/src/util/{segmentQuadFactory.js → segmentQuadFactory.ts} +47 -32
  78. package/src/util/shapeToPath.ts +214 -0
  79. package/dist/svg-path-commander.es5.js +0 -3875
  80. package/dist/svg-path-commander.es5.min.js +0 -2
  81. package/dist/svg-path-commander.esm.js +0 -3754
  82. package/dist/svg-path-commander.esm.min.js +0 -2
  83. package/dist/svg-path-commander.min.js +0 -2
  84. package/src/convert/pathToAbsolute.js +0 -86
  85. package/src/convert/pathToRelative.js +0 -84
  86. package/src/convert/pathToString.js +0 -14
  87. package/src/index.js +0 -10
  88. package/src/math/distanceSquareRoot.js +0 -14
  89. package/src/math/epsilon.js +0 -8
  90. package/src/math/midPoint.js +0 -13
  91. package/src/math/rotateVector.js +0 -14
  92. package/src/options/options.js +0 -10
  93. package/src/parser/error.js +0 -2
  94. package/src/parser/finalizeSegment.js +0 -28
  95. package/src/parser/isDigit.js +0 -9
  96. package/src/parser/isDigitStart.js +0 -13
  97. package/src/parser/isPathCommand.js +0 -25
  98. package/src/parser/isSpace.js +0 -16
  99. package/src/parser/paramsCount.js +0 -9
  100. package/src/parser/paramsParser.js +0 -8
  101. package/src/parser/pathParser.js +0 -24
  102. package/src/process/clonePath.js +0 -9
  103. package/src/process/fixArc.js +0 -21
  104. package/src/process/fixPath.js +0 -31
  105. package/src/process/getSVGMatrix.js +0 -61
  106. package/src/process/lineToCubic.js +0 -30
  107. package/src/process/normalizeSegment.js +0 -45
  108. package/src/process/quadToCubic.js +0 -22
  109. package/src/process/reverseCurve.js +0 -18
  110. package/src/process/reversePath.js +0 -89
  111. package/src/process/roundPath.js +0 -26
  112. package/src/process/segmentToCubic.js +0 -46
  113. package/src/process/shortenSegment.js +0 -58
  114. package/src/process/splitCubic.js +0 -26
  115. package/src/util/getClosestPoint.js +0 -12
  116. package/src/util/getPathArea.js +0 -47
  117. package/src/util/getPointAtLength.js +0 -12
  118. package/src/util/getSegmentAtLength.js +0 -11
  119. package/src/util/getSegmentOfPoint.js +0 -12
  120. package/src/util/isAbsoluteArray.js +0 -14
  121. package/src/util/isPathArray.js +0 -14
  122. package/src/util/isPointInStroke.js +0 -13
  123. package/src/util/isRelativeArray.js +0 -14
  124. package/src/util/segmentCubicFactory.js +0 -97
  125. package/src/util/shapeToPath.js +0 -204
  126. package/src/util/util.js +0 -82
  127. package/src/version.js +0 -8
  128. package/types/index.d.ts +0 -120
  129. package/types/more/modules.ts +0 -82
  130. package/types/more/svg.d.ts +0 -211
  131. package/types/svg-path-commander.d.ts +0 -1089
@@ -1,211 +0,0 @@
1
- // custom types
2
- export type MCommand = 'M';
3
- export type mCommand = 'm';
4
-
5
- export type LCommand = 'L';
6
- export type lCommand = 'l';
7
-
8
- export type VCommand = 'V';
9
- export type vCommand = 'v';
10
-
11
- export type HCommand = 'H';
12
- export type hCommand = 'h';
13
-
14
- export type ZCommand = 'Z';
15
- export type zCommand = 'z';
16
-
17
- export type CCommand = 'C';
18
- export type cCommand = 'c';
19
-
20
- export type SCommand = 'S';
21
- export type sCommand = 's';
22
-
23
- export type QCommand = 'Q';
24
- export type qCommand = 'q';
25
-
26
- export type TCommand = 'T';
27
- export type tCommand = 't';
28
-
29
- export type ACommand = 'A';
30
- export type aCommand = 'a';
31
-
32
- export type absoluteCommand = MCommand | LCommand | VCommand | HCommand | ZCommand
33
- | CCommand | SCommand | QCommand | TCommand | ACommand;
34
- export type relativeCommand = mCommand | lCommand | vCommand | hCommand | zCommand
35
- | cCommand | sCommand | qCommand | tCommand | aCommand;
36
-
37
- export type pathCommand = absoluteCommand | relativeCommand;
38
-
39
- export type MSegment = [MCommand, number, number];
40
- export type mSegment = [mCommand, number, number];
41
- export type moveSegment = MSegment | mSegment;
42
-
43
- export type LSegment = [LCommand, number, number];
44
- export type lSegment = [lCommand, number, number];
45
- export type lineSegment = LSegment | lSegment;
46
-
47
- export type VSegment = [VCommand, number];
48
- export type vSegment = [vCommand, number];
49
- export type vertLineSegment = vSegment | VSegment;
50
-
51
- export type HSegment = [HCommand, number];
52
- export type hSegment = [hCommand, number];
53
- export type horLineSegment = HSegment | hSegment;
54
-
55
- export type ZSegment = [ZCommand];
56
- export type zSegment = [zCommand];
57
- export type closeSegment = ZSegment | zSegment;
58
-
59
- export type CSegment = [CCommand, number, number, number, number, number, number];
60
- export type cSegment = [cCommand, number, number, number, number, number, number];
61
- export type cubicSegment = CSegment | cSegment;
62
-
63
- export type SSegment = [SCommand, number, number, number, number];
64
- export type sSegment = [sCommand, number, number, number, number];
65
- export type shortCubicSegment = SSegment | sSegment;
66
-
67
- export type QSegment = [QCommand, number, number, number, number];
68
- export type qSegment = [qCommand, number, number, number, number];
69
- export type quadSegment = QSegment | qSegment;
70
-
71
- export type TSegment = [TCommand, number, number];
72
- export type tSegment = [tCommand, number, number];
73
- export type shortQuadSegment = TSegment | tSegment;
74
-
75
- export type ASegment = [ACommand, number, number, number, number, number, number, number];
76
- export type aSegment = [aCommand, number, number, number, number, number, number, number];
77
- export type arcSegment = ASegment | aSegment;
78
-
79
- export type pathSegment = moveSegment | lineSegment | vertLineSegment | horLineSegment | closeSegment
80
- | cubicSegment | shortCubicSegment | quadSegment | shortQuadSegment | arcSegment;
81
-
82
- export interface segmentProperties {
83
- /** the segment */
84
- segment: pathSegment,
85
- /** the segment index */
86
- index: number,
87
- /** the segment length */
88
- length: number;
89
- /** the length including the segment length */
90
- lengthAtSegment: number,
91
- [key: string]: any
92
- }
93
-
94
- export type shortSegment = vertLineSegment | horLineSegment | shortCubicSegment | shortQuadSegment | closeSegment;
95
- export type absoluteSegment = MSegment | LSegment | VSegment | HSegment | CSegment | SSegment | QSegment | TSegment | ASegment | ZSegment;
96
- export type relativeSegment = mSegment | lSegment | vSegment | hSegment | cSegment | sSegment | qSegment | tSegment | aSegment | zSegment;
97
- export type normalSegment = MSegment | LSegment | CSegment | QSegment | ASegment | ZSegment;
98
-
99
- export type pathArray = [(MSegment | mSegment), ...pathSegment[]];
100
- export type absoluteArray = [MSegment, ...absoluteSegment[]];
101
- export type relativeArray = [MSegment, ...relativeSegment[]];
102
- export type normalArray = [MSegment, ...normalSegment[]];
103
- export type curveArray = [MSegment, ...CSegment[]];
104
- export type polygonArray = [MSegment, ...LSegment[], ZSegment];
105
- export type polylineArray = [MSegment, ...LSegment[]];
106
-
107
- export interface options {
108
- /** @default 4 */
109
- round: 'off' | number;
110
- /** @default [0,0,0] */
111
- origin: number[];
112
- }
113
-
114
- export interface pathTransformList {
115
- /** segment */
116
- s: pathSegment,
117
- /** pathCommand */
118
- c: string,
119
- /** x */
120
- x: number,
121
- /** y */
122
- y: number
123
- }
124
-
125
- export interface transformObject {
126
- translate?: number | [number, number, number];
127
- rotate?: number | [number, number, number];
128
- scale?: number | [number, number, number];
129
- skew?: number | [number, number];
130
- origin?: [number, number, number?];
131
- // translate?: number | number[];
132
- // rotate?: number | number[];
133
- // scale?: number | number[];
134
- // skew?: number | number[];
135
- // origin?: number[];
136
- }
137
-
138
- export type shapeTypes = SVGPolylineElement | SVGPolygonElement | SVGLineElement | SVGEllipseElement | SVGCircleElement | SVGRectElement;
139
- export type shapeOps = lineAttr | polyAttr | ellipseAttr | circleAttr | rectAttr | glyphAttr;
140
-
141
- export interface lineAttr {
142
- type: string;
143
- x1: number;
144
- y1: number;
145
- x2: number;
146
- y2: number
147
- }
148
- export interface polyAttr {
149
- type: string;
150
- points : string;
151
- }
152
- export interface circleAttr {
153
- type: string;
154
- cx: number;
155
- cy: number;
156
- r: number;
157
- }
158
- export interface ellipseAttr {
159
- type: string;
160
- cx: number;
161
- cy: number;
162
- rx: number;
163
- ry: number;
164
- }
165
- export interface rectAttr {
166
- type: string;
167
- width : number;
168
- height : number;
169
- x : number; y : number;
170
- rx : number; ry : number;
171
- }
172
- export interface glyphAttr {
173
- type: string;
174
- d : string;
175
- }
176
-
177
- export interface pathBBox {
178
- width: number;
179
- height: number;
180
- x: number; y: number;
181
- x2: number; y2: number;
182
- cx: number; cy: number; cz: number;
183
- }
184
- export interface segmentLimits {
185
- min : {x: number; y: number};
186
- max : {x: number; y: number}
187
- }
188
-
189
- export interface parserParams {
190
- x1: number; y1: number;
191
- x2: number; y2: number;
192
- x: number; y: number;
193
- qx: number | null;
194
- qy: number | null;
195
- }
196
-
197
- export interface pointProperties {
198
- closest: {
199
- x: number,
200
- y: number,
201
- }
202
- distance: number,
203
- segment?: segmentProperties,
204
- }
205
-
206
- export interface lengthFactory {
207
- length: number;
208
- point: { x: number, y: number };
209
- min: { x: number, y: number };
210
- max: { x: number, y: number };
211
- }