@redhare/lowcode-types
Version:
Types for Ali lowCode engine
415 lines (414 loc) • 12.1 kB
TypeScript
import { ReactElement } from 'react';
import { IPublicTypeNodeSchema, IPublicTypeIconType, IPublicTypeI18nData, IPublicTypeCompositeValue, IPublicTypePropsMap, IPublicTypePropsList } from '../type';
import { IPublicEnumTransformStage } from '../enum';
import { IPublicModelNodeChildren, IPublicModelComponentMeta, IPublicModelProp, IPublicModelProps, IPublicModelSettingTopEntry, IPublicModelDocumentModel, IPublicModelExclusiveGroup } from './';
export interface IBaseModelNode<Document = IPublicModelDocumentModel, Node = IPublicModelNode, NodeChildren = IPublicModelNodeChildren, ComponentMeta = IPublicModelComponentMeta, SettingTopEntry = IPublicModelSettingTopEntry, Props = IPublicModelProps, Prop = IPublicModelProp, ExclusiveGroup = IPublicModelExclusiveGroup> {
/**
* 节点 id
* node id
*/
id: string;
/**
* 节点标题
* title of node
*/
get title(): string | IPublicTypeI18nData | ReactElement;
/**
* @deprecated please use isContainerNode
*/
get isContainer(): boolean;
/**
* 是否为「容器型」节点
* check if node is a container type node
* @since v1.1.0
*/
get isContainerNode(): boolean;
/**
* @deprecated please use isRootNode
*/
get isRoot(): boolean;
/**
* 是否为根节点
* check if node is root in the tree
* @since v1.1.0
*/
get isRootNode(): boolean;
/**
* @deprecated please use isEmptyNode
*/
get isEmpty(): boolean;
/**
* 是否为空节点(无 children 或者 children 为空)
* check if current node is empty, which means no children or children is empty
* @since v1.1.0
*/
get isEmptyNode(): boolean;
/**
* @deprecated please use isPageNode
* 是否为 Page 节点
*/
get isPage(): boolean;
/**
* 是否为 Page 节点
* check if node is Page
* @since v1.1.0
*/
get isPageNode(): boolean;
/**
* @deprecated please use isComponentNode
*/
get isComponent(): boolean;
/**
* 是否为 Component 节点
* check if node is Component
* @since v1.1.0
*/
get isComponentNode(): boolean;
/**
* @deprecated please use isModalNode
*/
get isModal(): boolean;
/**
* 是否为「模态框」节点
* check if node is Modal
* @since v1.1.0
*/
get isModalNode(): boolean;
/**
* @deprecated please use isSlotNode
*/
get isSlot(): boolean;
/**
* 是否为插槽节点
* check if node is a Slot
* @since v1.1.0
*/
get isSlotNode(): boolean;
/**
* @deprecated please use isParentalNode
*/
get isParental(): boolean;
/**
* 是否为父类/分支节点
* check if node a parental node
* @since v1.1.0
*/
get isParentalNode(): boolean;
/**
* @deprecated please use isLeafNode
*/
get isLeaf(): boolean;
/**
* 是否为叶子节点
* check if node is a leaf node in tree
* @since v1.1.0
*/
get isLeafNode(): boolean;
/**
* 获取当前节点的锁定状态
* check if current node is locked
* @since v1.0.16
*/
get isLocked(): boolean;
/**
* @deprecated please use isRGLContainerNode
*/
set isRGLContainer(flag: boolean);
/**
* @deprecated please use isRGLContainerNode
* @returns Boolean
*/
get isRGLContainer(): boolean;
/**
* 设置为磁贴布局节点
* @since v1.1.0
*/
set isRGLContainerNode(flag: boolean);
/**
* 获取磁贴布局节点设置状态
* @returns Boolean
* @since v1.1.0
*/
get isRGLContainerNode(): boolean;
/**
* 下标
* index
*/
get index(): number | undefined;
/**
* 图标
* get icon of this node
*/
get icon(): IPublicTypeIconType;
/**
* 节点所在树的层级深度,根节点深度为 0
* depth level of this node, value of root node is 0
*/
get zLevel(): number;
/**
* 节点 componentName
* componentName
*/
get componentName(): string;
/**
* 节点的物料元数据
* get component meta of this node
*/
get componentMeta(): ComponentMeta | null;
/**
* 获取节点所属的文档模型对象
* get documentModel of this node
*/
get document(): Document | null;
/**
* 获取当前节点的前一个兄弟节点
* get previous sibling of this node
*/
get prevSibling(): Node | null | undefined;
/**
* 获取当前节点的后一个兄弟节点
* get next sibling of this node
*/
get nextSibling(): Node | null | undefined;
/**
* 获取当前节点的父亲节点
* get parent of this node
*/
get parent(): Node | null;
/**
* 获取当前节点的孩子节点模型
* get children of this node
*/
get children(): NodeChildren | null;
/**
* 节点上挂载的插槽节点们
* get slots of this node
*/
get slots(): Node[];
/**
* 当前节点为插槽节点时,返回节点对应的属性实例
* return coresponding prop when this node is a slot node
*/
get slotFor(): Prop | null | undefined;
/**
* 返回节点的属性集
* get props
*/
get props(): Props | null;
/**
* 返回节点的属性集
* get props data
*/
get propsData(): IPublicTypePropsMap | IPublicTypePropsList | null;
/**
* get conditionGroup
*/
get conditionGroup(): ExclusiveGroup | null;
/**
* 获取符合搭建协议 - 节点 schema 结构
* get schema of this node
* @since v1.1.0
*/
get schema(): IPublicTypeNodeSchema;
/**
* 获取对应的 setting entry
* get setting entry of this node
* @since v1.1.0
*/
get settingEntry(): SettingTopEntry;
/**
* 返回节点的尺寸、位置信息
* get rect information for this node
*/
getRect(): DOMRect | null;
/**
* 是否有挂载插槽节点
* check if current node has slots
*/
hasSlots(): boolean;
/**
* 是否设定了渲染条件
* check if current node has condition value set
*/
hasCondition(): boolean;
/**
* 是否设定了循环数据
* check if loop is set for this node
*/
hasLoop(): boolean;
/**
* 获取指定 path 的属性模型实例
* get prop by path
* @param path 属性路径,支持 a / a.b / a.0 等格式
* @param createIfNone 如果不存在,是否新建,默认为 true
*/
getProp(path: string | number, createIfNone?: boolean): Prop | null;
/**
* 获取指定 path 的属性模型实例值
* get prop value by path
* @param path 属性路径,支持 a / a.b / a.0 等格式
*/
getPropValue(path: string): any;
/**
* 获取指定 path 的属性模型实例,
* 注:导出时,不同于普通属性,该属性并不挂载在 props 之下,而是与 props 同级
*
* get extra prop by path, an extra prop means a prop not exists in the `props`
* but as siblint of the `props`
* @param path 属性路径,支持 a / a.b / a.0 等格式
* @param createIfNone 当没有属性的时候,是否创建一个属性
*/
getExtraProp(path: string, createIfNone?: boolean): Prop | null;
/**
* 获取指定 path 的属性模型实例,
* 注:导出时,不同于普通属性,该属性并不挂载在 props 之下,而是与 props 同级
*
* get extra prop value by path, an extra prop means a prop not exists in the `props`
* but as siblint of the `props`
* @param path 属性路径,支持 a / a.b / a.0 等格式
* @returns
*/
getExtraPropValue(path: string): any;
/**
* 设置指定 path 的属性模型实例值
* set value for prop with path
* @param path 属性路径,支持 a / a.b / a.0 等格式
* @param value 值
*/
setPropValue(path: string | number, value: IPublicTypeCompositeValue): void;
/**
* 设置指定 path 的属性模型实例值
* set value for extra prop with path
* @param path 属性路径,支持 a / a.b / a.0 等格式
* @param value 值
*/
setExtraPropValue(path: string, value: IPublicTypeCompositeValue): void;
/**
* 导入节点数据
* import node schema
* @param data
*/
importSchema(data: IPublicTypeNodeSchema): void;
/**
* 导出节点数据
* export schema from this node
* @param stage
* @param options
*/
exportSchema(stage: IPublicEnumTransformStage, options?: any): IPublicTypeNodeSchema;
/**
* 在指定位置之前插入一个节点
* insert a node befor current node
* @param node
* @param ref
* @param useMutator
*/
insertBefore(node: Node, ref?: Node | undefined, useMutator?: boolean): void;
/**
* 在指定位置之后插入一个节点
* insert a node after this node
* @param node
* @param ref
* @param useMutator
*/
insertAfter(node: Node, ref?: Node | undefined, useMutator?: boolean): void;
/**
* 替换指定节点
* replace a child node with data provided
* @param node 待替换的子节点
* @param data 用作替换的节点对象或者节点描述
* @returns
*/
replaceChild(node: Node, data: any): Node | null;
/**
* 将当前节点替换成指定节点描述
* replace current node with a new node schema
* @param schema
*/
replaceWith(schema: IPublicTypeNodeSchema): any;
/**
* 选中当前节点实例
* select current node
*/
select(): void;
/**
* 设置悬停态
* set hover value for current node
* @param flag
*/
hover(flag: boolean): void;
/**
* 设置节点锁定状态
* set lock value for current node
* @param flag
* @since v1.0.16
*/
lock(flag?: boolean): void;
/**
* 删除当前节点实例
* remove current node
*/
remove(): void;
/**
* 执行新增、删除、排序等操作
* excute remove/add/sort operations on node`s children
*
* @since v1.1.0
*/
mergeChildren(remover: (node: Node, idx: number) => boolean, adder: (children: Node[]) => any, sorter: (firstNode: Node, secondNode: Node) => number): any;
/**
* 当前节点是否包含某子节点
* check if current node contains another node as a child
* @param node
* @since v1.1.0
*/
contains(node: Node): boolean;
/**
* 是否可执行某 action
* check if current node can perform certain aciton with actionName
* @param actionName action 名字
* @since v1.1.0
*/
canPerformAction(actionName: string): boolean;
/**
* 当前节点是否可见
* check if current node is visible
* @since v1.1.0
*/
get visible(): boolean;
/**
* 设置当前节点是否可见
* set visible value for current node
* @since v1.1.0
*/
set visible(value: boolean);
/**
* 获取该节点的 ConditionalVisible 值
* check if current node ConditionalVisible
* @since v1.1.0
*/
isConditionalVisible(): boolean | undefined;
/**
* 设置该节点的 ConditionalVisible 为 true
* make this node as conditionalVisible === true
* @since v1.1.0
*/
setConditionalVisible(): void;
/**
* 获取节点实例对应的 dom 节点
*/
getDOMNode(): HTMLElement;
/**
* 获取磁贴相关信息
*/
getRGL(): {
isContainerNode: boolean;
isEmptyNode: boolean;
isRGLContainerNode: boolean;
isRGLNode: boolean;
isRGL: boolean;
rglNode: Node | null;
};
}
export interface IPublicModelNode extends IBaseModelNode<IPublicModelDocumentModel, IPublicModelNode> {
}