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.
- package/README.md +26 -4
- package/dist/svg-path-commander.cjs +2 -0
- package/dist/svg-path-commander.cjs.map +1 -0
- package/dist/svg-path-commander.d.ts +454 -0
- package/dist/svg-path-commander.js +2 -3762
- package/dist/svg-path-commander.js.map +1 -0
- package/dist/svg-path-commander.mjs +1194 -0
- package/dist/svg-path-commander.mjs.map +1 -0
- package/package.json +39 -42
- package/src/convert/pathToAbsolute.ts +101 -0
- package/src/convert/{pathToCurve.js → pathToCurve.ts} +12 -14
- package/src/convert/pathToRelative.ts +92 -0
- package/src/convert/pathToString.ts +17 -0
- package/src/{svg-path-commander.js → index.ts} +143 -66
- package/src/interface.ts +129 -0
- package/src/math/distanceSquareRoot.ts +13 -0
- package/src/math/midPoint.ts +16 -0
- package/src/math/{polygonArea.js → polygonArea.ts} +6 -4
- package/src/math/{polygonLength.js → polygonLength.ts} +5 -3
- package/src/math/rotateVector.ts +16 -0
- package/src/options/options.ts +9 -0
- package/src/parser/error.ts +2 -0
- package/src/parser/finalizeSegment.ts +31 -0
- package/src/parser/{invalidPathValue.js → invalidPathValue.ts} +0 -0
- package/src/parser/{isArcCommand.js → isArcCommand.ts} +5 -4
- package/src/parser/isDigit.ts +12 -0
- package/src/parser/isDigitStart.ts +14 -0
- package/src/parser/isPathCommand.ts +28 -0
- package/src/parser/isSpace.ts +23 -0
- package/src/parser/paramsCount.ts +16 -0
- package/src/parser/paramsParser.ts +14 -0
- package/src/parser/{parsePathString.js → parsePathString.ts} +13 -7
- package/src/parser/pathParser.ts +29 -0
- package/src/parser/{scanFlag.js → scanFlag.ts} +8 -5
- package/src/parser/{scanParam.js → scanParam.ts} +12 -11
- package/src/parser/{scanSegment.js → scanSegment.ts} +9 -5
- package/src/parser/{skipSpaces.js → skipSpaces.ts} +5 -3
- package/src/process/{arcToCubic.js → arcToCubic.ts} +42 -28
- package/src/process/fixArc.ts +23 -0
- package/src/process/getSVGMatrix.ts +70 -0
- package/src/process/lineToCubic.ts +17 -0
- package/src/process/{normalizePath.js → normalizePath.ts} +10 -10
- package/src/process/normalizeSegment.ts +47 -0
- package/src/process/{optimizePath.js → optimizePath.ts} +18 -21
- package/src/process/{projection2d.js → projection2d.ts} +16 -15
- package/src/process/quadToCubic.ts +31 -0
- package/src/process/reverseCurve.ts +21 -0
- package/src/process/reversePath.ts +101 -0
- package/src/process/roundPath.ts +29 -0
- package/src/process/segmentToCubic.ts +46 -0
- package/src/process/shortenSegment.ts +79 -0
- package/src/process/splitCubic.ts +28 -0
- package/src/process/{splitPath.js → splitPath.ts} +9 -8
- package/src/process/{transformPath.js → transformPath.ts} +55 -48
- package/src/types.ts +193 -0
- package/src/util/getClosestPoint.ts +15 -0
- package/src/util/{getDrawDirection.js → getDrawDirection.ts} +7 -4
- package/src/util/getPathArea.ts +70 -0
- package/src/util/{getPathBBox.js → getPathBBox.ts} +16 -5
- package/src/util/getPointAtLength.ts +14 -0
- package/src/util/{getPropertiesAtLength.js → getPropertiesAtLength.ts} +28 -19
- package/src/util/{getPropertiesAtPoint.js → getPropertiesAtPoint.ts} +16 -12
- package/src/util/getSegmentAtLength.ts +15 -0
- package/src/util/getSegmentOfPoint.ts +18 -0
- package/src/util/{getTotalLength.js → getTotalLength.ts} +6 -4
- package/src/util/isAbsoluteArray.ts +18 -0
- package/src/util/{isCurveArray.js → isCurveArray.ts} +6 -4
- package/src/util/{isNormalizedArray.js → isNormalizedArray.ts} +4 -2
- package/src/util/isPathArray.ts +19 -0
- package/src/util/isPointInStroke.ts +15 -0
- package/src/util/isRelativeArray.ts +18 -0
- package/src/util/{isValidPath.js → isValidPath.ts} +5 -4
- package/src/util/{pathLengthFactory.js → pathLengthFactory.ts} +38 -31
- package/src/util/{segmentArcFactory.js → segmentArcFactory.ts} +71 -55
- package/src/util/segmentCubicFactory.ts +114 -0
- package/src/util/{segmentLineFactory.js → segmentLineFactory.ts} +10 -8
- package/src/util/{segmentQuadFactory.js → segmentQuadFactory.ts} +47 -32
- package/src/util/shapeToPath.ts +214 -0
- package/dist/svg-path-commander.es5.js +0 -3875
- package/dist/svg-path-commander.es5.min.js +0 -2
- package/dist/svg-path-commander.esm.js +0 -3754
- package/dist/svg-path-commander.esm.min.js +0 -2
- package/dist/svg-path-commander.min.js +0 -2
- package/src/convert/pathToAbsolute.js +0 -86
- package/src/convert/pathToRelative.js +0 -84
- package/src/convert/pathToString.js +0 -14
- package/src/index.js +0 -10
- package/src/math/distanceSquareRoot.js +0 -14
- package/src/math/epsilon.js +0 -8
- package/src/math/midPoint.js +0 -13
- package/src/math/rotateVector.js +0 -14
- package/src/options/options.js +0 -10
- package/src/parser/error.js +0 -2
- package/src/parser/finalizeSegment.js +0 -28
- package/src/parser/isDigit.js +0 -9
- package/src/parser/isDigitStart.js +0 -13
- package/src/parser/isPathCommand.js +0 -25
- package/src/parser/isSpace.js +0 -16
- package/src/parser/paramsCount.js +0 -9
- package/src/parser/paramsParser.js +0 -8
- package/src/parser/pathParser.js +0 -24
- package/src/process/clonePath.js +0 -9
- package/src/process/fixArc.js +0 -21
- package/src/process/fixPath.js +0 -31
- package/src/process/getSVGMatrix.js +0 -61
- package/src/process/lineToCubic.js +0 -30
- package/src/process/normalizeSegment.js +0 -45
- package/src/process/quadToCubic.js +0 -22
- package/src/process/reverseCurve.js +0 -18
- package/src/process/reversePath.js +0 -89
- package/src/process/roundPath.js +0 -26
- package/src/process/segmentToCubic.js +0 -46
- package/src/process/shortenSegment.js +0 -58
- package/src/process/splitCubic.js +0 -26
- package/src/util/getClosestPoint.js +0 -12
- package/src/util/getPathArea.js +0 -47
- package/src/util/getPointAtLength.js +0 -12
- package/src/util/getSegmentAtLength.js +0 -11
- package/src/util/getSegmentOfPoint.js +0 -12
- package/src/util/isAbsoluteArray.js +0 -14
- package/src/util/isPathArray.js +0 -14
- package/src/util/isPointInStroke.js +0 -13
- package/src/util/isRelativeArray.js +0 -14
- package/src/util/segmentCubicFactory.js +0 -97
- package/src/util/shapeToPath.js +0 -204
- package/src/util/util.js +0 -82
- package/src/version.js +0 -8
- package/types/index.d.ts +0 -120
- package/types/more/modules.ts +0 -82
- package/types/more/svg.d.ts +0 -211
- package/types/svg-path-commander.d.ts +0 -1089
package/types/more/svg.d.ts
DELETED
|
@@ -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
|
-
}
|