import { observer } from "mobx-react"; import * as React from "react"; import { useCompositeState, Composite, CompositeStateReturn, } from "reakit/Composite"; type Props = { children: (composite: CompositeStateReturn) => React.ReactNode; onEscape?: (ev: React.KeyboardEvent) => void; }; function ArrowKeyNavigation( { children, onEscape, ...rest }: Props, ref: React.RefObject ) { const composite = useCompositeState(); const handleKeyDown = React.useCallback( (ev) => { if (onEscape) { if (ev.key === "Escape") { onEscape(ev); } if ( ev.key === "ArrowUp" && composite.currentId === composite.items[0].id ) { onEscape(ev); } } }, [composite.currentId, composite.items, onEscape] ); return ( {children(composite)} ); } export default observer(React.forwardRef(ArrowKeyNavigation));