@omnimedia/omnitool
Version:
open source video processing tools
48 lines • 1.25 kB
JavaScript
import { MapG } from "@e280/stz";
import { Effect, Kind } from "../parts/item.js";
export class O {
#nextId = 0;
#items = new MapG();
#getId() {
return this.#nextId++;
}
register(item) {
if (!this.#items.has(item.id))
this.#items.set(item.id, item);
return item.id;
}
get items() {
return [...this.#items.values()];
}
sequence = (...items) => ({
id: this.#getId(),
kind: Kind.Sequence,
children: items.map(item => this.register(item)),
});
stack = (...items) => ({
id: this.#getId(),
kind: Kind.Stack,
children: items.map(item => this.register(item)),
});
clip = (media, start, duration) => ({
id: this.#getId(),
kind: Kind.Clip,
mediaHash: media.datafile.checksum.hash,
start: start ?? 0,
duration: duration ?? media.duration,
});
text = (content) => ({
id: this.#getId(),
kind: Kind.Text,
content,
});
transition = {
crossfade: (duration) => ({
id: this.#getId(),
kind: Kind.Transition,
effect: Effect.Crossfade,
duration,
}),
};
}
//# sourceMappingURL=o.js.map