fix(editor): 复制页面后,组件树选中状态不对

This commit is contained in:
roymondchen 2024-02-28 16:08:32 +08:00
parent fcede5c0ac
commit b4df7f5eea
3 changed files with 11 additions and 8 deletions

View File

@ -14,7 +14,7 @@
@node-dragstart="handleDragStart" @node-dragstart="handleDragStart"
@node-dragleave="handleDragLeave" @node-dragleave="handleDragLeave"
@node-dragend="handleDragEnd" @node-dragend="handleDragEnd"
@node-contextmenu="nodeContentmenuHandler" @node-contextmenu="nodeContentMenuHandler"
@node-mouseenter="mouseenterHandler" @node-mouseenter="mouseenterHandler"
@node-click="nodeClickHandler" @node-click="nodeClickHandler"
> >
@ -113,7 +113,7 @@ const { handleDragStart, handleDragEnd, handleDragLeave, handleDragOver } = useD
const { const {
menu, menu,
nodeClickHandler, nodeClickHandler,
nodeContentmenuHandler, nodeContentMenuHandler,
highlightHandler: mouseenterHandler, highlightHandler: mouseenterHandler,
} = useClick(services, isCtrlKeyDown, nodeStatusMap); } = useClick(services, isCtrlKeyDown, nodeStatusMap);
</script> </script>

View File

@ -94,7 +94,7 @@ export const useClick = (
nodeClickHandler, nodeClickHandler,
nodeContentmenuHandler(event: MouseEvent, data: TreeNodeData) { nodeContentMenuHandler(event: MouseEvent, data: TreeNodeData) {
event.preventDefault(); event.preventDefault();
const nodes = services?.editorService.get('nodes') || []; const nodes = services?.editorService.get('nodes') || [];

View File

@ -1,7 +1,7 @@
import { computed, ref, watch } from 'vue'; import { computed, ref, watch } from 'vue';
import type { Id, MNode, MPage, MPageFragment } from '@tmagic/schema'; import type { Id, MNode, MPage, MPageFragment } from '@tmagic/schema';
import { getNodePath } from '@tmagic/utils'; import { getNodePath, isPage, isPageFragment } from '@tmagic/utils';
import { LayerNodeStatus, Services } from '@editor/type'; import { LayerNodeStatus, Services } from '@editor/type';
import { traverseNode } from '@editor/utils'; import { traverseNode } from '@editor/utils';
@ -48,13 +48,14 @@ export const useNodeStatus = (services: Services | undefined) => {
// 切换页面或者新增页面,重新生成节点状态 // 切换页面或者新增页面,重新生成节点状态
watch( watch(
page, () => page.value?.id,
(page) => { (pageId) => {
if (!page) { if (!pageId) {
return; return;
} }
// 生成节点状态 // 生成节点状态
nodeStatusMaps.value.set(page.id, createPageNodeStatus(page, nodeStatusMaps.value.get(page.id))); nodeStatusMaps.value.set(pageId, createPageNodeStatus(page.value!, nodeStatusMaps.value.get(pageId)));
}, },
{ {
immediate: true, immediate: true,
@ -85,6 +86,8 @@ export const useNodeStatus = (services: Services | undefined) => {
services?.editorService.on('add', (newNodes: MNode[]) => { services?.editorService.on('add', (newNodes: MNode[]) => {
newNodes.forEach((node) => { newNodes.forEach((node) => {
if (isPage(node) || isPageFragment(node)) return;
traverseNode(node, (node: MNode) => { traverseNode(node, (node: MNode) => {
nodeStatusMap.value?.set(node.id, { nodeStatusMap.value?.set(node.id, {
visible: true, visible: true,