diff --git a/packages/editor/src/Editor.vue b/packages/editor/src/Editor.vue index 95a1f5de..b27aa3d5 100644 --- a/packages/editor/src/Editor.vue +++ b/packages/editor/src/Editor.vue @@ -193,9 +193,15 @@ export default defineComponent({ emits: ['props-panel-mounted', 'update:modelValue'], setup(props, { emit }) { - editorService.on('root-change', () => { - const node = editorService.get('node') || props.defaultSelected; - node && editorService.select(node); + editorService.on('root-change', (value) => { + const node = editorService.get('node'); + const nodeId = node?.id || props.defaultSelected; + if (nodeId && node !== value) { + editorService.select(nodeId); + } else { + editorService.set('nodes', [value]); + } + emit('update:modelValue', toRaw(editorService.get('root'))); }); diff --git a/packages/editor/src/services/editor.ts b/packages/editor/src/services/editor.ts index c63a8812..72b77cc8 100644 --- a/packages/editor/src/services/editor.ts +++ b/packages/editor/src/services/editor.ts @@ -400,7 +400,7 @@ class Editor extends BaseService { await this.select(root.items[0]); stage?.select(root.items[0].id); } else { - this.set('node', null); + this.set('nodes', [root]); this.set('parent', null); this.set('page', null); this.set('stage', null);