From 26efa75ff2cf03d4e27e3e77592d0304d343e44a Mon Sep 17 00:00:00 2001 From: roymondchen Date: Tue, 28 Apr 2026 15:50:03 +0800 Subject: [PATCH] =?UTF-8?q?feat(editor):=20update=20=E6=94=AF=E6=8C=81=20s?= =?UTF-8?q?electedAfterUpdate=20=E5=8F=82=E6=95=B0=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E6=9B=B4=E6=96=B0=20nodes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made-with: Cursor --- packages/editor/src/services/editor.ts | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/editor/src/services/editor.ts b/packages/editor/src/services/editor.ts index 02c40f7a..2ed199da 100644 --- a/packages/editor/src/services/editor.ts +++ b/packages/editor/src/services/editor.ts @@ -509,7 +509,10 @@ class Editor extends BaseService { public async doUpdate( config: MNode, - { changeRecords = [] }: { changeRecords?: ChangeRecord[] } = {}, + { + changeRecords = [], + selectedAfterUpdate = true, + }: { changeRecords?: ChangeRecord[]; selectedAfterUpdate?: boolean } = {}, ): Promise<{ newNode: MNode; oldNode: MNode; changeRecords?: ChangeRecord[] }> { const root = this.get('root'); if (!root) throw new Error('root为空'); @@ -554,10 +557,12 @@ class Editor extends BaseService { parentNodeItems[index] = newConfig; // 将update后的配置更新到nodes中 - const nodes = this.get('nodes'); - const targetIndex = nodes.findIndex((nodeItem: MNode) => `${nodeItem.id}` === `${newConfig.id}`); - nodes.splice(targetIndex, 1, newConfig); - this.set('nodes', [...nodes]); + if (selectedAfterUpdate) { + const nodes = this.get('nodes'); + const targetIndex = nodes.findIndex((nodeItem: MNode) => `${nodeItem.id}` === `${newConfig.id}`); + nodes.splice(targetIndex, 1, newConfig); + this.set('nodes', [...nodes]); + } if (isPage(newConfig) || isPageFragment(newConfig)) { this.set('page', newConfig as MPage | MPageFragment); @@ -580,7 +585,7 @@ class Editor extends BaseService { */ public async update( config: MNode | MNode[], - data: { changeRecords?: ChangeRecord[] } = {}, + data: { changeRecords?: ChangeRecord[]; selectedAfterUpdate?: boolean } = {}, ): Promise { this.captureSelectionBeforeOp();