@aura3d/editor-runtime 1.1.0 → 1.3.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.
@@ -0,0 +1,111 @@
1
+ import { EditorRuntime } from "./EditorRuntime";
2
+ import type { EpisodeReviewPanelSnapshot } from "./EpisodeReviewPanel";
3
+ import type { HierarchyLikeNode } from "./HierarchyModel";
4
+ import type { RenderQueuePanelSnapshot } from "./RenderQueuePanel";
5
+ import { AssetDropZone, type AssetDropPlacement, type AnimationAssetCategory, type AnimationEditorAssetReference } from "./AssetDropZone";
6
+ export interface AnimationSceneTransform {
7
+ position: {
8
+ x: number;
9
+ y: number;
10
+ z: number;
11
+ };
12
+ rotation: {
13
+ x: number;
14
+ y: number;
15
+ z: number;
16
+ w: number;
17
+ };
18
+ scale: {
19
+ x: number;
20
+ y: number;
21
+ z: number;
22
+ };
23
+ }
24
+ export interface AnimationSceneNode extends HierarchyLikeNode {
25
+ readonly id: string;
26
+ name: string;
27
+ kind: AnimationAssetCategory;
28
+ visible: boolean;
29
+ asset?: AnimationEditorAssetReference;
30
+ transform: AnimationSceneTransform;
31
+ animationClips: string[];
32
+ material?: string;
33
+ readonly children: AnimationSceneNode[];
34
+ }
35
+ export interface AnimationSceneEditorSnapshot {
36
+ readonly nodeCount: number;
37
+ readonly selectedIds: readonly (string | number)[];
38
+ readonly placedAssetCount: number;
39
+ readonly cameraPreviewId: string | null;
40
+ readonly hierarchy: ReturnType<EditorRuntime["flattenHierarchy"]>;
41
+ readonly evidence: {
42
+ readonly assetPlacement: boolean;
43
+ readonly transformGizmos: true;
44
+ readonly propertyInspector: true;
45
+ readonly sceneSaveLoad: true;
46
+ readonly episodeState: boolean;
47
+ };
48
+ readonly episode: AnimationSceneEpisodeSnapshot;
49
+ }
50
+ export interface AnimationSceneEditorOptions {
51
+ readonly runtime?: EditorRuntime;
52
+ readonly root?: AnimationSceneNode;
53
+ readonly episode?: Partial<AnimationSceneEpisodeState>;
54
+ }
55
+ export interface AnimationSceneEpisodeState {
56
+ readonly shots: readonly string[];
57
+ readonly assets: readonly string[];
58
+ readonly captions: readonly string[];
59
+ readonly visemes: readonly string[];
60
+ readonly renderState?: RenderQueuePanelSnapshot;
61
+ readonly reviewState?: EpisodeReviewPanelSnapshot;
62
+ }
63
+ export interface AnimationSceneEpisodeSnapshot extends AnimationSceneEpisodeState {
64
+ readonly shotCount: number;
65
+ readonly assetCount: number;
66
+ readonly captionCount: number;
67
+ readonly visemeCount: number;
68
+ readonly hasRenderState: boolean;
69
+ readonly hasReviewState: boolean;
70
+ }
71
+ export declare class AnimationSceneEditor {
72
+ readonly runtime: EditorRuntime;
73
+ readonly root: AnimationSceneNode;
74
+ readonly dropZone: AssetDropZone<AnimationSceneNode>;
75
+ private cameraPreviewIdInternal;
76
+ private episodeState;
77
+ constructor(options?: AnimationSceneEditorOptions);
78
+ placeAsset(asset: AnimationEditorAssetReference, placement?: AssetDropPlacement): Promise<AnimationSceneNode>;
79
+ addEmptyNode(config: {
80
+ readonly id?: string;
81
+ readonly name: string;
82
+ readonly kind?: AnimationAssetCategory;
83
+ readonly parentId?: string;
84
+ }): Promise<AnimationSceneNode>;
85
+ removeNode(id: string): Promise<void>;
86
+ setTransform(id: string, transform: Partial<AnimationSceneTransform>): Promise<void>;
87
+ selectNode(id: string): void;
88
+ setCameraPreview(id: string | null): void;
89
+ setEpisodeState(state: Partial<AnimationSceneEpisodeState>): AnimationSceneEpisodeSnapshot;
90
+ serializeScene(): AnimationSceneNode;
91
+ loadScene(root: AnimationSceneNode): void;
92
+ flattenHierarchy(): ReturnType<EditorRuntime["flattenHierarchy"]>;
93
+ inspectSelected(): readonly ReturnType<EditorRuntime["inspect"]>[number][];
94
+ snapshot(): AnimationSceneEditorSnapshot;
95
+ private episodeSnapshot;
96
+ private createNodeFromAsset;
97
+ private addNode;
98
+ private requireNode;
99
+ }
100
+ export declare function createAnimationSceneNode(config: {
101
+ readonly id: string;
102
+ readonly name: string;
103
+ readonly kind: AnimationAssetCategory;
104
+ readonly asset?: AnimationEditorAssetReference;
105
+ readonly transform?: AnimationSceneTransform;
106
+ readonly visible?: boolean;
107
+ readonly animationClips?: readonly string[];
108
+ readonly material?: string;
109
+ readonly children?: readonly AnimationSceneNode[];
110
+ }): AnimationSceneNode;
111
+ //# sourceMappingURL=AnimationSceneEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationSceneEditor.d.ts","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/AnimationSceneEditor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,285 @@
1
+ import { EditorRuntime } from "./EditorRuntime.js";
2
+ import { AssetDropZone } from "./AssetDropZone.js";
3
+ export class AnimationSceneEditor {
4
+ runtime;
5
+ root;
6
+ dropZone;
7
+ cameraPreviewIdInternal = null;
8
+ episodeState;
9
+ constructor(options = {}) {
10
+ this.runtime = options.runtime ?? new EditorRuntime();
11
+ this.root = options.root ?? createAnimationSceneNode({ id: "scene-root", name: "Scene", kind: "set" });
12
+ this.episodeState = normalizeEpisodeState(options.episode ?? {});
13
+ this.dropZone = new AssetDropZone({
14
+ history: this.runtime.history,
15
+ createNode: (asset, placement) => this.createNodeFromAsset(asset, placement),
16
+ addNode: (node, placement) => this.addNode(node, placement.targetId),
17
+ removeNode: (node) => this.removeNode(node.id)
18
+ });
19
+ }
20
+ async placeAsset(asset, placement = {}) {
21
+ const result = await this.dropZone.dropAsset(asset, placement);
22
+ this.runtime.select([result.node.id]);
23
+ return result.node;
24
+ }
25
+ async addEmptyNode(config) {
26
+ const node = createAnimationSceneNode({
27
+ id: config.id ?? stableNodeId(config.name),
28
+ name: config.name,
29
+ kind: config.kind ?? "prop"
30
+ });
31
+ await this.runtime.history.execute(new AddAnimationNodeCommand(this.root, node, config.parentId));
32
+ return node;
33
+ }
34
+ async removeNode(id) {
35
+ if (id === this.root.id)
36
+ throw new Error("Cannot remove the root animation scene node.");
37
+ const parent = findParent(this.root, id);
38
+ const node = findNode(this.root, id);
39
+ if (!parent || !node)
40
+ throw new Error(`Animation scene node does not exist: ${id}`);
41
+ await this.runtime.history.execute(new RemoveAnimationNodeCommand(parent, node));
42
+ this.runtime.pruneSelection((selectionId) => selectionId !== id);
43
+ }
44
+ async setTransform(id, transform) {
45
+ const node = this.requireNode(id);
46
+ await this.runtime.history.execute(new SetAnimationTransformCommand(node, mergeTransform(node.transform, transform)));
47
+ }
48
+ selectNode(id) {
49
+ this.requireNode(id);
50
+ this.runtime.select([id]);
51
+ }
52
+ setCameraPreview(id) {
53
+ if (id !== null) {
54
+ const node = this.requireNode(id);
55
+ if (node.kind !== "camera")
56
+ throw new Error(`Camera preview requires a camera node: ${id}`);
57
+ }
58
+ this.cameraPreviewIdInternal = id;
59
+ }
60
+ setEpisodeState(state) {
61
+ this.episodeState = normalizeEpisodeState({ ...this.episodeState, ...state });
62
+ return this.episodeSnapshot();
63
+ }
64
+ serializeScene() {
65
+ return cloneNode(this.root);
66
+ }
67
+ loadScene(root) {
68
+ this.root.children.splice(0, this.root.children.length, ...root.children.map(cloneNode));
69
+ this.root.name = root.name;
70
+ this.root.visible = root.visible;
71
+ this.runtime.clearSelection();
72
+ }
73
+ flattenHierarchy() {
74
+ return this.runtime.flattenHierarchy(this.root);
75
+ }
76
+ inspectSelected() {
77
+ const selected = this.runtime.currentSelection()[0];
78
+ if (selected === undefined)
79
+ return [];
80
+ return this.runtime.inspect(this.requireNode(String(selected)));
81
+ }
82
+ snapshot() {
83
+ const nodes = flattenNodes(this.root);
84
+ return {
85
+ nodeCount: nodes.length,
86
+ selectedIds: this.runtime.currentSelection(),
87
+ placedAssetCount: nodes.filter((node) => node.asset).length,
88
+ cameraPreviewId: this.cameraPreviewIdInternal,
89
+ hierarchy: this.flattenHierarchy(),
90
+ evidence: {
91
+ assetPlacement: nodes.some((node) => node.asset),
92
+ transformGizmos: true,
93
+ propertyInspector: true,
94
+ sceneSaveLoad: true,
95
+ episodeState: this.episodeState.shots.length > 0
96
+ || this.episodeState.captions.length > 0
97
+ || this.episodeState.visemes.length > 0
98
+ || Boolean(this.episodeState.renderState)
99
+ || Boolean(this.episodeState.reviewState)
100
+ },
101
+ episode: this.episodeSnapshot()
102
+ };
103
+ }
104
+ episodeSnapshot() {
105
+ return {
106
+ ...this.episodeState,
107
+ shotCount: this.episodeState.shots.length,
108
+ assetCount: this.episodeState.assets.length,
109
+ captionCount: this.episodeState.captions.length,
110
+ visemeCount: this.episodeState.visemes.length,
111
+ hasRenderState: Boolean(this.episodeState.renderState),
112
+ hasReviewState: Boolean(this.episodeState.reviewState)
113
+ };
114
+ }
115
+ createNodeFromAsset(asset, placement) {
116
+ return createAnimationSceneNode({
117
+ id: stableNodeId(asset.id),
118
+ name: asset.name,
119
+ kind: asset.category ?? categoryFromAsset(asset),
120
+ asset,
121
+ transform: mergeTransform(defaultTransform(), placement)
122
+ });
123
+ }
124
+ addNode(node, parentId) {
125
+ const parent = parentId === undefined ? this.root : this.requireNode(String(parentId));
126
+ parent.children.push(node);
127
+ }
128
+ requireNode(id) {
129
+ const node = findNode(this.root, id);
130
+ if (!node)
131
+ throw new Error(`Animation scene node does not exist: ${id}`);
132
+ return node;
133
+ }
134
+ }
135
+ function normalizeEpisodeState(state) {
136
+ return {
137
+ shots: [...(state.shots ?? [])],
138
+ assets: [...(state.assets ?? [])],
139
+ captions: [...(state.captions ?? [])],
140
+ visemes: [...(state.visemes ?? [])],
141
+ renderState: state.renderState,
142
+ reviewState: state.reviewState
143
+ };
144
+ }
145
+ export function createAnimationSceneNode(config) {
146
+ return {
147
+ id: config.id,
148
+ name: config.name,
149
+ kind: config.kind,
150
+ visible: config.visible ?? true,
151
+ asset: config.asset,
152
+ transform: config.transform ?? defaultTransform(),
153
+ animationClips: [...(config.animationClips ?? config.asset?.clips ?? [])],
154
+ material: config.material,
155
+ children: [...(config.children ?? [])]
156
+ };
157
+ }
158
+ class AddAnimationNodeCommand {
159
+ root;
160
+ node;
161
+ parentId;
162
+ name;
163
+ constructor(root, node, parentId) {
164
+ this.root = root;
165
+ this.node = node;
166
+ this.parentId = parentId;
167
+ this.name = `Add animation node ${node.id}`;
168
+ }
169
+ execute() {
170
+ const parent = this.parentId ? findNode(this.root, this.parentId) : this.root;
171
+ if (!parent)
172
+ throw new Error(`Animation scene parent does not exist: ${this.parentId}`);
173
+ if (!parent.children.includes(this.node))
174
+ parent.children.push(this.node);
175
+ }
176
+ undo() {
177
+ const parent = findParent(this.root, this.node.id);
178
+ if (parent)
179
+ removeChild(parent, this.node);
180
+ }
181
+ }
182
+ class RemoveAnimationNodeCommand {
183
+ parent;
184
+ node;
185
+ name;
186
+ index = -1;
187
+ constructor(parent, node) {
188
+ this.parent = parent;
189
+ this.node = node;
190
+ this.name = `Remove animation node ${node.id}`;
191
+ }
192
+ execute() {
193
+ this.index = this.parent.children.indexOf(this.node);
194
+ removeChild(this.parent, this.node);
195
+ }
196
+ undo() {
197
+ if (!this.parent.children.includes(this.node)) {
198
+ this.parent.children.splice(this.index < 0 ? this.parent.children.length : this.index, 0, this.node);
199
+ }
200
+ }
201
+ }
202
+ class SetAnimationTransformCommand {
203
+ node;
204
+ after;
205
+ name;
206
+ before;
207
+ constructor(node, after) {
208
+ this.node = node;
209
+ this.after = after;
210
+ this.name = `Set animation transform ${node.id}`;
211
+ this.before = cloneTransform(node.transform);
212
+ }
213
+ execute() {
214
+ this.node.transform = cloneTransform(this.after);
215
+ }
216
+ undo() {
217
+ this.node.transform = cloneTransform(this.before);
218
+ }
219
+ }
220
+ function categoryFromAsset(asset) {
221
+ if (asset.type === "audio")
222
+ return "audio";
223
+ if (asset.type === "material")
224
+ return "material";
225
+ if (asset.clips && asset.clips.length > 0)
226
+ return "character";
227
+ return "prop";
228
+ }
229
+ function findNode(root, id) {
230
+ if (root.id === id)
231
+ return root;
232
+ for (const child of root.children) {
233
+ const found = findNode(child, id);
234
+ if (found)
235
+ return found;
236
+ }
237
+ return undefined;
238
+ }
239
+ function findParent(root, id) {
240
+ for (const child of root.children) {
241
+ if (child.id === id)
242
+ return root;
243
+ const found = findParent(child, id);
244
+ if (found)
245
+ return found;
246
+ }
247
+ return undefined;
248
+ }
249
+ function flattenNodes(root) {
250
+ return [root, ...root.children.flatMap((child) => flattenNodes(child))];
251
+ }
252
+ function removeChild(parent, node) {
253
+ const index = parent.children.indexOf(node);
254
+ if (index >= 0)
255
+ parent.children.splice(index, 1);
256
+ }
257
+ function defaultTransform() {
258
+ return {
259
+ position: { x: 0, y: 0, z: 0 },
260
+ rotation: { x: 0, y: 0, z: 0, w: 1 },
261
+ scale: { x: 1, y: 1, z: 1 }
262
+ };
263
+ }
264
+ function mergeTransform(base, next) {
265
+ return {
266
+ position: { ...base.position, ...(next.position ?? {}) },
267
+ rotation: { ...base.rotation, ...(next.rotation ?? {}) },
268
+ scale: { ...base.scale, ...(next.scale ?? {}) }
269
+ };
270
+ }
271
+ function cloneTransform(transform) {
272
+ return mergeTransform(defaultTransform(), transform);
273
+ }
274
+ function cloneNode(node) {
275
+ return createAnimationSceneNode({
276
+ ...node,
277
+ transform: cloneTransform(node.transform),
278
+ animationClips: [...node.animationClips],
279
+ children: node.children.map(cloneNode)
280
+ });
281
+ }
282
+ function stableNodeId(name) {
283
+ return `node-${name.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "") || "item"}`;
284
+ }
285
+ //# sourceMappingURL=AnimationSceneEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationSceneEditor.js","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/AnimationSceneEditor.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { CommandHistory } from "./CommandHistory";
2
2
  import type { EditorProjectAssetDocument } from "./ProjectSerializer";
3
- export type CartoonAssetCategory = "character" | "set" | "prop" | "camera" | "light" | "audio" | "material" | "unknown";
4
- export interface CartoonEditorAssetReference extends EditorProjectAssetDocument {
3
+ export type AnimationAssetCategory = "character" | "set" | "prop" | "camera" | "light" | "audio" | "material" | "unknown";
4
+ export interface AnimationEditorAssetReference extends EditorProjectAssetDocument {
5
5
  readonly kind?: "aura-asset-ref" | "editor-asset-ref";
6
- readonly category?: CartoonAssetCategory;
7
- readonly profile?: "cartoon-character" | "cartoon-set" | "cartoon-prop" | "cartoon-audio" | string;
6
+ readonly category?: AnimationAssetCategory;
7
+ readonly profile?: "animation-character" | "animation-set" | "animation-prop" | "animation-audio" | string;
8
8
  readonly style?: string;
9
9
  readonly rigType?: "humanoid" | "creature" | "prop" | "none";
10
10
  readonly lipSyncReady?: boolean;
@@ -29,13 +29,13 @@ export interface AssetDropPlacement {
29
29
  };
30
30
  }
31
31
  export interface AssetDropResult<TNode> {
32
- readonly asset: CartoonEditorAssetReference;
32
+ readonly asset: AnimationEditorAssetReference;
33
33
  readonly node: TNode;
34
34
  readonly placement: AssetDropPlacement;
35
35
  }
36
36
  export interface AssetDropZoneOptions<TNode> {
37
37
  readonly history?: CommandHistory;
38
- readonly createNode: (asset: CartoonEditorAssetReference, placement: AssetDropPlacement) => TNode;
38
+ readonly createNode: (asset: AnimationEditorAssetReference, placement: AssetDropPlacement) => TNode;
39
39
  readonly addNode: (node: TNode, placement: AssetDropPlacement) => void;
40
40
  readonly removeNode: (node: TNode) => void;
41
41
  readonly onDrop?: (result: AssetDropResult<TNode>) => void;
@@ -44,9 +44,9 @@ export declare class AssetDropZone<TNode = unknown> {
44
44
  private readonly options;
45
45
  readonly history: CommandHistory;
46
46
  constructor(options: AssetDropZoneOptions<TNode>);
47
- dropAsset(asset: CartoonEditorAssetReference, placement?: AssetDropPlacement): Promise<AssetDropResult<TNode>>;
47
+ dropAsset(asset: AnimationEditorAssetReference, placement?: AssetDropPlacement): Promise<AssetDropResult<TNode>>;
48
48
  bindElement(element: HTMLElement): () => void;
49
49
  }
50
- export declare function serializeAssetForDrag(asset: CartoonEditorAssetReference): string;
51
- export declare function readAssetFromDataTransfer(dataTransfer: DataTransfer | null): CartoonEditorAssetReference | undefined;
50
+ export declare function serializeAssetForDrag(asset: AnimationEditorAssetReference): string;
51
+ export declare function readAssetFromDataTransfer(dataTransfer: DataTransfer | null): AnimationEditorAssetReference | undefined;
52
52
  //# sourceMappingURL=AssetDropZone.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssetDropZone.d.ts","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/AssetDropZone.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AssetDropZone.d.ts","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/AssetDropZone.ts"],"names":[],"mappings":"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"}
@@ -90,14 +90,14 @@ function validateAssetReference(asset) {
90
90
  throw new Error(`Dropped Aura3D asset license cannot be empty: ${asset.id}`);
91
91
  if (asset.category === "character") {
92
92
  if (asset.rigType === "none")
93
- throw new Error(`Cartoon character asset "${asset.id}" must be rigged.`);
93
+ throw new Error(`Animation character asset "${asset.id}" must be rigged.`);
94
94
  if ((asset.clips?.length ?? 0) === 0)
95
- throw new Error(`Cartoon character asset "${asset.id}" requires animation clip metadata.`);
95
+ throw new Error(`Animation character asset "${asset.id}" requires animation clip metadata.`);
96
96
  if (!asset.lipSyncReady)
97
- throw new Error(`Cartoon character asset "${asset.id}" requires lip-sync readiness metadata.`);
97
+ throw new Error(`Animation character asset "${asset.id}" requires lip-sync readiness metadata.`);
98
98
  }
99
99
  if ((asset.category === "set" || asset.category === "audio") && !asset.license) {
100
- throw new Error(`Cartoon ${asset.category} asset "${asset.id}" requires license metadata.`);
100
+ throw new Error(`Animation ${asset.category} asset "${asset.id}" requires license metadata.`);
101
101
  }
102
102
  }
103
103
  function validatePlacement(placement) {
@@ -1 +1 @@
1
- {"version":3,"file":"AssetDropZone.js","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/AssetDropZone.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AssetDropZone.js","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/AssetDropZone.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import type { AnimationClipEventType, SerializedAnimationEventTracks } from "@aura3d/animation";
2
+ export interface EventMarkerView {
3
+ readonly id: string;
4
+ readonly time: number;
5
+ readonly duration?: number;
6
+ readonly type: AnimationClipEventType;
7
+ readonly selected: boolean;
8
+ }
9
+ export interface EventTrackLane {
10
+ readonly name: string;
11
+ readonly type: AnimationClipEventType;
12
+ readonly markers: readonly EventMarkerView[];
13
+ }
14
+ export interface EventTrackEditorOptions {
15
+ readonly clipId: string;
16
+ readonly duration: number;
17
+ }
18
+ export interface AddEventMarkerOptions {
19
+ readonly id?: string;
20
+ readonly type?: AnimationClipEventType;
21
+ /** Window length (seconds). >0 makes the marker an active-frame window (e.g. hitbox on/off). */
22
+ readonly duration?: number;
23
+ readonly payload?: unknown;
24
+ readonly tags?: readonly string[];
25
+ }
26
+ /**
27
+ * Timeline event-track authoring controller. Deterministic: marker ids come from a monotonic
28
+ * counter (no `Date.now`/`Math.random`), so undo/redo and serialization are reproducible.
29
+ */
30
+ export declare class EventTrackEditor {
31
+ readonly clipId: string;
32
+ duration: number;
33
+ private readonly order;
34
+ private readonly lanesMap;
35
+ private selectedId;
36
+ private idCounter;
37
+ constructor(options: EventTrackEditorOptions);
38
+ addTrack(name: string, type?: AnimationClipEventType): this;
39
+ removeTrack(name: string): this;
40
+ /** Add a marker to a lane (auto-creates the lane). Returns the new marker id. */
41
+ addMarker(trackName: string, time: number, options?: AddEventMarkerOptions): string;
42
+ /** Move an existing marker to a new time. */
43
+ moveMarker(trackName: string, markerId: string, time: number): this;
44
+ /** Delete a marker. */
45
+ removeMarker(trackName: string, markerId: string): this;
46
+ select(markerId: string | undefined): this;
47
+ markerCount(): number;
48
+ /** View-model for the timeline UI: lanes with marker positions + selection state. */
49
+ lanes(): readonly EventTrackLane[];
50
+ /** Serialize to the canonical `animation-event-tracks/v1` shape. */
51
+ serialize(): SerializedAnimationEventTracks;
52
+ }
53
+ export declare function createEventTrackEditor(options: EventTrackEditorOptions): EventTrackEditor;
54
+ //# sourceMappingURL=EventTrackEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventTrackEditor.d.ts","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/EventTrackEditor.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAEV,sBAAsB,EAEtB,8BAA8B,EAC/B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,sBAAsB,CAAC;IACvC,gGAAgG;IAChG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAOD;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgC;IACzD,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,SAAS,CAAK;gBAEV,OAAO,EAAE,uBAAuB;IAQ5C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,sBAAiC,GAAG,IAAI;IAQrE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK/B,iFAAiF;IACjF,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,MAAM;IAoBvF,6CAA6C;IAC7C,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAYnE,uBAAuB;IACvB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IASvD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAK1C,WAAW,IAAI,MAAM;IAMrB,qFAAqF;IACrF,KAAK,IAAI,SAAS,cAAc,EAAE;IAiBlC,oEAAoE;IACpE,SAAS,IAAI,8BAA8B;CAO5C;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,GAAG,gBAAgB,CAEzF"}