import { AECompWrapperInstance } from '../../core/resource/type-helper/AECompWrapper/instance.js'; import { LinkedList } from '../../shared/linkList.js'; import Base, { BaseLayerProps } from '../BaseLayer/index.js'; import { TTrack } from '../index.js'; import { RootLayer } from '../RootLayer/index.js'; type GroupLayerProps = { direction: 'column' | 'row'; uuid?: string; audioGain?: number | undefined; transitionPath?: string; } & BaseLayerProps; interface GroupLayerType { /** * 组内元素方向 */ direction: 'column' | 'row'; /** * 转场主题地址 */ transitionPath: string; /** * 父容器 */ parent: RootLayer | GroupLayer; /** * 子元素 */ children: LinkedList; /** * 插入轨道 插入index前 * TODO: 实现层需要注意,插入轨道后,需要同步修改轨道层级 */ insertTrack(track: TTrack, index: number): void; /** * 插入组 插入index前 * TODO: 实现层需要注意,插入组后,vertical时需要同步修改组层级 */ insertGroup(track: GroupLayer, index: number): void; /** * 末尾插入轨道 */ pushTrack(track: TTrack): void; /** * 末尾插入组 */ pushGroup(group: GroupLayerType): void; /** * 删除轨道 */ deleteTrack(uuid: string): void; /** * 删除组 */ deleteGroup(uuid: string): void; /** * 移动轨道 */ moveTrack(fromIndex: number, toIndex: number): void; /** * 移动组 */ moveGroup(fromIndex: number, toIndex: number): void; /** * 设置引擎编辑组 */ setComp: (parentDirection: 'column' | 'row') => AECompWrapperInstance; } declare class GroupLayer extends Base implements GroupLayerType { direction: 'column' | 'row'; parent: RootLayer | GroupLayer; transitionPath: string; children: LinkedList; constructor(namespace: string, props: GroupLayerProps); setComp(parentDirection?: 'column' | 'row'): AECompWrapperInstance; insertTrack(track: TTrack, index: number): void; insertGroup(group: GroupLayer, index: number): void; pushTrack(track: TTrack): void; pushGroup(group: GroupLayer): void; deleteTrack(uuid: string): void; deleteGroup(uuid: string): void; moveTrack(fromIndex: number, toIndex: number): void; moveGroup(fromIndex: number, toIndex: number): void; removeAll(): void; /** * 设置转场 */ setTransition: (themePath: string, callback?: () => void) => Promise<((cb?: () => void) => Promise) | undefined>; /** * 撤销转场 */ removeTransition: (cb?: () => void) => Promise; /** * 是否有转场 */ hasTrsition(): boolean; /** * 获取草稿 */ getLayerDraft(): GroupLayerProps; duplicate(): GroupLayer; } export { GroupLayer }; export type { GroupLayerProps, GroupLayerType };