UNPKG

tdesign-mobile-vue

Version:
1 lines 34.7 kB
{"version":3,"file":"useUpload.mjs","sources":["../../../src/upload/hooks/useUpload.ts"],"sourcesContent":["import { computed, h, ref, toRefs, ComputedRef } from 'vue';\nimport { isFunction, isString } from 'lodash-es';\nimport { SizeLimitObj, TdUploadProps, UploadChangeContext, UploadFile, UploadRemoveContext } from '../type';\nimport useVModel from '../../hooks/useVModel';\nimport {\n formatToUploadFile,\n getDisplayFiles,\n validateFile,\n upload,\n getFilesAndErrors,\n} from '../../_common/js/upload/main';\nimport {\n FileChangeReturn,\n InnerProgressContext,\n OnResponseErrorContext,\n SuccessContext,\n} from '../../_common/js/upload/types';\nimport { getFileList, getFileUrlByFileRaw } from '../../_common/js/upload/utils';\n\n// @ts-ignore\nexport type ValidateParams = Parameters<TdUploadProps['onValidate']>[0];\n\nexport default function useUpload(props: TdUploadProps) {\n const inputRef = ref<HTMLInputElement>();\n const { disabled, autoUpload, isBatchUpload, multiple, files, modelValue, defaultFiles } = toRefs(props);\n // @ts-ignore\n const [uploadValue, setUploadValue] = useVModel(files, modelValue, defaultFiles.value, props.onChange, 'files');\n const xhrReq = ref<{ files: UploadFile[]; xhrReq: XMLHttpRequest }[]>([]);\n const toUploadFiles = ref<UploadFile[]>([]);\n const sizeOverLimitMessage = ref('');\n\n const uploading = ref(false);\n\n // 文件列表显示的内容(自动上传和非自动上传有所不同)\n const displayFiles: ComputedRef<UploadFile[]> = computed(() => {\n return getDisplayFiles({\n multiple: multiple?.value || false,\n toUploadFiles: toUploadFiles.value,\n uploadValue: uploadValue.value as UploadFile[],\n autoUpload: autoUpload?.value || false,\n isBatchUpload: isBatchUpload?.value || false,\n });\n });\n\n const uploadFilePercent = (params: { file: UploadFile; percent: number }) => {\n const { file, percent } = params;\n const index = toUploadFiles.value.findIndex((item) => file.raw === item.raw);\n toUploadFiles.value[index] = { ...toUploadFiles.value[index], percent };\n };\n\n const updateFilesProgress = () => {\n if (props.autoUpload) {\n toUploadFiles.value = [...toUploadFiles.value];\n }\n };\n\n const onResponseError = (p: OnResponseErrorContext) => {\n if (!p || !p.files || !p.files[0]) return;\n const { response, event, files } = p;\n updateFilesProgress();\n props.onOneFileFail?.({\n e: event,\n file: files?.[0],\n currentFiles: files,\n failedFiles: files,\n response,\n });\n // 单选或多文件替换,需要清空上一次上传成功的文件\n if (!props.multiple || props.isBatchUpload) {\n setUploadValue([], {\n trigger: 'progress-fail',\n e: p.event,\n file: p.files[0],\n });\n }\n };\n\n // 多文件上传场景,单个文件进度\n const onResponseProgress = (p: InnerProgressContext) => {\n updateFilesProgress();\n props.onProgress?.({\n e: p.event,\n file: p.file,\n currentFiles: p.files as UploadFile[],\n percent: p.percent,\n type: p.type,\n XMLHttpRequest: p.XMLHttpRequest,\n });\n };\n\n // 多文件上传场景,单个文件上传成功后\n const onResponseSuccess = (p: SuccessContext) => {\n // 只有多个上传请求同时触发时才需 onOneFileSuccess\n if (props.multiple && !props.uploadAllFilesInOneRequest) {\n updateFilesProgress();\n props.onOneFileSuccess?.({\n e: p.event,\n file: (p.files as UploadFile[])[0],\n response: p.response,\n });\n }\n };\n\n // 处理正则表达式\n const t = function <T>(pattern: T, ...args: any[]) {\n const [data] = args;\n if (isString(pattern)) {\n if (!data) return pattern;\n const regular = /\\{\\s*([\\w-]+)\\s*\\}/g;\n const translated = pattern.replace(regular, (match, key) => {\n if (data) {\n return String(data[key]);\n }\n return '';\n });\n return translated;\n }\n if (isFunction(pattern)) {\n // 重要:组件的渲染必须存在参数 h,不能移除\n if (!args.length) return pattern(h);\n return pattern(...args);\n }\n return '';\n };\n\n function getSizeLimitError(sizeLimitObj: SizeLimitObj): string {\n const limit = sizeLimitObj;\n return limit.message\n ? t(limit.message, { sizeLimit: limit.size })\n : `${t('', { sizeLimit: limit.size })} ${limit.unit}`;\n }\n\n const handleNotAutoUpload = (toFiles: UploadFile[]) => {\n const tmpFiles =\n props.multiple && !isBatchUpload?.value ? (uploadValue?.value as UploadFile[]).concat(toFiles) : toFiles;\n if (!tmpFiles.length) return;\n const list = tmpFiles.map(\n (file) =>\n new Promise((resolve) => {\n getFileUrlByFileRaw(file.raw as File).then((url) => {\n resolve({ ...file, url: file.url || url });\n });\n }),\n );\n Promise.all(list).then((files) => {\n setUploadValue(files as UploadFile[], {\n trigger: 'add',\n index: (uploadValue.value as UploadFile[]).length,\n file: toFiles[0],\n files: toFiles,\n });\n });\n toUploadFiles.value = [];\n };\n\n const onFileChange = (files: File[]) => {\n if (disabled?.value) return;\n const params = { currentSelectedFiles: formatToUploadFile([...files], props.format) };\n props.onSelectChange?.([...files], params);\n validateFile({\n uploadValue: uploadValue.value as UploadFile[],\n files: [...files],\n allowUploadDuplicateFile: props.allowUploadDuplicateFile,\n max: props.max,\n sizeLimit: props.sizeLimit,\n isBatchUpload: isBatchUpload?.value,\n autoUpload: autoUpload?.value,\n format: props.format,\n beforeUpload: props.beforeUpload,\n beforeAllFilesUpload: props.beforeAllFilesUpload,\n }).then((args) => {\n // 自定义全文件校验不通过\n if (args.validateResult?.type === 'BEFORE_ALL_FILES_UPLOAD') {\n const params: ValidateParams = { type: 'BEFORE_ALL_FILES_UPLOAD', files: args.files as UploadFile[] };\n props.onValidate?.(params);\n return;\n }\n // 文件数量校验不通过\n if (args.lengthOverLimit) {\n const params: ValidateParams = { type: 'FILES_OVER_LENGTH_LIMIT', files: args.files as UploadFile[] };\n props.onValidate?.(params);\n if (!(args.files as UploadFile[]).length) return;\n }\n // 过滤相同的文件名\n if (args.hasSameNameFile) {\n const params: ValidateParams = { type: 'FILTER_FILE_SAME_NAME', files: args.files as UploadFile[] };\n props.onValidate?.(params);\n }\n // 文件大小校验结果处理(已过滤超出限制的文件)\n if (args.fileValidateList instanceof Array) {\n const { sizeLimitErrors, beforeUploadErrorFiles, toFiles } = getFilesAndErrors(\n args.fileValidateList,\n // @ts-ignore\n getSizeLimitError,\n );\n const tmpWaitingFiles = autoUpload?.value ? toFiles : toUploadFiles.value.concat(toFiles);\n toUploadFiles.value = tmpWaitingFiles;\n props.onWaitingUploadFilesChange?.({ files: tmpWaitingFiles, trigger: 'validate' });\n // 文件大小处理\n if (sizeLimitErrors[0]) {\n sizeOverLimitMessage.value = sizeLimitErrors[0]?.file?.response?.error;\n props.onValidate?.({\n type: 'FILE_OVER_SIZE_LIMIT',\n files: sizeLimitErrors.map((t) => t.file) as FileChangeReturn[],\n });\n } else {\n sizeOverLimitMessage.value = '';\n // 自定义方法 beforeUpload 拦截的文件\n if (beforeUploadErrorFiles.length) {\n const params: ValidateParams = { type: 'CUSTOM_BEFORE_UPLOAD', files: beforeUploadErrorFiles };\n props.onValidate?.(params);\n }\n }\n // 如果是自动上传\n if (autoUpload?.value) {\n uploadFiles(tmpWaitingFiles);\n } else {\n handleNotAutoUpload(tmpWaitingFiles);\n }\n }\n });\n\n // 清空 <input type=\"file\"> 元素的文件,避免出现重复文件无法选择的情况\n if (inputRef.value) {\n inputRef.value.value = '';\n }\n };\n\n const onNormalFileChange = (e: Event) => {\n const fileList = getFileList((e.target as HTMLInputElement).files as FileList);\n onFileChange?.(fileList);\n };\n\n /**\n * 上传文件。对外暴露方法,修改时需谨慎\n * @param toFiles 本地上传的文件列表\n */\n function uploadFiles(toFiles?: UploadFile[]) {\n const notUploadedFiles = (uploadValue.value as UploadFile[]).filter((t) => t.status !== 'success');\n const files = autoUpload?.value ? toFiles || toUploadFiles.value : notUploadedFiles;\n if (!files || !files.length) return;\n uploading.value = true;\n xhrReq.value = [];\n upload({\n action: props.action,\n headers: props.headers,\n method: props.method,\n name: props.name,\n withCredentials: props.withCredentials,\n uploadedFiles: uploadValue.value as UploadFile[],\n toUploadFiles: files,\n multiple: props.multiple,\n isBatchUpload: isBatchUpload?.value,\n autoUpload: props.autoUpload,\n uploadAllFilesInOneRequest: props.uploadAllFilesInOneRequest,\n useMockProgress: props.useMockProgress,\n data: props.data,\n mockProgressDuration: props.mockProgressDuration,\n requestMethod: props.requestMethod,\n formatRequest: props.formatRequest,\n formatResponse: props.formatResponse,\n onResponseProgress,\n onResponseSuccess,\n onResponseError,\n setXhrObject: (xhr) => {\n if (xhr.files[0]?.raw && xhrReq.value.find((item) => item.files[0]?.raw === xhr.files[0].raw)) return;\n xhrReq.value = xhrReq.value.concat(xhr);\n },\n }).then(\n // 多文件场景时,全量文件完成后\n ({ status, data, list, failedFiles }) => {\n uploading.value = false;\n if (status === 'success') {\n if (props.autoUpload) {\n setUploadValue([...(data?.files as UploadFile[])], {\n trigger: 'add',\n file: (data?.files as UploadFile[])[0],\n });\n }\n xhrReq.value = [];\n props.onSuccess?.({\n fileList: data?.files,\n currentFiles: files,\n file: files[0],\n // 只有全部请求完成后,才会存在该字段\n // @ts-ignore\n results: list?.map((t) => t.data),\n // 单文件单请求有一个 response,多文件多请求有多个 response\n response: data?.response || list?.map((t) => t.data?.response),\n XMLHttpRequest: data?.XMLHttpRequest,\n });\n } else if (failedFiles?.[0]) {\n props.onFail?.({\n e: data?.event,\n file: failedFiles[0],\n failedFiles,\n currentFiles: files,\n response: data?.response,\n XMLHttpRequest: data?.XMLHttpRequest,\n });\n }\n\n // 非自动上传,文件都在 uploadValue,不涉及 toUploadFiles\n if (autoUpload?.value) {\n toUploadFiles.value = failedFiles as UploadFile[];\n props.onWaitingUploadFilesChange?.({ files: failedFiles as UploadFile[], trigger: 'uploaded' });\n }\n },\n );\n }\n\n function onInnerRemove(p: UploadRemoveContext) {\n sizeOverLimitMessage.value = '';\n p.e.stopPropagation?.();\n const changePrams: UploadChangeContext = {\n e: p.e,\n trigger: 'remove',\n index: p.index,\n file: p.file,\n };\n // remove all files for batchUpload\n if (props.isBatchUpload || !props.multiple) {\n toUploadFiles.value = [];\n props.onWaitingUploadFilesChange?.({ files: [], trigger: 'remove' });\n setUploadValue([], changePrams);\n } else if (!props.autoUpload) {\n (uploadValue.value as UploadFile[]).splice(p.index, 1);\n setUploadValue([...(uploadValue.value as UploadFile[])], changePrams);\n } else {\n // autoUpload 场景下, p.index < uploadValue.length 表示移除已经上传成功的文件;反之表示移除待上传列表文件\n // eslint-disable-next-line\n if (p.index < (uploadValue.value as UploadFile[]).length) {\n (uploadValue.value as UploadFile[]).splice(p.index, 1);\n setUploadValue([...(uploadValue.value as UploadFile[])], changePrams);\n } else {\n // @ts-ignore\n toUploadFiles.value.splice(p.index - uploadValue.value.length, 1);\n toUploadFiles.value = [...toUploadFiles.value];\n props.onWaitingUploadFilesChange?.({ files: [...toUploadFiles.value], trigger: 'remove' });\n }\n }\n props.onRemove?.(p);\n }\n\n const cancelUpload = (context?: { file?: UploadFile; e?: MouseEvent }) => {\n xhrReq.value?.forEach((item) => {\n item.xhrReq?.abort();\n });\n uploading.value = false;\n\n if (autoUpload?.value) {\n toUploadFiles.value = toUploadFiles.value.map((item) => ({ ...item, status: 'waiting' }));\n } else {\n setUploadValue(\n (uploadValue.value as UploadFile[]).map((item) => {\n if (item.status !== 'success') {\n return { ...item, status: 'waiting' };\n }\n return item;\n }),\n { trigger: 'abort' },\n );\n }\n\n if (context?.file && !autoUpload?.value) {\n onInnerRemove?.({ file: context.file, e: context.e as MouseEvent, index: 0 });\n }\n\n props.onCancelUpload?.();\n };\n\n return {\n toUploadFiles,\n uploadValue,\n displayFiles,\n sizeOverLimitMessage,\n uploading,\n inputRef,\n disabled,\n xhrReq,\n uploadFilePercent,\n uploadFiles,\n onFileChange,\n onNormalFileChange,\n onInnerRemove,\n cancelUpload,\n };\n}\n"],"names":["useUpload","props","inputRef","ref","_toRefs","toRefs","disabled","autoUpload","isBatchUpload","multiple","files","modelValue","defaultFiles","_useVModel","useVModel","value","onChange","_useVModel2","_slicedToArray","uploadValue","setUploadValue","xhrReq","toUploadFiles","sizeOverLimitMessage","uploading","displayFiles","computed","getDisplayFiles","uploadFilePercent","params","file","percent","index","findIndex","item","raw","_objectSpread","updateFilesProgress","_toConsumableArray","onResponseError","p","_props$onOneFileFail","response","event","onOneFileFail","call","e","currentFiles","failedFiles","trigger","onResponseProgress","_props$onProgress","onProgress","type","XMLHttpRequest","onResponseSuccess","uploadAllFilesInOneRequest","_props$onOneFileSucce","onOneFileSuccess","t","pattern","_len","arguments","length","args","Array","_key","data","isString","regular","translated","replace","match","key","String","isFunction","h","apply","getSizeLimitError","sizeLimitObj","limit","message","sizeLimit","size","unit","handleNotAutoUpload","toFiles","tmpFiles","concat","list","map","Promise","resolve","getFileUrlByFileRaw","then","url","all","onFileChange","_props$onSelectChange","currentSelectedFiles","formatToUploadFile","format","onSelectChange","validateFile","allowUploadDuplicateFile","max","beforeUpload","beforeAllFilesUpload","_args$validateResult","validateResult","_props$onValidate","onValidate","lengthOverLimit","_props$onValidate2","hasSameNameFile","_props$onValidate3","fileValidateList","_props$onWaitingUploa","_getFilesAndErrors","getFilesAndErrors","sizeLimitErrors","beforeUploadErrorFiles","tmpWaitingFiles","onWaitingUploadFilesChange","_sizeLimitErrors$","_props$onValidate4","error","_props$onValidate5","uploadFiles","onNormalFileChange","fileList","getFileList","target","notUploadedFiles","filter","status","upload","action","headers","method","name","withCredentials","uploadedFiles","useMockProgress","mockProgressDuration","requestMethod","formatRequest","formatResponse","setXhrObject","xhr","_xhr$files$","find","_item$files$","_ref","_props$onSuccess","onSuccess","results","_t2$data","_props$onFail","onFail","_props$onWaitingUploa2","onInnerRemove","_p$e$stopPropagation","_p$e","_props$onRemove","stopPropagation","changePrams","_props$onWaitingUploa3","splice","_props$onWaitingUploa4","onRemove","cancelUpload","context","_xhrReq$value","_props$onCancelUpload","forEach","_item$xhrReq","abort","onCancelUpload"],"mappings":"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"}