use keydown to handle shortcut key
This commit is contained in:
1 parent
3be15ee116
commit
085dd49f75
4 files changed
+24
-25
No files matched your search
@@ -9,7 +9,7 @@ import { NodeModel, TreeGraphData, TreeModel } from "@/misc/b3type";
|
|||||||
import * as b3util from "@/misc/b3util";
|
import * as b3util from "@/misc/b3util";
|
||||||
import { message } from "@/misc/hooks";
|
import { message } from "@/misc/hooks";
|
||||||
import i18n from "@/misc/i18n";
|
import i18n from "@/misc/i18n";
|
||||||
import { Hotkey, isMacos, useKeyUp } from "@/misc/keys";
|
import { Hotkey, isMacos, useKeyDown } from "@/misc/keys";
|
||||||
import Path from "@/misc/path";
|
import Path from "@/misc/path";
|
||||||
import { mergeClassNames } from "@/misc/util";
|
import { mergeClassNames } from "@/misc/util";
|
||||||
import { ArrowDownOutlined, ArrowUpOutlined, CloseOutlined } from "@ant-design/icons";
|
import { ArrowDownOutlined, ArrowUpOutlined, CloseOutlined } from "@ant-design/icons";
|
||||||
@@ -958,13 +958,13 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
|
|||||||
|
|
||||||
const keysRef = useRef<HTMLDivElement>(null);
|
const keysRef = useRef<HTMLDivElement>(null);
|
||||||
|
|
||||||
useKeyUp(Hotkey.Copy, keysRef, () => copyNode());
|
useKeyDown(Hotkey.Copy, keysRef, () => copyNode());
|
||||||
useKeyUp(Hotkey.Replace, keysRef, () => replaceNode());
|
useKeyDown(Hotkey.Replace, keysRef, () => replaceNode());
|
||||||
useKeyUp(Hotkey.Paste, keysRef, () => pasteNode());
|
useKeyDown(Hotkey.Paste, keysRef, () => pasteNode());
|
||||||
useKeyUp(Hotkey.Undo, keysRef, () => undo());
|
useKeyDown(Hotkey.Undo, keysRef, () => undo());
|
||||||
useKeyUp(Hotkey.Redo, keysRef, () => redo());
|
useKeyDown(Hotkey.Redo, keysRef, () => redo());
|
||||||
useKeyUp([Hotkey.Insert, Hotkey.Enter], keysRef, () => createNode());
|
useKeyDown([Hotkey.Insert, Hotkey.Enter], keysRef, () => createNode());
|
||||||
useKeyUp([Hotkey.Delete, Hotkey.Backspace], keysRef, () => deleteNode());
|
useKeyDown([Hotkey.Delete, Hotkey.Backspace], keysRef, () => deleteNode());
|
||||||
|
|
||||||
editor.dispatch = (event: EditEvent, data: unknown) => {
|
editor.dispatch = (event: EditEvent, data: unknown) => {
|
||||||
switch (event) {
|
switch (event) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { NodeDef, getNodeType } from "@/misc/b3type";
|
|||||||
import * as b3util from "@/misc/b3util";
|
import * as b3util from "@/misc/b3util";
|
||||||
import { modal } from "@/misc/hooks";
|
import { modal } from "@/misc/hooks";
|
||||||
import i18n from "@/misc/i18n";
|
import i18n from "@/misc/i18n";
|
||||||
import { Hotkey, isMacos, useKeyUp } from "@/misc/keys";
|
import { Hotkey, isMacos, useKeyDown } from "@/misc/keys";
|
||||||
import Path from "@/misc/path";
|
import Path from "@/misc/path";
|
||||||
import { DownOutlined } from "@ant-design/icons";
|
import { DownOutlined } from "@ant-design/icons";
|
||||||
import { Button, Dropdown, Flex, FlexProps, Input, MenuProps, Space, Tree } from "antd";
|
import { Button, Dropdown, Flex, FlexProps, Input, MenuProps, Space, Tree } from "antd";
|
||||||
@@ -399,7 +399,7 @@ export const Explorer: FC = () => {
|
|||||||
|
|
||||||
const keysRef = useRef<HTMLDivElement>(null);
|
const keysRef = useRef<HTMLDivElement>(null);
|
||||||
|
|
||||||
useKeyUp([Hotkey.F2, isMacos ? Hotkey.Enter : ""], keysRef, (event) => {
|
useKeyDown([Hotkey.F2, isMacos ? Hotkey.Enter : ""], keysRef, (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const node = findFile(selectedKeys[0], workspace.fileTree!);
|
const node = findFile(selectedKeys[0], workspace.fileTree!);
|
||||||
if (node && node !== workspace.fileTree) {
|
if (node && node !== workspace.fileTree) {
|
||||||
@@ -407,7 +407,7 @@ export const Explorer: FC = () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
useKeyUp([Hotkey.Delete, isMacos ? Hotkey.MacDelete : ""], keysRef, (event) => {
|
useKeyDown([Hotkey.Delete, isMacos ? Hotkey.MacDelete : ""], keysRef, (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const node = findFile(selectedKeys[0], workspace.fileTree!);
|
const node = findFile(selectedKeys[0], workspace.fileTree!);
|
||||||
if (node && node !== workspace.fileTree) {
|
if (node && node !== workspace.fileTree) {
|
||||||
@@ -415,7 +415,7 @@ export const Explorer: FC = () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
useKeyUp(Hotkey.Escape, keysRef, (event) => {
|
useKeyDown(Hotkey.Escape, keysRef, (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const node = findFile(selectedKeys[0], workspace.fileTree!);
|
const node = findFile(selectedKeys[0], workspace.fileTree!);
|
||||||
if (node) {
|
if (node) {
|
||||||
@@ -424,7 +424,7 @@ export const Explorer: FC = () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
useKeyUp(Hotkey.Duplicate, keysRef, (event) => {
|
useKeyDown(Hotkey.Duplicate, keysRef, (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const node = findFile(selectedKeys[0], workspace.fileTree!);
|
const node = findFile(selectedKeys[0], workspace.fileTree!);
|
||||||
if (node && node.isLeaf) {
|
if (node && node.isLeaf) {
|
||||||
@@ -432,7 +432,7 @@ export const Explorer: FC = () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
useKeyUp(Hotkey.Copy, keysRef, (event) => {
|
useKeyDown(Hotkey.Copy, keysRef, (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const node = findFile(selectedKeys[0], workspace.fileTree!);
|
const node = findFile(selectedKeys[0], workspace.fileTree!);
|
||||||
if (node && node.isLeaf) {
|
if (node && node.isLeaf) {
|
||||||
@@ -440,7 +440,7 @@ export const Explorer: FC = () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
useKeyUp(Hotkey.Paste, keysRef, (event) => {
|
useKeyDown(Hotkey.Paste, keysRef, (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const node = findFile(selectedKeys[0], workspace.fileTree!);
|
const node = findFile(selectedKeys[0], workspace.fileTree!);
|
||||||
if (node) {
|
if (node) {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { useSetting } from "@/contexts/setting-context";
|
import { useSetting } from "@/contexts/setting-context";
|
||||||
import { EditorStore, useWorkspace } from "@/contexts/workspace-context";
|
import { EditorStore, useWorkspace } from "@/contexts/workspace-context";
|
||||||
import { modal } from "@/misc/hooks";
|
import { modal } from "@/misc/hooks";
|
||||||
import { Hotkey, isMacos, setInputFocus, useKeyUp } from "@/misc/keys";
|
import { Hotkey, isMacos, setInputFocus, useKeyDown } from "@/misc/keys";
|
||||||
import Path from "@/misc/path";
|
import Path from "@/misc/path";
|
||||||
import { app } from "@electron/remote";
|
import { app } from "@electron/remote";
|
||||||
import { useKeyPress } from "ahooks";
|
import { useKeyPress } from "ahooks";
|
||||||
@@ -46,12 +46,12 @@ export const Workspace: FC = () => {
|
|||||||
|
|
||||||
const keysRef = useRef<HTMLDivElement>(null);
|
const keysRef = useRef<HTMLDivElement>(null);
|
||||||
|
|
||||||
useKeyUp(Hotkey.Build, keysRef, (event) => {
|
useKeyDown(Hotkey.Build, keysRef, (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
workspace.buildProject();
|
workspace.buildProject();
|
||||||
});
|
});
|
||||||
|
|
||||||
useKeyUp(Hotkey.Save, keysRef, (event) => {
|
useKeyDown(Hotkey.Save, keysRef, (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
workspace.save();
|
workspace.save();
|
||||||
});
|
});
|
||||||
@@ -60,7 +60,7 @@ export const Workspace: FC = () => {
|
|||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
});
|
});
|
||||||
|
|
||||||
useKeyUp(Hotkey.CloseEditor, null, (event) => {
|
useKeyDown(Hotkey.CloseEditor, null, (event) => {
|
||||||
if (workspace.editing) {
|
if (workspace.editing) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
if (workspace.editing.unsave) {
|
if (workspace.editing.unsave) {
|
||||||
@@ -72,17 +72,17 @@ export const Workspace: FC = () => {
|
|||||||
keysRef.current?.focus();
|
keysRef.current?.focus();
|
||||||
});
|
});
|
||||||
|
|
||||||
useKeyUp(Hotkey.SearchTree, keysRef, (event) => {
|
useKeyDown(Hotkey.SearchTree, keysRef, (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
workspace.onShowingSearch(true);
|
workspace.onShowingSearch(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
useKeyUp(Hotkey.SearchNode, keysRef, (event) => {
|
useKeyDown(Hotkey.SearchNode, keysRef, (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
workspace.editing?.dispatch("searchNode");
|
workspace.editing?.dispatch("searchNode");
|
||||||
});
|
});
|
||||||
|
|
||||||
useKeyUp(Hotkey.JumpNode, keysRef, (event) => {
|
useKeyDown(Hotkey.JumpNode, keysRef, (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
workspace.editing?.dispatch("jumpNode");
|
workspace.editing?.dispatch("jumpNode");
|
||||||
});
|
});
|
||||||
|
|||||||
+2
-3
@@ -13,17 +13,16 @@ const hotkey = (key: string) => {
|
|||||||
return key.toLowerCase();
|
return key.toLowerCase();
|
||||||
};
|
};
|
||||||
|
|
||||||
export const useKeyUp = (
|
export const useKeyDown = (
|
||||||
keyFilter: KeyFilter,
|
keyFilter: KeyFilter,
|
||||||
target: Target,
|
target: Target,
|
||||||
eventHandler: (event: KeyboardEvent, key: KeyType) => void,
|
eventHandler: (event: KeyboardEvent, key: KeyType) => void,
|
||||||
option?: Options
|
option?: Options
|
||||||
) => {
|
) => {
|
||||||
option = option || {};
|
option = option || {};
|
||||||
option.events = ["keyup"];
|
|
||||||
option.target = target;
|
option.target = target;
|
||||||
option.exactMatch = true;
|
option.exactMatch = true;
|
||||||
return useKeyPress(keyFilter, eventHandler, option);
|
return useKeyPress(keyFilter, (e, key) => !e.repeat && eventHandler(e, key), option);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const Hotkey = {
|
export const Hotkey = {
|
||||||
|
|||||||
Reference in new issue
Block a user