@kadconsulting/dry
Version:
KAD Reusable Component Library
34 lines • 1.23 kB
JavaScript
import { useState, useEffect, useRef } from 'react';
const useCarousel = ({ initialIndex = 0, autoplay = false, interval = 3000, } = {}) => {
const [currentIndex, setCurrentIndex] = useState(initialIndex);
const autoplayRef = useRef(autoplay);
const intervalIdRef = useRef(null);
const next = () => setCurrentIndex((prevIndex) => prevIndex + 1);
const prev = () => setCurrentIndex((prevIndex) => prevIndex - 1);
const pause = () => {
autoplayRef.current = false;
if (intervalIdRef.current) {
clearInterval(intervalIdRef.current);
intervalIdRef.current = null;
}
};
const resume = () => {
autoplayRef.current = true;
if (!intervalIdRef.current) {
intervalIdRef.current = setInterval(next, interval);
}
};
useEffect(() => {
if (autoplay) {
intervalIdRef.current = setInterval(next, interval);
}
return () => {
if (intervalIdRef.current) {
clearInterval(intervalIdRef.current);
}
};
}, [interval]);
return { currentIndex, next, prev, pause, resume };
};
export default useCarousel;
//# sourceMappingURL=useCarousel.js.map