feat: add scoped shortcuts
This commit is contained in:
@@ -3,16 +3,20 @@ import { keysStore } from "./store";
|
||||
import type { Key } from "./types";
|
||||
import { enforceKeyOptions } from "./util";
|
||||
|
||||
export const useShortcut = (key: Key, handler: () => void) => {
|
||||
export const useShortcut = (
|
||||
key: Key,
|
||||
handler: () => void,
|
||||
scope: string = "global",
|
||||
) => {
|
||||
const keyOptions = enforceKeyOptions(key);
|
||||
const keyName = keyOptions.name;
|
||||
const ref = useRef(handler);
|
||||
ref.current = handler;
|
||||
|
||||
useEffect(() => {
|
||||
keysStore.register(keyName, ref);
|
||||
keysStore.register(keyName, ref, scope);
|
||||
return () => {
|
||||
keysStore.deregister(keyName);
|
||||
keysStore.deregister(keyName, scope);
|
||||
};
|
||||
}, []);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user