EditorEngine
Generated TypeScript API reference for the public mcut SDK.
mcut SDK / timeline/src / EditorEngine
Class: EditorEngine
Defined in: packages/timeline/src/engine.ts:70
The headless editor: one validated, undoable command stream over a project, plus a playback store for transport state.
This facade is the only public surface over the underlying reactive stores,
which keeps the (alpha) @tanstack/store dependency contained to this
package. UIs read via engine.store/engine.playback subscriptions; all
writes go through dispatch (or the transport setters).
Constructors
Constructor
new EditorEngine(options?): EditorEngine;Defined in: packages/timeline/src/engine.ts:81
Parameters
options?
EditorEngineOptions = {}
Returns
EditorEngine
Properties
playback
readonly playback: Store<PlaybackState>;Defined in: packages/timeline/src/engine.ts:72
store
readonly store: Store<EditorState>;Defined in: packages/timeline/src/engine.ts:71
Accessors
project
Get Signature
get project(): object;Defined in: packages/timeline/src/engine.ts:98
Returns
assets
assets: Record<string, {
durationMs?: number;
hash?: string;
height?: number;
id: `a-${string}`;
kind: "video" | "audio" | "image";
mimeType?: string;
name?: string;
nativePreview?: boolean;
src: string;
width?: number;
}>;fps
fps: number;height
height: number;id
id: string;layouts
layouts: object[];Multicam layout templates this project references. See layouts.ts.
markers
markers: object[];Timeline markers, sorted by timeMs (the commands keep them sorted).
name
name: string;presets
presets: object[];Named inspector value bundles (style presets). See presets.ts.
tracks
tracks: object[];Render order: index 0 is painted first (bottom); last is topmost.
version
version: 1;Project format version (see migrations.ts). parseProject migrates
older documents before validating; the default covers in-memory creation.
width
width: number;selection
Get Signature
get selection(): SelectionState;Defined in: packages/timeline/src/engine.ts:102
Returns
Methods
beginTransaction()
beginTransaction(): void;Defined in: packages/timeline/src/engine.ts:158
Open a transaction that spans multiple event-loop turns (e.g. a pointer
drag): dispatches in between record no history; endTransaction pushes
one entry for the whole gesture. Prefer transact for synchronous
batches.
Returns
void
cancelTransaction()
cancelTransaction(): void;Defined in: packages/timeline/src/engine.ts:189
Abort the open transaction (the whole stack, if nested): restore the project and selection from when it began, recording no history. Used by escape-to-cancel on drag gestures. No-op without an open transaction.
Returns
void
canRedo()
canRedo(): boolean;Defined in: packages/timeline/src/engine.ts:204
Returns
boolean
canUndo()
canUndo(): boolean;Defined in: packages/timeline/src/engine.ts:200
Returns
boolean
clearSelection()
clearSelection(): void;Defined in: packages/timeline/src/engine.ts:236
Returns
void
dispatch()
dispatch(command, options?): object;Defined in: packages/timeline/src/engine.ts:107
Apply a command. Returns the resulting project.
Parameters
command
options?
DispatchOptions = {}
Returns
assets
assets: Record<string, {
durationMs?: number;
hash?: string;
height?: number;
id: `a-${string}`;
kind: "video" | "audio" | "image";
mimeType?: string;
name?: string;
nativePreview?: boolean;
src: string;
width?: number;
}>;fps
fps: number;height
height: number;id
id: string;layouts
layouts: object[];Multicam layout templates this project references. See layouts.ts.
markers
markers: object[];Timeline markers, sorted by timeMs (the commands keep them sorted).
name
name: string;presets
presets: object[];Named inspector value bundles (style presets). See presets.ts.
tracks
tracks: object[];Render order: index 0 is painted first (bottom); last is topmost.
version
version: 1;Project format version (see migrations.ts). parseProject migrates
older documents before validating; the default covers in-memory creation.
width
width: number;endTransaction()
endTransaction(): void;Defined in: packages/timeline/src/engine.ts:170
Returns
void
loadProject()
loadProject(project): void;Defined in: packages/timeline/src/engine.ts:241
Replace the project (e.g. loading a saved file). Resets history.
Parameters
project
assets
Record<string, {
durationMs?: number;
hash?: string;
height?: number;
id: `a-${string}`;
kind: "video" | "audio" | "image";
mimeType?: string;
name?: string;
nativePreview?: boolean;
src: string;
width?: number;
}> = ...
fps
number = ...
height
number = ...
id
string = ...
layouts
object[] = ...
Multicam layout templates this project references. See layouts.ts.
markers
object[] = ...
Timeline markers, sorted by timeMs (the commands keep them sorted).
name
string = ...
presets
object[] = ...
Named inspector value bundles (style presets). See presets.ts.
tracks
object[] = ...
Render order: index 0 is painted first (bottom); last is topmost.
version
1 = ...
Project format version (see migrations.ts). parseProject migrates
older documents before validating; the default covers in-memory creation.
width
number = ...
Returns
void
pause()
pause(): void;Defined in: packages/timeline/src/engine.ts:275
Returns
void
play()
play(): void;Defined in: packages/timeline/src/engine.ts:271
Returns
void
redo()
redo(): boolean;Defined in: packages/timeline/src/engine.ts:220
Returns
boolean
seek()
seek(timeMs): void;Defined in: packages/timeline/src/engine.ts:266
Parameters
timeMs
number
Returns
void
select()
select(elementIds): void;Defined in: packages/timeline/src/engine.ts:232
Parameters
elementIds
`e-${string}`[]
Returns
void
setMuted()
setMuted(muted): void;Defined in: packages/timeline/src/engine.ts:283
Parameters
muted
boolean
Returns
void
setPlaybackRate()
setPlaybackRate(playbackRate): void;Defined in: packages/timeline/src/engine.ts:287
Parameters
playbackRate
number
Returns
void
setVolume()
setVolume(volume): void;Defined in: packages/timeline/src/engine.ts:279
Parameters
volume
number
Returns
void
toJSON()
toJSON(): object;Defined in: packages/timeline/src/engine.ts:256
The project as a JSON-serializable value.
Returns
assets
assets: Record<string, {
durationMs?: number;
hash?: string;
height?: number;
id: `a-${string}`;
kind: "video" | "audio" | "image";
mimeType?: string;
name?: string;
nativePreview?: boolean;
src: string;
width?: number;
}>;fps
fps: number;height
height: number;id
id: string;layouts
layouts: object[];Multicam layout templates this project references. See layouts.ts.
markers
markers: object[];Timeline markers, sorted by timeMs (the commands keep them sorted).
name
name: string;presets
presets: object[];Named inspector value bundles (style presets). See presets.ts.
tracks
tracks: object[];Render order: index 0 is painted first (bottom); last is topmost.
version
version: 1;Project format version (see migrations.ts). parseProject migrates
older documents before validating; the default covers in-memory creation.
width
width: number;transact()
transact(fn, options?): void;Defined in: packages/timeline/src/engine.ts:139
Group multiple dispatches into a single undo entry (and a single store notification). Used for drag gestures and multi-step operations.
Parameters
fn
() => void
options?
TransactionOptions = {}
Returns
void
undo()
undo(): boolean;Defined in: packages/timeline/src/engine.ts:208
Returns
boolean
fromJSON()
static fromJSON(data, options?): EditorEngine;Defined in: packages/timeline/src/engine.ts:260
Parameters
data
unknown
options?
Omit<EditorEngineOptions, "project"> = {}
Returns
EditorEngine