UNPKG

@plone/volto

Version:
43 lines (35 loc) 1.2 kB
import React from 'react'; import cx from 'classnames'; import { flattenToAppURL } from '@plone/volto/helpers/Url/Url'; import UniversalLink from '@plone/volto/components/manage/UniversalLink/UniversalLink'; const niceBytes = (bytes) => { bytes = Number(bytes); const divider = 1024; const magnitude = (Math.log(bytes) / Math.log(divider)) | 0; const result = bytes / Math.pow(divider, magnitude); const fixed = result.toFixed(0); const suffix = magnitude ? 'kMGTPEZY'[magnitude - 1] + 'B' : 'B'; return fixed + suffix; }; const FileWidget = ({ value, children, className }) => { if (!value) { return ''; } const url = flattenToAppURL(value.download || value.filename || value); const filename = value.filename || url; const size = value.data ? value.data.length * 0.75 : value.size || 0; const ctype = value['content-type'] || ''; return ( <UniversalLink title={ctype || filename} href={url} className={cx(className, 'file', 'widget')} data-size={size} data-size-fmt={niceBytes(size)} data-content-type={ctype} > {children ? children(filename) : filename} </UniversalLink> ); }; export default FileWidget;