import { useState, useEffect, useRef, useCallback } from "react"; import Image from "next/image"; interface ProductImageGalleryProps { images: string[]; productName: string; noImageText: string; } export function ProductImageGallery({ images, productName, noImageText, }: ProductImageGalleryProps) { const [selectedImage, setSelectedImage] = useState(0); const autoplayTimerRef = useRef(undefined); useEffect(() => { if (images.length <= 1) return; const startAutoplay = () => { autoplayTimerRef.current = setInterval(() => { setSelectedImage((prev) => (prev + 1) % images.length); }, 3000); }; startAutoplay(); return () => { if (autoplayTimerRef.current) clearInterval(autoplayTimerRef.current); }; }, [images.length]); const handleImageSelect = useCallback( (index: number) => { setSelectedImage(index); if (autoplayTimerRef.current) clearInterval(autoplayTimerRef.current); if (images.length > 1) { autoplayTimerRef.current = setInterval(() => { setSelectedImage((prev) => (prev + 1) % images.length); }, 3000); } }, [images.length] ); return (
{images.length > 0 ? ( {productName} ) : (
{noImageText}
)}
{images.length > 1 && (
{images.map((image, index) => ( ))}
)}
); }