From e35a963b67cf279f01beb08e00cc678ab4e7d7ea Mon Sep 17 00:00:00 2001 From: roymondchen Date: Tue, 21 Nov 2023 14:05:43 +0800 Subject: [PATCH] =?UTF-8?q?fix(editor):=20=E6=9B=B4=E6=96=B0dsl=EF=BC=8C?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E6=A0=91=E5=88=97=E8=A1=A8=E4=B8=8D=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix #554 --- .../layouts/sidebar/layer/use-node-status.ts | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/packages/editor/src/layouts/sidebar/layer/use-node-status.ts b/packages/editor/src/layouts/sidebar/layer/use-node-status.ts index 95ca5c72..f918d886 100644 --- a/packages/editor/src/layouts/sidebar/layer/use-node-status.ts +++ b/packages/editor/src/layouts/sidebar/layer/use-node-status.ts @@ -7,7 +7,11 @@ import { LayerNodeStatus, Services } from '@editor/type'; import { traverseNode } from '@editor/utils'; import { updateStatus } from '@editor/utils/tree'; -const createPageNodeStatus = (services: Services | undefined, pageId: Id) => { +const createPageNodeStatus = ( + services: Services | undefined, + pageId: Id, + initalLayerNodeStatus?: Map, +) => { const map = new Map(); map.set(pageId, { @@ -19,12 +23,15 @@ const createPageNodeStatus = (services: Services | undefined, pageId: Id) => { services?.editorService.getNodeById(pageId)?.items.forEach((node: MNode) => traverseNode(node, (node) => { - map.set(node.id, { - visible: true, - expand: false, - selected: false, - draggable: true, - }); + map.set( + node.id, + initalLayerNodeStatus?.get(node.id) || { + visible: true, + expand: false, + selected: false, + draggable: true, + }, + ); }), ); @@ -42,17 +49,15 @@ export const useNodeStatus = (services: Services | undefined, page: ComputedRef< page.value ? nodeStatusMaps.value.get(page.value.id) : new Map(), ); - // 切换页面,重新生成节点状态 + // 切换页面或者新增页面,重新生成节点状态 watch( - () => page.value?.id, - (pageId) => { - // 已经存在,不需要重新生成 - if (!pageId || nodeStatusMaps.value.has(pageId)) { + page, + (page) => { + if (!page) { return; } - - // 新增页面,生成节点状态 - nodeStatusMaps.value.set(pageId, createPageNodeStatus(services, pageId)); + // 生成节点状态 + nodeStatusMaps.value.set(page.id, createPageNodeStatus(services, page.id, nodeStatusMaps.value.get(page.id))); }, { immediate: true,