diff --git a/packages/designer/src/document/document-model.ts b/packages/designer/src/document/document-model.ts index 7a7666d63..6cb074f11 100644 --- a/packages/designer/src/document/document-model.ts +++ b/packages/designer/src/document/document-model.ts @@ -1,5 +1,5 @@ import { computed, obx } from '@ali/lowcode-editor-core'; -import { NodeData, isJSExpression, isDOMText, NodeSchema, isNodeSchema, RootSchema } from '@ali/lowcode-types'; +import { NodeData, isJSExpression, isDOMText, NodeSchema, isNodeSchema, RootSchema, PageSchema } from '@ali/lowcode-types'; import { EventEmitter } from 'events'; import { Project } from '../project'; import { ISimulatorHost } from '../simulator'; @@ -659,3 +659,7 @@ export class DocumentModel { export function isDocumentModel(obj: any): obj is DocumentModel { return obj && obj.rootNode; } + +export function isPageSchema(obj: any): obj is PageSchema { + return obj?.componentName === 'Page'; +} diff --git a/packages/designer/src/project/project.ts b/packages/designer/src/project/project.ts index 47e03f24c..13cb65be0 100644 --- a/packages/designer/src/project/project.ts +++ b/packages/designer/src/project/project.ts @@ -1,7 +1,7 @@ import { EventEmitter } from 'events'; import { obx, computed } from '@ali/lowcode-editor-core'; import { Designer } from '../designer'; -import { DocumentModel, isDocumentModel } from '../document'; +import { DocumentModel, isDocumentModel, isPageSchema } from '../document'; import { ProjectSchema, RootSchema } from '@ali/lowcode-types'; export class Project { @@ -138,6 +138,11 @@ export class Project { if (isDocumentModel(doc)) { return doc.open(); + } else if (isPageSchema(doc)) { + const foundDoc = this.documents.find(curDoc => curDoc?.rootNode?.id && curDoc?.rootNode?.id === doc?.id); + if (foundDoc) { + foundDoc.remove(); + } } doc = new DocumentModel(this, doc);