@cutcraft/kit 0.1.0 → 0.2.0
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 +40 -56
- package/dist/{index-CLhXqOpF.d.mts → index-BYYpzZuS.d.mts} +351 -327
- package/dist/index.d.mts +4260 -13987
- package/dist/index.mjs +1 -1
- package/dist/source/index-public.d.mts +57 -57
- package/dist/source/index-public.mjs +214 -50
- package/dist/{src-BsBU2JLf.mjs → src-CcFjz_DV.mjs} +2241 -2069
- package/package.json +16 -8
|
@@ -1,19 +1,325 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
1
|
+
import { ZodObject, z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* What the ingest service knows about an asset. The model never sees pixels;
|
|
4
|
+
* it edits against this, and the resolver turns `word:`/`shot:` references
|
|
5
|
+
* into seconds with it.
|
|
6
|
+
*/
|
|
7
|
+
interface AssetManifest {
|
|
8
|
+
readonly assets: Readonly<Record<string, AssetEntry>>;
|
|
9
|
+
}
|
|
10
|
+
interface AssetEntry {
|
|
11
|
+
readonly id: string;
|
|
12
|
+
readonly kind: "video" | "audio" | "image";
|
|
13
|
+
/** Seconds. Images report 0 and may be held for any duration. */
|
|
14
|
+
readonly duration: number;
|
|
15
|
+
readonly fps?: number;
|
|
16
|
+
readonly width?: number;
|
|
17
|
+
readonly height?: number;
|
|
18
|
+
readonly audio?: {
|
|
19
|
+
readonly sampleRate: number;
|
|
20
|
+
readonly channels: number;
|
|
21
|
+
readonly streams: number;
|
|
22
|
+
};
|
|
23
|
+
readonly transcript?: {
|
|
24
|
+
readonly words: readonly TranscriptWord[];
|
|
25
|
+
};
|
|
26
|
+
readonly shots?: readonly Shot[];
|
|
27
|
+
readonly silences?: readonly Silence[];
|
|
28
|
+
readonly waveform?: WaveformSummary;
|
|
29
|
+
/** Where the subject (a face, a person) sits in the picture, sampled over time; several boxes may share a `t`. */
|
|
30
|
+
readonly subjects?: readonly SubjectBox[];
|
|
31
|
+
}
|
|
32
|
+
/** A subject's box at source second `t`, as fractions of the source picture (0..1 from its top left). */
|
|
33
|
+
interface SubjectBox {
|
|
34
|
+
readonly t: number;
|
|
35
|
+
readonly x: number;
|
|
36
|
+
readonly y: number;
|
|
37
|
+
readonly w: number;
|
|
38
|
+
readonly h: number;
|
|
39
|
+
}
|
|
40
|
+
interface TranscriptWord {
|
|
41
|
+
readonly i: number;
|
|
42
|
+
readonly text: string;
|
|
43
|
+
readonly start: number;
|
|
44
|
+
readonly end: number;
|
|
45
|
+
readonly speaker?: string;
|
|
46
|
+
/**
|
|
47
|
+
* The times are shared out from a longer span (an SRT or VTT cue, a segment without word times), not measured per
|
|
48
|
+
* word: a cut on this word lands near it, not exactly on it.
|
|
49
|
+
*/
|
|
50
|
+
readonly estimated?: boolean;
|
|
51
|
+
}
|
|
52
|
+
interface Shot {
|
|
53
|
+
readonly i: number;
|
|
54
|
+
readonly start: number;
|
|
55
|
+
readonly end: number;
|
|
56
|
+
}
|
|
57
|
+
interface Silence {
|
|
58
|
+
readonly i: number;
|
|
59
|
+
readonly start: number;
|
|
60
|
+
readonly end: number;
|
|
61
|
+
}
|
|
62
|
+
interface WaveformSummary {
|
|
63
|
+
readonly binSeconds: number;
|
|
64
|
+
readonly peaks: readonly number[];
|
|
65
|
+
readonly rms: readonly number[];
|
|
66
|
+
}
|
|
67
|
+
declare const EMPTY_MANIFEST: AssetManifest;
|
|
68
|
+
declare function assetIdOf(ref: string): string;
|
|
69
|
+
declare function lookupAsset(manifest: AssetManifest, ref: string): AssetEntry | null;
|
|
70
|
+
interface ShaderDefinition {
|
|
71
|
+
readonly kind: "effect" | "transition";
|
|
72
|
+
readonly name: string;
|
|
73
|
+
/** The params `<Effect params>` or `<Transition params>` takes, validated and given defaults by this schema. */
|
|
74
|
+
readonly params: ZodObject;
|
|
75
|
+
/**
|
|
76
|
+
* GLSL ES 3.00 that defines `vec4 effect(vec2 uv)` (an effect) or `vec4 transition(vec2 uv)` (a transition). It may
|
|
77
|
+
* read `image` (an effect's picture) or `from` and `to` (a transition's two pictures) as `sampler2D`, `resolution`
|
|
78
|
+
* (vec2, pixels), `time` (seconds into the element), `progress` (0..1 through a transition), and each param by its
|
|
79
|
+
* name: a number as a float, a boolean as a bool, an array of 2 to 4 numbers as a vec, a colour string as a vec3.
|
|
80
|
+
*/
|
|
81
|
+
readonly shader: string;
|
|
82
|
+
}
|
|
83
|
+
/** The shaders a module loaded by `loadModule` declared, stored on its exports under this key. */
|
|
84
|
+
declare const MODULE_SHADERS: unique symbol;
|
|
85
|
+
interface DefineOptions {
|
|
86
|
+
readonly name: string;
|
|
87
|
+
readonly params?: ZodObject;
|
|
88
|
+
readonly shader: string;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Declares an effect drawn by a GLSL function, and returns its name for `<Effect type>`. Call it at the top of the file.
|
|
92
|
+
*
|
|
93
|
+
* const glitch = defineEffect({
|
|
94
|
+
* name: "glitch",
|
|
95
|
+
* params: z.object({ amount: z.number().min(0).max(1).default(0.3) }),
|
|
96
|
+
* shader: `vec4 effect(vec2 uv) {
|
|
97
|
+
* float shift = amount * 0.02 * sin(time * 40.0 + uv.y * 80.0);
|
|
98
|
+
* return vec4(texture(image, uv + vec2(shift, 0)).r, texture(image, uv).g, texture(image, uv - vec2(shift, 0)).b,
|
|
99
|
+
* texture(image, uv).a);
|
|
100
|
+
* }`,
|
|
101
|
+
* });
|
|
102
|
+
* <Clip id="city" src="asset:city"><Effect id="g" type={glitch} params={{ amount: 0.5 }} /></Clip>
|
|
103
|
+
*/
|
|
104
|
+
declare function defineEffect(options: DefineOptions): string;
|
|
105
|
+
/**
|
|
106
|
+
* Declares a transition drawn by a GLSL function of the two pictures, and returns its name for `<Transition type>`.
|
|
107
|
+
*
|
|
108
|
+
* const sweep = defineTransition({
|
|
109
|
+
* name: "sweep",
|
|
110
|
+
* shader: `vec4 transition(vec2 uv) { return uv.x < progress ? texture(to, uv) : texture(from, uv); }`,
|
|
111
|
+
* });
|
|
112
|
+
*/
|
|
113
|
+
declare function defineTransition(options: DefineOptions): string;
|
|
114
|
+
/** Runs `load` and returns the shaders declared while it ran: how `loadModule` keeps each file's apart. */
|
|
115
|
+
declare function collectShaders(load: () => void): ShaderDefinition[];
|
|
116
|
+
/** The shaders a module declared: those `loadModule` recorded for it, or else every one declared outside a load. */
|
|
117
|
+
declare function shadersOf(mod: object): readonly ShaderDefinition[];
|
|
118
|
+
/** The shader a file declares under this name for an `<Effect>` or `<Transition>`, if any. */
|
|
119
|
+
declare function shaderFor(shaders: readonly ShaderDefinition[], kind: ShaderDefinition["kind"], type: unknown): ShaderDefinition | undefined;
|
|
120
|
+
/** Whether a file draws anything with a shader it declares: what only a renderer with WebGL draws. */
|
|
121
|
+
declare function usesShaders(state: {
|
|
122
|
+
readonly shaders: readonly ShaderDefinition[];
|
|
123
|
+
readonly items: ReadonlyMap<string, {
|
|
124
|
+
readonly kind: string;
|
|
125
|
+
readonly props: Readonly<Record<string, unknown>>;
|
|
126
|
+
}>;
|
|
127
|
+
}): boolean;
|
|
128
|
+
/**
|
|
129
|
+
* The font families the player ships: the preview and the export load them
|
|
130
|
+
* from `@cutcraft/player/fonts.css`. All are under the SIL
|
|
131
|
+
* Open Font License, from the `@fontsource` packages named here. Each comes in
|
|
132
|
+
* regular and bold, and italic where the family has one.
|
|
133
|
+
*/
|
|
134
|
+
interface BundledFont {
|
|
135
|
+
readonly family: string;
|
|
136
|
+
/** The `@fontsource` package, and the file prefix inside its `files/` directory. */
|
|
137
|
+
readonly id: string;
|
|
138
|
+
readonly italic: boolean;
|
|
139
|
+
}
|
|
140
|
+
declare const BUNDLED_FONTS: readonly BundledFont[];
|
|
141
|
+
declare const BUNDLED_FONT_WEIGHTS: readonly [400, 700];
|
|
142
|
+
declare function isBundledFont(family: string): boolean;
|
|
143
|
+
type FontStyle = "normal" | "italic";
|
|
144
|
+
/** Where a declared face's file comes from. */
|
|
145
|
+
type FontSource =
|
|
146
|
+
/** A file found the way an asset is: `<id>.ttf` (`.otf`, `.woff`, `.woff2`) in the media folder, or the player's `media`. */
|
|
147
|
+
{
|
|
148
|
+
readonly kind: "asset";
|
|
149
|
+
readonly id: string;
|
|
150
|
+
} |
|
|
151
|
+
/** Google Fonts: the export downloads it once into a local cache; the player loads it from Google. */
|
|
152
|
+
{
|
|
153
|
+
readonly kind: "google";
|
|
154
|
+
};
|
|
155
|
+
/** One face a file declares with `font()` or `googleFont()`. */
|
|
156
|
+
interface DeclaredFont {
|
|
157
|
+
readonly family: string;
|
|
158
|
+
readonly weight: number;
|
|
159
|
+
readonly style: FontStyle;
|
|
160
|
+
readonly source: FontSource;
|
|
161
|
+
}
|
|
162
|
+
/** The faces a module loaded by `loadModule` declared, stored on its exports under this key. */
|
|
163
|
+
declare const MODULE_FONTS: unique symbol;
|
|
164
|
+
/**
|
|
165
|
+
* Declares a face from a font file and returns its family, to pass as a `font` prop, a theme font or a CSS
|
|
166
|
+
* `fontFamily`. Call it at the top of the file with literal arguments, as the editor and lint read them from the source.
|
|
167
|
+
*
|
|
168
|
+
* const brand = font({ family: "Brand Sans", src: "asset:brand", weight: 700 });
|
|
169
|
+
* <Title id="hello" font={brand}>Hello</Title>
|
|
170
|
+
*
|
|
171
|
+
* `src: "asset:brand"` finds `brand.ttf` (or `.otf`, `.woff`, `.woff2`) where the export finds media, and asks the
|
|
172
|
+
* player's `media` for `brand`.
|
|
173
|
+
*/
|
|
174
|
+
declare function font(options: {
|
|
175
|
+
readonly family: string;
|
|
176
|
+
readonly src: string;
|
|
177
|
+
readonly weight?: number;
|
|
178
|
+
readonly style?: FontStyle;
|
|
179
|
+
}): string;
|
|
180
|
+
/**
|
|
181
|
+
* Declares a Google Fonts family, in each weight and style given (default 400, normal), and returns the family. The
|
|
182
|
+
* export downloads the files once into `~/.cache/cutcraft/fonts` (`CUTCRAFT_FONT_CACHE` moves it) and reads them from
|
|
183
|
+
* there; the player loads them from Google.
|
|
184
|
+
*
|
|
185
|
+
* const titan = googleFont("Titan One");
|
|
186
|
+
* const inter = googleFont("Inter Tight", { weights: [400, 700], styles: ["normal", "italic"] });
|
|
187
|
+
*/
|
|
188
|
+
declare function googleFont(family: string, options?: {
|
|
189
|
+
readonly weights?: readonly number[];
|
|
190
|
+
readonly styles?: readonly FontStyle[];
|
|
191
|
+
}): string;
|
|
192
|
+
/** Runs `load` and returns the faces declared while it ran: how `loadModule` keeps each file's faces apart. */
|
|
193
|
+
declare function collectFonts(load: () => void): DeclaredFont[];
|
|
194
|
+
/** The faces a module declared: those `loadModule` recorded for it, or else every face declared outside a load. */
|
|
195
|
+
declare function fontsOf(mod: object): readonly DeclaredFont[];
|
|
196
|
+
type ResolveErrorCode = "DANGLING_ANCHOR" |
|
|
197
|
+
/** `at` names a moment the anchor does not play: trimmed out, or the anchor is not footage. */
|
|
198
|
+
"INVALID_ANCHOR" |
|
|
199
|
+
/** `at` on an anchor the first version cannot map: reversed, or with speed keys or freezes. */
|
|
200
|
+
"UNSUPPORTED_ANCHOR" | "CYCLE" | "TRIM_PAST_SOURCE" | "UNKNOWN_REF" | "NOT_ADJACENT" | "INSUFFICIENT_HANDLES" | "NO_VISUAL_PARENT" | "DUPLICATE_ID" | "MISSING_ASSET" | "START_ON_SEQUENCE" | "MISSING_START" | "AMBIGUOUS_DURATION" | "INVALID_CHILD" | "INVALID_TIME_RANGE" | "UNKNOWN_TOKEN" | "UNKNOWN_STYLE" | "SCHEMA";
|
|
201
|
+
interface ResolveError {
|
|
202
|
+
readonly code: ResolveErrorCode;
|
|
203
|
+
readonly id: string;
|
|
204
|
+
readonly prop?: string;
|
|
205
|
+
readonly message: string;
|
|
206
|
+
}
|
|
207
|
+
declare function isResolveError(value: unknown): value is ResolveError;
|
|
208
|
+
type Editable = "literal" | "generated" | "opaque";
|
|
209
|
+
/** Prop keys under this prefix address a Layer's handles rather than the Layer's own props. */
|
|
210
|
+
declare const INTERIOR_PREFIX = "interior.";
|
|
211
|
+
/**
|
|
212
|
+
* One vocabulary element as collected from the React element tree, before
|
|
213
|
+
* schema parsing and before placement. `props` are the raw JSX props minus
|
|
214
|
+
* `children`.
|
|
215
|
+
*/
|
|
216
|
+
interface CollectedNode {
|
|
217
|
+
readonly id: string;
|
|
218
|
+
readonly kind: string;
|
|
219
|
+
readonly props: Readonly<Record<string, unknown>>;
|
|
220
|
+
readonly children: readonly CollectedNode[];
|
|
221
|
+
/** Text content for elements whose children are text (Title). */
|
|
222
|
+
readonly text?: string;
|
|
223
|
+
readonly parent: string | null;
|
|
224
|
+
readonly editable: Editable;
|
|
225
|
+
/** Props whose source value is an expression the editor cannot write (known only when a SourceIndex was supplied). */
|
|
226
|
+
readonly lockedProps: readonly string[];
|
|
227
|
+
/** Prop → `schema` key for props that read the file's props; a write to one rewrites `defaults`. */
|
|
228
|
+
readonly boundProps: Readonly<Record<string, string>>;
|
|
229
|
+
/** For helper output: which helper produced the node, under which parent, and the helper's nth use in the file. */
|
|
230
|
+
readonly origin?: {
|
|
231
|
+
readonly helper: string;
|
|
232
|
+
readonly callerId: string | null;
|
|
233
|
+
readonly callIndex: number;
|
|
234
|
+
};
|
|
235
|
+
/** A Layer's handles: the one component inside it and its props. The component's body stays opaque. */
|
|
236
|
+
readonly interior?: LayerInterior;
|
|
237
|
+
}
|
|
238
|
+
interface LayerInterior {
|
|
239
|
+
readonly component: string;
|
|
240
|
+
readonly props: Readonly<Record<string, unknown>>;
|
|
241
|
+
}
|
|
242
|
+
interface CollectedTree {
|
|
243
|
+
readonly root: CollectedNode;
|
|
244
|
+
readonly byId: ReadonlyMap<string, CollectedNode>;
|
|
245
|
+
readonly errors: readonly ResolveError[];
|
|
246
|
+
/** The faces the file declares (`font()`, `googleFont()`); set by `collectModule`. */
|
|
247
|
+
readonly fonts?: readonly DeclaredFont[];
|
|
248
|
+
/** The effects and transitions the file declares (`defineEffect()`, `defineTransition()`); set by `collectModule`. */
|
|
249
|
+
readonly shaders?: readonly ShaderDefinition[];
|
|
250
|
+
}
|
|
251
|
+
declare function walk(node: CollectedNode, visit: (node: CollectedNode, depth: number) => void, depth?: number): void;
|
|
252
|
+
declare function findParentOf(tree: CollectedTree, id: string): CollectedNode | null;
|
|
253
|
+
type Json = null | boolean | number | string | Json[] | {
|
|
254
|
+
[key: string]: Json;
|
|
255
|
+
};
|
|
256
|
+
/** One change recorded by an action. Patches address elements by id, never by position in the file. */
|
|
257
|
+
type Patch = {
|
|
258
|
+
readonly op: "set";
|
|
259
|
+
readonly id: string;
|
|
260
|
+
readonly prop: string;
|
|
261
|
+
readonly value: Json | undefined;
|
|
262
|
+
} | {
|
|
263
|
+
readonly op: "text";
|
|
264
|
+
readonly id: string;
|
|
265
|
+
readonly text: string;
|
|
266
|
+
} | {
|
|
267
|
+
readonly op: "insert";
|
|
268
|
+
readonly id: string;
|
|
269
|
+
readonly parent: string;
|
|
270
|
+
readonly after: string | null;
|
|
271
|
+
readonly node: CollectedNode;
|
|
272
|
+
} | {
|
|
273
|
+
readonly op: "remove";
|
|
274
|
+
readonly id: string;
|
|
275
|
+
} | {
|
|
276
|
+
readonly op: "move";
|
|
277
|
+
readonly id: string;
|
|
278
|
+
readonly parent: string;
|
|
279
|
+
readonly after: string | null;
|
|
280
|
+
} | {
|
|
281
|
+
readonly op: "bake";
|
|
282
|
+
readonly id: string;
|
|
283
|
+
};
|
|
284
|
+
type Presence = "present" | "inserted" | "removed";
|
|
285
|
+
/** The reduced effect of every patch on one element. */
|
|
286
|
+
interface NetPatch {
|
|
287
|
+
readonly id: string;
|
|
288
|
+
presence: Presence;
|
|
289
|
+
readonly props: Map<string, Json | undefined>;
|
|
290
|
+
text?: string;
|
|
291
|
+
place?: {
|
|
292
|
+
parent: string;
|
|
293
|
+
after: string | null;
|
|
294
|
+
};
|
|
295
|
+
node?: CollectedNode;
|
|
296
|
+
bake: boolean;
|
|
297
|
+
}
|
|
298
|
+
interface PatchLog {
|
|
299
|
+
readonly entries: readonly Patch[];
|
|
300
|
+
readonly net: ReadonlyMap<string, NetPatch>;
|
|
301
|
+
/** Increments on every append or truncate; resolve() memoises on it. */
|
|
302
|
+
readonly version: number;
|
|
303
|
+
append(patch: Patch): void;
|
|
304
|
+
/** Current length, for history entries to remember what they appended. */
|
|
305
|
+
mark(): number;
|
|
306
|
+
/** Drop every entry at or after `mark` and rebuild `net`. */
|
|
307
|
+
truncate(mark: number): void;
|
|
308
|
+
clear(): void;
|
|
309
|
+
}
|
|
2
310
|
declare const TRACK_LAYOUTS: readonly ["sequence", "free"];
|
|
3
311
|
declare const TRACK_ROLES: readonly ["general", "captions", "dialogue", "music", "effects", "ambience"];
|
|
4
312
|
declare const FIT_MODES: readonly ["contain", "cover", "stretch", "none"];
|
|
5
313
|
declare const BLEND_MODES: readonly ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity", "add", "linear-dodge"];
|
|
6
314
|
declare const EASINGS: readonly ["linear", "ease", "ease-in", "ease-out", "ease-in-out", "hold", "bezier", "smoothstep", "smootherstep", "snappy", "smooth", "spring", "easeInQuad", "easeOutQuad", "easeInOutQuad", "easeInCubic", "easeOutCubic", "easeInOutCubic", "easeInQuart", "easeOutQuart", "easeInOutQuart", "easeInQuint", "easeOutQuint", "easeInOutQuint", "easeInSine", "easeOutSine", "easeInOutSine", "easeInExpo", "easeOutExpo", "easeInOutExpo", "easeInCirc", "easeOutCirc", "easeInOutCirc", "easeInBack", "easeOutBack", "easeInOutBack", "easeInBackStrong", "easeOutBackStrong", "easeInOutBackStrong", "easeInElastic", "easeOutElastic", "easeInOutElastic", "easeInElasticSoft", "easeOutElasticSoft", "easeInOutElasticSoft", "easeInBounce", "easeOutBounce", "easeInOutBounce", "easeInBounceSmall", "easeOutBounceSmall", "easeInOutBounceSmall"];
|
|
7
315
|
declare const MASK_EASINGS: readonly ["linear", "ease-in", "ease-out", "ease-in-out"];
|
|
8
|
-
declare const TRANSITION_TYPES: readonly ["crossfade", "dipToBlack", "dipToWhite", "wipe", "slide", "
|
|
9
|
-
declare const VIDEO_EFFECT_TYPES: readonly ["brightness", "contrast", "saturation", "hue", "temperature", "tint", "blur", "
|
|
10
|
-
declare const
|
|
11
|
-
declare const
|
|
12
|
-
declare const CAPTION_ANIMATIONS: readonly ["none", "word-highlight", "word-by-word", "karaoke", "bounce", "typewriter"];
|
|
316
|
+
declare const TRANSITION_TYPES: readonly ["crossfade", "dipToBlack", "dipToWhite", "wipe", "slide", "push"];
|
|
317
|
+
declare const VIDEO_EFFECT_TYPES: readonly ["brightness", "contrast", "saturation", "hue", "temperature", "tint", "blur", "vignette", "grain", "shadow", "grayscale", "sepia", "invert", "levels"];
|
|
318
|
+
declare const TEXT_ANIMATION_PRESETS: readonly ["none", "typewriter", "fade", "slide-up", "slide-down", "slide-left", "slide-right", "scale", "word-by-word"];
|
|
319
|
+
declare const CAPTION_ANIMATIONS: readonly ["none", "word-highlight", "word-by-word", "karaoke", "typewriter"];
|
|
13
320
|
declare const GRAPHIC_ANIMATIONS: readonly ["none", "fade", "slide-left", "slide-right", "slide-up", "slide-down", "scale", "rotate", "bounce", "pop", "draw", "wipe-left", "wipe-right", "wipe-up", "wipe-down", "reveal-center", "reveal-edges", "elastic", "flip-horizontal", "flip-vertical"];
|
|
14
|
-
declare const EMPHASIS_ANIMATIONS: readonly ["none", "pulse", "shake", "bounce", "float", "spin", "flash", "heartbeat", "swing", "wobble", "jello", "rubber-band", "tada", "vibrate", "flicker", "glow", "breathe", "wave", "tilt", "zoom-pulse", "focus-zoom", "pan-left", "pan-right", "pan-up", "pan-down", "ken-burns"];
|
|
15
321
|
declare const SHAPE_TYPES: readonly ["rectangle", "circle", "ellipse", "triangle", "arrow", "line", "polygon", "path", "star"];
|
|
16
|
-
declare const KEYFRAME_PROPERTIES: readonly ["transform.position.x", "transform.position.y", "transform.
|
|
322
|
+
declare const KEYFRAME_PROPERTIES: readonly ["transform.position.x", "transform.position.y", "transform.scale.x", "transform.scale.y", "transform.rotation", "transform.opacity", "transform.anchor.x", "transform.anchor.y", "transform.borderRadius", "transform.crop.x", "transform.crop.y", "transform.crop.width", "transform.crop.height", "audio.volume", "audio.pan", "colorGrade.temperature", "colorGrade.tint"];
|
|
17
323
|
/** `effect.<effectId>.<param>` is also a valid keyframe property; see `isKeyframeProperty`. */
|
|
18
324
|
declare const KEYFRAME_PROPERTY_PATTERN: RegExp;
|
|
19
325
|
declare function isKeyframeProperty(value: string): boolean;
|
|
@@ -22,10 +328,7 @@ declare const TEXT_ALIGNS: readonly ["left", "center", "right", "justify"];
|
|
|
22
328
|
declare const TEXT_VALIGNS: readonly ["top", "middle", "bottom"];
|
|
23
329
|
declare const TEXT_DECORATIONS: readonly ["none", "underline", "line-through", "overline"];
|
|
24
330
|
declare const ANIMATION_UNITS: readonly ["character", "word", "line"];
|
|
25
|
-
declare const MASK_TYPES: readonly ["shape", "drawn"
|
|
26
|
-
declare const MATTE_CHANNELS: readonly ["alpha", "luminance", "bounds"];
|
|
27
|
-
declare const INTERPOLATION_QUALITIES: readonly ["low", "medium", "high"];
|
|
28
|
-
declare const STABILIZE_CROP_MODES: readonly ["auto", "none"];
|
|
331
|
+
declare const MASK_TYPES: readonly ["shape", "drawn"];
|
|
29
332
|
declare const SVG_COLOR_MODES: readonly ["none", "tint", "replace"];
|
|
30
333
|
declare const AUTOMATION_LANES: readonly ["volume", "pan"];
|
|
31
334
|
declare const TRACK_FLAGS: readonly ["locked", "hidden", "muted", "solo"];
|
|
@@ -132,64 +435,26 @@ declare const zTransitionType: z.ZodEnum<{
|
|
|
132
435
|
dipToWhite: "dipToWhite";
|
|
133
436
|
wipe: "wipe";
|
|
134
437
|
slide: "slide";
|
|
135
|
-
zoom: "zoom";
|
|
136
438
|
push: "push";
|
|
137
|
-
circleReveal: "circleReveal";
|
|
138
|
-
blur: "blur";
|
|
139
|
-
whipPan: "whipPan";
|
|
140
|
-
radialWipe: "radialWipe";
|
|
141
|
-
pixelate: "pixelate";
|
|
142
|
-
glitch: "glitch";
|
|
143
|
-
blinds: "blinds";
|
|
144
|
-
diamondReveal: "diamondReveal";
|
|
145
|
-
spin: "spin";
|
|
146
|
-
flip: "flip";
|
|
147
|
-
splitReveal: "splitReveal";
|
|
148
|
-
flash: "flash";
|
|
149
|
-
filmBurn: "filmBurn";
|
|
150
|
-
mosaic: "mosaic";
|
|
151
|
-
ripple: "ripple";
|
|
152
|
-
pageTurn: "pageTurn";
|
|
153
|
-
colorSplit: "colorSplit";
|
|
154
439
|
}>;
|
|
155
440
|
declare const zVideoEffectType: z.ZodEnum<{
|
|
156
441
|
hue: "hue";
|
|
157
442
|
saturation: "saturation";
|
|
158
|
-
blur: "blur";
|
|
159
443
|
brightness: "brightness";
|
|
160
444
|
contrast: "contrast";
|
|
161
445
|
temperature: "temperature";
|
|
162
446
|
tint: "tint";
|
|
163
|
-
|
|
447
|
+
blur: "blur";
|
|
164
448
|
vignette: "vignette";
|
|
165
449
|
grain: "grain";
|
|
166
450
|
shadow: "shadow";
|
|
167
|
-
glow: "glow";
|
|
168
|
-
"motion-blur": "motion-blur";
|
|
169
|
-
"radial-blur": "radial-blur";
|
|
170
|
-
"chromatic-aberration": "chromatic-aberration";
|
|
171
451
|
grayscale: "grayscale";
|
|
172
452
|
sepia: "sepia";
|
|
173
453
|
invert: "invert";
|
|
174
454
|
levels: "levels";
|
|
175
|
-
"hue-saturation": "hue-saturation";
|
|
176
|
-
}>;
|
|
177
|
-
declare const zAudioEffectType: z.ZodEnum<{
|
|
178
|
-
gain: "gain";
|
|
179
|
-
pan: "pan";
|
|
180
|
-
eq: "eq";
|
|
181
|
-
compressor: "compressor";
|
|
182
|
-
reverb: "reverb";
|
|
183
|
-
delay: "delay";
|
|
184
|
-
noiseReduction: "noiseReduction";
|
|
185
|
-
fadeIn: "fadeIn";
|
|
186
|
-
fadeOut: "fadeOut";
|
|
187
455
|
}>;
|
|
188
456
|
declare const zTextAnimationPreset: z.ZodEnum<{
|
|
189
457
|
none: "none";
|
|
190
|
-
blur: "blur";
|
|
191
|
-
glitch: "glitch";
|
|
192
|
-
flip: "flip";
|
|
193
458
|
typewriter: "typewriter";
|
|
194
459
|
fade: "fade";
|
|
195
460
|
"slide-up": "slide-up";
|
|
@@ -197,25 +462,11 @@ declare const zTextAnimationPreset: z.ZodEnum<{
|
|
|
197
462
|
"slide-left": "slide-left";
|
|
198
463
|
"slide-right": "slide-right";
|
|
199
464
|
scale: "scale";
|
|
200
|
-
bounce: "bounce";
|
|
201
|
-
rotate: "rotate";
|
|
202
|
-
pop: "pop";
|
|
203
|
-
split: "split";
|
|
204
465
|
"word-by-word": "word-by-word";
|
|
205
|
-
rise: "rise";
|
|
206
|
-
drop: "drop";
|
|
207
|
-
elastic: "elastic";
|
|
208
|
-
swing: "swing";
|
|
209
|
-
"zoom-blur": "zoom-blur";
|
|
210
|
-
cascade: "cascade";
|
|
211
|
-
wave: "wave";
|
|
212
|
-
shake: "shake";
|
|
213
|
-
rainbow: "rainbow";
|
|
214
466
|
}>;
|
|
215
467
|
declare const zCaptionAnimation: z.ZodEnum<{
|
|
216
468
|
none: "none";
|
|
217
469
|
typewriter: "typewriter";
|
|
218
|
-
bounce: "bounce";
|
|
219
470
|
"word-by-word": "word-by-word";
|
|
220
471
|
"word-highlight": "word-highlight";
|
|
221
472
|
karaoke: "karaoke";
|
|
@@ -228,10 +479,9 @@ declare const zGraphicAnimation: z.ZodEnum<{
|
|
|
228
479
|
"slide-left": "slide-left";
|
|
229
480
|
"slide-right": "slide-right";
|
|
230
481
|
scale: "scale";
|
|
231
|
-
bounce: "bounce";
|
|
232
482
|
rotate: "rotate";
|
|
483
|
+
bounce: "bounce";
|
|
233
484
|
pop: "pop";
|
|
234
|
-
elastic: "elastic";
|
|
235
485
|
draw: "draw";
|
|
236
486
|
"wipe-left": "wipe-left";
|
|
237
487
|
"wipe-right": "wipe-right";
|
|
@@ -239,37 +489,10 @@ declare const zGraphicAnimation: z.ZodEnum<{
|
|
|
239
489
|
"wipe-down": "wipe-down";
|
|
240
490
|
"reveal-center": "reveal-center";
|
|
241
491
|
"reveal-edges": "reveal-edges";
|
|
492
|
+
elastic: "elastic";
|
|
242
493
|
"flip-horizontal": "flip-horizontal";
|
|
243
494
|
"flip-vertical": "flip-vertical";
|
|
244
495
|
}>;
|
|
245
|
-
declare const zEmphasisAnimation: z.ZodEnum<{
|
|
246
|
-
none: "none";
|
|
247
|
-
spin: "spin";
|
|
248
|
-
flash: "flash";
|
|
249
|
-
glow: "glow";
|
|
250
|
-
bounce: "bounce";
|
|
251
|
-
swing: "swing";
|
|
252
|
-
wave: "wave";
|
|
253
|
-
shake: "shake";
|
|
254
|
-
pulse: "pulse";
|
|
255
|
-
float: "float";
|
|
256
|
-
heartbeat: "heartbeat";
|
|
257
|
-
wobble: "wobble";
|
|
258
|
-
jello: "jello";
|
|
259
|
-
"rubber-band": "rubber-band";
|
|
260
|
-
tada: "tada";
|
|
261
|
-
vibrate: "vibrate";
|
|
262
|
-
flicker: "flicker";
|
|
263
|
-
breathe: "breathe";
|
|
264
|
-
tilt: "tilt";
|
|
265
|
-
"zoom-pulse": "zoom-pulse";
|
|
266
|
-
"focus-zoom": "focus-zoom";
|
|
267
|
-
"pan-left": "pan-left";
|
|
268
|
-
"pan-right": "pan-right";
|
|
269
|
-
"pan-up": "pan-up";
|
|
270
|
-
"pan-down": "pan-down";
|
|
271
|
-
"ken-burns": "ken-burns";
|
|
272
|
-
}>;
|
|
273
496
|
declare const zShapeType: z.ZodEnum<{
|
|
274
497
|
rectangle: "rectangle";
|
|
275
498
|
circle: "circle";
|
|
@@ -289,206 +512,7 @@ type BlendMode = (typeof BLEND_MODES)[number];
|
|
|
289
512
|
type Easing = (typeof EASINGS)[number];
|
|
290
513
|
type TransitionType = (typeof TRANSITION_TYPES)[number];
|
|
291
514
|
type VideoEffectType = (typeof VIDEO_EFFECT_TYPES)[number];
|
|
292
|
-
type AudioEffectType = (typeof AUDIO_EFFECT_TYPES)[number];
|
|
293
515
|
type TrackFlag = (typeof TRACK_FLAGS)[number];
|
|
294
|
-
/**
|
|
295
|
-
* What the ingest service knows about an asset. The model never sees pixels;
|
|
296
|
-
* it edits against this, and the resolver turns `word:`/`shot:` references
|
|
297
|
-
* into seconds with it.
|
|
298
|
-
*/
|
|
299
|
-
interface AssetManifest {
|
|
300
|
-
readonly assets: Readonly<Record<string, AssetEntry>>;
|
|
301
|
-
}
|
|
302
|
-
interface AssetEntry {
|
|
303
|
-
readonly id: string;
|
|
304
|
-
readonly kind: "video" | "audio" | "image";
|
|
305
|
-
/** Seconds. Images report 0 and may be held for any duration. */
|
|
306
|
-
readonly duration: number;
|
|
307
|
-
readonly fps?: number;
|
|
308
|
-
readonly width?: number;
|
|
309
|
-
readonly height?: number;
|
|
310
|
-
readonly audio?: {
|
|
311
|
-
readonly sampleRate: number;
|
|
312
|
-
readonly channels: number;
|
|
313
|
-
readonly streams: number;
|
|
314
|
-
};
|
|
315
|
-
readonly transcript?: {
|
|
316
|
-
readonly words: readonly TranscriptWord[];
|
|
317
|
-
};
|
|
318
|
-
readonly shots?: readonly Shot[];
|
|
319
|
-
readonly silences?: readonly Silence[];
|
|
320
|
-
readonly waveform?: WaveformSummary;
|
|
321
|
-
/** Where the subject (a face, a person) sits in the picture, sampled over time; several boxes may share a `t`. */
|
|
322
|
-
readonly subjects?: readonly SubjectBox[];
|
|
323
|
-
}
|
|
324
|
-
/** A subject's box at source second `t`, as fractions of the source picture (0..1 from its top left). */
|
|
325
|
-
interface SubjectBox {
|
|
326
|
-
readonly t: number;
|
|
327
|
-
readonly x: number;
|
|
328
|
-
readonly y: number;
|
|
329
|
-
readonly w: number;
|
|
330
|
-
readonly h: number;
|
|
331
|
-
}
|
|
332
|
-
interface TranscriptWord {
|
|
333
|
-
readonly i: number;
|
|
334
|
-
readonly text: string;
|
|
335
|
-
readonly start: number;
|
|
336
|
-
readonly end: number;
|
|
337
|
-
readonly speaker?: string;
|
|
338
|
-
}
|
|
339
|
-
interface Shot {
|
|
340
|
-
readonly i: number;
|
|
341
|
-
readonly start: number;
|
|
342
|
-
readonly end: number;
|
|
343
|
-
}
|
|
344
|
-
interface Silence {
|
|
345
|
-
readonly i: number;
|
|
346
|
-
readonly start: number;
|
|
347
|
-
readonly end: number;
|
|
348
|
-
}
|
|
349
|
-
interface WaveformSummary {
|
|
350
|
-
readonly binSeconds: number;
|
|
351
|
-
readonly peaks: readonly number[];
|
|
352
|
-
readonly rms: readonly number[];
|
|
353
|
-
}
|
|
354
|
-
declare const EMPTY_MANIFEST: AssetManifest;
|
|
355
|
-
declare function assetIdOf(ref: string): string;
|
|
356
|
-
declare function lookupAsset(manifest: AssetManifest, ref: string): AssetEntry | null;
|
|
357
|
-
type ResolveErrorCode = "DANGLING_ANCHOR" |
|
|
358
|
-
/** `at` names a moment the anchor does not play: trimmed out, or the anchor is not footage. */
|
|
359
|
-
"INVALID_ANCHOR" |
|
|
360
|
-
/** `at` on an anchor the first version cannot map: reversed, or with speed keys or freezes. */
|
|
361
|
-
"UNSUPPORTED_ANCHOR" | "CYCLE" | "TRIM_PAST_SOURCE" | "UNKNOWN_REF" | "NOT_ADJACENT" | "INSUFFICIENT_HANDLES" | "NO_VISUAL_PARENT" | "DUPLICATE_ID" | "MISSING_ASSET" | "START_ON_SEQUENCE" | "MISSING_START" | "AMBIGUOUS_DURATION" | "INVALID_CHILD" | "INVALID_TIME_RANGE" | "UNKNOWN_TOKEN" | "UNKNOWN_STYLE" | "SCHEMA";
|
|
362
|
-
interface ResolveError {
|
|
363
|
-
readonly code: ResolveErrorCode;
|
|
364
|
-
readonly id: string;
|
|
365
|
-
readonly prop?: string;
|
|
366
|
-
readonly message: string;
|
|
367
|
-
}
|
|
368
|
-
declare function isResolveError(value: unknown): value is ResolveError;
|
|
369
|
-
type TimeRef = number | `word:${number}` | `word:${number}.end` | `shot:${number}` | `shot:${number}.end` | `silence:${number}` | `silence:${number}.end` | `marker:${string}`;
|
|
370
|
-
type ParsedTimeRef = {
|
|
371
|
-
readonly kind: "seconds";
|
|
372
|
-
readonly value: number;
|
|
373
|
-
} | {
|
|
374
|
-
readonly kind: "word" | "shot" | "silence";
|
|
375
|
-
readonly index: number;
|
|
376
|
-
readonly edge: "start" | "end";
|
|
377
|
-
} | {
|
|
378
|
-
readonly kind: "marker";
|
|
379
|
-
readonly id: string;
|
|
380
|
-
} | {
|
|
381
|
-
readonly kind: "invalid";
|
|
382
|
-
readonly reason: string;
|
|
383
|
-
};
|
|
384
|
-
declare function isTimeRefString(value: unknown): value is string;
|
|
385
|
-
declare function parseTimeRef(ref: unknown): ParsedTimeRef;
|
|
386
|
-
/**
|
|
387
|
-
* Turn a reference into seconds. Word, shot and silence references are source
|
|
388
|
-
* times on the asset; marker references are composition times.
|
|
389
|
-
*/
|
|
390
|
-
declare function resolveTimeRef(ref: unknown, asset: AssetEntry | null, markers: ReadonlyMap<string, number>, ctx: {
|
|
391
|
-
readonly id: string;
|
|
392
|
-
readonly prop: string;
|
|
393
|
-
}): number | ResolveError;
|
|
394
|
-
type Editable = "literal" | "generated" | "opaque";
|
|
395
|
-
/** Prop keys under this prefix address a Layer's handles rather than the Layer's own props. */
|
|
396
|
-
declare const INTERIOR_PREFIX = "interior.";
|
|
397
|
-
/**
|
|
398
|
-
* One vocabulary element as collected from the React element tree, before
|
|
399
|
-
* schema parsing and before placement. `props` are the raw JSX props minus
|
|
400
|
-
* `children`.
|
|
401
|
-
*/
|
|
402
|
-
interface CollectedNode {
|
|
403
|
-
readonly id: string;
|
|
404
|
-
readonly kind: string;
|
|
405
|
-
readonly props: Readonly<Record<string, unknown>>;
|
|
406
|
-
readonly children: readonly CollectedNode[];
|
|
407
|
-
/** Text content for elements whose children are text (Title). */
|
|
408
|
-
readonly text?: string;
|
|
409
|
-
readonly parent: string | null;
|
|
410
|
-
readonly editable: Editable;
|
|
411
|
-
/** Props whose source value is an expression the editor cannot write (known only when a SourceIndex was supplied). */
|
|
412
|
-
readonly lockedProps: readonly string[];
|
|
413
|
-
/** Prop → `schema` key for props that read the file's props; a write to one rewrites `defaults`. */
|
|
414
|
-
readonly boundProps: Readonly<Record<string, string>>;
|
|
415
|
-
/** For helper output: which helper produced the node, under which parent, and the helper's nth use in the file. */
|
|
416
|
-
readonly origin?: {
|
|
417
|
-
readonly helper: string;
|
|
418
|
-
readonly callerId: string | null;
|
|
419
|
-
readonly callIndex: number;
|
|
420
|
-
};
|
|
421
|
-
/** A Layer's handles: the one component inside it and its props. The component's body stays opaque. */
|
|
422
|
-
readonly interior?: LayerInterior;
|
|
423
|
-
}
|
|
424
|
-
interface LayerInterior {
|
|
425
|
-
readonly component: string;
|
|
426
|
-
readonly props: Readonly<Record<string, unknown>>;
|
|
427
|
-
}
|
|
428
|
-
interface CollectedTree {
|
|
429
|
-
readonly root: CollectedNode;
|
|
430
|
-
readonly byId: ReadonlyMap<string, CollectedNode>;
|
|
431
|
-
readonly errors: readonly ResolveError[];
|
|
432
|
-
}
|
|
433
|
-
declare function walk(node: CollectedNode, visit: (node: CollectedNode, depth: number) => void, depth?: number): void;
|
|
434
|
-
declare function findParentOf(tree: CollectedTree, id: string): CollectedNode | null;
|
|
435
|
-
type Json = null | boolean | number | string | Json[] | {
|
|
436
|
-
[key: string]: Json;
|
|
437
|
-
};
|
|
438
|
-
/** One change recorded by an action. Patches address elements by id, never by position in the file. */
|
|
439
|
-
type Patch = {
|
|
440
|
-
readonly op: "set";
|
|
441
|
-
readonly id: string;
|
|
442
|
-
readonly prop: string;
|
|
443
|
-
readonly value: Json | undefined;
|
|
444
|
-
} | {
|
|
445
|
-
readonly op: "text";
|
|
446
|
-
readonly id: string;
|
|
447
|
-
readonly text: string;
|
|
448
|
-
} | {
|
|
449
|
-
readonly op: "insert";
|
|
450
|
-
readonly id: string;
|
|
451
|
-
readonly parent: string;
|
|
452
|
-
readonly after: string | null;
|
|
453
|
-
readonly node: CollectedNode;
|
|
454
|
-
} | {
|
|
455
|
-
readonly op: "remove";
|
|
456
|
-
readonly id: string;
|
|
457
|
-
} | {
|
|
458
|
-
readonly op: "move";
|
|
459
|
-
readonly id: string;
|
|
460
|
-
readonly parent: string;
|
|
461
|
-
readonly after: string | null;
|
|
462
|
-
} | {
|
|
463
|
-
readonly op: "bake";
|
|
464
|
-
readonly id: string;
|
|
465
|
-
};
|
|
466
|
-
type Presence = "present" | "inserted" | "removed";
|
|
467
|
-
/** The reduced effect of every patch on one element. */
|
|
468
|
-
interface NetPatch {
|
|
469
|
-
readonly id: string;
|
|
470
|
-
presence: Presence;
|
|
471
|
-
readonly props: Map<string, Json | undefined>;
|
|
472
|
-
text?: string;
|
|
473
|
-
place?: {
|
|
474
|
-
parent: string;
|
|
475
|
-
after: string | null;
|
|
476
|
-
};
|
|
477
|
-
node?: CollectedNode;
|
|
478
|
-
bake: boolean;
|
|
479
|
-
}
|
|
480
|
-
interface PatchLog {
|
|
481
|
-
readonly entries: readonly Patch[];
|
|
482
|
-
readonly net: ReadonlyMap<string, NetPatch>;
|
|
483
|
-
/** Increments on every append or truncate; resolve() memoises on it. */
|
|
484
|
-
readonly version: number;
|
|
485
|
-
append(patch: Patch): void;
|
|
486
|
-
/** Current length, for history entries to remember what they appended. */
|
|
487
|
-
mark(): number;
|
|
488
|
-
/** Drop every entry at or after `mark` and rebuild `net`. */
|
|
489
|
-
truncate(mark: number): void;
|
|
490
|
-
clear(): void;
|
|
491
|
-
}
|
|
492
516
|
/**
|
|
493
517
|
* The built-in themes and motion styles a file can name. A theme is a palette,
|
|
494
518
|
* fonts, a corner radius, a motion style and named presets per element kind;
|
|
@@ -624,11 +648,40 @@ interface ResolvedState {
|
|
|
624
648
|
readonly log: PatchLog | undefined;
|
|
625
649
|
/** The composition's theme, its base merged in; the default theme when the file declares none. */
|
|
626
650
|
readonly theme: ResolvedTheme;
|
|
651
|
+
/** The faces the file declares (`font()`, `googleFont()`), which every renderer loads. */
|
|
652
|
+
readonly fonts: readonly DeclaredFont[];
|
|
653
|
+
/** The effects and transitions the file declares (`defineEffect()`, `defineTransition()`). */
|
|
654
|
+
readonly shaders: readonly ShaderDefinition[];
|
|
627
655
|
}
|
|
628
656
|
/** Absolute placements for every element, computed from the tree, the manifests and the patch log. Memoised per log on its version. */
|
|
629
657
|
declare function resolve(tree: CollectedTree, manifest: AssetManifest, log?: PatchLog): ResolvedState;
|
|
630
658
|
/** Whether two placements would render and edit the same; used to hand back the previous object. */
|
|
631
659
|
declare function samePlacement(a: Placement, b: Placement): boolean;
|
|
660
|
+
type TimeRef = number | `word:${number}` | `word:${number}.end` | `shot:${number}` | `shot:${number}.end` | `silence:${number}` | `silence:${number}.end` | `marker:${string}`;
|
|
661
|
+
type ParsedTimeRef = {
|
|
662
|
+
readonly kind: "seconds";
|
|
663
|
+
readonly value: number;
|
|
664
|
+
} | {
|
|
665
|
+
readonly kind: "word" | "shot" | "silence";
|
|
666
|
+
readonly index: number;
|
|
667
|
+
readonly edge: "start" | "end";
|
|
668
|
+
} | {
|
|
669
|
+
readonly kind: "marker";
|
|
670
|
+
readonly id: string;
|
|
671
|
+
} | {
|
|
672
|
+
readonly kind: "invalid";
|
|
673
|
+
readonly reason: string;
|
|
674
|
+
};
|
|
675
|
+
declare function isTimeRefString(value: unknown): value is string;
|
|
676
|
+
declare function parseTimeRef(ref: unknown): ParsedTimeRef;
|
|
677
|
+
/**
|
|
678
|
+
* Turn a reference into seconds. Word, shot and silence references are source
|
|
679
|
+
* times on the asset; marker references are composition times.
|
|
680
|
+
*/
|
|
681
|
+
declare function resolveTimeRef(ref: unknown, asset: AssetEntry | null, markers: ReadonlyMap<string, number>, ctx: {
|
|
682
|
+
readonly id: string;
|
|
683
|
+
readonly prop: string;
|
|
684
|
+
}): number | ResolveError;
|
|
632
685
|
type ActionErrorCode = "ELEMENT_NOT_FOUND" | "TRACK_LOCKED" | "LOCKED_PROP" | "OPAQUE_TARGET" | "INVALID_PARAMS" | "INVALID_TIME_RANGE" | "OUT_OF_BOUNDS" | "NOT_ADJACENT" | "INSUFFICIENT_HANDLES" | "CYCLE" | "DUPLICATE_ID" | "UNSUPPORTED_ON_LAYOUT" | "UNKNOWN_ACTION" | "NOT_IMPLEMENTED";
|
|
633
686
|
interface ActionError {
|
|
634
687
|
readonly code: ActionErrorCode;
|
|
@@ -844,31 +897,11 @@ interface ClipActions {
|
|
|
844
897
|
id: Id;
|
|
845
898
|
value: boolean;
|
|
846
899
|
};
|
|
847
|
-
"clip/setPitchCorrection": {
|
|
848
|
-
id: Id;
|
|
849
|
-
value: boolean;
|
|
850
|
-
};
|
|
851
|
-
"clip/setSmoothSlowMo": {
|
|
852
|
-
id: Id;
|
|
853
|
-
value: boolean;
|
|
854
|
-
};
|
|
855
|
-
"clip/setStabilization": {
|
|
856
|
-
id: Id;
|
|
857
|
-
value?: Json;
|
|
858
|
-
};
|
|
859
|
-
"clip/setChromaKey": {
|
|
860
|
-
id: Id;
|
|
861
|
-
value?: Json;
|
|
862
|
-
};
|
|
863
900
|
"clip/setBlend": {
|
|
864
901
|
id: Id;
|
|
865
902
|
mode?: string;
|
|
866
903
|
opacity?: number;
|
|
867
904
|
};
|
|
868
|
-
"clip/setEmphasis": {
|
|
869
|
-
id: Id;
|
|
870
|
-
value?: Json;
|
|
871
|
-
};
|
|
872
905
|
"clip/setFit": {
|
|
873
906
|
id: Id;
|
|
874
907
|
value?: string;
|
|
@@ -946,13 +979,6 @@ interface EffectActions {
|
|
|
946
979
|
"effect/toggle": ChildStack<string>["toggle"];
|
|
947
980
|
"effect/setOrder": ChildStack<string>["setOrder"];
|
|
948
981
|
"effect/setStack": ChildStack<string>["setStack"];
|
|
949
|
-
"audioEffect/add": ChildStack<string>["add"];
|
|
950
|
-
"audioEffect/remove": ChildStack<string>["remove"];
|
|
951
|
-
"audioEffect/restore": ChildStack<string>["restore"];
|
|
952
|
-
"audioEffect/update": ChildStack<string>["update"];
|
|
953
|
-
"audioEffect/toggle": ChildStack<string>["toggle"];
|
|
954
|
-
"audioEffect/setOrder": ChildStack<string>["setOrder"];
|
|
955
|
-
"audioEffect/setStack": ChildStack<string>["setStack"];
|
|
956
982
|
"colorGrade/set": {
|
|
957
983
|
id: Id;
|
|
958
984
|
grading?: Readonly<Record<string, Json>>;
|
|
@@ -966,7 +992,6 @@ interface KeyframeActions {
|
|
|
966
992
|
at: number;
|
|
967
993
|
value: Json;
|
|
968
994
|
easing?: string;
|
|
969
|
-
handles?: Json;
|
|
970
995
|
};
|
|
971
996
|
"keyframe/remove": {
|
|
972
997
|
id: Id;
|
|
@@ -982,8 +1007,6 @@ interface KeyframeActions {
|
|
|
982
1007
|
keyId: Id;
|
|
983
1008
|
value?: Json;
|
|
984
1009
|
easing?: string;
|
|
985
|
-
handles?: Json;
|
|
986
|
-
roving?: boolean;
|
|
987
1010
|
};
|
|
988
1011
|
"keyframe/move": {
|
|
989
1012
|
id: Id;
|
|
@@ -1003,7 +1026,8 @@ interface TransitionActions {
|
|
|
1003
1026
|
on: Id;
|
|
1004
1027
|
edge: "in" | "out";
|
|
1005
1028
|
};
|
|
1006
|
-
|
|
1029
|
+
/** A built-in transition, or one the file declares with `defineTransition()`. */
|
|
1030
|
+
type: TransitionType | (string & {});
|
|
1007
1031
|
duration: number;
|
|
1008
1032
|
params?: Readonly<Record<string, Json>>;
|
|
1009
1033
|
};
|
|
@@ -1018,7 +1042,7 @@ interface TransitionActions {
|
|
|
1018
1042
|
};
|
|
1019
1043
|
"transition/update": {
|
|
1020
1044
|
transitionId: Id;
|
|
1021
|
-
type?: TransitionType;
|
|
1045
|
+
type?: TransitionType | (string & {});
|
|
1022
1046
|
duration?: number;
|
|
1023
1047
|
params?: Readonly<Record<string, Json>>;
|
|
1024
1048
|
};
|
|
@@ -1278,4 +1302,4 @@ declare const AUTO_GROUP_TYPES: ReadonlySet<ActionType>;
|
|
|
1278
1302
|
declare const TARGET_PARAM_KEYS: readonly ["id", "leftId", "trackId", "transitionId", "childId", "keyId", "captionId", "captionsId", "cutId", "markerId"];
|
|
1279
1303
|
declare function targetIdOf(action: ActionInput): string | null;
|
|
1280
1304
|
declare function describeAction(action: ActionInput): string;
|
|
1281
|
-
export {
|
|
1305
|
+
export { FONT_KEYS as $, zTrackRole as $t, ValidationResult as A, ShaderDefinition as An, TEXT_DECORATIONS as At, Placement as B, Shot as Bn, VIDEO_EFFECT_TYPES as Bt, TransitionActions as C, MODULE_FONTS as Cn, KEYFRAME_PROPERTY_PATTERN as Ct, ActionErrorCode as D, googleFont as Dn, SVG_COLOR_MODES as Dt, ActionError as E, fontsOf as En, SHAPE_TYPES as Et, ParsedTimeRef as F, shadersOf as Fn, TRANSITION_TYPES as Ft, ResolvedTheme as G, assetIdOf as Gn, zEasing as Gt, ResolvedTrack as H, SubjectBox as Hn, isKeyframeProperty as Ht, TimeRef as I, usesShaders as In, TrackFlag as It, Themed as J, zKeyframeProperty as Jt, ThemeIssue as K, lookupAsset as Kn, zFitMode as Kt, isTimeRefString as L, AssetEntry as Ln, TrackLayout as Lt, nodeOfSpec as M, defineEffect as Mn, TRACK_FLAGS as Mt, nodeSpecOf as N, defineTransition as Nn, TRACK_LAYOUTS as Nt, NodeSpec as O, isBundledFont as On, TEXT_ALIGNS as Ot, ok as P, shaderFor as Pn, TRACK_ROLES as Pt, DEFAULT_THEME as Q, zTrackLayout as Qt, parseTimeRef as R, AssetManifest as Rn, TrackRole as Rt, TransformActions as S, FontStyle as Sn, KEYFRAME_PROPERTIES as St, targetIdOf as T, font as Tn, MASK_TYPES as Tt, resolve as U, TranscriptWord as Un, zBlendMode as Ut, ResolvedState as V, Silence as Vn, VideoEffectType as Vt, samePlacement as W, WaveformSummary as Wn, zCaptionAnimation as Wt, resolveTheme as X, zShapeType as Xt, applyTheme as Y, zMaskEasing as Yt, themeToken as Z, zTextAnimationPreset as Zt, OverlayActions as _, BUNDLED_FONTS as _n, EASINGS as _t, ActionType as a, PatchLog as an, PALETTE_KEYS as at, TARGET_PARAM_KEYS as b, DeclaredFont as bn, FitMode as bt, ClipActions as c, CollectedTree as cn, THEME_NAMES as ct, KeyframeActions as d, LayerInterior as dn, ANIMATION_UNITS as dt, zTransitionType as en, MOTIONS as et, LayerActions as f, findParentOf as fn, AUTOMATION_LANES as ft, Namespace as g, isResolveError as gn, CAPTION_POSITIONS as gt, MulticamActions as h, ResolveErrorCode as hn, CAPTION_ANIMATIONS as ht, ActionMap as i, Patch as in, MotionStyle as it, invalid as j, collectShaders as jn, TEXT_VALIGNS as jt, PlacementSpec as k, MODULE_SHADERS as kn, TEXT_ANIMATION_PRESETS as kt, CompositionActions as l, Editable as ln, ThemeDefinition as lt, MaskActions as m, ResolveError as mn, BlendMode as mt, Action as n, Json as nn, MotionAnimation as nt, AudioActions as o, Presence as on, Presets as ot, MarkerActions as p, walk as pn, BLEND_MODES as pt, ThemeOrigin as q, zGraphicAnimation as qt, ActionInput as r, NetPatch as rn, MotionName as rt, CaptionActions as s, CollectedNode as sn, THEMES as st, AUTO_GROUP_TYPES as t, zVideoEffectType as tn, MOTION_NAMES as tt, EffectActions as u, INTERIOR_PREFIX as un, ThemeName as ut, SourceActions as v, BUNDLED_FONT_WEIGHTS as vn, Easing as vt, describeAction as w, collectFonts as wn, MASK_EASINGS as wt, TrackActions as x, FontSource as xn, GRAPHIC_ANIMATIONS as xt, SpeedActions as y, BundledFont as yn, FIT_MODES as yt, resolveTimeRef as z, EMPTY_MANIFEST as zn, TransitionType as zt };
|