mirror of
https://github.com/muerwre/vault-frontend.git
synced 2025-04-25 12:56:41 +07:00
23 lines
637 B
TypeScript
23 lines
637 B
TypeScript
import { useCallback, useEffect } from 'react';
|
|
|
|
export const useArrows = (onNext: () => void, onPrev: () => void, locked) => {
|
|
const onKeyDown = useCallback(
|
|
event => {
|
|
if ((event.target.tagName && ['TEXTAREA', 'INPUT'].includes(event.target.tagName)) || locked)
|
|
return;
|
|
|
|
switch (event.key) {
|
|
case 'ArrowLeft':
|
|
return onPrev();
|
|
case 'ArrowRight':
|
|
return onNext();
|
|
}
|
|
},
|
|
[onNext, onPrev, locked]
|
|
);
|
|
|
|
useEffect(() => {
|
|
window.addEventListener('keydown', onKeyDown);
|
|
return () => window.removeEventListener('keydown', onKeyDown);
|
|
}, [onKeyDown]);
|
|
};
|