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