import { useContext, useState } from "react"; import { MediaArtifactCard } from "@/components/artifacts/MediaArtifactCard"; import { ImageGalleryModal } from "@/components/ImageGalleryModal"; import { IssueGalleryContext } from "@/context/IssueGalleryContext"; import { RichWorkProductCard } from "./RichWorkProductCard"; import { imageResourceSource } from "./image-resources"; import type { TaskChatMaterializedResourceItem } from "./task-chat-model"; export function TaskChatImageGrid({ items }: { items: TaskChatMaterializedResourceItem[] }) { const openIssueGallery = useContext(IssueGalleryContext); const [selected, setSelected] = useState(null); const images = items.flatMap((item) => { const source = imageResourceSource(item); return source ? [{ item, source }] : []; }); return ( { if (openIssueGallery?.(src)) return true; const index = images.findIndex(({ source }) => source.contentPath === src || source.openPath === src); if (index < 0) return false; setSelected(index); return true; }}>
{images.map(({ item, source }) => (
{item.workProduct ? : }
))}
{selected !== null && selected >= 0 ? ( ({ ...source, originalFilename: source.filename }))} initialIndex={selected} open onOpenChange={(open) => { if (!open) setSelected(null); }} /> ) : null}
); }