UNPKG

cli-legend

Version:

"A fun command-line rogurelike dungeon game"

21 lines (20 loc) 657 B
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); }; }, []); }