import { type KeyboardEventHandler } from 'react'; import { noop } from './noop'; interface Parameters { onArrowDown?: KeyboardEventHandler; onArrowLeft?: KeyboardEventHandler; onArrowRight?: KeyboardEventHandler; onArrowUp?: KeyboardEventHandler; onBackspace?: KeyboardEventHandler; onDelete?: KeyboardEventHandler; onEnter?: KeyboardEventHandler; onKeyDown?: KeyboardEventHandler; onSpace?: KeyboardEventHandler; } export const createKeyboardNavigation = ({ onArrowDown = noop, onArrowLeft = noop, onArrowRight = noop, onArrowUp = noop, onBackspace = noop, onDelete = noop, onEnter = noop, onKeyDown = noop, onSpace = noop, }: Parameters): KeyboardEventHandler => { const handlers: Record> = { ArrowUp: onArrowUp, ArrowDown: onArrowDown, ArrowLeft: onArrowLeft, ArrowRight: onArrowRight, Backspace: onBackspace, Delete: onDelete, Enter: onEnter, ' ': onSpace, }; const handleKeyDown: KeyboardEventHandler = (event) => { const handler = handlers[event.key] || noop; handler(event); onKeyDown(event); }; return handleKeyDown; };