UNPKG

@rdkmaster/jigsaw-labs

Version:

Jigsaw, the next generation component set for RDK

100 lines (99 loc) 3.77 kB
import { GeneralCollection } from "./general-collection"; import { ComponentRef, EmbeddedViewRef, Type } from "@angular/core"; import { JigsawEditableBox } from "../../component/box/editable-box"; /** * 组件的输入属性结构化信息 */ export declare class ComponentInput { property: string; type?: string; default?: any; binding?: string; } /** * 组件的元数据信息 */ export declare class ComponentMetaData { [index: string]: any; component: Type<any>; selector: string; inputs?: ComponentInput[]; outputs?: any; import?: string; } export declare class LayoutComponentInfo { box: JigsawEditableBox; component: ComponentRef<any> | EmbeddedViewRef<any>; } export declare type LayoutParseFunction = (element: Element, metaDataList: ComponentMetaData[], inputs: ComponentInput[]) => ComponentMetaData; export declare type LayoutParseApi = { tagName: string; parseFunction: LayoutParseFunction; }; export declare type WrapperContentGetterApi = { wrapper: Type<any>; contentGetter: WrapperContentGetter; }; export declare type WrapperContentGetter = (component: any, arr: LayoutComponentInfo[]) => LayoutComponentInfo[]; /** * 用于动态布局页面的数据。 * * 布局数据是Jigsaw数据体系中的一个分支,关于Jigsaw数据体系详细介绍,请参考`IComponentData`的说明 */ export declare class LayoutData extends GeneralCollection<any> { [index: string]: any; direction?: string; justify?: string; align?: string; order?: number; grow?: number; shrink?: number; nodes?: LayoutData[]; componentMetaDataList?: ComponentMetaData[]; innerHtml?: string; components?: (ComponentRef<any> | EmbeddedViewRef<any>)[]; box: JigsawEditableBox; /** * 把LayoutData转化为dom字符串 * @returns {string} */ toHtml(): string; /** * 解析dom字符串,生成 LayoutData * @param {string} domStr * @param {ComponentMetaData[]} metaDataList * @returns {LayoutData} */ static of(domStr: string, metaDataList: ComponentMetaData[]): LayoutData; static parseApiList: LayoutParseApi[]; static addParseApi(tagName: string, parseFunction: LayoutParseFunction): void; static removeParseApi(tagName: string): void; static wrapperContentGetterList: WrapperContentGetterApi[]; static addWrapperContentGetter(wrapper: Type<any>, contentGetter: WrapperContentGetter): void; static removeWrapperContentGetter(wrapper: Type<any>): void; /** * 获取所有layout box里面的内容组件, * @returns {LayoutComponentInfo[]} */ getComponents(): LayoutComponentInfo[]; /** * 获取所有layout box里面的内容组件,包括wrapper的内容 * @returns {LayoutComponentInfo[]} */ getAllInnerComponents(): LayoutComponentInfo[]; /** * 根据componentMetaDataList生成对应的html * @param {ComponentMetaData[]} componentMetaDataList */ setInnerHtml(componentMetaDataList: ComponentMetaData[]): void; private _parseMetaDataToHtml(componentMetaData); private _parseTabPanesToHtml(componentMetaData); private _getComponent(node, arr); private static _parseElementToData(element, metaDataList); static _parseChildrenToComponentMetaDataList(element: Element, metaDataList: ComponentMetaData[]): ComponentMetaData[]; private static _parseElementToComponentMetaData(element, metaDataList); private _parseNodesToHtml(nodes, domStr); private _parseNodeToHtml(node, domStr); fromObject(data: any): LayoutData; static fromArray(nodes: any[]): LayoutData[]; }