export interface ExpandedImageItem { src: string; name: string;} export interface ExpandedImagePreview { images: ExpandedImageItem[]; index: number;} export function getExpandedImagePreviewKey(preview: ExpandedImagePreview): string { const selectedImage = preview.images[preview.index]; return `${preview.index}:${preview.images.length}:${selectedImage?.src ?? ""}`;} 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, };}
export interface ExpandedImageItem {
src: string;
name: string;
}
export interface ExpandedImagePreview {
images: ExpandedImageItem[];
index: number;
}
export function getExpandedImagePreviewKey(preview: ExpandedImagePreview): string {
const selectedImage = preview.images[preview.index];
return `${preview.index}:${preview.images.length}:${selectedImage?.src ?? ""}`;
}
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,
};
}