@rdkmaster/jigsaw-labs
Version:
Jigsaw, the next generation component set for RDK
100 lines (99 loc) • 3.77 kB
TypeScript
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[];
}