{"version":3,"file":"FileListItem.mjs","sources":["../../../../src/components/FileDropzone/FileListItem.tsx"],"sourcesContent":["import { css } from '@emotion/css';\n\nimport { formattedValueToString, getValueFormat, GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\nimport { trimFileName } from '../../utils/file';\nimport { t, Trans } from '../../utils/i18n';\nimport { Button } from '../Button';\nimport { Icon } from '../Icon/Icon';\nimport { IconButton } from '../IconButton/IconButton';\n\nimport { DropzoneFile } from './FileDropzone';\n\nexport const REMOVE_FILE = 'Remove file';\nexport interface FileListItemProps {\n  file: DropzoneFile;\n  removeFile?: (file: DropzoneFile) => void;\n}\n\nexport function FileListItem({ file: customFile, removeFile }: FileListItemProps) {\n  const styles = useStyles2(getStyles);\n  const { file, progress, error, abortUpload, retryUpload } = customFile;\n\n  const renderRightSide = () => {\n    if (error) {\n      return (\n        <>\n          <span className={styles.error}>{error.message}</span>\n          {retryUpload && (\n            <IconButton\n              name=\"sync\"\n              tooltip={t('grafana-ui.file-dropzone.item-retry', 'Retry')}\n              tooltipPlacement=\"top\"\n              onClick={retryUpload}\n            />\n          )}\n          {removeFile && (\n            <IconButton\n              className={retryUpload ? styles.marginLeft : ''}\n              name=\"trash-alt\"\n              onClick={() => removeFile(customFile)}\n              tooltip={REMOVE_FILE}\n            />\n          )}\n        </>\n      );\n    }\n\n    if (progress && file.size > progress) {\n      return (\n        <>\n          <progress className={styles.progressBar} max={file.size} value={progress} />\n          <span className={styles.paddingLeft}>\n            {Math.round((progress / file.size) * 100)}\n            {'%'}\n          </span>\n          {abortUpload && (\n            <Button variant=\"secondary\" type=\"button\" fill=\"text\" onClick={abortUpload}>\n              <Trans i18nKey=\"grafana-ui.file-dropzone.cancel-upload\">Cancel upload</Trans>\n            </Button>\n          )}\n        </>\n      );\n    }\n    return (\n      removeFile && (\n        <IconButton\n          name=\"trash-alt\"\n          onClick={() => removeFile(customFile)}\n          tooltip={REMOVE_FILE}\n          tooltipPlacement=\"top\"\n        />\n      )\n    );\n  };\n\n  const valueFormat = getValueFormat('decbytes')(file.size);\n\n  return (\n    <div className={styles.fileListContainer}>\n      <span className={styles.fileNameWrapper}>\n        <Icon name=\"file-blank\" size=\"lg\" aria-hidden={true} />\n        <span className={styles.padding}>{trimFileName(file.name)}</span>\n        <span>{formattedValueToString(valueFormat)}</span>\n      </span>\n\n      <div className={styles.fileNameWrapper}>{renderRightSide()}</div>\n    </div>\n  );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n  return {\n    fileListContainer: css({\n      width: '100%',\n      display: 'flex',\n      flexDirection: 'row',\n      alignItems: 'center',\n      justifyContent: 'space-between',\n      padding: theme.spacing(2),\n      border: `1px dashed ${theme.colors.border.medium}`,\n      backgroundColor: `${theme.colors.background.secondary}`,\n      marginTop: theme.spacing(1),\n    }),\n    fileNameWrapper: css({\n      display: 'flex',\n      flexDirection: 'row',\n      alignItems: 'center',\n    }),\n    padding: css({\n      padding: theme.spacing(0, 1),\n    }),\n    paddingLeft: css({\n      paddingLeft: theme.spacing(2),\n    }),\n    marginLeft: css({\n      marginLeft: theme.spacing(1),\n    }),\n    error: css({\n      paddingRight: theme.spacing(2),\n      color: theme.colors.error.text,\n    }),\n    progressBar: css({\n      borderRadius: theme.shape.radius.default,\n      height: '4px',\n      '::-webkit-progress-bar': {\n        backgroundColor: theme.colors.border.weak,\n        borderRadius: theme.shape.radius.default,\n      },\n      '::-webkit-progress-value': {\n        backgroundColor: theme.colors.primary.main,\n        borderRadius: theme.shape.radius.default,\n      },\n    }),\n  };\n}\n"],"names":[],"mappings":"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"}