import { IPublicTypeNodeData, IPublicTypeNodeSchema, IPublicTypePageSchema, IPublicTypeComponentsMap, IPublicTypeDragNodeObject, IPublicTypeDragNodeDataObject, IPublicModelDocumentModel, IPublicEnumTransformStage, IPublicTypeOnChangeOptions, IPublicTypeDisposable } from '@alilc/lowcode-types'; import type { IPublicTypeRootSchema } from '@alilc/lowcode-types'; import type { IDropLocation } from '@alilc/lowcode-designer'; import type { IProject } from '../project'; import type { ISimulatorHost } from '../simulator'; import type { IComponentMeta } from '../component-meta'; import type { IDesigner, IHistory } from '../designer'; import { IRootNode } from './node/node'; import type { INode } from './node/node'; import { ISelection } from './selection'; import { IModalNodesManager } from './node'; export type GetDataType = T extends undefined ? NodeType extends { schema: infer R; } ? R : any : T; export declare class DocumentModel implements Omit, 'detecting' | 'checkNesting' | 'getNodeById' | 'exportSchema' | 'importSchema' | 'onAddNode' | 'onRemoveNode' | 'onChangeDetecting' | 'onChangeSelection' | 'onChangeNodeProp' | 'onImportSchema' | 'isDetectingNode' | 'onFocusNodeChanged' | 'onDropLocationChanged'> { /** * 根节点 类型有:Page/Component/Block */ rootNode: IRootNode | null; /** * 文档编号 */ id: string; /** * 选区控制 */ readonly selection: ISelection; /** * 操作记录控制 */ readonly history: IHistory; /** * 模态节点管理 */ modalNodesManager: IModalNodesManager; private _nodesMap; readonly project: IProject; readonly designer: IDesigner; private nodes; private seqId; private emitter; private rootNodeVisitorMap; /** * @deprecated */ private _addons; /** * 模拟器 */ get simulator(): ISimulatorHost | null; get nodesMap(): Map; get fileName(): string; set fileName(fileName: string); get focusNode(): INode | null; private _drillDownNode; private _modalNode?; private _blank?; private inited; private willPurgeSpace; get modalNode(): INode; get currentRoot(): INode; private activeNodes?; private _dropLocation; set dropLocation(loc: IDropLocation | null); /** * 投放插入位置标记 */ get dropLocation(): IDropLocation | null; /** * 导出 schema 数据 */ get schema(): IPublicTypeRootSchema; private _opened; private _suspensed; /** * 是否为非激活状态 */ get suspensed(): boolean; /** * 与 suspensed 相反,是否为激活状态,这个函数可能用的更多一点 */ get active(): boolean; /** * @deprecated 兼容 */ get actived(): boolean; /** * 是否打开 */ get opened(): boolean; get root(): IRootNode; constructor(project: IProject, schema?: IPublicTypeRootSchema); drillDown(node: INode | null): void; onChangeNodeVisible(fn: (node: INode, visible: boolean) => void): IPublicTypeDisposable; onChangeNodeChildren(fn: (info: IPublicTypeOnChangeOptions) => void): IPublicTypeDisposable; addWillPurge(node: INode): void; removeWillPurge(node: INode): void; isBlank(): boolean; /** * 生成唯一 id */ nextId(possibleId: string | undefined): string; /** * 根据 id 获取节点 */ getNode(id: string): INode | null; /** * 根据 id 获取节点 */ getNodeCount(): number; /** * 是否存在节点 */ hasNode(id: string): boolean; onMountNode(fn: (payload: { node: INode; }) => void): () => void; /** * 根据 schema 创建一个节点 */ createNode(data: S): T; destroyNode(node: INode): void; /** * 插入一个节点 */ insertNode(parent: INode, thing: INode | IPublicTypeNodeData, at?: number | null, copy?: boolean): INode | null; /** * 插入多个节点 */ insertNodes(parent: INode, thing: INode[] | IPublicTypeNodeData[], at?: number | null, copy?: boolean): INode[]; /** * 移除一个节点 */ removeNode(idOrNode: string | INode): void; /** * 内部方法,请勿调用 */ internalRemoveAndPurgeNode(node: INode, useMutator?: boolean): void; unlinkNode(node: INode): void; /** * 包裹当前选区中的节点 */ wrapWith(schema: IPublicTypeNodeSchema): INode | null; import(schema: IPublicTypeRootSchema, checkId?: boolean): void; export(stage?: IPublicEnumTransformStage): IPublicTypeRootSchema | undefined; /** * 导出节点数据 */ getNodeSchema(id: string): IPublicTypeNodeData | null; /** * 是否已修改 */ isModified(): boolean; getComponent(componentName: string): any; getComponentMeta(componentName: string): IComponentMeta; /** * 切换激活,只有打开的才能激活 * 不激活,打开之后切换到另外一个时发生,比如 tab 视图,切换到另外一个标签页 */ private setSuspense; suspense(): void; activate(): void; /** * 打开,已载入,默认建立时就打开状态,除非手动关闭 */ open(): DocumentModel; /** * 关闭,相当于 sleep,仍然缓存,停止一切响应,如果有发生的变更没被保存,仍然需要去取数据保存 */ close(): void; /** * 从项目中移除 */ remove(): void; purge(): void; checkNesting(dropTarget: INode, dragObject: IPublicTypeDragNodeObject | IPublicTypeNodeSchema | INode | IPublicTypeDragNodeDataObject): boolean; /** * @deprecated since version 1.0.16. * Will be deleted in version 2.0.0. * Use checkNesting method instead. */ checkDropTarget(dropTarget: INode, dragObject: IPublicTypeDragNodeObject | IPublicTypeDragNodeDataObject): boolean; /** * 检查对象对父级的要求,涉及配置 parentWhitelist */ checkNestingUp(parent: INode, obj: IPublicTypeNodeSchema | INode): boolean; /** * 检查投放位置对子级的要求,涉及配置 childWhitelist */ checkNestingDown(parent: INode, obj: IPublicTypeNodeSchema | INode): boolean; getRoot(): IRootNode; toData(extraComps?: string[]): { componentsMap: IPublicTypeComponentsMap; utils: any; componentsTree: IPublicTypeRootSchema[]; }; getHistory(): IHistory; /** * @deprecated */ getAddonData(name: string): any; /** * @deprecated */ exportAddonData(): { [key: string]: any; }; /** * @deprecated */ registerAddon(name: string, exportData: any): void; acceptRootNodeVisitor(visitorName: string, visitorFn: (node: IRootNode) => any): {}; getRootNodeVisitor(name: string): any; getComponentsMap(extraComps?: string[]): IPublicTypeComponentsMap; /** * 获取 schema 中的 utils 节点,当前版本不判断页面中使用了哪些 utils,直接返回资产包中所有的 utils * @returns */ getUtilsMap(): any; onNodeCreate(func: (node: INode) => void): () => void; onNodeDestroy(func: (node: INode) => void): () => void; /** * @deprecated */ refresh(): void; /** * @deprecated */ onRefresh(): void; onReady(fn: (...args: any[]) => void): () => void; private setupListenActiveNodes; } export declare function isDocumentModel(obj: any): obj is IDocumentModel; export declare function isPageSchema(obj: any): obj is IPublicTypePageSchema; export interface IDocumentModel extends DocumentModel { }