mcut
@mcut/timeline

EditorEngine

Generated TypeScript API reference for the public mcut SDK.

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

SelectionState

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

AnyCommand

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

On this page