import React, { useState, useEffect } from 'react'; import { LazyLoadImage } from 'react-lazy-load-image-component'; import * as Dialog from '@radix-ui/react-dialog'; import DialogImage from './DialogImage'; import { cn } from '~/utils'; const Image = ({ imagePath, altText, height, width, placeholderDimensions, }: // n, // i, { imagePath: string; altText: string; height: number; width: number; placeholderDimensions?: { height: string; width: string; }; // n: number; // i: number; }) => { const [isLoaded, setIsLoaded] = useState(false); const handleImageLoad = () => setIsLoaded(true); const [minDisplayTimeElapsed, setMinDisplayTimeElapsed] = useState(false); useEffect(() => { let timer: NodeJS.Timeout; if (isLoaded) { timer = setTimeout(() => setMinDisplayTimeElapsed(true), 150); } return () => clearTimeout(timer); }, [isLoaded]); // const makeSquare = n >= 3 && i < 2; let placeholderHeight = '288px'; if (placeholderDimensions?.height && placeholderDimensions?.width) { placeholderHeight = placeholderDimensions.height; } else if (height > width) { placeholderHeight = '900px'; } else if (height === width) { placeholderHeight = width + 'px'; } return (
{isLoaded && minDisplayTimeElapsed && ( )}
); }; export default Image;