import { ComponentRef } from '@angular/core'; import { Subject } from 'rxjs'; export declare const parentViewElementSymbol: unique symbol; /** * 视图元素集合 */ export declare class ViewElementCollection { elements: ViewElement[]; /** * 添加新元素事件 */ elementAppended: Subject; /** * 向集合中插入新元素事件 */ elementInserted: Subject<{ index: number; element: ViewElement; }>; /** * 移除集合中元素事件,通过事件参数返回移除元素索引 */ elementRemoved: Subject; /** * 集合内元素索引位置变化事件 */ elementIndexChanged: Subject<{ swappingElement: ViewElement; targetElement: ViewElement; }>; /** * 视图元素集合的父元素 */ [parentViewElementSymbol]: ViewElement; constructor(elements: ViewElement[], parent?: ViewElement); /** * 向视图集合中添加元素 * @param element 待添加元素 */ append(element: ViewElement): void; /** * 向集合的指定位置插入一个新元素 * @param index 待插入元素位置 * @param element 待插入的元素 */ insert(index: number, element: ViewElement): void; /** * 待从集合中移除的元素索引 * @param index 待移除元素索引 * @returns 被移除的元素 */ remove(index: number): ViewElement; /** * 交换集合中两个元素的位置 * @param swappingElement 待交互元素 * @param targetElement 目标位置元素 */ swap(swappingElement: ViewElement, targetElement: ViewElement): void; select(path: string): ViewElementCollection; private selectByPathArray; } /** * 视图元素 */ export declare class ViewElement { private parentElement; /** * 元素标识 */ id: string; /** * 元素类型 */ type: string; /** * 子元素 */ contents?: ViewElementCollection; /** * 元素属性集合 */ [propName: string]: any; /** * 元素获得焦点的事件 */ elementFocused: Subject; /** * 当前元素所属视图模型的标识 */ viewModelId?: string; /** * 当前元素所属组件的标识 */ componentId?: string; /** * 元素属性变化事件 */ elementChanged: Subject; /** * 当前元素的父元素 */ readonly parent: ViewElement; /** * 元素标题变化事件 */ titleChanged: Subject; readonly componentRef: ComponentRef; readonly visualComponent: any; private innerVisualComponent; constructor(parentElement: ViewElement); setComponentRef(componetRef: ComponentRef): void; }