/** * 文件预览组件相关类型定义 */ /** * 文件预览组件 Props */ export interface FilePreviewProps { /** * 文件选择结果 */ files?: File[]; /** * 文件预览容器 * @type { HTMLElement | string | null | undefined } * @default undefined * @description 文件预览容器,用于指定文件预览列表的渲染位置。可以是 DOM 元素、CSS 选择器字符串,或为空时渲染在父元素中 */ previewContainer?: HTMLElement | string | null; /** * 文件添加回调 */ onAdd?: (files: File[]) => void; /** * 文件删除回调 */ onDelete?: (file: File) => void; /** * 文件预览回调 */ onFilePreview?: (file: File) => void; } /** * 文件预览项组件 Props */ export interface FilePreviewItemProps { /** 文件对象 */ file: File; /** 删除回调 */ onDelete: () => void; /** 文件预览回调 */ onFilePreview?: (file: File) => void; } /** * 图片预览项组件 Props */ export interface ImagePreviewItemProps extends FilePreviewItemProps { /** 点击预览回调 */ onPreview: (url: string, name: string) => void; } /** * 图片预览模态框组件 Props */ export interface ImagePreviewModalProps { /** 预览文件对象 */ previewFile: PreviewImageState | null; /** 关闭回调 */ onClose: () => void; } /** * 图片预览状态 */ export interface PreviewImageState { /** 图片 URL */ url: string; /** 图片名称 */ name: string; } /** * 文件扩展名解析结果 */ export interface FileExtension { /** 不包含扩展名的文件名 */ nameWithoutExt: string; /** 扩展名(首字母大写) */ extension: string; }