From 815155a5ee2b4ff145e9fd6667a7e324b95e1909 Mon Sep 17 00:00:00 2001 From: codetypes Date: Thu, 23 May 2024 11:01:25 +0800 Subject: [PATCH] restore previous inspector when switch edit file --- src/components/editor.tsx | 7 ------ src/contexts/workspace-context.ts | 42 ++++++++++++++++++++++--------- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/components/editor.tsx b/src/components/editor.tsx index 5fa6bc7..9ff725d 100644 --- a/src/components/editor.tsx +++ b/src/components/editor.tsx @@ -390,12 +390,6 @@ export const Editor: FC = ({ onUpdate: updateState, data: editor, . }; const selectNode = (id: string | null) => { - if (id && id === editor.selectedId) { - setItemState(editor.selectedId, "selected", true); - setItemState(editor.selectedId, "hover", false); - return; - } - if (editor.selectedId) { setItemState(editor.selectedId, "selected", false); setItemState(editor.selectedId, "hover", false); @@ -405,7 +399,6 @@ export const Editor: FC = ({ onUpdate: updateState, data: editor, . if (editor.selectedId) { const data = findDataById(editor.selectedId); - workspace.onEditingTree(null); workspace.onEditingNode({ data: b3util.createNode(data, false), editable: !isSubtreeNode(data), diff --git a/src/contexts/workspace-context.ts b/src/contexts/workspace-context.ts index a5dfd22..665d618 100644 --- a/src/contexts/workspace-context.ts +++ b/src/contexts/workspace-context.ts @@ -56,6 +56,8 @@ export class EditorStore { graphMatrix?: Matrix; graph!: TreeGraph; + editNode: EditNode | null = null; + dispatch!: (event: EditEvent, data?: unknown) => void; constructor(path: string) { @@ -389,17 +391,21 @@ export const useWorkspace = create((set, get) => ({ edit: (path) => { const workspace = get(); const editor = workspace.editors.find((v) => v.path === path); - set({ editing: editor, editingNode: null }); + set({ editing: editor, editingNode: null, editingTree: null }); if (editor) { - set({ - editingTree: { - data: { - name: editor.name, - desc: editor.desc, - root: null!, + if (editor.editNode) { + workspace.onEditingNode(editor.editNode); + } else { + set({ + editingTree: { + data: { + name: editor.name, + desc: editor.desc, + root: null!, + }, }, - }, - }); + }); + } } else { set({ editingNode: null, editingTree: null }); } @@ -534,16 +540,28 @@ export const useWorkspace = create((set, get) => ({ // node edit onEditingNode: (node) => { - set({ editingNode: node, editingNodeDef: null }); + const workspace = get(); + if (workspace.editing) { + workspace.editing.editNode = node; + } + set({ editingNode: node, editingNodeDef: null, editingTree: null }); }, onEditingNodeDef: (nodeDef) => { - set({ editingNodeDef: nodeDef }); + const workspace = get(); + if (workspace.editing) { + workspace.editing.editNode = null; + } + set({ editingNodeDef: nodeDef, editingNode: null, editingTree: null }); }, // tree edit onEditingTree: (tree) => { - set({ editingTree: tree, editingNodeDef: null }); + const workspace = get(); + if (workspace.editing) { + workspace.editing.editNode = null; + } + set({ editingTree: tree, editingNodeDef: null, editingNode: null }); }, // node def