@alilc/lowcode-shell
Version:
Shell Layer for AliLowCodeEngine
142 lines (141 loc) • 5.21 kB
TypeScript
import { IDocumentModel as InnerDocumentModel } from '@alilc/lowcode-designer';
import { IPublicEnumTransformStage, IPublicTypeRootSchema, IPublicModelDocumentModel, IPublicTypeOnChangeOptions, IPublicTypeDragNodeObject, IPublicTypeDragNodeDataObject, IPublicModelNode, IPublicModelSelection, IPublicModelDetecting, IPublicModelHistory, IPublicApiProject, IPublicModelModalNodesManager, IPublicTypePropChangeOptions, IPublicModelDropLocation, IPublicApiCanvas, IPublicTypeDisposable, IPublicTypeNodeSchema } from '@alilc/lowcode-types';
import { documentSymbol, editorSymbol } from '../symbols';
export declare class DocumentModel implements IPublicModelDocumentModel {
private readonly [documentSymbol];
private readonly [editorSymbol];
private _focusNode;
selection: IPublicModelSelection;
detecting: IPublicModelDetecting;
history: IPublicModelHistory;
/**
* @deprecated use canvas API instead
*/
canvas: IPublicApiCanvas;
constructor(document: InnerDocumentModel);
static create(document: InnerDocumentModel | undefined | null): IPublicModelDocumentModel | null;
/**
* id
*/
get id(): string;
set id(id: string);
/**
* 获取当前文档所属的 project
* @returns
*/
get project(): IPublicApiProject;
/**
* 获取文档的根节点
* root node of this documentModel
* @returns
*/
get root(): IPublicModelNode | null;
get focusNode(): IPublicModelNode | null;
set focusNode(node: IPublicModelNode | null);
/**
* 获取文档下所有节点 Map, key 为 nodeId
* get map of all nodes , using node.id as key
*/
get nodesMap(): Map<string, IPublicModelNode>;
/**
* 模态节点管理
*/
get modalNodesManager(): IPublicModelModalNodesManager | null;
get dropLocation(): IPublicModelDropLocation | null;
set dropLocation(loc: IPublicModelDropLocation | null);
/**
* 根据 nodeId 返回 Node 实例
* get node instance by nodeId
* @param {string} nodeId
*/
getNodeById(nodeId: string): IPublicModelNode | null;
/**
* 导入 schema
* @param schema
*/
importSchema(schema: IPublicTypeRootSchema): void;
/**
* 导出 schema
* @param stage
* @returns
*/
exportSchema(stage?: IPublicEnumTransformStage): IPublicTypeRootSchema | undefined;
/**
* 插入节点
* @param parent
* @param thing
* @param at
* @param copy
* @returns
*/
insertNode(parent: IPublicModelNode, thing: IPublicModelNode, at?: number | null | undefined, copy?: boolean | undefined): IPublicModelNode | null;
/**
* 创建一个节点
* @param data
* @returns
*/
createNode<IPublicModelNode>(data: IPublicTypeNodeSchema): IPublicModelNode | null;
/**
* 移除指定节点/节点id
* @param idOrNode
*/
removeNode(idOrNode: string | IPublicModelNode): void;
/**
* componentsMap of documentModel
* @param extraComps
* @returns
*/
getComponentsMap(extraComps?: string[]): any;
/**
* 检查拖拽放置的目标节点是否可以放置该拖拽对象
* @param dropTarget 拖拽放置的目标节点
* @param dragObject 拖拽的对象
* @returns boolean 是否可以放置
*/
checkNesting(dropTarget: IPublicModelNode, dragObject: IPublicTypeDragNodeObject | IPublicTypeDragNodeDataObject): boolean;
/**
* 当前 document 新增节点事件
*/
onAddNode(fn: (node: IPublicModelNode) => void): IPublicTypeDisposable;
/**
* 当前 document 新增节点事件,此时节点已经挂载到 document 上
*/
onMountNode(fn: (payload: {
node: IPublicModelNode;
}) => void): IPublicTypeDisposable;
/**
* 当前 document 删除节点事件
*/
onRemoveNode(fn: (node: IPublicModelNode) => void): IPublicTypeDisposable;
/**
* 当前 document 的 hover 变更事件
*/
onChangeDetecting(fn: (node: IPublicModelNode) => void): IPublicTypeDisposable;
/**
* 当前 document 的选中变更事件
*/
onChangeSelection(fn: (ids: string[]) => void): IPublicTypeDisposable;
/**
* 当前 document 的节点显隐状态变更事件
* @param fn
*/
onChangeNodeVisible(fn: (node: IPublicModelNode, visible: boolean) => void): IPublicTypeDisposable;
/**
* 当前 document 的节点 children 变更事件
* @param fn
*/
onChangeNodeChildren(fn: (info: IPublicTypeOnChangeOptions) => void): IPublicTypeDisposable;
/**
* 当前 document 节点属性修改事件
* @param fn
*/
onChangeNodeProp(fn: (info: IPublicTypePropChangeOptions) => void): IPublicTypeDisposable;
/**
* import schema event
* @param fn
*/
onImportSchema(fn: (schema: IPublicTypeRootSchema) => void): IPublicTypeDisposable;
isDetectingNode(node: IPublicModelNode): boolean;
onFocusNodeChanged(fn: (doc: IPublicModelDocumentModel, focusNode: IPublicModelNode) => void): IPublicTypeDisposable;
onDropLocationChanged(fn: (doc: IPublicModelDocumentModel) => void): IPublicTypeDisposable;
}