motionrender 0.0.0-stage → 0.2.1
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/LICENSE +21 -0
- package/README.md +61 -2
- package/blocks/badge.json +68 -0
- package/blocks/big-stat.json +240 -0
- package/blocks/cta-end.json +283 -0
- package/blocks/feature-list.json +286 -0
- package/blocks/footage.json +43 -0
- package/blocks/fx-background-swap.json +170 -0
- package/blocks/fx-before-after.json +212 -0
- package/blocks/fx-captions.json +34 -0
- package/blocks/fx-chat.json +368 -0
- package/blocks/fx-checklist.json +609 -0
- package/blocks/fx-clone-wall.json +181 -0
- package/blocks/fx-color-pop.json +92 -0
- package/blocks/fx-command-bridge.json +358 -0
- package/blocks/fx-counter-hero.json +206 -0
- package/blocks/fx-cta-card.json +337 -0
- package/blocks/fx-day-to-night.json +174 -0
- package/blocks/fx-duo-title.json +245 -0
- package/blocks/fx-duotone.json +95 -0
- package/blocks/fx-extruded-title.json +309 -0
- package/blocks/fx-gallery.json +239 -0
- package/blocks/fx-glass-cards.json +921 -0
- package/blocks/fx-glitch-title.json +373 -0
- package/blocks/fx-grade-look.json +91 -0
- package/blocks/fx-highlighter.json +53 -0
- package/blocks/fx-icon-orbit.json +2694 -0
- package/blocks/fx-lens-flare.json +325 -0
- package/blocks/fx-letterbox.json +105 -0
- package/blocks/fx-light-leak.json +140 -0
- package/blocks/fx-map-journey.json +443 -0
- package/blocks/fx-neon-outline.json +743 -0
- package/blocks/fx-notifications.json +456 -0
- package/blocks/fx-progress-ring.json +143 -0
- package/blocks/fx-pull-out.json +68 -0
- package/blocks/fx-punch-in.json +81 -0
- package/blocks/fx-rgb-flash.json +166 -0
- package/blocks/fx-shake-hit.json +120 -0
- package/blocks/fx-split-reveal.json +110 -0
- package/blocks/fx-spotlight.json +1383 -0
- package/blocks/fx-stats-split.json +500 -0
- package/blocks/fx-step-tracker.json +528 -0
- package/blocks/fx-sticker-freeze.json +584 -0
- package/blocks/fx-strike-rewrite.json +79 -0
- package/blocks/fx-ticker.json +179 -0
- package/blocks/fx-timeline.json +1287 -0
- package/blocks/fx-tracked-label.json +167 -0
- package/blocks/fx-typewriter-quote.json +164 -0
- package/blocks/handle.json +43 -0
- package/blocks/icon-row.json +404 -0
- package/blocks/image-caption.json +248 -0
- package/blocks/lower-third.json +106 -0
- package/blocks/phone-mockup.json +459 -0
- package/blocks/progress-bar.json +51 -0
- package/blocks/quote.json +347 -0
- package/blocks/section-title.json +240 -0
- package/blocks/split-screen.json +283 -0
- package/blocks/stat-grid.json +315 -0
- package/blocks/steps.json +266 -0
- package/blocks/title-hero.json +287 -0
- package/dist/builder.d.ts +1 -0
- package/dist/builder.js +169 -0
- package/dist/cli.js +9301 -0
- package/dist/fonts/LICENSE-Inter.txt +93 -0
- package/dist/fonts/inter-cyrillic-ext-opsz-italic.woff2 +0 -0
- package/dist/fonts/inter-cyrillic-ext-opsz-normal.woff2 +0 -0
- package/dist/fonts/inter-cyrillic-opsz-italic.woff2 +0 -0
- package/dist/fonts/inter-cyrillic-opsz-normal.woff2 +0 -0
- package/dist/fonts/inter-greek-ext-opsz-italic.woff2 +0 -0
- package/dist/fonts/inter-greek-ext-opsz-normal.woff2 +0 -0
- package/dist/fonts/inter-greek-opsz-italic.woff2 +0 -0
- package/dist/fonts/inter-greek-opsz-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-ext-opsz-italic.woff2 +0 -0
- package/dist/fonts/inter-latin-ext-opsz-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-opsz-italic.woff2 +0 -0
- package/dist/fonts/inter-latin-opsz-normal.woff2 +0 -0
- package/dist/fonts/inter-vietnamese-opsz-italic.woff2 +0 -0
- package/dist/fonts/inter-vietnamese-opsz-normal.woff2 +0 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2330 -0
- package/dist/player.d.ts +1 -0
- package/dist/player.js +80 -0
- package/dist/react.d.ts +1 -0
- package/dist/react.js +140 -0
- package/dist/runtime/canvas-runtime.js +261 -0
- package/dist/runtime/lottie_light_canvas.min.js +1 -0
- package/dist/runtime/text-layout.js +50 -0
- package/dist/sfx/click.wav +0 -0
- package/dist/sfx/ding.wav +0 -0
- package/dist/sfx/pop.wav +0 -0
- package/dist/sfx/riser.wav +0 -0
- package/dist/sfx/thump.wav +0 -0
- package/dist/sfx/tick.wav +0 -0
- package/dist/sfx/whoosh.wav +0 -0
- package/dist/types/packages/ai/src/assets.d.ts +26 -0
- package/dist/types/packages/ai/src/batch.d.ts +19 -0
- package/dist/types/packages/ai/src/compose.d.ts +34 -0
- package/dist/types/packages/ai/src/history.d.ts +37 -0
- package/dist/types/packages/ai/src/image.d.ts +19 -0
- package/dist/types/packages/ai/src/index.d.ts +13 -0
- package/dist/types/packages/ai/src/json.d.ts +2 -0
- package/dist/types/packages/ai/src/narrate.d.ts +63 -0
- package/dist/types/packages/ai/src/patch.d.ts +15 -0
- package/dist/types/packages/ai/src/project.d.ts +27 -0
- package/dist/types/packages/ai/src/prompt.d.ts +30 -0
- package/dist/types/packages/ai/src/providers.d.ts +109 -0
- package/dist/types/packages/ai/src/template.d.ts +80 -0
- package/dist/types/packages/ai/src/voiceover.d.ts +49 -0
- package/dist/types/packages/animation/src/index.d.ts +27 -0
- package/dist/types/packages/assets/src/cache.d.ts +26 -0
- package/dist/types/packages/assets/src/index.d.ts +8 -0
- package/dist/types/packages/builder/src/index.d.ts +270 -0
- package/dist/types/packages/cli/src/ai-studio-page.d.ts +1 -0
- package/dist/types/packages/cli/src/ai-studio.d.ts +35 -0
- package/dist/types/packages/cli/src/ai.d.ts +3 -0
- package/dist/types/packages/cli/src/args.d.ts +9 -0
- package/dist/types/packages/cli/src/blocks-cli.d.ts +3 -0
- package/dist/types/packages/cli/src/blocks.d.ts +50 -0
- package/dist/types/packages/cli/src/build.d.ts +1 -0
- package/dist/types/packages/cli/src/dev-page.d.ts +1 -0
- package/dist/types/packages/cli/src/dev.d.ts +13 -0
- package/dist/types/packages/cli/src/index.d.ts +2 -0
- package/dist/types/packages/cli/src/init.d.ts +10 -0
- package/dist/types/packages/cli/src/serve.d.ts +2 -0
- package/dist/types/packages/cli/src/studio.d.ts +36 -0
- package/dist/types/packages/cli/src/templates.d.ts +63 -0
- package/dist/types/packages/cli/src/thumbnail.d.ts +20 -0
- package/dist/types/packages/cli/src/track.d.ts +35 -0
- package/dist/types/packages/cli/src/worker.d.ts +13 -0
- package/dist/types/packages/contracts/src/index.d.ts +377 -0
- package/dist/types/packages/core/src/audio.d.ts +14 -0
- package/dist/types/packages/core/src/distributed.d.ts +50 -0
- package/dist/types/packages/core/src/index.d.ts +63 -0
- package/dist/types/packages/core/src/media.d.ts +11 -0
- package/dist/types/packages/core/src/review.d.ts +29 -0
- package/dist/types/packages/ffmpeg/src/index.d.ts +68 -0
- package/dist/types/packages/graphics/src/fonts.d.ts +3 -0
- package/dist/types/packages/graphics/src/index.d.ts +121 -0
- package/dist/types/packages/graphics/src/runtime.d.ts +10 -0
- package/dist/types/packages/jobs/src/env.d.ts +78 -0
- package/dist/types/packages/jobs/src/handlers.d.ts +17 -0
- package/dist/types/packages/jobs/src/index.d.ts +5 -0
- package/dist/types/packages/jobs/src/input.d.ts +18 -0
- package/dist/types/packages/jobs/src/queue.d.ts +70 -0
- package/dist/types/packages/jobs/src/redis.d.ts +42 -0
- package/dist/types/packages/player/src/bundle.d.ts +4 -0
- package/dist/types/packages/player/src/canvas-runtime.d.ts +11 -0
- package/dist/types/packages/player/src/index.d.ts +29 -0
- package/dist/types/packages/react/src/index.d.ts +76 -0
- package/dist/types/packages/renderer/src/index.d.ts +35 -0
- package/dist/types/packages/renderer/src/pool.d.ts +7 -0
- package/dist/types/packages/renderer/src/video.d.ts +9 -0
- package/dist/types/packages/schema/src/captions.d.ts +24 -0
- package/dist/types/packages/schema/src/expression.d.ts +1 -0
- package/dist/types/packages/schema/src/index.d.ts +1213 -0
- package/dist/types/packages/schema/src/variables.d.ts +115 -0
- package/dist/types/packages/storage/src/index.d.ts +78 -0
- package/dist/types/packages/timeline/src/index.d.ts +104 -0
- package/package.json +78 -4
- package/skills/ove/SKILL.md +356 -0
- package/skills/ove-ai-compose/SKILL.md +36 -0
- package/skills/ove-batch-videos/SKILL.md +23 -0
- package/skills/ove-code-video/SKILL.md +68 -0
- package/skills/ove-effects/SKILL.md +65 -0
- package/skills/ove-make-reel/SKILL.md +30 -0
- package/skills/ove-voiceover-captions/SKILL.md +31 -0
- package/studio/assets/index-CzOvWv9w.css +1 -0
- package/studio/assets/index-J_fvKgng.js +11 -0
- package/studio/index.html +16 -0
- package/templates/case-study/composition.json +358 -0
- package/templates/case-study/template.json +8 -0
- package/templates/event-invite/composition.json +245 -0
- package/templates/event-invite/template.json +8 -0
- package/templates/explainer-square/composition.json +1335 -0
- package/templates/explainer-square/template.json +13 -0
- package/templates/keynote-wide/composition.json +1458 -0
- package/templates/keynote-wide/template.json +13 -0
- package/templates/launch-wide/composition.json +1306 -0
- package/templates/launch-wide/template.json +13 -0
- package/templates/product-card/composition.json +196 -0
- package/templates/product-card/data.example.json +5 -0
- package/templates/product-card/template.json +8 -0
- package/templates/product-wide/composition.json +1609 -0
- package/templates/product-wide/template.json +14 -0
- package/templates/quote-card/composition.json +123 -0
- package/templates/quote-card/template.json +8 -0
- package/templates/sale-promo/composition.json +290 -0
- package/templates/sale-promo/template.json +8 -0
- package/templates/showcase-tall/composition.json +1646 -0
- package/templates/showcase-tall/template.json +14 -0
- package/templates/slideshow/composition.json +167 -0
- package/templates/slideshow/template.json +8 -0
- package/templates/social-reel/composition.json +252 -0
- package/templates/social-reel/template.json +8 -0
- package/templates/starter/assets/logo.svg +4 -0
- package/templates/starter/composition.json +84 -0
- package/templates/story-tall/composition.json +1379 -0
- package/templates/story-tall/template.json +13 -0
- package/themes/espresso.json +15 -0
- package/themes/midnight.json +15 -0
- package/themes/neon.json +15 -0
- package/themes/paper.json +15 -0
- package/themes/signal.json +15 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const colorPattern: RegExp;
|
|
3
|
+
export declare const listFieldSchema: z.ZodObject<{
|
|
4
|
+
type: z.ZodEnum<{
|
|
5
|
+
string: "string";
|
|
6
|
+
number: "number";
|
|
7
|
+
boolean: "boolean";
|
|
8
|
+
color: "color";
|
|
9
|
+
}>;
|
|
10
|
+
default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
|
|
11
|
+
description: z.ZodOptional<z.ZodString>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
export declare const variableSchema: z.ZodObject<{
|
|
14
|
+
type: z.ZodEnum<{
|
|
15
|
+
string: "string";
|
|
16
|
+
number: "number";
|
|
17
|
+
boolean: "boolean";
|
|
18
|
+
color: "color";
|
|
19
|
+
list: "list";
|
|
20
|
+
}>;
|
|
21
|
+
default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>]>>;
|
|
22
|
+
description: z.ZodOptional<z.ZodString>;
|
|
23
|
+
items: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
24
|
+
type: z.ZodEnum<{
|
|
25
|
+
string: "string";
|
|
26
|
+
number: "number";
|
|
27
|
+
boolean: "boolean";
|
|
28
|
+
color: "color";
|
|
29
|
+
}>;
|
|
30
|
+
default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
|
|
31
|
+
description: z.ZodOptional<z.ZodString>;
|
|
32
|
+
}, z.core.$strip>>>;
|
|
33
|
+
}, z.core.$strip>;
|
|
34
|
+
export declare const variablesSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
35
|
+
type: z.ZodEnum<{
|
|
36
|
+
string: "string";
|
|
37
|
+
number: "number";
|
|
38
|
+
boolean: "boolean";
|
|
39
|
+
color: "color";
|
|
40
|
+
list: "list";
|
|
41
|
+
}>;
|
|
42
|
+
default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>]>>;
|
|
43
|
+
description: z.ZodOptional<z.ZodString>;
|
|
44
|
+
items: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
45
|
+
type: z.ZodEnum<{
|
|
46
|
+
string: "string";
|
|
47
|
+
number: "number";
|
|
48
|
+
boolean: "boolean";
|
|
49
|
+
color: "color";
|
|
50
|
+
}>;
|
|
51
|
+
default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
|
|
52
|
+
description: z.ZodOptional<z.ZodString>;
|
|
53
|
+
}, z.core.$strip>>>;
|
|
54
|
+
}, z.core.$strip>>;
|
|
55
|
+
export declare const componentSchema: z.ZodObject<{
|
|
56
|
+
description: z.ZodOptional<z.ZodString>;
|
|
57
|
+
params: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
58
|
+
type: z.ZodEnum<{
|
|
59
|
+
string: "string";
|
|
60
|
+
number: "number";
|
|
61
|
+
boolean: "boolean";
|
|
62
|
+
color: "color";
|
|
63
|
+
list: "list";
|
|
64
|
+
}>;
|
|
65
|
+
default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>]>>;
|
|
66
|
+
description: z.ZodOptional<z.ZodString>;
|
|
67
|
+
items: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
68
|
+
type: z.ZodEnum<{
|
|
69
|
+
string: "string";
|
|
70
|
+
number: "number";
|
|
71
|
+
boolean: "boolean";
|
|
72
|
+
color: "color";
|
|
73
|
+
}>;
|
|
74
|
+
default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
|
|
75
|
+
description: z.ZodOptional<z.ZodString>;
|
|
76
|
+
}, z.core.$strip>>>;
|
|
77
|
+
}, z.core.$strip>>>;
|
|
78
|
+
layers: z.ZodArray<z.ZodUnknown>;
|
|
79
|
+
}, z.core.$strip>;
|
|
80
|
+
export declare const componentsSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
81
|
+
description: z.ZodOptional<z.ZodString>;
|
|
82
|
+
params: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
83
|
+
type: z.ZodEnum<{
|
|
84
|
+
string: "string";
|
|
85
|
+
number: "number";
|
|
86
|
+
boolean: "boolean";
|
|
87
|
+
color: "color";
|
|
88
|
+
list: "list";
|
|
89
|
+
}>;
|
|
90
|
+
default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>]>>;
|
|
91
|
+
description: z.ZodOptional<z.ZodString>;
|
|
92
|
+
items: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
93
|
+
type: z.ZodEnum<{
|
|
94
|
+
string: "string";
|
|
95
|
+
number: "number";
|
|
96
|
+
boolean: "boolean";
|
|
97
|
+
color: "color";
|
|
98
|
+
}>;
|
|
99
|
+
default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
|
|
100
|
+
description: z.ZodOptional<z.ZodString>;
|
|
101
|
+
}, z.core.$strip>>>;
|
|
102
|
+
}, z.core.$strip>>>;
|
|
103
|
+
layers: z.ZodArray<z.ZodUnknown>;
|
|
104
|
+
}, z.core.$strip>>;
|
|
105
|
+
export type VariableDeclaration = z.infer<typeof variableSchema>;
|
|
106
|
+
export type ListItem = Record<string, unknown>;
|
|
107
|
+
export type VariableValue = string | number | boolean | ListItem[];
|
|
108
|
+
export declare class VariableError extends Error {
|
|
109
|
+
readonly problems: string[];
|
|
110
|
+
constructor(problems: string[]);
|
|
111
|
+
}
|
|
112
|
+
export declare function coerceVariable(label: string, declaration: VariableDeclaration | z.infer<typeof listFieldSchema>, value: unknown): VariableValue;
|
|
113
|
+
export declare function resolveVariables(declarations: Record<string, VariableDeclaration>, supplied?: Record<string, unknown>): Record<string, VariableValue>;
|
|
114
|
+
export declare function substituteVariables(raw: unknown, values: Record<string, VariableValue>, extra?: Record<string, unknown>): unknown;
|
|
115
|
+
export declare const interpolate: (template: string, values: Record<string, VariableValue>) => string;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { type Revision, type RevisionMeta } from '../../ai/src/index.js';
|
|
2
|
+
export type { Revision, RevisionMeta };
|
|
3
|
+
/** Who is asking. Local use has one fixed principal; a hosted API makes one per signed-in user. */
|
|
4
|
+
export type Principal = {
|
|
5
|
+
userId: string;
|
|
6
|
+
tenantId: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const LOCAL_PRINCIPAL: Principal;
|
|
9
|
+
export type StoredAsset = {
|
|
10
|
+
name: string;
|
|
11
|
+
path: string;
|
|
12
|
+
kind: string;
|
|
13
|
+
bytes: number;
|
|
14
|
+
};
|
|
15
|
+
export interface ProjectStore {
|
|
16
|
+
/** Folder names under the principal's space; not every one is a valid project. */
|
|
17
|
+
ids(who: Principal): Promise<string[]>;
|
|
18
|
+
exists(who: Principal, id: string): Promise<boolean>;
|
|
19
|
+
/** Makes an empty project folder named after `name` and gives its id (a name that is taken gets -2, -3, ...). */
|
|
20
|
+
create(who: Principal, name: string): Promise<string>;
|
|
21
|
+
readRaw(who: Principal, id: string): Promise<any>;
|
|
22
|
+
/** With `meta`, the change is kept as a numbered revision (and what was there before, the first time). */
|
|
23
|
+
writeRaw(who: Principal, id: string, raw: unknown, meta?: RevisionMeta): Promise<void>;
|
|
24
|
+
modified(who: Principal, id: string): Promise<number>;
|
|
25
|
+
duplicate(who: Principal, id: string, rename: (raw: any) => any): Promise<string>;
|
|
26
|
+
/** Moves the project aside so it can be brought back by hand. */
|
|
27
|
+
trash(who: Principal, id: string): Promise<void>;
|
|
28
|
+
assets(who: Principal, id: string): Promise<StoredAsset[]>;
|
|
29
|
+
putAsset(who: Principal, id: string, name: string, bytes: Buffer): Promise<StoredAsset[]>;
|
|
30
|
+
/** The saved thumbnail, only while it is newer than the composition. */
|
|
31
|
+
thumb(who: Principal, id: string): Promise<Buffer | undefined>;
|
|
32
|
+
putThumb(who: Principal, id: string, png: Buffer): Promise<void>;
|
|
33
|
+
revisions(who: Principal, id: string): Promise<Revision[]>;
|
|
34
|
+
restore(who: Principal, id: string, n: number): Promise<Revision>;
|
|
35
|
+
/** Bytes this principal's projects take up on disk. */
|
|
36
|
+
usedBytes(who: Principal): Promise<number>;
|
|
37
|
+
/** A local folder with the project's files, for work that needs real files. Call commit() when the work wrote something. */
|
|
38
|
+
workdir(who: Principal, id: string): Promise<{
|
|
39
|
+
dir: string;
|
|
40
|
+
commit(): Promise<void>;
|
|
41
|
+
}>;
|
|
42
|
+
}
|
|
43
|
+
export declare const assetKinds: Record<string, string>;
|
|
44
|
+
export declare const slugify: (text: string) => string;
|
|
45
|
+
/** True when target is a file or folder strictly below root (root itself is not allowed). */
|
|
46
|
+
export declare function within(root: string, target: string): boolean;
|
|
47
|
+
/** Projects as folders under one root. The local principal uses the root itself; any other tenant gets its own folder, `_tenants/<id>`. */
|
|
48
|
+
export declare class FsProjectStore implements ProjectStore {
|
|
49
|
+
readonly root: string;
|
|
50
|
+
constructor(root: string);
|
|
51
|
+
/** The folder this principal's projects live in. */
|
|
52
|
+
tenantRoot(who: Principal): string;
|
|
53
|
+
/** A path inside the principal's space: relative values resolve from `base` (default: the space itself), absolute ones must already be inside. */
|
|
54
|
+
resolve(who: Principal, value: string, label?: string, base?: string): string;
|
|
55
|
+
/** The path as the studio shows and serves it: forward slashes, relative to the principal's space. */
|
|
56
|
+
relative(who: Principal, file: string): string;
|
|
57
|
+
projectDir(who: Principal, id: string): string;
|
|
58
|
+
private file;
|
|
59
|
+
ids(who: Principal): Promise<string[]>;
|
|
60
|
+
exists(who: Principal, id: string): Promise<boolean>;
|
|
61
|
+
create(who: Principal, name: string): Promise<string>;
|
|
62
|
+
readRaw(who: Principal, id: string): Promise<any>;
|
|
63
|
+
writeRaw(who: Principal, id: string, raw: unknown, meta?: RevisionMeta): Promise<void>;
|
|
64
|
+
modified(who: Principal, id: string): Promise<number>;
|
|
65
|
+
duplicate(who: Principal, id: string, rename: (raw: any) => any): Promise<string>;
|
|
66
|
+
trash(who: Principal, id: string): Promise<void>;
|
|
67
|
+
assets(who: Principal, id: string): Promise<StoredAsset[]>;
|
|
68
|
+
putAsset(who: Principal, id: string, name: string, bytes: Buffer): Promise<StoredAsset[]>;
|
|
69
|
+
thumb(who: Principal, id: string): Promise<NonSharedBuffer | undefined>;
|
|
70
|
+
putThumb(who: Principal, id: string, png: Buffer): Promise<void>;
|
|
71
|
+
usedBytes(who: Principal): Promise<number>;
|
|
72
|
+
revisions(who: Principal, id: string): Promise<Revision[]>;
|
|
73
|
+
restore(who: Principal, id: string, n: number): Promise<Revision>;
|
|
74
|
+
workdir(who: Principal, id: string): Promise<{
|
|
75
|
+
dir: string;
|
|
76
|
+
commit: () => Promise<void>;
|
|
77
|
+
}>;
|
|
78
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type { Composition, Layer } from '../../schema/src/index.js';
|
|
2
|
+
export type UnitValues = {
|
|
3
|
+
x?: number;
|
|
4
|
+
y?: number;
|
|
5
|
+
opacity?: number;
|
|
6
|
+
scale?: number;
|
|
7
|
+
rotation?: number;
|
|
8
|
+
blur?: number;
|
|
9
|
+
color?: string;
|
|
10
|
+
};
|
|
11
|
+
export type EvaluatedLayer = Layer & {
|
|
12
|
+
evaluated: Record<string, number | string>;
|
|
13
|
+
localFrame: number;
|
|
14
|
+
children?: EvaluatedLayer[];
|
|
15
|
+
units?: UnitValues[];
|
|
16
|
+
morph?: {
|
|
17
|
+
from: string;
|
|
18
|
+
to: string;
|
|
19
|
+
t: number;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
type SplitAnimation = {
|
|
23
|
+
property: string;
|
|
24
|
+
keyframes: {
|
|
25
|
+
frame: number;
|
|
26
|
+
value: number | string;
|
|
27
|
+
easing?: any;
|
|
28
|
+
}[];
|
|
29
|
+
};
|
|
30
|
+
export declare function splitPresetAnimations(preset: string, duration: number, fontSize: number): SplitAnimation[];
|
|
31
|
+
export declare function splitCount(layer: any): number;
|
|
32
|
+
export declare const frameToSeconds: (frame: number, fps: number) => number;
|
|
33
|
+
export declare const secondsToFrame: (seconds: number, fps: number) => number;
|
|
34
|
+
type Transition = NonNullable<Composition['scenes'][number]['transitionIn']>;
|
|
35
|
+
export declare function transitionState(effects: {
|
|
36
|
+
transition: Transition;
|
|
37
|
+
progress: number;
|
|
38
|
+
}[], width: number, height: number): {
|
|
39
|
+
x: number;
|
|
40
|
+
y: number;
|
|
41
|
+
opacity: number;
|
|
42
|
+
scale: number;
|
|
43
|
+
clip: {
|
|
44
|
+
x: number;
|
|
45
|
+
y: number;
|
|
46
|
+
width: number;
|
|
47
|
+
height: number;
|
|
48
|
+
} | undefined;
|
|
49
|
+
clipPath: string | undefined;
|
|
50
|
+
blur: number;
|
|
51
|
+
overlay: {
|
|
52
|
+
color: string;
|
|
53
|
+
opacity: number;
|
|
54
|
+
} | undefined;
|
|
55
|
+
};
|
|
56
|
+
export declare function cameraState(camera: NonNullable<Composition['scenes'][number]['camera']>, frame: number, width: number, height: number): {
|
|
57
|
+
x: number;
|
|
58
|
+
y: number;
|
|
59
|
+
zoom: number;
|
|
60
|
+
rotation: number;
|
|
61
|
+
};
|
|
62
|
+
export declare function evaluateFrame(composition: Composition, frame: number): EvaluatedLayer[];
|
|
63
|
+
export declare function videoFrameIndex(layer: {
|
|
64
|
+
trimStart: number;
|
|
65
|
+
playbackRate: number;
|
|
66
|
+
loop: boolean;
|
|
67
|
+
}, ownFrame: number, frameCount: number): number;
|
|
68
|
+
export type LayerWindow = {
|
|
69
|
+
layer: Layer;
|
|
70
|
+
startFrame: number;
|
|
71
|
+
endFrame: number;
|
|
72
|
+
};
|
|
73
|
+
export type AudioWindow = LayerWindow;
|
|
74
|
+
export declare function layerWindows(composition: Composition, include: (layer: Layer) => boolean): LayerWindow[];
|
|
75
|
+
export declare const audioWindows: (composition: Composition) => AudioWindow[];
|
|
76
|
+
export type SoundMedia = Record<string, {
|
|
77
|
+
duration: number;
|
|
78
|
+
segments: {
|
|
79
|
+
start: number;
|
|
80
|
+
end: number;
|
|
81
|
+
}[];
|
|
82
|
+
}>;
|
|
83
|
+
export type Duck = {
|
|
84
|
+
amount: number;
|
|
85
|
+
attackFrames: number;
|
|
86
|
+
releaseFrames: number;
|
|
87
|
+
by?: string[];
|
|
88
|
+
};
|
|
89
|
+
export declare function soundIntervals(composition: Composition, media?: SoundMedia): {
|
|
90
|
+
layer: Layer;
|
|
91
|
+
intervals: [number, number][];
|
|
92
|
+
}[];
|
|
93
|
+
export declare function volumeEnvelope(options: {
|
|
94
|
+
layer: any;
|
|
95
|
+
fps: number;
|
|
96
|
+
start: number;
|
|
97
|
+
duration: number;
|
|
98
|
+
duck?: Duck;
|
|
99
|
+
others: {
|
|
100
|
+
layer: Layer;
|
|
101
|
+
intervals: [number, number][];
|
|
102
|
+
}[];
|
|
103
|
+
}): [number, number][] | undefined;
|
|
104
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,80 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "motionrender",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"description": "JSON-first, frame-deterministic motion graphics video engine: render compositions to MP4, WebM, ProRes, GIF or PNG frames from Node or the command line.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./player": {
|
|
15
|
+
"types": "./dist/player.d.ts",
|
|
16
|
+
"import": "./dist/player.js"
|
|
17
|
+
},
|
|
18
|
+
"./react": {
|
|
19
|
+
"types": "./dist/react.d.ts",
|
|
20
|
+
"import": "./dist/react.js"
|
|
21
|
+
},
|
|
22
|
+
"./builder": {
|
|
23
|
+
"types": "./dist/builder.d.ts",
|
|
24
|
+
"import": "./dist/builder.js"
|
|
25
|
+
},
|
|
26
|
+
"./package.json": "./package.json"
|
|
27
|
+
},
|
|
28
|
+
"bin": {
|
|
29
|
+
"motionrender": "dist/cli.js",
|
|
30
|
+
"mr": "dist/cli.js",
|
|
31
|
+
"ove": "dist/cli.js"
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"dist",
|
|
35
|
+
"templates",
|
|
36
|
+
"blocks",
|
|
37
|
+
"themes",
|
|
38
|
+
"studio",
|
|
39
|
+
"skills",
|
|
40
|
+
"README.md",
|
|
41
|
+
"LICENSE"
|
|
42
|
+
],
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">=22"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"bullmq": "^5.81.5",
|
|
48
|
+
"pg": "^8.0.0",
|
|
49
|
+
"playwright": "^1.64.1",
|
|
50
|
+
"zod": "^4.6.7"
|
|
51
|
+
},
|
|
52
|
+
"keywords": [
|
|
53
|
+
"motionrender",
|
|
54
|
+
"motion-graphics",
|
|
55
|
+
"video",
|
|
56
|
+
"render",
|
|
57
|
+
"remotion-alternative",
|
|
58
|
+
"ffmpeg",
|
|
59
|
+
"json",
|
|
60
|
+
"animation",
|
|
61
|
+
"canvas",
|
|
62
|
+
"template"
|
|
63
|
+
],
|
|
64
|
+
"peerDependencies": {
|
|
65
|
+
"@types/node": ">=22",
|
|
66
|
+
"react": ">=18",
|
|
67
|
+
"esbuild": ">=0.20"
|
|
68
|
+
},
|
|
69
|
+
"peerDependenciesMeta": {
|
|
70
|
+
"@types/node": {
|
|
71
|
+
"optional": true
|
|
72
|
+
},
|
|
73
|
+
"react": {
|
|
74
|
+
"optional": true
|
|
75
|
+
},
|
|
76
|
+
"esbuild": {
|
|
77
|
+
"optional": true
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|