import React, { useState, useRef, useMemo } from 'react'; import { LazyLoadImage } from 'react-lazy-load-image-component'; import { cn, scaleImage } from '~/utils'; import DialogImage from './DialogImage'; import { Skeleton } from '~/components'; const Image = ({ imagePath, altText, height, width, placeholderDimensions, className, }: { imagePath: string; altText: string; height: number; width: number; placeholderDimensions?: { height?: string; width?: string; }; className?: string; }) => { const [isOpen, setIsOpen] = useState(false); const [isLoaded, setIsLoaded] = useState(false); const containerRef = useRef(null); const handleImageLoad = () => setIsLoaded(true); const { width: scaledWidth, height: scaledHeight } = useMemo( () => scaleImage({ originalWidth: Number(placeholderDimensions?.width?.split('px')[0] ?? width), originalHeight: Number(placeholderDimensions?.height?.split('px')[0] ?? height), containerRef, }), [placeholderDimensions, height, width], ); const downloadImage = () => { const link = document.createElement('a'); link.href = imagePath; link.download = altText; document.body.appendChild(link); link.click(); document.body.removeChild(link); }; return (
{isLoaded && ( )}
); }; export default Image;