{"version":3,"file":"UploadingAssetCard.mjs","sources":["../../../../admin/src/components/AssetCard/UploadingAssetCard.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n  Box,\n  Card,\n  CardBadge,\n  CardBody,\n  CardContent,\n  CardHeader,\n  CardSubtitle,\n  CardTitle,\n  Flex,\n  Typography,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetType } from '../../enums';\nimport { useUpload } from '../../hooks/useUpload';\nimport { getTrad } from '../../utils';\nimport { UploadProgress } from '../UploadProgress/UploadProgress';\n\nimport type { RawFile, File } from '../../../../shared/contracts/files';\n\nconst UploadProgressWrapper = styled.div`\n  height: 8.8rem;\n  width: 100%;\n`;\n\nconst Extension = styled.span`\n  text-transform: uppercase;\n`;\n\ninterface UploadingAssetCardProps {\n  onCancel: (rawFile: RawFile) => void;\n  onStatusChange: (status: string) => void;\n  addUploadedFiles: (files: File[]) => void;\n  folderId?: string | number | null;\n  asset: Asset;\n  id?: string;\n  size?: 'S' | 'M';\n}\n\ninterface Asset extends File {\n  rawFile?: RawFile;\n  type?: AssetType;\n}\n\nexport const UploadingAssetCard = ({\n  asset,\n  onCancel,\n  onStatusChange,\n  addUploadedFiles,\n  folderId = null,\n}: UploadingAssetCardProps) => {\n  const { upload, cancel, error, progress, status } = useUpload();\n  const { formatMessage } = useIntl();\n\n  let badgeContent = formatMessage({\n    id: getTrad('settings.section.doc.label'),\n    defaultMessage: 'Doc',\n  });\n\n  if (asset.type === AssetType.Image) {\n    badgeContent = formatMessage({\n      id: getTrad('settings.section.image.label'),\n      defaultMessage: 'Image',\n    });\n  } else if (asset.type === AssetType.Video) {\n    badgeContent = formatMessage({\n      id: getTrad('settings.section.video.label'),\n      defaultMessage: 'Video',\n    });\n  } else if (asset.type === AssetType.Audio) {\n    badgeContent = formatMessage({\n      id: getTrad('settings.section.audio.label'),\n      defaultMessage: 'Audio',\n    });\n  }\n\n  React.useEffect(() => {\n    const uploadFile = async () => {\n      const files = await upload(asset, folderId ? Number(folderId) : null);\n\n      if (addUploadedFiles) {\n        addUploadedFiles(files);\n      }\n    };\n\n    uploadFile();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  React.useEffect(() => {\n    onStatusChange(status);\n  }, [status, onStatusChange]);\n\n  const handleCancel = () => {\n    cancel();\n    onCancel(asset.rawFile!);\n  };\n\n  return (\n    <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n      <Card borderColor={error ? 'danger600' : 'neutral150'}>\n        <CardHeader>\n          <UploadProgressWrapper>\n            <UploadProgress\n              error={error || undefined}\n              onCancel={handleCancel}\n              progress={progress}\n            />\n          </UploadProgressWrapper>\n        </CardHeader>\n        <CardBody>\n          <CardContent>\n            <Box paddingTop={1}>\n              <Typography tag=\"h2\">\n                <CardTitle tag=\"span\">{asset.name}</CardTitle>\n              </Typography>\n            </Box>\n            <CardSubtitle>\n              <Extension>{asset.ext}</Extension>\n            </CardSubtitle>\n          </CardContent>\n          <Flex paddingTop={1} grow={1}>\n            <CardBadge>{badgeContent}</CardBadge>\n          </Flex>\n        </CardBody>\n      </Card>\n      {error ? (\n        <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"danger600\">\n          {formatMessage(\n            error?.message\n              ? {\n                  id: getTrad(`apiError.${error.message}`),\n                  defaultMessage: error.message,\n                  /* See issue: https://github.com/strapi/strapi/issues/13867\n             A proxy might return an error, before the request reaches Strapi\n             and therefore we need to handle errors gracefully.\n          */\n                }\n              : {\n                  id: getTrad('upload.generic-error'),\n                  defaultMessage: 'An error occurred while uploading the file.',\n                }\n          )}\n        </Typography>\n      ) : undefined}\n    </Flex>\n  );\n};\n"],"names":["UploadProgressWrapper","styled","div","Extension","span","UploadingAssetCard","asset","onCancel","onStatusChange","addUploadedFiles","folderId","upload","cancel","error","progress","status","useUpload","formatMessage","useIntl","badgeContent","id","getTrad","defaultMessage","type","AssetType","Image","Video","Audio","React","useEffect","uploadFile","files","Number","handleCancel","rawFile","_jsxs","Flex","direction","alignItems","gap","Card","borderColor","_jsx","CardHeader","UploadProgress","undefined","CardBody","CardContent","Box","paddingTop","Typography","tag","CardTitle","name","CardSubtitle","ext","grow","CardBadge","variant","fontWeight","textColor","message"],"mappings":"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"}