import * as React from "react" type ElementRef = T | null type ElementRefs = ElementRef[] interface ActiveItemScrollOptions { activeIndex: number | null } export function useActiveItemScroll( options: ActiveItemScrollOptions, ) { const { activeIndex } = options const elementRefs = React.useRef>([]) const scrollActiveElementIntoView = React.useCallback((index: number) => { const activeElement = elementRefs.current[index] activeElement?.focus() // activeElement?.scrollIntoView({ block: "nearest" }) }, []) React.useEffect(() => { if (activeIndex !== null) { scrollActiveElementIntoView(activeIndex) } }, [activeIndex, scrollActiveElementIntoView]) const setElementRef = React.useCallback( (element: ElementRef, index: number) => { elementRefs.current[index] = element }, [], ) return { setElementRef, scrollActiveElementIntoView } }