跳到主要内容

# DocumentModel

> @types IPublicModelDocumentModel
> @since v1.0.0

## 基本介绍​

文档模型

## 属性​

### id​

唯一 ID

`@type {string}`

### selection​

画布节点选中区模型实例

`@type {IPublicModelSelection}`

相关章节：节点选中区模型

相关类型：IPublicModelSelection

### detecting​

画布节点 hover 区模型实例

`@type {IPublicModelDetecting}`

相关章节：画布节点悬停模型

相关类型：IPublicModelDetecting

### history​

操作历史模型实例

`@type {IPublicModelHistory}`

相关章节：操作历史模型

相关类型：IPublicModelHistory

### project​

获取当前文档模型所属的 project

`@type {IPublicApiProject}`

相关类型：IPublicApiProject

### root​

获取文档的根节点

`@type {IPublicModelNode | null}`

相关类型：IPublicModelNode

### nodesMap​

获取文档下所有节点 Map, key 为 nodeId

`@type {Map<string, IPublicModelNode>}`

相关章节：节点模型

相关类型：IPublicModelNode

### modalNodesManager​

模态节点管理器

`@type {IPublicModelModalNodesManager | null}`

相关章节：模态节点管理

相关类型：IPublicModelModalNodesManager

### dropLocation​

文档的 dropLocation

`@type {IPublicModelDropLocation | null}`

相关类型：IPublicModelDropLocation

@since v1.1.0

## 方法​

### getNodeById​

根据 nodeId 返回 Node 实例

    /**
     * 根据 nodeId 返回 Node 实例
     * get node by nodeId
     * @param nodeId
     * @returns
     */
    getNodeById(nodeId: string): IPublicModelNode | null;

相关类型：IPublicModelNode

### importSchema​

导入 schema

    /**
     * 导入 schema
     * import schema data
     * @param schema
     */
    importSchema(schema: IPublicTypeRootSchema): void;

相关类型：IPublicTypeRootSchema

### exportSchema​

导出 schema

    /**
     * 导出 schema
     * export schema
     * @param stage
     * @returns
     */
    exportSchema(stage: IPublicEnumTransformStage): any;

相关类型：IPublicEnumTransformStage

### insertNode​

插入节点

    /**
     * 插入节点
     * insert a node
     */
    insertNode(
      parent: IPublicModelNode,
      thing: IPublicModelNode,
      at?: number | null | undefined,
      copy?: boolean | undefined
    ): IPublicModelNode | null;

相关类型：IPublicModelNode

### createNode​

创建一个节点

    /**
     * 创建一个节点
     * create a node
     * @param data
     * @returns
     */
    createNode(data: any): IPublicModelNode | null;

相关类型：IPublicModelNode

### removeNode​

移除指定节点/节点id

    /**
     * 移除指定节点/节点id
     * remove a node by node instance or nodeId
     * @param idOrNode
     */
    removeNode(idOrNode: string | IPublicModelNode): void;

相关类型：IPublicModelNode

### checkNesting​

检查拖拽放置的目标节点是否可以放置该拖拽对象

    /**
     * 检查拖拽放置的目标节点是否可以放置该拖拽对象
     * check if dragOjbect can be put in this dragTarget
     * @param dropTarget 拖拽放置的目标节点
     * @param dragObject 拖拽的对象
     * @returns boolean 是否可以放置
     * @since v1.0.16
     */
    checkNesting(
      dropTarget: IPublicModelNode,
      dragObject: IPublicTypeDragNodeObject | IPublicTypeDragNodeDataObject
    ): boolean;

相关类型：

- IPublicModelNode
- IPublicTypeDragNodeObject
- IPublicTypeDragNodeDataObject

@since v1.0.16

### isDetectingNode​

检查拖拽放置的目标节点是否可以放置该拖拽对象

    /**
     * 判断是否当前节点处于被探测状态
     * check is node being detected
     * @param node
     * @since v1.1.0
     */
    isDetectingNode(node: IPublicModelNode): boolean;

相关类型：IPublicModelNode

@since v1.1.0

## 事件​

### onAddNode​

当前 document 新增节点事件

    /**
     * 当前 document 新增节点事件
     * set callback for event on node is created for a document
     */
    onAddNode(fn: (node: IPublicModelNode) => void): IPublicTypeDisposable;

相关类型：

- IPublicModelNode
- IPublicTypeDisposable

### onMountNode​

当前 document 新增节点事件，此时节点已经挂载到 document 上

    /**
     * 当前 document 新增节点事件，此时节点已经挂载到 document 上
     * set callback for event on node is mounted to canvas
     */
    onMountNode(fn: (payload: { node: IPublicModelNode }) => void): IPublicTypeDisposable;

相关类型：

- IPublicModelNode
- IPublicTypeDisposable

### onRemoveNode​

当前 document 删除节点事件

    /**
     * 当前 document 删除节点事件
     * set callback for event on node is removed
     */
    onRemoveNode(fn: (node: IPublicModelNode) => void): IPublicTypeDisposable;

相关类型：

- IPublicModelNode
- IPublicTypeDisposable

### onChangeDetecting​

当前 document 的 hover 变更事件

    /**
     * 当前 document 的 hover 变更事件
     *
     * set callback for event on detecting changed
     */
    onChangeDetecting(fn: (node: IPublicModelNode) => void): IPublicTypeDisposable;

相关类型：

- IPublicModelNode
- IPublicTypeDisposable

### onChangeSelection​

当前 document 的选中变更事件

    /**
     * 当前 document 的选中变更事件
     * set callback for event on selection changed
     */
    onChangeSelection(fn: (ids: string[]) => void): IPublicTypeDisposable;

相关类型：IPublicTypeDisposable

### onChangeNodeVisible​

当前 document 的节点显隐状态变更事件

    /**
     * 当前 document 的节点显隐状态变更事件
     * set callback for event on visibility changed for certain node
     * @param fn
     */
    onChangeNodeVisible(fn: (node: IPublicModelNode, visible: boolean) => void): void;

相关类型：IPublicModelNode

### onChangeNodeChildren​

onChangeNodeChildren(fn: (info?: IPublicTypeOnChangeOptions) => void)

当前 document 的节点 children 变更事件

### onChangeNodeProp​

当前 document 节点属性修改事件

    onChangeNodeProp(fn: (info: IPublicTypePropChangeOptions) => void)

### onImportSchema​

当前 document 导入新的 schema 事件

    /**
     * import schema event
     * @param fn
     * @since v1.0.15
     */
    onImportSchema(fn: (schema: IPublicTypeRootSchema) => void): IPublicTypeDisposable;

相关类型：

- IPublicTypeDisposable
- IPublicTypeRootSchema

@since v1.0.15

### onFocusNodeChanged​

设置聚焦节点变化的回调

    /**
     * 设置聚焦节点变化的回调
     * triggered focused node is set mannually from plugin
     * @param fn
     * @since v1.1.0
     */
    onFocusNodeChanged(
      fn: (doc: IPublicModelDocumentModel, focusNode: IPublicModelNode) => void,
    ): IPublicTypeDisposable;

相关类型：

- IPublicTypeDisposable
- IPublicModelNode

@since v1.1.0

### onDropLocationChanged​

设置 DropLocation 变化的回调

    /**
     * 设置 DropLocation 变化的回调
     * triggered when drop location changed
     * @param fn
     * @since v1.1.0
     */
    onDropLocationChanged(fn: (doc: IPublicModelDocumentModel) => void): IPublicTypeDisposable;

相关类型：IPublicTypeDisposable

@since v1.1.0