import { LinkedList, LinkedNode } from '../../shared/linkList.js'; import Base, { BaseLayerProps } from '../BaseLayer/index.js'; import { GroupLayer } from '../GroupLayer/index.js'; import { ElementType } from '../type.js'; type Range = { start: number; end: number; }; type TrackLayerProps = { uuid?: string; audioGain?: number; trackType: TrackType; layerId?: number; trimRange?: Range; } & BaseLayerProps; /** * 轨道类型 * - video 视频 * - audio 音频 * - image 图像 * - caption 字幕 * - text 文本 * - sticker 贴纸 * - effect 特效 */ type TrackType = 'video' | 'audio' | 'image' | 'caption' | 'text' | 'sticker' | 'effect' | string; interface TrackLayerType { /** * 轨道类型 */ trackType: TrackType; /** * 轨道中的元素 */ children: LinkedList; /** * 轨道总时长 */ daration: number; /** * 父容器 */ parent: GroupLayer; /** * 获取轨道的元素 */ getElement(uuid: string): LinkedNode | null; /** * 插入元素到轨道 插入index前 * @param type 元素类型 */ insertElement(element: ElementType, index: number): void; pushElement(element: ElementType): void; /** * 删除元素 * @param uuid 元素唯一标识 */ deleteElement(uuid: string): void; /** * 移动元素 * @param uuid 源元素唯一标识 * @param toIndex 目标索引 */ moveElement(uuid: string, toIndex: number): void; /** * 设置引擎合成 */ setComp(): void; /** * 设置引擎裁剪 */ setTrimRange(range: Range, callBack?: () => void): void; /** * 恢复默认裁剪 */ resetTrimRange(callBack?: () => void): void; } declare class TrackLayer extends Base implements TrackLayerType { trackType: TrackType; children: LinkedList; daration: number; parent: GroupLayer; trimRange: Range | undefined; constructor(namespace: string, props: TrackLayerProps); setComp(): void; /** * 设置裁剪范围 */ setTrimRange(range: Range): void; /** * 恢复默认裁剪 */ resetTrimRange(): void; getElement(uuid: any): LinkedNode | null; insertElement(element: ElementType, index: number): void; pushElement(element: ElementType): void; deleteElement(uuid: string): void; moveElement(uuid: string, toIndex: number): void; removeAll(): void; /** * 获取草稿 */ getLayerDraft(): TrackLayerProps; duplicate(): TrackLayer; } export { TrackLayer }; export type { TrackLayerProps, TrackLayerType, TrackType };