@minto-ai/mt-ui
Version:
UI组件库
193 lines (192 loc) • 5.17 kB
TypeScript
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, };