@allyhub/sdk 0.0.0-stage → 0.1.0-alpha.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 (57) hide show
  1. package/LICENSE +241 -0
  2. package/NOTICE +81 -0
  3. package/README.md +16 -2
  4. package/client.d.ts +86 -0
  5. package/dist/anim.d.ts +41 -0
  6. package/dist/anim.d.ts.map +1 -0
  7. package/dist/anim.js +75 -0
  8. package/dist/anim.js.map +1 -0
  9. package/dist/define.d.ts +75 -0
  10. package/dist/define.d.ts.map +1 -0
  11. package/dist/define.js +95 -0
  12. package/dist/define.js.map +1 -0
  13. package/dist/dom.d.ts +210 -0
  14. package/dist/dom.d.ts.map +1 -0
  15. package/dist/dom.js +457 -0
  16. package/dist/dom.js.map +1 -0
  17. package/dist/fit.d.ts +24 -0
  18. package/dist/fit.d.ts.map +1 -0
  19. package/dist/fit.js +60 -0
  20. package/dist/fit.js.map +1 -0
  21. package/dist/index.d.ts +14 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +11 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/media.d.ts +9 -0
  26. package/dist/media.d.ts.map +1 -0
  27. package/dist/media.js +27 -0
  28. package/dist/media.js.map +1 -0
  29. package/dist/messages.d.ts +39 -0
  30. package/dist/messages.d.ts.map +1 -0
  31. package/dist/messages.js +2 -0
  32. package/dist/messages.js.map +1 -0
  33. package/dist/noise.d.ts +15 -0
  34. package/dist/noise.d.ts.map +1 -0
  35. package/dist/noise.js +233 -0
  36. package/dist/noise.js.map +1 -0
  37. package/dist/parts.d.ts +140 -0
  38. package/dist/parts.d.ts.map +1 -0
  39. package/dist/parts.js +414 -0
  40. package/dist/parts.js.map +1 -0
  41. package/dist/paths.d.ts +85 -0
  42. package/dist/paths.d.ts.map +1 -0
  43. package/dist/paths.js +720 -0
  44. package/dist/paths.js.map +1 -0
  45. package/dist/piece.d.ts +64 -0
  46. package/dist/piece.d.ts.map +1 -0
  47. package/dist/piece.js +38 -0
  48. package/dist/piece.js.map +1 -0
  49. package/dist/props.d.ts +81 -0
  50. package/dist/props.d.ts.map +1 -0
  51. package/dist/props.js +35 -0
  52. package/dist/props.js.map +1 -0
  53. package/dist/text.d.ts +13 -0
  54. package/dist/text.d.ts.map +1 -0
  55. package/dist/text.js +38 -0
  56. package/dist/text.js.map +1 -0
  57. package/package.json +61 -3
package/dist/parts.js ADDED
@@ -0,0 +1,414 @@
1
+ import { BACKDROP_BLUR_MAX, EASES, LAYER_BRAND, MATTE_FEATHER_MAX, MATTE_SHRINK_MAX, MEDIA_BRAND, ORIENT_KEYS, PART_BRAND, SPEECH_BRAND, isPerOrient, notJson, partAnchorsProblem, transitionProblem, } from "@allyhub/engine/stage";
2
+ /** A part of a video, or a page of a paged output. */
3
+ export function part(opts) {
4
+ const { key, layers, ...rest } = opts;
5
+ if (typeof key !== "string" || key === "") {
6
+ throw new Error("part: every part needs a key");
7
+ }
8
+ for (const side of ["before", "after"]) {
9
+ const x = opts.overlap?.[side];
10
+ if (x !== undefined && (!Number.isFinite(x) || x < 0 || x > 10)) {
11
+ throw new Error(`part ${key}: overlap.${side} is seconds from 0 to 10, not ${String(x)}`);
12
+ }
13
+ }
14
+ for (const [i, s] of (opts.sounds ?? []).entries()) {
15
+ const ok = typeof s === "object" &&
16
+ (typeof s.at === "string" || typeof s.at === "number") &&
17
+ (typeof s.sound === "string" ||
18
+ (typeof s.sound === "object" && "path" in s.sound));
19
+ if (!ok) {
20
+ throw new Error(`part ${key}: sounds[${String(i)}] is { at, sound, gainDb? }: at a word reference or seconds, sound a name or an audio file`);
21
+ }
22
+ if (s.gainDb !== undefined &&
23
+ (!Number.isFinite(s.gainDb) || s.gainDb < -60 || s.gainDb > 24)) {
24
+ throw new Error(`part ${key}: sounds[${String(i)}].gainDb is dB from -60 to 24, not ${String(s.gainDb)}`);
25
+ }
26
+ }
27
+ if (opts.anchors !== undefined) {
28
+ const bad = partAnchorsProblem(opts.anchors);
29
+ if (bad !== undefined) {
30
+ throw new Error(`part ${key}: anchors ${bad}`);
31
+ }
32
+ }
33
+ if (opts.transition !== undefined) {
34
+ const bad = transitionProblem(opts.transition);
35
+ if (bad !== undefined) {
36
+ throw new Error(`part ${key}: transition ${bad}`);
37
+ }
38
+ }
39
+ return { [PART_BRAND]: true, key, layers: layers ?? [], ...rest };
40
+ }
41
+ function makeTake(spec) {
42
+ const base = { [SPEECH_BRAND]: true, ...spec };
43
+ return {
44
+ ...base,
45
+ range(from, to) {
46
+ const { line: _line, from: _f, to: _t, ...rest } = spec;
47
+ return makeTake({ ...rest, from, ...(to === undefined ? {} : { to }) });
48
+ },
49
+ saying(text) {
50
+ const { from: _from, to: _to, ...rest } = spec;
51
+ return makeTake({ ...rest, line: text });
52
+ },
53
+ edits(path) {
54
+ if (typeof path !== "string" || !/\.json$/i.test(path)) {
55
+ throw new Error(`take(…).edits(path): a JSON file relative to the piece, such as "./edits/host.json" (not ${JSON.stringify(path)})`);
56
+ }
57
+ return makeTake({ ...spec, editsFile: path });
58
+ },
59
+ denoise(db = 12) {
60
+ if (!Number.isFinite(db) || db <= 0 || db > 97) {
61
+ throw new Error(`take(…).denoise(db): the noise reduction in dB, over 0 and up to 97 (not ${String(db)})`);
62
+ }
63
+ return makeTake({ ...spec, denoiseDb: db });
64
+ },
65
+ roomTone(tone) {
66
+ if (tone === false)
67
+ return makeTake({ ...spec, room: false });
68
+ const what = "take(…).roomTone(tone): false, or { from, to, match, gainDb, limitDb, fade }";
69
+ if (typeof tone !== "object" || Array.isArray(tone)) {
70
+ throw new Error(`${what} (not ${JSON.stringify(tone)})`);
71
+ }
72
+ const { from, to, match, gainDb, limitDb, fade } = tone;
73
+ const extra = Object.keys(tone).filter((k) => !["from", "to", "match", "gainDb", "limitDb", "fade"].includes(k));
74
+ if (extra.length > 0) {
75
+ throw new Error(`${what}: it has no ${extra.join(", ")}`);
76
+ }
77
+ if (from !== undefined || to !== undefined) {
78
+ if (from === undefined ||
79
+ to === undefined ||
80
+ !Number.isFinite(from) ||
81
+ !Number.isFinite(to) ||
82
+ from < 0 ||
83
+ to - from < 0.05) {
84
+ throw new Error(`${what}: from and to are seconds of the file, both given, at least 0.05 s apart`);
85
+ }
86
+ }
87
+ if (match !== undefined && typeof match !== "boolean") {
88
+ throw new Error(`${what}: match is true or false`);
89
+ }
90
+ if (gainDb !== undefined &&
91
+ (!Number.isFinite(gainDb) || gainDb < -60 || gainDb > 24)) {
92
+ throw new Error(`${what}: gainDb is dB from -60 to 24, not ${String(gainDb)}`);
93
+ }
94
+ if (limitDb !== undefined &&
95
+ (!Number.isFinite(limitDb) || limitDb < 0 || limitDb > 60)) {
96
+ throw new Error(`${what}: limitDb is dB from 0 to 60, not ${String(limitDb)}`);
97
+ }
98
+ if (fade !== undefined &&
99
+ (!Number.isFinite(fade) || fade < 0 || fade > 1)) {
100
+ throw new Error(`${what}: fade is seconds from 0 to 1, not ${String(fade)}`);
101
+ }
102
+ return makeTake({
103
+ ...spec,
104
+ room: {
105
+ ...(from === undefined || to === undefined ? {} : { from, to }),
106
+ ...(match === undefined ? {} : { match }),
107
+ ...(gainDb === undefined ? {} : { gainDb }),
108
+ ...(limitDb === undefined ? {} : { limitDb }),
109
+ ...(fade === undefined ? {} : { fade }),
110
+ },
111
+ });
112
+ },
113
+ };
114
+ }
115
+ /**
116
+ * Speech from a recording, audio or video, with its word times beside it
117
+ * (`<name>.words.json`: allyhub transcribe <file> makes it). An import, or a
118
+ * path relative to the piece's file.
119
+ */
120
+ export function take(file) {
121
+ return makeTake({ kind: "take", file });
122
+ }
123
+ /**
124
+ * Text to speech: `allyhub voice generate` makes the file
125
+ * (assets/media/gen/say/<hash>) with its words; the check reports a say without
126
+ * one (AK-T002). Text from s(key) is read aloud as the message's `speak`.
127
+ */
128
+ export function say(text, opts = {}) {
129
+ const params = opts.params;
130
+ if (params !== undefined) {
131
+ if (typeof params !== "object" ||
132
+ params === null ||
133
+ Array.isArray(params)) {
134
+ throw new Error("say() params is not an object: give the voice tool's extra input as { name: value }.");
135
+ }
136
+ const bad = notJson(params, "params");
137
+ if (bad !== undefined) {
138
+ throw new Error(`say() ${bad} is not plain JSON: use strings, finite numbers, booleans, null, arrays and plain objects.`);
139
+ }
140
+ for (const [key, instead] of [
141
+ ["text", "say()'s text"],
142
+ ["voiceId", "the voice option"],
143
+ ]) {
144
+ if (key in params) {
145
+ throw new Error(`say() params.${key} is not allowed: give it as ${instead}.`);
146
+ }
147
+ }
148
+ }
149
+ return {
150
+ [SPEECH_BRAND]: true,
151
+ kind: "say",
152
+ text,
153
+ ...(opts.voice === undefined ? {} : { voice: opts.voice }),
154
+ ...(opts.tool === undefined ? {} : { tool: opts.tool }),
155
+ ...(params && Object.keys(params).length > 0
156
+ ? { params: structuredClone(params) }
157
+ : {}),
158
+ };
159
+ }
160
+ const isMediaRef = (v) => typeof v === "string" ||
161
+ (typeof v === "object" && v !== null && (MEDIA_BRAND in v || "sha256" in v));
162
+ const isFraction = (v) => typeof v === "number" && Number.isFinite(v) && v >= 0 && v <= 1;
163
+ /** A point as fractions (0–1), or a thrown error naming the option. */
164
+ function checkPoint(name, p) {
165
+ if (p === undefined)
166
+ return;
167
+ const ok = typeof p === "object" &&
168
+ p !== null &&
169
+ isFraction(p.x) &&
170
+ isFraction(p.y);
171
+ if (!ok) {
172
+ throw new Error(`footage() ${name} ${JSON.stringify(p)} is not a point { x, y } with each from 0 to 1.`);
173
+ }
174
+ }
175
+ /** Seconds over 0 and up to 5, or a thrown error naming the option. */
176
+ function checkSeconds(name, v) {
177
+ if (v === undefined)
178
+ return;
179
+ if (typeof v !== "number" || !(v > 0) || v > 30) {
180
+ throw new Error(`footage() ${name} ${JSON.stringify(v)} is not seconds over 0 and up to 30.`);
181
+ }
182
+ }
183
+ function checkEase(name, v) {
184
+ if (v === undefined || EASES.includes(v))
185
+ return;
186
+ throw new Error(`footage() ${name} ${JSON.stringify(v)} is not one of ${EASES.map((e) => `"${e}"`).join(", ")}.`);
187
+ }
188
+ function checkReframe(r) {
189
+ if (r === undefined || r === "face" || r === "center")
190
+ return;
191
+ if (typeof r === "object" && r !== null && "face" in r) {
192
+ const o = r;
193
+ if (o.face !== true) {
194
+ throw new Error(`footage() reframe ${JSON.stringify(r)}: face is true, as in { face: true, faceY: 0.4 }.`);
195
+ }
196
+ if (o.faceY !== undefined && !isFraction(o.faceY)) {
197
+ throw new Error(`footage() reframe faceY ${JSON.stringify(o.faceY)} is not from 0 (the crop's top) to 1 (its bottom); 0.4 is a little above the middle.`);
198
+ }
199
+ return;
200
+ }
201
+ if (typeof r === "object" && r !== null && "x" in r) {
202
+ checkPoint("reframe", r);
203
+ return;
204
+ }
205
+ throw new Error(`footage() reframe ${JSON.stringify(r)} is not "face", { face: true, faceY }, "center" or a point { x, y }.`);
206
+ }
207
+ /**
208
+ * A layer's `background`: its numbers in range, and a colour or an image,
209
+ * not both (a colour leaves nothing to blur, dim or desaturate).
210
+ */
211
+ function checkBackground(b) {
212
+ if (b === undefined)
213
+ return;
214
+ if (typeof b !== "object" || b === null || Array.isArray(b)) {
215
+ throw new Error(`footage() background ${JSON.stringify(b)} is not an object such as { blur: 24 }, { dim: 0.4, desaturate: 1 }, { color: "#101418" } or { image: "./backdrop.jpg" }.`);
216
+ }
217
+ const o = b;
218
+ const known = [
219
+ "blur",
220
+ "dim",
221
+ "desaturate",
222
+ "color",
223
+ "image",
224
+ "feather",
225
+ "shrink",
226
+ ];
227
+ const other = Object.keys(o).find((k) => !known.includes(k));
228
+ if (other !== undefined) {
229
+ throw new Error(`footage() background has no option "${other}": it takes ${known.join(", ")}.`);
230
+ }
231
+ const num = (v) => typeof v === "number" && Number.isFinite(v);
232
+ if (o["blur"] !== undefined &&
233
+ !(num(o["blur"]) && o["blur"] >= 0 && o["blur"] <= BACKDROP_BLUR_MAX)) {
234
+ throw new Error(`footage() background blur ${JSON.stringify(o["blur"])} is not a number from 0 to ${String(BACKDROP_BLUR_MAX)}: the blur's standard deviation in px at 1080p (24 is a soft room).`);
235
+ }
236
+ for (const k of ["dim", "desaturate"]) {
237
+ if (o[k] !== undefined && !isFraction(o[k])) {
238
+ throw new Error(`footage() background ${k} ${JSON.stringify(o[k])} is not a number from 0 (as it is) to 1.`);
239
+ }
240
+ }
241
+ if (o["color"] !== undefined &&
242
+ (typeof o["color"] !== "string" || o["color"].trim() === "")) {
243
+ throw new Error(`footage() background color ${JSON.stringify(o["color"])} is not a CSS colour such as "#101418", "var(--ak-color-bg)" or "transparent".`);
244
+ }
245
+ if (o["image"] !== undefined && !isMediaRef(o["image"])) {
246
+ throw new Error(`footage() background image ${JSON.stringify(o["image"])} is not an image: a path relative to the piece, or an imported file.`);
247
+ }
248
+ if (o["color"] !== undefined && o["image"] !== undefined) {
249
+ throw new Error("footage() background takes a color or an image, not both.");
250
+ }
251
+ if (o["color"] !== undefined) {
252
+ const over = ["blur", "dim", "desaturate"].find((k) => o[k] !== undefined);
253
+ if (over !== undefined) {
254
+ throw new Error(`footage() background ${over} does nothing with a color, which replaces the background: leave one out.`);
255
+ }
256
+ }
257
+ if (o["feather"] !== undefined &&
258
+ !(num(o["feather"]) &&
259
+ o["feather"] >= 0 &&
260
+ o["feather"] <= MATTE_FEATHER_MAX)) {
261
+ throw new Error(`footage() background feather ${JSON.stringify(o["feather"])} is not a number from 0 to ${String(MATTE_FEATHER_MAX)}: the softness of the person's edge in px at 1080p (2 by default).`);
262
+ }
263
+ if (o["shrink"] !== undefined &&
264
+ !(num(o["shrink"]) && Math.abs(o["shrink"]) <= MATTE_SHRINK_MAX)) {
265
+ throw new Error(`footage() background shrink ${JSON.stringify(o["shrink"])} is not a number from −${String(MATTE_SHRINK_MAX)} to ${String(MATTE_SHRINK_MAX)}: how far the person's edge is pulled in, px at 1080p (4 by default).`);
266
+ }
267
+ }
268
+ /**
269
+ * A box, or each box key, lies in the frame: a box is the part of the
270
+ * frame the picture shows in, so one reaching past it would be cut to the
271
+ * frame and a push-in written as a box larger than the frame would not move.
272
+ */
273
+ function checkBoxes(box) {
274
+ if (box === undefined || box === "full" || !Array.isArray(box))
275
+ return;
276
+ const rects = box.length > 0 && typeof box[0] === "object"
277
+ ? box.map((k) => k.box)
278
+ : [box];
279
+ const e = 1e-6;
280
+ for (const r of rects) {
281
+ if (r === "full" || !Array.isArray(r) || r.length !== 4)
282
+ continue;
283
+ const [x, y, w, h] = r;
284
+ if ([x, y, w, h].every((v) => typeof v === "number" && Number.isFinite(v)) &&
285
+ (x ?? 0) >= -e &&
286
+ (y ?? 0) >= -e &&
287
+ (w ?? 0) > 0 &&
288
+ (h ?? 0) > 0 &&
289
+ (x ?? 0) + (w ?? 0) <= 1 + e &&
290
+ (y ?? 0) + (h ?? 0) <= 1 + e) {
291
+ continue;
292
+ }
293
+ throw new Error(`footage() box ${JSON.stringify(r)} is not inside the frame: [x, y, width, height] are fractions of it, with x + width and y + height at most 1. A box is where the picture shows, so it cannot grow past the frame; for a slow push in use punchIn, eased in over its \`in\` seconds centred on \`at\` ({ at: 4, in: 8, until: 8, scale: 1.07, ease: "linear" } pushes in over the first 8 s), and for a slow pull out pullback ({ scale: 1.07, dur: 8 }).`);
294
+ }
295
+ }
296
+ /**
297
+ * The values an option holds: the one value, or a per-frame-shape
298
+ * object's ({ landscape, portrait, square, default }), whose keys are
299
+ * checked.
300
+ */
301
+ function perOrient(name, v) {
302
+ if (v === undefined)
303
+ return [];
304
+ if (!isPerOrient(v))
305
+ return [v];
306
+ const keys = ORIENT_KEYS;
307
+ const unknown = Object.keys(v).filter((k) => !keys.includes(k));
308
+ if (unknown.length > 0) {
309
+ throw new Error(`footage() ${name} has ${unknown.map((k) => JSON.stringify(k)).join(", ")}, which is not a frame shape: a per-shape ${name} is { ${ORIENT_KEYS.join(", ")} } (each optional; an output takes the one for its orientation, else default).`);
310
+ }
311
+ return Object.values(v).filter((x) => x !== undefined);
312
+ }
313
+ /** A crop is a part of the source: [x, y, width, height] as fractions of it. */
314
+ function checkCrop(crop) {
315
+ const e = 1e-6;
316
+ const r = Array.isArray(crop) ? crop : [];
317
+ const [x, y, w, h] = r;
318
+ if (r.length === 4 &&
319
+ typeof x === "number" &&
320
+ typeof y === "number" &&
321
+ typeof w === "number" &&
322
+ typeof h === "number" &&
323
+ [x, y, w, h].every((v) => Number.isFinite(v)) &&
324
+ x >= -e &&
325
+ y >= -e &&
326
+ w > 0 &&
327
+ h > 0 &&
328
+ x + w <= 1 + e &&
329
+ y + h <= 1 + e) {
330
+ return;
331
+ }
332
+ throw new Error(`footage() crop ${JSON.stringify(crop)} is not a part of the source: [x, y, width, height] are fractions of it, with x + width and y + height at most 1.`);
333
+ }
334
+ /**
335
+ * A video on the part: footage("./broll.mp4", { at: "inbox", dur: 1.5 }).
336
+ * Without a file it is the part's own take, in sync with its speech.
337
+ */
338
+ export function footage(file, opts = {}) {
339
+ const o = file !== undefined && !isMediaRef(file) ? file : opts;
340
+ if (o.speed !== undefined &&
341
+ (!Number.isFinite(o.speed) || o.speed <= 0 || o.speed > 16)) {
342
+ throw new Error(`footage() speed ${String(o.speed)} is not a number over 0 and up to 16 (1 is normal speed).`);
343
+ }
344
+ if (o.sharpen !== undefined &&
345
+ (!Number.isFinite(o.sharpen) || o.sharpen < 0 || o.sharpen > 1)) {
346
+ throw new Error(`footage() sharpen ${String(o.sharpen)} is not a number from 0 to 1 (0.3 is gentle).`);
347
+ }
348
+ checkReframe(o.reframe);
349
+ if (o.speaker !== undefined &&
350
+ (!Number.isInteger(o.speaker) || o.speaker < 0)) {
351
+ throw new Error(`footage() speaker ${String(o.speaker)} is not a face id (a whole number from 0, as allyhub index lists them).`);
352
+ }
353
+ for (const p of o.punchIn ?? []) {
354
+ const scale = typeof p === "object"
355
+ ? p.scale
356
+ : /@(\d*\.\d+)$/.exec(String(p))?.[1] !== undefined
357
+ ? Number(/@(\d*\.\d+)$/.exec(String(p))?.[1])
358
+ : undefined;
359
+ if (scale !== undefined && (!(scale > 1) || scale > 3)) {
360
+ throw new Error(`footage() punchIn scale ${String(scale)} is not over 1 and up to 3 (1.12 is a gentle punch-in).`);
361
+ }
362
+ if (typeof p === "object") {
363
+ checkSeconds("punchIn in", p.in);
364
+ checkSeconds("punchIn out", p.out);
365
+ checkEase("punchIn ease", p.ease);
366
+ checkPoint("punchIn center", p.center);
367
+ }
368
+ }
369
+ if (typeof o.pullback === "object") {
370
+ const { scale, dur } = o.pullback;
371
+ if (scale !== undefined && (!(scale > 1) || scale > 3)) {
372
+ throw new Error(`footage() pullback scale ${String(scale)} is not over 1 and up to 3 (1.12 is a gentle pullback).`);
373
+ }
374
+ if (dur !== undefined && (!(dur > 0) || dur > 10)) {
375
+ throw new Error(`footage() pullback dur ${String(dur)} is not seconds over 0 and up to 10.`);
376
+ }
377
+ checkEase("pullback ease", o.pullback.ease);
378
+ checkPoint("pullback center", o.pullback.center);
379
+ }
380
+ if (o.shape !== undefined &&
381
+ o.shape !== "rect" &&
382
+ o.shape !== "circle") {
383
+ throw new Error(`footage() shape ${JSON.stringify(o.shape)} is not "rect" or "circle".`);
384
+ }
385
+ if (o.radius !== undefined &&
386
+ (typeof o.radius !== "number" || !Number.isFinite(o.radius) || o.radius < 0)) {
387
+ throw new Error(`footage() radius ${JSON.stringify(o.radius)} is not a number from 0: the corners' radius, px at 1080p (24 is a soft card corner).`);
388
+ }
389
+ if (o.radius !== undefined && o.radius > 0 && o.shape === "circle") {
390
+ throw new Error('footage(): radius rounds the corners of a rect; shape "circle" has none. Use one of them.');
391
+ }
392
+ const boxes = perOrient("box", o.box);
393
+ for (const b of boxes)
394
+ checkBoxes(b);
395
+ for (const c of perOrient("crop", o.crop))
396
+ checkCrop(c);
397
+ checkBackground(o.background);
398
+ if (boxes.some((b) => Array.isArray(b) && b.length > 0 && typeof b[0] === "object")) {
399
+ if (o.reframe !== undefined ||
400
+ o.punchIn?.length ||
401
+ (o.pullback !== undefined && o.pullback !== false)) {
402
+ throw new Error("footage(): a keyframed box cannot be reframed, punched in or pulled back; use a still box, or keyframes without reframe, punchIn and pullback.");
403
+ }
404
+ }
405
+ if (file !== undefined && !isMediaRef(file)) {
406
+ return { [LAYER_BRAND]: "footage", ...file };
407
+ }
408
+ return {
409
+ [LAYER_BRAND]: "footage",
410
+ ...(file === undefined ? {} : { file }),
411
+ ...opts,
412
+ };
413
+ }
414
+ //# sourceMappingURL=parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.js","sourceRoot":"","sources":["../src/parts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /** A point, or a direction of length 1, in the path's own units. */
2
+ export interface PathPoint {
3
+ x: number;
4
+ y: number;
5
+ }
6
+ /** A path's commands, absolute, as `normalizePath` writes them. */
7
+ export type PathCommand = {
8
+ type: "M" | "L";
9
+ x: number;
10
+ y: number;
11
+ } | {
12
+ type: "C";
13
+ x1: number;
14
+ y1: number;
15
+ x2: number;
16
+ y2: number;
17
+ x: number;
18
+ y: number;
19
+ } | {
20
+ type: "Q";
21
+ x1: number;
22
+ y1: number;
23
+ x: number;
24
+ y: number;
25
+ } | {
26
+ type: "A";
27
+ rx: number;
28
+ ry: number;
29
+ angle: number;
30
+ large: 0 | 1;
31
+ sweep: 0 | 1;
32
+ x: number;
33
+ y: number;
34
+ } | {
35
+ type: "Z";
36
+ };
37
+ /**
38
+ * A path written with absolute commands only (H and V as L, S as C, T as Q,
39
+ * numbers to 4 decimals): what `interpolatePath` compares. Throws on a path
40
+ * it cannot read.
41
+ */
42
+ export declare function normalizePath(d: string): string;
43
+ /** The path's length, in its own units. Throws on a path it cannot read. */
44
+ export declare function pathLength(d: string): number;
45
+ /**
46
+ * The point at a length along the path (clamped to 0 – its length). A path
47
+ * with no length gives its last point.
48
+ */
49
+ export declare function pointAtLength(d: string, length: number): PathPoint;
50
+ /**
51
+ * The direction the path runs in at a length along it, a vector of length 1
52
+ * (`Math.atan2(v.y, v.x)` is its angle in radians). A path with no length
53
+ * gives `{ x: 1, y: 0 }`.
54
+ */
55
+ export declare function tangentAtLength(d: string, length: number): PathPoint;
56
+ /** What `drawOn` gives: set both on the path's style. */
57
+ export interface DrawOn {
58
+ strokeDasharray: string;
59
+ strokeDashoffset: number;
60
+ }
61
+ /**
62
+ * The stroke-dash values that show the first `progress` (0–1, clamped) of
63
+ * the path's stroke: 0 shows none of it, 1 all of it. Set them in render
64
+ * from an eased progress: `css(path, drawOn(d, ease.out(progress(t, 0.2, 1))))`.
65
+ * The gap is twice the length, so a browser that measures the path a little
66
+ * longer never shows the next dash.
67
+ */
68
+ export declare function drawOn(d: string, progress: number): DrawOn;
69
+ /**
70
+ * The stretch of the path from `from` to `to`, fractions of its length
71
+ * (0–1, clamped), as a path: lines and cubic curves (Q and A become cubics),
72
+ * a move at the start of each subpath it crosses, and Z where it keeps a
73
+ * whole subpath. `""` when `to` is not after `from`. Animate `to` to grow a
74
+ * line, both to send a stretch along it.
75
+ */
76
+ export declare function trimPath(d: string, from: number, to: number): string;
77
+ /**
78
+ * The path `x` of the way from `a` to `b` (0 is `a`, 1 is `b`; values
79
+ * outside 0–1 go on past them, for an easing that overshoots). Both paths
80
+ * must have the same commands once absolute (`normalizePath`), and an arc's
81
+ * flags must match; otherwise it throws, naming the first command that
82
+ * differs. Draw the two shapes with the same commands to morph between them.
83
+ */
84
+ export declare function interpolatePath(a: string, b: string, x: number): string;
85
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAaA,oEAAoE;AACpE,MAAM,WAAW,SAAS;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,mEAAmE;AACnE,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GACzC;IACE,IAAI,EAAE,GAAG,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,GACD;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3D;IACE,IAAI,EAAE,GAAG,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IACb,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,GACD;IAAE,IAAI,EAAE,GAAG,CAAA;CAAE,CAAC;AA4LlB;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAkUD,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAWlE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAkBpE;AAED,yDAAyD;AACzD,MAAM,WAAW,MAAM;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAS1D;AAiCD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CA+DpE;AAID;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA8DvE"}