{"version":3,"file":"utils.mjs","sources":["../../../../../../../packages/components/upload/src/utils.ts"],"sourcesContent":["import { createNamespace, isFunction, toArray } from '@xzx-design/utils'\nimport type {\n  UploadFileListItem,\n  UploadMaxSize,\n  UploadResultType,\n} from './types'\n\nconst [name, bem, t] = createNamespace('upload')\n\nexport { name, bem, t }\n\nexport function readFileContent(file: File, resultType: UploadResultType) {\n  return new Promise<string | void>((resolve) => {\n    if (resultType === 'file') {\n      resolve()\n      return\n    }\n\n    const reader = new FileReader()\n\n    reader.onload = (event) => {\n      resolve((event.target as FileReader).result as string)\n    }\n\n    if (resultType === 'dataUrl') {\n      reader.readAsDataURL(file)\n    } else if (resultType === 'text') {\n      reader.readAsText(file)\n    }\n  })\n}\n\nexport function isOversize(\n  items: UploadFileListItem | UploadFileListItem[],\n  maxSize: UploadMaxSize\n): boolean {\n  return toArray(items).some((item) => {\n    if (item.file) {\n      if (isFunction(maxSize)) {\n        return maxSize(item.file)\n      }\n      return item.file.size > +maxSize\n    }\n    return false\n  })\n}\n\nexport function filterFiles(\n  items: UploadFileListItem[],\n  maxSize: UploadMaxSize\n) {\n  const valid: UploadFileListItem[] = []\n  const invalid: UploadFileListItem[] = []\n\n  items.forEach((item) => {\n    if (isOversize(item, maxSize)) {\n      invalid.push(item)\n    } else {\n      valid.push(item)\n    }\n  })\n\n  return { valid, invalid }\n}\n\nconst IMAGE_REGEXP = /\\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg|avif)/i\n\nexport const isImageUrl = (url: string): boolean => IMAGE_REGEXP.test(url)\n\nexport function isImageFile(item: UploadFileListItem): boolean {\n  // some special urls cannot be recognized\n  // user can add `isImage` flag to mark it as an image url\n  if (item.isImage) {\n    return true\n  }\n\n  if (item.file && item.file.type) {\n    return item.file.type.indexOf('image') === 0\n  }\n\n  if (item.url) {\n    return isImageUrl(item.url)\n  }\n\n  if (typeof item.content === 'string') {\n    return item.content.indexOf('data:image') === 0\n  }\n\n  return false\n}\n"],"names":[],"mappings":";;;;;AAOA,MAAM,CAAC,IAAM,EAAA,GAAA,EAAK,CAAC,CAAA,GAAI,gBAAgB,QAAQ,EAAA;AAI/B,SAAA,eAAA,CAAgB,MAAY,UAA8B,EAAA;AACxE,EAAO,OAAA,IAAI,OAAuB,CAAA,CAAC,OAAY,KAAA;AAC7C,IAAA,IAAI,eAAe,MAAQ,EAAA;AACzB,MAAQ,OAAA,EAAA,CAAA;AACR,MAAA,OAAA;AAAA,KACF;AAEA,IAAM,MAAA,MAAA,GAAS,IAAI,UAAW,EAAA,CAAA;AAE9B,IAAO,MAAA,CAAA,MAAA,GAAS,CAAC,KAAU,KAAA;AACzB,MAAS,OAAA,CAAA,KAAA,CAAM,OAAsB,MAAgB,CAAA,CAAA;AAAA,KACvD,CAAA;AAEA,IAAA,IAAI,eAAe,SAAW,EAAA;AAC5B,MAAA,MAAA,CAAO,cAAc,IAAI,CAAA,CAAA;AAAA,KAC3B,MAAA,IAAW,eAAe,MAAQ,EAAA;AAChC,MAAA,MAAA,CAAO,WAAW,IAAI,CAAA,CAAA;AAAA,KACxB;AAAA,GACD,CAAA,CAAA;AACH,CAAA;AAEgB,SAAA,UAAA,CACd,OACA,OACS,EAAA;AACT,EAAA,OAAO,OAAQ,CAAA,KAAK,CAAE,CAAA,IAAA,CAAK,CAAC,IAAS,KAAA;AACnC,IAAA,IAAI,KAAK,IAAM,EAAA;AACb,MAAI,IAAA,UAAA,CAAW,OAAO,CAAG,EAAA;AACvB,QAAO,OAAA,OAAA,CAAQ,KAAK,IAAI,CAAA,CAAA;AAAA,OAC1B;AACA,MAAO,OAAA,IAAA,CAAK,IAAK,CAAA,IAAA,GAAO,CAAC,OAAA,CAAA;AAAA,KAC3B;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACR,CAAA,CAAA;AACH,CAAA;AAEgB,SAAA,WAAA,CACd,OACA,OACA,EAAA;AACA,EAAA,MAAM,QAA8B,EAAC,CAAA;AACrC,EAAA,MAAM,UAAgC,EAAC,CAAA;AAEvC,EAAM,KAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AACtB,IAAI,IAAA,UAAA,CAAW,IAAM,EAAA,OAAO,CAAG,EAAA;AAC7B,MAAA,OAAA,CAAQ,KAAK,IAAI,CAAA,CAAA;AAAA,KACZ,MAAA;AACL,MAAA,KAAA,CAAM,KAAK,IAAI,CAAA,CAAA;AAAA,KACjB;AAAA,GACD,CAAA,CAAA;AAED,EAAO,OAAA,EAAE,OAAO,OAAQ,EAAA,CAAA;AAC1B,CAAA;AAEA,MAAM,YAAe,GAAA,kDAAA,CAAA;AAEd,MAAM,UAAa,GAAA,CAAC,GAAyB,KAAA,YAAA,CAAa,KAAK,GAAG,EAAA;AAElE,SAAS,YAAY,IAAmC,EAAA;AAG7D,EAAA,IAAI,KAAK,OAAS,EAAA;AAChB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,IAAI,IAAK,CAAA,IAAA,IAAQ,IAAK,CAAA,IAAA,CAAK,IAAM,EAAA;AAC/B,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,IAAK,CAAA,OAAA,CAAQ,OAAO,CAAM,KAAA,CAAA,CAAA;AAAA,GAC7C;AAEA,EAAA,IAAI,KAAK,GAAK,EAAA;AACZ,IAAO,OAAA,UAAA,CAAW,KAAK,GAAG,CAAA,CAAA;AAAA,GAC5B;AAEA,EAAI,IAAA,OAAO,IAAK,CAAA,OAAA,KAAY,QAAU,EAAA;AACpC,IAAA,OAAO,IAAK,CAAA,OAAA,CAAQ,OAAQ,CAAA,YAAY,CAAM,KAAA,CAAA,CAAA;AAAA,GAChD;AAEA,EAAO,OAAA,KAAA,CAAA;AACT;;;;"}