{"version":3,"file":"PreviewCell.mjs","sources":["../../../../admin/src/components/TableList/PreviewCell.tsx"],"sourcesContent":["import { Avatar, Box, Flex } from '@strapi/design-system';\nimport {\n  File as FileIcon,\n  FileCsv,\n  FilePdf,\n  FileXls,\n  FileZip,\n  Folder,\n  VolumeUp,\n} from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetType } from '../../enums';\nimport {\n  createAssetUrl,\n  getFileExtension,\n  getTrad,\n  prefixFileUrlWithBackendUrl,\n} from '../../utils';\nimport { VideoPreview } from '../AssetCard/VideoPreview';\n\nimport type { File } from '../../../../shared/contracts/files';\n\nconst VideoPreviewWrapper = styled(Box)`\n  figure {\n    width: ${({ theme }) => theme.spaces[7]};\n    height: ${({ theme }) => theme.spaces[7]};\n  }\n\n  canvas,\n  video {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    border-radius: 50%;\n  }\n`;\n\ninterface PreviewCellProps {\n  content: File;\n  type?: string;\n}\n\nexport const PreviewCell = ({ type, content }: PreviewCellProps) => {\n  const { formatMessage } = useIntl();\n  if (type === 'folder') {\n    return (\n      <Flex\n        justifyContent=\"center\"\n        background=\"secondary100\"\n        width=\"3.2rem\"\n        height=\"3.2rem\"\n        borderRadius=\"50%\"\n      >\n        <Folder\n          aria-label={formatMessage({\n            id: getTrad('header.actions.add-assets.folder'),\n            defaultMessage: 'folder',\n          })}\n          fill=\"secondary500\"\n          width=\"1.6rem\"\n          height=\"1.6rem\"\n        />\n      </Flex>\n    );\n  }\n\n  const { alternativeText, ext, formats, mime, name, url } = content;\n\n  const fileExtension = getFileExtension(ext);\n\n  if (mime?.includes(AssetType.Image)) {\n    const mediaURL =\n      prefixFileUrlWithBackendUrl(formats?.thumbnail?.url) ?? prefixFileUrlWithBackendUrl(url);\n\n    return (\n      <Avatar.Item\n        src={mediaURL}\n        alt={alternativeText || undefined}\n        preview\n        fallback={alternativeText}\n      />\n    );\n  }\n\n  if (mime?.includes(AssetType.Video)) {\n    return (\n      <VideoPreviewWrapper>\n        <VideoPreview\n          url={createAssetUrl(content, true) || ''}\n          mime={mime}\n          alt={alternativeText ?? name}\n        />\n      </VideoPreviewWrapper>\n    );\n  }\n\n  if (mime?.includes(AssetType.Audio)) {\n    return (\n      <Flex\n        background=\"neutral100\"\n        borderRadius=\"100%\"\n        color=\"neutral500\"\n        width=\"3.2rem\"\n        height=\"3.2rem\"\n        justifyContent=\"center\"\n      >\n        <VolumeUp width={16} height={16} />\n      </Flex>\n    );\n  }\n\n  type IconComponent = typeof FileIcon;\n  const DOC_ICON_MAP: Record<string, IconComponent> = {\n    pdf: FilePdf,\n    csv: FileCsv,\n    xls: FileXls,\n    zip: FileZip,\n  };\n\n  const DocIcon = fileExtension ? DOC_ICON_MAP[fileExtension] || FileIcon : FileIcon;\n  const testId =\n    fileExtension && DOC_ICON_MAP[fileExtension] ? `file-${fileExtension}-icon` : 'file-icon';\n\n  return (\n    <Flex\n      justifyContent=\"center\"\n      borderRadius=\"100%\"\n      background=\"neutral100\"\n      color=\"neutral500\"\n      width=\"3.2rem\"\n      height=\"3.2rem\"\n    >\n      <DocIcon width={16} height={16} data-testid={testId} />\n    </Flex>\n  );\n};\n"],"names":["VideoPreviewWrapper","styled","Box","theme","spaces","PreviewCell","type","content","formatMessage","useIntl","_jsx","Flex","justifyContent","background","width","height","borderRadius","Folder","aria-label","id","getTrad","defaultMessage","fill","alternativeText","ext","formats","mime","name","url","fileExtension","getFileExtension","includes","AssetType","Image","mediaURL","prefixFileUrlWithBackendUrl","thumbnail","Avatar","Item","src","alt","undefined","preview","fallback","Video","VideoPreview","createAssetUrl","Audio","color","VolumeUp","DOC_ICON_MAP","pdf","FilePdf","csv","FileCsv","xls","FileXls","zip","FileZip","DocIcon","FileIcon","testId","data-testid"],"mappings":"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"}