UNPKG

@minto-ai/mt-ui

Version:

UI组件库

193 lines (192 loc) 5.17 kB
import { IUploadFileSuccessResponse } from '@minto-ai/obs-server'; import { FileSuffix } from '@minto-ai/tools'; import { ExtractPropTypes, InjectionKey, PropType } from 'vue'; import { fileSizeLimitConfigMap } from './upload-config'; /** * 裁剪选项 */ export interface CopperOptions { /** * 裁剪生成图片的质量 */ outputSize?: number; /** * 裁剪框的大小信息 */ info?: boolean; /** * 图片是否允许滚轮缩放 */ canScale?: boolean; /** * 是否默认生成截图框 */ autoCrop?: boolean; /** * 默认生成截图框宽度 */ autoCropWidth?: number; /** * 默认生成截图框高度 */ autoCropHeight?: number; /** * 裁剪框大小是否跟随图片大小进行缩放 */ autoCropScale?: boolean; /** * 是否开启截图框宽高固定比例 */ fixed?: boolean; /** * 截图框的宽高比例, 开启fixed生效 */ fixedNumber?: number[]; /** * 是否输出原图比例的截图 */ full?: boolean; /** * 固定截图框大小 */ fixedBox?: boolean; /** * 上传图片是否可以移动 */ canMove?: boolean; /** * 截图框能否拖动 */ canMoveBox?: boolean; /** * 上传图片按照原始比例渲染 */ original?: boolean; /** * 截图框是否被限制在图片里面 */ centerBox?: boolean; /** * 是否按照设备的dpr 输出等比例图片 */ high?: boolean; /** * true 为展示真实输出图片宽高 false 展示看到的截图框宽高 */ infoTrue?: boolean; /** * 限制图片最大宽度和高度 */ maxImgSize?: number; /** * 图片默认渲染方式 */ mode?: string; /** * 裁剪框限制最小区域 */ limitMinSize?: number; /** * 导出时背景颜色填充 */ fillColor?: string; } interface FIleUploadConfigContext { getToken: () => string; obsServerType: 'aws' | 'huawei' | 'auto'; } type UploadStatus = 'ready' | 'uploading' | 'success' | 'fail'; declare enum ListTypeEnum { FILE_LIST = "file-list", IMAGE_GRID = "image-grid", IMAGE_ONLY = "image-only" } interface UploadRawFile extends File { uid: number; } interface UploadProgressEvent { percent: number; } interface UploadFile { name: string; percentage: number; status: UploadStatus; size?: number; response?: IUploadFileSuccessResponse; uid: number; url?: string; raw?: UploadRawFile; } declare const uploadProps: { readonly modelValue: { readonly type: PropType<UploadFile[]>; readonly default: () => never[]; }; readonly limit: { readonly type: NumberConstructor; readonly default: 9; }; readonly multiple: { readonly type: BooleanConstructor; readonly default: true; }; readonly suffixes: { readonly type: PropType<FileSuffix[]>; readonly default: ("html" | "ppt" | "docx" | "doc" | "pdf" | "pptx" | "xlsx" | "xls" | "jpg" | "png" | "jpeg" | "webp" | "gif" | "mp4" | "avi" | "flv" | "mkv" | "mp3" | "wav" | "txt" | "zip" | "rar")[]; }; readonly disabled: { readonly type: BooleanConstructor; readonly default: false; }; readonly listType: { readonly type: PropType<ListTypeEnum>; readonly default: ListTypeEnum.FILE_LIST; readonly values: ListTypeEnum[]; }; readonly showTrigger: { readonly type: BooleanConstructor; readonly default: true; }; readonly showList: { readonly type: BooleanConstructor; readonly default: false; }; readonly isFullScreeDrag: { readonly type: BooleanConstructor; readonly default: false; }; readonly sizeType: { readonly type: PropType<keyof typeof fileSizeLimitConfigMap>; readonly default: "normal"; readonly values: MapIterator<string>; }; readonly autoCropper: { readonly type: BooleanConstructor; readonly default: true; }; readonly copperOptions: { readonly type: PropType<CopperOptions>; readonly default: () => {}; }; readonly beforeUpload: { readonly type: PropType<(rawFile: UploadRawFile) => Promise<boolean | void>>; readonly default: () => Promise<void>; }; }; type UploadProps = ExtractPropTypes<typeof uploadProps>; declare const genFileId: () => number; interface UploadContext { choose: () => void; reload: ({ uid, file }: { uid: number; file: File; }) => Promise<void>; remove: (uploadFile: UploadFile) => void; upload: (files: Array<File>) => void; } declare const uploadContextKey: InjectionKey<UploadContext>; declare function formatUploadFiles(data: string[] | { url: string; }[] | UploadFile[]): UploadFile[]; export type { FIleUploadConfigContext, UploadFile, UploadProgressEvent, UploadProps, UploadRawFile, }; export { formatUploadFiles, genFileId, ListTypeEnum, uploadContextKey, uploadProps, };