1 | import { useEffect, useState } from "react";
|
2 |
|
3 | const 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 |
|
26 | export default useKeyboardJs;
|