UNPKG

@kadconsulting/dry

Version:
34 lines 1.23 kB
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