From f6ea6df418f60bb742f91c21e302f00e5c63be8c Mon Sep 17 00:00:00 2001 From: Oliver Schwede Date: Fri, 10 Sep 2021 11:38:06 +0200 Subject: [PATCH] Show error message, when files are not accessible --- .size-snapshot.json | 16 +++---- dist/index.d.ts | 1 + dist/index.es.js | 77 +++++++++++++++++++++++++----- dist/index.es.js.map | 2 +- dist/index.js | 77 +++++++++++++++++++++++++----- dist/index.js.map | 2 +- src/components/DropzoneAreaBase.js | 68 ++++++++++++++++++++++---- src/index.d.ts | 1 + 8 files changed, 203 insertions(+), 41 deletions(-) diff --git a/.size-snapshot.json b/.size-snapshot.json index 58b56539..13aa6d52 100644 --- a/.size-snapshot.json +++ b/.size-snapshot.json @@ -1,20 +1,20 @@ { "dist/index.js": { - "bundled": 57189, - "minified": 25753, - "gzipped": 5983 + "bundled": 59532, + "minified": 26377, + "gzipped": 6162 }, "dist/index.es.js": { - "bundled": 56007, - "minified": 24741, - "gzipped": 5861, + "bundled": 58350, + "minified": 25365, + "gzipped": 6043, "treeshaked": { "rollup": { - "code": 10815, + "code": 11404, "import_statements": 1533 }, "webpack": { - "code": 21871 + "code": 22460 } } } diff --git a/dist/index.d.ts b/dist/index.d.ts index e52beb4f..acc6b69f 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -74,6 +74,7 @@ export type DropzoneAreaBaseProps = { onAlert?: (message: string, variant: AlertType) => void; getFileLimitExceedMessage?: (filesLimit: number) => string; getFileAddedMessage?: (fileName: string) => string; + getFileErrorMessage?: (file: File, error: Error) => string; getFileRemovedMessage?: (fileName: string) => string; getDropRejectMessage?: ( rejectedFile: File, diff --git a/dist/index.es.js b/dist/index.es.js index 18b7eab8..05dac2ba 100644 --- a/dist/index.es.js +++ b/dist/index.es.js @@ -408,13 +408,13 @@ var DropzoneAreaBase = /*#__PURE__*/function (_React$PureComponent) { _this.handleDropAccepted = /*#__PURE__*/function () { var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(acceptedFiles, evt) { - var _this$props, fileObjects, filesLimit, getFileAddedMessage, getFileLimitExceedMessage, onAdd, onDrop, fileObjs, message; + var _this$props, fileObjects, filesLimit, getFileAddedMessage, getFileErrorMessage, getFileLimitExceedMessage, onAdd, onDrop, allFileObjs, unreadableFiles, _message, validFileObjs, message; return _regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: - _this$props = _this.props, fileObjects = _this$props.fileObjects, filesLimit = _this$props.filesLimit, getFileAddedMessage = _this$props.getFileAddedMessage, getFileLimitExceedMessage = _this$props.getFileLimitExceedMessage, onAdd = _this$props.onAdd, onDrop = _this$props.onDrop; + _this$props = _this.props, fileObjects = _this$props.fileObjects, filesLimit = _this$props.filesLimit, getFileAddedMessage = _this$props.getFileAddedMessage, getFileErrorMessage = _this$props.getFileErrorMessage, getFileLimitExceedMessage = _this$props.getFileLimitExceedMessage, onAdd = _this$props.onAdd, onDrop = _this$props.onDrop; if (!(filesLimit > 1 && fileObjects.length + acceptedFiles.length > filesLimit)) { _context2.next = 4; @@ -439,27 +439,40 @@ var DropzoneAreaBase = /*#__PURE__*/function (_React$PureComponent) { _context2.next = 7; return Promise.all(acceptedFiles.map( /*#__PURE__*/function () { var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(file) { - var data; + var data, target, actualError; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: - _context.next = 2; + _context.prev = 0; + _context.next = 3; return readFile(file); - case 2: + case 3: data = _context.sent; return _context.abrupt("return", { file: file, data: data }); - case 4: + case 7: + _context.prev = 7; + _context.t0 = _context["catch"](0); + // native errors may happen, e.g. file not readable, ... + target = _context.t0.target; // If the error originates from FileReader, lookup the actual error from the FileReader + + actualError = target instanceof FileReader ? target.error : _context.t0; + return _context.abrupt("return", { + file: file, + error: actualError + }); + + case 12: case "end": return _context.stop(); } } - }, _callee); + }, _callee, null, [[0, 7]]); })); return function (_x3) { @@ -468,15 +481,42 @@ var DropzoneAreaBase = /*#__PURE__*/function (_React$PureComponent) { }())); case 7: - fileObjs = _context2.sent; + allFileObjs = _context2.sent; + unreadableFiles = allFileObjs.filter(function (obj) { + return obj.error != null; + }); + + if (unreadableFiles.length > 0) { + _message = unreadableFiles.reduce(function (msg, fileObj) { + return msg + getFileErrorMessage(fileObj.file, fileObj.error); + }, ''); + + _this.setState({ + openSnackBar: true, + snackbarMessage: _message, + snackbarVariant: 'error' + }, _this.notifyAlert); + } + + validFileObjs = allFileObjs.filter(function (obj) { + return obj.error == null; + }); + + if (!(validFileObjs.length <= 0)) { + _context2.next = 13; + break; + } + + return _context2.abrupt("return"); + case 13: // Notify added files if (onAdd) { - onAdd(fileObjs); + onAdd(validFileObjs); } // Display message - message = fileObjs.reduce(function (msg, fileObj) { + message = validFileObjs.reduce(function (msg, fileObj) { return msg + getFileAddedMessage(fileObj.file.name); }, ''); @@ -486,7 +526,7 @@ var DropzoneAreaBase = /*#__PURE__*/function (_React$PureComponent) { snackbarVariant: 'success' }, _this.notifyAlert); - case 11: + case 16: case "end": return _context2.stop(); } @@ -704,6 +744,9 @@ DropzoneAreaBase.defaultProps = { getFileAddedMessage: function getFileAddedMessage(fileName) { return "File ".concat(fileName, " successfully added."); }, + getFileErrorMessage: function getFileErrorMessage(file, error) { + return "Error opening file ".concat(file.name); + }, getPreviewIcon: defaultGetPreviewIcon, getFileRemovedMessage: function getFileRemovedMessage(fileName) { return "File ".concat(fileName, " removed."); @@ -849,6 +892,18 @@ process.env.NODE_ENV !== "production" ? DropzoneAreaBase.propTypes = { */ getFileAddedMessage: PropTypes.func, + /** + * Get alert message to display when an added file cannot be read. + * + * Basically all errors that might be thrown by FileReader API, e.g. when file is not accessible. + * + * *Default*: "Error opening file ${file.name}" + * + * @param {File} file The newly added file. + * @param {Error} error The error thrown by FileReader API + */ + getFileErrorMessage: PropTypes.func, + /** * Get alert message to display when a file is removed. * diff --git a/dist/index.es.js.map b/dist/index.es.js.map index 9d95af11..9cafef93 100644 --- a/dist/index.es.js.map +++ b/dist/index.es.js.map @@ -1 +1 @@ -{"version":3,"file":"index.es.js","sources":["../src/helpers.js","../src/components/PreviewList.js","../src/components/SnackbarContentWrapper.js","../src/components/DropzoneAreaBase.js","../src/components/DropzoneArea.js","../src/components/DropzoneDialogBase.js","../src/components/DropzoneDialog.js"],"sourcesContent":["export function isImage(file) {\n if (file.type.split('/')[0] === 'image') {\n return true;\n }\n}\n\nexport function convertBytesToMbsOrKbs(filesize) {\n let size = '';\n if (filesize >= 1048576) {\n size = (filesize / 1048576) + ' megabytes';\n } else if (filesize >= 1024) {\n size = (filesize / 1024) + ' kilobytes';\n } else {\n size = filesize + ' bytes';\n }\n return size;\n}\n\nexport async function createFileFromUrl(url) {\n const response = await fetch(url);\n const data = await response.blob();\n const metadata = {type: data.type};\n const filename = url.replace(/\\?.+/, '').split('/').pop();\n return new File([data], filename, metadata);\n}\n\nexport function readFile(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = (event) => {\n resolve(event?.target?.result);\n };\n reader.onerror = (event) => {\n reader.abort();\n reject(event);\n };\n reader.readAsDataURL(file);\n });\n}\n","import Chip from '@material-ui/core/Chip';\nimport Fab from '@material-ui/core/Fab';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport {withStyles} from '@material-ui/core/styles';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport clsx from 'clsx';\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst styles = ({palette, shape, spacing}) => ({\n root: {},\n imageContainer: {\n position: 'relative',\n zIndex: 10,\n textAlign: 'center',\n '&:hover $image': {\n opacity: 0.3,\n },\n '&:hover $removeButton': {\n opacity: 1,\n },\n },\n image: {\n height: 100,\n width: 'initial',\n maxWidth: '100%',\n color: palette.text.primary,\n transition: 'all 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms',\n boxSizing: 'border-box',\n boxShadow: 'rgba(0, 0, 0, 0.12) 0 1px 6px, rgba(0, 0, 0, 0.12) 0 1px 4px',\n borderRadius: shape.borderRadius,\n zIndex: 5,\n opacity: 1,\n },\n removeButton: {\n transition: '.5s ease',\n position: 'absolute',\n opacity: 0,\n top: spacing(-1),\n right: spacing(-1),\n width: 40,\n height: 40,\n '&:focus': {\n opacity: 1,\n },\n },\n});\n\nfunction PreviewList({\n fileObjects,\n handleRemove,\n showFileNames,\n useChipsForPreview,\n previewChipProps,\n previewGridClasses,\n previewGridProps,\n classes,\n getPreviewIcon,\n}) {\n if (useChipsForPreview) {\n return (\n \n {fileObjects.map((fileObject, i) => {\n return (\n \n \n \n );\n })}\n \n );\n }\n\n return (\n \n {fileObjects.map((fileObject, i) => {\n return (\n \n {getPreviewIcon(fileObject, classes)}\n\n {showFileNames && (\n \n {fileObject.file.name}\n \n )}\n\n \n \n \n \n );\n })}\n \n );\n}\n\nPreviewList.propTypes = {\n classes: PropTypes.object.isRequired,\n fileObjects: PropTypes.arrayOf(PropTypes.object).isRequired,\n getPreviewIcon: PropTypes.func.isRequired,\n handleRemove: PropTypes.func.isRequired,\n previewChipProps: PropTypes.object,\n previewGridClasses: PropTypes.object,\n previewGridProps: PropTypes.object,\n showFileNames: PropTypes.bool,\n useChipsForPreview: PropTypes.bool,\n};\n\nexport default withStyles(styles, {name: 'MuiDropzonePreviewList'})(PreviewList);\n","import IconButton from '@material-ui/core/IconButton';\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\nimport {withStyles} from '@material-ui/core/styles';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport CloseIcon from '@material-ui/icons/Close';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport InfoIcon from '@material-ui/icons/Info';\nimport WarningIcon from '@material-ui/icons/Warning';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n\nconst variantIcon = {\n success: CheckCircleIcon,\n warning: WarningIcon,\n error: ErrorIcon,\n info: InfoIcon,\n};\n\nconst styles = (theme) => ({\n successAlert: {\n backgroundColor: theme.palette.success.main,\n },\n errorAlert: {\n backgroundColor: theme.palette.error.main,\n },\n infoAlert: {\n backgroundColor: theme.palette.info.main,\n },\n warningAlert: {\n backgroundColor: theme.palette.warning.main,\n },\n message: {\n display: 'flex',\n alignItems: 'center',\n '& > svg': {\n marginRight: theme.spacing(1),\n },\n },\n icon: {\n fontSize: 20,\n opacity: 0.9,\n },\n closeButton: {},\n});\n\nfunction SnackbarContentWrapper(props) {\n const {classes, className, message, onClose, variant, ...other} = props;\n const Icon = variantIcon[variant];\n\n return (\n \n \n {message}\n \n }\n action={[\n \n \n ,\n ]}\n {...other}\n />\n );\n}\n\nSnackbarContentWrapper.propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n message: PropTypes.node,\n onClose: PropTypes.func,\n variant: PropTypes.oneOf(['success', 'warning', 'error', 'info']).isRequired,\n};\n\nexport default withStyles(styles, {name: 'MuiDropzoneSnackbar'})(SnackbarContentWrapper);\n","import Snackbar from '@material-ui/core/Snackbar';\nimport Typography from '@material-ui/core/Typography';\nimport {withStyles} from '@material-ui/core/styles';\nimport AttachFileIcon from '@material-ui/icons/AttachFile';\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport {Fragment} from 'react';\nimport Dropzone from 'react-dropzone';\nimport {convertBytesToMbsOrKbs, isImage, readFile} from '../helpers';\nimport PreviewList from './PreviewList';\nimport SnackbarContentWrapper from './SnackbarContentWrapper';\n\nconst styles = ({palette, shape, spacing}) => ({\n '@keyframes progress': {\n '0%': {\n backgroundPosition: '0 0',\n },\n '100%': {\n backgroundPosition: '-70px 0',\n },\n },\n root: {\n position: 'relative',\n width: '100%',\n minHeight: '250px',\n backgroundColor: palette.background.paper,\n border: 'dashed',\n borderColor: palette.divider,\n borderRadius: shape.borderRadius,\n boxSizing: 'border-box',\n cursor: 'pointer',\n overflow: 'hidden',\n },\n active: {\n animation: '$progress 2s linear infinite !important',\n // eslint-disable-next-line max-len\n backgroundImage: `repeating-linear-gradient(-45deg, ${palette.background.paper}, ${palette.background.paper} 25px, ${palette.divider} 25px, ${palette.divider} 50px)`,\n backgroundSize: '150% 100%',\n border: 'solid',\n borderColor: palette.primary.light,\n },\n invalid: {\n // eslint-disable-next-line max-len\n backgroundImage: `repeating-linear-gradient(-45deg, ${palette.error.light}, ${palette.error.light} 25px, ${palette.error.dark} 25px, ${palette.error.dark} 50px)`,\n borderColor: palette.error.main,\n },\n textContainer: {\n textAlign: 'center',\n },\n text: {\n marginBottom: spacing(3),\n marginTop: spacing(3),\n },\n icon: {\n width: 51,\n height: 51,\n color: palette.text.primary,\n },\n});\n\nconst defaultSnackbarAnchorOrigin = {\n horizontal: 'left',\n vertical: 'bottom',\n};\n\nconst defaultGetPreviewIcon = (fileObject, classes) => {\n if (isImage(fileObject.file)) {\n return ();\n }\n\n return ;\n};\n\n/**\n * This components creates a Material-UI Dropzone, with previews and snackbar notifications.\n */\nclass DropzoneAreaBase extends React.PureComponent {\n state = {\n openSnackBar: false,\n snackbarMessage: '',\n snackbarVariant: 'success',\n };\n\n notifyAlert() {\n const {onAlert} = this.props;\n const {openSnackBar, snackbarMessage, snackbarVariant} = this.state;\n if (openSnackBar && onAlert) {\n onAlert(snackbarMessage, snackbarVariant);\n }\n }\n\n handleDropAccepted = async(acceptedFiles, evt) => {\n const {fileObjects, filesLimit, getFileAddedMessage, getFileLimitExceedMessage, onAdd, onDrop} = this.props;\n\n if (filesLimit > 1 && fileObjects.length + acceptedFiles.length > filesLimit) {\n this.setState({\n openSnackBar: true,\n snackbarMessage: getFileLimitExceedMessage(filesLimit),\n snackbarVariant: 'error',\n }, this.notifyAlert);\n return;\n }\n\n // Notify Drop event\n if (onDrop) {\n onDrop(acceptedFiles, evt);\n }\n\n // Retrieve fileObjects data\n const fileObjs = await Promise.all(\n acceptedFiles.map(async(file) => {\n const data = await readFile(file);\n return {\n file,\n data,\n };\n })\n );\n\n // Notify added files\n if (onAdd) {\n onAdd(fileObjs);\n }\n\n // Display message\n const message = fileObjs.reduce((msg, fileObj) => msg + getFileAddedMessage(fileObj.file.name), '');\n this.setState({\n openSnackBar: true,\n snackbarMessage: message,\n snackbarVariant: 'success',\n }, this.notifyAlert);\n }\n\n handleDropRejected = (rejectedFiles, evt) => {\n const {\n acceptedFiles,\n filesLimit,\n fileObjects,\n getDropRejectMessage,\n getFileLimitExceedMessage,\n maxFileSize,\n onDropRejected,\n } = this.props;\n\n let message = '';\n if (fileObjects.length + rejectedFiles.length > filesLimit) {\n message = getFileLimitExceedMessage(filesLimit);\n } else {\n rejectedFiles.forEach((rejectedFile) => {\n message = getDropRejectMessage(rejectedFile, acceptedFiles, maxFileSize);\n });\n }\n\n if (onDropRejected) {\n onDropRejected(rejectedFiles, evt);\n }\n\n this.setState({\n openSnackBar: true,\n snackbarMessage: message,\n snackbarVariant: 'error',\n }, this.notifyAlert);\n }\n\n handleRemove = (fileIndex) => (event) => {\n event.stopPropagation();\n\n const {fileObjects, getFileRemovedMessage, onDelete} = this.props;\n\n // Find removed fileObject\n const removedFileObj = fileObjects[fileIndex];\n\n // Notify removed file\n if (onDelete) {\n onDelete(removedFileObj, fileIndex);\n }\n\n this.setState({\n openSnackBar: true,\n snackbarMessage: getFileRemovedMessage(removedFileObj.file.name),\n snackbarVariant: 'info',\n }, this.notifyAlert);\n };\n\n handleCloseSnackbar = () => {\n this.setState({\n openSnackBar: false,\n });\n };\n\n render() {\n const {\n acceptedFiles,\n alertSnackbarProps,\n classes,\n disableRejectionFeedback,\n dropzoneClass,\n dropzoneParagraphClass,\n dropzoneProps,\n dropzoneText,\n fileObjects,\n filesLimit,\n getPreviewIcon,\n Icon,\n inputProps,\n maxFileSize,\n previewChipProps,\n previewGridClasses,\n previewGridProps,\n previewText,\n showAlerts,\n showFileNames,\n showFileNamesInPreview,\n showPreviews,\n showPreviewsInDropzone,\n useChipsForPreview,\n } = this.props;\n const {openSnackBar, snackbarMessage, snackbarVariant} = this.state;\n\n const acceptFiles = acceptedFiles?.join(',');\n const isMultiple = filesLimit > 1;\n const previewsVisible = showPreviews && fileObjects.length > 0;\n const previewsInDropzoneVisible = showPreviewsInDropzone && fileObjects.length > 0;\n\n return (\n \n \n {({getRootProps, getInputProps, isDragActive, isDragReject}) => (\n \n \n\n
\n \n {dropzoneText}\n \n {Icon ? (\n \n ) : (\n \n )}\n
\n\n {previewsInDropzoneVisible &&\n \n }\n \n )}\n \n\n {previewsVisible &&\n \n \n {previewText}\n \n\n \n \n }\n\n {((typeof showAlerts === 'boolean' && showAlerts) ||\n (Array.isArray(showAlerts) && showAlerts.includes(snackbarVariant))) &&\n \n \n \n }\n
\n );\n }\n}\n\nDropzoneAreaBase.defaultProps = {\n acceptedFiles: [],\n filesLimit: 3,\n fileObjects: [],\n maxFileSize: 3000000,\n dropzoneText: 'Drag and drop a file here or click',\n previewText: 'Preview:',\n disableRejectionFeedback: false,\n showPreviews: false, // By default previews show up under in the dialog and inside in the standalone\n showPreviewsInDropzone: true,\n showFileNames: false,\n showFileNamesInPreview: false,\n useChipsForPreview: false,\n previewChipProps: {},\n previewGridClasses: {},\n previewGridProps: {},\n showAlerts: true,\n alertSnackbarProps: {\n anchorOrigin: {\n horizontal: 'left',\n vertical: 'bottom',\n },\n autoHideDuration: 6000,\n },\n getFileLimitExceedMessage: (filesLimit) => (`Maximum allowed number of files exceeded. Only ${filesLimit} allowed`),\n getFileAddedMessage: (fileName) => (`File ${fileName} successfully added.`),\n getPreviewIcon: defaultGetPreviewIcon,\n getFileRemovedMessage: (fileName) => (`File ${fileName} removed.`),\n getDropRejectMessage: (rejectedFile, acceptedFiles, maxFileSize) => {\n let message = `File ${rejectedFile.name} was rejected. `;\n if (!acceptedFiles.includes(rejectedFile.type)) {\n message += 'File type not supported. ';\n }\n if (rejectedFile.size > maxFileSize) {\n message += 'File is too big. Size limit is ' + convertBytesToMbsOrKbs(maxFileSize) + '. ';\n }\n return message;\n },\n};\n\nexport const FileObjectShape = PropTypes.shape({\n file: PropTypes.object,\n data: PropTypes.any,\n});\n\nDropzoneAreaBase.propTypes = {\n /** @ignore */\n classes: PropTypes.object.isRequired,\n /** A list of file types to accept.\n * @see See [here](https://react-dropzone.js.org/#section-accepting-specific-file-types) for more details.\n */\n acceptedFiles: PropTypes.arrayOf(PropTypes.string),\n /** Maximum number of files that can be loaded into the dropzone. */\n filesLimit: PropTypes.number,\n /** Icon to be displayed inside the dropzone area. */\n Icon: PropTypes.elementType,\n /** Currently loaded files. */\n fileObjects: PropTypes.arrayOf(FileObjectShape),\n /** Maximum file size (in bytes) that the dropzone will accept. */\n maxFileSize: PropTypes.number,\n /** Text inside the dropzone. */\n dropzoneText: PropTypes.string,\n /** Custom CSS class name for dropzone container. */\n dropzoneClass: PropTypes.string,\n /** Custom CSS class name for text inside the container. */\n dropzoneParagraphClass: PropTypes.string,\n /** Disable feedback effect when dropping rejected files. */\n disableRejectionFeedback: PropTypes.bool,\n /** Shows previews **BELOW** the dropzone. */\n showPreviews: PropTypes.bool,\n /** Shows preview **INSIDE** the dropzone area. */\n showPreviewsInDropzone: PropTypes.bool,\n /** Shows file name under the dropzone image. */\n showFileNames: PropTypes.bool,\n /** Shows file name under the image. */\n showFileNamesInPreview: PropTypes.bool,\n /** Uses deletable Material-UI Chip components to display file names. */\n useChipsForPreview: PropTypes.bool,\n /**\n * Props to pass to the Material-UI Chip components.
Requires `useChipsForPreview` prop to be `true`.\n *\n * @see See [Material-UI Chip](https://material-ui.com/api/chip/#props) for available values.\n */\n previewChipProps: PropTypes.object,\n /**\n * Custom CSS classNames for preview Grid components.
\n * Should be in the form {container: string, item: string, image: string}.\n */\n previewGridClasses: PropTypes.object,\n /**\n * Props to pass to the Material-UI Grid components.
\n * Should be in the form {container: GridProps, item: GridProps}.\n *\n * @see See [Material-UI Grid](https://material-ui.com/api/grid/#props) for available GridProps values.\n */\n previewGridProps: PropTypes.object,\n /** The label for the file preview section. */\n previewText: PropTypes.string,\n /**\n * Shows styled Material-UI Snackbar when files are dropped, deleted or rejected.\n *\n * - can be a boolean (\"global\" `true` or `false` for all alerts).\n * - can be an array, with values 'error', 'info', 'success' to select to view only certain alerts:\n * - showAlerts={['error']} for only errors.\n * - showAlerts={['error', 'info']} for both errors and info.\n * - showAlerts={['error', 'success', 'info']} is same as showAlerts={true}.\n * - showAlerts={[]} is same as showAlerts={false}.\n */\n showAlerts: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.arrayOf(PropTypes.oneOf(['error', 'success', 'info'])),\n ]),\n /**\n * Props to pass to the Material-UI Snackbar components.
Requires `showAlerts` prop to be `true`.\n *\n * @see See [Material-UI Snackbar](https://material-ui.com/api/snackbar/#props) for available values.\n */\n alertSnackbarProps: PropTypes.object,\n /**\n * Props to pass to the Dropzone component.\n *\n * @see See [Dropzone props](https://react-dropzone.js.org/#src) for available values.\n */\n dropzoneProps: PropTypes.object,\n /**\n * Attributes applied to the input element.\n *\n * @see See [MDN Input File attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#Additional_attributes) for available values.\n */\n inputProps: PropTypes.object,\n /**\n * Get alert message to display when files limit is exceed.\n *\n * *Default*: \"Maximum allowed number of files exceeded. Only ${filesLimit} allowed\"\n *\n * @param {number} filesLimit The `filesLimit` currently set for the component.\n */\n getFileLimitExceedMessage: PropTypes.func,\n /**\n * Get alert message to display when a new file is added.\n *\n * *Default*: \"File ${fileName} successfully added.\"\n *\n * @param {string} fileName The newly added file name.\n */\n getFileAddedMessage: PropTypes.func,\n /**\n * Get alert message to display when a file is removed.\n *\n * *Default*: \"File ${fileName} removed.\"\n *\n * @param {string} fileName The name of the removed file.\n */\n getFileRemovedMessage: PropTypes.func,\n /**\n * Get alert message to display when a file is rejected onDrop.\n *\n * *Default*: \"File ${rejectedFile.name} was rejected.\"\n *\n * @param {Object} rejectedFile The file that got rejected\n * @param {string[]} acceptedFiles The `acceptedFiles` prop currently set for the component\n * @param {number} maxFileSize The `maxFileSize` prop currently set for the component\n */\n getDropRejectMessage: PropTypes.func,\n /**\n * A function which determines which icon to display for a file preview.\n *\n * *Default*: If its an image then displays a preview the image, otherwise it will display an attachment icon\n *\n * @param {FileObject} objectFile The file which the preview will belong to\n * @param {Object} classes The classes for the file preview icon, in the default case we use the 'image' className.\n */\n getPreviewIcon: PropTypes.func,\n /**\n * Fired when new files are added to dropzone.\n *\n * @param {FileObject[]} newFiles The new files added to the dropzone.\n */\n onAdd: PropTypes.func,\n /**\n * Fired when a file is deleted from the previews panel.\n *\n * @param {FileObject} deletedFileObject The file that was removed.\n * @param {number} index The index of the removed file object.\n */\n onDelete: PropTypes.func,\n /**\n * Fired when the user drops files into the dropzone.\n *\n * @param {File[]} droppedFiles All the files dropped into the dropzone.\n * @param {Event} event The react-dropzone drop event.\n */\n onDrop: PropTypes.func,\n /**\n * Fired when a file is rejected because of wrong file type, size or goes beyond the filesLimit.\n *\n * @param {File[]} rejectedFiles All the rejected files.\n * @param {Event} event The react-dropzone drop event.\n */\n onDropRejected: PropTypes.func,\n /**\n * Fired when an alert is triggered.\n *\n * @param {string} message Alert message.\n * @param {string} variant One of \"error\", \"info\", \"success\".\n */\n onAlert: PropTypes.func,\n};\n\nexport default withStyles(styles, {name: 'MuiDropzoneArea'})(DropzoneAreaBase);\n","import PropTypes from 'prop-types';\nimport * as React from 'react';\n\nimport {createFileFromUrl, readFile} from '../helpers';\n\nimport DropzoneAreaBase from './DropzoneAreaBase';\n\nconst splitDropzoneAreaProps = (props) => {\n const {clearOnUnmount, initialFiles, onChange, onDelete, ...dropzoneAreaProps} = props;\n return [{clearOnUnmount, initialFiles, onChange, onDelete}, dropzoneAreaProps];\n};\n\n/**\n * This components creates an uncontrolled Material-UI Dropzone, with previews and snackbar notifications.\n *\n * It supports all props of `DropzoneAreaBase` but keeps the files state internally.\n *\n * **Note** To listen to file changes use `onChange` event handler and notice that `onDelete` returns a `File` instance instead of `FileObject`.\n */\nclass DropzoneArea extends React.PureComponent {\n state = {\n fileObjects: [],\n }\n\n componentDidMount() {\n this.loadInitialFiles();\n }\n\n componentWillUnmount() {\n const {clearOnUnmount} = this.props;\n\n if (clearOnUnmount) {\n this.setState({\n fileObjects: [],\n }, this.notifyFileChange);\n }\n }\n\n notifyFileChange = () => {\n const {onChange} = this.props;\n const {fileObjects} = this.state;\n\n if (onChange) {\n onChange(fileObjects.map((fileObject) => fileObject.file));\n }\n }\n\n loadInitialFiles = async() => {\n const {initialFiles} = this.props;\n try {\n const fileObjs = await Promise.all(\n initialFiles.map(async(initialFile) => {\n let file;\n if (typeof initialFile === 'string' ) {\n file = await createFileFromUrl(initialFile);\n } else {\n file = initialFile;\n }\n const data = await readFile(file);\n\n return {\n file,\n data,\n };\n })\n );\n\n this.setState((state) => ({\n fileObjects: [].concat(\n state.fileObjects,\n fileObjs\n ),\n }), this.notifyFileChange);\n } catch (err) {\n console.log(err);\n }\n }\n\n addFiles = async(newFileObjects) => {\n const {filesLimit} = this.props;\n // Update component state\n this.setState((state) => {\n // Handle a single file\n if (filesLimit <= 1) {\n return {\n fileObjects: [].concat(newFileObjects[0]),\n };\n }\n\n // Handle multiple files\n return {\n fileObjects: [].concat(\n state.fileObjects,\n newFileObjects\n ),\n };\n }, this.notifyFileChange);\n }\n\n deleteFile = (removedFileObj, removedFileObjIdx) => {\n event.stopPropagation();\n\n const {onDelete} = this.props;\n const {fileObjects} = this.state;\n\n // Calculate remaining fileObjects array\n const remainingFileObjs = fileObjects.filter((fileObject, i) => {\n return i !== removedFileObjIdx;\n });\n\n // Notify removed file\n if (onDelete) {\n onDelete(removedFileObj.file);\n }\n\n // Update local state\n this.setState({\n fileObjects: remainingFileObjs,\n }, this.notifyFileChange);\n }\n\n render() {\n const [, dropzoneAreaProps] = splitDropzoneAreaProps(this.props);\n const {fileObjects} = this.state;\n\n return (\n \n );\n }\n}\n\nDropzoneArea.defaultProps = {\n clearOnUnmount: true,\n filesLimit: 3,\n initialFiles: [],\n};\n\nDropzoneArea.propTypes = {\n ...DropzoneAreaBase.propTypes,\n /** Clear uploaded files when component is unmounted. */\n clearOnUnmount: PropTypes.bool,\n /** List containing File objects or URL strings.
\n * **Note:** Please take care of CORS.\n */\n initialFiles: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.any,\n ])\n ),\n /** Maximum number of files that can be loaded into the dropzone. */\n filesLimit: PropTypes.number,\n /**\n * Fired when the files inside dropzone change.\n *\n * @param {File[]} loadedFiles All the files currently loaded into the dropzone.\n */\n onChange: PropTypes.func,\n /**\n * Fired when a file is deleted from the previews panel.\n *\n * @param {File} deletedFile The file that was removed.\n */\n onDelete: PropTypes.func,\n};\n\nexport default DropzoneArea;\n","import Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n\nimport DropzoneAreaBase from './DropzoneAreaBase';\n\n// Split props related to DropzoneDialog from DropzoneArea ones\nfunction splitDropzoneDialogProps(allProps) {\n const {\n cancelButtonText,\n dialogProps,\n dialogTitle,\n fullWidth,\n maxWidth,\n onClose,\n onSave,\n open,\n submitButtonText,\n ...dropzoneAreaProps\n } = allProps;\n\n return [\n {\n cancelButtonText,\n dialogProps,\n dialogTitle,\n fullWidth,\n maxWidth,\n onClose,\n onSave,\n open,\n submitButtonText,\n },\n dropzoneAreaProps,\n ];\n}\n\n/**\n * This component provides the DropzoneArea inside of a Material-UI Dialog.\n *\n * It supports all the Props and Methods from `DropzoneAreaBase`.\n */\nclass DropzoneDialogBase extends React.PureComponent {\n render() {\n const [dropzoneDialogProps, dropzoneAreaProps] = splitDropzoneDialogProps(this.props);\n const {\n cancelButtonText,\n dialogProps,\n dialogTitle,\n fullWidth,\n maxWidth,\n onClose,\n onSave,\n open,\n submitButtonText,\n } = dropzoneDialogProps;\n\n // Submit button state\n const submitDisabled = dropzoneAreaProps.fileObjects.length === 0;\n\n return (\n \n {dialogTitle}\n\n \n \n \n\n \n \n {cancelButtonText}\n \n\n \n {submitButtonText}\n \n \n \n );\n }\n}\n\nDropzoneDialogBase.defaultProps = {\n open: false,\n dialogTitle: 'Upload file',\n dialogProps: {},\n fullWidth: true,\n maxWidth: 'sm',\n cancelButtonText: 'Cancel',\n submitButtonText: 'Submit',\n showPreviews: true,\n showPreviewsInDropzone: false,\n showFileNamesInPreview: true,\n};\n\nDropzoneDialogBase.propTypes = {\n ...DropzoneAreaBase.propTypes,\n /** Sets whether the dialog is open or closed. */\n open: PropTypes.bool,\n /** The Dialog title. */\n dialogTitle: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n ]),\n /**\n * Props to pass to the Material-UI Dialog components.\n * @see See [Material-UI Dialog](https://material-ui.com/api/dialog/#props) for available values.\n */\n dialogProps: PropTypes.object,\n /**\n * If `true`, the dialog stretches to `maxWidth`.
\n * Notice that the dialog width grow is limited by the default margin.\n */\n fullWidth: PropTypes.bool,\n /**\n * Determine the max-width of the dialog. The dialog width grows with the size of the screen.
\n * Set to `false` to disable `maxWidth`.\n */\n maxWidth: PropTypes.string,\n /** Cancel button text in dialog. */\n cancelButtonText: PropTypes.string,\n /** Submit button text in dialog. */\n submitButtonText: PropTypes.string,\n /**\n * Fired when the modal is closed.\n *\n * @param {SyntheticEvent} event The react `SyntheticEvent`\n */\n onClose: PropTypes.func,\n /**\n * Fired when the user clicks the Submit button.\n *\n * @param {SyntheticEvent} event The react `SyntheticEvent`\n */\n onSave: PropTypes.func,\n /**\n * Shows previews **BELOW** the dropzone.
\n * **Note:** By default previews show up under in the Dialog and inside in the standalone.\n */\n showPreviews: PropTypes.bool,\n /** Shows preview **INSIDE** the dropzone area. */\n showPreviewsInDropzone: PropTypes.bool,\n /** Shows file name under the image. */\n showFileNamesInPreview: PropTypes.bool,\n};\n\nexport default DropzoneDialogBase;\n","import PropTypes from 'prop-types';\nimport * as React from 'react';\n\nimport {createFileFromUrl, readFile} from '../helpers';\n\nimport DropzoneDialogBase from './DropzoneDialogBase';\n\n\n/**\n * This component provides an uncontrolled version of the DropzoneDialogBase component.\n *\n * It supports all the Props and Methods from `DropzoneDialogBase` but keeps the files state internally.\n *\n * **Note** The `onSave` handler also returns `File[]` with all the accepted files.\n */\nclass DropzoneDialog extends React.PureComponent {\n state = {\n fileObjects: [],\n }\n\n componentDidMount() {\n this.loadInitialFiles();\n }\n\n componentWillUnmount() {\n const {clearOnUnmount} = this.props;\n\n if (clearOnUnmount) {\n this.setState({\n fileObjects: [],\n }, this.notifyFileChange);\n }\n }\n\n notifyFileChange = () => {\n const {onChange} = this.props;\n const {fileObjects} = this.state;\n\n if (onChange) {\n onChange(fileObjects.map((fileObject) => fileObject.file));\n }\n }\n\n loadInitialFiles = async() => {\n const {initialFiles} = this.props;\n try {\n const fileObjs = await Promise.all(\n initialFiles.map(async(initialFile) => {\n let file;\n if (typeof initialFile === 'string' ) {\n file = await createFileFromUrl(initialFile);\n } else {\n file = initialFile;\n }\n const data = await readFile(file);\n\n return {\n file,\n data,\n };\n })\n );\n\n this.setState((state) => ({\n fileObjects: [].concat(\n state.fileObjects,\n fileObjs\n ),\n }), this.notifyFileChange);\n } catch (err) {\n console.log(err);\n }\n }\n\n addFiles = async(newFileObjects) => {\n const {filesLimit} = this.props;\n // Update component state\n this.setState((state) => {\n // Handle a single file\n if (filesLimit <= 1) {\n return {\n fileObjects: [].concat(newFileObjects[0]),\n };\n }\n\n // Handle multiple files\n return {\n fileObjects: [].concat(\n state.fileObjects,\n newFileObjects\n ),\n };\n }, this.notifyFileChange);\n }\n\n deleteFile = (removedFileObj, removedFileObjIdx) => {\n event.stopPropagation();\n\n const {onDelete} = this.props;\n const {fileObjects} = this.state;\n\n // Calculate remaining fileObjects array\n const remainingFileObjs = fileObjects.filter((fileObject, i) => {\n return i !== removedFileObjIdx;\n });\n\n // Notify removed file\n if (onDelete) {\n onDelete(removedFileObj.file);\n }\n\n // Update local state\n this.setState({\n fileObjects: remainingFileObjs,\n }, this.notifyFileChange);\n }\n\n handleClose = (evt) => {\n const {clearOnUnmount, onClose} = this.props;\n\n if (onClose) {\n onClose(evt);\n }\n\n if (clearOnUnmount) {\n this.setState({\n fileObjects: [],\n }, this.notifyFileChange);\n }\n }\n\n handleSave = (evt) => {\n const {clearOnUnmount, onSave} = this.props;\n const {fileObjects} = this.state;\n\n if (onSave) {\n onSave(fileObjects.map((fileObject) => fileObject.file), evt);\n }\n\n if (clearOnUnmount) {\n this.setState({\n fileObjects: [],\n }, this.notifyFileChange);\n }\n }\n\n render() {\n const {fileObjects} = this.state;\n\n return (\n \n );\n }\n}\n\nDropzoneDialog.defaultProps = {\n clearOnUnmount: true,\n filesLimit: 3,\n initialFiles: [],\n};\n\nDropzoneDialog.propTypes = {\n ...DropzoneDialogBase.propTypes,\n /** Clear uploaded files when component is unmounted. */\n clearOnUnmount: PropTypes.bool,\n /** Maximum number of files that can be loaded into the dropzone. */\n filesLimit: PropTypes.number,\n /** List containing File objects or URL strings.
\n * **Note:** Please take care of CORS.\n */\n initialFiles: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.any,\n ])\n ),\n /**\n * Fired when the user clicks the Submit button.\n *\n * @param {File[]} files All the files currently inside the Dropzone.\n * @param {SyntheticEvent} event The react `SyntheticEvent`.\n */\n onSave: PropTypes.func,\n};\n\nexport default DropzoneDialog;\n"],"names":["isImage","file","type","split","convertBytesToMbsOrKbs","filesize","size","createFileFromUrl","url","fetch","response","blob","data","metadata","filename","replace","pop","File","readFile","Promise","resolve","reject","reader","FileReader","onload","event","target","result","onerror","abort","readAsDataURL","styles","palette","shape","spacing","root","imageContainer","position","zIndex","textAlign","opacity","image","height","width","maxWidth","color","text","primary","transition","boxSizing","boxShadow","borderRadius","removeButton","top","right","React.createElement","PreviewList","fileObjects","handleRemove","showFileNames","useChipsForPreview","previewChipProps","previewGridClasses","previewGridProps","classes","getPreviewIcon","container","clsx","map","fileObject","i","item","name","propTypes","PropTypes","object","isRequired","arrayOf","func","bool","withStyles","variantIcon","success","CheckCircleIcon","warning","WarningIcon","error","ErrorIcon","info","InfoIcon","theme","successAlert","backgroundColor","main","errorAlert","infoAlert","warningAlert","message","display","alignItems","marginRight","icon","fontSize","closeButton","SnackbarContentWrapper","props","className","onClose","variant","other","Icon","string","node","oneOf","backgroundPosition","minHeight","background","paper","border","borderColor","divider","cursor","overflow","active","animation","backgroundImage","backgroundSize","light","invalid","dark","textContainer","marginBottom","marginTop","defaultSnackbarAnchorOrigin","horizontal","vertical","defaultGetPreviewIcon","DropzoneAreaBase","state","openSnackBar","snackbarMessage","snackbarVariant","handleDropAccepted","acceptedFiles","evt","filesLimit","getFileAddedMessage","getFileLimitExceedMessage","onAdd","onDrop","length","setState","notifyAlert","all","fileObjs","reduce","msg","fileObj","handleDropRejected","rejectedFiles","getDropRejectMessage","maxFileSize","onDropRejected","forEach","rejectedFile","fileIndex","stopPropagation","getFileRemovedMessage","onDelete","removedFileObj","handleCloseSnackbar","onAlert","alertSnackbarProps","disableRejectionFeedback","dropzoneClass","dropzoneParagraphClass","dropzoneProps","dropzoneText","inputProps","previewText","showAlerts","showFileNamesInPreview","showPreviews","showPreviewsInDropzone","acceptFiles","join","isMultiple","previewsVisible","previewsInDropzoneVisible","getRootProps","getInputProps","isDragActive","isDragReject","Array","isArray","includes","React","defaultProps","anchorOrigin","autoHideDuration","fileName","FileObjectShape","any","number","elementType","oneOfType","splitDropzoneAreaProps","clearOnUnmount","initialFiles","onChange","dropzoneAreaProps","DropzoneArea","notifyFileChange","loadInitialFiles","initialFile","concat","console","log","addFiles","newFileObjects","deleteFile","removedFileObjIdx","remainingFileObjs","filter","splitDropzoneDialogProps","allProps","cancelButtonText","dialogProps","dialogTitle","fullWidth","onSave","open","submitButtonText","DropzoneDialogBase","dropzoneDialogProps","submitDisabled","element","DropzoneDialog","handleClose","handleSave"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,SAASA,OAAT,CAAiBC,IAAjB,EAAuB;AAC1B,MAAIA,IAAI,CAACC,IAAL,CAAUC,KAAV,CAAgB,GAAhB,EAAqB,CAArB,MAA4B,OAAhC,EAAyC;AACrC,WAAO,IAAP;AACH;AACJ;AAEM,SAASC,sBAAT,CAAgCC,QAAhC,EAA0C;AAC7C,MAAIC,IAAI,GAAG,EAAX;;AACA,MAAID,QAAQ,IAAI,OAAhB,EAAyB;AACrBC,IAAAA,IAAI,GAAID,QAAQ,GAAG,OAAZ,GAAuB,YAA9B;AACH,GAFD,MAEO,IAAIA,QAAQ,IAAI,IAAhB,EAAsB;AACzBC,IAAAA,IAAI,GAAID,QAAQ,GAAG,IAAZ,GAAoB,YAA3B;AACH,GAFM,MAEA;AACHC,IAAAA,IAAI,GAAGD,QAAQ,GAAG,QAAlB;AACH;;AACD,SAAOC,IAAP;AACH;SAEqBC,iBAAtB;AAAA;AAAA;;;gFAAO,iBAAiCC,GAAjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBACoBC,KAAK,CAACD,GAAD,CADzB;;AAAA;AACGE,YAAAA,QADH;AAAA;AAAA,mBAEgBA,QAAQ,CAACC,IAAT,EAFhB;;AAAA;AAEGC,YAAAA,IAFH;AAGGC,YAAAA,QAHH,GAGc;AAACX,cAAAA,IAAI,EAAEU,IAAI,CAACV;AAAZ,aAHd;AAIGY,YAAAA,QAJH,GAIcN,GAAG,CAACO,OAAJ,CAAY,MAAZ,EAAoB,EAApB,EAAwBZ,KAAxB,CAA8B,GAA9B,EAAmCa,GAAnC,EAJd;AAAA,6CAKI,IAAIC,IAAJ,CAAS,CAACL,IAAD,CAAT,EAAiBE,QAAjB,EAA2BD,QAA3B,CALJ;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;AAQA,SAASK,QAAT,CAAkBjB,IAAlB,EAAwB;AAC3B,SAAO,IAAIkB,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;AACpC,QAAMC,MAAM,GAAG,IAAIC,UAAJ,EAAf;;AACAD,IAAAA,MAAM,CAACE,MAAP,GAAgB,UAACC,KAAD,EAAW;AAAA;;AACvBL,MAAAA,OAAO,CAACK,KAAD,aAACA,KAAD,wCAACA,KAAK,CAAEC,MAAR,kDAAC,cAAeC,MAAhB,CAAP;AACH,KAFD;;AAGAL,IAAAA,MAAM,CAACM,OAAP,GAAiB,UAACH,KAAD,EAAW;AACxBH,MAAAA,MAAM,CAACO,KAAP;AACAR,MAAAA,MAAM,CAACI,KAAD,CAAN;AACH,KAHD;;AAIAH,IAAAA,MAAM,CAACQ,aAAP,CAAqB7B,IAArB;AACH,GAVM,CAAP;AAWH;;AC5BD,IAAM8B,MAAM,GAAG,SAATA,MAAS;AAAA,MAAEC,OAAF,QAAEA,OAAF;AAAA,MAAWC,KAAX,QAAWA,KAAX;AAAA,MAAkBC,OAAlB,QAAkBA,OAAlB;AAAA,SAAgC;AAC3CC,IAAAA,IAAI,EAAE,EADqC;AAE3CC,IAAAA,cAAc,EAAE;AACZC,MAAAA,QAAQ,EAAE,UADE;AAEZC,MAAAA,MAAM,EAAE,EAFI;AAGZC,MAAAA,SAAS,EAAE,QAHC;AAIZ,wBAAkB;AACdC,QAAAA,OAAO,EAAE;AADK,OAJN;AAOZ,+BAAyB;AACrBA,QAAAA,OAAO,EAAE;AADY;AAPb,KAF2B;AAa3CC,IAAAA,KAAK,EAAE;AACHC,MAAAA,MAAM,EAAE,GADL;AAEHC,MAAAA,KAAK,EAAE,SAFJ;AAGHC,MAAAA,QAAQ,EAAE,MAHP;AAIHC,MAAAA,KAAK,EAAEb,OAAO,CAACc,IAAR,CAAaC,OAJjB;AAKHC,MAAAA,UAAU,EAAE,8CALT;AAMHC,MAAAA,SAAS,EAAE,YANR;AAOHC,MAAAA,SAAS,EAAE,8DAPR;AAQHC,MAAAA,YAAY,EAAElB,KAAK,CAACkB,YARjB;AASHb,MAAAA,MAAM,EAAE,CATL;AAUHE,MAAAA,OAAO,EAAE;AAVN,KAboC;AAyB3CY,IAAAA,YAAY,EAAE;AACVJ,MAAAA,UAAU,EAAE,UADF;AAEVX,MAAAA,QAAQ,EAAE,UAFA;AAGVG,MAAAA,OAAO,EAAE,CAHC;AAIVa,MAAAA,GAAG,EAAEnB,OAAO,CAAC,CAAC,CAAF,CAJF;AAKVoB,MAAAA,KAAK,EAAEpB,OAAO,CAAC,CAAC,CAAF,CALJ;AAMVS,MAAAA,KAAK,EAAE,EANG;AAOVD,MAAAA,MAAM,EAAE,EAPE;AAQV,iBAAW;AACPF,QAAAA,OAAO,EAAE;AADF;AARD;AAzB6B,GAAhC;AAAA,CAAf;;yBA6G4Be,cAAC,UAAD;;AAtE5B,SAASC,WAAT,QAUG;AAAA,MATCC,WASD,SATCA,WASD;AAAA,MARCC,YAQD,SARCA,YAQD;AAAA,MAPCC,aAOD,SAPCA,aAOD;AAAA,MANCC,kBAMD,SANCA,kBAMD;AAAA,MALCC,gBAKD,SALCA,gBAKD;AAAA,MAJCC,kBAID,SAJCA,kBAID;AAAA,MAHCC,gBAGD,SAHCA,gBAGD;AAAA,MAFCC,OAED,SAFCA,OAED;AAAA,MADCC,cACD,SADCA,cACD;;AACC,MAAIL,kBAAJ,EAAwB;AACpB,wBACIL,cAAC,IAAD;AACI,MAAA,OAAO,EAAE,CADb;AAEI,MAAA,SAAS,EAAC;AAFd,OAGQQ,gBAAgB,CAACG,SAHzB;AAII,MAAA,SAAS,EAAE,IAJf;AAKI,MAAA,SAAS,EAAEC,IAAI,CAACH,OAAO,CAAC7B,IAAT,EAAe2B,kBAAkB,CAACI,SAAlC;AALnB,QAOKT,WAAW,CAACW,GAAZ,CAAgB,UAACC,UAAD,EAAaC,CAAb,EAAmB;AAAA;;AAChC,0BACIf,cAAC,IAAD,eACQQ,gBAAgB,CAACQ,IADzB;AAEI,QAAA,IAAI,EAAE,IAFV;AAGI,QAAA,GAAG,yDAAKF,UAAU,CAACpE,IAAhB,qDAAK,iBAAiBuE,IAAtB,yEAA8B,MAA9B,cAAwCF,CAAxC,CAHP;AAII,QAAA,SAAS,EAAEN,OAAO,CAAC5B;AAJvB,uBAMImB,cAAC,IAAD;AACI,QAAA,OAAO,EAAC;AADZ,SAEQM,gBAFR;AAGI,QAAA,KAAK,EAAEQ,UAAU,CAACpE,IAAX,CAAgBuE,IAH3B;AAII,QAAA,QAAQ,EAAEd,YAAY,CAACY,CAAD;AAJ1B,SANJ,CADJ;AAeH,KAhBA,CAPL,CADJ;AA2BH;;AAED,sBACIf,cAAC,IAAD;AACI,IAAA,OAAO,EAAE;AADb,KAEQQ,gBAAgB,CAACG,SAFzB;AAGI,IAAA,SAAS,EAAE,IAHf;AAII,IAAA,SAAS,EAAEC,IAAI,CAACH,OAAO,CAAC7B,IAAT,EAAe2B,kBAAkB,CAACI,SAAlC;AAJnB,MAMKT,WAAW,CAACW,GAAZ,CAAgB,UAACC,UAAD,EAAaC,CAAb,EAAmB;AAAA;;AAChC,wBACIf,cAAC,IAAD;AACI,MAAA,EAAE,EAAE;AADR,OAEQQ,gBAAgB,CAACQ,IAFzB;AAGI,MAAA,IAAI,EAAE,IAHV;AAII,MAAA,GAAG,2DAAKF,UAAU,CAACpE,IAAhB,sDAAK,kBAAiBuE,IAAtB,2EAA8B,MAA9B,cAAwCF,CAAxC,CAJP;AAKI,MAAA,SAAS,EAAEH,IAAI,CAACH,OAAO,CAAC5B,cAAT,EAAyB0B,kBAAkB,CAACS,IAA5C;AALnB,QAOKN,cAAc,CAACI,UAAD,EAAaL,OAAb,CAPnB,EASKL,aAAa,iBACVJ,cAAC,UAAD;AAAY,MAAA,OAAO,EAAC,OAApB;AAA4B,MAAA,SAAS,EAAC;AAAtC,OACKc,UAAU,CAACpE,IAAX,CAAgBuE,IADrB,CAVR,eAeIjB,cAAC,GAAD;AACI,MAAA,OAAO,EAAEG,YAAY,CAACY,CAAD,CADzB;AAEI,oBAAW,QAFf;AAGI,MAAA,SAAS,EAAEN,OAAO,CAACZ;AAHvB,aAfJ,CADJ;AAyBH,GA1BA,CANL,CADJ;AAoCH;;AAED,wCAAAI,WAAW,CAACiB,SAAZ,GAAwB;AACpBT,EAAAA,OAAO,EAAEU,SAAS,CAACC,MAAV,CAAiBC,UADN;AAEpBnB,EAAAA,WAAW,EAAEiB,SAAS,CAACG,OAAV,CAAkBH,SAAS,CAACC,MAA5B,EAAoCC,UAF7B;AAGpBX,EAAAA,cAAc,EAAES,SAAS,CAACI,IAAV,CAAeF,UAHX;AAIpBlB,EAAAA,YAAY,EAAEgB,SAAS,CAACI,IAAV,CAAeF,UAJT;AAKpBf,EAAAA,gBAAgB,EAAEa,SAAS,CAACC,MALR;AAMpBb,EAAAA,kBAAkB,EAAEY,SAAS,CAACC,MANV;AAOpBZ,EAAAA,gBAAgB,EAAEW,SAAS,CAACC,MAPR;AAQpBhB,EAAAA,aAAa,EAAEe,SAAS,CAACK,IARL;AASpBnB,EAAAA,kBAAkB,EAAEc,SAAS,CAACK;AATV,CAAxB;AAYA,oBAAeC,UAAU,CAACjD,MAAD,EAAS;AAACyC,EAAAA,IAAI,EAAE;AAAP,CAAT,CAAV,CAAqDhB,WAArD,CAAf;;AChIA,IAAMyB,WAAW,GAAG;AAChBC,EAAAA,OAAO,EAAEC,eADO;AAEhBC,EAAAA,OAAO,EAAEC,WAFO;AAGhBC,EAAAA,KAAK,EAAEC,SAHS;AAIhBC,EAAAA,IAAI,EAAEC;AAJU,CAApB;;AAOA,IAAM1D,QAAM,GAAG,SAATA,MAAS,CAAC2D,KAAD;AAAA,SAAY;AACvBC,IAAAA,YAAY,EAAE;AACVC,MAAAA,eAAe,EAAEF,KAAK,CAAC1D,OAAN,CAAckD,OAAd,CAAsBW;AAD7B,KADS;AAIvBC,IAAAA,UAAU,EAAE;AACRF,MAAAA,eAAe,EAAEF,KAAK,CAAC1D,OAAN,CAAcsD,KAAd,CAAoBO;AAD7B,KAJW;AAOvBE,IAAAA,SAAS,EAAE;AACPH,MAAAA,eAAe,EAAEF,KAAK,CAAC1D,OAAN,CAAcwD,IAAd,CAAmBK;AAD7B,KAPY;AAUvBG,IAAAA,YAAY,EAAE;AACVJ,MAAAA,eAAe,EAAEF,KAAK,CAAC1D,OAAN,CAAcoD,OAAd,CAAsBS;AAD7B,KAVS;AAavBI,IAAAA,OAAO,EAAE;AACLC,MAAAA,OAAO,EAAE,MADJ;AAELC,MAAAA,UAAU,EAAE,QAFP;AAGL,iBAAW;AACPC,QAAAA,WAAW,EAAEV,KAAK,CAACxD,OAAN,CAAc,CAAd;AADN;AAHN,KAbc;AAoBvBmE,IAAAA,IAAI,EAAE;AACFC,MAAAA,QAAQ,EAAE,EADR;AAEF9D,MAAAA,OAAO,EAAE;AAFP,KApBiB;AAwBvB+D,IAAAA,WAAW,EAAE;AAxBU,GAAZ;AAAA,CAAf;;AA2BA,SAASC,sBAAT,CAAgCC,KAAhC,EAAuC;AAAA,MAC5BzC,OAD4B,GAC+ByC,KAD/B,CAC5BzC,OAD4B;AAAA,MACnB0C,SADmB,GAC+BD,KAD/B,CACnBC,SADmB;AAAA,MACRT,OADQ,GAC+BQ,KAD/B,CACRR,OADQ;AAAA,MACCU,OADD,GAC+BF,KAD/B,CACCE,OADD;AAAA,MACUC,OADV,GAC+BH,KAD/B,CACUG,OADV;AAAA,MACsBC,KADtB,4BAC+BJ,KAD/B;;AAEnC,MAAMK,IAAI,GAAG7B,WAAW,CAAC2B,OAAD,CAAxB;AAEA,sBACIrD,cAAC,eAAD;AACI,IAAA,SAAS,EAAEY,IAAI,CAACH,OAAO,WAAI4C,OAAJ,WAAR,EAA6BF,SAA7B,CADnB;AAEI,wBAAiB,iBAFrB;AAGI,IAAA,OAAO,eACHnD;AAAM,MAAA,EAAE,EAAC,iBAAT;AAA2B,MAAA,SAAS,EAAES,OAAO,CAACiC;AAA9C,oBACI1C,cAAC,IAAD;AAAM,MAAA,SAAS,EAAES,OAAO,CAACqC;AAAzB,MADJ,EAEKJ,OAFL,CAJR;AASI,IAAA,MAAM,EAAE,cACJ1C,cAAC,UAAD;AACI,MAAA,GAAG,EAAC,OADR;AAEI,oBAAW,OAFf;AAGI,MAAA,KAAK,EAAC,SAHV;AAII,MAAA,SAAS,EAAES,OAAO,CAACuC,WAJvB;AAKI,MAAA,OAAO,EAAEI;AALb,oBAOIpD,cAAC,SAAD;AAAW,MAAA,SAAS,EAAES,OAAO,CAACqC;AAA9B,MAPJ,CADI;AATZ,KAoBQQ,KApBR,EADJ;AAwBH;;AAED,wCAAAL,sBAAsB,CAAC/B,SAAvB,GAAmC;AAC/BT,EAAAA,OAAO,EAAEU,SAAS,CAACC,MAAV,CAAiBC,UADK;AAE/B8B,EAAAA,SAAS,EAAEhC,SAAS,CAACqC,MAFU;AAG/Bd,EAAAA,OAAO,EAAEvB,SAAS,CAACsC,IAHY;AAI/BL,EAAAA,OAAO,EAAEjC,SAAS,CAACI,IAJY;AAK/B8B,EAAAA,OAAO,EAAElC,SAAS,CAACuC,KAAV,CAAgB,CAAC,SAAD,EAAY,SAAZ,EAAuB,OAAvB,EAAgC,MAAhC,CAAhB,EAAyDrC;AALnC,CAAnC;AAQA,+BAAeI,UAAU,CAACjD,QAAD,EAAS;AAACyC,EAAAA,IAAI,EAAE;AAAP,CAAT,CAAV,CAAkDgC,sBAAlD,CAAf;;;;;;ACtEA,IAAMzE,QAAM,GAAG,SAATA,MAAS;AAAA,MAAEC,OAAF,QAAEA,OAAF;AAAA,MAAWC,KAAX,QAAWA,KAAX;AAAA,MAAkBC,OAAlB,QAAkBA,OAAlB;AAAA,SAAgC;AAC3C,2BAAuB;AACnB,YAAM;AACFgF,QAAAA,kBAAkB,EAAE;AADlB,OADa;AAInB,cAAQ;AACJA,QAAAA,kBAAkB,EAAE;AADhB;AAJW,KADoB;AAS3C/E,IAAAA,IAAI,EAAE;AACFE,MAAAA,QAAQ,EAAE,UADR;AAEFM,MAAAA,KAAK,EAAE,MAFL;AAGFwE,MAAAA,SAAS,EAAE,OAHT;AAIFvB,MAAAA,eAAe,EAAE5D,OAAO,CAACoF,UAAR,CAAmBC,KAJlC;AAKFC,MAAAA,MAAM,EAAE,QALN;AAMFC,MAAAA,WAAW,EAAEvF,OAAO,CAACwF,OANnB;AAOFrE,MAAAA,YAAY,EAAElB,KAAK,CAACkB,YAPlB;AAQFF,MAAAA,SAAS,EAAE,YART;AASFwE,MAAAA,MAAM,EAAE,SATN;AAUFC,MAAAA,QAAQ,EAAE;AAVR,KATqC;AAqB3CC,IAAAA,MAAM,EAAE;AACJC,MAAAA,SAAS,EAAE,yCADP;AAEJ;AACAC,MAAAA,eAAe,8CAAuC7F,OAAO,CAACoF,UAAR,CAAmBC,KAA1D,eAAoErF,OAAO,CAACoF,UAAR,CAAmBC,KAAvF,oBAAsGrF,OAAO,CAACwF,OAA9G,oBAA+HxF,OAAO,CAACwF,OAAvI,WAHX;AAIJM,MAAAA,cAAc,EAAE,WAJZ;AAKJR,MAAAA,MAAM,EAAE,OALJ;AAMJC,MAAAA,WAAW,EAAEvF,OAAO,CAACe,OAAR,CAAgBgF;AANzB,KArBmC;AA6B3CC,IAAAA,OAAO,EAAE;AACL;AACAH,MAAAA,eAAe,8CAAuC7F,OAAO,CAACsD,KAAR,CAAcyC,KAArD,eAA+D/F,OAAO,CAACsD,KAAR,CAAcyC,KAA7E,oBAA4F/F,OAAO,CAACsD,KAAR,CAAc2C,IAA1G,oBAAwHjG,OAAO,CAACsD,KAAR,CAAc2C,IAAtI,WAFV;AAGLV,MAAAA,WAAW,EAAEvF,OAAO,CAACsD,KAAR,CAAcO;AAHtB,KA7BkC;AAkC3CqC,IAAAA,aAAa,EAAE;AACX3F,MAAAA,SAAS,EAAE;AADA,KAlC4B;AAqC3CO,IAAAA,IAAI,EAAE;AACFqF,MAAAA,YAAY,EAAEjG,OAAO,CAAC,CAAD,CADnB;AAEFkG,MAAAA,SAAS,EAAElG,OAAO,CAAC,CAAD;AAFhB,KArCqC;AAyC3CmE,IAAAA,IAAI,EAAE;AACF1D,MAAAA,KAAK,EAAE,EADL;AAEFD,MAAAA,MAAM,EAAE,EAFN;AAGFG,MAAAA,KAAK,EAAEb,OAAO,CAACc,IAAR,CAAaC;AAHlB;AAzCqC,GAAhC;AAAA,CAAf;;AAgDA,IAAMsF,2BAA2B,GAAG;AAChCC,EAAAA,UAAU,EAAE,MADoB;AAEhCC,EAAAA,QAAQ,EAAE;AAFsB,CAApC;;AAKA,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACnE,UAAD,EAAaL,OAAb,EAAyB;AACnD,MAAIhE,OAAO,CAACqE,UAAU,CAACpE,IAAZ,CAAX,EAA8B;AAC1B,wBAAQsD;AACJ,MAAA,SAAS,EAAES,OAAO,CAACvB,KADf;AAEJ,MAAA,IAAI,EAAC,cAFD;AAGJ,MAAA,GAAG,EAAE4B,UAAU,CAACzD;AAHZ,MAAR;AAKH;;AAED,sBAAO2C,cAAC,cAAD;AAAgB,IAAA,SAAS,EAAES,OAAO,CAACvB;AAAnC,IAAP;AACH,CAVD;AAYA;;;;;IAGMgG;;;;;;;;;;;;;;;UACFC,QAAQ;AACJC,MAAAA,YAAY,EAAE,KADV;AAEJC,MAAAA,eAAe,EAAE,EAFb;AAGJC,MAAAA,eAAe,EAAE;AAHb;;UAcRC;2EAAqB,kBAAMC,aAAN,EAAqBC,GAArB;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,8BACgF,MAAKvC,KADrF,EACVhD,WADU,eACVA,WADU,EACGwF,UADH,eACGA,UADH,EACeC,mBADf,eACeA,mBADf,EACoCC,yBADpC,eACoCA,yBADpC,EAC+DC,KAD/D,eAC+DA,KAD/D,EACsEC,MADtE,eACsEA,MADtE;;AAAA,sBAGbJ,UAAU,GAAG,CAAb,IAAkBxF,WAAW,CAAC6F,MAAZ,GAAqBP,aAAa,CAACO,MAAnC,GAA4CL,UAHjD;AAAA;AAAA;AAAA;;AAIb,sBAAKM,QAAL,CAAc;AACVZ,kBAAAA,YAAY,EAAE,IADJ;AAEVC,kBAAAA,eAAe,EAAEO,yBAAyB,CAACF,UAAD,CAFhC;AAGVJ,kBAAAA,eAAe,EAAE;AAHP,iBAAd,EAIG,MAAKW,WAJR;;AAJa;;AAAA;AAYjB;AACA,oBAAIH,MAAJ,EAAY;AACRA,kBAAAA,MAAM,CAACN,aAAD,EAAgBC,GAAhB,CAAN;AACH,iBAfgB;;;AAAA;AAAA,uBAkBM7H,OAAO,CAACsI,GAAR,CACnBV,aAAa,CAAC3E,GAAd;AAAA,uFAAkB,iBAAMnE,IAAN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mCACKiB,QAAQ,CAACjB,IAAD,CADb;;AAAA;AACRW,4BAAAA,IADQ;AAAA,6DAEP;AACHX,8BAAAA,IAAI,EAAJA,IADG;AAEHW,8BAAAA,IAAI,EAAJA;AAFG,6BAFO;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAlB;;AAAA;AAAA;AAAA;AAAA,oBADmB,CAlBN;;AAAA;AAkBX8I,gBAAAA,QAlBW;;AA4BjB;AACA,oBAAIN,KAAJ,EAAW;AACPA,kBAAAA,KAAK,CAACM,QAAD,CAAL;AACH,iBA/BgB;;;AAkCXzD,gBAAAA,OAlCW,GAkCDyD,QAAQ,CAACC,MAAT,CAAgB,UAACC,GAAD,EAAMC,OAAN;AAAA,yBAAkBD,GAAG,GAAGV,mBAAmB,CAACW,OAAO,CAAC5J,IAAR,CAAauE,IAAd,CAA3C;AAAA,iBAAhB,EAAgF,EAAhF,CAlCC;;AAmCjB,sBAAK+E,QAAL,CAAc;AACVZ,kBAAAA,YAAY,EAAE,IADJ;AAEVC,kBAAAA,eAAe,EAAE3C,OAFP;AAGV4C,kBAAAA,eAAe,EAAE;AAHP,iBAAd,EAIG,MAAKW,WAJR;;AAnCiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;UA0CrBM,qBAAqB,UAACC,aAAD,EAAgBf,GAAhB,EAAwB;AAAA,yBASrC,MAAKvC,KATgC;AAAA,UAErCsC,aAFqC,gBAErCA,aAFqC;AAAA,UAGrCE,UAHqC,gBAGrCA,UAHqC;AAAA,UAIrCxF,WAJqC,gBAIrCA,WAJqC;AAAA,UAKrCuG,oBALqC,gBAKrCA,oBALqC;AAAA,UAMrCb,yBANqC,gBAMrCA,yBANqC;AAAA,UAOrCc,WAPqC,gBAOrCA,WAPqC;AAAA,UAQrCC,cARqC,gBAQrCA,cARqC;AAWzC,UAAIjE,OAAO,GAAG,EAAd;;AACA,UAAIxC,WAAW,CAAC6F,MAAZ,GAAqBS,aAAa,CAACT,MAAnC,GAA4CL,UAAhD,EAA4D;AACxDhD,QAAAA,OAAO,GAAGkD,yBAAyB,CAACF,UAAD,CAAnC;AACH,OAFD,MAEO;AACHc,QAAAA,aAAa,CAACI,OAAd,CAAsB,UAACC,YAAD,EAAkB;AACpCnE,UAAAA,OAAO,GAAG+D,oBAAoB,CAACI,YAAD,EAAerB,aAAf,EAA8BkB,WAA9B,CAA9B;AACH,SAFD;AAGH;;AAED,UAAIC,cAAJ,EAAoB;AAChBA,QAAAA,cAAc,CAACH,aAAD,EAAgBf,GAAhB,CAAd;AACH;;AAED,YAAKO,QAAL,CAAc;AACVZ,QAAAA,YAAY,EAAE,IADJ;AAEVC,QAAAA,eAAe,EAAE3C,OAFP;AAGV4C,QAAAA,eAAe,EAAE;AAHP,OAAd,EAIG,MAAKW,WAJR;AAKH;;UAED9F,eAAe,UAAC2G,SAAD;AAAA,aAAe,UAAC5I,KAAD,EAAW;AACrCA,QAAAA,KAAK,CAAC6I,eAAN;AADqC,2BAGkB,MAAK7D,KAHvB;AAAA,YAG9BhD,WAH8B,gBAG9BA,WAH8B;AAAA,YAGjB8G,qBAHiB,gBAGjBA,qBAHiB;AAAA,YAGMC,QAHN,gBAGMA,QAHN;;AAMrC,YAAMC,cAAc,GAAGhH,WAAW,CAAC4G,SAAD,CAAlC,CANqC;;AASrC,YAAIG,QAAJ,EAAc;AACVA,UAAAA,QAAQ,CAACC,cAAD,EAAiBJ,SAAjB,CAAR;AACH;;AAED,cAAKd,QAAL,CAAc;AACVZ,UAAAA,YAAY,EAAE,IADJ;AAEVC,UAAAA,eAAe,EAAE2B,qBAAqB,CAACE,cAAc,CAACxK,IAAf,CAAoBuE,IAArB,CAF5B;AAGVqE,UAAAA,eAAe,EAAE;AAHP,SAAd,EAIG,MAAKW,WAJR;AAKH,OAlBc;AAAA;;UAoBfkB,sBAAsB,YAAM;AACxB,YAAKnB,QAAL,CAAc;AACVZ,QAAAA,YAAY,EAAE;AADJ,OAAd;AAGH;;;;;;;kCAzGa;AAAA,UACHgC,OADG,GACQ,KAAKlE,KADb,CACHkE,OADG;AAAA,wBAE+C,KAAKjC,KAFpD;AAAA,UAEHC,YAFG,eAEHA,YAFG;AAAA,UAEWC,eAFX,eAEWA,eAFX;AAAA,UAE4BC,eAF5B,eAE4BA,eAF5B;;AAGV,UAAIF,YAAY,IAAIgC,OAApB,EAA6B;AACzBA,QAAAA,OAAO,CAAC/B,eAAD,EAAkBC,eAAlB,CAAP;AACH;AACJ;;;6BAqGQ;AAAA;;AAAA,yBA0BD,KAAKpC,KA1BJ;AAAA,UAEDsC,aAFC,gBAEDA,aAFC;AAAA,UAGD6B,kBAHC,gBAGDA,kBAHC;AAAA,UAID5G,OAJC,gBAIDA,OAJC;AAAA,UAKD6G,wBALC,gBAKDA,wBALC;AAAA,UAMDC,aANC,gBAMDA,aANC;AAAA,UAODC,sBAPC,gBAODA,sBAPC;AAAA,UAQDC,aARC,gBAQDA,aARC;AAAA,UASDC,YATC,gBASDA,YATC;AAAA,UAUDxH,WAVC,gBAUDA,WAVC;AAAA,UAWDwF,UAXC,gBAWDA,UAXC;AAAA,UAYDhF,cAZC,gBAYDA,cAZC;AAAA,UAaD6C,IAbC,gBAaDA,IAbC;AAAA,UAcDoE,UAdC,gBAcDA,UAdC;AAAA,UAeDjB,WAfC,gBAeDA,WAfC;AAAA,UAgBDpG,gBAhBC,gBAgBDA,gBAhBC;AAAA,UAiBDC,kBAjBC,gBAiBDA,kBAjBC;AAAA,UAkBDC,gBAlBC,gBAkBDA,gBAlBC;AAAA,UAmBDoH,WAnBC,gBAmBDA,WAnBC;AAAA,UAoBDC,UApBC,gBAoBDA,UApBC;AAAA,UAqBDzH,aArBC,gBAqBDA,aArBC;AAAA,UAsBD0H,sBAtBC,gBAsBDA,sBAtBC;AAAA,UAuBDC,YAvBC,gBAuBDA,YAvBC;AAAA,UAwBDC,sBAxBC,gBAwBDA,sBAxBC;AAAA,UAyBD3H,kBAzBC,gBAyBDA,kBAzBC;AAAA,yBA2BoD,KAAK8E,KA3BzD;AAAA,UA2BEC,YA3BF,gBA2BEA,YA3BF;AAAA,UA2BgBC,eA3BhB,gBA2BgBA,eA3BhB;AAAA,UA2BiCC,eA3BjC,gBA2BiCA,eA3BjC;AA6BL,UAAM2C,WAAW,GAAGzC,aAAH,aAAGA,aAAH,uBAAGA,aAAa,CAAE0C,IAAf,CAAoB,GAApB,CAApB;AACA,UAAMC,UAAU,GAAGzC,UAAU,GAAG,CAAhC;AACA,UAAM0C,eAAe,GAAGL,YAAY,IAAI7H,WAAW,CAAC6F,MAAZ,GAAqB,CAA7D;AACA,UAAMsC,yBAAyB,GAAGL,sBAAsB,IAAI9H,WAAW,CAAC6F,MAAZ,GAAqB,CAAjF;AAEA,0BACI/F,cAAC,QAAD,qBACIA,cAAC,QAAD,eACQyH,aADR;AAEI,QAAA,MAAM,EAAEQ,WAFZ;AAGI,QAAA,cAAc,EAAE,KAAK1C,kBAHzB;AAII,QAAA,cAAc,EAAE,KAAKgB,kBAJzB;AAKI,QAAA,OAAO,EAAEG,WALb;AAMI,QAAA,QAAQ,EAAEyB;AANd,UAQK;AAAA,YAAEG,YAAF,SAAEA,YAAF;AAAA,YAAgBC,aAAhB,SAAgBA,aAAhB;AAAA,YAA+BC,YAA/B,SAA+BA,YAA/B;AAAA,YAA6CC,YAA7C,SAA6CA,YAA7C;AAAA,4BACGzI,qBACQsI,YAAY,CAAC;AACbnF,UAAAA,SAAS,EAAEvC,IAAI,CACXH,OAAO,CAAC7B,IADG,EAEX2I,aAFW,EAGXiB,YAHW,IAGK/H,OAAO,CAAC2D,MAHb,EAIV,CAACkD,wBAJS,IAImBmB,YAJnB,IAIoChI,OAAO,CAACgE,OAJ5C;AADF,SAAD,CADpB,eAUIzE,uBAAWuI,aAAa,CAACZ,UAAD,CAAxB,CAVJ,eAYI3H;AAAK,UAAA,SAAS,EAAES,OAAO,CAACkE;AAAxB,wBACI3E,cAAC,UAAD;AACI,UAAA,OAAO,EAAC,IADZ;AAEI,UAAA,SAAS,EAAC,GAFd;AAGI,UAAA,SAAS,EAAEY,IAAI,CAACH,OAAO,CAAClB,IAAT,EAAeiI,sBAAf;AAHnB,WAKKE,YALL,CADJ,EAQKnE,IAAI,gBACDvD,cAAC,IAAD;AAAM,UAAA,SAAS,EAAES,OAAO,CAACqC;AAAzB,UADC,gBAGD9C,cAAC,eAAD;AAAiB,UAAA,SAAS,EAAES,OAAO,CAACqC;AAApC,UAXR,CAZJ,EA2BKuF,yBAAyB,iBACtBrI,cAACC,aAAD;AACI,UAAA,WAAW,EAAEC,WADjB;AAEI,UAAA,YAAY,EAAE,MAAI,CAACC,YAFvB;AAGI,UAAA,cAAc,EAAEO,cAHpB;AAII,UAAA,aAAa,EAAEN,aAJnB;AAKI,UAAA,kBAAkB,EAAEC,kBALxB;AAMI,UAAA,gBAAgB,EAAEC,gBANtB;AAOI,UAAA,kBAAkB,EAAEC,kBAPxB;AAQI,UAAA,gBAAgB,EAAEC;AARtB,UA5BR,CADH;AAAA,OARL,CADJ,EAqDK4H,eAAe,iBACZpI,cAAC,QAAD,qBACIA,cAAC,UAAD;AAAY,QAAA,OAAO,EAAC,WAApB;AAAgC,QAAA,SAAS,EAAC;AAA1C,SACK4H,WADL,CADJ,eAKI5H,cAACC,aAAD;AACI,QAAA,WAAW,EAAEC,WADjB;AAEI,QAAA,YAAY,EAAE,KAAKC,YAFvB;AAGI,QAAA,cAAc,EAAEO,cAHpB;AAII,QAAA,aAAa,EAAEoH,sBAJnB;AAKI,QAAA,kBAAkB,EAAEzH,kBALxB;AAMI,QAAA,gBAAgB,EAAEC,gBANtB;AAOI,QAAA,kBAAkB,EAAEC,kBAPxB;AAQI,QAAA,gBAAgB,EAAEC;AARtB,QALJ,CAtDR,EAwEK,CAAE,OAAOqH,UAAP,KAAsB,SAAtB,IAAmCA,UAApC,IACGa,KAAK,CAACC,OAAN,CAAcd,UAAd,KAA6BA,UAAU,CAACe,QAAX,CAAoBtD,eAApB,CADjC,kBAEGtF,cAAC,QAAD;AACI,QAAA,YAAY,EAAE8E,2BADlB;AAEI,QAAA,gBAAgB,EAAE;AAFtB,SAGQuC,kBAHR;AAII,QAAA,IAAI,EAAEjC,YAJV;AAKI,QAAA,OAAO,EAAE,KAAK+B;AALlB,uBAOInH,cAACiD,wBAAD;AACI,QAAA,OAAO,EAAE,KAAKkE,mBADlB;AAEI,QAAA,OAAO,EAAE7B,eAFb;AAGI,QAAA,OAAO,EAAED;AAHb,QAPJ,CA1ER,CADJ;AA2FH;;;;EA/O0BwD;;AAkP/B3D,gBAAgB,CAAC4D,YAAjB,GAAgC;AAC5BtD,EAAAA,aAAa,EAAE,EADa;AAE5BE,EAAAA,UAAU,EAAE,CAFgB;AAG5BxF,EAAAA,WAAW,EAAE,EAHe;AAI5BwG,EAAAA,WAAW,EAAE,OAJe;AAK5BgB,EAAAA,YAAY,EAAE,oCALc;AAM5BE,EAAAA,WAAW,EAAE,UANe;AAO5BN,EAAAA,wBAAwB,EAAE,KAPE;AAQ5BS,EAAAA,YAAY,EAAE,KARc;AAQP;AACrBC,EAAAA,sBAAsB,EAAE,IATI;AAU5B5H,EAAAA,aAAa,EAAE,KAVa;AAW5B0H,EAAAA,sBAAsB,EAAE,KAXI;AAY5BzH,EAAAA,kBAAkB,EAAE,KAZQ;AAa5BC,EAAAA,gBAAgB,EAAE,EAbU;AAc5BC,EAAAA,kBAAkB,EAAE,EAdQ;AAe5BC,EAAAA,gBAAgB,EAAE,EAfU;AAgB5BqH,EAAAA,UAAU,EAAE,IAhBgB;AAiB5BR,EAAAA,kBAAkB,EAAE;AAChB0B,IAAAA,YAAY,EAAE;AACVhE,MAAAA,UAAU,EAAE,MADF;AAEVC,MAAAA,QAAQ,EAAE;AAFA,KADE;AAKhBgE,IAAAA,gBAAgB,EAAE;AALF,GAjBQ;AAwB5BpD,EAAAA,yBAAyB,EAAE,mCAACF,UAAD;AAAA,oEAAmEA,UAAnE;AAAA,GAxBC;AAyB5BC,EAAAA,mBAAmB,EAAE,6BAACsD,QAAD;AAAA,0BAAuBA,QAAvB;AAAA,GAzBO;AA0B5BvI,EAAAA,cAAc,EAAEuE,qBA1BY;AA2B5B+B,EAAAA,qBAAqB,EAAE,+BAACiC,QAAD;AAAA,0BAAuBA,QAAvB;AAAA,GA3BK;AA4B5BxC,EAAAA,oBAAoB,EAAE,8BAACI,YAAD,EAAerB,aAAf,EAA8BkB,WAA9B,EAA8C;AAChE,QAAIhE,OAAO,kBAAWmE,YAAY,CAAC5F,IAAxB,oBAAX;;AACA,QAAI,CAACuE,aAAa,CAACoD,QAAd,CAAuB/B,YAAY,CAAClK,IAApC,CAAL,EAAgD;AAC5C+F,MAAAA,OAAO,IAAI,2BAAX;AACH;;AACD,QAAImE,YAAY,CAAC9J,IAAb,GAAoB2J,WAAxB,EAAqC;AACjChE,MAAAA,OAAO,IAAI,oCAAoC7F,sBAAsB,CAAC6J,WAAD,CAA1D,GAA0E,IAArF;AACH;;AACD,WAAOhE,OAAP;AACH;AArC2B,CAAhC;AAwCA,AAAO,IAAMwG,eAAe,GAAG/H,SAAS,CAACzC,KAAV,CAAgB;AAC3ChC,EAAAA,IAAI,EAAEyE,SAAS,CAACC,MAD2B;AAE3C/D,EAAAA,IAAI,EAAE8D,SAAS,CAACgI;AAF2B,CAAhB,CAAxB;AAKP,wCAAAjE,gBAAgB,CAAChE,SAAjB,GAA6B;AACzB;AACAT,EAAAA,OAAO,EAAEU,SAAS,CAACC,MAAV,CAAiBC,UAFD;;AAGzB;;;AAGAmE,EAAAA,aAAa,EAAErE,SAAS,CAACG,OAAV,CAAkBH,SAAS,CAACqC,MAA5B,CANU;;AAOzB;AACAkC,EAAAA,UAAU,EAAEvE,SAAS,CAACiI,MARG;;AASzB;AACA7F,EAAAA,IAAI,EAAEpC,SAAS,CAACkI,WAVS;;AAWzB;AACAnJ,EAAAA,WAAW,EAAEiB,SAAS,CAACG,OAAV,CAAkB4H,eAAlB,CAZY;;AAazB;AACAxC,EAAAA,WAAW,EAAEvF,SAAS,CAACiI,MAdE;;AAezB;AACA1B,EAAAA,YAAY,EAAEvG,SAAS,CAACqC,MAhBC;;AAiBzB;AACA+D,EAAAA,aAAa,EAAEpG,SAAS,CAACqC,MAlBA;;AAmBzB;AACAgE,EAAAA,sBAAsB,EAAErG,SAAS,CAACqC,MApBT;;AAqBzB;AACA8D,EAAAA,wBAAwB,EAAEnG,SAAS,CAACK,IAtBX;;AAuBzB;AACAuG,EAAAA,YAAY,EAAE5G,SAAS,CAACK,IAxBC;;AAyBzB;AACAwG,EAAAA,sBAAsB,EAAE7G,SAAS,CAACK,IA1BT;;AA2BzB;AACApB,EAAAA,aAAa,EAAEe,SAAS,CAACK,IA5BA;;AA6BzB;AACAsG,EAAAA,sBAAsB,EAAE3G,SAAS,CAACK,IA9BT;;AA+BzB;AACAnB,EAAAA,kBAAkB,EAAEc,SAAS,CAACK,IAhCL;;AAiCzB;;;;;AAKAlB,EAAAA,gBAAgB,EAAEa,SAAS,CAACC,MAtCH;;AAuCzB;;;;AAIAb,EAAAA,kBAAkB,EAAEY,SAAS,CAACC,MA3CL;;AA4CzB;;;;;;AAMAZ,EAAAA,gBAAgB,EAAEW,SAAS,CAACC,MAlDH;;AAmDzB;AACAwG,EAAAA,WAAW,EAAEzG,SAAS,CAACqC,MApDE;;AAqDzB;;;;;;;;;;AAUAqE,EAAAA,UAAU,EAAE1G,SAAS,CAACmI,SAAV,CAAoB,CAC5BnI,SAAS,CAACK,IADkB,EAE5BL,SAAS,CAACG,OAAV,CAAkBH,SAAS,CAACuC,KAAV,CAAgB,CAAC,OAAD,EAAU,SAAV,EAAqB,MAArB,CAAhB,CAAlB,CAF4B,CAApB,CA/Da;;AAmEzB;;;;;AAKA2D,EAAAA,kBAAkB,EAAElG,SAAS,CAACC,MAxEL;;AAyEzB;;;;;AAKAqG,EAAAA,aAAa,EAAEtG,SAAS,CAACC,MA9EA;;AA+EzB;;;;;AAKAuG,EAAAA,UAAU,EAAExG,SAAS,CAACC,MApFG;;AAqFzB;;;;;;;AAOAwE,EAAAA,yBAAyB,EAAEzE,SAAS,CAACI,IA5FZ;;AA6FzB;;;;;;;AAOAoE,EAAAA,mBAAmB,EAAExE,SAAS,CAACI,IApGN;;AAqGzB;;;;;;;AAOAyF,EAAAA,qBAAqB,EAAE7F,SAAS,CAACI,IA5GR;;AA6GzB;;;;;;;;;AASAkF,EAAAA,oBAAoB,EAAEtF,SAAS,CAACI,IAtHP;;AAuHzB;;;;;;;;AAQAb,EAAAA,cAAc,EAAES,SAAS,CAACI,IA/HD;;AAgIzB;;;;;AAKAsE,EAAAA,KAAK,EAAE1E,SAAS,CAACI,IArIQ;;AAsIzB;;;;;;AAMA0F,EAAAA,QAAQ,EAAE9F,SAAS,CAACI,IA5IK;;AA6IzB;;;;;;AAMAuE,EAAAA,MAAM,EAAE3E,SAAS,CAACI,IAnJO;;AAoJzB;;;;;;AAMAoF,EAAAA,cAAc,EAAExF,SAAS,CAACI,IA1JD;;AA2JzB;;;;;;AAMA6F,EAAAA,OAAO,EAAEjG,SAAS,CAACI;AAjKM,CAA7B;AAoKA,yBAAeE,UAAU,CAACjD,QAAD,EAAS;AAACyC,EAAAA,IAAI,EAAE;AAAP,CAAT,CAAV,CAA8CiE,gBAA9C,CAAf;;;;;;AC9gBA,IAAMqE,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACrG,KAAD,EAAW;AAAA,MAC/BsG,cAD+B,GAC2CtG,KAD3C,CAC/BsG,cAD+B;AAAA,MACfC,YADe,GAC2CvG,KAD3C,CACfuG,YADe;AAAA,MACDC,QADC,GAC2CxG,KAD3C,CACDwG,QADC;AAAA,MACSzC,QADT,GAC2C/D,KAD3C,CACS+D,QADT;AAAA,MACsB0C,iBADtB,4BAC2CzG,KAD3C;;AAEtC,SAAO,CAAC;AAACsG,IAAAA,cAAc,EAAdA,cAAD;AAAiBC,IAAAA,YAAY,EAAZA,YAAjB;AAA+BC,IAAAA,QAAQ,EAARA,QAA/B;AAAyCzC,IAAAA,QAAQ,EAARA;AAAzC,GAAD,EAAqD0C,iBAArD,CAAP;AACH,CAHD;AAKA;;;;;;;;;IAOMC;;;;;;;;;;;;;;;UACFzE,QAAQ;AACJjF,MAAAA,WAAW,EAAE;AADT;;UAkBR2J,mBAAmB,YAAM;AAAA,UACdH,QADc,GACF,MAAKxG,KADH,CACdwG,QADc;AAAA,UAEdxJ,WAFc,GAEC,MAAKiF,KAFN,CAEdjF,WAFc;;AAIrB,UAAIwJ,QAAJ,EAAc;AACVA,QAAAA,QAAQ,CAACxJ,WAAW,CAACW,GAAZ,CAAgB,UAACC,UAAD;AAAA,iBAAgBA,UAAU,CAACpE,IAA3B;AAAA,SAAhB,CAAD,CAAR;AACH;AACJ;;UAEDoN,yFAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AACRL,cAAAA,YADQ,GACQ,MAAKvG,KADb,CACRuG,YADQ;AAAA;AAAA;AAAA,qBAGY7L,OAAO,CAACsI,GAAR,CACnBuD,YAAY,CAAC5I,GAAb;AAAA,qFAAiB,iBAAMkJ,WAAN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAET,OAAOA,WAAP,KAAuB,QAFd;AAAA;AAAA;AAAA;;AAAA;AAAA,iCAGI/M,iBAAiB,CAAC+M,WAAD,CAHrB;;AAAA;AAGTrN,0BAAAA,IAHS;AAAA;AAAA;;AAAA;AAKTA,0BAAAA,IAAI,GAAGqN,WAAP;;AALS;AAAA;AAAA,iCAOMpM,QAAQ,CAACjB,IAAD,CAPd;;AAAA;AAOPW,0BAAAA,IAPO;AAAA,2DASN;AACHX,4BAAAA,IAAI,EAAJA,IADG;AAEHW,4BAAAA,IAAI,EAAJA;AAFG,2BATM;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAjB;;AAAA;AAAA;AAAA;AAAA,kBADmB,CAHZ;;AAAA;AAGL8I,cAAAA,QAHK;;AAoBX,oBAAKH,QAAL,CAAc,UAACb,KAAD;AAAA,uBAAY;AACtBjF,kBAAAA,WAAW,EAAE,GAAG8J,MAAH,CACT7E,KAAK,CAACjF,WADG,EAETiG,QAFS;AADS,iBAAZ;AAAA,eAAd,EAKI,MAAK0D,gBALT;;AApBW;AAAA;;AAAA;AAAA;AAAA;AA2BXI,cAAAA,OAAO,CAACC,GAAR;;AA3BW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;UA+BnBC;2EAAW,kBAAMC,cAAN;AAAA;AAAA;AAAA;AAAA;AAAA;AACA1E,gBAAAA,UADA,GACc,MAAKxC,KADnB,CACAwC,UADA;;AAGP,sBAAKM,QAAL,CAAc,UAACb,KAAD,EAAW;AACrB;AACA,sBAAIO,UAAU,IAAI,CAAlB,EAAqB;AACjB,2BAAO;AACHxF,sBAAAA,WAAW,EAAE,GAAG8J,MAAH,CAAUI,cAAc,CAAC,CAAD,CAAxB;AADV,qBAAP;AAGH,mBANoB;;;AASrB,yBAAO;AACHlK,oBAAAA,WAAW,EAAE,GAAG8J,MAAH,CACT7E,KAAK,CAACjF,WADG,EAETkK,cAFS;AADV,mBAAP;AAMH,iBAfD,EAeG,MAAKP,gBAfR;;AAHO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;UAqBXQ,aAAa,UAACnD,cAAD,EAAiBoD,iBAAjB,EAAuC;AAChDpM,MAAAA,KAAK,CAAC6I,eAAN;AADgD,UAGzCE,QAHyC,GAG7B,MAAK/D,KAHwB,CAGzC+D,QAHyC;AAAA,UAIzC/G,WAJyC,GAI1B,MAAKiF,KAJqB,CAIzCjF,WAJyC;;AAOhD,UAAMqK,iBAAiB,GAAGrK,WAAW,CAACsK,MAAZ,CAAmB,UAAC1J,UAAD,EAAaC,CAAb,EAAmB;AAC5D,eAAOA,CAAC,KAAKuJ,iBAAb;AACH,OAFyB,CAA1B,CAPgD;;AAYhD,UAAIrD,QAAJ,EAAc;AACVA,QAAAA,QAAQ,CAACC,cAAc,CAACxK,IAAhB,CAAR;AACH,OAd+C;;;AAiBhD,YAAKsJ,QAAL,CAAc;AACV9F,QAAAA,WAAW,EAAEqK;AADH,OAAd,EAEG,MAAKV,gBAFR;AAGH;;;;;;;wCA/FmB;AAChB,WAAKC,gBAAL;AACH;;;2CAEsB;AAAA,UACZN,cADY,GACM,KAAKtG,KADX,CACZsG,cADY;;AAGnB,UAAIA,cAAJ,EAAoB;AAChB,aAAKxD,QAAL,CAAc;AACV9F,UAAAA,WAAW,EAAE;AADH,SAAd,EAEG,KAAK2J,gBAFR;AAGH;AACJ;;;6BAqFQ;AAAA,kCACyBN,sBAAsB,CAAC,KAAKrG,KAAN,CAD/C;AAAA;AAAA,UACIyG,iBADJ;;AAAA,UAEEzJ,WAFF,GAEiB,KAAKiF,KAFtB,CAEEjF,WAFF;AAIL,0BACIF,cAACkF,kBAAD,eACQyE,iBADR;AAEI,QAAA,WAAW,EAAEzJ,WAFjB;AAGI,QAAA,KAAK,EAAE,KAAKiK,QAHhB;AAII,QAAA,QAAQ,EAAE,KAAKE;AAJnB,SADJ;AAQH;;;;EAlHsBxB;;AAqH3Be,YAAY,CAACd,YAAb,GAA4B;AACxBU,EAAAA,cAAc,EAAE,IADQ;AAExB9D,EAAAA,UAAU,EAAE,CAFY;AAGxB+D,EAAAA,YAAY,EAAE;AAHU,CAA5B;AAMA,wCAAAG,YAAY,CAAC1I,SAAb,gBACOgE,kBAAgB,CAAChE,SADxB;AAEI;AACAsI,EAAAA,cAAc,EAAErI,SAAS,CAACK,IAH9B;;AAII;;;AAGAiI,EAAAA,YAAY,EAAEtI,SAAS,CAACG,OAAV,CACVH,SAAS,CAACmI,SAAV,CAAoB,CAChBnI,SAAS,CAACqC,MADM,EAEhBrC,SAAS,CAACgI,GAFM,CAApB,CADU,CAPlB;;AAaI;AACAzD,EAAAA,UAAU,EAAEvE,SAAS,CAACiI,MAd1B;;AAeI;;;;;AAKAM,EAAAA,QAAQ,EAAEvI,SAAS,CAACI,IApBxB;;AAqBI;;;;;AAKA0F,EAAAA,QAAQ,EAAE9F,SAAS,CAACI;AA1BxB;;;;;;ACnIA,SAASkJ,wBAAT,CAAkCC,QAAlC,EAA4C;AAAA,MAEpCC,gBAFoC,GAYpCD,QAZoC,CAEpCC,gBAFoC;AAAA,MAGpCC,WAHoC,GAYpCF,QAZoC,CAGpCE,WAHoC;AAAA,MAIpCC,WAJoC,GAYpCH,QAZoC,CAIpCG,WAJoC;AAAA,MAKpCC,SALoC,GAYpCJ,QAZoC,CAKpCI,SALoC;AAAA,MAMpCzL,QANoC,GAYpCqL,QAZoC,CAMpCrL,QANoC;AAAA,MAOpC+D,OAPoC,GAYpCsH,QAZoC,CAOpCtH,OAPoC;AAAA,MAQpC2H,MARoC,GAYpCL,QAZoC,CAQpCK,MARoC;AAAA,MASpCC,IAToC,GAYpCN,QAZoC,CASpCM,IAToC;AAAA,MAUpCC,gBAVoC,GAYpCP,QAZoC,CAUpCO,gBAVoC;AAAA,MAWjCtB,iBAXiC,4BAYpCe,QAZoC;;AAcxC,SAAO,CACH;AACIC,IAAAA,gBAAgB,EAAhBA,gBADJ;AAEIC,IAAAA,WAAW,EAAXA,WAFJ;AAGIC,IAAAA,WAAW,EAAXA,WAHJ;AAIIC,IAAAA,SAAS,EAATA,SAJJ;AAKIzL,IAAAA,QAAQ,EAARA,QALJ;AAMI+D,IAAAA,OAAO,EAAPA,OANJ;AAOI2H,IAAAA,MAAM,EAANA,MAPJ;AAQIC,IAAAA,IAAI,EAAJA,IARJ;AASIC,IAAAA,gBAAgB,EAAhBA;AATJ,GADG,EAYHtB,iBAZG,CAAP;AAcH;AAED;;;;;;;IAKMuB;;;;;;;;;;;;;6BACO;AAAA,kCAC4CT,wBAAwB,CAAC,KAAKvH,KAAN,CADpE;AAAA;AAAA,UACEiI,mBADF;AAAA,UACuBxB,iBADvB;;AAAA,UAGDgB,gBAHC,GAYDQ,mBAZC,CAGDR,gBAHC;AAAA,UAIDC,WAJC,GAYDO,mBAZC,CAIDP,WAJC;AAAA,UAKDC,WALC,GAYDM,mBAZC,CAKDN,WALC;AAAA,UAMDC,SANC,GAYDK,mBAZC,CAMDL,SANC;AAAA,UAODzL,QAPC,GAYD8L,mBAZC,CAOD9L,QAPC;AAAA,UAQD+D,OARC,GAYD+H,mBAZC,CAQD/H,OARC;AAAA,UASD2H,MATC,GAYDI,mBAZC,CASDJ,MATC;AAAA,UAUDC,IAVC,GAYDG,mBAZC,CAUDH,IAVC;AAAA,UAWDC,gBAXC,GAYDE,mBAZC,CAWDF,gBAXC;;AAeL,UAAMG,cAAc,GAAGzB,iBAAiB,CAACzJ,WAAlB,CAA8B6F,MAA9B,KAAyC,CAAhE;AAEA,0BACI/F,cAAC,MAAD,eACQ4K,WADR;AAEI,QAAA,SAAS,EAAEE,SAFf;AAGI,QAAA,QAAQ,EAAEzL,QAHd;AAII,QAAA,OAAO,EAAE+D,OAJb;AAKI,QAAA,IAAI,EAAE4H;AALV,uBAOIhL,cAAC,WAAD,QAAc6K,WAAd,CAPJ,eASI7K,cAAC,aAAD,qBACIA,cAACkF,kBAAD,EACQyE,iBADR,CADJ,CATJ,eAeI3J,cAAC,aAAD,qBACIA,cAAC,MAAD;AACI,QAAA,KAAK,EAAC,SADV;AAEI,QAAA,OAAO,EAAEoD;AAFb,SAIKuH,gBAJL,CADJ,eAQI3K,cAAC,MAAD;AACI,QAAA,KAAK,EAAC,SADV;AAEI,QAAA,QAAQ,EAAEoL,cAFd;AAGI,QAAA,OAAO,EAAEL;AAHb,SAKKE,gBALL,CARJ,CAfJ,CADJ;AAkCH;;;;EApD4BpC;;AAuDjCqC,kBAAkB,CAACpC,YAAnB,GAAkC;AAC9BkC,EAAAA,IAAI,EAAE,KADwB;AAE9BH,EAAAA,WAAW,EAAE,aAFiB;AAG9BD,EAAAA,WAAW,EAAE,EAHiB;AAI9BE,EAAAA,SAAS,EAAE,IAJmB;AAK9BzL,EAAAA,QAAQ,EAAE,IALoB;AAM9BsL,EAAAA,gBAAgB,EAAE,QANY;AAO9BM,EAAAA,gBAAgB,EAAE,QAPY;AAQ9BlD,EAAAA,YAAY,EAAE,IARgB;AAS9BC,EAAAA,sBAAsB,EAAE,KATM;AAU9BF,EAAAA,sBAAsB,EAAE;AAVM,CAAlC;AAaA,wCAAAoD,kBAAkB,CAAChK,SAAnB,gBACOgE,kBAAgB,CAAChE,SADxB;AAEI;AACA8J,EAAAA,IAAI,EAAE7J,SAAS,CAACK,IAHpB;;AAII;AACAqJ,EAAAA,WAAW,EAAE1J,SAAS,CAACmI,SAAV,CAAoB,CAC7BnI,SAAS,CAACqC,MADmB,EAE7BrC,SAAS,CAACkK,OAFmB,CAApB,CALjB;;AASI;;;;AAIAT,EAAAA,WAAW,EAAEzJ,SAAS,CAACC,MAb3B;;AAcI;;;;AAIA0J,EAAAA,SAAS,EAAE3J,SAAS,CAACK,IAlBzB;;AAmBI;;;;AAIAnC,EAAAA,QAAQ,EAAE8B,SAAS,CAACqC,MAvBxB;;AAwBI;AACAmH,EAAAA,gBAAgB,EAAExJ,SAAS,CAACqC,MAzBhC;;AA0BI;AACAyH,EAAAA,gBAAgB,EAAE9J,SAAS,CAACqC,MA3BhC;;AA4BI;;;;;AAKAJ,EAAAA,OAAO,EAAEjC,SAAS,CAACI,IAjCvB;;AAkCI;;;;;AAKAwJ,EAAAA,MAAM,EAAE5J,SAAS,CAACI,IAvCtB;;AAwCI;;;;AAIAwG,EAAAA,YAAY,EAAE5G,SAAS,CAACK,IA5C5B;;AA6CI;AACAwG,EAAAA,sBAAsB,EAAE7G,SAAS,CAACK,IA9CtC;;AA+CI;AACAsG,EAAAA,sBAAsB,EAAE3G,SAAS,CAACK;AAhDtC;;;;;AC1GA;;;;;;;;IAOM8J;;;;;;;;;;;;;;;UACFnG,QAAQ;AACJjF,MAAAA,WAAW,EAAE;AADT;;UAkBR2J,mBAAmB,YAAM;AAAA,UACdH,QADc,GACF,MAAKxG,KADH,CACdwG,QADc;AAAA,UAEdxJ,WAFc,GAEC,MAAKiF,KAFN,CAEdjF,WAFc;;AAIrB,UAAIwJ,QAAJ,EAAc;AACVA,QAAAA,QAAQ,CAACxJ,WAAW,CAACW,GAAZ,CAAgB,UAACC,UAAD;AAAA,iBAAgBA,UAAU,CAACpE,IAA3B;AAAA,SAAhB,CAAD,CAAR;AACH;AACJ;;UAEDoN,yFAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AACRL,cAAAA,YADQ,GACQ,MAAKvG,KADb,CACRuG,YADQ;AAAA;AAAA;AAAA,qBAGY7L,OAAO,CAACsI,GAAR,CACnBuD,YAAY,CAAC5I,GAAb;AAAA,qFAAiB,iBAAMkJ,WAAN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAET,OAAOA,WAAP,KAAuB,QAFd;AAAA;AAAA;AAAA;;AAAA;AAAA,iCAGI/M,iBAAiB,CAAC+M,WAAD,CAHrB;;AAAA;AAGTrN,0BAAAA,IAHS;AAAA;AAAA;;AAAA;AAKTA,0BAAAA,IAAI,GAAGqN,WAAP;;AALS;AAAA;AAAA,iCAOMpM,QAAQ,CAACjB,IAAD,CAPd;;AAAA;AAOPW,0BAAAA,IAPO;AAAA,2DASN;AACHX,4BAAAA,IAAI,EAAJA,IADG;AAEHW,4BAAAA,IAAI,EAAJA;AAFG,2BATM;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAjB;;AAAA;AAAA;AAAA;AAAA,kBADmB,CAHZ;;AAAA;AAGL8I,cAAAA,QAHK;;AAoBX,oBAAKH,QAAL,CAAc,UAACb,KAAD;AAAA,uBAAY;AACtBjF,kBAAAA,WAAW,EAAE,GAAG8J,MAAH,CACT7E,KAAK,CAACjF,WADG,EAETiG,QAFS;AADS,iBAAZ;AAAA,eAAd,EAKI,MAAK0D,gBALT;;AApBW;AAAA;;AAAA;AAAA;AAAA;AA2BXI,cAAAA,OAAO,CAACC,GAAR;;AA3BW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;UA+BnBC;2EAAW,kBAAMC,cAAN;AAAA;AAAA;AAAA;AAAA;AAAA;AACA1E,gBAAAA,UADA,GACc,MAAKxC,KADnB,CACAwC,UADA;;AAGP,sBAAKM,QAAL,CAAc,UAACb,KAAD,EAAW;AACrB;AACA,sBAAIO,UAAU,IAAI,CAAlB,EAAqB;AACjB,2BAAO;AACHxF,sBAAAA,WAAW,EAAE,GAAG8J,MAAH,CAAUI,cAAc,CAAC,CAAD,CAAxB;AADV,qBAAP;AAGH,mBANoB;;;AASrB,yBAAO;AACHlK,oBAAAA,WAAW,EAAE,GAAG8J,MAAH,CACT7E,KAAK,CAACjF,WADG,EAETkK,cAFS;AADV,mBAAP;AAMH,iBAfD,EAeG,MAAKP,gBAfR;;AAHO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;UAqBXQ,aAAa,UAACnD,cAAD,EAAiBoD,iBAAjB,EAAuC;AAChDpM,MAAAA,KAAK,CAAC6I,eAAN;AADgD,UAGzCE,QAHyC,GAG7B,MAAK/D,KAHwB,CAGzC+D,QAHyC;AAAA,UAIzC/G,WAJyC,GAI1B,MAAKiF,KAJqB,CAIzCjF,WAJyC;;AAOhD,UAAMqK,iBAAiB,GAAGrK,WAAW,CAACsK,MAAZ,CAAmB,UAAC1J,UAAD,EAAaC,CAAb,EAAmB;AAC5D,eAAOA,CAAC,KAAKuJ,iBAAb;AACH,OAFyB,CAA1B,CAPgD;;AAYhD,UAAIrD,QAAJ,EAAc;AACVA,QAAAA,QAAQ,CAACC,cAAc,CAACxK,IAAhB,CAAR;AACH,OAd+C;;;AAiBhD,YAAKsJ,QAAL,CAAc;AACV9F,QAAAA,WAAW,EAAEqK;AADH,OAAd,EAEG,MAAKV,gBAFR;AAGH;;UAED0B,cAAc,UAAC9F,GAAD,EAAS;AAAA,wBACe,MAAKvC,KADpB;AAAA,UACZsG,cADY,eACZA,cADY;AAAA,UACIpG,OADJ,eACIA,OADJ;;AAGnB,UAAIA,OAAJ,EAAa;AACTA,QAAAA,OAAO,CAACqC,GAAD,CAAP;AACH;;AAED,UAAI+D,cAAJ,EAAoB;AAChB,cAAKxD,QAAL,CAAc;AACV9F,UAAAA,WAAW,EAAE;AADH,SAAd,EAEG,MAAK2J,gBAFR;AAGH;AACJ;;UAED2B,aAAa,UAAC/F,GAAD,EAAS;AAAA,yBACe,MAAKvC,KADpB;AAAA,UACXsG,cADW,gBACXA,cADW;AAAA,UACKuB,MADL,gBACKA,MADL;AAAA,UAEX7K,WAFW,GAEI,MAAKiF,KAFT,CAEXjF,WAFW;;AAIlB,UAAI6K,MAAJ,EAAY;AACRA,QAAAA,MAAM,CAAC7K,WAAW,CAACW,GAAZ,CAAgB,UAACC,UAAD;AAAA,iBAAgBA,UAAU,CAACpE,IAA3B;AAAA,SAAhB,CAAD,EAAmD+I,GAAnD,CAAN;AACH;;AAED,UAAI+D,cAAJ,EAAoB;AAChB,cAAKxD,QAAL,CAAc;AACV9F,UAAAA,WAAW,EAAE;AADH,SAAd,EAEG,MAAK2J,gBAFR;AAGH;AACJ;;;;;;;wCA5HmB;AAChB,WAAKC,gBAAL;AACH;;;2CAEsB;AAAA,UACZN,cADY,GACM,KAAKtG,KADX,CACZsG,cADY;;AAGnB,UAAIA,cAAJ,EAAoB;AAChB,aAAKxD,QAAL,CAAc;AACV9F,UAAAA,WAAW,EAAE;AADH,SAAd,EAEG,KAAK2J,gBAFR;AAGH;AACJ;;;6BAkHQ;AAAA,UACE3J,WADF,GACiB,KAAKiF,KADtB,CACEjF,WADF;AAGL,0BACIF,cAAC,kBAAD,eACQ,KAAKkD,KADb;AAEI,QAAA,WAAW,EAAEhD,WAFjB;AAGI,QAAA,KAAK,EAAE,KAAKiK,QAHhB;AAII,QAAA,QAAQ,EAAE,KAAKE,UAJnB;AAKI,QAAA,OAAO,EAAE,KAAKkB,WALlB;AAMI,QAAA,MAAM,EAAE,KAAKC;AANjB,SADJ;AAUH;;;;EAhJwB3C;;AAmJ7ByC,cAAc,CAACxC,YAAf,GAA8B;AAC1BU,EAAAA,cAAc,EAAE,IADU;AAE1B9D,EAAAA,UAAU,EAAE,CAFc;AAG1B+D,EAAAA,YAAY,EAAE;AAHY,CAA9B;AAMA,wCAAA6B,cAAc,CAACpK,SAAf,gBACOgK,kBAAkB,CAAChK,SAD1B;AAEI;AACAsI,EAAAA,cAAc,EAAErI,SAAS,CAACK,IAH9B;;AAII;AACAkE,EAAAA,UAAU,EAAEvE,SAAS,CAACiI,MAL1B;;AAMI;;;AAGAK,EAAAA,YAAY,EAAEtI,SAAS,CAACG,OAAV,CACVH,SAAS,CAACmI,SAAV,CAAoB,CAChBnI,SAAS,CAACqC,MADM,EAEhBrC,SAAS,CAACgI,GAFM,CAApB,CADU,CATlB;;AAeI;;;;;;AAMA4B,EAAAA,MAAM,EAAE5J,SAAS,CAACI;AArBtB;;;;"} \ No newline at end of file +{"version":3,"file":"index.es.js","sources":["../src/helpers.js","../src/components/PreviewList.js","../src/components/SnackbarContentWrapper.js","../src/components/DropzoneAreaBase.js","../src/components/DropzoneArea.js","../src/components/DropzoneDialogBase.js","../src/components/DropzoneDialog.js"],"sourcesContent":["export function isImage(file) {\n if (file.type.split('/')[0] === 'image') {\n return true;\n }\n}\n\nexport function convertBytesToMbsOrKbs(filesize) {\n let size = '';\n if (filesize >= 1048576) {\n size = (filesize / 1048576) + ' megabytes';\n } else if (filesize >= 1024) {\n size = (filesize / 1024) + ' kilobytes';\n } else {\n size = filesize + ' bytes';\n }\n return size;\n}\n\nexport async function createFileFromUrl(url) {\n const response = await fetch(url);\n const data = await response.blob();\n const metadata = {type: data.type};\n const filename = url.replace(/\\?.+/, '').split('/').pop();\n return new File([data], filename, metadata);\n}\n\nexport function readFile(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = (event) => {\n resolve(event?.target?.result);\n };\n reader.onerror = (event) => {\n reader.abort();\n reject(event);\n };\n reader.readAsDataURL(file);\n });\n}\n","import Chip from '@material-ui/core/Chip';\nimport Fab from '@material-ui/core/Fab';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport {withStyles} from '@material-ui/core/styles';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport clsx from 'clsx';\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst styles = ({palette, shape, spacing}) => ({\n root: {},\n imageContainer: {\n position: 'relative',\n zIndex: 10,\n textAlign: 'center',\n '&:hover $image': {\n opacity: 0.3,\n },\n '&:hover $removeButton': {\n opacity: 1,\n },\n },\n image: {\n height: 100,\n width: 'initial',\n maxWidth: '100%',\n color: palette.text.primary,\n transition: 'all 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms',\n boxSizing: 'border-box',\n boxShadow: 'rgba(0, 0, 0, 0.12) 0 1px 6px, rgba(0, 0, 0, 0.12) 0 1px 4px',\n borderRadius: shape.borderRadius,\n zIndex: 5,\n opacity: 1,\n },\n removeButton: {\n transition: '.5s ease',\n position: 'absolute',\n opacity: 0,\n top: spacing(-1),\n right: spacing(-1),\n width: 40,\n height: 40,\n '&:focus': {\n opacity: 1,\n },\n },\n});\n\nfunction PreviewList({\n fileObjects,\n handleRemove,\n showFileNames,\n useChipsForPreview,\n previewChipProps,\n previewGridClasses,\n previewGridProps,\n classes,\n getPreviewIcon,\n}) {\n if (useChipsForPreview) {\n return (\n \n {fileObjects.map((fileObject, i) => {\n return (\n \n \n \n );\n })}\n \n );\n }\n\n return (\n \n {fileObjects.map((fileObject, i) => {\n return (\n \n {getPreviewIcon(fileObject, classes)}\n\n {showFileNames && (\n \n {fileObject.file.name}\n \n )}\n\n \n \n \n \n );\n })}\n \n );\n}\n\nPreviewList.propTypes = {\n classes: PropTypes.object.isRequired,\n fileObjects: PropTypes.arrayOf(PropTypes.object).isRequired,\n getPreviewIcon: PropTypes.func.isRequired,\n handleRemove: PropTypes.func.isRequired,\n previewChipProps: PropTypes.object,\n previewGridClasses: PropTypes.object,\n previewGridProps: PropTypes.object,\n showFileNames: PropTypes.bool,\n useChipsForPreview: PropTypes.bool,\n};\n\nexport default withStyles(styles, {name: 'MuiDropzonePreviewList'})(PreviewList);\n","import IconButton from '@material-ui/core/IconButton';\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\nimport {withStyles} from '@material-ui/core/styles';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport CloseIcon from '@material-ui/icons/Close';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport InfoIcon from '@material-ui/icons/Info';\nimport WarningIcon from '@material-ui/icons/Warning';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n\nconst variantIcon = {\n success: CheckCircleIcon,\n warning: WarningIcon,\n error: ErrorIcon,\n info: InfoIcon,\n};\n\nconst styles = (theme) => ({\n successAlert: {\n backgroundColor: theme.palette.success.main,\n },\n errorAlert: {\n backgroundColor: theme.palette.error.main,\n },\n infoAlert: {\n backgroundColor: theme.palette.info.main,\n },\n warningAlert: {\n backgroundColor: theme.palette.warning.main,\n },\n message: {\n display: 'flex',\n alignItems: 'center',\n '& > svg': {\n marginRight: theme.spacing(1),\n },\n },\n icon: {\n fontSize: 20,\n opacity: 0.9,\n },\n closeButton: {},\n});\n\nfunction SnackbarContentWrapper(props) {\n const {classes, className, message, onClose, variant, ...other} = props;\n const Icon = variantIcon[variant];\n\n return (\n \n \n {message}\n \n }\n action={[\n \n \n ,\n ]}\n {...other}\n />\n );\n}\n\nSnackbarContentWrapper.propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n message: PropTypes.node,\n onClose: PropTypes.func,\n variant: PropTypes.oneOf(['success', 'warning', 'error', 'info']).isRequired,\n};\n\nexport default withStyles(styles, {name: 'MuiDropzoneSnackbar'})(SnackbarContentWrapper);\n","import Snackbar from '@material-ui/core/Snackbar';\nimport Typography from '@material-ui/core/Typography';\nimport {withStyles} from '@material-ui/core/styles';\nimport AttachFileIcon from '@material-ui/icons/AttachFile';\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport {Fragment} from 'react';\nimport Dropzone from 'react-dropzone';\nimport {convertBytesToMbsOrKbs, isImage, readFile} from '../helpers';\nimport PreviewList from './PreviewList';\nimport SnackbarContentWrapper from './SnackbarContentWrapper';\n\nconst styles = ({palette, shape, spacing}) => ({\n '@keyframes progress': {\n '0%': {\n backgroundPosition: '0 0',\n },\n '100%': {\n backgroundPosition: '-70px 0',\n },\n },\n root: {\n position: 'relative',\n width: '100%',\n minHeight: '250px',\n backgroundColor: palette.background.paper,\n border: 'dashed',\n borderColor: palette.divider,\n borderRadius: shape.borderRadius,\n boxSizing: 'border-box',\n cursor: 'pointer',\n overflow: 'hidden',\n },\n active: {\n animation: '$progress 2s linear infinite !important',\n // eslint-disable-next-line max-len\n backgroundImage: `repeating-linear-gradient(-45deg, ${palette.background.paper}, ${palette.background.paper} 25px, ${palette.divider} 25px, ${palette.divider} 50px)`,\n backgroundSize: '150% 100%',\n border: 'solid',\n borderColor: palette.primary.light,\n },\n invalid: {\n // eslint-disable-next-line max-len\n backgroundImage: `repeating-linear-gradient(-45deg, ${palette.error.light}, ${palette.error.light} 25px, ${palette.error.dark} 25px, ${palette.error.dark} 50px)`,\n borderColor: palette.error.main,\n },\n textContainer: {\n textAlign: 'center',\n },\n text: {\n marginBottom: spacing(3),\n marginTop: spacing(3),\n },\n icon: {\n width: 51,\n height: 51,\n color: palette.text.primary,\n },\n});\n\nconst defaultSnackbarAnchorOrigin = {\n horizontal: 'left',\n vertical: 'bottom',\n};\n\nconst defaultGetPreviewIcon = (fileObject, classes) => {\n if (isImage(fileObject.file)) {\n return ();\n }\n\n return ;\n};\n\n/**\n * This components creates a Material-UI Dropzone, with previews and snackbar notifications.\n */\nclass DropzoneAreaBase extends React.PureComponent {\n state = {\n openSnackBar: false,\n snackbarMessage: '',\n snackbarVariant: 'success',\n };\n\n notifyAlert() {\n const {onAlert} = this.props;\n const {openSnackBar, snackbarMessage, snackbarVariant} = this.state;\n if (openSnackBar && onAlert) {\n onAlert(snackbarMessage, snackbarVariant);\n }\n }\n\n handleDropAccepted = async(acceptedFiles, evt) => {\n const {fileObjects, filesLimit, getFileAddedMessage, getFileErrorMessage, getFileLimitExceedMessage, onAdd, onDrop} = this.props;\n\n if (filesLimit > 1 && fileObjects.length + acceptedFiles.length > filesLimit) {\n this.setState({\n openSnackBar: true,\n snackbarMessage: getFileLimitExceedMessage(filesLimit),\n snackbarVariant: 'error',\n }, this.notifyAlert);\n return;\n }\n\n // Notify Drop event\n if (onDrop) {\n onDrop(acceptedFiles, evt);\n }\n\n // Retrieve fileObjects data\n const allFileObjs = await Promise.all(\n acceptedFiles.map(async(file) => {\n try {\n const data = await readFile(file);\n return {\n file,\n data,\n };\n } catch (error) {\n // native errors may happen, e.g. file not readable, ...\n const { target } = error;\n // If the error originates from FileReader, lookup the actual error from the FileReader\n const actualError = target instanceof FileReader ? target.error : error;\n return {\n file,\n error: actualError,\n };\n }\n })\n );\n\n const unreadableFiles = allFileObjs.filter(obj => obj.error != null);\n if (unreadableFiles.length > 0) {\n const message = unreadableFiles.reduce((msg, fileObj) => msg + getFileErrorMessage(fileObj.file, fileObj.error), '');\n this.setState({\n openSnackBar: true,\n snackbarMessage: message,\n snackbarVariant: 'error',\n }, this.notifyAlert);\n }\n\n const validFileObjs = allFileObjs.filter(obj => obj.error == null);\n\n if (validFileObjs.length <= 0) {\n return;\n }\n\n // Notify added files\n if (onAdd) {\n onAdd(validFileObjs);\n }\n\n // Display message\n const message = validFileObjs.reduce((msg, fileObj) => msg + getFileAddedMessage(fileObj.file.name), '');\n this.setState({\n openSnackBar: true,\n snackbarMessage: message,\n snackbarVariant: 'success',\n }, this.notifyAlert);\n }\n\n handleDropRejected = (rejectedFiles, evt) => {\n const {\n acceptedFiles,\n filesLimit,\n fileObjects,\n getDropRejectMessage,\n getFileLimitExceedMessage,\n maxFileSize,\n onDropRejected,\n } = this.props;\n\n let message = '';\n if (fileObjects.length + rejectedFiles.length > filesLimit) {\n message = getFileLimitExceedMessage(filesLimit);\n } else {\n rejectedFiles.forEach((rejectedFile) => {\n message = getDropRejectMessage(rejectedFile, acceptedFiles, maxFileSize);\n });\n }\n\n if (onDropRejected) {\n onDropRejected(rejectedFiles, evt);\n }\n\n this.setState({\n openSnackBar: true,\n snackbarMessage: message,\n snackbarVariant: 'error',\n }, this.notifyAlert);\n }\n\n handleRemove = (fileIndex) => (event) => {\n event.stopPropagation();\n\n const {fileObjects, getFileRemovedMessage, onDelete} = this.props;\n\n // Find removed fileObject\n const removedFileObj = fileObjects[fileIndex];\n\n // Notify removed file\n if (onDelete) {\n onDelete(removedFileObj, fileIndex);\n }\n\n this.setState({\n openSnackBar: true,\n snackbarMessage: getFileRemovedMessage(removedFileObj.file.name),\n snackbarVariant: 'info',\n }, this.notifyAlert);\n };\n\n handleCloseSnackbar = () => {\n this.setState({\n openSnackBar: false,\n });\n };\n\n render() {\n const {\n acceptedFiles,\n alertSnackbarProps,\n classes,\n disableRejectionFeedback,\n dropzoneClass,\n dropzoneParagraphClass,\n dropzoneProps,\n dropzoneText,\n fileObjects,\n filesLimit,\n getPreviewIcon,\n Icon,\n inputProps,\n maxFileSize,\n previewChipProps,\n previewGridClasses,\n previewGridProps,\n previewText,\n showAlerts,\n showFileNames,\n showFileNamesInPreview,\n showPreviews,\n showPreviewsInDropzone,\n useChipsForPreview,\n } = this.props;\n const {openSnackBar, snackbarMessage, snackbarVariant} = this.state;\n\n const acceptFiles = acceptedFiles?.join(',');\n const isMultiple = filesLimit > 1;\n const previewsVisible = showPreviews && fileObjects.length > 0;\n const previewsInDropzoneVisible = showPreviewsInDropzone && fileObjects.length > 0;\n\n return (\n \n \n {({getRootProps, getInputProps, isDragActive, isDragReject}) => (\n \n \n\n
\n \n {dropzoneText}\n \n {Icon ? (\n \n ) : (\n \n )}\n
\n\n {previewsInDropzoneVisible &&\n \n }\n \n )}\n \n\n {previewsVisible &&\n \n \n {previewText}\n \n\n \n \n }\n\n {((typeof showAlerts === 'boolean' && showAlerts) ||\n (Array.isArray(showAlerts) && showAlerts.includes(snackbarVariant))) &&\n \n \n \n }\n
\n );\n }\n}\n\nDropzoneAreaBase.defaultProps = {\n acceptedFiles: [],\n filesLimit: 3,\n fileObjects: [],\n maxFileSize: 3000000,\n dropzoneText: 'Drag and drop a file here or click',\n previewText: 'Preview:',\n disableRejectionFeedback: false,\n showPreviews: false, // By default previews show up under in the dialog and inside in the standalone\n showPreviewsInDropzone: true,\n showFileNames: false,\n showFileNamesInPreview: false,\n useChipsForPreview: false,\n previewChipProps: {},\n previewGridClasses: {},\n previewGridProps: {},\n showAlerts: true,\n alertSnackbarProps: {\n anchorOrigin: {\n horizontal: 'left',\n vertical: 'bottom',\n },\n autoHideDuration: 6000,\n },\n getFileLimitExceedMessage: (filesLimit) => (`Maximum allowed number of files exceeded. Only ${filesLimit} allowed`),\n getFileAddedMessage: (fileName) => (`File ${fileName} successfully added.`),\n getFileErrorMessage: (file, error) => (`Error opening file ${file.name}`),\n getPreviewIcon: defaultGetPreviewIcon,\n getFileRemovedMessage: (fileName) => (`File ${fileName} removed.`),\n getDropRejectMessage: (rejectedFile, acceptedFiles, maxFileSize) => {\n let message = `File ${rejectedFile.name} was rejected. `;\n if (!acceptedFiles.includes(rejectedFile.type)) {\n message += 'File type not supported. ';\n }\n if (rejectedFile.size > maxFileSize) {\n message += 'File is too big. Size limit is ' + convertBytesToMbsOrKbs(maxFileSize) + '. ';\n }\n return message;\n },\n};\n\nexport const FileObjectShape = PropTypes.shape({\n file: PropTypes.object,\n data: PropTypes.any,\n});\n\nDropzoneAreaBase.propTypes = {\n /** @ignore */\n classes: PropTypes.object.isRequired,\n /** A list of file types to accept.\n * @see See [here](https://react-dropzone.js.org/#section-accepting-specific-file-types) for more details.\n */\n acceptedFiles: PropTypes.arrayOf(PropTypes.string),\n /** Maximum number of files that can be loaded into the dropzone. */\n filesLimit: PropTypes.number,\n /** Icon to be displayed inside the dropzone area. */\n Icon: PropTypes.elementType,\n /** Currently loaded files. */\n fileObjects: PropTypes.arrayOf(FileObjectShape),\n /** Maximum file size (in bytes) that the dropzone will accept. */\n maxFileSize: PropTypes.number,\n /** Text inside the dropzone. */\n dropzoneText: PropTypes.string,\n /** Custom CSS class name for dropzone container. */\n dropzoneClass: PropTypes.string,\n /** Custom CSS class name for text inside the container. */\n dropzoneParagraphClass: PropTypes.string,\n /** Disable feedback effect when dropping rejected files. */\n disableRejectionFeedback: PropTypes.bool,\n /** Shows previews **BELOW** the dropzone. */\n showPreviews: PropTypes.bool,\n /** Shows preview **INSIDE** the dropzone area. */\n showPreviewsInDropzone: PropTypes.bool,\n /** Shows file name under the dropzone image. */\n showFileNames: PropTypes.bool,\n /** Shows file name under the image. */\n showFileNamesInPreview: PropTypes.bool,\n /** Uses deletable Material-UI Chip components to display file names. */\n useChipsForPreview: PropTypes.bool,\n /**\n * Props to pass to the Material-UI Chip components.
Requires `useChipsForPreview` prop to be `true`.\n *\n * @see See [Material-UI Chip](https://material-ui.com/api/chip/#props) for available values.\n */\n previewChipProps: PropTypes.object,\n /**\n * Custom CSS classNames for preview Grid components.
\n * Should be in the form {container: string, item: string, image: string}.\n */\n previewGridClasses: PropTypes.object,\n /**\n * Props to pass to the Material-UI Grid components.
\n * Should be in the form {container: GridProps, item: GridProps}.\n *\n * @see See [Material-UI Grid](https://material-ui.com/api/grid/#props) for available GridProps values.\n */\n previewGridProps: PropTypes.object,\n /** The label for the file preview section. */\n previewText: PropTypes.string,\n /**\n * Shows styled Material-UI Snackbar when files are dropped, deleted or rejected.\n *\n * - can be a boolean (\"global\" `true` or `false` for all alerts).\n * - can be an array, with values 'error', 'info', 'success' to select to view only certain alerts:\n * - showAlerts={['error']} for only errors.\n * - showAlerts={['error', 'info']} for both errors and info.\n * - showAlerts={['error', 'success', 'info']} is same as showAlerts={true}.\n * - showAlerts={[]} is same as showAlerts={false}.\n */\n showAlerts: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.arrayOf(PropTypes.oneOf(['error', 'success', 'info'])),\n ]),\n /**\n * Props to pass to the Material-UI Snackbar components.
Requires `showAlerts` prop to be `true`.\n *\n * @see See [Material-UI Snackbar](https://material-ui.com/api/snackbar/#props) for available values.\n */\n alertSnackbarProps: PropTypes.object,\n /**\n * Props to pass to the Dropzone component.\n *\n * @see See [Dropzone props](https://react-dropzone.js.org/#src) for available values.\n */\n dropzoneProps: PropTypes.object,\n /**\n * Attributes applied to the input element.\n *\n * @see See [MDN Input File attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#Additional_attributes) for available values.\n */\n inputProps: PropTypes.object,\n /**\n * Get alert message to display when files limit is exceed.\n *\n * *Default*: \"Maximum allowed number of files exceeded. Only ${filesLimit} allowed\"\n *\n * @param {number} filesLimit The `filesLimit` currently set for the component.\n */\n getFileLimitExceedMessage: PropTypes.func,\n /**\n * Get alert message to display when a new file is added.\n *\n * *Default*: \"File ${fileName} successfully added.\"\n *\n * @param {string} fileName The newly added file name.\n */\n getFileAddedMessage: PropTypes.func,\n /**\n * Get alert message to display when an added file cannot be read.\n * \n * Basically all errors that might be thrown by FileReader API, e.g. when file is not accessible.\n *\n * *Default*: \"Error opening file ${file.name}\"\n *\n * @param {File} file The newly added file.\n * @param {Error} error The error thrown by FileReader API\n */\n getFileErrorMessage: PropTypes.func,\n /**\n * Get alert message to display when a file is removed.\n *\n * *Default*: \"File ${fileName} removed.\"\n *\n * @param {string} fileName The name of the removed file.\n */\n getFileRemovedMessage: PropTypes.func,\n /**\n * Get alert message to display when a file is rejected onDrop.\n *\n * *Default*: \"File ${rejectedFile.name} was rejected.\"\n *\n * @param {Object} rejectedFile The file that got rejected\n * @param {string[]} acceptedFiles The `acceptedFiles` prop currently set for the component\n * @param {number} maxFileSize The `maxFileSize` prop currently set for the component\n */\n getDropRejectMessage: PropTypes.func,\n /**\n * A function which determines which icon to display for a file preview.\n *\n * *Default*: If its an image then displays a preview the image, otherwise it will display an attachment icon\n *\n * @param {FileObject} objectFile The file which the preview will belong to\n * @param {Object} classes The classes for the file preview icon, in the default case we use the 'image' className.\n */\n getPreviewIcon: PropTypes.func,\n /**\n * Fired when new files are added to dropzone.\n *\n * @param {FileObject[]} newFiles The new files added to the dropzone.\n */\n onAdd: PropTypes.func,\n /**\n * Fired when a file is deleted from the previews panel.\n *\n * @param {FileObject} deletedFileObject The file that was removed.\n * @param {number} index The index of the removed file object.\n */\n onDelete: PropTypes.func,\n /**\n * Fired when the user drops files into the dropzone.\n *\n * @param {File[]} droppedFiles All the files dropped into the dropzone.\n * @param {Event} event The react-dropzone drop event.\n */\n onDrop: PropTypes.func,\n /**\n * Fired when a file is rejected because of wrong file type, size or goes beyond the filesLimit.\n *\n * @param {File[]} rejectedFiles All the rejected files.\n * @param {Event} event The react-dropzone drop event.\n */\n onDropRejected: PropTypes.func,\n /**\n * Fired when an alert is triggered.\n *\n * @param {string} message Alert message.\n * @param {string} variant One of \"error\", \"info\", \"success\".\n */\n onAlert: PropTypes.func,\n};\n\nexport default withStyles(styles, {name: 'MuiDropzoneArea'})(DropzoneAreaBase);\n","import PropTypes from 'prop-types';\nimport * as React from 'react';\n\nimport {createFileFromUrl, readFile} from '../helpers';\n\nimport DropzoneAreaBase from './DropzoneAreaBase';\n\nconst splitDropzoneAreaProps = (props) => {\n const {clearOnUnmount, initialFiles, onChange, onDelete, ...dropzoneAreaProps} = props;\n return [{clearOnUnmount, initialFiles, onChange, onDelete}, dropzoneAreaProps];\n};\n\n/**\n * This components creates an uncontrolled Material-UI Dropzone, with previews and snackbar notifications.\n *\n * It supports all props of `DropzoneAreaBase` but keeps the files state internally.\n *\n * **Note** To listen to file changes use `onChange` event handler and notice that `onDelete` returns a `File` instance instead of `FileObject`.\n */\nclass DropzoneArea extends React.PureComponent {\n state = {\n fileObjects: [],\n }\n\n componentDidMount() {\n this.loadInitialFiles();\n }\n\n componentWillUnmount() {\n const {clearOnUnmount} = this.props;\n\n if (clearOnUnmount) {\n this.setState({\n fileObjects: [],\n }, this.notifyFileChange);\n }\n }\n\n notifyFileChange = () => {\n const {onChange} = this.props;\n const {fileObjects} = this.state;\n\n if (onChange) {\n onChange(fileObjects.map((fileObject) => fileObject.file));\n }\n }\n\n loadInitialFiles = async() => {\n const {initialFiles} = this.props;\n try {\n const fileObjs = await Promise.all(\n initialFiles.map(async(initialFile) => {\n let file;\n if (typeof initialFile === 'string' ) {\n file = await createFileFromUrl(initialFile);\n } else {\n file = initialFile;\n }\n const data = await readFile(file);\n\n return {\n file,\n data,\n };\n })\n );\n\n this.setState((state) => ({\n fileObjects: [].concat(\n state.fileObjects,\n fileObjs\n ),\n }), this.notifyFileChange);\n } catch (err) {\n console.log(err);\n }\n }\n\n addFiles = async(newFileObjects) => {\n const {filesLimit} = this.props;\n // Update component state\n this.setState((state) => {\n // Handle a single file\n if (filesLimit <= 1) {\n return {\n fileObjects: [].concat(newFileObjects[0]),\n };\n }\n\n // Handle multiple files\n return {\n fileObjects: [].concat(\n state.fileObjects,\n newFileObjects\n ),\n };\n }, this.notifyFileChange);\n }\n\n deleteFile = (removedFileObj, removedFileObjIdx) => {\n event.stopPropagation();\n\n const {onDelete} = this.props;\n const {fileObjects} = this.state;\n\n // Calculate remaining fileObjects array\n const remainingFileObjs = fileObjects.filter((fileObject, i) => {\n return i !== removedFileObjIdx;\n });\n\n // Notify removed file\n if (onDelete) {\n onDelete(removedFileObj.file);\n }\n\n // Update local state\n this.setState({\n fileObjects: remainingFileObjs,\n }, this.notifyFileChange);\n }\n\n render() {\n const [, dropzoneAreaProps] = splitDropzoneAreaProps(this.props);\n const {fileObjects} = this.state;\n\n return (\n \n );\n }\n}\n\nDropzoneArea.defaultProps = {\n clearOnUnmount: true,\n filesLimit: 3,\n initialFiles: [],\n};\n\nDropzoneArea.propTypes = {\n ...DropzoneAreaBase.propTypes,\n /** Clear uploaded files when component is unmounted. */\n clearOnUnmount: PropTypes.bool,\n /** List containing File objects or URL strings.
\n * **Note:** Please take care of CORS.\n */\n initialFiles: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.any,\n ])\n ),\n /** Maximum number of files that can be loaded into the dropzone. */\n filesLimit: PropTypes.number,\n /**\n * Fired when the files inside dropzone change.\n *\n * @param {File[]} loadedFiles All the files currently loaded into the dropzone.\n */\n onChange: PropTypes.func,\n /**\n * Fired when a file is deleted from the previews panel.\n *\n * @param {File} deletedFile The file that was removed.\n */\n onDelete: PropTypes.func,\n};\n\nexport default DropzoneArea;\n","import Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n\nimport DropzoneAreaBase from './DropzoneAreaBase';\n\n// Split props related to DropzoneDialog from DropzoneArea ones\nfunction splitDropzoneDialogProps(allProps) {\n const {\n cancelButtonText,\n dialogProps,\n dialogTitle,\n fullWidth,\n maxWidth,\n onClose,\n onSave,\n open,\n submitButtonText,\n ...dropzoneAreaProps\n } = allProps;\n\n return [\n {\n cancelButtonText,\n dialogProps,\n dialogTitle,\n fullWidth,\n maxWidth,\n onClose,\n onSave,\n open,\n submitButtonText,\n },\n dropzoneAreaProps,\n ];\n}\n\n/**\n * This component provides the DropzoneArea inside of a Material-UI Dialog.\n *\n * It supports all the Props and Methods from `DropzoneAreaBase`.\n */\nclass DropzoneDialogBase extends React.PureComponent {\n render() {\n const [dropzoneDialogProps, dropzoneAreaProps] = splitDropzoneDialogProps(this.props);\n const {\n cancelButtonText,\n dialogProps,\n dialogTitle,\n fullWidth,\n maxWidth,\n onClose,\n onSave,\n open,\n submitButtonText,\n } = dropzoneDialogProps;\n\n // Submit button state\n const submitDisabled = dropzoneAreaProps.fileObjects.length === 0;\n\n return (\n \n {dialogTitle}\n\n \n \n \n\n \n \n {cancelButtonText}\n \n\n \n {submitButtonText}\n \n \n \n );\n }\n}\n\nDropzoneDialogBase.defaultProps = {\n open: false,\n dialogTitle: 'Upload file',\n dialogProps: {},\n fullWidth: true,\n maxWidth: 'sm',\n cancelButtonText: 'Cancel',\n submitButtonText: 'Submit',\n showPreviews: true,\n showPreviewsInDropzone: false,\n showFileNamesInPreview: true,\n};\n\nDropzoneDialogBase.propTypes = {\n ...DropzoneAreaBase.propTypes,\n /** Sets whether the dialog is open or closed. */\n open: PropTypes.bool,\n /** The Dialog title. */\n dialogTitle: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n ]),\n /**\n * Props to pass to the Material-UI Dialog components.\n * @see See [Material-UI Dialog](https://material-ui.com/api/dialog/#props) for available values.\n */\n dialogProps: PropTypes.object,\n /**\n * If `true`, the dialog stretches to `maxWidth`.
\n * Notice that the dialog width grow is limited by the default margin.\n */\n fullWidth: PropTypes.bool,\n /**\n * Determine the max-width of the dialog. The dialog width grows with the size of the screen.
\n * Set to `false` to disable `maxWidth`.\n */\n maxWidth: PropTypes.string,\n /** Cancel button text in dialog. */\n cancelButtonText: PropTypes.string,\n /** Submit button text in dialog. */\n submitButtonText: PropTypes.string,\n /**\n * Fired when the modal is closed.\n *\n * @param {SyntheticEvent} event The react `SyntheticEvent`\n */\n onClose: PropTypes.func,\n /**\n * Fired when the user clicks the Submit button.\n *\n * @param {SyntheticEvent} event The react `SyntheticEvent`\n */\n onSave: PropTypes.func,\n /**\n * Shows previews **BELOW** the dropzone.
\n * **Note:** By default previews show up under in the Dialog and inside in the standalone.\n */\n showPreviews: PropTypes.bool,\n /** Shows preview **INSIDE** the dropzone area. */\n showPreviewsInDropzone: PropTypes.bool,\n /** Shows file name under the image. */\n showFileNamesInPreview: PropTypes.bool,\n};\n\nexport default DropzoneDialogBase;\n","import PropTypes from 'prop-types';\nimport * as React from 'react';\n\nimport {createFileFromUrl, readFile} from '../helpers';\n\nimport DropzoneDialogBase from './DropzoneDialogBase';\n\n\n/**\n * This component provides an uncontrolled version of the DropzoneDialogBase component.\n *\n * It supports all the Props and Methods from `DropzoneDialogBase` but keeps the files state internally.\n *\n * **Note** The `onSave` handler also returns `File[]` with all the accepted files.\n */\nclass DropzoneDialog extends React.PureComponent {\n state = {\n fileObjects: [],\n }\n\n componentDidMount() {\n this.loadInitialFiles();\n }\n\n componentWillUnmount() {\n const {clearOnUnmount} = this.props;\n\n if (clearOnUnmount) {\n this.setState({\n fileObjects: [],\n }, this.notifyFileChange);\n }\n }\n\n notifyFileChange = () => {\n const {onChange} = this.props;\n const {fileObjects} = this.state;\n\n if (onChange) {\n onChange(fileObjects.map((fileObject) => fileObject.file));\n }\n }\n\n loadInitialFiles = async() => {\n const {initialFiles} = this.props;\n try {\n const fileObjs = await Promise.all(\n initialFiles.map(async(initialFile) => {\n let file;\n if (typeof initialFile === 'string' ) {\n file = await createFileFromUrl(initialFile);\n } else {\n file = initialFile;\n }\n const data = await readFile(file);\n\n return {\n file,\n data,\n };\n })\n );\n\n this.setState((state) => ({\n fileObjects: [].concat(\n state.fileObjects,\n fileObjs\n ),\n }), this.notifyFileChange);\n } catch (err) {\n console.log(err);\n }\n }\n\n addFiles = async(newFileObjects) => {\n const {filesLimit} = this.props;\n // Update component state\n this.setState((state) => {\n // Handle a single file\n if (filesLimit <= 1) {\n return {\n fileObjects: [].concat(newFileObjects[0]),\n };\n }\n\n // Handle multiple files\n return {\n fileObjects: [].concat(\n state.fileObjects,\n newFileObjects\n ),\n };\n }, this.notifyFileChange);\n }\n\n deleteFile = (removedFileObj, removedFileObjIdx) => {\n event.stopPropagation();\n\n const {onDelete} = this.props;\n const {fileObjects} = this.state;\n\n // Calculate remaining fileObjects array\n const remainingFileObjs = fileObjects.filter((fileObject, i) => {\n return i !== removedFileObjIdx;\n });\n\n // Notify removed file\n if (onDelete) {\n onDelete(removedFileObj.file);\n }\n\n // Update local state\n this.setState({\n fileObjects: remainingFileObjs,\n }, this.notifyFileChange);\n }\n\n handleClose = (evt) => {\n const {clearOnUnmount, onClose} = this.props;\n\n if (onClose) {\n onClose(evt);\n }\n\n if (clearOnUnmount) {\n this.setState({\n fileObjects: [],\n }, this.notifyFileChange);\n }\n }\n\n handleSave = (evt) => {\n const {clearOnUnmount, onSave} = this.props;\n const {fileObjects} = this.state;\n\n if (onSave) {\n onSave(fileObjects.map((fileObject) => fileObject.file), evt);\n }\n\n if (clearOnUnmount) {\n this.setState({\n fileObjects: [],\n }, this.notifyFileChange);\n }\n }\n\n render() {\n const {fileObjects} = this.state;\n\n return (\n \n );\n }\n}\n\nDropzoneDialog.defaultProps = {\n clearOnUnmount: true,\n filesLimit: 3,\n initialFiles: [],\n};\n\nDropzoneDialog.propTypes = {\n ...DropzoneDialogBase.propTypes,\n /** Clear uploaded files when component is unmounted. */\n clearOnUnmount: PropTypes.bool,\n /** Maximum number of files that can be loaded into the dropzone. */\n filesLimit: PropTypes.number,\n /** List containing File objects or URL strings.
\n * **Note:** Please take care of CORS.\n */\n initialFiles: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.any,\n ])\n ),\n /**\n * Fired when the user clicks the Submit button.\n *\n * @param {File[]} files All the files currently inside the Dropzone.\n * @param {SyntheticEvent} event The react `SyntheticEvent`.\n */\n onSave: PropTypes.func,\n};\n\nexport default DropzoneDialog;\n"],"names":["isImage","file","type","split","convertBytesToMbsOrKbs","filesize","size","createFileFromUrl","url","fetch","response","blob","data","metadata","filename","replace","pop","File","readFile","Promise","resolve","reject","reader","FileReader","onload","event","target","result","onerror","abort","readAsDataURL","styles","palette","shape","spacing","root","imageContainer","position","zIndex","textAlign","opacity","image","height","width","maxWidth","color","text","primary","transition","boxSizing","boxShadow","borderRadius","removeButton","top","right","React.createElement","PreviewList","fileObjects","handleRemove","showFileNames","useChipsForPreview","previewChipProps","previewGridClasses","previewGridProps","classes","getPreviewIcon","container","clsx","map","fileObject","i","item","name","propTypes","PropTypes","object","isRequired","arrayOf","func","bool","withStyles","variantIcon","success","CheckCircleIcon","warning","WarningIcon","error","ErrorIcon","info","InfoIcon","theme","successAlert","backgroundColor","main","errorAlert","infoAlert","warningAlert","message","display","alignItems","marginRight","icon","fontSize","closeButton","SnackbarContentWrapper","props","className","onClose","variant","other","Icon","string","node","oneOf","backgroundPosition","minHeight","background","paper","border","borderColor","divider","cursor","overflow","active","animation","backgroundImage","backgroundSize","light","invalid","dark","textContainer","marginBottom","marginTop","defaultSnackbarAnchorOrigin","horizontal","vertical","defaultGetPreviewIcon","DropzoneAreaBase","state","openSnackBar","snackbarMessage","snackbarVariant","handleDropAccepted","acceptedFiles","evt","filesLimit","getFileAddedMessage","getFileErrorMessage","getFileLimitExceedMessage","onAdd","onDrop","length","setState","notifyAlert","all","actualError","allFileObjs","unreadableFiles","filter","obj","reduce","msg","fileObj","validFileObjs","handleDropRejected","rejectedFiles","getDropRejectMessage","maxFileSize","onDropRejected","forEach","rejectedFile","fileIndex","stopPropagation","getFileRemovedMessage","onDelete","removedFileObj","handleCloseSnackbar","onAlert","alertSnackbarProps","disableRejectionFeedback","dropzoneClass","dropzoneParagraphClass","dropzoneProps","dropzoneText","inputProps","previewText","showAlerts","showFileNamesInPreview","showPreviews","showPreviewsInDropzone","acceptFiles","join","isMultiple","previewsVisible","previewsInDropzoneVisible","getRootProps","getInputProps","isDragActive","isDragReject","Array","isArray","includes","React","defaultProps","anchorOrigin","autoHideDuration","fileName","FileObjectShape","any","number","elementType","oneOfType","splitDropzoneAreaProps","clearOnUnmount","initialFiles","onChange","dropzoneAreaProps","DropzoneArea","notifyFileChange","loadInitialFiles","initialFile","fileObjs","concat","console","log","addFiles","newFileObjects","deleteFile","removedFileObjIdx","remainingFileObjs","splitDropzoneDialogProps","allProps","cancelButtonText","dialogProps","dialogTitle","fullWidth","onSave","open","submitButtonText","DropzoneDialogBase","dropzoneDialogProps","submitDisabled","element","DropzoneDialog","handleClose","handleSave"],"mappings":"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"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 4989e193..496b9c49 100644 --- a/dist/index.js +++ b/dist/index.js @@ -414,13 +414,13 @@ var DropzoneAreaBase = /*#__PURE__*/function (_React$PureComponent) { _this.handleDropAccepted = /*#__PURE__*/function () { var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(acceptedFiles, evt) { - var _this$props, fileObjects, filesLimit, getFileAddedMessage, getFileLimitExceedMessage, onAdd, onDrop, fileObjs, message; + var _this$props, fileObjects, filesLimit, getFileAddedMessage, getFileErrorMessage, getFileLimitExceedMessage, onAdd, onDrop, allFileObjs, unreadableFiles, _message, validFileObjs, message; return _regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: - _this$props = _this.props, fileObjects = _this$props.fileObjects, filesLimit = _this$props.filesLimit, getFileAddedMessage = _this$props.getFileAddedMessage, getFileLimitExceedMessage = _this$props.getFileLimitExceedMessage, onAdd = _this$props.onAdd, onDrop = _this$props.onDrop; + _this$props = _this.props, fileObjects = _this$props.fileObjects, filesLimit = _this$props.filesLimit, getFileAddedMessage = _this$props.getFileAddedMessage, getFileErrorMessage = _this$props.getFileErrorMessage, getFileLimitExceedMessage = _this$props.getFileLimitExceedMessage, onAdd = _this$props.onAdd, onDrop = _this$props.onDrop; if (!(filesLimit > 1 && fileObjects.length + acceptedFiles.length > filesLimit)) { _context2.next = 4; @@ -445,27 +445,40 @@ var DropzoneAreaBase = /*#__PURE__*/function (_React$PureComponent) { _context2.next = 7; return Promise.all(acceptedFiles.map( /*#__PURE__*/function () { var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(file) { - var data; + var data, target, actualError; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: - _context.next = 2; + _context.prev = 0; + _context.next = 3; return readFile(file); - case 2: + case 3: data = _context.sent; return _context.abrupt("return", { file: file, data: data }); - case 4: + case 7: + _context.prev = 7; + _context.t0 = _context["catch"](0); + // native errors may happen, e.g. file not readable, ... + target = _context.t0.target; // If the error originates from FileReader, lookup the actual error from the FileReader + + actualError = target instanceof FileReader ? target.error : _context.t0; + return _context.abrupt("return", { + file: file, + error: actualError + }); + + case 12: case "end": return _context.stop(); } } - }, _callee); + }, _callee, null, [[0, 7]]); })); return function (_x3) { @@ -474,15 +487,42 @@ var DropzoneAreaBase = /*#__PURE__*/function (_React$PureComponent) { }())); case 7: - fileObjs = _context2.sent; + allFileObjs = _context2.sent; + unreadableFiles = allFileObjs.filter(function (obj) { + return obj.error != null; + }); + + if (unreadableFiles.length > 0) { + _message = unreadableFiles.reduce(function (msg, fileObj) { + return msg + getFileErrorMessage(fileObj.file, fileObj.error); + }, ''); + + _this.setState({ + openSnackBar: true, + snackbarMessage: _message, + snackbarVariant: 'error' + }, _this.notifyAlert); + } + + validFileObjs = allFileObjs.filter(function (obj) { + return obj.error == null; + }); + + if (!(validFileObjs.length <= 0)) { + _context2.next = 13; + break; + } + + return _context2.abrupt("return"); + case 13: // Notify added files if (onAdd) { - onAdd(fileObjs); + onAdd(validFileObjs); } // Display message - message = fileObjs.reduce(function (msg, fileObj) { + message = validFileObjs.reduce(function (msg, fileObj) { return msg + getFileAddedMessage(fileObj.file.name); }, ''); @@ -492,7 +532,7 @@ var DropzoneAreaBase = /*#__PURE__*/function (_React$PureComponent) { snackbarVariant: 'success' }, _this.notifyAlert); - case 11: + case 16: case "end": return _context2.stop(); } @@ -710,6 +750,9 @@ DropzoneAreaBase.defaultProps = { getFileAddedMessage: function getFileAddedMessage(fileName) { return "File ".concat(fileName, " successfully added."); }, + getFileErrorMessage: function getFileErrorMessage(file, error) { + return "Error opening file ".concat(file.name); + }, getPreviewIcon: defaultGetPreviewIcon, getFileRemovedMessage: function getFileRemovedMessage(fileName) { return "File ".concat(fileName, " removed."); @@ -855,6 +898,18 @@ process.env.NODE_ENV !== "production" ? DropzoneAreaBase.propTypes = { */ getFileAddedMessage: PropTypes.func, + /** + * Get alert message to display when an added file cannot be read. + * + * Basically all errors that might be thrown by FileReader API, e.g. when file is not accessible. + * + * *Default*: "Error opening file ${file.name}" + * + * @param {File} file The newly added file. + * @param {Error} error The error thrown by FileReader API + */ + getFileErrorMessage: PropTypes.func, + /** * Get alert message to display when a file is removed. * diff --git a/dist/index.js.map b/dist/index.js.map index da94d19f..de9817c5 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../src/helpers.js","../src/components/PreviewList.js","../src/components/SnackbarContentWrapper.js","../src/components/DropzoneAreaBase.js","../src/components/DropzoneArea.js","../src/components/DropzoneDialogBase.js","../src/components/DropzoneDialog.js"],"sourcesContent":["export function isImage(file) {\n if (file.type.split('/')[0] === 'image') {\n return true;\n }\n}\n\nexport function convertBytesToMbsOrKbs(filesize) {\n let size = '';\n if (filesize >= 1048576) {\n size = (filesize / 1048576) + ' megabytes';\n } else if (filesize >= 1024) {\n size = (filesize / 1024) + ' kilobytes';\n } else {\n size = filesize + ' bytes';\n }\n return size;\n}\n\nexport async function createFileFromUrl(url) {\n const response = await fetch(url);\n const data = await response.blob();\n const metadata = {type: data.type};\n const filename = url.replace(/\\?.+/, '').split('/').pop();\n return new File([data], filename, metadata);\n}\n\nexport function readFile(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = (event) => {\n resolve(event?.target?.result);\n };\n reader.onerror = (event) => {\n reader.abort();\n reject(event);\n };\n reader.readAsDataURL(file);\n });\n}\n","import Chip from '@material-ui/core/Chip';\nimport Fab from '@material-ui/core/Fab';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport {withStyles} from '@material-ui/core/styles';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport clsx from 'clsx';\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst styles = ({palette, shape, spacing}) => ({\n root: {},\n imageContainer: {\n position: 'relative',\n zIndex: 10,\n textAlign: 'center',\n '&:hover $image': {\n opacity: 0.3,\n },\n '&:hover $removeButton': {\n opacity: 1,\n },\n },\n image: {\n height: 100,\n width: 'initial',\n maxWidth: '100%',\n color: palette.text.primary,\n transition: 'all 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms',\n boxSizing: 'border-box',\n boxShadow: 'rgba(0, 0, 0, 0.12) 0 1px 6px, rgba(0, 0, 0, 0.12) 0 1px 4px',\n borderRadius: shape.borderRadius,\n zIndex: 5,\n opacity: 1,\n },\n removeButton: {\n transition: '.5s ease',\n position: 'absolute',\n opacity: 0,\n top: spacing(-1),\n right: spacing(-1),\n width: 40,\n height: 40,\n '&:focus': {\n opacity: 1,\n },\n },\n});\n\nfunction PreviewList({\n fileObjects,\n handleRemove,\n showFileNames,\n useChipsForPreview,\n previewChipProps,\n previewGridClasses,\n previewGridProps,\n classes,\n getPreviewIcon,\n}) {\n if (useChipsForPreview) {\n return (\n \n {fileObjects.map((fileObject, i) => {\n return (\n \n \n \n );\n })}\n \n );\n }\n\n return (\n \n {fileObjects.map((fileObject, i) => {\n return (\n \n {getPreviewIcon(fileObject, classes)}\n\n {showFileNames && (\n \n {fileObject.file.name}\n \n )}\n\n \n \n \n \n );\n })}\n \n );\n}\n\nPreviewList.propTypes = {\n classes: PropTypes.object.isRequired,\n fileObjects: PropTypes.arrayOf(PropTypes.object).isRequired,\n getPreviewIcon: PropTypes.func.isRequired,\n handleRemove: PropTypes.func.isRequired,\n previewChipProps: PropTypes.object,\n previewGridClasses: PropTypes.object,\n previewGridProps: PropTypes.object,\n showFileNames: PropTypes.bool,\n useChipsForPreview: PropTypes.bool,\n};\n\nexport default withStyles(styles, {name: 'MuiDropzonePreviewList'})(PreviewList);\n","import IconButton from '@material-ui/core/IconButton';\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\nimport {withStyles} from '@material-ui/core/styles';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport CloseIcon from '@material-ui/icons/Close';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport InfoIcon from '@material-ui/icons/Info';\nimport WarningIcon from '@material-ui/icons/Warning';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n\nconst variantIcon = {\n success: CheckCircleIcon,\n warning: WarningIcon,\n error: ErrorIcon,\n info: InfoIcon,\n};\n\nconst styles = (theme) => ({\n successAlert: {\n backgroundColor: theme.palette.success.main,\n },\n errorAlert: {\n backgroundColor: theme.palette.error.main,\n },\n infoAlert: {\n backgroundColor: theme.palette.info.main,\n },\n warningAlert: {\n backgroundColor: theme.palette.warning.main,\n },\n message: {\n display: 'flex',\n alignItems: 'center',\n '& > svg': {\n marginRight: theme.spacing(1),\n },\n },\n icon: {\n fontSize: 20,\n opacity: 0.9,\n },\n closeButton: {},\n});\n\nfunction SnackbarContentWrapper(props) {\n const {classes, className, message, onClose, variant, ...other} = props;\n const Icon = variantIcon[variant];\n\n return (\n \n \n {message}\n \n }\n action={[\n \n \n ,\n ]}\n {...other}\n />\n );\n}\n\nSnackbarContentWrapper.propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n message: PropTypes.node,\n onClose: PropTypes.func,\n variant: PropTypes.oneOf(['success', 'warning', 'error', 'info']).isRequired,\n};\n\nexport default withStyles(styles, {name: 'MuiDropzoneSnackbar'})(SnackbarContentWrapper);\n","import Snackbar from '@material-ui/core/Snackbar';\nimport Typography from '@material-ui/core/Typography';\nimport {withStyles} from '@material-ui/core/styles';\nimport AttachFileIcon from '@material-ui/icons/AttachFile';\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport {Fragment} from 'react';\nimport Dropzone from 'react-dropzone';\nimport {convertBytesToMbsOrKbs, isImage, readFile} from '../helpers';\nimport PreviewList from './PreviewList';\nimport SnackbarContentWrapper from './SnackbarContentWrapper';\n\nconst styles = ({palette, shape, spacing}) => ({\n '@keyframes progress': {\n '0%': {\n backgroundPosition: '0 0',\n },\n '100%': {\n backgroundPosition: '-70px 0',\n },\n },\n root: {\n position: 'relative',\n width: '100%',\n minHeight: '250px',\n backgroundColor: palette.background.paper,\n border: 'dashed',\n borderColor: palette.divider,\n borderRadius: shape.borderRadius,\n boxSizing: 'border-box',\n cursor: 'pointer',\n overflow: 'hidden',\n },\n active: {\n animation: '$progress 2s linear infinite !important',\n // eslint-disable-next-line max-len\n backgroundImage: `repeating-linear-gradient(-45deg, ${palette.background.paper}, ${palette.background.paper} 25px, ${palette.divider} 25px, ${palette.divider} 50px)`,\n backgroundSize: '150% 100%',\n border: 'solid',\n borderColor: palette.primary.light,\n },\n invalid: {\n // eslint-disable-next-line max-len\n backgroundImage: `repeating-linear-gradient(-45deg, ${palette.error.light}, ${palette.error.light} 25px, ${palette.error.dark} 25px, ${palette.error.dark} 50px)`,\n borderColor: palette.error.main,\n },\n textContainer: {\n textAlign: 'center',\n },\n text: {\n marginBottom: spacing(3),\n marginTop: spacing(3),\n },\n icon: {\n width: 51,\n height: 51,\n color: palette.text.primary,\n },\n});\n\nconst defaultSnackbarAnchorOrigin = {\n horizontal: 'left',\n vertical: 'bottom',\n};\n\nconst defaultGetPreviewIcon = (fileObject, classes) => {\n if (isImage(fileObject.file)) {\n return ();\n }\n\n return ;\n};\n\n/**\n * This components creates a Material-UI Dropzone, with previews and snackbar notifications.\n */\nclass DropzoneAreaBase extends React.PureComponent {\n state = {\n openSnackBar: false,\n snackbarMessage: '',\n snackbarVariant: 'success',\n };\n\n notifyAlert() {\n const {onAlert} = this.props;\n const {openSnackBar, snackbarMessage, snackbarVariant} = this.state;\n if (openSnackBar && onAlert) {\n onAlert(snackbarMessage, snackbarVariant);\n }\n }\n\n handleDropAccepted = async(acceptedFiles, evt) => {\n const {fileObjects, filesLimit, getFileAddedMessage, getFileLimitExceedMessage, onAdd, onDrop} = this.props;\n\n if (filesLimit > 1 && fileObjects.length + acceptedFiles.length > filesLimit) {\n this.setState({\n openSnackBar: true,\n snackbarMessage: getFileLimitExceedMessage(filesLimit),\n snackbarVariant: 'error',\n }, this.notifyAlert);\n return;\n }\n\n // Notify Drop event\n if (onDrop) {\n onDrop(acceptedFiles, evt);\n }\n\n // Retrieve fileObjects data\n const fileObjs = await Promise.all(\n acceptedFiles.map(async(file) => {\n const data = await readFile(file);\n return {\n file,\n data,\n };\n })\n );\n\n // Notify added files\n if (onAdd) {\n onAdd(fileObjs);\n }\n\n // Display message\n const message = fileObjs.reduce((msg, fileObj) => msg + getFileAddedMessage(fileObj.file.name), '');\n this.setState({\n openSnackBar: true,\n snackbarMessage: message,\n snackbarVariant: 'success',\n }, this.notifyAlert);\n }\n\n handleDropRejected = (rejectedFiles, evt) => {\n const {\n acceptedFiles,\n filesLimit,\n fileObjects,\n getDropRejectMessage,\n getFileLimitExceedMessage,\n maxFileSize,\n onDropRejected,\n } = this.props;\n\n let message = '';\n if (fileObjects.length + rejectedFiles.length > filesLimit) {\n message = getFileLimitExceedMessage(filesLimit);\n } else {\n rejectedFiles.forEach((rejectedFile) => {\n message = getDropRejectMessage(rejectedFile, acceptedFiles, maxFileSize);\n });\n }\n\n if (onDropRejected) {\n onDropRejected(rejectedFiles, evt);\n }\n\n this.setState({\n openSnackBar: true,\n snackbarMessage: message,\n snackbarVariant: 'error',\n }, this.notifyAlert);\n }\n\n handleRemove = (fileIndex) => (event) => {\n event.stopPropagation();\n\n const {fileObjects, getFileRemovedMessage, onDelete} = this.props;\n\n // Find removed fileObject\n const removedFileObj = fileObjects[fileIndex];\n\n // Notify removed file\n if (onDelete) {\n onDelete(removedFileObj, fileIndex);\n }\n\n this.setState({\n openSnackBar: true,\n snackbarMessage: getFileRemovedMessage(removedFileObj.file.name),\n snackbarVariant: 'info',\n }, this.notifyAlert);\n };\n\n handleCloseSnackbar = () => {\n this.setState({\n openSnackBar: false,\n });\n };\n\n render() {\n const {\n acceptedFiles,\n alertSnackbarProps,\n classes,\n disableRejectionFeedback,\n dropzoneClass,\n dropzoneParagraphClass,\n dropzoneProps,\n dropzoneText,\n fileObjects,\n filesLimit,\n getPreviewIcon,\n Icon,\n inputProps,\n maxFileSize,\n previewChipProps,\n previewGridClasses,\n previewGridProps,\n previewText,\n showAlerts,\n showFileNames,\n showFileNamesInPreview,\n showPreviews,\n showPreviewsInDropzone,\n useChipsForPreview,\n } = this.props;\n const {openSnackBar, snackbarMessage, snackbarVariant} = this.state;\n\n const acceptFiles = acceptedFiles?.join(',');\n const isMultiple = filesLimit > 1;\n const previewsVisible = showPreviews && fileObjects.length > 0;\n const previewsInDropzoneVisible = showPreviewsInDropzone && fileObjects.length > 0;\n\n return (\n \n \n {({getRootProps, getInputProps, isDragActive, isDragReject}) => (\n \n \n\n
\n \n {dropzoneText}\n \n {Icon ? (\n \n ) : (\n \n )}\n
\n\n {previewsInDropzoneVisible &&\n \n }\n \n )}\n \n\n {previewsVisible &&\n \n \n {previewText}\n \n\n \n \n }\n\n {((typeof showAlerts === 'boolean' && showAlerts) ||\n (Array.isArray(showAlerts) && showAlerts.includes(snackbarVariant))) &&\n \n \n \n }\n
\n );\n }\n}\n\nDropzoneAreaBase.defaultProps = {\n acceptedFiles: [],\n filesLimit: 3,\n fileObjects: [],\n maxFileSize: 3000000,\n dropzoneText: 'Drag and drop a file here or click',\n previewText: 'Preview:',\n disableRejectionFeedback: false,\n showPreviews: false, // By default previews show up under in the dialog and inside in the standalone\n showPreviewsInDropzone: true,\n showFileNames: false,\n showFileNamesInPreview: false,\n useChipsForPreview: false,\n previewChipProps: {},\n previewGridClasses: {},\n previewGridProps: {},\n showAlerts: true,\n alertSnackbarProps: {\n anchorOrigin: {\n horizontal: 'left',\n vertical: 'bottom',\n },\n autoHideDuration: 6000,\n },\n getFileLimitExceedMessage: (filesLimit) => (`Maximum allowed number of files exceeded. Only ${filesLimit} allowed`),\n getFileAddedMessage: (fileName) => (`File ${fileName} successfully added.`),\n getPreviewIcon: defaultGetPreviewIcon,\n getFileRemovedMessage: (fileName) => (`File ${fileName} removed.`),\n getDropRejectMessage: (rejectedFile, acceptedFiles, maxFileSize) => {\n let message = `File ${rejectedFile.name} was rejected. `;\n if (!acceptedFiles.includes(rejectedFile.type)) {\n message += 'File type not supported. ';\n }\n if (rejectedFile.size > maxFileSize) {\n message += 'File is too big. Size limit is ' + convertBytesToMbsOrKbs(maxFileSize) + '. ';\n }\n return message;\n },\n};\n\nexport const FileObjectShape = PropTypes.shape({\n file: PropTypes.object,\n data: PropTypes.any,\n});\n\nDropzoneAreaBase.propTypes = {\n /** @ignore */\n classes: PropTypes.object.isRequired,\n /** A list of file types to accept.\n * @see See [here](https://react-dropzone.js.org/#section-accepting-specific-file-types) for more details.\n */\n acceptedFiles: PropTypes.arrayOf(PropTypes.string),\n /** Maximum number of files that can be loaded into the dropzone. */\n filesLimit: PropTypes.number,\n /** Icon to be displayed inside the dropzone area. */\n Icon: PropTypes.elementType,\n /** Currently loaded files. */\n fileObjects: PropTypes.arrayOf(FileObjectShape),\n /** Maximum file size (in bytes) that the dropzone will accept. */\n maxFileSize: PropTypes.number,\n /** Text inside the dropzone. */\n dropzoneText: PropTypes.string,\n /** Custom CSS class name for dropzone container. */\n dropzoneClass: PropTypes.string,\n /** Custom CSS class name for text inside the container. */\n dropzoneParagraphClass: PropTypes.string,\n /** Disable feedback effect when dropping rejected files. */\n disableRejectionFeedback: PropTypes.bool,\n /** Shows previews **BELOW** the dropzone. */\n showPreviews: PropTypes.bool,\n /** Shows preview **INSIDE** the dropzone area. */\n showPreviewsInDropzone: PropTypes.bool,\n /** Shows file name under the dropzone image. */\n showFileNames: PropTypes.bool,\n /** Shows file name under the image. */\n showFileNamesInPreview: PropTypes.bool,\n /** Uses deletable Material-UI Chip components to display file names. */\n useChipsForPreview: PropTypes.bool,\n /**\n * Props to pass to the Material-UI Chip components.
Requires `useChipsForPreview` prop to be `true`.\n *\n * @see See [Material-UI Chip](https://material-ui.com/api/chip/#props) for available values.\n */\n previewChipProps: PropTypes.object,\n /**\n * Custom CSS classNames for preview Grid components.
\n * Should be in the form {container: string, item: string, image: string}.\n */\n previewGridClasses: PropTypes.object,\n /**\n * Props to pass to the Material-UI Grid components.
\n * Should be in the form {container: GridProps, item: GridProps}.\n *\n * @see See [Material-UI Grid](https://material-ui.com/api/grid/#props) for available GridProps values.\n */\n previewGridProps: PropTypes.object,\n /** The label for the file preview section. */\n previewText: PropTypes.string,\n /**\n * Shows styled Material-UI Snackbar when files are dropped, deleted or rejected.\n *\n * - can be a boolean (\"global\" `true` or `false` for all alerts).\n * - can be an array, with values 'error', 'info', 'success' to select to view only certain alerts:\n * - showAlerts={['error']} for only errors.\n * - showAlerts={['error', 'info']} for both errors and info.\n * - showAlerts={['error', 'success', 'info']} is same as showAlerts={true}.\n * - showAlerts={[]} is same as showAlerts={false}.\n */\n showAlerts: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.arrayOf(PropTypes.oneOf(['error', 'success', 'info'])),\n ]),\n /**\n * Props to pass to the Material-UI Snackbar components.
Requires `showAlerts` prop to be `true`.\n *\n * @see See [Material-UI Snackbar](https://material-ui.com/api/snackbar/#props) for available values.\n */\n alertSnackbarProps: PropTypes.object,\n /**\n * Props to pass to the Dropzone component.\n *\n * @see See [Dropzone props](https://react-dropzone.js.org/#src) for available values.\n */\n dropzoneProps: PropTypes.object,\n /**\n * Attributes applied to the input element.\n *\n * @see See [MDN Input File attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#Additional_attributes) for available values.\n */\n inputProps: PropTypes.object,\n /**\n * Get alert message to display when files limit is exceed.\n *\n * *Default*: \"Maximum allowed number of files exceeded. Only ${filesLimit} allowed\"\n *\n * @param {number} filesLimit The `filesLimit` currently set for the component.\n */\n getFileLimitExceedMessage: PropTypes.func,\n /**\n * Get alert message to display when a new file is added.\n *\n * *Default*: \"File ${fileName} successfully added.\"\n *\n * @param {string} fileName The newly added file name.\n */\n getFileAddedMessage: PropTypes.func,\n /**\n * Get alert message to display when a file is removed.\n *\n * *Default*: \"File ${fileName} removed.\"\n *\n * @param {string} fileName The name of the removed file.\n */\n getFileRemovedMessage: PropTypes.func,\n /**\n * Get alert message to display when a file is rejected onDrop.\n *\n * *Default*: \"File ${rejectedFile.name} was rejected.\"\n *\n * @param {Object} rejectedFile The file that got rejected\n * @param {string[]} acceptedFiles The `acceptedFiles` prop currently set for the component\n * @param {number} maxFileSize The `maxFileSize` prop currently set for the component\n */\n getDropRejectMessage: PropTypes.func,\n /**\n * A function which determines which icon to display for a file preview.\n *\n * *Default*: If its an image then displays a preview the image, otherwise it will display an attachment icon\n *\n * @param {FileObject} objectFile The file which the preview will belong to\n * @param {Object} classes The classes for the file preview icon, in the default case we use the 'image' className.\n */\n getPreviewIcon: PropTypes.func,\n /**\n * Fired when new files are added to dropzone.\n *\n * @param {FileObject[]} newFiles The new files added to the dropzone.\n */\n onAdd: PropTypes.func,\n /**\n * Fired when a file is deleted from the previews panel.\n *\n * @param {FileObject} deletedFileObject The file that was removed.\n * @param {number} index The index of the removed file object.\n */\n onDelete: PropTypes.func,\n /**\n * Fired when the user drops files into the dropzone.\n *\n * @param {File[]} droppedFiles All the files dropped into the dropzone.\n * @param {Event} event The react-dropzone drop event.\n */\n onDrop: PropTypes.func,\n /**\n * Fired when a file is rejected because of wrong file type, size or goes beyond the filesLimit.\n *\n * @param {File[]} rejectedFiles All the rejected files.\n * @param {Event} event The react-dropzone drop event.\n */\n onDropRejected: PropTypes.func,\n /**\n * Fired when an alert is triggered.\n *\n * @param {string} message Alert message.\n * @param {string} variant One of \"error\", \"info\", \"success\".\n */\n onAlert: PropTypes.func,\n};\n\nexport default withStyles(styles, {name: 'MuiDropzoneArea'})(DropzoneAreaBase);\n","import PropTypes from 'prop-types';\nimport * as React from 'react';\n\nimport {createFileFromUrl, readFile} from '../helpers';\n\nimport DropzoneAreaBase from './DropzoneAreaBase';\n\nconst splitDropzoneAreaProps = (props) => {\n const {clearOnUnmount, initialFiles, onChange, onDelete, ...dropzoneAreaProps} = props;\n return [{clearOnUnmount, initialFiles, onChange, onDelete}, dropzoneAreaProps];\n};\n\n/**\n * This components creates an uncontrolled Material-UI Dropzone, with previews and snackbar notifications.\n *\n * It supports all props of `DropzoneAreaBase` but keeps the files state internally.\n *\n * **Note** To listen to file changes use `onChange` event handler and notice that `onDelete` returns a `File` instance instead of `FileObject`.\n */\nclass DropzoneArea extends React.PureComponent {\n state = {\n fileObjects: [],\n }\n\n componentDidMount() {\n this.loadInitialFiles();\n }\n\n componentWillUnmount() {\n const {clearOnUnmount} = this.props;\n\n if (clearOnUnmount) {\n this.setState({\n fileObjects: [],\n }, this.notifyFileChange);\n }\n }\n\n notifyFileChange = () => {\n const {onChange} = this.props;\n const {fileObjects} = this.state;\n\n if (onChange) {\n onChange(fileObjects.map((fileObject) => fileObject.file));\n }\n }\n\n loadInitialFiles = async() => {\n const {initialFiles} = this.props;\n try {\n const fileObjs = await Promise.all(\n initialFiles.map(async(initialFile) => {\n let file;\n if (typeof initialFile === 'string' ) {\n file = await createFileFromUrl(initialFile);\n } else {\n file = initialFile;\n }\n const data = await readFile(file);\n\n return {\n file,\n data,\n };\n })\n );\n\n this.setState((state) => ({\n fileObjects: [].concat(\n state.fileObjects,\n fileObjs\n ),\n }), this.notifyFileChange);\n } catch (err) {\n console.log(err);\n }\n }\n\n addFiles = async(newFileObjects) => {\n const {filesLimit} = this.props;\n // Update component state\n this.setState((state) => {\n // Handle a single file\n if (filesLimit <= 1) {\n return {\n fileObjects: [].concat(newFileObjects[0]),\n };\n }\n\n // Handle multiple files\n return {\n fileObjects: [].concat(\n state.fileObjects,\n newFileObjects\n ),\n };\n }, this.notifyFileChange);\n }\n\n deleteFile = (removedFileObj, removedFileObjIdx) => {\n event.stopPropagation();\n\n const {onDelete} = this.props;\n const {fileObjects} = this.state;\n\n // Calculate remaining fileObjects array\n const remainingFileObjs = fileObjects.filter((fileObject, i) => {\n return i !== removedFileObjIdx;\n });\n\n // Notify removed file\n if (onDelete) {\n onDelete(removedFileObj.file);\n }\n\n // Update local state\n this.setState({\n fileObjects: remainingFileObjs,\n }, this.notifyFileChange);\n }\n\n render() {\n const [, dropzoneAreaProps] = splitDropzoneAreaProps(this.props);\n const {fileObjects} = this.state;\n\n return (\n \n );\n }\n}\n\nDropzoneArea.defaultProps = {\n clearOnUnmount: true,\n filesLimit: 3,\n initialFiles: [],\n};\n\nDropzoneArea.propTypes = {\n ...DropzoneAreaBase.propTypes,\n /** Clear uploaded files when component is unmounted. */\n clearOnUnmount: PropTypes.bool,\n /** List containing File objects or URL strings.
\n * **Note:** Please take care of CORS.\n */\n initialFiles: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.any,\n ])\n ),\n /** Maximum number of files that can be loaded into the dropzone. */\n filesLimit: PropTypes.number,\n /**\n * Fired when the files inside dropzone change.\n *\n * @param {File[]} loadedFiles All the files currently loaded into the dropzone.\n */\n onChange: PropTypes.func,\n /**\n * Fired when a file is deleted from the previews panel.\n *\n * @param {File} deletedFile The file that was removed.\n */\n onDelete: PropTypes.func,\n};\n\nexport default DropzoneArea;\n","import Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n\nimport DropzoneAreaBase from './DropzoneAreaBase';\n\n// Split props related to DropzoneDialog from DropzoneArea ones\nfunction splitDropzoneDialogProps(allProps) {\n const {\n cancelButtonText,\n dialogProps,\n dialogTitle,\n fullWidth,\n maxWidth,\n onClose,\n onSave,\n open,\n submitButtonText,\n ...dropzoneAreaProps\n } = allProps;\n\n return [\n {\n cancelButtonText,\n dialogProps,\n dialogTitle,\n fullWidth,\n maxWidth,\n onClose,\n onSave,\n open,\n submitButtonText,\n },\n dropzoneAreaProps,\n ];\n}\n\n/**\n * This component provides the DropzoneArea inside of a Material-UI Dialog.\n *\n * It supports all the Props and Methods from `DropzoneAreaBase`.\n */\nclass DropzoneDialogBase extends React.PureComponent {\n render() {\n const [dropzoneDialogProps, dropzoneAreaProps] = splitDropzoneDialogProps(this.props);\n const {\n cancelButtonText,\n dialogProps,\n dialogTitle,\n fullWidth,\n maxWidth,\n onClose,\n onSave,\n open,\n submitButtonText,\n } = dropzoneDialogProps;\n\n // Submit button state\n const submitDisabled = dropzoneAreaProps.fileObjects.length === 0;\n\n return (\n \n {dialogTitle}\n\n \n \n \n\n \n \n {cancelButtonText}\n \n\n \n {submitButtonText}\n \n \n \n );\n }\n}\n\nDropzoneDialogBase.defaultProps = {\n open: false,\n dialogTitle: 'Upload file',\n dialogProps: {},\n fullWidth: true,\n maxWidth: 'sm',\n cancelButtonText: 'Cancel',\n submitButtonText: 'Submit',\n showPreviews: true,\n showPreviewsInDropzone: false,\n showFileNamesInPreview: true,\n};\n\nDropzoneDialogBase.propTypes = {\n ...DropzoneAreaBase.propTypes,\n /** Sets whether the dialog is open or closed. */\n open: PropTypes.bool,\n /** The Dialog title. */\n dialogTitle: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n ]),\n /**\n * Props to pass to the Material-UI Dialog components.\n * @see See [Material-UI Dialog](https://material-ui.com/api/dialog/#props) for available values.\n */\n dialogProps: PropTypes.object,\n /**\n * If `true`, the dialog stretches to `maxWidth`.
\n * Notice that the dialog width grow is limited by the default margin.\n */\n fullWidth: PropTypes.bool,\n /**\n * Determine the max-width of the dialog. The dialog width grows with the size of the screen.
\n * Set to `false` to disable `maxWidth`.\n */\n maxWidth: PropTypes.string,\n /** Cancel button text in dialog. */\n cancelButtonText: PropTypes.string,\n /** Submit button text in dialog. */\n submitButtonText: PropTypes.string,\n /**\n * Fired when the modal is closed.\n *\n * @param {SyntheticEvent} event The react `SyntheticEvent`\n */\n onClose: PropTypes.func,\n /**\n * Fired when the user clicks the Submit button.\n *\n * @param {SyntheticEvent} event The react `SyntheticEvent`\n */\n onSave: PropTypes.func,\n /**\n * Shows previews **BELOW** the dropzone.
\n * **Note:** By default previews show up under in the Dialog and inside in the standalone.\n */\n showPreviews: PropTypes.bool,\n /** Shows preview **INSIDE** the dropzone area. */\n showPreviewsInDropzone: PropTypes.bool,\n /** Shows file name under the image. */\n showFileNamesInPreview: PropTypes.bool,\n};\n\nexport default DropzoneDialogBase;\n","import PropTypes from 'prop-types';\nimport * as React from 'react';\n\nimport {createFileFromUrl, readFile} from '../helpers';\n\nimport DropzoneDialogBase from './DropzoneDialogBase';\n\n\n/**\n * This component provides an uncontrolled version of the DropzoneDialogBase component.\n *\n * It supports all the Props and Methods from `DropzoneDialogBase` but keeps the files state internally.\n *\n * **Note** The `onSave` handler also returns `File[]` with all the accepted files.\n */\nclass DropzoneDialog extends React.PureComponent {\n state = {\n fileObjects: [],\n }\n\n componentDidMount() {\n this.loadInitialFiles();\n }\n\n componentWillUnmount() {\n const {clearOnUnmount} = this.props;\n\n if (clearOnUnmount) {\n this.setState({\n fileObjects: [],\n }, this.notifyFileChange);\n }\n }\n\n notifyFileChange = () => {\n const {onChange} = this.props;\n const {fileObjects} = this.state;\n\n if (onChange) {\n onChange(fileObjects.map((fileObject) => fileObject.file));\n }\n }\n\n loadInitialFiles = async() => {\n const {initialFiles} = this.props;\n try {\n const fileObjs = await Promise.all(\n initialFiles.map(async(initialFile) => {\n let file;\n if (typeof initialFile === 'string' ) {\n file = await createFileFromUrl(initialFile);\n } else {\n file = initialFile;\n }\n const data = await readFile(file);\n\n return {\n file,\n data,\n };\n })\n );\n\n this.setState((state) => ({\n fileObjects: [].concat(\n state.fileObjects,\n fileObjs\n ),\n }), this.notifyFileChange);\n } catch (err) {\n console.log(err);\n }\n }\n\n addFiles = async(newFileObjects) => {\n const {filesLimit} = this.props;\n // Update component state\n this.setState((state) => {\n // Handle a single file\n if (filesLimit <= 1) {\n return {\n fileObjects: [].concat(newFileObjects[0]),\n };\n }\n\n // Handle multiple files\n return {\n fileObjects: [].concat(\n state.fileObjects,\n newFileObjects\n ),\n };\n }, this.notifyFileChange);\n }\n\n deleteFile = (removedFileObj, removedFileObjIdx) => {\n event.stopPropagation();\n\n const {onDelete} = this.props;\n const {fileObjects} = this.state;\n\n // Calculate remaining fileObjects array\n const remainingFileObjs = fileObjects.filter((fileObject, i) => {\n return i !== removedFileObjIdx;\n });\n\n // Notify removed file\n if (onDelete) {\n onDelete(removedFileObj.file);\n }\n\n // Update local state\n this.setState({\n fileObjects: remainingFileObjs,\n }, this.notifyFileChange);\n }\n\n handleClose = (evt) => {\n const {clearOnUnmount, onClose} = this.props;\n\n if (onClose) {\n onClose(evt);\n }\n\n if (clearOnUnmount) {\n this.setState({\n fileObjects: [],\n }, this.notifyFileChange);\n }\n }\n\n handleSave = (evt) => {\n const {clearOnUnmount, onSave} = this.props;\n const {fileObjects} = this.state;\n\n if (onSave) {\n onSave(fileObjects.map((fileObject) => fileObject.file), evt);\n }\n\n if (clearOnUnmount) {\n this.setState({\n fileObjects: [],\n }, this.notifyFileChange);\n }\n }\n\n render() {\n const {fileObjects} = this.state;\n\n return (\n \n );\n }\n}\n\nDropzoneDialog.defaultProps = {\n clearOnUnmount: true,\n filesLimit: 3,\n initialFiles: [],\n};\n\nDropzoneDialog.propTypes = {\n ...DropzoneDialogBase.propTypes,\n /** Clear uploaded files when component is unmounted. */\n clearOnUnmount: PropTypes.bool,\n /** Maximum number of files that can be loaded into the dropzone. */\n filesLimit: PropTypes.number,\n /** List containing File objects or URL strings.
\n * **Note:** Please take care of CORS.\n */\n initialFiles: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.any,\n ])\n ),\n /**\n * Fired when the user clicks the Submit button.\n *\n * @param {File[]} files All the files currently inside the Dropzone.\n * @param {SyntheticEvent} event The react `SyntheticEvent`.\n */\n onSave: PropTypes.func,\n};\n\nexport default DropzoneDialog;\n"],"names":["isImage","file","type","split","convertBytesToMbsOrKbs","filesize","size","createFileFromUrl","url","fetch","response","blob","data","metadata","filename","replace","pop","File","readFile","Promise","resolve","reject","reader","FileReader","onload","event","target","result","onerror","abort","readAsDataURL","styles","palette","shape","spacing","root","imageContainer","position","zIndex","textAlign","opacity","image","height","width","maxWidth","color","text","primary","transition","boxSizing","boxShadow","borderRadius","removeButton","top","right","React.createElement","PreviewList","fileObjects","handleRemove","showFileNames","useChipsForPreview","previewChipProps","previewGridClasses","previewGridProps","classes","getPreviewIcon","container","clsx","map","fileObject","i","item","name","propTypes","PropTypes","object","isRequired","arrayOf","func","bool","withStyles","variantIcon","success","CheckCircleIcon","warning","WarningIcon","error","ErrorIcon","info","InfoIcon","theme","successAlert","backgroundColor","main","errorAlert","infoAlert","warningAlert","message","display","alignItems","marginRight","icon","fontSize","closeButton","SnackbarContentWrapper","props","className","onClose","variant","other","Icon","string","node","oneOf","backgroundPosition","minHeight","background","paper","border","borderColor","divider","cursor","overflow","active","animation","backgroundImage","backgroundSize","light","invalid","dark","textContainer","marginBottom","marginTop","defaultSnackbarAnchorOrigin","horizontal","vertical","defaultGetPreviewIcon","DropzoneAreaBase","state","openSnackBar","snackbarMessage","snackbarVariant","handleDropAccepted","acceptedFiles","evt","filesLimit","getFileAddedMessage","getFileLimitExceedMessage","onAdd","onDrop","length","setState","notifyAlert","all","fileObjs","reduce","msg","fileObj","handleDropRejected","rejectedFiles","getDropRejectMessage","maxFileSize","onDropRejected","forEach","rejectedFile","fileIndex","stopPropagation","getFileRemovedMessage","onDelete","removedFileObj","handleCloseSnackbar","onAlert","alertSnackbarProps","disableRejectionFeedback","dropzoneClass","dropzoneParagraphClass","dropzoneProps","dropzoneText","inputProps","previewText","showAlerts","showFileNamesInPreview","showPreviews","showPreviewsInDropzone","acceptFiles","join","isMultiple","previewsVisible","previewsInDropzoneVisible","Fragment","getRootProps","getInputProps","isDragActive","isDragReject","Array","isArray","includes","React","defaultProps","anchorOrigin","autoHideDuration","fileName","FileObjectShape","any","number","elementType","oneOfType","splitDropzoneAreaProps","clearOnUnmount","initialFiles","onChange","dropzoneAreaProps","DropzoneArea","notifyFileChange","loadInitialFiles","initialFile","concat","console","log","addFiles","newFileObjects","deleteFile","removedFileObjIdx","remainingFileObjs","filter","splitDropzoneDialogProps","allProps","cancelButtonText","dialogProps","dialogTitle","fullWidth","onSave","open","submitButtonText","DropzoneDialogBase","dropzoneDialogProps","submitDisabled","element","DropzoneDialog","handleClose","handleSave"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../src/helpers.js","../src/components/PreviewList.js","../src/components/SnackbarContentWrapper.js","../src/components/DropzoneAreaBase.js","../src/components/DropzoneArea.js","../src/components/DropzoneDialogBase.js","../src/components/DropzoneDialog.js"],"sourcesContent":["export function isImage(file) {\n if (file.type.split('/')[0] === 'image') {\n return true;\n }\n}\n\nexport function convertBytesToMbsOrKbs(filesize) {\n let size = '';\n if (filesize >= 1048576) {\n size = (filesize / 1048576) + ' megabytes';\n } else if (filesize >= 1024) {\n size = (filesize / 1024) + ' kilobytes';\n } else {\n size = filesize + ' bytes';\n }\n return size;\n}\n\nexport async function createFileFromUrl(url) {\n const response = await fetch(url);\n const data = await response.blob();\n const metadata = {type: data.type};\n const filename = url.replace(/\\?.+/, '').split('/').pop();\n return new File([data], filename, metadata);\n}\n\nexport function readFile(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = (event) => {\n resolve(event?.target?.result);\n };\n reader.onerror = (event) => {\n reader.abort();\n reject(event);\n };\n reader.readAsDataURL(file);\n });\n}\n","import Chip from '@material-ui/core/Chip';\nimport Fab from '@material-ui/core/Fab';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport {withStyles} from '@material-ui/core/styles';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport clsx from 'clsx';\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst styles = ({palette, shape, spacing}) => ({\n root: {},\n imageContainer: {\n position: 'relative',\n zIndex: 10,\n textAlign: 'center',\n '&:hover $image': {\n opacity: 0.3,\n },\n '&:hover $removeButton': {\n opacity: 1,\n },\n },\n image: {\n height: 100,\n width: 'initial',\n maxWidth: '100%',\n color: palette.text.primary,\n transition: 'all 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms',\n boxSizing: 'border-box',\n boxShadow: 'rgba(0, 0, 0, 0.12) 0 1px 6px, rgba(0, 0, 0, 0.12) 0 1px 4px',\n borderRadius: shape.borderRadius,\n zIndex: 5,\n opacity: 1,\n },\n removeButton: {\n transition: '.5s ease',\n position: 'absolute',\n opacity: 0,\n top: spacing(-1),\n right: spacing(-1),\n width: 40,\n height: 40,\n '&:focus': {\n opacity: 1,\n },\n },\n});\n\nfunction PreviewList({\n fileObjects,\n handleRemove,\n showFileNames,\n useChipsForPreview,\n previewChipProps,\n previewGridClasses,\n previewGridProps,\n classes,\n getPreviewIcon,\n}) {\n if (useChipsForPreview) {\n return (\n \n {fileObjects.map((fileObject, i) => {\n return (\n \n \n \n );\n })}\n \n );\n }\n\n return (\n \n {fileObjects.map((fileObject, i) => {\n return (\n \n {getPreviewIcon(fileObject, classes)}\n\n {showFileNames && (\n \n {fileObject.file.name}\n \n )}\n\n \n \n \n \n );\n })}\n \n );\n}\n\nPreviewList.propTypes = {\n classes: PropTypes.object.isRequired,\n fileObjects: PropTypes.arrayOf(PropTypes.object).isRequired,\n getPreviewIcon: PropTypes.func.isRequired,\n handleRemove: PropTypes.func.isRequired,\n previewChipProps: PropTypes.object,\n previewGridClasses: PropTypes.object,\n previewGridProps: PropTypes.object,\n showFileNames: PropTypes.bool,\n useChipsForPreview: PropTypes.bool,\n};\n\nexport default withStyles(styles, {name: 'MuiDropzonePreviewList'})(PreviewList);\n","import IconButton from '@material-ui/core/IconButton';\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\nimport {withStyles} from '@material-ui/core/styles';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport CloseIcon from '@material-ui/icons/Close';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport InfoIcon from '@material-ui/icons/Info';\nimport WarningIcon from '@material-ui/icons/Warning';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n\nconst variantIcon = {\n success: CheckCircleIcon,\n warning: WarningIcon,\n error: ErrorIcon,\n info: InfoIcon,\n};\n\nconst styles = (theme) => ({\n successAlert: {\n backgroundColor: theme.palette.success.main,\n },\n errorAlert: {\n backgroundColor: theme.palette.error.main,\n },\n infoAlert: {\n backgroundColor: theme.palette.info.main,\n },\n warningAlert: {\n backgroundColor: theme.palette.warning.main,\n },\n message: {\n display: 'flex',\n alignItems: 'center',\n '& > svg': {\n marginRight: theme.spacing(1),\n },\n },\n icon: {\n fontSize: 20,\n opacity: 0.9,\n },\n closeButton: {},\n});\n\nfunction SnackbarContentWrapper(props) {\n const {classes, className, message, onClose, variant, ...other} = props;\n const Icon = variantIcon[variant];\n\n return (\n \n \n {message}\n \n }\n action={[\n \n \n ,\n ]}\n {...other}\n />\n );\n}\n\nSnackbarContentWrapper.propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n message: PropTypes.node,\n onClose: PropTypes.func,\n variant: PropTypes.oneOf(['success', 'warning', 'error', 'info']).isRequired,\n};\n\nexport default withStyles(styles, {name: 'MuiDropzoneSnackbar'})(SnackbarContentWrapper);\n","import Snackbar from '@material-ui/core/Snackbar';\nimport Typography from '@material-ui/core/Typography';\nimport {withStyles} from '@material-ui/core/styles';\nimport AttachFileIcon from '@material-ui/icons/AttachFile';\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport {Fragment} from 'react';\nimport Dropzone from 'react-dropzone';\nimport {convertBytesToMbsOrKbs, isImage, readFile} from '../helpers';\nimport PreviewList from './PreviewList';\nimport SnackbarContentWrapper from './SnackbarContentWrapper';\n\nconst styles = ({palette, shape, spacing}) => ({\n '@keyframes progress': {\n '0%': {\n backgroundPosition: '0 0',\n },\n '100%': {\n backgroundPosition: '-70px 0',\n },\n },\n root: {\n position: 'relative',\n width: '100%',\n minHeight: '250px',\n backgroundColor: palette.background.paper,\n border: 'dashed',\n borderColor: palette.divider,\n borderRadius: shape.borderRadius,\n boxSizing: 'border-box',\n cursor: 'pointer',\n overflow: 'hidden',\n },\n active: {\n animation: '$progress 2s linear infinite !important',\n // eslint-disable-next-line max-len\n backgroundImage: `repeating-linear-gradient(-45deg, ${palette.background.paper}, ${palette.background.paper} 25px, ${palette.divider} 25px, ${palette.divider} 50px)`,\n backgroundSize: '150% 100%',\n border: 'solid',\n borderColor: palette.primary.light,\n },\n invalid: {\n // eslint-disable-next-line max-len\n backgroundImage: `repeating-linear-gradient(-45deg, ${palette.error.light}, ${palette.error.light} 25px, ${palette.error.dark} 25px, ${palette.error.dark} 50px)`,\n borderColor: palette.error.main,\n },\n textContainer: {\n textAlign: 'center',\n },\n text: {\n marginBottom: spacing(3),\n marginTop: spacing(3),\n },\n icon: {\n width: 51,\n height: 51,\n color: palette.text.primary,\n },\n});\n\nconst defaultSnackbarAnchorOrigin = {\n horizontal: 'left',\n vertical: 'bottom',\n};\n\nconst defaultGetPreviewIcon = (fileObject, classes) => {\n if (isImage(fileObject.file)) {\n return ();\n }\n\n return ;\n};\n\n/**\n * This components creates a Material-UI Dropzone, with previews and snackbar notifications.\n */\nclass DropzoneAreaBase extends React.PureComponent {\n state = {\n openSnackBar: false,\n snackbarMessage: '',\n snackbarVariant: 'success',\n };\n\n notifyAlert() {\n const {onAlert} = this.props;\n const {openSnackBar, snackbarMessage, snackbarVariant} = this.state;\n if (openSnackBar && onAlert) {\n onAlert(snackbarMessage, snackbarVariant);\n }\n }\n\n handleDropAccepted = async(acceptedFiles, evt) => {\n const {fileObjects, filesLimit, getFileAddedMessage, getFileErrorMessage, getFileLimitExceedMessage, onAdd, onDrop} = this.props;\n\n if (filesLimit > 1 && fileObjects.length + acceptedFiles.length > filesLimit) {\n this.setState({\n openSnackBar: true,\n snackbarMessage: getFileLimitExceedMessage(filesLimit),\n snackbarVariant: 'error',\n }, this.notifyAlert);\n return;\n }\n\n // Notify Drop event\n if (onDrop) {\n onDrop(acceptedFiles, evt);\n }\n\n // Retrieve fileObjects data\n const allFileObjs = await Promise.all(\n acceptedFiles.map(async(file) => {\n try {\n const data = await readFile(file);\n return {\n file,\n data,\n };\n } catch (error) {\n // native errors may happen, e.g. file not readable, ...\n const { target } = error;\n // If the error originates from FileReader, lookup the actual error from the FileReader\n const actualError = target instanceof FileReader ? target.error : error;\n return {\n file,\n error: actualError,\n };\n }\n })\n );\n\n const unreadableFiles = allFileObjs.filter(obj => obj.error != null);\n if (unreadableFiles.length > 0) {\n const message = unreadableFiles.reduce((msg, fileObj) => msg + getFileErrorMessage(fileObj.file, fileObj.error), '');\n this.setState({\n openSnackBar: true,\n snackbarMessage: message,\n snackbarVariant: 'error',\n }, this.notifyAlert);\n }\n\n const validFileObjs = allFileObjs.filter(obj => obj.error == null);\n\n if (validFileObjs.length <= 0) {\n return;\n }\n\n // Notify added files\n if (onAdd) {\n onAdd(validFileObjs);\n }\n\n // Display message\n const message = validFileObjs.reduce((msg, fileObj) => msg + getFileAddedMessage(fileObj.file.name), '');\n this.setState({\n openSnackBar: true,\n snackbarMessage: message,\n snackbarVariant: 'success',\n }, this.notifyAlert);\n }\n\n handleDropRejected = (rejectedFiles, evt) => {\n const {\n acceptedFiles,\n filesLimit,\n fileObjects,\n getDropRejectMessage,\n getFileLimitExceedMessage,\n maxFileSize,\n onDropRejected,\n } = this.props;\n\n let message = '';\n if (fileObjects.length + rejectedFiles.length > filesLimit) {\n message = getFileLimitExceedMessage(filesLimit);\n } else {\n rejectedFiles.forEach((rejectedFile) => {\n message = getDropRejectMessage(rejectedFile, acceptedFiles, maxFileSize);\n });\n }\n\n if (onDropRejected) {\n onDropRejected(rejectedFiles, evt);\n }\n\n this.setState({\n openSnackBar: true,\n snackbarMessage: message,\n snackbarVariant: 'error',\n }, this.notifyAlert);\n }\n\n handleRemove = (fileIndex) => (event) => {\n event.stopPropagation();\n\n const {fileObjects, getFileRemovedMessage, onDelete} = this.props;\n\n // Find removed fileObject\n const removedFileObj = fileObjects[fileIndex];\n\n // Notify removed file\n if (onDelete) {\n onDelete(removedFileObj, fileIndex);\n }\n\n this.setState({\n openSnackBar: true,\n snackbarMessage: getFileRemovedMessage(removedFileObj.file.name),\n snackbarVariant: 'info',\n }, this.notifyAlert);\n };\n\n handleCloseSnackbar = () => {\n this.setState({\n openSnackBar: false,\n });\n };\n\n render() {\n const {\n acceptedFiles,\n alertSnackbarProps,\n classes,\n disableRejectionFeedback,\n dropzoneClass,\n dropzoneParagraphClass,\n dropzoneProps,\n dropzoneText,\n fileObjects,\n filesLimit,\n getPreviewIcon,\n Icon,\n inputProps,\n maxFileSize,\n previewChipProps,\n previewGridClasses,\n previewGridProps,\n previewText,\n showAlerts,\n showFileNames,\n showFileNamesInPreview,\n showPreviews,\n showPreviewsInDropzone,\n useChipsForPreview,\n } = this.props;\n const {openSnackBar, snackbarMessage, snackbarVariant} = this.state;\n\n const acceptFiles = acceptedFiles?.join(',');\n const isMultiple = filesLimit > 1;\n const previewsVisible = showPreviews && fileObjects.length > 0;\n const previewsInDropzoneVisible = showPreviewsInDropzone && fileObjects.length > 0;\n\n return (\n \n \n {({getRootProps, getInputProps, isDragActive, isDragReject}) => (\n \n \n\n
\n \n {dropzoneText}\n \n {Icon ? (\n \n ) : (\n \n )}\n
\n\n {previewsInDropzoneVisible &&\n \n }\n \n )}\n \n\n {previewsVisible &&\n \n \n {previewText}\n \n\n \n \n }\n\n {((typeof showAlerts === 'boolean' && showAlerts) ||\n (Array.isArray(showAlerts) && showAlerts.includes(snackbarVariant))) &&\n \n \n \n }\n
\n );\n }\n}\n\nDropzoneAreaBase.defaultProps = {\n acceptedFiles: [],\n filesLimit: 3,\n fileObjects: [],\n maxFileSize: 3000000,\n dropzoneText: 'Drag and drop a file here or click',\n previewText: 'Preview:',\n disableRejectionFeedback: false,\n showPreviews: false, // By default previews show up under in the dialog and inside in the standalone\n showPreviewsInDropzone: true,\n showFileNames: false,\n showFileNamesInPreview: false,\n useChipsForPreview: false,\n previewChipProps: {},\n previewGridClasses: {},\n previewGridProps: {},\n showAlerts: true,\n alertSnackbarProps: {\n anchorOrigin: {\n horizontal: 'left',\n vertical: 'bottom',\n },\n autoHideDuration: 6000,\n },\n getFileLimitExceedMessage: (filesLimit) => (`Maximum allowed number of files exceeded. Only ${filesLimit} allowed`),\n getFileAddedMessage: (fileName) => (`File ${fileName} successfully added.`),\n getFileErrorMessage: (file, error) => (`Error opening file ${file.name}`),\n getPreviewIcon: defaultGetPreviewIcon,\n getFileRemovedMessage: (fileName) => (`File ${fileName} removed.`),\n getDropRejectMessage: (rejectedFile, acceptedFiles, maxFileSize) => {\n let message = `File ${rejectedFile.name} was rejected. `;\n if (!acceptedFiles.includes(rejectedFile.type)) {\n message += 'File type not supported. ';\n }\n if (rejectedFile.size > maxFileSize) {\n message += 'File is too big. Size limit is ' + convertBytesToMbsOrKbs(maxFileSize) + '. ';\n }\n return message;\n },\n};\n\nexport const FileObjectShape = PropTypes.shape({\n file: PropTypes.object,\n data: PropTypes.any,\n});\n\nDropzoneAreaBase.propTypes = {\n /** @ignore */\n classes: PropTypes.object.isRequired,\n /** A list of file types to accept.\n * @see See [here](https://react-dropzone.js.org/#section-accepting-specific-file-types) for more details.\n */\n acceptedFiles: PropTypes.arrayOf(PropTypes.string),\n /** Maximum number of files that can be loaded into the dropzone. */\n filesLimit: PropTypes.number,\n /** Icon to be displayed inside the dropzone area. */\n Icon: PropTypes.elementType,\n /** Currently loaded files. */\n fileObjects: PropTypes.arrayOf(FileObjectShape),\n /** Maximum file size (in bytes) that the dropzone will accept. */\n maxFileSize: PropTypes.number,\n /** Text inside the dropzone. */\n dropzoneText: PropTypes.string,\n /** Custom CSS class name for dropzone container. */\n dropzoneClass: PropTypes.string,\n /** Custom CSS class name for text inside the container. */\n dropzoneParagraphClass: PropTypes.string,\n /** Disable feedback effect when dropping rejected files. */\n disableRejectionFeedback: PropTypes.bool,\n /** Shows previews **BELOW** the dropzone. */\n showPreviews: PropTypes.bool,\n /** Shows preview **INSIDE** the dropzone area. */\n showPreviewsInDropzone: PropTypes.bool,\n /** Shows file name under the dropzone image. */\n showFileNames: PropTypes.bool,\n /** Shows file name under the image. */\n showFileNamesInPreview: PropTypes.bool,\n /** Uses deletable Material-UI Chip components to display file names. */\n useChipsForPreview: PropTypes.bool,\n /**\n * Props to pass to the Material-UI Chip components.
Requires `useChipsForPreview` prop to be `true`.\n *\n * @see See [Material-UI Chip](https://material-ui.com/api/chip/#props) for available values.\n */\n previewChipProps: PropTypes.object,\n /**\n * Custom CSS classNames for preview Grid components.
\n * Should be in the form {container: string, item: string, image: string}.\n */\n previewGridClasses: PropTypes.object,\n /**\n * Props to pass to the Material-UI Grid components.
\n * Should be in the form {container: GridProps, item: GridProps}.\n *\n * @see See [Material-UI Grid](https://material-ui.com/api/grid/#props) for available GridProps values.\n */\n previewGridProps: PropTypes.object,\n /** The label for the file preview section. */\n previewText: PropTypes.string,\n /**\n * Shows styled Material-UI Snackbar when files are dropped, deleted or rejected.\n *\n * - can be a boolean (\"global\" `true` or `false` for all alerts).\n * - can be an array, with values 'error', 'info', 'success' to select to view only certain alerts:\n * - showAlerts={['error']} for only errors.\n * - showAlerts={['error', 'info']} for both errors and info.\n * - showAlerts={['error', 'success', 'info']} is same as showAlerts={true}.\n * - showAlerts={[]} is same as showAlerts={false}.\n */\n showAlerts: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.arrayOf(PropTypes.oneOf(['error', 'success', 'info'])),\n ]),\n /**\n * Props to pass to the Material-UI Snackbar components.
Requires `showAlerts` prop to be `true`.\n *\n * @see See [Material-UI Snackbar](https://material-ui.com/api/snackbar/#props) for available values.\n */\n alertSnackbarProps: PropTypes.object,\n /**\n * Props to pass to the Dropzone component.\n *\n * @see See [Dropzone props](https://react-dropzone.js.org/#src) for available values.\n */\n dropzoneProps: PropTypes.object,\n /**\n * Attributes applied to the input element.\n *\n * @see See [MDN Input File attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#Additional_attributes) for available values.\n */\n inputProps: PropTypes.object,\n /**\n * Get alert message to display when files limit is exceed.\n *\n * *Default*: \"Maximum allowed number of files exceeded. Only ${filesLimit} allowed\"\n *\n * @param {number} filesLimit The `filesLimit` currently set for the component.\n */\n getFileLimitExceedMessage: PropTypes.func,\n /**\n * Get alert message to display when a new file is added.\n *\n * *Default*: \"File ${fileName} successfully added.\"\n *\n * @param {string} fileName The newly added file name.\n */\n getFileAddedMessage: PropTypes.func,\n /**\n * Get alert message to display when an added file cannot be read.\n * \n * Basically all errors that might be thrown by FileReader API, e.g. when file is not accessible.\n *\n * *Default*: \"Error opening file ${file.name}\"\n *\n * @param {File} file The newly added file.\n * @param {Error} error The error thrown by FileReader API\n */\n getFileErrorMessage: PropTypes.func,\n /**\n * Get alert message to display when a file is removed.\n *\n * *Default*: \"File ${fileName} removed.\"\n *\n * @param {string} fileName The name of the removed file.\n */\n getFileRemovedMessage: PropTypes.func,\n /**\n * Get alert message to display when a file is rejected onDrop.\n *\n * *Default*: \"File ${rejectedFile.name} was rejected.\"\n *\n * @param {Object} rejectedFile The file that got rejected\n * @param {string[]} acceptedFiles The `acceptedFiles` prop currently set for the component\n * @param {number} maxFileSize The `maxFileSize` prop currently set for the component\n */\n getDropRejectMessage: PropTypes.func,\n /**\n * A function which determines which icon to display for a file preview.\n *\n * *Default*: If its an image then displays a preview the image, otherwise it will display an attachment icon\n *\n * @param {FileObject} objectFile The file which the preview will belong to\n * @param {Object} classes The classes for the file preview icon, in the default case we use the 'image' className.\n */\n getPreviewIcon: PropTypes.func,\n /**\n * Fired when new files are added to dropzone.\n *\n * @param {FileObject[]} newFiles The new files added to the dropzone.\n */\n onAdd: PropTypes.func,\n /**\n * Fired when a file is deleted from the previews panel.\n *\n * @param {FileObject} deletedFileObject The file that was removed.\n * @param {number} index The index of the removed file object.\n */\n onDelete: PropTypes.func,\n /**\n * Fired when the user drops files into the dropzone.\n *\n * @param {File[]} droppedFiles All the files dropped into the dropzone.\n * @param {Event} event The react-dropzone drop event.\n */\n onDrop: PropTypes.func,\n /**\n * Fired when a file is rejected because of wrong file type, size or goes beyond the filesLimit.\n *\n * @param {File[]} rejectedFiles All the rejected files.\n * @param {Event} event The react-dropzone drop event.\n */\n onDropRejected: PropTypes.func,\n /**\n * Fired when an alert is triggered.\n *\n * @param {string} message Alert message.\n * @param {string} variant One of \"error\", \"info\", \"success\".\n */\n onAlert: PropTypes.func,\n};\n\nexport default withStyles(styles, {name: 'MuiDropzoneArea'})(DropzoneAreaBase);\n","import PropTypes from 'prop-types';\nimport * as React from 'react';\n\nimport {createFileFromUrl, readFile} from '../helpers';\n\nimport DropzoneAreaBase from './DropzoneAreaBase';\n\nconst splitDropzoneAreaProps = (props) => {\n const {clearOnUnmount, initialFiles, onChange, onDelete, ...dropzoneAreaProps} = props;\n return [{clearOnUnmount, initialFiles, onChange, onDelete}, dropzoneAreaProps];\n};\n\n/**\n * This components creates an uncontrolled Material-UI Dropzone, with previews and snackbar notifications.\n *\n * It supports all props of `DropzoneAreaBase` but keeps the files state internally.\n *\n * **Note** To listen to file changes use `onChange` event handler and notice that `onDelete` returns a `File` instance instead of `FileObject`.\n */\nclass DropzoneArea extends React.PureComponent {\n state = {\n fileObjects: [],\n }\n\n componentDidMount() {\n this.loadInitialFiles();\n }\n\n componentWillUnmount() {\n const {clearOnUnmount} = this.props;\n\n if (clearOnUnmount) {\n this.setState({\n fileObjects: [],\n }, this.notifyFileChange);\n }\n }\n\n notifyFileChange = () => {\n const {onChange} = this.props;\n const {fileObjects} = this.state;\n\n if (onChange) {\n onChange(fileObjects.map((fileObject) => fileObject.file));\n }\n }\n\n loadInitialFiles = async() => {\n const {initialFiles} = this.props;\n try {\n const fileObjs = await Promise.all(\n initialFiles.map(async(initialFile) => {\n let file;\n if (typeof initialFile === 'string' ) {\n file = await createFileFromUrl(initialFile);\n } else {\n file = initialFile;\n }\n const data = await readFile(file);\n\n return {\n file,\n data,\n };\n })\n );\n\n this.setState((state) => ({\n fileObjects: [].concat(\n state.fileObjects,\n fileObjs\n ),\n }), this.notifyFileChange);\n } catch (err) {\n console.log(err);\n }\n }\n\n addFiles = async(newFileObjects) => {\n const {filesLimit} = this.props;\n // Update component state\n this.setState((state) => {\n // Handle a single file\n if (filesLimit <= 1) {\n return {\n fileObjects: [].concat(newFileObjects[0]),\n };\n }\n\n // Handle multiple files\n return {\n fileObjects: [].concat(\n state.fileObjects,\n newFileObjects\n ),\n };\n }, this.notifyFileChange);\n }\n\n deleteFile = (removedFileObj, removedFileObjIdx) => {\n event.stopPropagation();\n\n const {onDelete} = this.props;\n const {fileObjects} = this.state;\n\n // Calculate remaining fileObjects array\n const remainingFileObjs = fileObjects.filter((fileObject, i) => {\n return i !== removedFileObjIdx;\n });\n\n // Notify removed file\n if (onDelete) {\n onDelete(removedFileObj.file);\n }\n\n // Update local state\n this.setState({\n fileObjects: remainingFileObjs,\n }, this.notifyFileChange);\n }\n\n render() {\n const [, dropzoneAreaProps] = splitDropzoneAreaProps(this.props);\n const {fileObjects} = this.state;\n\n return (\n \n );\n }\n}\n\nDropzoneArea.defaultProps = {\n clearOnUnmount: true,\n filesLimit: 3,\n initialFiles: [],\n};\n\nDropzoneArea.propTypes = {\n ...DropzoneAreaBase.propTypes,\n /** Clear uploaded files when component is unmounted. */\n clearOnUnmount: PropTypes.bool,\n /** List containing File objects or URL strings.
\n * **Note:** Please take care of CORS.\n */\n initialFiles: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.any,\n ])\n ),\n /** Maximum number of files that can be loaded into the dropzone. */\n filesLimit: PropTypes.number,\n /**\n * Fired when the files inside dropzone change.\n *\n * @param {File[]} loadedFiles All the files currently loaded into the dropzone.\n */\n onChange: PropTypes.func,\n /**\n * Fired when a file is deleted from the previews panel.\n *\n * @param {File} deletedFile The file that was removed.\n */\n onDelete: PropTypes.func,\n};\n\nexport default DropzoneArea;\n","import Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n\nimport DropzoneAreaBase from './DropzoneAreaBase';\n\n// Split props related to DropzoneDialog from DropzoneArea ones\nfunction splitDropzoneDialogProps(allProps) {\n const {\n cancelButtonText,\n dialogProps,\n dialogTitle,\n fullWidth,\n maxWidth,\n onClose,\n onSave,\n open,\n submitButtonText,\n ...dropzoneAreaProps\n } = allProps;\n\n return [\n {\n cancelButtonText,\n dialogProps,\n dialogTitle,\n fullWidth,\n maxWidth,\n onClose,\n onSave,\n open,\n submitButtonText,\n },\n dropzoneAreaProps,\n ];\n}\n\n/**\n * This component provides the DropzoneArea inside of a Material-UI Dialog.\n *\n * It supports all the Props and Methods from `DropzoneAreaBase`.\n */\nclass DropzoneDialogBase extends React.PureComponent {\n render() {\n const [dropzoneDialogProps, dropzoneAreaProps] = splitDropzoneDialogProps(this.props);\n const {\n cancelButtonText,\n dialogProps,\n dialogTitle,\n fullWidth,\n maxWidth,\n onClose,\n onSave,\n open,\n submitButtonText,\n } = dropzoneDialogProps;\n\n // Submit button state\n const submitDisabled = dropzoneAreaProps.fileObjects.length === 0;\n\n return (\n \n {dialogTitle}\n\n \n \n \n\n \n \n {cancelButtonText}\n \n\n \n {submitButtonText}\n \n \n \n );\n }\n}\n\nDropzoneDialogBase.defaultProps = {\n open: false,\n dialogTitle: 'Upload file',\n dialogProps: {},\n fullWidth: true,\n maxWidth: 'sm',\n cancelButtonText: 'Cancel',\n submitButtonText: 'Submit',\n showPreviews: true,\n showPreviewsInDropzone: false,\n showFileNamesInPreview: true,\n};\n\nDropzoneDialogBase.propTypes = {\n ...DropzoneAreaBase.propTypes,\n /** Sets whether the dialog is open or closed. */\n open: PropTypes.bool,\n /** The Dialog title. */\n dialogTitle: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n ]),\n /**\n * Props to pass to the Material-UI Dialog components.\n * @see See [Material-UI Dialog](https://material-ui.com/api/dialog/#props) for available values.\n */\n dialogProps: PropTypes.object,\n /**\n * If `true`, the dialog stretches to `maxWidth`.
\n * Notice that the dialog width grow is limited by the default margin.\n */\n fullWidth: PropTypes.bool,\n /**\n * Determine the max-width of the dialog. The dialog width grows with the size of the screen.
\n * Set to `false` to disable `maxWidth`.\n */\n maxWidth: PropTypes.string,\n /** Cancel button text in dialog. */\n cancelButtonText: PropTypes.string,\n /** Submit button text in dialog. */\n submitButtonText: PropTypes.string,\n /**\n * Fired when the modal is closed.\n *\n * @param {SyntheticEvent} event The react `SyntheticEvent`\n */\n onClose: PropTypes.func,\n /**\n * Fired when the user clicks the Submit button.\n *\n * @param {SyntheticEvent} event The react `SyntheticEvent`\n */\n onSave: PropTypes.func,\n /**\n * Shows previews **BELOW** the dropzone.
\n * **Note:** By default previews show up under in the Dialog and inside in the standalone.\n */\n showPreviews: PropTypes.bool,\n /** Shows preview **INSIDE** the dropzone area. */\n showPreviewsInDropzone: PropTypes.bool,\n /** Shows file name under the image. */\n showFileNamesInPreview: PropTypes.bool,\n};\n\nexport default DropzoneDialogBase;\n","import PropTypes from 'prop-types';\nimport * as React from 'react';\n\nimport {createFileFromUrl, readFile} from '../helpers';\n\nimport DropzoneDialogBase from './DropzoneDialogBase';\n\n\n/**\n * This component provides an uncontrolled version of the DropzoneDialogBase component.\n *\n * It supports all the Props and Methods from `DropzoneDialogBase` but keeps the files state internally.\n *\n * **Note** The `onSave` handler also returns `File[]` with all the accepted files.\n */\nclass DropzoneDialog extends React.PureComponent {\n state = {\n fileObjects: [],\n }\n\n componentDidMount() {\n this.loadInitialFiles();\n }\n\n componentWillUnmount() {\n const {clearOnUnmount} = this.props;\n\n if (clearOnUnmount) {\n this.setState({\n fileObjects: [],\n }, this.notifyFileChange);\n }\n }\n\n notifyFileChange = () => {\n const {onChange} = this.props;\n const {fileObjects} = this.state;\n\n if (onChange) {\n onChange(fileObjects.map((fileObject) => fileObject.file));\n }\n }\n\n loadInitialFiles = async() => {\n const {initialFiles} = this.props;\n try {\n const fileObjs = await Promise.all(\n initialFiles.map(async(initialFile) => {\n let file;\n if (typeof initialFile === 'string' ) {\n file = await createFileFromUrl(initialFile);\n } else {\n file = initialFile;\n }\n const data = await readFile(file);\n\n return {\n file,\n data,\n };\n })\n );\n\n this.setState((state) => ({\n fileObjects: [].concat(\n state.fileObjects,\n fileObjs\n ),\n }), this.notifyFileChange);\n } catch (err) {\n console.log(err);\n }\n }\n\n addFiles = async(newFileObjects) => {\n const {filesLimit} = this.props;\n // Update component state\n this.setState((state) => {\n // Handle a single file\n if (filesLimit <= 1) {\n return {\n fileObjects: [].concat(newFileObjects[0]),\n };\n }\n\n // Handle multiple files\n return {\n fileObjects: [].concat(\n state.fileObjects,\n newFileObjects\n ),\n };\n }, this.notifyFileChange);\n }\n\n deleteFile = (removedFileObj, removedFileObjIdx) => {\n event.stopPropagation();\n\n const {onDelete} = this.props;\n const {fileObjects} = this.state;\n\n // Calculate remaining fileObjects array\n const remainingFileObjs = fileObjects.filter((fileObject, i) => {\n return i !== removedFileObjIdx;\n });\n\n // Notify removed file\n if (onDelete) {\n onDelete(removedFileObj.file);\n }\n\n // Update local state\n this.setState({\n fileObjects: remainingFileObjs,\n }, this.notifyFileChange);\n }\n\n handleClose = (evt) => {\n const {clearOnUnmount, onClose} = this.props;\n\n if (onClose) {\n onClose(evt);\n }\n\n if (clearOnUnmount) {\n this.setState({\n fileObjects: [],\n }, this.notifyFileChange);\n }\n }\n\n handleSave = (evt) => {\n const {clearOnUnmount, onSave} = this.props;\n const {fileObjects} = this.state;\n\n if (onSave) {\n onSave(fileObjects.map((fileObject) => fileObject.file), evt);\n }\n\n if (clearOnUnmount) {\n this.setState({\n fileObjects: [],\n }, this.notifyFileChange);\n }\n }\n\n render() {\n const {fileObjects} = this.state;\n\n return (\n \n );\n }\n}\n\nDropzoneDialog.defaultProps = {\n clearOnUnmount: true,\n filesLimit: 3,\n initialFiles: [],\n};\n\nDropzoneDialog.propTypes = {\n ...DropzoneDialogBase.propTypes,\n /** Clear uploaded files when component is unmounted. */\n clearOnUnmount: PropTypes.bool,\n /** Maximum number of files that can be loaded into the dropzone. */\n filesLimit: PropTypes.number,\n /** List containing File objects or URL strings.
\n * **Note:** Please take care of CORS.\n */\n initialFiles: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.any,\n ])\n ),\n /**\n * Fired when the user clicks the Submit button.\n *\n * @param {File[]} files All the files currently inside the Dropzone.\n * @param {SyntheticEvent} event The react `SyntheticEvent`.\n */\n onSave: PropTypes.func,\n};\n\nexport default DropzoneDialog;\n"],"names":["isImage","file","type","split","convertBytesToMbsOrKbs","filesize","size","createFileFromUrl","url","fetch","response","blob","data","metadata","filename","replace","pop","File","readFile","Promise","resolve","reject","reader","FileReader","onload","event","target","result","onerror","abort","readAsDataURL","styles","palette","shape","spacing","root","imageContainer","position","zIndex","textAlign","opacity","image","height","width","maxWidth","color","text","primary","transition","boxSizing","boxShadow","borderRadius","removeButton","top","right","React.createElement","PreviewList","fileObjects","handleRemove","showFileNames","useChipsForPreview","previewChipProps","previewGridClasses","previewGridProps","classes","getPreviewIcon","container","clsx","map","fileObject","i","item","name","propTypes","PropTypes","object","isRequired","arrayOf","func","bool","withStyles","variantIcon","success","CheckCircleIcon","warning","WarningIcon","error","ErrorIcon","info","InfoIcon","theme","successAlert","backgroundColor","main","errorAlert","infoAlert","warningAlert","message","display","alignItems","marginRight","icon","fontSize","closeButton","SnackbarContentWrapper","props","className","onClose","variant","other","Icon","string","node","oneOf","backgroundPosition","minHeight","background","paper","border","borderColor","divider","cursor","overflow","active","animation","backgroundImage","backgroundSize","light","invalid","dark","textContainer","marginBottom","marginTop","defaultSnackbarAnchorOrigin","horizontal","vertical","defaultGetPreviewIcon","DropzoneAreaBase","state","openSnackBar","snackbarMessage","snackbarVariant","handleDropAccepted","acceptedFiles","evt","filesLimit","getFileAddedMessage","getFileErrorMessage","getFileLimitExceedMessage","onAdd","onDrop","length","setState","notifyAlert","all","actualError","allFileObjs","unreadableFiles","filter","obj","reduce","msg","fileObj","validFileObjs","handleDropRejected","rejectedFiles","getDropRejectMessage","maxFileSize","onDropRejected","forEach","rejectedFile","fileIndex","stopPropagation","getFileRemovedMessage","onDelete","removedFileObj","handleCloseSnackbar","onAlert","alertSnackbarProps","disableRejectionFeedback","dropzoneClass","dropzoneParagraphClass","dropzoneProps","dropzoneText","inputProps","previewText","showAlerts","showFileNamesInPreview","showPreviews","showPreviewsInDropzone","acceptFiles","join","isMultiple","previewsVisible","previewsInDropzoneVisible","Fragment","getRootProps","getInputProps","isDragActive","isDragReject","Array","isArray","includes","React","defaultProps","anchorOrigin","autoHideDuration","fileName","FileObjectShape","any","number","elementType","oneOfType","splitDropzoneAreaProps","clearOnUnmount","initialFiles","onChange","dropzoneAreaProps","DropzoneArea","notifyFileChange","loadInitialFiles","initialFile","fileObjs","concat","console","log","addFiles","newFileObjects","deleteFile","removedFileObjIdx","remainingFileObjs","splitDropzoneDialogProps","allProps","cancelButtonText","dialogProps","dialogTitle","fullWidth","onSave","open","submitButtonText","DropzoneDialogBase","dropzoneDialogProps","submitDisabled","element","DropzoneDialog","handleClose","handleSave"],"mappings":"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"} \ No newline at end of file diff --git a/src/components/DropzoneAreaBase.js b/src/components/DropzoneAreaBase.js index c9fe83d0..087227d9 100644 --- a/src/components/DropzoneAreaBase.js +++ b/src/components/DropzoneAreaBase.js @@ -96,7 +96,15 @@ class DropzoneAreaBase extends React.PureComponent { } handleDropAccepted = async(acceptedFiles, evt) => { - const {fileObjects, filesLimit, getFileAddedMessage, getFileLimitExceedMessage, onAdd, onDrop} = this.props; + const { + fileObjects, + filesLimit, + getFileAddedMessage, + getFileErrorMessage, + getFileLimitExceedMessage, + onAdd, + onDrop, + } = this.props; if (filesLimit > 1 && fileObjects.length + acceptedFiles.length > filesLimit) { this.setState({ @@ -113,23 +121,53 @@ class DropzoneAreaBase extends React.PureComponent { } // Retrieve fileObjects data - const fileObjs = await Promise.all( + const allFileObjs = await Promise.all( acceptedFiles.map(async(file) => { - const data = await readFile(file); - return { - file, - data, - }; + try { + const data = await readFile(file); + return { + file, + data, + }; + } catch (error) { + // native errors may happen, e.g. file not readable, ... + const {target} = error; + // If the error originates from FileReader, lookup the actual error from the FileReader + const actualError = target instanceof FileReader ? target.error : error; + return { + file, + error: actualError, + }; + } }) ); + const unreadableFiles = allFileObjs.filter((obj) => obj.error != null); + if (unreadableFiles.length > 0) { + const message = unreadableFiles.reduce( + (msg, fileObj) => msg + getFileErrorMessage(fileObj.file, fileObj.error), + '', + ); + this.setState({ + openSnackBar: true, + snackbarMessage: message, + snackbarVariant: 'error', + }, this.notifyAlert); + } + + const validFileObjs = allFileObjs.filter((obj) => obj.error == null); + + if (validFileObjs.length <= 0) { + return; + } + // Notify added files if (onAdd) { - onAdd(fileObjs); + onAdd(validFileObjs); } // Display message - const message = fileObjs.reduce((msg, fileObj) => msg + getFileAddedMessage(fileObj.file.name), ''); + const message = validFileObjs.reduce((msg, fileObj) => msg + getFileAddedMessage(fileObj.file.name), ''); this.setState({ openSnackBar: true, snackbarMessage: message, @@ -348,6 +386,7 @@ DropzoneAreaBase.defaultProps = { }, getFileLimitExceedMessage: (filesLimit) => (`Maximum allowed number of files exceeded. Only ${filesLimit} allowed`), getFileAddedMessage: (fileName) => (`File ${fileName} successfully added.`), + getFileErrorMessage: (file) => (`Error opening file ${file.name}`), getPreviewIcon: defaultGetPreviewIcon, getFileRemovedMessage: (fileName) => (`File ${fileName} removed.`), getDropRejectMessage: (rejectedFile, acceptedFiles, maxFileSize) => { @@ -468,6 +507,17 @@ DropzoneAreaBase.propTypes = { * @param {string} fileName The newly added file name. */ getFileAddedMessage: PropTypes.func, + /** + * Get alert message to display when an added file cannot be read. + * + * Basically all errors that might be thrown by FileReader API, e.g. when file is not accessible. + * + * *Default*: "Error opening file ${file.name}" + * + * @param {File} file The newly added file. + * @param {Error} error The error thrown by FileReader API + */ + getFileErrorMessage: PropTypes.func, /** * Get alert message to display when a file is removed. * diff --git a/src/index.d.ts b/src/index.d.ts index e52beb4f..acc6b69f 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -74,6 +74,7 @@ export type DropzoneAreaBaseProps = { onAlert?: (message: string, variant: AlertType) => void; getFileLimitExceedMessage?: (filesLimit: number) => string; getFileAddedMessage?: (fileName: string) => string; + getFileErrorMessage?: (file: File, error: Error) => string; getFileRemovedMessage?: (fileName: string) => string; getDropRejectMessage?: ( rejectedFile: File,