import { useState, useCallback } from 'react' export interface HomeCursor { cursor: number move(d: 1 | -1): void activate(): void jumpTo(i: number): void } export function useHomeCursor( sessionCount: number, onActivate: (idx: number) => void, ): HomeCursor { const [cursor, setCursor] = useState(0) const move = useCallback( (d: 1 | -1) => { if (sessionCount === 0) return setCursor(c => Math.max(0, Math.min(sessionCount - 1, c + d))) }, [sessionCount], ) const activate = useCallback(() => { onActivate(cursor) }, [cursor, onActivate]) const jumpTo = useCallback( (i: number) => { if (sessionCount === 0) return setCursor(Math.max(0, Math.min(sessionCount - 1, i))) }, [sessionCount], ) return { cursor, move, activate, jumpTo } }