{"version":3,"file":"interface.cjs","sources":["../../../../../../packages/components/upload/src/interface.ts"],"sourcesContent":["import type { VueNode } from '@antdv/types';\nimport type {\n  RcFile as OriRcFile,\n  UploadRequestOption as RcCustomRequestOptions,\n} from '@antdv/vue-components/vc-upload/src/interface';\nimport type { CSSProperties, ExtractPropTypes, ImgHTMLAttributes } from 'vue';\n\nimport type { ProgressProps } from '../../progress';\nimport {\n  arrayType,\n  booleanType,\n  functionType,\n  objectType,\n  someType,\n  stringType,\n} from '@antdv/utils';\n\nexport interface FileType extends OriRcFile {\n  readonly lastModifiedDate: Date;\n}\n\nexport type UploadFileStatus = 'error' | 'success' | 'done' | 'uploading' | 'removed';\n\nexport interface HttpRequestHeader {\n  [key: string]: string;\n}\n\nexport interface UploadFile<T = any> {\n  uid: string;\n  size?: number;\n  name: string;\n  fileName?: string;\n  lastModified?: number;\n  lastModifiedDate?: Date;\n  url?: string;\n  status?: UploadFileStatus;\n  percent?: number;\n  thumbUrl?: string;\n  crossOrigin?: ImgHTMLAttributes['crossorigin'];\n  originFileObj?: FileType;\n  response?: T;\n  error?: any;\n  linkProps?: any;\n  type?: string;\n  xhr?: T;\n  preview?: string;\n}\n\nexport interface InternalUploadFile<T = any> extends UploadFile<T> {\n  originFileObj: FileType;\n}\n\nexport interface ShowUploadListInterface {\n  showRemoveIcon?: boolean;\n  showPreviewIcon?: boolean;\n  showDownloadIcon?: boolean;\n}\n\nexport interface UploadChangeParam<T = UploadFile> {\n  // https://github.com/ant-design/ant-design/issues/14420\n  file: T;\n  fileList: T[];\n  event?: { percent: number };\n}\n\nexport interface UploadLocale {\n  uploading?: string;\n  removeFile?: string;\n  downloadFile?: string;\n  uploadError?: string;\n  previewFile?: string;\n}\n\nexport type UploadType = 'drag' | 'select';\nexport type UploadListType = 'text' | 'picture' | 'picture-card';\nexport type UploadListProgressProps = Omit<ProgressProps, 'percent' | 'type'> & {\n  class?: string;\n  style?: CSSProperties;\n};\n\nexport type ItemRender<T = any> = (opt: {\n  originNode: VueNode;\n  file: UploadFile;\n  fileList: Array<UploadFile<T>>;\n  actions: {\n    download: () => void;\n    preview: () => void;\n    remove: () => void;\n  };\n}) => VueNode;\n\ntype PreviewFileHandler = (file: FileType | Blob) => PromiseLike<string>;\ntype TransformFileHandler = (\n  file: FileType,\n) => string | Blob | FileType | PromiseLike<string | Blob | FileType>;\ntype BeforeUploadValueType = void | boolean | string | Blob | FileType;\n\nfunction uploadProps<T = any>() {\n  return {\n    'capture': someType<boolean | 'user' | 'environment'>([Boolean, String]),\n    'type': stringType<UploadType>(),\n    'name': String,\n    'defaultFileList': arrayType<Array<UploadFile<T>>>(),\n    'fileList': arrayType<Array<UploadFile<T>>>(),\n    'action': someType<\n      string | ((file: FileType) => string) | ((file: FileType) => PromiseLike<string>)\n    >([String, Function],\n        ),\n    'directory': booleanType(),\n    'data': someType<\n      | Record<string, unknown>\n      | ((file: UploadFile<T>) => Record<string, unknown> | Promise<Record<string, unknown>>)\n    >([Object, Function],\n        ),\n    'method': stringType<'POST' | 'PUT' | 'PATCH' | 'post' | 'put' | 'patch'>(),\n    'headers': objectType<HttpRequestHeader>(),\n    'showUploadList': someType<boolean | ShowUploadListInterface>([Boolean, Object]),\n    'multiple': booleanType(),\n    'accept': String,\n    'beforeUpload':\n      functionType<\n        (\n          file: FileType,\n          FileList: FileType[],\n        ) => BeforeUploadValueType | Promise<BeforeUploadValueType>\n      >(),\n    'onChange': functionType<(info: UploadChangeParam<UploadFile<T>>) => void>(),\n    'onUpdate:fileList':\n      functionType<(fileList: UploadChangeParam<UploadFile<T>>['fileList']) => void>(),\n    'onDrop': functionType<(event: DragEvent) => void>(),\n    'listType': stringType<UploadListType>(),\n    'onPreview': functionType<(file: UploadFile<T>) => void>(),\n    'onDownload': functionType<(file: UploadFile<T>) => void>(),\n    'onReject': functionType<(fileList: FileType[]) => void>(),\n    'onRemove': functionType<(file: UploadFile<T>) => void | boolean | Promise<void | boolean>>(),\n    /** @deprecated Please use `onRemove` directly */\n    'remove': functionType<(file: UploadFile<T>) => void | boolean | Promise<void | boolean>>(),\n    'supportServerRender': booleanType(),\n    'disabled': booleanType(),\n    'prefixCls': String,\n    'customRequest': functionType<(options: RcCustomRequestOptions) => void>(),\n    'withCredentials': booleanType(),\n    'openFileDialogOnClick': booleanType(),\n    'locale': objectType<UploadLocale>(),\n    'id': String,\n    'previewFile': functionType<PreviewFileHandler>(),\n    /** @deprecated Please use `beforeUpload` directly */\n    'transformFile': functionType<TransformFileHandler>(),\n    'iconRender':\n      functionType<(opt: { file: UploadFile<T>; listType?: UploadListType }) => VueNode>(),\n    'isImageUrl': functionType<(file: UploadFile) => boolean>(),\n    'progress': objectType<UploadListProgressProps>(),\n    'itemRender': functionType<ItemRender<T>>(),\n    /** Config max count of `fileList`. Will replace current one when `maxCount` is 1 */\n    'maxCount': Number,\n    'height': someType([Number, String]),\n    'removeIcon': functionType<(opt: { file: UploadFile }) => VueNode>(),\n    'downloadIcon': functionType<(opt: { file: UploadFile }) => VueNode>(),\n    'previewIcon': functionType<(opt: { file: UploadFile }) => VueNode>(),\n  };\n}\n\nexport type UploadProps = Partial<ExtractPropTypes<ReturnType<typeof uploadProps>>>;\n\nexport interface UploadState<T = any> {\n  fileList: Array<UploadFile<T>>;\n  dragState: string;\n}\n\nfunction uploadListProps<T = any>() {\n  return {\n    listType: stringType<UploadListType>(),\n    onPreview: functionType<(file: UploadFile<T>) => void>(),\n    onDownload: functionType<(file: UploadFile<T>) => void>(),\n    onRemove: functionType<(file: UploadFile<T>) => void | boolean>(),\n    items: arrayType<Array<UploadFile<T>>>(),\n    progress: objectType<UploadListProgressProps>(),\n    prefixCls: stringType<string>(),\n    showRemoveIcon: booleanType(),\n    showDownloadIcon: booleanType(),\n    showPreviewIcon: booleanType(),\n    removeIcon: functionType<(opt: { file: UploadFile }) => VueNode>(),\n    downloadIcon: functionType<(opt: { file: UploadFile }) => VueNode>(),\n    previewIcon: functionType<(opt: { file: UploadFile }) => VueNode>(),\n    locale: objectType<UploadLocale>(undefined as UploadLocale),\n    previewFile: functionType<PreviewFileHandler>(),\n    iconRender:\n      functionType<(opt: { file: UploadFile<T>; listType?: UploadListType }) => VueNode>(),\n    isImageUrl: functionType<(file: UploadFile) => boolean>(),\n    appendAction: functionType<() => VueNode>(),\n    appendActionVisible: booleanType(),\n    itemRender: functionType<ItemRender<T>>(),\n  };\n}\n\nexport type UploadListProps = Partial<ExtractPropTypes<ReturnType<typeof uploadListProps>>>;\nexport { uploadListProps, uploadProps };\n"],"names":["someType","stringType","arrayType","booleanType","objectType","functionType"],"mappings":"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"}