UNPKG

@omnimedia/omnitool

Version:

open source video processing tools

82 lines (81 loc) 3.82 kB
import { TextStyleOptions } from "pixi.js"; import { O } from "./o.js"; import { Media } from "../parts/media.js"; import { TimelineFile } from "../parts/basics.js"; import { TransitionName } from "../parts/transitions.js"; import { filters, FilterParams, FilterType } from "../parts/filters.js"; import { CaptionOptions, CaptionSourceItem } from "../parts/captions.js"; import { Transcription } from "../../features/speech/transcribe/types.js"; import { AnimationPreset, PresetOptions } from "../parts/animations/types.js"; import { Crop, FilterableItem, Item, ItemBase, VisualAnimatableItem } from "../parts/item.js"; import { Anim, Interpolation, Keyframes, TrackTransform, Transform, Vec2, VisualAnimationInput, VisualAnimations } from "../types.js"; export type Build<T extends Item.Any = Item.Any> = (o: O) => T; type BuildPresetAnimateActions = { [TKey in AnimationPreset]: BuildPresetAnimateAction; }; type BuildTransitionActions = { [TKey in TransitionName]: (duration: number, options?: ItemBase) => Build<Item.Transition>; }; type ContainerInput = [label: string, ...items: Build[]] | Build[]; export declare function timeline(root: Build): TimelineFile; export declare function sequence(...input: ContainerInput): Build<Item.Sequence>; export declare function stack(...input: ContainerInput): Build<Item.Stack>; export declare function video(media: Media, options?: { start?: number; duration?: number; label?: string; enabled?: boolean; }): Build<Item.Video>; export declare function image(media: Media, options?: { duration?: number; label?: string; enabled?: boolean; }): Build<Item.Image>; export declare function audio(media: Media, options?: { start?: number; duration?: number; gain?: number; label?: string; enabled?: boolean; }): Build<Item.Audio>; export declare function text(content: string, options?: { duration?: number; styles?: TextStyleOptions; label?: string; enabled?: boolean; }): Build<Item.Text>; export declare function captions(item: Build<CaptionSourceItem>, transcript: Transcription, options?: CaptionOptions): Build<Item.Stack>; export declare function gap(duration: number, options?: ItemBase): Build<Item.Gap>; export declare function spatial(transform?: Transform, crop?: Crop): Build<Item.Spatial>; export declare const anim: { scalar(terp: Interpolation, track: Keyframes): Anim<Keyframes>; vec2(terp: Interpolation, source: Keyframes<Vec2>): Anim<{ x: Keyframes; y: Keyframes; }>; transform: (terp: Interpolation, source: Keyframes<Transform>) => Anim<TrackTransform>; }; interface BuildFilterAction<TFilter extends FilterType> { <T extends FilterableItem>(item: Build<T>, params?: FilterParams<TFilter>): Build<T>; make(params?: FilterParams<TFilter>): Build<Item.Filter<TFilter>>; } interface BuildAnimateAction<TKey extends keyof VisualAnimations = keyof VisualAnimations> { <T extends VisualAnimatableItem>(item: Build<T>, terp: Interpolation, track: VisualAnimationInput<TKey>): Build<T>; make(terp: Interpolation, track: VisualAnimationInput<TKey>): Build<Item.Animation>; } interface BuildPresetAnimateAction { <T extends VisualAnimatableItem>(item: Build<T>, options?: PresetOptions): Build<T>; make(options?: PresetOptions): Build<Item.Animation>; } type BuildFilterActions = { [TName in keyof typeof filters]: BuildFilterAction<(typeof filters)[TName]["type"]>; }; export declare const filter: BuildFilterActions; export declare const animate: { presets: BuildPresetAnimateActions; opacity: BuildAnimateAction<"opacity">; transform: BuildAnimateAction<"transform">; }; export declare function textStyle(style: TextStyleOptions): Build<Item.TextStyle>; export declare const transition: BuildTransitionActions; export {};