import React, { useRef, useState, useEffect } from "react"; import { type Stop } from "../data/StopDataProvider"; import StopGalleryItem from "./StopGalleryItem"; import "./StopGallery.css"; interface StopGalleryProps { stops: Stop[]; title: string; emptyMessage?: string; } const StopGallery: React.FC = ({ stops, title, emptyMessage, }) => { const scrollRef = useRef(null); const [activeIndex, setActiveIndex] = useState(0); useEffect(() => { const element = scrollRef.current; if (!element) return; const handleScroll = () => { const scrollLeft = element.scrollLeft; const itemWidth = element.scrollWidth / stops.length; const index = Math.round(scrollLeft / itemWidth); setActiveIndex(index); }; element.addEventListener("scroll", handleScroll); return () => element.removeEventListener("scroll", handleScroll); }, [stops.length]); if (stops.length === 0 && emptyMessage) { return (

{title}

{emptyMessage}

); } if (stops.length === 0) { return null; } return (

{title}

{stops.length}
{stops.map((stop) => ( ))}
{stops.length > 1 && (
{stops.map((_, index) => (
))}
)}
); }; export default StopGallery;