"use client"; import { useEffect, useRef, useState } from "react"; import Image from "next/image"; import { siteConfig } from "@/data/site-content"; const slides = [ { src: "/herosection/A_massive_perfectly_organized_masonry_supply_yard__delpmaspu.webp", alt: "Masonry Supply Yard", }, { src: "/herosection/Closeup_cinematic_macro_shot_of_a_stack_of_premium_delpmaspu.webp", alt: "Premium Masonry Materials", }, { src: "/herosection/Ultrarealistic_cinematic_wide_shot_for_a_professio_delpmaspu.webp", alt: "Professional Masonry Project", }, { src: "/herosection/Wide_angle_architectural_shot_of_a_contemporary_st_delpmaspu.webp", alt: "Contemporary Stone Architecture", }, ]; export function HeroCinema() { const [current, setCurrent] = useState(0); const [previous, setPrevious] = useState(null); const currentRef = useRef(0); const clearPreviousTimerRef = useRef(null); function transitionTo(nextIndex: number) { if (nextIndex === currentRef.current) { return; } setPrevious(currentRef.current); setCurrent(nextIndex); currentRef.current = nextIndex; if (clearPreviousTimerRef.current) { window.clearTimeout(clearPreviousTimerRef.current); } clearPreviousTimerRef.current = window.setTimeout(() => { setPrevious(null); clearPreviousTimerRef.current = null; }, 1400); } useEffect(() => { const timer = window.setInterval(() => { transitionTo((currentRef.current + 1) % slides.length); }, 4500); return () => { window.clearInterval(timer); if (clearPreviousTimerRef.current) { window.clearTimeout(clearPreviousTimerRef.current); } }; }, []); const renderedSlides = previous === null ? [current] : [previous, current].filter( (index, position, values) => values.indexOf(index) === position, ); return (
{renderedSlides.map((index) => { const slide = slides[index]; const isCurrent = index === current; return (
{slide.alt}
); })}
{slides.map((_, i) => (
LIVE FROM THE YARD
); }