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 }
}