From 21df9b7ccabefa4770c23bde85da64c8988169dc Mon Sep 17 00:00:00 2001 From: codetypes Date: Fri, 26 Apr 2024 10:06:57 +0800 Subject: [PATCH] trigger search node in workspace --- src/components/editor.tsx | 129 +++++++++++++++--------------- src/components/explorer.tsx | 8 +- src/components/inspector.tsx | 4 +- src/components/menu.tsx | 4 +- src/components/workspace.tsx | 9 ++- src/contexts/workspace-context.ts | 8 +- 6 files changed, 82 insertions(+), 80 deletions(-) diff --git a/src/components/editor.tsx b/src/components/editor.tsx index c79d6b4..12d971f 100644 --- a/src/components/editor.tsx +++ b/src/components/editor.tsx @@ -790,7 +790,6 @@ export const Editor: FC = ({ onUpdate: updateState, data: editor, . Hotkey.Delete, Hotkey.Enter, Hotkey.Backspace, - Hotkey.SearchNode, ], (event) => { event.preventDefault(); @@ -808,74 +807,74 @@ export const Editor: FC = ({ onUpdate: updateState, data: editor, . createNode(); } else if (isHotkeyPressed(Hotkey.Delete) || isHotkeyPressed(Hotkey.Backspace)) { deleteNode(); - } else if (isHotkeyPressed(Hotkey.SearchNode)) { - setShowingSearch(true); } } ); - if (!editor.dispatch) { - editor.dispatch = (event: EditEvent, data: unknown) => { - switch (event) { - case "copy": { - copyNode(); - break; - } - case "paste": { - pasteNode(); - break; - } - case "delete": { - deleteNode(); - break; - } - case "insert": { - createNode(); - break; - } - case "replace": { - replaceNode(); - break; - } - case "save": { - save(); - break; - } - case "undo": { - undo(); - break; - } - case "redo": { - redo(); - break; - } - case "reload": { - reload(); - break; - } - case "rename": { - rename(data as string); - break; - } - case "updateTree": { - updateTree(data as EditTree); - break; - } - case "updateNode": { - updateNode(data as EditNode); - break; - } - case "editSubtree": { - editSubtree(); - break; - } - case "saveAsSubtree": { - saveAsSubtree(); - break; - } + editor.dispatch = (event: EditEvent, data: unknown) => { + switch (event) { + case "copy": { + copyNode(); + break; } - }; - } + case "paste": { + pasteNode(); + break; + } + case "delete": { + deleteNode(); + break; + } + case "insert": { + createNode(); + break; + } + case "replace": { + replaceNode(); + break; + } + case "save": { + save(); + break; + } + case "undo": { + undo(); + break; + } + case "redo": { + redo(); + break; + } + case "reload": { + reload(); + break; + } + case "rename": { + rename(data as string); + break; + } + case "updateTree": { + updateTree(data as EditTree); + break; + } + case "updateNode": { + updateNode(data as EditNode); + break; + } + case "searchNode": { + setShowingSearch(true); + break; + } + case "editSubtree": { + editSubtree(); + break; + } + case "saveAsSubtree": { + saveAsSubtree(); + break; + } + } + }; useEffect(() => { if (!editorSize || (editorSize.width === 0 && editorSize.height === 0)) { @@ -988,7 +987,7 @@ export const Editor: FC = ({ onUpdate: updateState, data: editor, . type MenuInfo = Parameters>[0]; const onClick = useCallback((info: MenuInfo) => { - editor.dispatch?.(info.key as EditEvent); + editor.dispatch(info.key as EditEvent); }, []); return ( diff --git a/src/components/explorer.tsx b/src/components/explorer.tsx index 1c0ea54..fa2c748 100644 --- a/src/components/explorer.tsx +++ b/src/components/explorer.tsx @@ -99,11 +99,11 @@ const renameFile = (oldPath: string, newPath: string) => { for (const editor of workspace.editors) { if (isDirectory) { if (editor.path.startsWith(oldPath)) { - editor.dispatch?.("rename", editor.path.replace(oldPath, newPath)); + editor.dispatch("rename", editor.path.replace(oldPath, newPath)); } } else { if (editor.path === oldPath) { - editor.dispatch?.("rename", newPath); + editor.dispatch("rename", newPath); } } } @@ -496,12 +496,12 @@ export const Explorer: FC = () => { fs.renameSync(node.path, newPath); for (const editor of workspace.editors) { if (editor.path.startsWith(node.path)) { - editor.dispatch?.("rename", dest!.path + "/" + Path.basename(editor.path)); + editor.dispatch("rename", dest!.path + "/" + Path.basename(editor.path)); } console.log("editor move", editor.path === newPath, editor.path, newPath); if (editor.path.startsWith(newPath)) { console.log("editor reload", editor.path === newPath, editor.path, newPath); - editor.dispatch?.("reload"); + editor.dispatch("reload"); } } }; diff --git a/src/components/inspector.tsx b/src/components/inspector.tsx index d3c0257..0098023 100644 --- a/src/components/inspector.tsx +++ b/src/components/inspector.tsx @@ -30,7 +30,7 @@ const TreeInspector: FC = () => { const data = {} as TreeModel; data.name = values.name; data.desc = values.desc || undefined; - workspace.editing?.dispatch?.("updateTree", { + workspace.editing?.dispatch("updateTree", { data: { name: values.name, desc: values.desc || undefined, @@ -174,7 +174,7 @@ const NodeInspector: FC = () => { data.output ||= []; data.output.push(v ?? ""); }); - workspace.editing?.dispatch?.("updateNode", { + workspace.editing?.dispatch("updateNode", { data: data, } as EditNode); }; diff --git a/src/components/menu.tsx b/src/components/menu.tsx index eebeaf7..40945f4 100644 --- a/src/components/menu.tsx +++ b/src/components/menu.tsx @@ -221,7 +221,7 @@ export const Menu: FC = () => { label: t("insertNode"), enabled: enabled, click: () => { - workspace.editing?.dispatch?.("insert"); + workspace.editing?.dispatch("insert"); }, }, { @@ -229,7 +229,7 @@ export const Menu: FC = () => { label: t("deleteNode"), enabled: enabled, click: () => { - workspace.editing?.dispatch?.("delete"); + workspace.editing?.dispatch("delete"); }, }, ], diff --git a/src/components/workspace.tsx b/src/components/workspace.tsx index 5afcdc3..73ad1e1 100644 --- a/src/components/workspace.tsx +++ b/src/components/workspace.tsx @@ -44,7 +44,7 @@ export const Workspace: FC = () => { const { width = 0, height = 0 } = useWindowSize(); const keysRef = useHotkeys( - [Hotkey.Save, Hotkey.CloseEditor, Hotkey.SearchTree, Hotkey.Build], + [Hotkey.Save, Hotkey.CloseEditor, Hotkey.SearchTree, Hotkey.Build, Hotkey.SearchNode], (event) => { if (isHotkeyPressed(Hotkey.Save)) { event.preventDefault(); @@ -64,6 +64,9 @@ export const Workspace: FC = () => { } else if (isHotkeyPressed(Hotkey.Build)) { event.preventDefault(); workspace.buildProject(); + } else if (isHotkeyPressed(Hotkey.SearchNode)) { + event.preventDefault(); + workspace.editing?.dispatch("searchNode"); } } ); @@ -95,7 +98,7 @@ export const Workspace: FC = () => {