import { ChevronLeft, ChevronRight, MoveRight } from 'lucide-react'; import React, { useState, useEffect, useCallback } from 'react'; interface ChangelogImagesProps { images: { [key: string]: string }; } const ChangelogImages: React.FC = ({ images }) => { const [enlargedImage, setEnlargedImage] = useState(null); const imageArray = Object.entries(images); const handleImageClick = (src: string) => { setEnlargedImage(src); }; const handleCloseEnlarged = () => { setEnlargedImage(null); }; const handleNavigation = useCallback( (direction: 'prev' | 'next') => { if (!enlargedImage) return; const currentIndex = imageArray.findIndex( ([_, src]) => src === enlargedImage, ); let newIndex; if (direction === 'prev') { newIndex = currentIndex > 0 ? currentIndex - 1 : imageArray.length - 1; } else { newIndex = currentIndex < imageArray.length - 1 ? currentIndex + 1 : 0; } setEnlargedImage(imageArray[newIndex][1]); }, [enlargedImage, imageArray], ); useEffect(() => { const handleKeyDown = (event: KeyboardEvent) => { if (event.key === 'Escape') { handleCloseEnlarged(); } else if (event.key === 'ArrowLeft') { handleNavigation('prev'); } else if (event.key === 'ArrowRight') { handleNavigation('next'); } }; window.addEventListener('keydown', handleKeyDown); return () => window.removeEventListener('keydown', handleKeyDown); }, [handleNavigation]); return ( <>
{imageArray.map(([title, src]) => (
handleImageClick(src)} > {title}
{title}
))}
{enlargedImage && (
Enlarged view
)} ); }; export default ChangelogImages;