UNPKG

@redhare/lowcode-types

Version:

Types for Ali lowCode engine

188 lines (187 loc) 6.17 kB
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; }