import React, { useRef, useEffect, useState, ReactNode } from 'react'; import { sampleImageModalState } from '@/components/SampleImageModal'; import { isVideo } from '@/utils/basic'; interface SampleImageCardProps { imageUrl: string; alt: string; numSamples: number; sampleImages: string[]; children?: ReactNode; className?: string; onDelete?: () => void; } const SampleImageCard: React.FC = ({ imageUrl, alt, numSamples, sampleImages, children, className = '', }) => { const cardRef = useRef(null); const [isVisible, setIsVisible] = useState(false); const [loaded, setLoaded] = useState(false); useEffect(() => { // Create intersection observer to check visibility const observer = new IntersectionObserver( entries => { if (entries[0].isIntersecting) { setIsVisible(true); observer.disconnect(); } }, { threshold: 0.1 }, ); if (cardRef.current) { observer.observe(cardRef.current); } return () => { observer.disconnect(); }; }, []); const handleLoad = (): void => { setLoaded(true); }; console.log('imgurl',imageUrl.toLowerCase().slice(-4)) return (
{/* Square image container */}
sampleImageModalState.set({ imgPath: imageUrl, numSamples, sampleImages })} >
{isVisible && ( <> {isVideo(imageUrl) ? (
); }; export default SampleImageCard;