@smoove/core 0.1.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/LICENSE +21 -0
- package/README.md +80 -0
- package/dist/animation/color.d.ts +9 -0
- package/dist/animation/color.d.ts.map +1 -0
- package/dist/animation/color.js +224 -0
- package/dist/animation/color.js.map +1 -0
- package/dist/animation/easing.d.ts +22 -0
- package/dist/animation/easing.d.ts.map +1 -0
- package/dist/animation/easing.js +59 -0
- package/dist/animation/easing.js.map +1 -0
- package/dist/animation/interpolate-colors.d.ts +7 -0
- package/dist/animation/interpolate-colors.d.ts.map +1 -0
- package/dist/animation/interpolate-colors.js +19 -0
- package/dist/animation/interpolate-colors.js.map +1 -0
- package/dist/animation/interpolate.d.ts +12 -0
- package/dist/animation/interpolate.d.ts.map +1 -0
- package/dist/animation/interpolate.js +65 -0
- package/dist/animation/interpolate.js.map +1 -0
- package/dist/audio/asset.d.ts +21 -0
- package/dist/audio/asset.d.ts.map +1 -0
- package/dist/audio/asset.js +2 -0
- package/dist/audio/asset.js.map +1 -0
- package/dist/audio/audio-driver.d.ts +34 -0
- package/dist/audio/audio-driver.d.ts.map +1 -0
- package/dist/audio/audio-driver.js +2 -0
- package/dist/audio/audio-driver.js.map +1 -0
- package/dist/audio/audio-for-preview.d.ts +12 -0
- package/dist/audio/audio-for-preview.d.ts.map +1 -0
- package/dist/audio/audio-for-preview.js +70 -0
- package/dist/audio/audio-for-preview.js.map +1 -0
- package/dist/audio/audio-for-rendering.d.ts +16 -0
- package/dist/audio/audio-for-rendering.d.ts.map +1 -0
- package/dist/audio/audio-for-rendering.js +32 -0
- package/dist/audio/audio-for-rendering.js.map +1 -0
- package/dist/audio/audio-source-browser.d.ts +30 -0
- package/dist/audio/audio-source-browser.d.ts.map +1 -0
- package/dist/audio/audio-source-browser.js +139 -0
- package/dist/audio/audio-source-browser.js.map +1 -0
- package/dist/audio/audio-source.d.ts +38 -0
- package/dist/audio/audio-source.d.ts.map +1 -0
- package/dist/audio/audio-source.js +2 -0
- package/dist/audio/audio-source.js.map +1 -0
- package/dist/audio/index.d.ts +45 -0
- package/dist/audio/index.d.ts.map +1 -0
- package/dist/audio/index.js +143 -0
- package/dist/audio/index.js.map +1 -0
- package/dist/audio/mixer.d.ts +43 -0
- package/dist/audio/mixer.d.ts.map +1 -0
- package/dist/audio/mixer.js +51 -0
- package/dist/audio/mixer.js.map +1 -0
- package/dist/audio/types.d.ts +31 -0
- package/dist/audio/types.d.ts.map +1 -0
- package/dist/audio/types.js +2 -0
- package/dist/audio/types.js.map +1 -0
- package/dist/block.d.ts +16 -0
- package/dist/block.d.ts.map +1 -0
- package/dist/block.js +173 -0
- package/dist/block.js.map +1 -0
- package/dist/composition.d.ts.map +1 -0
- package/dist/composition.js.map +1 -0
- package/dist/easing.d.ts +22 -0
- package/dist/easing.d.ts.map +1 -0
- package/dist/easing.js +59 -0
- package/dist/easing.js.map +1 -0
- package/dist/emitter.d.ts +7 -0
- package/dist/emitter.d.ts.map +1 -0
- package/dist/emitter.js +29 -0
- package/dist/emitter.js.map +1 -0
- package/dist/engine/composition.d.ts +182 -0
- package/dist/engine/composition.d.ts.map +1 -0
- package/dist/engine/composition.js +527 -0
- package/dist/engine/composition.js.map +1 -0
- package/dist/engine/emitter.d.ts +7 -0
- package/dist/engine/emitter.d.ts.map +1 -0
- package/dist/engine/emitter.js +29 -0
- package/dist/engine/emitter.js.map +1 -0
- package/dist/engine/environment.d.ts +30 -0
- package/dist/engine/environment.d.ts.map +1 -0
- package/dist/engine/environment.js +27 -0
- package/dist/engine/environment.js.map +1 -0
- package/dist/engine/offsets.d.ts +39 -0
- package/dist/engine/offsets.d.ts.map +1 -0
- package/dist/engine/offsets.js +54 -0
- package/dist/engine/offsets.js.map +1 -0
- package/dist/engine/runtime-defaults.d.ts +50 -0
- package/dist/engine/runtime-defaults.d.ts.map +1 -0
- package/dist/engine/runtime-defaults.js +77 -0
- package/dist/engine/runtime-defaults.js.map +1 -0
- package/dist/engine/sequence.d.ts +44 -0
- package/dist/engine/sequence.d.ts.map +1 -0
- package/dist/engine/sequence.js +101 -0
- package/dist/engine/sequence.js.map +1 -0
- package/dist/engine/series.d.ts +40 -0
- package/dist/engine/series.d.ts.map +1 -0
- package/dist/engine/series.js +58 -0
- package/dist/engine/series.js.map +1 -0
- package/dist/engine/signal.d.ts +10 -0
- package/dist/engine/signal.d.ts.map +1 -0
- package/dist/engine/signal.js +39 -0
- package/dist/engine/signal.js.map +1 -0
- package/dist/environment.d.ts.map +1 -0
- package/dist/environment.js.map +1 -0
- package/dist/flex-engine.d.ts +31 -0
- package/dist/flex-engine.d.ts.map +1 -0
- package/dist/flex-engine.js +186 -0
- package/dist/flex-engine.js.map +1 -0
- package/dist/flex-types.d.ts +165 -0
- package/dist/flex-types.d.ts.map +1 -0
- package/dist/flex-types.js +2 -0
- package/dist/flex-types.js.map +1 -0
- package/dist/flex.d.ts +26 -0
- package/dist/flex.d.ts.map +1 -0
- package/dist/flex.js +179 -0
- package/dist/flex.js.map +1 -0
- package/dist/image.d.ts +10 -0
- package/dist/image.d.ts.map +1 -0
- package/dist/image.js +156 -0
- package/dist/image.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/interpolate-colors.d.ts +7 -0
- package/dist/interpolate-colors.d.ts.map +1 -0
- package/dist/interpolate-colors.js +240 -0
- package/dist/interpolate-colors.js.map +1 -0
- package/dist/interpolate.d.ts +12 -0
- package/dist/interpolate.d.ts.map +1 -0
- package/dist/interpolate.js +65 -0
- package/dist/interpolate.js.map +1 -0
- package/dist/layout/block.d.ts +54 -0
- package/dist/layout/block.d.ts.map +1 -0
- package/dist/layout/block.js +186 -0
- package/dist/layout/block.js.map +1 -0
- package/dist/layout/contract.d.ts +41 -0
- package/dist/layout/contract.d.ts.map +1 -0
- package/dist/layout/contract.js +8 -0
- package/dist/layout/contract.js.map +1 -0
- package/dist/layout/flex/engine.d.ts +31 -0
- package/dist/layout/flex/engine.d.ts.map +1 -0
- package/dist/layout/flex/engine.js +186 -0
- package/dist/layout/flex/engine.js.map +1 -0
- package/dist/layout/flex/flex.d.ts +31 -0
- package/dist/layout/flex/flex.d.ts.map +1 -0
- package/dist/layout/flex/flex.js +175 -0
- package/dist/layout/flex/flex.js.map +1 -0
- package/dist/layout/flex/mixin.d.ts +52 -0
- package/dist/layout/flex/mixin.d.ts.map +1 -0
- package/dist/layout/flex/mixin.js +114 -0
- package/dist/layout/flex/mixin.js.map +1 -0
- package/dist/layout/flex/types.d.ts +31 -0
- package/dist/layout/flex/types.d.ts.map +1 -0
- package/dist/layout/flex/types.js +2 -0
- package/dist/layout/flex/types.js.map +1 -0
- package/dist/layout/image.d.ts +46 -0
- package/dist/layout/image.d.ts.map +1 -0
- package/dist/layout/image.js +198 -0
- package/dist/layout/image.js.map +1 -0
- package/dist/layout/shapes.d.ts +72 -0
- package/dist/layout/shapes.d.ts.map +1 -0
- package/dist/layout/shapes.js +29 -0
- package/dist/layout/shapes.js.map +1 -0
- package/dist/layout/text/font.d.ts +92 -0
- package/dist/layout/text/font.d.ts.map +1 -0
- package/dist/layout/text/font.js +166 -0
- package/dist/layout/text/font.js.map +1 -0
- package/dist/layout/text/geometry.d.ts +31 -0
- package/dist/layout/text/geometry.d.ts.map +1 -0
- package/dist/layout/text/geometry.js +81 -0
- package/dist/layout/text/geometry.js.map +1 -0
- package/dist/layout/text/text.d.ts +98 -0
- package/dist/layout/text/text.d.ts.map +1 -0
- package/dist/layout/text/text.js +676 -0
- package/dist/layout/text/text.js.map +1 -0
- package/dist/layout/text/types.d.ts +103 -0
- package/dist/layout/text/types.d.ts.map +1 -0
- package/dist/layout/text/types.js +2 -0
- package/dist/layout/text/types.js.map +1 -0
- package/dist/media/audio/asset.d.ts +21 -0
- package/dist/media/audio/asset.d.ts.map +1 -0
- package/dist/media/audio/asset.js +2 -0
- package/dist/media/audio/asset.js.map +1 -0
- package/dist/media/audio/audio-driver.d.ts +34 -0
- package/dist/media/audio/audio-driver.d.ts.map +1 -0
- package/dist/media/audio/audio-driver.js +2 -0
- package/dist/media/audio/audio-driver.js.map +1 -0
- package/dist/media/audio/audio-for-preview.d.ts +47 -0
- package/dist/media/audio/audio-for-preview.d.ts.map +1 -0
- package/dist/media/audio/audio-for-preview.js +232 -0
- package/dist/media/audio/audio-for-preview.js.map +1 -0
- package/dist/media/audio/audio-for-rendering.d.ts +16 -0
- package/dist/media/audio/audio-for-rendering.d.ts.map +1 -0
- package/dist/media/audio/audio-for-rendering.js +32 -0
- package/dist/media/audio/audio-for-rendering.js.map +1 -0
- package/dist/media/audio/audio-source-browser.d.ts +30 -0
- package/dist/media/audio/audio-source-browser.d.ts.map +1 -0
- package/dist/media/audio/audio-source-browser.js +139 -0
- package/dist/media/audio/audio-source-browser.js.map +1 -0
- package/dist/media/audio/audio-source-mediabunny.d.ts +45 -0
- package/dist/media/audio/audio-source-mediabunny.d.ts.map +1 -0
- package/dist/media/audio/audio-source-mediabunny.js +79 -0
- package/dist/media/audio/audio-source-mediabunny.js.map +1 -0
- package/dist/media/audio/audio-source.d.ts +38 -0
- package/dist/media/audio/audio-source.d.ts.map +1 -0
- package/dist/media/audio/audio-source.js +2 -0
- package/dist/media/audio/audio-source.js.map +1 -0
- package/dist/media/audio/index.d.ts +57 -0
- package/dist/media/audio/index.d.ts.map +1 -0
- package/dist/media/audio/index.js +170 -0
- package/dist/media/audio/index.js.map +1 -0
- package/dist/media/audio/mixer.d.ts +43 -0
- package/dist/media/audio/mixer.d.ts.map +1 -0
- package/dist/media/audio/mixer.js +51 -0
- package/dist/media/audio/mixer.js.map +1 -0
- package/dist/media/audio/shared-audio-context.d.ts +30 -0
- package/dist/media/audio/shared-audio-context.d.ts.map +1 -0
- package/dist/media/audio/shared-audio-context.js +68 -0
- package/dist/media/audio/shared-audio-context.js.map +1 -0
- package/dist/media/audio/types.d.ts +31 -0
- package/dist/media/audio/types.d.ts.map +1 -0
- package/dist/media/audio/types.js +2 -0
- package/dist/media/audio/types.js.map +1 -0
- package/dist/media/media-marker.d.ts +26 -0
- package/dist/media/media-marker.d.ts.map +1 -0
- package/dist/media/media-marker.js +26 -0
- package/dist/media/media-marker.js.map +1 -0
- package/dist/media/media-time.d.ts +17 -0
- package/dist/media/media-time.d.ts.map +1 -0
- package/dist/media/media-time.js +17 -0
- package/dist/media/media-time.js.map +1 -0
- package/dist/media/video/driver.d.ts +31 -0
- package/dist/media/video/driver.d.ts.map +1 -0
- package/dist/media/video/driver.js +3 -0
- package/dist/media/video/driver.js.map +1 -0
- package/dist/media/video/index.d.ts +66 -0
- package/dist/media/video/index.d.ts.map +1 -0
- package/dist/media/video/index.js +372 -0
- package/dist/media/video/index.js.map +1 -0
- package/dist/media/video/types.d.ts +36 -0
- package/dist/media/video/types.d.ts.map +1 -0
- package/dist/media/video/types.js +2 -0
- package/dist/media/video/types.js.map +1 -0
- package/dist/media/video/video-for-preview.d.ts +17 -0
- package/dist/media/video/video-for-preview.d.ts.map +1 -0
- package/dist/media/video/video-for-preview.js +30 -0
- package/dist/media/video/video-for-preview.js.map +1 -0
- package/dist/media/video/video-for-rendering.d.ts +17 -0
- package/dist/media/video/video-for-rendering.d.ts.map +1 -0
- package/dist/media/video/video-for-rendering.js +59 -0
- package/dist/media/video/video-for-rendering.js.map +1 -0
- package/dist/media/video/video-source-browser.d.ts +37 -0
- package/dist/media/video/video-source-browser.d.ts.map +1 -0
- package/dist/media/video/video-source-browser.js +171 -0
- package/dist/media/video/video-source-browser.js.map +1 -0
- package/dist/media/video/video-source-mediabunny.d.ts +69 -0
- package/dist/media/video/video-source-mediabunny.d.ts.map +1 -0
- package/dist/media/video/video-source-mediabunny.js +236 -0
- package/dist/media/video/video-source-mediabunny.js.map +1 -0
- package/dist/media/video/video-source.d.ts +48 -0
- package/dist/media/video/video-source.d.ts.map +1 -0
- package/dist/media/video/video-source.js +2 -0
- package/dist/media/video/video-source.js.map +1 -0
- package/dist/media-marker.d.ts +19 -0
- package/dist/media-marker.d.ts.map +1 -0
- package/dist/media-marker.js +19 -0
- package/dist/media-marker.js.map +1 -0
- package/dist/media-time.d.ts +17 -0
- package/dist/media-time.d.ts.map +1 -0
- package/dist/media-time.js +17 -0
- package/dist/media-time.js.map +1 -0
- package/dist/signal.d.ts +10 -0
- package/dist/signal.d.ts.map +1 -0
- package/dist/signal.js +39 -0
- package/dist/signal.js.map +1 -0
- package/dist/text.d.ts +91 -0
- package/dist/text.d.ts.map +1 -0
- package/dist/text.js +704 -0
- package/dist/text.js.map +1 -0
- package/dist/video/driver.d.ts +31 -0
- package/dist/video/driver.d.ts.map +1 -0
- package/dist/video/driver.js +3 -0
- package/dist/video/driver.js.map +1 -0
- package/dist/video/index.d.ts +45 -0
- package/dist/video/index.d.ts.map +1 -0
- package/dist/video/index.js +276 -0
- package/dist/video/index.js.map +1 -0
- package/dist/video/types.d.ts +35 -0
- package/dist/video/types.d.ts.map +1 -0
- package/dist/video/types.js +2 -0
- package/dist/video/types.js.map +1 -0
- package/dist/video/video-for-preview.d.ts +12 -0
- package/dist/video/video-for-preview.d.ts.map +1 -0
- package/dist/video/video-for-preview.js +73 -0
- package/dist/video/video-for-preview.js.map +1 -0
- package/dist/video/video-for-rendering.d.ts +16 -0
- package/dist/video/video-for-rendering.d.ts.map +1 -0
- package/dist/video/video-for-rendering.js +45 -0
- package/dist/video/video-for-rendering.js.map +1 -0
- package/dist/video/video-source-browser.d.ts +37 -0
- package/dist/video/video-source-browser.d.ts.map +1 -0
- package/dist/video/video-source-browser.js +171 -0
- package/dist/video/video-source-browser.js.map +1 -0
- package/dist/video/video-source.d.ts +48 -0
- package/dist/video/video-source.d.ts.map +1 -0
- package/dist/video/video-source.js +2 -0
- package/dist/video/video-source.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import Konva from "konva";
|
|
2
|
+
import type { AudioAsset } from "../media/audio/asset.js";
|
|
3
|
+
import { AudioMixer } from "../media/audio/mixer.js";
|
|
4
|
+
import { type Environment, type EnvironmentMode } from "./environment.js";
|
|
5
|
+
import { type SequenceProvider } from "./sequence.js";
|
|
6
|
+
import { type ReadonlySignal } from "./signal.js";
|
|
7
|
+
export type CompositionOptions<P extends Record<string, unknown> = Record<string, unknown>> = Konva.StageConfig & {
|
|
8
|
+
id: string;
|
|
9
|
+
fps: number;
|
|
10
|
+
durationInFrames: number;
|
|
11
|
+
loop?: boolean;
|
|
12
|
+
/** Initial props handed to the scene. Read live with `comp.props.get()` in
|
|
13
|
+
updaters; pushed to with `comp.setProps()` by a player or the studio. */
|
|
14
|
+
props?: P;
|
|
15
|
+
/** Force the runtime environment. Defaults to ambient detection (see `detectEnvironment`). */
|
|
16
|
+
mode?: EnvironmentMode;
|
|
17
|
+
};
|
|
18
|
+
export type CompositionEvent = {
|
|
19
|
+
frame: number;
|
|
20
|
+
durationInFrames: number;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Asset-buffering state. `"idle"` — nothing pending; `"buffering"` — one or more
|
|
24
|
+
* assets (fonts, …) are still loading; `"ready"` — everything registered so far
|
|
25
|
+
* has settled. Observe it to show a spinner; `play()` honors it (see below).
|
|
26
|
+
*/
|
|
27
|
+
export type BufferState = "idle" | "buffering" | "ready";
|
|
28
|
+
export type CompositionEventMap = {
|
|
29
|
+
play: CompositionEvent;
|
|
30
|
+
stop: CompositionEvent;
|
|
31
|
+
time: CompositionEvent;
|
|
32
|
+
};
|
|
33
|
+
export type CompositionEventName = keyof CompositionEventMap;
|
|
34
|
+
export declare function getComposition(stage: Konva.Stage): Composition | null;
|
|
35
|
+
export declare class Composition<P extends Record<string, unknown> = Record<string, unknown>> extends Konva.Stage {
|
|
36
|
+
readonly fps: number;
|
|
37
|
+
readonly environment: Environment;
|
|
38
|
+
/** Composition-level audio bus — master volume/mute scaling every Video and Audio. */
|
|
39
|
+
readonly mixer: AudioMixer;
|
|
40
|
+
readonly frame: ReadonlySignal<number>;
|
|
41
|
+
readonly isPlaying: ReadonlySignal<boolean>;
|
|
42
|
+
readonly durationInFrames: ReadonlySignal<number>;
|
|
43
|
+
readonly isStopped: ReadonlySignal<boolean>;
|
|
44
|
+
readonly isPaused: ReadonlySignal<boolean>;
|
|
45
|
+
readonly loop: ReadonlySignal<boolean>;
|
|
46
|
+
/** Playback speed multiplier. 1 = realtime; negative plays in reverse. */
|
|
47
|
+
readonly playbackRate: ReadonlySignal<number>;
|
|
48
|
+
/** Live props the scene reads. Pushed to with {@link setProps} by a player or
|
|
49
|
+
the studio form; updaters read it via `comp.props.get()`. */
|
|
50
|
+
readonly props: ReadonlySignal<P>;
|
|
51
|
+
/** Asset-buffering state — `"idle"` | `"buffering"` | `"ready"`. See {@link registerAsset}. */
|
|
52
|
+
readonly buffer: ReadonlySignal<BufferState>;
|
|
53
|
+
/** Convenience: `buffer.get() === "buffering"`. */
|
|
54
|
+
readonly isBuffering: ReadonlySignal<boolean>;
|
|
55
|
+
private readonly _frame;
|
|
56
|
+
private readonly _props;
|
|
57
|
+
private readonly _isPlaying;
|
|
58
|
+
private readonly _durationInFrames;
|
|
59
|
+
private readonly _loop;
|
|
60
|
+
private readonly _playbackRate;
|
|
61
|
+
private readonly _buffer;
|
|
62
|
+
private readonly _emitter;
|
|
63
|
+
private _rafId;
|
|
64
|
+
private _startWallMs;
|
|
65
|
+
private _startFrame;
|
|
66
|
+
private _suspended;
|
|
67
|
+
private readonly _assets;
|
|
68
|
+
private _readyWaiters;
|
|
69
|
+
private _resumeOnReady;
|
|
70
|
+
private readonly _renderHandles;
|
|
71
|
+
private _nextHandle;
|
|
72
|
+
private _renderWaiters;
|
|
73
|
+
private _audioAssets;
|
|
74
|
+
private _captureCanvas;
|
|
75
|
+
constructor(opts: CompositionOptions<P>);
|
|
76
|
+
on(evtStr: any, handler: any): any;
|
|
77
|
+
off(evtStr?: any, handler?: any): any;
|
|
78
|
+
add(first: Konva.Layer | SequenceProvider, ...rest: (Konva.Layer | SequenceProvider)[]): this;
|
|
79
|
+
play(): void;
|
|
80
|
+
private _startClock;
|
|
81
|
+
destroy(): this;
|
|
82
|
+
pause(): void;
|
|
83
|
+
/** `true` between {@link suspend} and {@link resume}. */
|
|
84
|
+
get isSuspended(): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Release background work — halt the clock and tell every media node to drop
|
|
87
|
+
* its source, so a composition that isn't being shown (e.g. a `<smoove-player>`
|
|
88
|
+
* removed from the DOM) stops downloading/decoding video and audio. This does
|
|
89
|
+
* NOT tear the composition down: the scene graph stays intact and {@link resume}
|
|
90
|
+
* re-acquires the sources. No-op if already suspended.
|
|
91
|
+
*/
|
|
92
|
+
suspend(): void;
|
|
93
|
+
/**
|
|
94
|
+
* Undo {@link suspend}: re-acquire the media sources released while suspended
|
|
95
|
+
* (they re-download and redraw once ready) and repaint the current frame.
|
|
96
|
+
* No-op if not suspended.
|
|
97
|
+
*/
|
|
98
|
+
resume(): void;
|
|
99
|
+
/** Walk every media node (Video/Audio) across all sequences. */
|
|
100
|
+
private _forEachMedia;
|
|
101
|
+
stop(): void;
|
|
102
|
+
setLoop(value: boolean): void;
|
|
103
|
+
/**
|
|
104
|
+
* Set the playback speed multiplier. `1` is realtime; `2` is double speed;
|
|
105
|
+
* negative values play in reverse. Clamped to `[-10, 10]`; `0` throws (it
|
|
106
|
+
* would freeze the clock). Changing the rate mid-playback resyncs the clock
|
|
107
|
+
* so the new speed takes effect from the current frame onward.
|
|
108
|
+
*/
|
|
109
|
+
setPlaybackRate(rate: number): void;
|
|
110
|
+
setFrame(target: number): void;
|
|
111
|
+
/**
|
|
112
|
+
* Re-apply the **current** frame to every sequence without advancing the
|
|
113
|
+
* playhead — the engine's "re-render" hook. Call this after mutating external
|
|
114
|
+
* state that updaters read (e.g. live-edited props) so the change shows
|
|
115
|
+
* immediately while paused. Updaters re-run, `Flex`/`Block` re-layout, and
|
|
116
|
+
* active sequences `batchDraw` — exactly like a normal tick at the same frame.
|
|
117
|
+
*/
|
|
118
|
+
refresh(): void;
|
|
119
|
+
/**
|
|
120
|
+
* Replace the live props and re-render the current frame. Any holder — a bare
|
|
121
|
+
* `<smoove-player>` or the studio form — drives the scene by calling this; the
|
|
122
|
+
* `createSignal` `Object.is` guard skips a redundant refresh when nothing
|
|
123
|
+
* changed. Pass an updater to derive the next value from the previous one.
|
|
124
|
+
*/
|
|
125
|
+
setProps(next: P | ((prev: P) => P)): void;
|
|
126
|
+
/**
|
|
127
|
+
* Register an outstanding asset load (e.g. a {@link Font}). While any asset is
|
|
128
|
+
* pending, {@link buffer} is `"buffering"`; once all settle it flips to
|
|
129
|
+
* `"ready"` and {@link whenReady} waiters resolve. A `play()` issued while
|
|
130
|
+
* buffering is deferred and starts automatically here. Errors are swallowed
|
|
131
|
+
* (the asset logs its own) so one bad asset can't wedge playback.
|
|
132
|
+
*
|
|
133
|
+
* This is the preview-side buffer; offline rendering uses the per-frame
|
|
134
|
+
* {@link delayRender}/{@link renderFrame} gate instead.
|
|
135
|
+
*/
|
|
136
|
+
registerAsset(load: Promise<unknown>, _label?: string): void;
|
|
137
|
+
/** Resolves once no assets are pending — immediately if idle/ready. */
|
|
138
|
+
whenReady(): Promise<void>;
|
|
139
|
+
/**
|
|
140
|
+
* Register an outstanding async task that must finish before the current
|
|
141
|
+
* frame is considered fully rendered — Remotion's `delayRender`. Returns a
|
|
142
|
+
* handle to clear with {@link continueRender}.
|
|
143
|
+
*/
|
|
144
|
+
delayRender(_label?: string): number;
|
|
145
|
+
/** Clear a {@link delayRender} handle; resolves `renderFrame()` once all clear. */
|
|
146
|
+
continueRender(handle: number): void;
|
|
147
|
+
/**
|
|
148
|
+
* Apply a frame and wait until all {@link delayRender} handles registered
|
|
149
|
+
* during that application clear. This is the offline / server render
|
|
150
|
+
* entrypoint — e.g. `for (f) { await comp.renderFrame(f); capture(); }`.
|
|
151
|
+
*/
|
|
152
|
+
renderFrame(target: number): Promise<void>;
|
|
153
|
+
/**
|
|
154
|
+
* Composite every visible sequence layer into a single canvas and return it.
|
|
155
|
+
* Works headlessly (no DOM container needed); under the server skia backend
|
|
156
|
+
* the result is a skia `Canvas`, on which a renderer can call
|
|
157
|
+
* `.toBufferSync("raw")` for RGBA pixels.
|
|
158
|
+
*
|
|
159
|
+
* Unlike `Stage.toCanvas()`, this **reuses one scratch canvas** across calls.
|
|
160
|
+
* Allocating a fresh skia `Canvas` per frame leaks native memory (invisible to
|
|
161
|
+
* V8's GC), which balloons RSS and collapses throughput over a long render.
|
|
162
|
+
*/
|
|
163
|
+
captureCanvas(): HTMLCanvasElement;
|
|
164
|
+
/** @internal — {@link RenderingAudioDriver} records one sample per audio per frame. */
|
|
165
|
+
_collectAudioAsset(asset: AudioAsset): void;
|
|
166
|
+
/**
|
|
167
|
+
* Audio samples collected during offline rendering — one per {@link Audio}
|
|
168
|
+
* per rendered frame. Feed these to an external mux pass (e.g. ffmpeg) to
|
|
169
|
+
* assemble the audio track. Empty during preview.
|
|
170
|
+
*/
|
|
171
|
+
getAudioAssets(): AudioAsset[];
|
|
172
|
+
/** Reset the collected audio samples — call before re-rendering a range. */
|
|
173
|
+
clearAudioAssets(): void;
|
|
174
|
+
private _event;
|
|
175
|
+
private _applyFrame;
|
|
176
|
+
/** Hide every sequence (transparent stage) — used while buffering assets. */
|
|
177
|
+
private _hideAllSequences;
|
|
178
|
+
private _scheduleTick;
|
|
179
|
+
private _cancelTick;
|
|
180
|
+
private _tick;
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=composition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../src/engine/composition.ts"],"names":[],"mappings":"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"}
|