{"version":3,"file":"utils.mjs","sources":["../../../../../../packages/components/upload/src/utils.ts"],"sourcesContent":["import type { FileType, InternalUploadFile, UploadFile } from './interface';\n\nexport function file2Obj(file: FileType): InternalUploadFile {\n  return {\n    ...file,\n    lastModified: file.lastModified,\n    lastModifiedDate: file.lastModifiedDate,\n    name: file.name,\n    size: file.size,\n    type: file.type,\n    uid: file.uid,\n    percent: 0,\n    originFileObj: file,\n  };\n}\n\n/** Upload fileList. Replace file if exist or just push into it. */\nexport function updateFileList(file: UploadFile<any>, fileList: Array<UploadFile<any>>) {\n  const nextFileList = [...fileList];\n  const fileIndex = nextFileList.findIndex(({ uid }: UploadFile) => uid === file.uid);\n  if (fileIndex === -1)\n    nextFileList.push(file);\n  else\n    nextFileList[fileIndex] = file;\n\n  return nextFileList;\n}\n\nexport function getFileItem(file: FileType, fileList: UploadFile[]) {\n  const matchKey = file.uid !== undefined ? 'uid' : 'name';\n  return fileList.filter(item => item[matchKey] === file[matchKey])[0];\n}\n\nexport function removeFileItem(file: UploadFile, fileList: UploadFile[]) {\n  const matchKey = file.uid !== undefined ? 'uid' : 'name';\n  const removed = fileList.filter(item => item[matchKey] !== file[matchKey]);\n  if (removed.length === fileList.length)\n    return null;\n\n  return removed;\n}\n\n// ==================== Default Image Preview ====================\nfunction extname(url = '') {\n  const temp = url.split('/');\n  const filename = temp[temp.length - 1];\n  const filenameWithoutSuffix = filename.split(/#|\\?/)[0];\n  return (/\\.[^./\\\\]*$/.exec(filenameWithoutSuffix) || [''])[0];\n}\n\nconst isImageFileType = (type: string): boolean => type.indexOf('image/') === 0;\n\nexport function isImageUrl(file: UploadFile): boolean {\n  if (file.type && !file.thumbUrl)\n    return isImageFileType(file.type);\n\n  const url: string = (file.thumbUrl || file.url || '') as string;\n  const extension = extname(url);\n  if (\n    /^data:image\\//.test(url)\n    || /(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i.test(extension)\n  ) {\n    return true;\n  }\n\n  if (url.startsWith('data:')) {\n    // other file types of base64\n    return false;\n  }\n  if (extension) {\n    // other file types which have extension\n    return false;\n  }\n  return true;\n}\n\nconst MEASURE_SIZE = 200;\nexport function previewImage(file: File | Blob): Promise<string> {\n  return new Promise((resolve) => {\n    if (!file.type || !isImageFileType(file.type)) {\n      resolve('');\n      return;\n    }\n\n    const canvas = document.createElement('canvas');\n    canvas.width = MEASURE_SIZE;\n    canvas.height = MEASURE_SIZE;\n    canvas.style.cssText = `position: fixed; left: 0; top: 0; width: ${MEASURE_SIZE}px; height: ${MEASURE_SIZE}px; z-index: 9999; display: none;`;\n    document.body.appendChild(canvas);\n    const ctx = canvas.getContext('2d');\n    const img = new Image();\n    img.onload = () => {\n      const { width, height } = img;\n\n      let drawWidth = MEASURE_SIZE;\n      let drawHeight = MEASURE_SIZE;\n      let offsetX = 0;\n      let offsetY = 0;\n\n      if (width > height) {\n        drawHeight = height * (MEASURE_SIZE / width);\n        offsetY = -(drawHeight - drawWidth) / 2;\n      } else {\n        drawWidth = width * (MEASURE_SIZE / height);\n        offsetX = -(drawWidth - drawHeight) / 2;\n      }\n\n      ctx!.drawImage(img, offsetX, offsetY, drawWidth, drawHeight);\n      const dataURL = canvas.toDataURL();\n      document.body.removeChild(canvas);\n\n      resolve(dataURL);\n    };\n    img.crossOrigin = 'anonymous';\n    if (file.type.startsWith('image/svg+xml')) {\n      const reader = new FileReader();\n      reader.addEventListener('load', () => {\n        if (reader.result) img.src = reader.result as string;\n      });\n      reader.readAsDataURL(file);\n    } else {\n      img.src = window.URL.createObjectURL(file);\n    }\n  });\n}\n"],"names":[],"mappings":"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"}