@redhare/lowcode-types
Version:
Types for Ali lowCode engine
188 lines (187 loc) • 6.17 kB
TypeScript
import { IPublicTypeRootSchema, IPublicTypeDragNodeDataObject, IPublicTypeDragNodeObject, IPublicTypePropChangeOptions, IPublicTypeDisposable } from '../type';
import { IPublicEnumTransformStage } from '../enum';
import { IPublicApiProject } from '../api';
import { IPublicModelDropLocation, IPublicModelDetecting, IPublicModelNode, IPublicModelSelection, IPublicModelHistory, IPublicModelModalNodesManager } from './';
import { IPublicTypeNodeData, IPublicTypeNodeSchema, IPublicTypeOnChangeOptions } from '@redhare/lowcode-types';
export interface IPublicModelDocumentModel<Selection = IPublicModelSelection, History = IPublicModelHistory, Node = IPublicModelNode, DropLocation = IPublicModelDropLocation, ModalNodesManager = IPublicModelModalNodesManager, Project = IPublicApiProject> {
/**
* 节点选中区模型实例
* instance of selection
*/
selection: Selection;
/**
* 画布节点 hover 区模型实例
* instance of detecting
*/
detecting: IPublicModelDetecting;
/**
* 操作历史模型实例
* instance of history
*/
history: History;
/**
* id
*/
get id(): string;
set id(id: string);
/**
* 获取当前文档所属的 project
* get project which this documentModel belongs to
* @returns
*/
get project(): Project;
/**
* 获取文档的根节点
* root node of this documentModel
* @returns
*/
get root(): Node | null;
get focusNode(): Node | null;
set focusNode(node: Node | null);
/**
* 获取文档下所有节点
* @returns
*/
get nodesMap(): Map<string, Node>;
/**
* 模态节点管理
* get instance of modalNodesManager
*/
get modalNodesManager(): ModalNodesManager | null;
/**
* 根据 nodeId 返回 Node 实例
* get node by nodeId
* @param nodeId
* @returns
*/
getNodeById(nodeId: string): Node | null;
/**
* 导入 schema
* import schema data
* @param schema
*/
importSchema(schema: IPublicTypeRootSchema): void;
/**
* 导出 schema
* export schema
* @param stage
* @returns
*/
exportSchema(stage: IPublicEnumTransformStage): IPublicTypeRootSchema | undefined;
/**
* 插入节点
* insert a node
*/
insertNode(parent: Node, thing: Node | IPublicTypeNodeData, at?: number | null | undefined, copy?: boolean | undefined): Node | null;
/**
* 创建一个节点
* create a node
* @param data
* @returns
*/
createNode<T = Node>(data: IPublicTypeNodeSchema): T | null;
/**
* 移除指定节点/节点id
* remove a node by node instance or nodeId
* @param idOrNode
*/
removeNode(idOrNode: string | Node): void;
/**
* componentsMap of documentModel
* @param extraComps
* @returns
*/
getComponentsMap(extraComps?: string[]): any;
/**
* 检查拖拽放置的目标节点是否可以放置该拖拽对象
* check if dragOjbect can be put in this dragTarget
* @param dropTarget 拖拽放置的目标节点
* @param dragObject 拖拽的对象
* @returns boolean 是否可以放置
* @since v1.0.16
*/
checkNesting(dropTarget: Node, dragObject: IPublicTypeDragNodeObject | IPublicTypeDragNodeDataObject): boolean;
/**
* 当前 document 新增节点事件
* set callback for event on node is created for a document
*/
onAddNode(fn: (node: Node) => void): IPublicTypeDisposable;
/**
* 当前 document 新增节点事件,此时节点已经挂载到 document 上
* set callback for event on node is mounted to canvas
*/
onMountNode(fn: (payload: {
node: Node;
}) => void): IPublicTypeDisposable;
/**
* 当前 document 删除节点事件
* set callback for event on node is removed
*/
onRemoveNode(fn: (node: Node) => void): IPublicTypeDisposable;
/**
* 当前 document 的 hover 变更事件
*
* set callback for event on detecting changed
*/
onChangeDetecting(fn: (node: Node) => void): IPublicTypeDisposable;
/**
* 当前 document 的选中变更事件
* set callback for event on selection changed
*/
onChangeSelection(fn: (ids: string[]) => void): IPublicTypeDisposable;
/**
* 当前 document 的节点显隐状态变更事件
* set callback for event on visibility changed for certain node
* @param fn
*/
onChangeNodeVisible(fn: (node: Node, visible: boolean) => void): IPublicTypeDisposable;
/**
* 当前 document 的节点 children 变更事件
* @param fn
*/
onChangeNodeChildren(fn: (info: IPublicTypeOnChangeOptions<Node>) => void): IPublicTypeDisposable;
/**
* 当前 document 节点属性修改事件
* @param fn
*/
onChangeNodeProp(fn: (info: IPublicTypePropChangeOptions<Node>) => void): IPublicTypeDisposable;
/**
* import schema event
* @param fn
* @since v1.0.15
*/
onImportSchema(fn: (schema: IPublicTypeRootSchema) => void): IPublicTypeDisposable;
/**
* 判断是否当前节点处于被探测状态
* check is node being detected
* @param node
* @since v1.1.0
*/
isDetectingNode(node: Node): boolean;
/**
* 获取当前的 DropLocation 信息
* get current drop location
* @since v1.1.0
*/
get dropLocation(): DropLocation | null;
/**
* 设置当前的 DropLocation 信息
* set current drop location
* @since v1.1.0
*/
set dropLocation(loc: DropLocation | null);
/**
* 设置聚焦节点变化的回调
* triggered focused node is set mannually from plugin
* @param fn
* @since v1.1.0
*/
onFocusNodeChanged(fn: (doc: IPublicModelDocumentModel, focusNode: Node) => void): IPublicTypeDisposable;
/**
* 设置 DropLocation 变化的回调
* triggered when drop location changed
* @param fn
* @since v1.1.0
*/
onDropLocationChanged(fn: (doc: IPublicModelDocumentModel) => void): IPublicTypeDisposable;
}