cinny/src/app/hooks/useListFocusIndex.ts
Ajay Bura 399b1a373e
Some checks failed
Deploy to Netlify (dev) / Deploy to Netlify (push) Has been cancelled
Add new ctrl/cmd - k search modal (#2467)
* add new search modal

* remove search modal from searchTab

* fix member avatar load for space with 2 member

* use media authentication when rendering avatar

* fix hotkey for macos

* add @ in username

* replace subspace minus separator with em dash
2025-08-27 22:25:49 +10:00

36 lines
731 B
TypeScript

import { useCallback, useState } from 'react';
export const useListFocusIndex = (size: number, initialIndex: number) => {
const [index, setIndex] = useState(initialIndex);
const next = useCallback(() => {
setIndex((i) => {
const nextIndex = i + 1;
if (nextIndex >= size) {
return 0;
}
return nextIndex;
});
}, [size]);
const previous = useCallback(() => {
setIndex((i) => {
const previousIndex = i - 1;
if (previousIndex < 0) {
return size - 1;
}
return previousIndex;
});
}, [size]);
const reset = useCallback(() => {
setIndex(initialIndex);
}, [initialIndex]);
return {
index,
next,
previous,
reset,
};
};