{"version":3,"file":"AssetCardBase.mjs","sources":["../../../../admin/src/components/AssetCard/AssetCardBase.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n  Box,\n  Card,\n  CardAction,\n  CardBadge,\n  CardBody,\n  CardCheckbox,\n  CardContent,\n  CardHeader,\n  CardSubtitle,\n  CardTitle,\n  Flex,\n  IconButton,\n  Typography,\n} from '@strapi/design-system';\nimport { Pencil, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../../utils';\n\nconst Extension = styled.span`\n  text-transform: uppercase;\n`;\n\nconst CardActionsContainer = styled(CardAction)`\n  opacity: 0;\n  z-index: 1;\n\n  &:focus-within {\n    opacity: 1;\n  }\n`;\n\nconst CardCheckboxWrapper = styled.div`\n  z-index: 1;\n`;\n\nconst CardContainer = styled(Card)`\n  cursor: pointer;\n\n  &:hover {\n    ${CardActionsContainer} {\n      opacity: 1;\n    }\n  }\n`;\n\nexport interface AssetCardBaseProps {\n  children?: React.ReactNode;\n  extension: string;\n  isSelectable?: boolean;\n  name: string;\n  onSelect?: () => void;\n  onRemove?: () => void;\n  onEdit?: (\n    event:\n      | React.MouseEvent<HTMLButtonElement, MouseEvent>\n      | React.MouseEvent<HTMLDivElement, MouseEvent>\n  ) => void;\n  selected?: boolean;\n  subtitle?: string;\n  variant: 'Image' | 'Video' | 'Audio' | 'Doc';\n  className?: string;\n}\n\nexport const AssetCardBase = ({\n  children,\n  extension,\n  isSelectable = false,\n  name,\n  onSelect,\n  onRemove,\n  onEdit,\n  selected = false,\n  subtitle = '',\n  variant = 'Image',\n  className,\n}: AssetCardBaseProps) => {\n  const { formatMessage } = useIntl();\n\n  const handleClick = (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n    if (onEdit) {\n      onEdit(e);\n    }\n  };\n\n  /**\n   * This is required because we need to stop the propagation of the event\n   * bubbling to the `CardContainer`, however the `CardCheckbox` only returns\n   * the `boolean` value as opposed to the event itself.\n   */\n  const handlePropagationClick = (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n    e.stopPropagation();\n  };\n\n  return (\n    <CardContainer\n      className={className}\n      role=\"button\"\n      height=\"100%\"\n      tabIndex={-1}\n      onClick={handleClick}\n    >\n      <CardHeader>\n        {isSelectable && (\n          <CardCheckboxWrapper onClick={handlePropagationClick}>\n            <CardCheckbox checked={selected} onCheckedChange={onSelect} />\n          </CardCheckboxWrapper>\n        )}\n        {(onRemove || onEdit) && (\n          <CardActionsContainer onClick={handlePropagationClick} position=\"end\">\n            {onRemove && (\n              <IconButton\n                label={formatMessage({\n                  id: getTrad('control-card.remove-selection'),\n                  defaultMessage: 'Remove from selection',\n                })}\n                onClick={onRemove}\n              >\n                <Trash />\n              </IconButton>\n            )}\n\n            {onEdit && (\n              <IconButton\n                label={formatMessage({ id: getTrad('control-card.edit'), defaultMessage: 'Edit' })}\n                onClick={onEdit}\n              >\n                <Pencil />\n              </IconButton>\n            )}\n          </CardActionsContainer>\n        )}\n        {children}\n      </CardHeader>\n      <CardBody>\n        <CardContent>\n          <Box paddingTop={1}>\n            <Typography tag=\"h2\">\n              <CardTitle tag=\"span\">{name}</CardTitle>\n            </Typography>\n          </Box>\n          <CardSubtitle>\n            <Extension>{extension}</Extension>\n            {subtitle}\n          </CardSubtitle>\n        </CardContent>\n        <Flex paddingTop={1} grow={1}>\n          <CardBadge>\n            {formatMessage({\n              id: getTrad(`settings.section.${variant.toLowerCase()}.label`),\n              defaultMessage: variant,\n            })}\n          </CardBadge>\n        </Flex>\n      </CardBody>\n    </CardContainer>\n  );\n};\n"],"names":["Extension","styled","span","CardActionsContainer","CardAction","CardCheckboxWrapper","div","CardContainer","Card","AssetCardBase","children","extension","isSelectable","name","onSelect","onRemove","onEdit","selected","subtitle","variant","className","formatMessage","useIntl","handleClick","e","handlePropagationClick","stopPropagation","_jsxs","role","height","tabIndex","onClick","CardHeader","_jsx","CardCheckbox","checked","onCheckedChange","position","IconButton","label","id","getTrad","defaultMessage","Trash","Pencil","CardBody","CardContent","Box","paddingTop","Typography","tag","CardTitle","CardSubtitle","Flex","grow","CardBadge","toLowerCase"],"mappings":"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"}