UNPKG

609 BJavaScriptView Raw
1import { useEffect, useState } from "react";
2
3const useKeyboardJs = combination => {
4 const [state, set] = useState([false, null]);
5 const [keyboardJs, setKeyboardJs] = useState(null);
6
7 useEffect(() => {
8 import("keyboardjs").then(setKeyboardJs);
9 }, []);
10
11 useEffect(() => {
12 if (!keyboardJs) return;
13
14 const down = event => set([true, event]);
15 const up = event => set([false, event]);
16 keyboardJs.bind(combination, down, up);
17
18 return () => {
19 keyboardJs.unbind(combination, down, up);
20 };
21 }, [combination, keyboardJs]);
22
23 return state;
24};
25
26export default useKeyboardJs;