function Gallery() { const blocks = [ { key: 'eventos', label: 'Eventos', title: 'Ceremonias e izadas de bandera', photos: [ 'assets/gallery/eventos-01.jpg', 'assets/gallery/eventos-02.jpg', 'assets/gallery/eventos-03.jpg', 'assets/gallery/eventos-04.jpg', 'assets/gallery/eventos-05.jpg', ], }, { key: 'actividades', label: 'Actividades', title: 'Vida cadete y formación', photos: [ 'assets/gallery/actividades-01.jpg', 'assets/gallery/actividades-02.jpg', 'assets/gallery/actividades-03.jpg', 'assets/gallery/actividades-04.jpg', 'assets/gallery/actividades-05.jpg', 'assets/gallery/actividades-06.jpg', 'assets/gallery/actividades-07.jpg', ], }, { key: 'salidas', label: 'Salidas', title: 'Salidas pedagógicas y convivencias', photos: [ 'assets/gallery/salidas-01.jpg', 'assets/gallery/salidas-02.jpg', 'assets/gallery/salidas-03.jpg', 'assets/gallery/salidas-04.jpg', ], }, ]; const [indices, setIndices] = useState(blocks.map(() => 0)); const [expanded, setExpanded] = useState(null); const [paused, setPaused] = useState(blocks.map(() => false)); useEffect(() => { const timers = blocks.map((b, i) => { if (paused[i]) return null; const dur = expanded === i ? 3200 : 4800; return setInterval(() => { setIndices(prev => { const next = [...prev]; next[i] = (next[i] + 1) % b.photos.length; return next; }); }, dur); }); return () => timers.forEach(t => t && clearInterval(t)); }, [paused, expanded]); const advance = (i, dir, e) => { e?.stopPropagation(); setIndices(prev => { const next = [...prev]; next[i] = (next[i] + dir + blocks[i].photos.length) % blocks[i].photos.length; return next; }); }; const setPausedAt = (i, val) => { setPaused(prev => { const n = [...prev]; n[i] = val; return n; }); }; return (
); } Object.assign(window, { Gallery });