"use client"; import { useEffect, useState, useCallback } from "react"; import { motion } from "framer-motion"; import WebBrowser from "./web-browser"; let interval: NodeJS.Timeout; type BrowserData = { id: number; sessionId: string; isScrapeComplete: boolean; children?: React.ReactNode; }; export default function MultipleWebBrowsers({ browsers, offset, scaleFactor, autoRotate = true, rotationInterval = 5000, }: { browsers: BrowserData[]; offset?: number; scaleFactor?: number; autoRotate?: boolean; rotationInterval?: number; }) { const CARD_OFFSET = offset || 10; const SCALE_FACTOR = scaleFactor || 0.06; const [activeBrowsers, setActiveBrowsers] = useState(browsers); const startRotation = useCallback(() => { interval = setInterval(() => { setActiveBrowsers((prevBrowsers: BrowserData[]) => { const newArray = [...prevBrowsers]; newArray.unshift(newArray.pop()!); // move the last element to the front return newArray; }); }, rotationInterval); }, [rotationInterval]); useEffect(() => { if (autoRotate) { startRotation(); } return () => clearInterval(interval); }, [autoRotate, startRotation]); return (
{activeBrowsers.map((browser, index) => { return ( {browser.children} ); })}
); }