import { Eye, FileFailed, FileUploadingSpin } from "@sofa-design/icons";
import { Image } from "antd";
import React from "react";
import { getFileTypeIcon } from "../../../Workspace/File/utils";
import { isImageFile } from "../utils";
/**
 * AttachmentFileIcon 组件 - 附件文件图标组件
 *
 * 该组件根据文件类型显示不同的图标或预览。如果是图片文件，则显示图片预览；
 * 如果是其他类型文件，则显示对应的文件图标。
 *
 * @component
 * @description 附件文件图标组件，根据文件类型显示图标或预览
 * @param {Object} props - 组件属性
 * @param {AttachmentFile} props.file - 附件文件对象
 * @param {string} [props.className] - 自定义CSS类名
 * @param {React.CSSProperties} [props.style] - 自定义样式
 *
 * @example
 * ```tsx
 * <AttachmentFileIcon
 *   file={fileData}
 *   className="custom-icon"
 *   style={{ fontSize: '24px' }}
 * />
 * ```
 *
 * @returns {React.ReactElement} 渲染的文件图标或预览组件
 *
 * @remarks
 * - 支持图片文件预览显示
 * - 支持多种文件类型图标
 * - 自动识别文件类型
 * - 提供自定义样式支持
 * - 响应式布局
 * - 图片自适应显示
 * - 图标居中显示
 */ var IMAGE_STYLE = {
    width: '40px',
    height: '40px',
    overflow: 'hidden'
};
var IMAGE_PREVIEW_CONFIG = {
    mask: /*#__PURE__*/ React.createElement("div", null, /*#__PURE__*/ React.createElement(Eye, null)),
    visible: false
};
export var AttachmentFileIcon = function(props) {
    var _file_type;
    var file = props.file, className = props.className;
    // 上传中状态
    if (file.status === 'uploading') {
        return /*#__PURE__*/ React.createElement(FileUploadingSpin, null);
    }
    // 错误状态
    if (file.status === 'error') {
        return /*#__PURE__*/ React.createElement(FileFailed, null);
    }
    // 图片文件预览
    if (isImageFile(file)) {
        return /*#__PURE__*/ React.createElement(Image, {
            src: file.url,
            style: IMAGE_STYLE,
            rootClassName: className,
            preview: IMAGE_PREVIEW_CONFIG,
            alt: file.name
        });
    }
    // 其他类型文件图标
    var fileType = (_file_type = file.type) === null || _file_type === void 0 ? void 0 : _file_type.split('/').at(-1);
    return getFileTypeIcon(fileType, '', file.name);
};
