export interface ExpandedImageItem { src: string; name: string; } export interface ExpandedImagePreview { images: ExpandedImageItem[]; index: number; } export function buildExpandedImagePreview( images: ReadonlyArray<{ id: string; name: string; previewUrl?: string }>, selectedImageId: string, ): ExpandedImagePreview | null { const previewableImages = images.flatMap((image) => image.previewUrl ? [{ id: image.id, src: image.previewUrl, name: image.name }] : [], ); if (previewableImages.length === 0) { return null; } const selectedIndex = previewableImages.findIndex((image) => image.id === selectedImageId); if (selectedIndex < 0) { return null; } return { images: previewableImages.map((image) => ({ src: image.src, name: image.name, })), index: selectedIndex, }; }