1import type { AssetResource, EnvironmentId } from "@t3tools/contracts";
2
3import type { FileBackedComposerAttachment } from "../lib/composerImages";
4import type { MediaActionsSource } from "../lib/mediaActionsSource";
5
6interface FilePreviewMetadata {
7 readonly kind: "image" | "pdf" | "document";
8 readonly mimeType?: string;
9 readonly name?: string;
10 readonly sourceIdentifier?: string;
11 readonly srcFragment?: string;
12 readonly actionsSource?: MediaActionsSource;
13}
14
15export type FilePreviewItem = FilePreviewMetadata &
16 (
17 | { readonly uri: string }
18 | { readonly attachment: FileBackedComposerAttachment }
19 | { readonly environmentId: EnvironmentId; readonly resource: AssetResource }
20 );
21
22export type FilePreviewSource = FilePreviewItem & {
23 readonly gallery?: readonly FilePreviewItem[];
24};
25
26export interface ResolvedFilePreviewSource extends FilePreviewMetadata {
27 readonly uri: string;
28 readonly gallery?: readonly (FilePreviewMetadata & { readonly uri: string })[];
29}