import { NostrLink, TaggedNostrEvent } from "@snort/system";
import { memo, MouseEvent, ReactNode } from "react";
import { useInView } from "react-intersection-observer";
import { Link } from "react-router-dom";
import Icon from "@/Components/Icons/Icon";
import { ProxyImg } from "@/Components/ProxyImg";
import getEventMedia from "@/Utils/getEventMedia";
interface ImageGridItemProps {
event: TaggedNostrEvent;
onClick?: (event: MouseEvent) => void;
waitUntilInView?: boolean;
}
const ImageGridItem = memo((props: ImageGridItemProps) => {
const { event, onClick, waitUntilInView } = props;
const { ref, inView } = useInView({ triggerOnce: true, rootMargin: "0px 0px 3000px 0px" });
const media = getEventMedia(event);
if (media.length === 0) return null;
const multiple = media.length > 1;
const isVideo = media[0].mimeType?.startsWith("video/");
const noteId = NostrLink.fromEvent(event).encode(CONFIG.eventLinkPrefix);
const myOnClick = (clickEvent: MouseEvent) => {
if (onClick && window.innerWidth >= 768) {
onClick(clickEvent);
clickEvent.preventDefault();
}
};
const renderContent = (): ReactNode | undefined => {
if (waitUntilInView && !inView) return undefined;
return (
<>