{"version":3,"file":"useUpload.mjs","sources":["../../../../common/js/upload/xhr.ts","../../../../common/js/upload/main.ts","../../../../components/upload/hooks/useUpload.ts"],"sourcesContent":["import { isFunction } from 'lodash-es';\n/* eslint-disable no-param-reassign */\nimport log from '../log/log';\nimport { UploadFile, XhrOptions } from './types';\nimport { getCurrentDate } from './utils';\n\nexport default function xhr({\n  method = 'POST',\n  action,\n  withCredentials = false,\n  headers = {},\n  data = {},\n  file,\n  files = [],\n  name = 'file',\n  useMockProgress = true,\n  mockProgressDuration = 300,\n  formatRequest,\n  onError,\n  onProgress,\n  onSuccess,\n}: XhrOptions) {\n  // support files\n  const innerFiles: UploadFile[] = files || [];\n  let percent = 0;\n\n  // eslint-disable-next-line no-shadow\n  const xhr = new XMLHttpRequest();\n  if (withCredentials) {\n    xhr.withCredentials = true;\n  }\n\n  let timer1: NodeJS.Timeout;\n  let timer2: NodeJS.Timeout;\n  if (useMockProgress && files[0]?.status === 'progress') {\n    // 超过 500 毫秒再开启虚拟进度\n    const timer2 = setTimeout(() => {\n      // 只有真实进度一直不存在时才需要模拟进度\n      timer1 = setInterval(() => {\n        if (percent + 10 < 100) {\n          percent = Math.max(percent + 10, percent);\n          if (files[0] && percent !== files[0].percent) {\n            files[0].percent = percent;\n            onProgress({\n              percent,\n              file: file || innerFiles[0],\n              files: innerFiles.map((file) => ({ ...file, percent })),\n              type: 'mock',\n              XMLHttpRequest: xhr,\n            });\n          }\n        } else {\n          clearInterval(timer1);\n        }\n      }, mockProgressDuration);\n      clearTimeout(timer2);\n    }, mockProgressDuration);\n  }\n\n  let requestData: { [key: string]: any } = {};\n  if (data) {\n    const extraData = isFunction(data) ? data(innerFiles) : data;\n    Object.assign(requestData, extraData);\n  }\n  innerFiles.forEach((file, index) => {\n    const fileField = innerFiles.length > 1 ? `${name}[${index}]` : name;\n    requestData[fileField] = file.raw;\n  });\n  if (innerFiles.length === 1) {\n    requestData[name] = innerFiles[0].raw;\n  } else {\n    requestData[name] = innerFiles.map((file) => file.raw);\n  }\n  requestData.length = innerFiles.length;\n\n  if (formatRequest) {\n    requestData = formatRequest(requestData);\n  }\n\n  // set send data\n  const formData = new FormData();\n  Object.keys(requestData).forEach((key) => {\n    formData.append(key, requestData[key]);\n  });\n\n  xhr.open(method, action, true);\n  // custom request headers\n  Object.keys(headers).forEach((key) => {\n    xhr.setRequestHeader(key, headers[key]);\n  });\n\n  xhr.onerror = (event: ProgressEvent) => {\n    onError({ event, file, files: innerFiles, XMLHttpRequest: xhr, });\n    clearInterval(timer1);\n    clearTimeout(timer2);\n  };\n\n  xhr.ontimeout = (event) => {\n    onError({ event, file, files: innerFiles, XMLHttpRequest: xhr, });\n  };\n\n  if (xhr.upload) {\n    xhr.upload.onprogress = (event: ProgressEvent) => {\n      let realPercent = 0;\n      if (event.total > 0) {\n        realPercent = Math.round((event.loaded / event.total) * 100);\n      }\n      percent = Math.max(realPercent, percent);\n      if (percent !== realPercent && innerFiles[0]?.percent !== percent) {\n        const progressFiles = innerFiles.map((item) => ({ ...item, percent }));\n        onProgress({\n          event,\n          percent,\n          file: file || progressFiles[0],\n          files: progressFiles,\n          type: 'real',\n          XMLHttpRequest: xhr,\n        });\n      }\n    };\n  }\n\n  // eslint-disable-next-line consistent-return\n  xhr.onload = (event: ProgressEvent) => {\n    let response: { [key: string]: any } = {};\n    response.XMLHttpRequest = xhr;\n    const isFail = xhr.status < 200 || xhr.status >= 300;\n    if (isFail) {\n      return onError({\n        event,\n        file,\n        files: innerFiles,\n        response,\n        XMLHttpRequest: xhr,\n      });\n    }\n    const text = xhr.responseText || xhr.response;\n    try {\n      response = JSON.parse(text);\n    } catch (e) {\n      response = text;\n      log.error('Upload', 'response does not a valid json');\n    }\n    clearInterval(timer1);\n    clearTimeout(timer2);\n    innerFiles.forEach((file) => {\n      file.percent = 100;\n      file.status = 'success';\n      // 如果上传请求返回结果没有上传日期，则使用电脑当前日期显示\n      file.uploadTime = response?.uploadTime || getCurrentDate();\n    });\n    if (typeof response === 'object') {\n      response.XMLHttpRequest = xhr;\n    }\n    onSuccess({\n      event,\n      file: file || innerFiles[0],\n      files: [...innerFiles],\n      XMLHttpRequest: xhr,\n      response,\n    });\n  };\n\n  xhr.send(formData);\n  // @ts-ignore\n  xhr.upload.requestParams = requestData;\n  // @ts-ignore\n  xhr.upload.requestHeaders = headers;\n\n  return xhr;\n}\n","import { isFunction, isNumber } from 'lodash-es';\n/* eslint-disable no-param-reassign */\nimport { getCurrentDate, isOverSizeLimit } from './utils';\nimport xhr from './xhr';\nimport log from '../log/log';\nimport {\n  UploadFile,\n  SizeLimitObj,\n  FileChangeParams,\n  FileChangeReturn,\n  RequestMethodResponse,\n  HandleUploadParams,\n  SuccessContext,\n  handleSuccessParams,\n  UploadTriggerUploadText,\n  ErrorContext,\n  ResponseType,\n} from './types';\n\nexport interface BeforeUploadExtra {\n  /** 图片文件大小限制 */\n  sizeLimit?: number | SizeLimitObj;\n  /** 上传文件之前的钩子，参数为上传的文件，返回值决定是否上传 */\n  beforeUpload?: (file: UploadFile) => boolean | Promise<boolean>;\n}\n\nexport type BeforeUploadPromiseList = [Promise<SizeLimitObj>, undefined | Promise<boolean>]\n\nexport function handleBeforeUpload(\n  file: UploadFile, params: BeforeUploadExtra,\n): Promise<[SizeLimitObj, boolean]> {\n  const { sizeLimit, beforeUpload } = params;\n  // 文件大小校验\n  const sizePromise = new Promise<SizeLimitObj>((resolve) => {\n    let result: SizeLimitObj = null;\n    if (sizeLimit) {\n      const sizeLimitObj: SizeLimitObj = isNumber(sizeLimit)\n        ? { size: sizeLimit, unit: 'KB' }\n        : sizeLimit;\n      const limit = isOverSizeLimit(file.size, sizeLimitObj.size, sizeLimitObj.unit);\n      if (limit) {\n        result = sizeLimitObj;\n      }\n    }\n    resolve(result);\n  });\n\n  // 自定义校验\n  const promiseList: BeforeUploadPromiseList = [sizePromise, undefined];\n  if (isFunction(beforeUpload)) {\n    const r = beforeUpload(file);\n    const p = r instanceof Promise ? r : (new Promise<boolean>((resolve) => resolve(r)));\n    promiseList[1] = p;\n  }\n\n  // 同时进行文件大小校验和自定义校验函数\n  return new Promise((resolve) => {\n    Promise.all(promiseList).then((r) => {\n      resolve(r);\n    });\n  });\n}\n\nexport interface OnErrorParams extends ErrorContext {\n  formatResponse?: HandleUploadParams['formatResponse'];\n}\n\nexport function handleError(options: OnErrorParams) {\n  const { event, files, response, XMLHttpRequest, formatResponse } = options;\n  let res = response;\n  if (isFunction(formatResponse)) {\n    res = formatResponse(response, { file: files[0], currentFiles: files });\n  }\n  files.forEach((file) => {\n    file.status = 'fail';\n    file.response = res;\n  });\n  return { response: res, event, files, XMLHttpRequest };\n}\n\nexport function handleSuccess(params: handleSuccessParams) {\n  const { event, files, response, XMLHttpRequest } = params;\n  if (files?.length <= 0) {\n    log.error('Upload', 'Empty File in Success Callback');\n  }\n  files.forEach((file) => {\n    file.percent = 100;\n    file.status = 'success';\n    delete file.response?.error;\n  });\n  const res = response;\n  files[0].url = res.url || files[0].url;\n  return { response: res, event, files, XMLHttpRequest };\n}\n\nexport type UploadRequestReturn = {\n  status?: 'fail' | 'success';\n  /** 上传失败的文件，需等待继续上传 */\n  failedFiles?: UploadFile[];\n  data?: SuccessContext;\n  /** 批量文件上传，一个文件一个请求的场景下，响应结果的列表 */\n  list?: UploadRequestReturn[];\n}\n\nexport function handleRequestMethodResponse(res: RequestMethodResponse) {\n  if (!res) {\n    log.error('Upload', '`requestMethodResponse` is required.');\n    return false;\n  }\n  if (!res.status) {\n    log.error('Upload', '`requestMethodResponse.status` is missing, which value only can be `success` or `fail`');\n    return false;\n  }\n  if (!['success', 'fail'].includes(res.status)) {\n    log.error('Upload', '`requestMethodResponse.status` must be `success` or `fail`, examples `{ status: \\'success\\', response: { url: \\'\\' } }`');\n    return false;\n  }\n  if (res.status === 'success' && (!res.response || (!res.response.url && !res.response.files))) {\n    log.warn('Upload', '`requestMethodResponse.response.url` or `requestMethodResponse.response.files` is required if `status` is `success`');\n  }\n  return true;\n}\n\n/**\n * 一次上传请求的返回结果\n */\nexport function uploadOneRequest(params: HandleUploadParams): Promise<UploadRequestReturn> {\n  const { action, toUploadFiles, requestMethod } = params;\n  return new Promise<UploadRequestReturn>((resolve) => {\n    if (!action && !requestMethod) {\n      log.error('Upload', 'one of action and requestMethod must be exist.');\n      resolve({});\n      return;\n    }\n    if (!toUploadFiles || !toUploadFiles.length) {\n      log.warn('Upload', 'No files need to be uploaded');\n      resolve({});\n      return;\n    }\n    toUploadFiles.forEach((file) => {\n      file.status = 'progress';\n    });\n    // 自定义上传方法\n    if (requestMethod) {\n      requestMethod(params.multiple ? toUploadFiles : toUploadFiles[0]).then((res) => {\n        if (!handleRequestMethodResponse(res)) {\n          resolve({});\n          return;\n        }\n        let response = (res.response || {}) as ResponseType;\n        if (isFunction(params.formatResponse)) {\n          response = params.formatResponse(response, { file: toUploadFiles[0], currentFiles: toUploadFiles });\n        }\n        if (res.status === 'fail') {\n          response.error = res.error || response.error;\n        }\n        let resultFiles: UploadFile[] = [];\n        if (res.status === 'success' && response.files) {\n          // 一个请求上传并返回多个文件\n          resultFiles = response.files.map((file: UploadFile) => {\n            const fileInfo = toUploadFiles.find((toFile) => (\n              (file.name && toFile.name === file.name) || (file.raw && toFile.raw === file.raw)\n            ));\n            return {\n              ...fileInfo,\n              ...file,\n              status: res.status,\n              response,\n            };\n          });\n        } else {\n          // 一个请求上传并返回一个文件\n          toUploadFiles.forEach((file) => {\n            file.status = res.status;\n            file.response = response;\n            file.url = response.url;\n            file.percent = res.status === 'success' ? 100 : 0;\n            // 如果上传请求返回结果没有上传日期，则使用电脑当前日期显示\n            file.uploadTime = response?.uploadTime || getCurrentDate();\n          });\n          resultFiles = toUploadFiles;\n        }\n        const result = {\n          response,\n          file: resultFiles[0],\n          files: resultFiles,\n        };\n        if (res.status === 'success') {\n          params.onResponseSuccess?.(result);\n        } else if (res.status === 'fail') {\n          params.onResponseError?.(result);\n        }\n        resolve({\n          status: res.status,\n          data: result,\n        });\n      });\n    } else {\n      const xhrReq = xhr({\n        action: params.action,\n        files: params.toUploadFiles,\n        useMockProgress: params.useMockProgress,\n        mockProgressDuration: params.mockProgressDuration,\n        onError: (p: ErrorContext) => {\n          const r = handleError({ ...p, formatResponse: params.formatResponse });\n          params.onResponseError?.(r);\n          resolve({ status: 'fail', data: r });\n        },\n        onProgress: params.onResponseProgress,\n        onSuccess: (p: SuccessContext) => {\n          const { formatResponse } = params;\n          let res = p.response;\n          if (isFunction(formatResponse)) {\n            res = formatResponse(p.response, {\n              file: p.file,\n              currentFiles: p.files,\n            });\n          }\n          if (res.error) {\n            const r = handleError({ ...p, response: res });\n            params.onResponseError?.(r);\n            resolve({ status: 'fail', data: r });\n          } else {\n            p.file.response = res;\n            p.files[0].response = res;\n            const r = handleSuccess({ ...p, response: res });\n            params.onResponseSuccess?.(r);\n            resolve({ status: 'success', data: r });\n          }\n        },\n        formatRequest: params.formatRequest,\n        data: params.data,\n        name: params.name,\n        headers: params.headers,\n        withCredentials: params.withCredentials,\n        method: params.method,\n      });\n      params.setXhrObject?.({\n        files: params.toUploadFiles,\n        xhrReq,\n      });\n    }\n  });\n}\n\nfunction updateUploadedFiles(uploadFiles: UploadFile[], resultFiles: UploadFile[]) {\n  const existFiles = uploadFiles.filter((t) => t.url);\n  const newFiles = existFiles;\n  for (let i = 0, len = resultFiles.length; i < len; i++) {\n    const file = resultFiles[i];\n    const index = uploadFiles.findIndex((item) => (\n      (item.raw && item.raw === file.raw) || (item.name && item.name === file.name)\n    ));\n    const tmpFile = index >= 0 ? { ...uploadFiles[index], ...file } : file;\n    newFiles.push(tmpFile);\n  }\n  return newFiles;\n}\n\n/**\n * 可能单个文件上传，也可能批量文件一次性上传\n * 返回上传成功或上传失败的文件列表\n */\nexport function upload(params: HandleUploadParams):\nPromise<UploadRequestReturn> {\n  const { uploadAllFilesInOneRequest, toUploadFiles, uploadedFiles, isBatchUpload } = params;\n  // 一批文件上传，部分文件失败，重新上传失败的文件\n  const thisUploadFiles = toUploadFiles.filter((t) => (\n    !t.response || (t.response && !t.response.error)\n  ));\n  return new Promise((resolve) => {\n    // 所有文件一次性上传\n    if (uploadAllFilesInOneRequest || !params.multiple) {\n      uploadOneRequest(params).then((r) => {\n        if (r.status === 'success') {\n          r.data.files = isBatchUpload || !params.multiple\n            ? r.data.files\n            : updateUploadedFiles(uploadedFiles, r.data.files);\n        }\n        const failedFiles = r.status === 'fail' ? r.data.files : [];\n        resolve({ ...r, failedFiles });\n      });\n      return;\n    }\n    // 一个文件一个文件上传\n    const list = thisUploadFiles.map((file) => (\n      uploadOneRequest({ ...params, toUploadFiles: [file] })\n    ));\n    Promise.all(list).then((arr) => {\n      const files: UploadFile[] = [];\n      const failedFiles: UploadFile[] = [];\n      arr.forEach((one) => {\n        if (one.status === 'success') {\n          files.push(one.data.files[0]);\n        } else if (one.status === 'fail') {\n          failedFiles.push(one.data.files[0]);\n        }\n      });\n      const tFiles = params.autoUpload\n        ? uploadedFiles.concat(files)\n        : uploadedFiles;\n      const newFiles = isBatchUpload || !params.multiple ? files : tFiles;\n      resolve({\n        status: files.length ? 'success' : 'fail',\n        data: {\n          files: newFiles,\n        },\n        // 上传失败的文件，需等待继续上传\n        failedFiles,\n        list: arr,\n      });\n    });\n  });\n}\n\nexport function formatToUploadFile(\n  files: File[],\n  format: FileChangeParams['format'],\n  status: UploadFile['status'] = undefined,\n  percent = 0,\n) {\n  return files.map((fileRaw: File) => {\n    let file: UploadFile = fileRaw;\n    if (isFunction(format)) {\n      file = format(fileRaw);\n    }\n    const uploadFile: UploadFile = {\n      raw: fileRaw,\n      lastModified: fileRaw.lastModified,\n      name: fileRaw.name,\n      size: fileRaw.size,\n      type: fileRaw.type,\n      percent,\n      status,\n      ...file,\n    };\n    return uploadFile;\n  });\n}\n\nexport function validateFile(\n  params: FileChangeParams\n): Promise<FileChangeReturn> {\n  const { files, uploadValue, max, allowUploadDuplicateFile } = params;\n  return new Promise((resolve) => {\n    // 是否允许相同的文件名存在\n    let tmpFiles = files.filter((file) => {\n      const sameNameFile = uploadValue.find((t) => t.name === file.name);\n      return allowUploadDuplicateFile || !sameNameFile;\n    });\n\n    let hasSameNameFile = false;\n    if (tmpFiles.length < files.length) {\n      hasSameNameFile = true;\n    }\n    if (!tmpFiles.length) {\n      const tFiles = formatToUploadFile(files, params.format, params.autoUpload ? 'progress' : 'waiting');\n      resolve({ hasSameNameFile, file: tFiles?.[0], files: tFiles, validateResult: { type: 'FILTER_FILE_SAME_NAME' } });\n      return;\n    }\n    // 上传文件数量限制\n    let lengthOverLimit = false;\n    if (max && tmpFiles.length && !params.isBatchUpload) {\n      const tmpFilesLenToBeAdded = tmpFiles.length;\n      tmpFiles = tmpFiles.slice(0, max - uploadValue.length);\n      if (tmpFilesLenToBeAdded + uploadValue.length > max) {\n        lengthOverLimit = true;\n      }\n    }\n\n    // 格式化文件对象\n    const formattedFiles = formatToUploadFile(tmpFiles, params.format, params.autoUpload ? 'progress' : 'waiting');\n\n    // 全量文件，一波校验，整体上传 或 终止上传\n    let allFileValidatePromise;\n    if (params.beforeAllFilesUpload) {\n      const r = params.beforeAllFilesUpload?.(formattedFiles);\n      allFileValidatePromise = r instanceof Promise ? r : new Promise((resolve) => resolve(r));\n    }\n\n    // 单文件合法性校验，一个文件校验不通过其他文件可继续上传\n    const promiseList = formattedFiles.map((file: UploadFile) => new Promise((resolve) => {\n      handleBeforeUpload(\n        file,\n        { beforeUpload: params.beforeUpload, sizeLimit: params.sizeLimit },\n      ).then(([sizeResult, customResult]) => {\n        if (sizeResult) {\n          resolve({ file, validateResult: { type: 'FILE_OVER_SIZE_LIMIT', extra: sizeResult } });\n        } else if (customResult === false) {\n          resolve({ file, validateResult: { type: 'CUSTOM_BEFORE_UPLOAD' } });\n        }\n        resolve({ file });\n      });\n    }));\n    Promise.all([allFileValidatePromise].concat(promiseList)).then((results) => {\n      const [allFilesResult, ...others] = results;\n      // 如果 beforeAllFilesUpload 校验未通过\n      if (allFilesResult === false) {\n        resolve({\n          lengthOverLimit,\n          hasSameNameFile,\n          validateResult: { type: 'BEFORE_ALL_FILES_UPLOAD' },\n          files: formattedFiles,\n        });\n      } else {\n        resolve({\n          lengthOverLimit,\n          hasSameNameFile,\n          fileValidateList: others,\n          files: formattedFiles,\n        });\n      }\n    });\n  });\n}\n\nexport function getFilesAndErrors(fileValidateList: FileChangeReturn[], getError: (p: {[key: string]: any }) => string) {\n  const sizeLimitErrors: FileChangeReturn[] = [];\n  const beforeUploadErrorFiles: UploadFile[] = [];\n  const toFiles: UploadFile[] = [];\n  fileValidateList.forEach((oneFile) => {\n    if (oneFile.validateResult?.type === 'CUSTOM_BEFORE_UPLOAD') {\n      beforeUploadErrorFiles.push(oneFile.file);\n      return;\n    }\n    if (oneFile.validateResult?.type === 'FILE_OVER_SIZE_LIMIT') {\n      if (!oneFile.file.response) {\n        oneFile.file.response = {};\n      }\n      oneFile.file.response.error = oneFile.file.response.error\n      || getError(oneFile.validateResult.extra);\n      sizeLimitErrors.push(oneFile);\n      return;\n    }\n    toFiles.push(oneFile.file);\n  });\n\n  return { sizeLimitErrors, beforeUploadErrorFiles, toFiles };\n}\n\n/**\n * 获取文件上传触发元素文本 在全局配置中的字段\n */\nexport function getTriggerTextField(p: {\n  status: 'success' | 'fail' | 'progress' | 'waiting',\n  multiple: boolean,\n  autoUpload: boolean;\n  isBatchUpload: boolean;\n}): keyof UploadTriggerUploadText {\n  if (p.isBatchUpload && p.status) return 'reupload';\n  if (p.status === 'fail') return 'reupload';\n  if (p.status === 'progress') return 'uploading';\n  if (p.status === 'success' || (!p.autoUpload && p.status === 'waiting')) {\n    return p.multiple ? 'continueUpload' : 'reupload';\n  }\n  return 'fileInput';\n}\n\nexport interface GetDisplayFilesParams {\n  multiple: boolean;\n  autoUpload: boolean;\n  isBatchUpload: boolean;\n  uploadValue: UploadFile[];\n  toUploadFiles: UploadFile[];\n}\n\n/**\n * 获取文件列表显示\n */\nexport function getDisplayFiles(params: GetDisplayFilesParams) {\n  const { multiple, uploadValue, toUploadFiles, autoUpload } = params;\n  const waitingUploadFiles = autoUpload\n    ? toUploadFiles\n    : toUploadFiles.filter((file) => file.status !== 'success');\n  if (multiple && !params.isBatchUpload) {\n    if (!autoUpload) return uploadValue;\n    return (waitingUploadFiles.length ? uploadValue.concat(waitingUploadFiles) : uploadValue) || [];\n  }\n  return (waitingUploadFiles.length ? waitingUploadFiles : uploadValue) || [];\n}\n","import { ref, computed, toRefs } from 'vue';\nimport { merge } from 'lodash-es';\nimport { SizeLimitObj, TdUploadProps, UploadChangeContext, UploadFile, UploadRemoveContext } from '../type';\nimport {\n  getFilesAndErrors,\n  validateFile,\n  upload,\n  getTriggerTextField,\n  getDisplayFiles,\n  formatToUploadFile,\n} from '@tdesign/common-js/upload/main';\nimport { getFileList } from '@tdesign/common-js/upload/utils';\nimport useVModel from '../../hooks/useVModel';\nimport { InnerProgressContext, OnResponseErrorContext, SuccessContext } from '@tdesign/common-js/upload/types';\nimport { useConfig } from '../../hooks/useConfig';\n\nexport type ValidateParams = Parameters<TdUploadProps['onValidate']>[0];\n\n/**\n * 上传组件全部逻辑，方便脱离 UI，自定义 UI 组件\n */\nexport default function useUpload(props: TdUploadProps) {\n  const inputRef = ref<HTMLInputElement>();\n  // TODO: Form 表单控制上传组件是否禁用\n  const { disabled, autoUpload, isBatchUpload, multiple, files, modelValue, defaultFiles } = toRefs(props);\n  const { globalConfig, t, classPrefix } = useConfig('upload');\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 locale = computed(() => merge({}, globalConfig.value, props.locale));\n\n  const tipsClasses = `${classPrefix.value}-upload__tips ${classPrefix.value}-size-s`;\n  const errorClasses = [tipsClasses].concat(`${classPrefix.value}-upload__tips-error`);\n  const placeholderClass = `${classPrefix.value}-upload__placeholder`;\n\n  // 单文件场景：触发元素文本\n  const triggerUploadText = computed(() => {\n    const field = getTriggerTextField({\n      isBatchUpload: isBatchUpload.value,\n      multiple: multiple.value,\n      status: uploadValue.value?.[0]?.status,\n      autoUpload: autoUpload.value,\n    }) as keyof typeof locale.value.triggerUploadText;\n    return locale.value.triggerUploadText[field];\n  });\n\n  const uploading = ref(false);\n\n  // 文件列表显示的内容（自动上传和非自动上传有所不同）\n  const displayFiles = computed(() => {\n    return getDisplayFiles({\n      multiple: props.multiple,\n      toUploadFiles: toUploadFiles.value,\n      uploadValue: uploadValue.value,\n      autoUpload: autoUpload.value,\n      isBatchUpload: isBatchUpload.value,\n    });\n  });\n\n  const uploadFilePercent = (params: { file: UploadFile; percent: number }) => {\n    const { file, percent } = params;\n    const operationUploadFiles = autoUpload.value ? toUploadFiles : uploadValue;\n    const index = operationUploadFiles.value.findIndex((item) => file.raw === item.raw);\n    operationUploadFiles.value[index] = { ...operationUploadFiles.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,\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[0],\n        response: p.response,\n      });\n    }\n  };\n\n  function getSizeLimitError(sizeLimitObj: SizeLimitObj) {\n    const limit = sizeLimitObj;\n    return limit.message\n      ? t(limit.message, { sizeLimit: limit.size })\n      : `${t(locale.value.sizeLimitMessage, { sizeLimit: limit.size })} ${limit.unit}`;\n  }\n\n  const handleNotAutoUpload = (toFiles: UploadFile[]) => {\n    const tmpFiles = props.multiple && !isBatchUpload.value ? uploadValue.value.concat(toFiles) : toFiles;\n    if (!tmpFiles.length) return;\n    setUploadValue(tmpFiles, {\n      trigger: 'add',\n      index: uploadValue.value.length,\n      file: toFiles[0],\n      files: toFiles,\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,\n      // @ts-ignore\n      files: [...files],\n      allowUploadDuplicateFile: props.allowUploadDuplicateFile,\n      max: props.multiple ? props.max : 0,\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 };\n        props.onValidate?.(params);\n        return;\n      }\n      // 文件数量校验不通过\n      if (args.lengthOverLimit) {\n        const params: ValidateParams = { type: 'FILES_OVER_LENGTH_LIMIT', files: args.files };\n        props.onValidate?.(params);\n        if (!args.files.length) return;\n      }\n      // 过滤相同的文件名\n      if (args.hasSameNameFile) {\n        const params: ValidateParams = { type: 'FILTER_FILE_SAME_NAME', files: args.files };\n        props.onValidate?.(params);\n      }\n      // 文件大小校验结果处理（已过滤超出限制的文件）\n      if (args.fileValidateList instanceof Array) {\n        const { sizeLimitErrors, beforeUploadErrorFiles, toFiles } = getFilesAndErrors(\n          args.fileValidateList,\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?.({ type: 'FILE_OVER_SIZE_LIMIT', files: sizeLimitErrors.map((t) => t.file) });\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    inputRef.value.value = null;\n  };\n\n  const onNormalFileChange = (e: InputEvent) => {\n    const fileList = getFileList((e.target as HTMLInputElement).files);\n    onFileChange?.(fileList);\n  };\n\n  function onDragFileChange(files: File[]) {\n    onFileChange?.(files);\n  }\n\n  function onPasteFileChange(e: ClipboardEvent) {\n    onFileChange?.([...e.clipboardData.files]);\n  }\n\n  /**\n   * 上传文件。对外暴露方法，修改时需谨慎\n   * @param toFiles 本地上传的文件列表\n   */\n  function uploadFiles(toFiles?: UploadFile[]) {\n    const notUploadedFiles = uploadValue.value.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,\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          setUploadValue([...data.files], {\n            trigger: 'add',\n            file: data.files[0],\n          });\n          xhrReq.value = [];\n          props.onSuccess?.({\n            fileList: data.files,\n            currentFiles: files,\n            file: files[0],\n            // 只有全部请求完成后，才会存在该字段\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;\n          props.onWaitingUploadFilesChange?.({ files: failedFiles, 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.splice(p.index, 1);\n      setUploadValue([...uploadValue.value], changePrams);\n    } else {\n      // autoUpload 场景下， p.index < uploadValue.length 表示移除已经上传成功的文件；反之表示移除待上传列表文件\n      // eslint-disable-next-line\n      if (p.index < uploadValue.value.length) {\n        uploadValue.value.splice(p.index, 1);\n        setUploadValue([...uploadValue.value], changePrams);\n      } else {\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 triggerUpload = (e?: MouseEvent) => {\n    if (disabled.value || !inputRef.value) return;\n    e?.stopPropagation?.();\n    (inputRef.value as HTMLInputElement).click();\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    // autoUpload do not need to reset to waiting state\n    if (autoUpload.value) {\n      toUploadFiles.value = [];\n    } else {\n      setUploadValue(\n        uploadValue.value.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, index: 0 });\n    }\n\n    props.onCancelUpload?.();\n  };\n\n  return {\n    t,\n    locale,\n    classPrefix,\n    triggerUploadText,\n    toUploadFiles,\n    uploadValue,\n    displayFiles,\n    sizeOverLimitMessage,\n    uploading,\n    tipsClasses,\n    errorClasses,\n    placeholderClass,\n    inputRef,\n    disabled,\n    xhrReq,\n    uploadFilePercent,\n    uploadFiles,\n    onFileChange,\n    onNormalFileChange,\n    onDragFileChange,\n    onPasteFileChange,\n    onInnerRemove,\n    triggerUpload,\n    cancelUpload,\n  };\n}\n"],"names":["xhr","_ref","_files$","_ref$method","method","action","_ref$withCredentials","withCredentials","_ref$headers","headers","_ref$data","data","file","_ref$files","files","_ref$name","name","_ref$useMockProgress","useMockProgress","_ref$mockProgressDura","mockProgressDuration","formatRequest","onError","onProgress","onSuccess","innerFiles","percent","XMLHttpRequest","timer1","timer2","status","setTimeout","setInterval","Math","max","map","type","clearInterval","clearTimeout","requestData","extraData","isFunction","Object","assign","forEach","index","fileField","length","concat","raw","formData","FormData","keys","key","append","open","setRequestHeader","onerror","event","ontimeout","upload","onprogress","_innerFiles$","realPercent","total","round","loaded","progressFiles","item","onload","response","isFail","text","responseText","JSON","parse","e","log","error","_response","uploadTime","getCurrentDate","_typeof","_toConsumableArray","send","requestParams","requestHeaders","handleBeforeUpload","params","sizeLimit","beforeUpload","sizePromise","Promise","resolve","result","sizeLimitObj","isNumber","size","unit","limit","isOverSizeLimit","promiseList","r","p","all","then","handleError","options","formatResponse","res","currentFiles","handleSuccess","_file$response","url","handleRequestMethodResponse","includes","warn","uploadOneRequest","toUploadFiles","requestMethod","multiple","resultFiles","fileInfo","find","toFile","_objectSpread","_params$onResponseSuc","onResponseSuccess","call","_params$onResponseErr","onResponseError","_params$setXhrObject","xhrReq","_params$onResponseErr2","onResponseProgress","_params$onResponseErr3","_params$onResponseSuc2","setXhrObject","updateUploadedFiles","uploadFiles","existFiles","filter","t","newFiles","_loop","i","findIndex","tmpFile","push","len","uploadAllFilesInOneRequest","uploadedFiles","isBatchUpload","thisUploadFiles","failedFiles","list","arr","one","tFiles","autoUpload","formatToUploadFile","format","arguments","undefined","fileRaw","uploadFile","lastModified","validateFile","uploadValue","allowUploadDuplicateFile","tmpFiles","sameNameFile","hasSameNameFile","validateResult","lengthOverLimit","tmpFilesLenToBeAdded","slice","formattedFiles","allFileValidatePromise","beforeAllFilesUpload","_params$beforeAllFile","_ref2","_slicedToArray","sizeResult","customResult","extra","results","_results","_toArray","allFilesResult","others","fileValidateList","getFilesAndErrors","getError","sizeLimitErrors","beforeUploadErrorFiles","toFiles","oneFile","_oneFile$validateResu","_oneFile$validateResu2","getTriggerTextField","getDisplayFiles","waitingUploadFiles","useUpload","props","inputRef","ref","_toRefs","toRefs","disabled","modelValue","defaultFiles","_useConfig","useConfig","globalConfig","classPrefix","_useVModel","useVModel","value","onChange","_useVModel2","setUploadValue","sizeOverLimitMessage","locale","computed","merge","tipsClasses","errorClasses","placeholderClass","triggerUploadText","_uploadValue$value","field","uploading","displayFiles","uploadFilePercent","operationUploadFiles","updateFilesProgress","_props$onOneFileFail","onOneFileFail","trigger","_props$onProgress","_props$onOneFileSucce","onOneFileSuccess","getSizeLimitError","message","sizeLimitMessage","handleNotAutoUpload","onFileChange","_props$onSelectChange","currentSelectedFiles","onSelectChange","args","_args$validateResult","_props$onValidate","onValidate","_props$onValidate2","_props$onValidate3","Array","_props$onWaitingUploa","_getFilesAndErrors","tmpWaitingFiles","onWaitingUploadFilesChange","_props$onValidate4","_props$onValidate5","onNormalFileChange","fileList","getFileList","target","onDragFileChange","onPasteFileChange","clipboardData","notUploadedFiles","_xhr$files$","_item$files$","_props$onSuccess","_props$onFail","onFail","_props$onWaitingUploa2","onInnerRemove","_p$e$stopPropagation","_p$e","_props$onRemove","stopPropagation","changePrams","_props$onWaitingUploa3","splice","_props$onWaitingUploa4","onRemove","triggerUpload","_e$stopPropagation","click","cancelUpload","context","_xhrReq$value","_props$onCancelUpload","_item$xhrReq","abort","onCancelUpload"],"mappings":"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"}