@ant-design/pro-flow
Version:
A React based Flow components
49 lines (47 loc) • 1.47 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import { useHotkeys } from 'react-hotkeys-hook';
import { useStore } from "../store";
export var useHotkeyManager = function useHotkeyManager() {
var open = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
var _useStore = useStore(function (s) {
return [s.selectAll, s.undo, s.redo, s.copySelection, s.paste];
}),
_useStore2 = _slicedToArray(_useStore, 5),
selectAll = _useStore2[0],
undo = _useStore2[1],
redo = _useStore2[2],
copySelection = _useStore2[3],
paste = _useStore2[4];
useHotkeys('meta+a', function (e) {
if (!open) return;
e.preventDefault();
selectAll();
});
useHotkeys('meta+z', function (e) {
if (!open) return;
e.preventDefault();
undo();
});
useHotkeys('meta+c', function (e) {
if (!open) return;
e.preventDefault();
copySelection();
});
useHotkeys('meta+v', function (e) {
if (!open) return;
e.preventDefault();
paste();
});
useHotkeys('meta+shift+z', function (e) {
if (!open) return;
e.preventDefault();
redo();
});
// 由于 react-flow 的 Backspace 实现逻辑有瑕疵,因此自行实现了一遍
// refs: https://github.com/wbkd/react-flow/issues/2826
useHotkeys('backspace', function (e) {
if (!open) return;
e.preventDefault();
// beforeActionCallback(handleDelete, HotKeyAction.deleteSelection);
});
};