@remotion/paths 3.3.5 → 3.3.7

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.
@@ -3,5 +3,6 @@ import type { Part } from './helpers/types';
3
3
  * Splits a valid SVG path into it's parts.
4
4
  * @param {string} path A valid SVG path
5
5
  * @link https://remotion.dev/docs/paths/get-parts
6
+ * @deprecated In favor of getSubpaths()
6
7
  */
7
8
  export declare const getParts: (path: string) => Part[];
package/dist/get-parts.js CHANGED
@@ -6,6 +6,7 @@ const construct_1 = require("./helpers/construct");
6
6
  * Splits a valid SVG path into it's parts.
7
7
  * @param {string} path A valid SVG path
8
8
  * @link https://remotion.dev/docs/paths/get-parts
9
+ * @deprecated In favor of getSubpaths()
9
10
  */
10
11
  const getParts = (path) => {
11
12
  const parts = [];
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Splits a valid SVG path into it's parts.
3
+ * @param {string} path A valid SVG path
4
+ * @link https://remotion.dev/docs/paths/get-subpaths
5
+ */
6
+ export declare const getSubpaths: (path: string) => string[];
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSubpaths = void 0;
4
+ const construct_1 = require("./helpers/construct");
5
+ /**
6
+ * Splits a valid SVG path into it's parts.
7
+ * @param {string} path A valid SVG path
8
+ * @link https://remotion.dev/docs/paths/get-subpaths
9
+ */
10
+ const getSubpaths = (path) => {
11
+ const { segments } = (0, construct_1.construct)(path);
12
+ return segments
13
+ .map((seg) => {
14
+ return seg.map((s) => s.join(' '));
15
+ })
16
+ .map((_s) => _s.join(' '));
17
+ };
18
+ exports.getSubpaths = getSubpaths;
@@ -1,5 +1,7 @@
1
+ import type { Instruction } from './parse';
1
2
  import type { Point, Properties } from './types';
2
3
  export declare const construct: (string: string) => {
4
+ segments: Instruction[][];
3
5
  initial_point: Point | null;
4
6
  length: number;
5
7
  partial_lengths: number[];
@@ -1,113 +1,117 @@
1
1
  "use strict";
2
2
  // Copied from: https://github.com/rveciana/svg-path-properties
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
3
  Object.defineProperty(exports, "__esModule", { value: true });
7
4
  exports.construct = void 0;
8
5
  const arc_1 = require("./arc");
9
6
  const bezier_1 = require("./bezier");
10
7
  const linear_1 = require("./linear");
11
- const parse_1 = __importDefault(require("./parse"));
8
+ const parse_1 = require("./parse");
12
9
  const construct = (string) => {
13
10
  let length = 0;
14
11
  const partial_lengths = [];
15
12
  const functions = [];
16
13
  let initial_point = null;
17
- const parsed = (0, parse_1.default)(string);
14
+ const parsed = (0, parse_1.parsePath)(string);
18
15
  let cur = [0, 0];
19
16
  let prev_point = [0, 0];
20
17
  let curve;
21
18
  let ringStart = [0, 0];
19
+ const segments = [];
22
20
  for (let i = 0; i < parsed.length; i++) {
21
+ const instruction = parsed[i];
22
+ if (instruction[0].toLowerCase() !== 'm' && segments.length > 0) {
23
+ segments[segments.length - 1].push(instruction);
24
+ }
23
25
  // moveTo
24
- if (parsed[i][0] === 'M') {
25
- cur = [parsed[i][1], parsed[i][2]];
26
+ if (instruction[0] === 'M') {
27
+ cur = [instruction[1], instruction[2]];
26
28
  ringStart = [cur[0], cur[1]];
29
+ segments.push([instruction]);
27
30
  functions.push(null);
28
31
  if (i === 0) {
29
- initial_point = { x: parsed[i][1], y: parsed[i][2] };
32
+ initial_point = { x: instruction[1], y: instruction[2] };
30
33
  }
31
34
  }
32
- else if (parsed[i][0] === 'm') {
33
- cur = [parsed[i][1] + cur[0], parsed[i][2] + cur[1]];
35
+ else if (instruction[0] === 'm') {
36
+ cur = [instruction[1] + cur[0], instruction[2] + cur[1]];
34
37
  ringStart = [cur[0], cur[1]];
38
+ segments.push([['M', cur[0], cur[1]]]);
35
39
  functions.push(null);
36
40
  // lineTo
37
41
  }
38
- else if (parsed[i][0] === 'L') {
39
- length += Math.sqrt((cur[0] - parsed[i][1]) ** 2 + (cur[1] - parsed[i][2]) ** 2);
40
- functions.push((0, linear_1.makeLinearPosition)(cur[0], parsed[i][1], cur[1], parsed[i][2]));
41
- cur = [parsed[i][1], parsed[i][2]];
42
+ else if (instruction[0] === 'L') {
43
+ length += Math.sqrt((cur[0] - instruction[1]) ** 2 + (cur[1] - instruction[2]) ** 2);
44
+ functions.push((0, linear_1.makeLinearPosition)(cur[0], instruction[1], cur[1], instruction[2]));
45
+ cur = [instruction[1], instruction[2]];
42
46
  }
43
- else if (parsed[i][0] === 'l') {
44
- length += Math.sqrt(parsed[i][1] ** 2 + parsed[i][2] ** 2);
45
- functions.push((0, linear_1.makeLinearPosition)(cur[0], parsed[i][1] + cur[0], cur[1], parsed[i][2] + cur[1]));
46
- cur = [parsed[i][1] + cur[0], parsed[i][2] + cur[1]];
47
+ else if (instruction[0] === 'l') {
48
+ length += Math.sqrt(instruction[1] ** 2 + instruction[2] ** 2);
49
+ functions.push((0, linear_1.makeLinearPosition)(cur[0], instruction[1] + cur[0], cur[1], instruction[2] + cur[1]));
50
+ cur = [instruction[1] + cur[0], instruction[2] + cur[1]];
47
51
  }
48
- else if (parsed[i][0] === 'H') {
49
- length += Math.abs(cur[0] - parsed[i][1]);
50
- functions.push((0, linear_1.makeLinearPosition)(cur[0], parsed[i][1], cur[1], cur[1]));
51
- cur[0] = parsed[i][1];
52
+ else if (instruction[0] === 'H') {
53
+ length += Math.abs(cur[0] - instruction[1]);
54
+ functions.push((0, linear_1.makeLinearPosition)(cur[0], instruction[1], cur[1], cur[1]));
55
+ cur[0] = instruction[1];
52
56
  }
53
- else if (parsed[i][0] === 'h') {
54
- length += Math.abs(parsed[i][1]);
55
- functions.push((0, linear_1.makeLinearPosition)(cur[0], cur[0] + parsed[i][1], cur[1], cur[1]));
56
- cur[0] = parsed[i][1] + cur[0];
57
+ else if (instruction[0] === 'h') {
58
+ length += Math.abs(instruction[1]);
59
+ functions.push((0, linear_1.makeLinearPosition)(cur[0], cur[0] + instruction[1], cur[1], cur[1]));
60
+ cur[0] = instruction[1] + cur[0];
57
61
  }
58
- else if (parsed[i][0] === 'V') {
59
- length += Math.abs(cur[1] - parsed[i][1]);
60
- functions.push((0, linear_1.makeLinearPosition)(cur[0], cur[0], cur[1], parsed[i][1]));
61
- cur[1] = parsed[i][1];
62
+ else if (instruction[0] === 'V') {
63
+ length += Math.abs(cur[1] - instruction[1]);
64
+ functions.push((0, linear_1.makeLinearPosition)(cur[0], cur[0], cur[1], instruction[1]));
65
+ cur[1] = instruction[1];
62
66
  }
63
- else if (parsed[i][0] === 'v') {
64
- length += Math.abs(parsed[i][1]);
65
- functions.push((0, linear_1.makeLinearPosition)(cur[0], cur[0], cur[1], cur[1] + parsed[i][1]));
66
- cur[1] = parsed[i][1] + cur[1];
67
+ else if (instruction[0] === 'v') {
68
+ length += Math.abs(instruction[1]);
69
+ functions.push((0, linear_1.makeLinearPosition)(cur[0], cur[0], cur[1], cur[1] + instruction[1]));
70
+ cur[1] = instruction[1] + cur[1];
67
71
  // Close path
68
72
  }
69
- else if (parsed[i][0] === 'z' || parsed[i][0] === 'Z') {
73
+ else if (instruction[0] === 'z' || instruction[0] === 'Z') {
70
74
  length += Math.sqrt((ringStart[0] - cur[0]) ** 2 + (ringStart[1] - cur[1]) ** 2);
71
75
  functions.push((0, linear_1.makeLinearPosition)(cur[0], ringStart[0], cur[1], ringStart[1]));
72
76
  cur = [ringStart[0], ringStart[1]];
73
77
  // Cubic Bezier curves
74
78
  }
75
- else if (parsed[i][0] === 'C') {
79
+ else if (instruction[0] === 'C') {
76
80
  curve = (0, bezier_1.makeBezier)({
77
81
  ax: cur[0],
78
82
  ay: cur[1],
79
- bx: parsed[i][1],
80
- by: parsed[i][2],
81
- cx: parsed[i][3],
82
- cy: parsed[i][4],
83
- dx: parsed[i][5],
84
- dy: parsed[i][6],
83
+ bx: instruction[1],
84
+ by: instruction[2],
85
+ cx: instruction[3],
86
+ cy: instruction[4],
87
+ dx: instruction[5],
88
+ dy: instruction[6],
85
89
  });
86
90
  length += curve.getTotalLength();
87
- cur = [parsed[i][5], parsed[i][6]];
91
+ cur = [instruction[5], instruction[6]];
88
92
  functions.push(curve);
89
93
  }
90
- else if (parsed[i][0] === 'c') {
94
+ else if (instruction[0] === 'c') {
91
95
  curve = (0, bezier_1.makeBezier)({
92
96
  ax: cur[0],
93
97
  ay: cur[1],
94
- bx: cur[0] + parsed[i][1],
95
- by: cur[1] + parsed[i][2],
96
- cx: cur[0] + parsed[i][3],
97
- cy: cur[1] + parsed[i][4],
98
- dx: cur[0] + parsed[i][5],
99
- dy: cur[1] + parsed[i][6],
98
+ bx: cur[0] + instruction[1],
99
+ by: cur[1] + instruction[2],
100
+ cx: cur[0] + instruction[3],
101
+ cy: cur[1] + instruction[4],
102
+ dx: cur[0] + instruction[5],
103
+ dy: cur[1] + instruction[6],
100
104
  });
101
105
  if (curve.getTotalLength() > 0) {
102
106
  length += curve.getTotalLength();
103
107
  functions.push(curve);
104
- cur = [parsed[i][5] + cur[0], parsed[i][6] + cur[1]];
108
+ cur = [instruction[5] + cur[0], instruction[6] + cur[1]];
105
109
  }
106
110
  else {
107
111
  functions.push((0, linear_1.makeLinearPosition)(cur[0], cur[0], cur[1], cur[1]));
108
112
  }
109
113
  }
110
- else if (parsed[i][0] === 'S') {
114
+ else if (instruction[0] === 'S') {
111
115
  if (i > 0 && ['C', 'c', 'S', 's'].indexOf(parsed[i - 1][0]) > -1) {
112
116
  if (curve) {
113
117
  const c = curve.getC();
@@ -116,10 +120,10 @@ const construct = (string) => {
116
120
  ay: cur[1],
117
121
  bx: 2 * cur[0] - c.x,
118
122
  by: 2 * cur[1] - c.y,
119
- cx: parsed[i][1],
120
- cy: parsed[i][2],
121
- dx: parsed[i][3],
122
- dy: parsed[i][4],
123
+ cx: instruction[1],
124
+ cy: instruction[2],
125
+ dx: instruction[3],
126
+ dy: instruction[4],
123
127
  });
124
128
  }
125
129
  }
@@ -129,19 +133,19 @@ const construct = (string) => {
129
133
  ay: cur[1],
130
134
  bx: cur[0],
131
135
  by: cur[1],
132
- cx: parsed[i][1],
133
- cy: parsed[i][2],
134
- dx: parsed[i][3],
135
- dy: parsed[i][4],
136
+ cx: instruction[1],
137
+ cy: instruction[2],
138
+ dx: instruction[3],
139
+ dy: instruction[4],
136
140
  });
137
141
  }
138
142
  if (curve) {
139
143
  length += curve.getTotalLength();
140
- cur = [parsed[i][3], parsed[i][4]];
144
+ cur = [instruction[3], instruction[4]];
141
145
  functions.push(curve);
142
146
  }
143
147
  }
144
- else if (parsed[i][0] === 's') {
148
+ else if (instruction[0] === 's') {
145
149
  // 240 225
146
150
  if (i > 0 && ['C', 'c', 'S', 's'].indexOf(parsed[i - 1][0]) > -1) {
147
151
  if (curve) {
@@ -152,10 +156,10 @@ const construct = (string) => {
152
156
  ay: cur[1],
153
157
  bx: cur[0] + d.x - c.x,
154
158
  by: cur[1] + d.y - c.y,
155
- cx: cur[0] + parsed[i][1],
156
- cy: cur[1] + parsed[i][2],
157
- dx: cur[0] + parsed[i][3],
158
- dy: cur[1] + parsed[i][4],
159
+ cx: cur[0] + instruction[1],
160
+ cy: cur[1] + instruction[2],
161
+ dx: cur[0] + instruction[3],
162
+ dy: cur[1] + instruction[4],
159
163
  });
160
164
  }
161
165
  }
@@ -165,22 +169,22 @@ const construct = (string) => {
165
169
  ay: cur[1],
166
170
  bx: cur[0],
167
171
  by: cur[1],
168
- cx: cur[0] + parsed[i][1],
169
- cy: cur[1] + parsed[i][2],
170
- dx: cur[0] + parsed[i][3],
171
- dy: cur[1] + parsed[i][4],
172
+ cx: cur[0] + instruction[1],
173
+ cy: cur[1] + instruction[2],
174
+ dx: cur[0] + instruction[3],
175
+ dy: cur[1] + instruction[4],
172
176
  });
173
177
  }
174
178
  if (curve) {
175
179
  length += curve.getTotalLength();
176
- cur = [parsed[i][3] + cur[0], parsed[i][4] + cur[1]];
180
+ cur = [instruction[3] + cur[0], instruction[4] + cur[1]];
177
181
  functions.push(curve);
178
182
  }
179
183
  }
180
184
  // Quadratic Bezier curves
181
- else if (parsed[i][0] === 'Q') {
182
- if (cur[0] === parsed[i][1] && cur[1] === parsed[i][2]) {
183
- const linearCurve = (0, linear_1.makeLinearPosition)(parsed[i][1], parsed[i][3], parsed[i][2], parsed[i][4]);
185
+ else if (instruction[0] === 'Q') {
186
+ if (cur[0] === instruction[1] && cur[1] === instruction[2]) {
187
+ const linearCurve = (0, linear_1.makeLinearPosition)(instruction[1], instruction[3], instruction[2], instruction[4]);
184
188
  length += linearCurve.getTotalLength();
185
189
  functions.push(linearCurve);
186
190
  }
@@ -188,22 +192,22 @@ const construct = (string) => {
188
192
  curve = (0, bezier_1.makeBezier)({
189
193
  ax: cur[0],
190
194
  ay: cur[1],
191
- bx: parsed[i][1],
192
- by: parsed[i][2],
193
- cx: parsed[i][3],
194
- cy: parsed[i][4],
195
+ bx: instruction[1],
196
+ by: instruction[2],
197
+ cx: instruction[3],
198
+ cy: instruction[4],
195
199
  dx: null,
196
200
  dy: null,
197
201
  });
198
202
  length += curve.getTotalLength();
199
203
  functions.push(curve);
200
204
  }
201
- cur = [parsed[i][3], parsed[i][4]];
202
- prev_point = [parsed[i][1], parsed[i][2]];
205
+ cur = [instruction[3], instruction[4]];
206
+ prev_point = [instruction[1], instruction[2]];
203
207
  }
204
- else if (parsed[i][0] === 'q') {
205
- if (parsed[i][1] === 0 && parsed[i][2] === 0) {
206
- const linearCurve = (0, linear_1.makeLinearPosition)(cur[0] + parsed[i][1], cur[0] + parsed[i][3], cur[1] + parsed[i][2], cur[1] + parsed[i][4]);
208
+ else if (instruction[0] === 'q') {
209
+ if (instruction[1] === 0 && instruction[2] === 0) {
210
+ const linearCurve = (0, linear_1.makeLinearPosition)(cur[0] + instruction[1], cur[0] + instruction[3], cur[1] + instruction[2], cur[1] + instruction[4]);
207
211
  length += linearCurve.getTotalLength();
208
212
  functions.push(linearCurve);
209
213
  }
@@ -211,28 +215,28 @@ const construct = (string) => {
211
215
  curve = (0, bezier_1.makeBezier)({
212
216
  ax: cur[0],
213
217
  ay: cur[1],
214
- bx: cur[0] + parsed[i][1],
215
- by: cur[1] + parsed[i][2],
216
- cx: cur[0] + parsed[i][3],
217
- cy: cur[1] + parsed[i][4],
218
+ bx: cur[0] + instruction[1],
219
+ by: cur[1] + instruction[2],
220
+ cx: cur[0] + instruction[3],
221
+ cy: cur[1] + instruction[4],
218
222
  dx: null,
219
223
  dy: null,
220
224
  });
221
225
  length += curve.getTotalLength();
222
226
  functions.push(curve);
223
227
  }
224
- prev_point = [cur[0] + parsed[i][1], cur[1] + parsed[i][2]];
225
- cur = [parsed[i][3] + cur[0], parsed[i][4] + cur[1]];
228
+ prev_point = [cur[0] + instruction[1], cur[1] + instruction[2]];
229
+ cur = [instruction[3] + cur[0], instruction[4] + cur[1]];
226
230
  }
227
- else if (parsed[i][0] === 'T') {
231
+ else if (instruction[0] === 'T') {
228
232
  if (i > 0 && ['Q', 'q', 'T', 't'].indexOf(parsed[i - 1][0]) > -1) {
229
233
  curve = (0, bezier_1.makeBezier)({
230
234
  ax: cur[0],
231
235
  ay: cur[1],
232
236
  bx: 2 * cur[0] - prev_point[0],
233
237
  by: 2 * cur[1] - prev_point[1],
234
- cx: parsed[i][1],
235
- cy: parsed[i][2],
238
+ cx: instruction[1],
239
+ cy: instruction[2],
236
240
  dx: null,
237
241
  dy: null,
238
242
  });
@@ -240,22 +244,22 @@ const construct = (string) => {
240
244
  length += curve.getTotalLength();
241
245
  }
242
246
  else {
243
- const linearCurve = (0, linear_1.makeLinearPosition)(cur[0], parsed[i][1], cur[1], parsed[i][2]);
247
+ const linearCurve = (0, linear_1.makeLinearPosition)(cur[0], instruction[1], cur[1], instruction[2]);
244
248
  functions.push(linearCurve);
245
249
  length += linearCurve.getTotalLength();
246
250
  }
247
251
  prev_point = [2 * cur[0] - prev_point[0], 2 * cur[1] - prev_point[1]];
248
- cur = [parsed[i][1], parsed[i][2]];
252
+ cur = [instruction[1], instruction[2]];
249
253
  }
250
- else if (parsed[i][0] === 't') {
254
+ else if (instruction[0] === 't') {
251
255
  if (i > 0 && ['Q', 'q', 'T', 't'].indexOf(parsed[i - 1][0]) > -1) {
252
256
  curve = (0, bezier_1.makeBezier)({
253
257
  ax: cur[0],
254
258
  ay: cur[1],
255
259
  bx: 2 * cur[0] - prev_point[0],
256
260
  by: 2 * cur[1] - prev_point[1],
257
- cx: cur[0] + parsed[i][1],
258
- cy: cur[1] + parsed[i][2],
261
+ cx: cur[0] + instruction[1],
262
+ cy: cur[1] + instruction[2],
259
263
  dx: null,
260
264
  dy: null,
261
265
  });
@@ -263,47 +267,53 @@ const construct = (string) => {
263
267
  functions.push(curve);
264
268
  }
265
269
  else {
266
- const linearCurve = (0, linear_1.makeLinearPosition)(cur[0], cur[0] + parsed[i][1], cur[1], cur[1] + parsed[i][2]);
270
+ const linearCurve = (0, linear_1.makeLinearPosition)(cur[0], cur[0] + instruction[1], cur[1], cur[1] + instruction[2]);
267
271
  length += linearCurve.getTotalLength();
268
272
  functions.push(linearCurve);
269
273
  }
270
274
  prev_point = [2 * cur[0] - prev_point[0], 2 * cur[1] - prev_point[1]];
271
- cur = [parsed[i][1] + cur[0], parsed[i][2] + cur[1]];
275
+ cur = [instruction[1] + cur[0], instruction[2] + cur[1]];
272
276
  }
273
- else if (parsed[i][0] === 'A') {
277
+ else if (instruction[0] === 'A') {
274
278
  const arcCurve = (0, arc_1.makeArc)({
275
279
  x0: cur[0],
276
280
  y0: cur[1],
277
- rx: parsed[i][1],
278
- ry: parsed[i][2],
279
- xAxisRotate: parsed[i][3],
280
- LargeArcFlag: parsed[i][4] === 1,
281
- SweepFlag: parsed[i][5] === 1,
282
- x1: parsed[i][6],
283
- y1: parsed[i][7],
281
+ rx: instruction[1],
282
+ ry: instruction[2],
283
+ xAxisRotate: instruction[3],
284
+ LargeArcFlag: instruction[4] === 1,
285
+ SweepFlag: instruction[5] === 1,
286
+ x1: instruction[6],
287
+ y1: instruction[7],
284
288
  });
285
289
  length += arcCurve.getTotalLength();
286
- cur = [parsed[i][6], parsed[i][7]];
290
+ cur = [instruction[6], instruction[7]];
287
291
  functions.push(arcCurve);
288
292
  }
289
- else if (parsed[i][0] === 'a') {
293
+ else if (instruction[0] === 'a') {
290
294
  const arcCurve = (0, arc_1.makeArc)({
291
295
  x0: cur[0],
292
296
  y0: cur[1],
293
- rx: parsed[i][1],
294
- ry: parsed[i][2],
295
- xAxisRotate: parsed[i][3],
296
- LargeArcFlag: parsed[i][4] === 1,
297
- SweepFlag: parsed[i][5] === 1,
298
- x1: cur[0] + parsed[i][6],
299
- y1: cur[1] + parsed[i][7],
297
+ rx: instruction[1],
298
+ ry: instruction[2],
299
+ xAxisRotate: instruction[3],
300
+ LargeArcFlag: instruction[4] === 1,
301
+ SweepFlag: instruction[5] === 1,
302
+ x1: cur[0] + instruction[6],
303
+ y1: cur[1] + instruction[7],
300
304
  });
301
305
  length += arcCurve.getTotalLength();
302
- cur = [cur[0] + parsed[i][6], cur[1] + parsed[i][7]];
306
+ cur = [cur[0] + instruction[6], cur[1] + instruction[7]];
303
307
  functions.push(arcCurve);
304
308
  }
305
309
  partial_lengths.push(length);
306
310
  }
307
- return { initial_point, length, partial_lengths, functions };
311
+ return {
312
+ segments,
313
+ initial_point,
314
+ length,
315
+ partial_lengths,
316
+ functions,
317
+ };
308
318
  };
309
319
  exports.construct = construct;
@@ -1,2 +1,2 @@
1
- declare const _default: (path: string) => [string, ...number[]][];
2
- export default _default;
1
+ export declare type Instruction = [string, ...number[]];
2
+ export declare const parsePath: (path: string) => Instruction[];
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  // Copied from: https://github.com/rveciana/svg-path-properties
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.parsePath = void 0;
4
5
  const length = {
5
6
  a: 7,
6
7
  c: 6,
@@ -15,7 +16,7 @@ const length = {
15
16
  };
16
17
  const segmentRegExp = /([astvzqmhlc])([^astvzqmhlc]*)/gi;
17
18
  const numberRegExp = /-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi;
18
- exports.default = (path) => {
19
+ const parsePath = (path) => {
19
20
  const segments = (path && path.length > 0 ? path : 'M0,0').match(segmentRegExp);
20
21
  if (!segments) {
21
22
  throw new Error(`No path elements found in string ${path}`);
@@ -43,6 +44,7 @@ exports.default = (path) => {
43
44
  return segmentsArray;
44
45
  }, []);
45
46
  };
47
+ exports.parsePath = parsePath;
46
48
  const parseValues = (args) => {
47
49
  const numbers = args.match(numberRegExp);
48
50
  return numbers ? numbers.map(Number) : [];
package/dist/index.d.ts CHANGED
@@ -3,6 +3,7 @@ export { extendViewBox } from './extend-viewbox';
3
3
  export { getLength } from './get-length';
4
4
  export { getParts } from './get-parts';
5
5
  export { getPointAtLength } from './get-point-at-length';
6
+ export { getSubpaths } from './get-subpaths';
6
7
  export { getTangentAtLength } from './get-tangent-at-length';
7
8
  export { Part } from './helpers/types';
8
9
  export { interpolatePath } from './interpolate-path';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.reversePath = exports.normalizePath = exports.interpolatePath = exports.getTangentAtLength = exports.getPointAtLength = exports.getParts = exports.getLength = exports.extendViewBox = exports.evolvePath = void 0;
3
+ exports.reversePath = exports.normalizePath = exports.interpolatePath = exports.getTangentAtLength = exports.getSubpaths = exports.getPointAtLength = exports.getParts = exports.getLength = exports.extendViewBox = exports.evolvePath = void 0;
4
4
  var evolve_path_1 = require("./evolve-path");
5
5
  Object.defineProperty(exports, "evolvePath", { enumerable: true, get: function () { return evolve_path_1.evolvePath; } });
6
6
  var extend_viewbox_1 = require("./extend-viewbox");
@@ -11,6 +11,8 @@ var get_parts_1 = require("./get-parts");
11
11
  Object.defineProperty(exports, "getParts", { enumerable: true, get: function () { return get_parts_1.getParts; } });
12
12
  var get_point_at_length_1 = require("./get-point-at-length");
13
13
  Object.defineProperty(exports, "getPointAtLength", { enumerable: true, get: function () { return get_point_at_length_1.getPointAtLength; } });
14
+ var get_subpaths_1 = require("./get-subpaths");
15
+ Object.defineProperty(exports, "getSubpaths", { enumerable: true, get: function () { return get_subpaths_1.getSubpaths; } });
14
16
  var get_tangent_at_length_1 = require("./get-tangent-at-length");
15
17
  Object.defineProperty(exports, "getTangentAtLength", { enumerable: true, get: function () { return get_tangent_at_length_1.getTangentAtLength; } });
16
18
  var interpolate_path_1 = require("./interpolate-path");
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Splits a valid SVG path into it's parts.
3
+ * @param {string} path A valid SVG path
4
+ * @link https://remotion.dev/docs/paths/split-parts
5
+ */
6
+ export declare const splitParts: (path: string) => string[];
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.splitParts = void 0;
4
+ const construct_1 = require("./helpers/construct");
5
+ /**
6
+ * Splits a valid SVG path into it's parts.
7
+ * @param {string} path A valid SVG path
8
+ * @link https://remotion.dev/docs/paths/split-parts
9
+ */
10
+ const splitParts = (path) => {
11
+ const { segments } = (0, construct_1.construct)(path);
12
+ return segments
13
+ .map((seg) => {
14
+ return seg.map((s) => s.join(' '));
15
+ })
16
+ .map((_s) => _s.join(' '));
17
+ };
18
+ exports.splitParts = splitParts;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/paths",
3
- "version": "3.3.5",
3
+ "version": "3.3.7",
4
4
  "description": "Utility functions for SVG paths",
5
5
  "main": "dist/index.js",
6
6
  "sideEffects": false,
@@ -35,5 +35,5 @@
35
35
  "publishConfig": {
36
36
  "access": "public"
37
37
  },
38
- "gitHead": "0a2d5f0ff4f2abf11b9a5a6d41c1ce8df67df63f"
38
+ "gitHead": "5a9310dd3db431e7a3e2eb2e2b3c508bbc7b258a"
39
39
  }