UNPKG

@ant-design/pro-flow

Version:
49 lines (47 loc) 1.47 kB
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); }); };