Skip to main content

DocumentModel

@types IPublicModelDocumentModel
> @since v1.0.0

Overview

Document model

Properties

id

Unique ID

@type {string}

selection

Canvas node selection model instance

@type {IPublicModelSelection}

Related sections: Node Selection Model

Related types: IPublicModelSelection

detecting

Canvas node hover model instance

@type {IPublicModelDetecting}

Related sections: Canvas Node Hover Model

Related types: IPublicModelDetecting

history

Operation history model instance

@type {IPublicModelHistory}

Related sections: Operation History Model

Related types: IPublicModelHistory

project

Get the project that owns the current document model

@type {IPublicApiProject}

Related types: IPublicApiProject

root

Get the root node of the document

@type {IPublicModelNode | null}

Related types: IPublicModelNode

nodesMap

Get a Map of all nodes in the document, keyed by nodeId

@type {Map<string, IPublicModelNode>}

Related sections: Node Model

Related types: IPublicModelNode

modalNodesManager

Modal nodes manager

@type {IPublicModelModalNodesManager | null}

Related sections: Modal Nodes Manager

Related types: IPublicModelModalNodesManager

dropLocation

The document's dropLocation

@type {IPublicModelDropLocation | null}

Related types: IPublicModelDropLocation

@since v1.1.0

Methods

getNodeById

Return a Node instance by nodeId

/**
* Return Node instance by nodeId
* get node by nodeId
* @param nodeId
* @returns
*/
getNodeById(nodeId: string): IPublicModelNode | null;

Related types: IPublicModelNode

importSchema

Import schema

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

Related types: IPublicTypeRootSchema

exportSchema

Export schema

/**
* Export schema
* export schema
* @param stage
* @returns
*/
exportSchema(stage: IPublicEnumTransformStage): IPublicTypeRootSchema | undefined;

Related types:

insertNode

Insert a node

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

Related types: IPublicModelNode

createNode

Create a node

/**
* Create a node
* create a node
* @param data
* @returns
*/
createNode(data: any): IPublicModelNode | null;

Related types: IPublicModelNode

removeNode

Remove the specified node or node id

/**
* Remove the specified node / node id
* remove a node by node instance or nodeId
* @param idOrNode
*/
removeNode(idOrNode: string | IPublicModelNode): void;

Related types: IPublicModelNode

checkNesting

Check whether the drop target node can accept the dragged object

/**
* Check whether the drop target can accept the drag object
* check if dragOjbect can be put in this dragTarget
* @param dropTarget drop target node
* @param dragObject drag object
* @returns boolean whether drop is allowed
* @since v1.0.16
*/
checkNesting(
dropTarget: IPublicModelNode,
dragObject: IPublicTypeDragNodeObject | IPublicTypeDragNodeDataObject
): boolean;

Related types:

@since v1.0.16

isDetectingNode

Check whether the given node is currently being detected (hovered)

/**
* Check whether the current node is being detected
* check is node being detected
* @param node
* @since v1.1.0
*/
isDetectingNode(node: IPublicModelNode): boolean;

Related types: IPublicModelNode

@since v1.1.0

Events

onAddNode

Event fired when a new node is added to the current document

/**
* Current document node-added event
* set callback for event on node is created for a document
*/
onAddNode(fn: (node: IPublicModelNode) => void): IPublicTypeDisposable;

Related types:

onMountNode

Event fired when a new node is added to the current document and has been mounted to the document

/**
* Current document node-added event; node is already mounted on the document
* set callback for event on node is mounted to canvas
*/
onMountNode(fn: (payload: { node: IPublicModelNode }) => void): IPublicTypeDisposable;

Related types:

onRemoveNode

Event fired when a node is removed from the current document

/**
* Current document node-removed event
* set callback for event on node is removed
*/
onRemoveNode(fn: (node: IPublicModelNode) => void): IPublicTypeDisposable;

Related types:

onChangeDetecting

Event fired when hover state changes in the current document

/**
* Current document hover change event
*
* set callback for event on detecting changed
*/
onChangeDetecting(fn: (node: IPublicModelNode) => void): IPublicTypeDisposable;

Related types:

onChangeSelection

Event fired when selection changes in the current document

/**
* Current document selection change event
* set callback for event on selection changed
*/
onChangeSelection(fn: (ids: string[]) => void): IPublicTypeDisposable;

Related types: IPublicTypeDisposable

onChangeNodeVisible

Event fired when a node's visibility changes in the current document

/**
* Current document node visibility change event
* set callback for event on visibility changed for certain node
* @param fn
*/
onChangeNodeVisible(fn: (node: IPublicModelNode, visible: boolean) => void): IPublicTypeDisposable;

onChangeNodeChildren

Event fired when a node's children change in the current document

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

Related types: IPublicTypeDisposable

onChangeNodeProp

Event fired when a node property is modified in the current document

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

Related types: IPublicTypeDisposable

onImportSchema

Event fired when a new schema is imported into the current document

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

Related types:

@since v1.0.15

onFocusNodeChanged

Set a callback for when the focused node changes

/**
* Set callback for focus node changes
* triggered focused node is set mannually from plugin
* @param fn
* @since v1.1.0
*/
onFocusNodeChanged(
fn: (doc: IPublicModelDocumentModel, focusNode: IPublicModelNode) => void,
): IPublicTypeDisposable;

Related types:

@since v1.1.0

onDropLocationChanged

Set a callback for when DropLocation changes

/**
* Set callback for DropLocation changes
* triggered when drop location changed
* @param fn
* @since v1.1.0
*/
onDropLocationChanged(fn: (doc: IPublicModelDocumentModel) => void): IPublicTypeDisposable;

Related types: IPublicTypeDisposable

@since v1.1.0