cli-legend
Version:
"A fun command-line rogurelike dungeon game"
21 lines (20 loc) • 657 B
JavaScript
import { useRef } from './use-ref.js';
import { useEffect } from './use-effect.js';
import { withUpdates } from './hook-engine.js';
export function useKeypress(userHandler) {
const signal = useRef(userHandler);
signal.current = userHandler;
useEffect((rl) => {
let ignore = false;
const handler = withUpdates((_input, event) => {
if (ignore)
return;
void signal.current(event, rl);
});
rl.input.on('keypress', handler);
return () => {
ignore = true;
rl.input.removeListener('keypress', handler);
};
}, []);
}