@framefields/node-compositor 0.0.0-stage → 2.0.3

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 (40) hide show
  1. package/.turbo/turbo-build.log +22 -0
  2. package/.turbo/turbo-test.log +21 -0
  3. package/CHANGELOG.md +34 -0
  4. package/LICENCE +202 -0
  5. package/SKILL.md +370 -0
  6. package/dist/index-B0ir9Z7o.d.mts +139 -0
  7. package/dist/index-B0ir9Z7o.d.mts.map +1 -0
  8. package/dist/index.d.mts +230 -0
  9. package/dist/index.d.mts.map +1 -0
  10. package/dist/index.mjs +674 -0
  11. package/dist/index.mjs.map +1 -0
  12. package/dist/renderer.d.mts +2 -0
  13. package/dist/renderer.mjs +3 -0
  14. package/dist/renderers-DoYYCzgA.mjs +3326 -0
  15. package/dist/renderers-DoYYCzgA.mjs.map +1 -0
  16. package/package.json +51 -3
  17. package/src/index.ts +2 -0
  18. package/src/renderers/audio-processor.ts +123 -0
  19. package/src/renderers/container-bg.test.ts +22 -0
  20. package/src/renderers/container-bg.ts +15 -0
  21. package/src/renderers/index.ts +9 -0
  22. package/src/renderers/transform.test.ts +120 -0
  23. package/src/renderers/transform.ts +101 -0
  24. package/src/renderers/transform3d.test.ts +290 -0
  25. package/src/renderers/transform3d.ts +428 -0
  26. package/src/renderers/webgpu-renderer.ts +4038 -0
  27. package/src/shared/audio-reactive.test.ts +224 -0
  28. package/src/shared/bezier-solver.test.ts +92 -0
  29. package/src/shared/bezier-solver.ts +257 -0
  30. package/src/shared/compiler.test.ts +1309 -0
  31. package/src/shared/compiler.ts +996 -0
  32. package/src/shared/config.ts +44 -0
  33. package/src/shared/index.ts +3 -0
  34. package/src/shared/kinetic-typography.test.ts +138 -0
  35. package/src/shared/presets.test.ts +217 -0
  36. package/src/shared/presets.ts +644 -0
  37. package/src/shared/processor.ts +105 -0
  38. package/tsconfig.json +13 -0
  39. package/tsdown.config.ts +13 -0
  40. package/README.md +0 -3
@@ -0,0 +1,230 @@
1
+ import { a as Point3D, c as Transform3DPropsLike, i as Point2D, l as has3DTransform, n as Layer3DMatrixConfig, o as Quad2D, r as Matrix4x4, s as Transform3DMath, u as solveHomography } from "./index-B0ir9Z7o.mjs";
2
+ import * as _framefields_compositions_program0 from "@framefields/compositions/program";
3
+ import { AnimationTrack, CompositorProgramConfig, EaseRef, LayerAnimationSpec } from "@framefields/compositions/program";
4
+ import * as _framefields_core0 from "@framefields/core";
5
+ import { VirtualMediaData } from "@framefields/core";
6
+ import { z } from "zod";
7
+
8
+ //#region src/shared/compiler.d.ts
9
+ interface LayerStub {
10
+ id: string;
11
+ inputHandleId: string;
12
+ trackId?: string;
13
+ x: number;
14
+ y: number;
15
+ scale: number;
16
+ rotation: number;
17
+ opacity: number;
18
+ volume: number;
19
+ width?: number;
20
+ height?: number;
21
+ hidden: boolean;
22
+ muted: boolean;
23
+ text?: number;
24
+ fontSize?: number;
25
+ fill?: string;
26
+ borderColor?: string;
27
+ backgroundColor?: string;
28
+ rotateX?: number;
29
+ rotateY?: number;
30
+ rotateZ?: number;
31
+ perspective?: number;
32
+ perspectiveOriginX?: number;
33
+ perspectiveOriginY?: number;
34
+ translateZ?: number;
35
+ backfaceVisibility?: "visible" | "hidden";
36
+ transformStyle?: "flat" | "preserve-3d";
37
+ is3D?: boolean;
38
+ z?: number;
39
+ scaleZ?: number;
40
+ twoSided?: boolean;
41
+ material?: "lit" | "unlit" | "toon";
42
+ shininess?: number;
43
+ roughness?: number;
44
+ specularIntensity?: number;
45
+ ambientIntensity?: number;
46
+ metallic?: number;
47
+ cameraX?: number;
48
+ cameraY?: number;
49
+ cameraZ?: number;
50
+ targetX?: number;
51
+ targetY?: number;
52
+ targetZ?: number;
53
+ cameraPitch?: number;
54
+ cameraYaw?: number;
55
+ cameraRoll?: number;
56
+ cameraFov?: number;
57
+ cameraZoom?: number;
58
+ focalLength?: number;
59
+ focusDistance?: number;
60
+ fStop?: number;
61
+ maxBlurRadius?: number;
62
+ shakeTranslation?: number;
63
+ shakeRotation?: number;
64
+ orbitRadius?: number;
65
+ orbitAzimuth?: number;
66
+ orbitElevation?: number;
67
+ animationProgress?: number;
68
+ animationTime?: number;
69
+ animationSpeed?: number;
70
+ wireframe?: boolean;
71
+ scaleX?: number;
72
+ scaleY?: number;
73
+ lightType?: string;
74
+ intensity?: number;
75
+ radius?: number;
76
+ angle?: number;
77
+ penumbra?: number;
78
+ decay?: number;
79
+ [key: string]: unknown;
80
+ }
81
+ type CompilerVirtualMedia = {
82
+ metadata?: Partial<VirtualMediaData["metadata"]>;
83
+ operation?: Partial<VirtualMediaData["operation"]> & Record<string, any>;
84
+ children?: CompilerNodeVM[];
85
+ };
86
+ /** A node op inside the render tree (CompositorLayer). */
87
+ type CompilerNodeVM = CompilerVirtualMedia;
88
+ interface CompileResult {
89
+ tl: gsap.core.Timeline;
90
+ targetsById: Record<string, LayerStub>;
91
+ /** Node ops the timeline was compiled from (tree order). */
92
+ nodes: CompilerNodeVM[];
93
+ }
94
+ declare function getCachedTimeline(cacheKey: string): CompileResult | undefined;
95
+ declare function setCachedTimeline(cacheKey: string, value: CompileResult): void;
96
+ declare function mappedEase(ease?: EaseRef, durationFrames?: number, fps?: number): string | ((p: number) => number);
97
+ interface TruncationInfo {
98
+ layerId: string;
99
+ trackId: string;
100
+ prop: string;
101
+ dropped: number;
102
+ maxAuthoredFrame: number;
103
+ }
104
+ declare function compileTimeline(renderId: string, virtualMedia: CompilerVirtualMedia | null | undefined, options: {
105
+ fps: number;
106
+ durationSec: number;
107
+ }): CompileResult;
108
+ declare function compileLayerTimeline(layerId: string, animation: LayerAnimationSpec | undefined, baseVolume: number, baseMuted: boolean, fps: number): {
109
+ tl: gsap.core.Timeline;
110
+ stub: {
111
+ volume: number;
112
+ muted: boolean;
113
+ };
114
+ };
115
+ //#endregion
116
+ //#region src/shared/config.d.ts
117
+ /**
118
+ * v2 config — THE document (spec: SKILL.md).
119
+ * No `layers`, no `layerUpdates`, no aliases. The node config IS the
120
+ * composition program: strict zod, validated by the E-code pre-parse scan
121
+ * in `@framefields/compositions/program/validate`.
122
+ */
123
+ declare const CompositorNodeConfigSchema: z.ZodObject<{
124
+ width: z.ZodNumber;
125
+ height: z.ZodNumber;
126
+ backgroundColor: z.ZodOptional<z.ZodString>;
127
+ volume: z.ZodDefault<z.ZodNumber>;
128
+ fps: z.ZodDefault<z.ZodNumber>;
129
+ mode: z.ZodDefault<z.ZodEnum<{
130
+ Image: "Image";
131
+ Video: "Video";
132
+ }>>;
133
+ antialias3d: z.ZodOptional<z.ZodBoolean>;
134
+ layout: z.ZodDefault<z.ZodArray<z.ZodType<_framefields_compositions_program0.LayoutNode, unknown, z.core.$ZodTypeInternals<_framefields_compositions_program0.LayoutNode, unknown>>>>;
135
+ fonts: z.ZodOptional<z.ZodArray<z.ZodString>>;
136
+ signals: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
137
+ effects: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
138
+ vision: z.ZodOptional<z.ZodUnknown>;
139
+ onRequestFrame: z.ZodOptional<z.ZodCustom<unknown, unknown>>;
140
+ }, z.core.$strict>;
141
+ type CompositorNodeConfig = CompositorProgramConfig;
142
+ /** Data types accepted by the variable composer inputs. */
143
+ declare const VariableInputDataTypes: readonly ["Text", "Image", "Video", "Audio", "Caption", "SVG", "GIF", "Lottie", "Signal"];
144
+ type VariableInputDataType = (typeof VariableInputDataTypes)[number];
145
+ /** The Compositor op framing (used in the render tree, per processCompositor). */
146
+ declare const CompositorOperationSchema: z.ZodObject<{
147
+ width: z.ZodNumber;
148
+ height: z.ZodNumber;
149
+ backgroundColor: z.ZodOptional<z.ZodString>;
150
+ volume: z.ZodDefault<z.ZodNumber>;
151
+ fps: z.ZodDefault<z.ZodNumber>;
152
+ mode: z.ZodDefault<z.ZodEnum<{
153
+ Image: "Image";
154
+ Video: "Video";
155
+ }>>;
156
+ antialias3d: z.ZodOptional<z.ZodBoolean>;
157
+ layout: z.ZodDefault<z.ZodArray<z.ZodType<_framefields_compositions_program0.LayoutNode, unknown, z.core.$ZodTypeInternals<_framefields_compositions_program0.LayoutNode, unknown>>>>;
158
+ fonts: z.ZodOptional<z.ZodArray<z.ZodString>>;
159
+ signals: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
160
+ effects: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
161
+ vision: z.ZodOptional<z.ZodUnknown>;
162
+ onRequestFrame: z.ZodOptional<z.ZodCustom<unknown, unknown>>;
163
+ op: z.ZodLiteral<"Compositor">;
164
+ dataType: z.ZodOptional<z.ZodEnum<{
165
+ Image: "Image";
166
+ Video: "Video";
167
+ }>>;
168
+ metadata: z.ZodOptional<z.ZodObject<{
169
+ width: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
170
+ height: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
171
+ fps: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
172
+ durationMs: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
173
+ sampleRate: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
174
+ channels: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
175
+ bitDepth: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
176
+ audioCodec: z.ZodNullable<z.ZodOptional<z.ZodString>>;
177
+ audioBitrate: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
178
+ }, z.core.$strip>>;
179
+ }, z.core.$strict>;
180
+ type CompositorOperation = z.infer<typeof CompositorOperationSchema>;
181
+ declare const CompositorResultSchema: z.ZodUnion<readonly [z.ZodObject<{
182
+ selectedOutputIndex: z.ZodLiteral<0>;
183
+ outputs: z.ZodTuple<[z.ZodObject<{
184
+ items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<"Video">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<"Video">, unknown>>], null>;
185
+ }, z.core.$strip>], null>;
186
+ }, z.core.$strip>, z.ZodObject<{
187
+ selectedOutputIndex: z.ZodLiteral<0>;
188
+ outputs: z.ZodTuple<[z.ZodObject<{
189
+ items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<"Image">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<"Image">, unknown>>], null>;
190
+ }, z.core.$strip>], null>;
191
+ }, z.core.$strip>]>;
192
+ //#endregion
193
+ //#region src/shared/presets.d.ts
194
+ interface LayerBase {
195
+ x: number;
196
+ y: number;
197
+ scale: number;
198
+ rotation: number;
199
+ opacity: number;
200
+ width?: number;
201
+ height?: number;
202
+ durationFrames: number;
203
+ }
204
+ interface PresetChip {
205
+ groupId: string;
206
+ presetType: string;
207
+ kind: "entrance" | "exit" | "emphasis";
208
+ label: string;
209
+ durationFrames: number;
210
+ ease?: EaseRef;
211
+ }
212
+ declare function getPresetDetails(presetType: string): {
213
+ kind: "entrance" | "exit" | "emphasis";
214
+ label: string;
215
+ };
216
+ declare function chipsForLayer(layer: {
217
+ animation?: {
218
+ tracks?: AnimationTrack[];
219
+ };
220
+ } | null | undefined): PresetChip[];
221
+ declare function materializePreset(layerBase: LayerBase, presetType: string, options: {
222
+ width: number;
223
+ height: number;
224
+ fps: number;
225
+ presetGroupId?: string;
226
+ durationFrames?: number;
227
+ }): AnimationTrack[];
228
+ //#endregion
229
+ export { CompileResult, CompilerNodeVM, CompilerVirtualMedia, CompositorNodeConfig, CompositorNodeConfigSchema, CompositorOperation, CompositorOperationSchema, CompositorResultSchema, Layer3DMatrixConfig, LayerBase, LayerStub, Matrix4x4, Point2D, Point3D, PresetChip, Quad2D, Transform3DMath, Transform3DPropsLike, TruncationInfo, VariableInputDataType, VariableInputDataTypes, chipsForLayer, compileLayerTimeline, compileTimeline, getCachedTimeline, getPresetDetails, has3DTransform, mappedEase, materializePreset, setCachedTimeline, solveHomography };
230
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/shared/compiler.ts","../src/shared/config.ts","../src/shared/presets.ts"],"sourcesContent":[],"mappings":"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"}