diff --git a/.size-snapshot.json b/.size-snapshot.json index 58b56539..fe0ec59c 100644 --- a/.size-snapshot.json +++ b/.size-snapshot.json @@ -1,20 +1,20 @@ { "dist/index.js": { - "bundled": 57189, - "minified": 25753, - "gzipped": 5983 + "bundled": 57367, + "minified": 25794, + "gzipped": 5995 }, "dist/index.es.js": { - "bundled": 56007, - "minified": 24741, - "gzipped": 5861, + "bundled": 56185, + "minified": 24782, + "gzipped": 5873, "treeshaked": { "rollup": { - "code": 10815, + "code": 10836, "import_statements": 1533 }, "webpack": { - "code": 21871 + "code": 21894 } } } diff --git a/README.md b/README.md index 1c1dab8c..98a621d6 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,17 @@ # material-ui-dropzone -> Material-UI-dropzone is a [React](https://github.com/facebook/react) component using [Material-UI](https://github.com/mui-org/material-ui) and is based on the excellent [react-dropzone](https://github.com/react-dropzone/react-dropzone) library. +[![License](https://img.shields.io/github/license/yuvaleros/material-ui-dropzone)](https://github.com/Yuvaleros/material-ui-dropzone/blob/master/LICENSE) [![All Contributors](https://img.shields.io/badge/all_contributors-9-orange.svg)](#contributors) [![Rebuild Dist Workflow Status](https://img.shields.io/github/workflow/status/yuvaleros/material-ui-dropzone/Rebuild%20Dist?label=build)](https://github.com/Yuvaleros/material-ui-dropzone/actions?query=workflow%3A%22Rebuild+Dist%22) [![Update Docs Workflow Status](https://img.shields.io/github/workflow/status/yuvaleros/material-ui-dropzone/Update%20Docs?label=docs)](https://github.com/Yuvaleros/material-ui-dropzone/actions?query=workflow%3A%22Update+Docs%22) [![npm package](https://img.shields.io/npm/v/material-ui-dropzone)](https://www.npmjs.com/package/material-ui-dropzone) [![npm downloads](https://img.shields.io/npm/dm/material-ui-dropzone.svg)](https://www.npmjs.com/package/material-ui-dropzone) -[![License](https://img.shields.io/github/license/yuvaleros/material-ui-dropzone)](https://github.com/Yuvaleros/material-ui-dropzone/blob/master/LICENSE) [![All Contributors](https://img.shields.io/badge/all_contributors-9-orange.svg)](#contributors) - -[![Rebuild Dist Workflow Status](https://img.shields.io/github/workflow/status/yuvaleros/material-ui-dropzone/Rebuild%20Dist?label=build)](https://github.com/Yuvaleros/material-ui-dropzone/actions?query=workflow%3A%22Rebuild+Dist%22) [![Update Docs Workflow Status](https://img.shields.io/github/workflow/status/yuvaleros/material-ui-dropzone/Update%20Docs?label=docs)](https://github.com/Yuvaleros/material-ui-dropzone/actions?query=workflow%3A%22Update+Docs%22) +**Material-UI-Dropzone** is a set of [React](https://github.com/facebook/react) components using [Material-UI](https://github.com/mui-org/material-ui) and is based on the excellent [react-dropzone](https://github.com/react-dropzone/react-dropzone) library. -[![npm package](https://img.shields.io/npm/v/material-ui-dropzone)](https://www.npmjs.com/package/material-ui-dropzone) [![npm downloads](https://img.shields.io/npm/dm/material-ui-dropzone.svg)](https://www.npmjs.com/package/material-ui-dropzone) +These components provide: -This components provide either a file-upload dropzone or a file-upload dropzone inside of a dialog. +- File Upload Dropzone +- File Upload Dropzone inside of a Dialog + +Additionally, the File Upload Dropzone features some snazzy "File Allowed/Not Allowed" effects, previews and alerts. -The file-upload dropzone features some snazzy "File Allowed/Not Allowed" effects, previews and alerts. ## Installation @@ -34,26 +34,17 @@ yarn add material-ui-dropzone | `3.x` | `16.8+` | `4.x` | | `2.x` | `15.x` or `16.x` | `3.x` or `4.x` | -## Screenshots - -This is the Dialog component: - -![Dialog](https://raw.githubusercontent.com/Yuvaleros/material-ui-dropzone/master/pics/demo_pic.jpg) -![Dialog with Previews](https://raw.githubusercontent.com/Yuvaleros/material-ui-dropzone/master/pics/demo_pic5.JPG) - -When you drag a file onto the dropzone, you get a neat effect: - -![Drag Overlay](https://raw.githubusercontent.com/Yuvaleros/material-ui-dropzone/master/pics/demo_pic2.JPG) - -And if you drag in a wrong type of file, you'll get yelled at: +## Demo -![Drag Error Overlay](https://raw.githubusercontent.com/Yuvaleros/material-ui-dropzone/master/pics/demo_pic4.JPG) +Full documentation and samples are available here [https://yuvaleros.github.io/material-ui-dropzone](https://yuvaleros.github.io/material-ui-dropzone). -**N.B. This has some limitations (see [here](https://github.com/react-dropzone/react-dropzone/tree/master/examples/accept#browser-limitations) for more details).** +**Preview: Dialog Component** with drag'n'drop effects for accepted and rejected files. -## Documentation and Examples +drawing +
+
-See [https://yuvaleros.github.io/material-ui-dropzone](https://yuvaleros.github.io/material-ui-dropzone) for Documentation and Examples. +**Disclaimer:** Drag'n'drop handling has some known limitations, see [here](https://github.com/react-dropzone/react-dropzone/tree/master/examples/accept#browser-limitations) for more details. ## Components diff --git a/dist/index.d.ts b/dist/index.d.ts index e52beb4f..44bf7f8a 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -42,7 +42,7 @@ export type DropzoneAreaBaseProps = { filesLimit?: number; Icon?: React.ComponentType; maxFileSize?: number; - dropzoneText?: string; + dropzoneText?: string | React.ReactElement; previewText?: string; showPreviews?: boolean; showPreviewsInDropzone?: boolean; @@ -97,7 +97,7 @@ export type DropzoneAreaProps = Omit< clearOnUnmount?: boolean; initialFiles?: (File | string)[]; onChange?: (files: File[]) => void; - onDelete?: (file: File) => void; + onDelete?: (file: File, index: number) => void; }; export const DropzoneArea: React.ComponentType; diff --git a/dist/index.es.js b/dist/index.es.js index 18b7eab8..328d9706 100644 --- a/dist/index.es.js +++ b/dist/index.es.js @@ -626,11 +626,11 @@ var DropzoneAreaBase = /*#__PURE__*/function (_React$PureComponent) { className: clsx(classes.root, dropzoneClass, isDragActive && classes.active, !disableRejectionFeedback && isDragReject && classes.invalid) }), /*#__PURE__*/createElement("input", getInputProps(inputProps)), /*#__PURE__*/createElement("div", { className: classes.textContainer - }, /*#__PURE__*/createElement(Typography, { + }, typeof dropzoneText === 'string' ? /*#__PURE__*/createElement(Typography, { variant: "h5", component: "p", className: clsx(classes.text, dropzoneParagraphClass) - }, dropzoneText), Icon ? /*#__PURE__*/createElement(Icon, { + }, dropzoneText) : dropzoneText, Icon ? /*#__PURE__*/createElement(Icon, { className: classes.icon }) : /*#__PURE__*/createElement(CloudUploadIcon, { className: classes.icon @@ -747,8 +747,8 @@ process.env.NODE_ENV !== "production" ? DropzoneAreaBase.propTypes = { /** Maximum file size (in bytes) that the dropzone will accept. */ maxFileSize: PropTypes.number, - /** Text inside the dropzone. */ - dropzoneText: PropTypes.string, + /** Text or Element inside the dropzone. */ + dropzoneText: PropTypes.string | PropTypes.element, /** Custom CSS class name for dropzone container. */ dropzoneClass: PropTypes.string, @@ -1106,7 +1106,7 @@ var DropzoneArea = /*#__PURE__*/function (_React$PureComponent) { }); // Notify removed file if (onDelete) { - onDelete(removedFileObj.file); + onDelete(removedFileObj.file, removedFileObjIdx); } // Update local state @@ -1181,6 +1181,7 @@ process.env.NODE_ENV !== "production" ? DropzoneArea.propTypes = _extends({}, Dr * Fired when a file is deleted from the previews panel. * * @param {File} deletedFile The file that was removed. + * @param {number} deletedFileIndex The index of the file that was removed. */ onDelete: PropTypes.func }) : void 0; diff --git a/dist/index.es.js.map b/dist/index.es.js.map index 9d95af11..ca8c4e17 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":"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"} \ 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, 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 { typeof dropzoneText === 'string' ?\n \n {dropzoneText}\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 or Element inside the dropzone. */\n dropzoneText: PropTypes.string | PropTypes.element,\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, removedFileObjIdx);\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 * @param {number} deletedFileIndex The index of 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","element","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","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..d32119ff 100644 --- a/dist/index.js +++ b/dist/index.js @@ -632,11 +632,11 @@ var DropzoneAreaBase = /*#__PURE__*/function (_React$PureComponent) { className: clsx(classes.root, dropzoneClass, isDragActive && classes.active, !disableRejectionFeedback && isDragReject && classes.invalid) }), /*#__PURE__*/React.createElement("input", getInputProps(inputProps)), /*#__PURE__*/React.createElement("div", { className: classes.textContainer - }, /*#__PURE__*/React.createElement(Typography, { + }, typeof dropzoneText === 'string' ? /*#__PURE__*/React.createElement(Typography, { variant: "h5", component: "p", className: clsx(classes.text, dropzoneParagraphClass) - }, dropzoneText), Icon ? /*#__PURE__*/React.createElement(Icon, { + }, dropzoneText) : dropzoneText, Icon ? /*#__PURE__*/React.createElement(Icon, { className: classes.icon }) : /*#__PURE__*/React.createElement(CloudUploadIcon, { className: classes.icon @@ -753,8 +753,8 @@ process.env.NODE_ENV !== "production" ? DropzoneAreaBase.propTypes = { /** Maximum file size (in bytes) that the dropzone will accept. */ maxFileSize: PropTypes.number, - /** Text inside the dropzone. */ - dropzoneText: PropTypes.string, + /** Text or Element inside the dropzone. */ + dropzoneText: PropTypes.string | PropTypes.element, /** Custom CSS class name for dropzone container. */ dropzoneClass: PropTypes.string, @@ -1112,7 +1112,7 @@ var DropzoneArea = /*#__PURE__*/function (_React$PureComponent) { }); // Notify removed file if (onDelete) { - onDelete(removedFileObj.file); + onDelete(removedFileObj.file, removedFileObjIdx); } // Update local state @@ -1187,6 +1187,7 @@ process.env.NODE_ENV !== "production" ? DropzoneArea.propTypes = _extends({}, Dr * Fired when a file is deleted from the previews panel. * * @param {File} deletedFile The file that was removed. + * @param {number} deletedFileIndex The index of the file that was removed. */ onDelete: PropTypes.func }) : void 0; diff --git a/dist/index.js.map b/dist/index.js.map index da94d19f..5feac6c2 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,oBAAC,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,oBAAC,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,oBAAC,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,oBAAC,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,oBAAC,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,oBAAC,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,oBAAC,UAAD;AAAY,MAAA,OAAO,EAAC,OAApB;AAA4B,MAAA,SAAS,EAAC;AAAtC,OACKc,UAAU,CAACpE,IAAX,CAAgBuE,IADrB,CAVR,eAeIjB,oBAAC,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,mBAAU,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,oBAAC,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,oBAAC,IAAD;AAAM,MAAA,SAAS,EAAES,OAAO,CAACqC;AAAzB,MADJ,EAEKJ,OAFL,CAJR;AASI,IAAA,MAAM,EAAE,cACJ1C,oBAAC,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,oBAAC,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,mBAAU,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,oBAAC,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,oBAACsI,cAAD,qBACItI,oBAAC,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,YAAEI,YAAF,SAAEA,YAAF;AAAA,YAAgBC,aAAhB,SAAgBA,aAAhB;AAAA,YAA+BC,YAA/B,SAA+BA,YAA/B;AAAA,YAA6CC,YAA7C,SAA6CA,YAA7C;AAAA,4BACG1I,2BACQuI,YAAY,CAAC;AACbpF,UAAAA,SAAS,EAAEvC,IAAI,CACXH,OAAO,CAAC7B,IADG,EAEX2I,aAFW,EAGXkB,YAHW,IAGKhI,OAAO,CAAC2D,MAHb,EAIV,CAACkD,wBAJS,IAImBoB,YAJnB,IAIoCjI,OAAO,CAACgE,OAJ5C;AADF,SAAD,CADpB,eAUIzE,6BAAWwI,aAAa,CAACb,UAAD,CAAxB,CAVJ,eAYI3H;AAAK,UAAA,SAAS,EAAES,OAAO,CAACkE;AAAxB,wBACI3E,oBAAC,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,oBAAC,IAAD;AAAM,UAAA,SAAS,EAAES,OAAO,CAACqC;AAAzB,UADC,gBAGD9C,oBAAC,eAAD;AAAiB,UAAA,SAAS,EAAES,OAAO,CAACqC;AAApC,UAXR,CAZJ,EA2BKuF,yBAAyB,iBACtBrI,oBAACC,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,oBAACsI,cAAD,qBACItI,oBAAC,UAAD;AAAY,QAAA,OAAO,EAAC,WAApB;AAAgC,QAAA,SAAS,EAAC;AAA1C,SACK4H,WADL,CADJ,eAKI5H,oBAACC,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,IACGc,KAAK,CAACC,OAAN,CAAcf,UAAd,KAA6BA,UAAU,CAACgB,QAAX,CAAoBvD,eAApB,CADjC,kBAEGtF,oBAAC,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,oBAACiD,wBAAD;AACI,QAAA,OAAO,EAAE,KAAKkE,mBADlB;AAEI,QAAA,OAAO,EAAE7B,eAFb;AAGI,QAAA,OAAO,EAAED;AAHb,QAPJ,CA1ER,CADJ;AA2FH;;;;EA/O0ByD;;AAkP/B5D,gBAAgB,CAAC6D,YAAjB,GAAgC;AAC5BvD,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;AAChB2B,IAAAA,YAAY,EAAE;AACVjE,MAAAA,UAAU,EAAE,MADF;AAEVC,MAAAA,QAAQ,EAAE;AAFA,KADE;AAKhBiE,IAAAA,gBAAgB,EAAE;AALF,GAjBQ;AAwB5BrD,EAAAA,yBAAyB,EAAE,mCAACF,UAAD;AAAA,oEAAmEA,UAAnE;AAAA,GAxBC;AAyB5BC,EAAAA,mBAAmB,EAAE,6BAACuD,QAAD;AAAA,0BAAuBA,QAAvB;AAAA,GAzBO;AA0B5BxI,EAAAA,cAAc,EAAEuE,qBA1BY;AA2B5B+B,EAAAA,qBAAqB,EAAE,+BAACkC,QAAD;AAAA,0BAAuBA,QAAvB;AAAA,GA3BK;AA4B5BzC,EAAAA,oBAAoB,EAAE,8BAACI,YAAD,EAAerB,aAAf,EAA8BkB,WAA9B,EAA8C;AAChE,QAAIhE,OAAO,kBAAWmE,YAAY,CAAC5F,IAAxB,oBAAX;;AACA,QAAI,CAACuE,aAAa,CAACqD,QAAd,CAAuBhC,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,IAAMyG,eAAe,GAAGhI,SAAS,CAACzC,KAAV,CAAgB;AAC3ChC,EAAAA,IAAI,EAAEyE,SAAS,CAACC,MAD2B;AAE3C/D,EAAAA,IAAI,EAAE8D,SAAS,CAACiI;AAF2B,CAAhB,CAAxB;AAKP,wCAAAlE,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,CAACkI,MARG;;AASzB;AACA9F,EAAAA,IAAI,EAAEpC,SAAS,CAACmI,WAVS;;AAWzB;AACApJ,EAAAA,WAAW,EAAEiB,SAAS,CAACG,OAAV,CAAkB6H,eAAlB,CAZY;;AAazB;AACAzC,EAAAA,WAAW,EAAEvF,SAAS,CAACkI,MAdE;;AAezB;AACA3B,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,CAACoI,SAAV,CAAoB,CAC5BpI,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,mBAAU,CAACjD,QAAD,EAAS;AAACyC,EAAAA,IAAI,EAAE;AAAP,CAAT,CAAV,CAA8CiE,gBAA9C,CAAf;;;;;;AC9gBA,IAAMsE,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACtG,KAAD,EAAW;AAAA,MAC/BuG,cAD+B,GAC2CvG,KAD3C,CAC/BuG,cAD+B;AAAA,MACfC,YADe,GAC2CxG,KAD3C,CACfwG,YADe;AAAA,MACDC,QADC,GAC2CzG,KAD3C,CACDyG,QADC;AAAA,MACS1C,QADT,GAC2C/D,KAD3C,CACS+D,QADT;AAAA,MACsB2C,iBADtB,4BAC2C1G,KAD3C;;AAEtC,SAAO,CAAC;AAACuG,IAAAA,cAAc,EAAdA,cAAD;AAAiBC,IAAAA,YAAY,EAAZA,YAAjB;AAA+BC,IAAAA,QAAQ,EAARA,QAA/B;AAAyC1C,IAAAA,QAAQ,EAARA;AAAzC,GAAD,EAAqD2C,iBAArD,CAAP;AACH,CAHD;AAKA;;;;;;;;;IAOMC;;;;;;;;;;;;;;;UACF1E,QAAQ;AACJjF,MAAAA,WAAW,EAAE;AADT;;UAkBR4J,mBAAmB,YAAM;AAAA,UACdH,QADc,GACF,MAAKzG,KADH,CACdyG,QADc;AAAA,UAEdzJ,WAFc,GAEC,MAAKiF,KAFN,CAEdjF,WAFc;;AAIrB,UAAIyJ,QAAJ,EAAc;AACVA,QAAAA,QAAQ,CAACzJ,WAAW,CAACW,GAAZ,CAAgB,UAACC,UAAD;AAAA,iBAAgBA,UAAU,CAACpE,IAA3B;AAAA,SAAhB,CAAD,CAAR;AACH;AACJ;;UAEDqN,yFAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AACRL,cAAAA,YADQ,GACQ,MAAKxG,KADb,CACRwG,YADQ;AAAA;AAAA;AAAA,qBAGY9L,OAAO,CAACsI,GAAR,CACnBwD,YAAY,CAAC7I,GAAb;AAAA,qFAAiB,iBAAMmJ,WAAN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAET,OAAOA,WAAP,KAAuB,QAFd;AAAA;AAAA;AAAA;;AAAA;AAAA,iCAGIhN,iBAAiB,CAACgN,WAAD,CAHrB;;AAAA;AAGTtN,0BAAAA,IAHS;AAAA;AAAA;;AAAA;AAKTA,0BAAAA,IAAI,GAAGsN,WAAP;;AALS;AAAA;AAAA,iCAOMrM,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,GAAG+J,MAAH,CACT9E,KAAK,CAACjF,WADG,EAETiG,QAFS;AADS,iBAAZ;AAAA,eAAd,EAKI,MAAK2D,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;AACA3E,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,GAAG+J,MAAH,CAAUI,cAAc,CAAC,CAAD,CAAxB;AADV,qBAAP;AAGH,mBANoB;;;AASrB,yBAAO;AACHnK,oBAAAA,WAAW,EAAE,GAAG+J,MAAH,CACT9E,KAAK,CAACjF,WADG,EAETmK,cAFS;AADV,mBAAP;AAMH,iBAfD,EAeG,MAAKP,gBAfR;;AAHO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;UAqBXQ,aAAa,UAACpD,cAAD,EAAiBqD,iBAAjB,EAAuC;AAChDrM,MAAAA,KAAK,CAAC6I,eAAN;AADgD,UAGzCE,QAHyC,GAG7B,MAAK/D,KAHwB,CAGzC+D,QAHyC;AAAA,UAIzC/G,WAJyC,GAI1B,MAAKiF,KAJqB,CAIzCjF,WAJyC;;AAOhD,UAAMsK,iBAAiB,GAAGtK,WAAW,CAACuK,MAAZ,CAAmB,UAAC3J,UAAD,EAAaC,CAAb,EAAmB;AAC5D,eAAOA,CAAC,KAAKwJ,iBAAb;AACH,OAFyB,CAA1B,CAPgD;;AAYhD,UAAItD,QAAJ,EAAc;AACVA,QAAAA,QAAQ,CAACC,cAAc,CAACxK,IAAhB,CAAR;AACH,OAd+C;;;AAiBhD,YAAKsJ,QAAL,CAAc;AACV9F,QAAAA,WAAW,EAAEsK;AADH,OAAd,EAEG,MAAKV,gBAFR;AAGH;;;;;;;wCA/FmB;AAChB,WAAKC,gBAAL;AACH;;;2CAEsB;AAAA,UACZN,cADY,GACM,KAAKvG,KADX,CACZuG,cADY;;AAGnB,UAAIA,cAAJ,EAAoB;AAChB,aAAKzD,QAAL,CAAc;AACV9F,UAAAA,WAAW,EAAE;AADH,SAAd,EAEG,KAAK4J,gBAFR;AAGH;AACJ;;;6BAqFQ;AAAA,kCACyBN,sBAAsB,CAAC,KAAKtG,KAAN,CAD/C;AAAA;AAAA,UACI0G,iBADJ;;AAAA,UAEE1J,WAFF,GAEiB,KAAKiF,KAFtB,CAEEjF,WAFF;AAIL,0BACIF,oBAACkF,kBAAD,eACQ0E,iBADR;AAEI,QAAA,WAAW,EAAE1J,WAFjB;AAGI,QAAA,KAAK,EAAE,KAAKkK,QAHhB;AAII,QAAA,QAAQ,EAAE,KAAKE;AAJnB,SADJ;AAQH;;;;EAlHsBxB;;AAqH3Be,YAAY,CAACd,YAAb,GAA4B;AACxBU,EAAAA,cAAc,EAAE,IADQ;AAExB/D,EAAAA,UAAU,EAAE,CAFY;AAGxBgE,EAAAA,YAAY,EAAE;AAHU,CAA5B;AAMA,wCAAAG,YAAY,CAAC3I,SAAb,gBACOgE,kBAAgB,CAAChE,SADxB;AAEI;AACAuI,EAAAA,cAAc,EAAEtI,SAAS,CAACK,IAH9B;;AAII;;;AAGAkI,EAAAA,YAAY,EAAEvI,SAAS,CAACG,OAAV,CACVH,SAAS,CAACoI,SAAV,CAAoB,CAChBpI,SAAS,CAACqC,MADM,EAEhBrC,SAAS,CAACiI,GAFM,CAApB,CADU,CAPlB;;AAaI;AACA1D,EAAAA,UAAU,EAAEvE,SAAS,CAACkI,MAd1B;;AAeI;;;;;AAKAM,EAAAA,QAAQ,EAAExI,SAAS,CAACI,IApBxB;;AAqBI;;;;;AAKA0F,EAAAA,QAAQ,EAAE9F,SAAS,CAACI;AA1BxB;;;;;;ACnIA,SAASmJ,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,MAMpC1L,QANoC,GAYpCsL,QAZoC,CAMpCtL,QANoC;AAAA,MAOpC+D,OAPoC,GAYpCuH,QAZoC,CAOpCvH,OAPoC;AAAA,MAQpC4H,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;AAKI1L,IAAAA,QAAQ,EAARA,QALJ;AAMI+D,IAAAA,OAAO,EAAPA,OANJ;AAOI4H,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,KAAKxH,KAAN,CADpE;AAAA;AAAA,UACEkI,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,UAOD1L,QAPC,GAYD+L,mBAZC,CAOD/L,QAPC;AAAA,UAQD+D,OARC,GAYDgI,mBAZC,CAQDhI,OARC;AAAA,UASD4H,MATC,GAYDI,mBAZC,CASDJ,MATC;AAAA,UAUDC,IAVC,GAYDG,mBAZC,CAUDH,IAVC;AAAA,UAWDC,gBAXC,GAYDE,mBAZC,CAWDF,gBAXC;;AAeL,UAAMG,cAAc,GAAGzB,iBAAiB,CAAC1J,WAAlB,CAA8B6F,MAA9B,KAAyC,CAAhE;AAEA,0BACI/F,oBAAC,MAAD,eACQ6K,WADR;AAEI,QAAA,SAAS,EAAEE,SAFf;AAGI,QAAA,QAAQ,EAAE1L,QAHd;AAII,QAAA,OAAO,EAAE+D,OAJb;AAKI,QAAA,IAAI,EAAE6H;AALV,uBAOIjL,oBAAC,WAAD,QAAc8K,WAAd,CAPJ,eASI9K,oBAAC,aAAD,qBACIA,oBAACkF,kBAAD,EACQ0E,iBADR,CADJ,CATJ,eAeI5J,oBAAC,aAAD,qBACIA,oBAAC,MAAD;AACI,QAAA,KAAK,EAAC,SADV;AAEI,QAAA,OAAO,EAAEoD;AAFb,SAIKwH,gBAJL,CADJ,eAQI5K,oBAAC,MAAD;AACI,QAAA,KAAK,EAAC,SADV;AAEI,QAAA,QAAQ,EAAEqL,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;AAK9B1L,EAAAA,QAAQ,EAAE,IALoB;AAM9BuL,EAAAA,gBAAgB,EAAE,QANY;AAO9BM,EAAAA,gBAAgB,EAAE,QAPY;AAQ9BnD,EAAAA,YAAY,EAAE,IARgB;AAS9BC,EAAAA,sBAAsB,EAAE,KATM;AAU9BF,EAAAA,sBAAsB,EAAE;AAVM,CAAlC;AAaA,wCAAAqD,kBAAkB,CAACjK,SAAnB,gBACOgE,kBAAgB,CAAChE,SADxB;AAEI;AACA+J,EAAAA,IAAI,EAAE9J,SAAS,CAACK,IAHpB;;AAII;AACAsJ,EAAAA,WAAW,EAAE3J,SAAS,CAACoI,SAAV,CAAoB,CAC7BpI,SAAS,CAACqC,MADmB,EAE7BrC,SAAS,CAACmK,OAFmB,CAApB,CALjB;;AASI;;;;AAIAT,EAAAA,WAAW,EAAE1J,SAAS,CAACC,MAb3B;;AAcI;;;;AAIA2J,EAAAA,SAAS,EAAE5J,SAAS,CAACK,IAlBzB;;AAmBI;;;;AAIAnC,EAAAA,QAAQ,EAAE8B,SAAS,CAACqC,MAvBxB;;AAwBI;AACAoH,EAAAA,gBAAgB,EAAEzJ,SAAS,CAACqC,MAzBhC;;AA0BI;AACA0H,EAAAA,gBAAgB,EAAE/J,SAAS,CAACqC,MA3BhC;;AA4BI;;;;;AAKAJ,EAAAA,OAAO,EAAEjC,SAAS,CAACI,IAjCvB;;AAkCI;;;;;AAKAyJ,EAAAA,MAAM,EAAE7J,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;;;;;;;;IAOM+J;;;;;;;;;;;;;;;UACFpG,QAAQ;AACJjF,MAAAA,WAAW,EAAE;AADT;;UAkBR4J,mBAAmB,YAAM;AAAA,UACdH,QADc,GACF,MAAKzG,KADH,CACdyG,QADc;AAAA,UAEdzJ,WAFc,GAEC,MAAKiF,KAFN,CAEdjF,WAFc;;AAIrB,UAAIyJ,QAAJ,EAAc;AACVA,QAAAA,QAAQ,CAACzJ,WAAW,CAACW,GAAZ,CAAgB,UAACC,UAAD;AAAA,iBAAgBA,UAAU,CAACpE,IAA3B;AAAA,SAAhB,CAAD,CAAR;AACH;AACJ;;UAEDqN,yFAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AACRL,cAAAA,YADQ,GACQ,MAAKxG,KADb,CACRwG,YADQ;AAAA;AAAA;AAAA,qBAGY9L,OAAO,CAACsI,GAAR,CACnBwD,YAAY,CAAC7I,GAAb;AAAA,qFAAiB,iBAAMmJ,WAAN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAET,OAAOA,WAAP,KAAuB,QAFd;AAAA;AAAA;AAAA;;AAAA;AAAA,iCAGIhN,iBAAiB,CAACgN,WAAD,CAHrB;;AAAA;AAGTtN,0BAAAA,IAHS;AAAA;AAAA;;AAAA;AAKTA,0BAAAA,IAAI,GAAGsN,WAAP;;AALS;AAAA;AAAA,iCAOMrM,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,GAAG+J,MAAH,CACT9E,KAAK,CAACjF,WADG,EAETiG,QAFS;AADS,iBAAZ;AAAA,eAAd,EAKI,MAAK2D,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;AACA3E,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,GAAG+J,MAAH,CAAUI,cAAc,CAAC,CAAD,CAAxB;AADV,qBAAP;AAGH,mBANoB;;;AASrB,yBAAO;AACHnK,oBAAAA,WAAW,EAAE,GAAG+J,MAAH,CACT9E,KAAK,CAACjF,WADG,EAETmK,cAFS;AADV,mBAAP;AAMH,iBAfD,EAeG,MAAKP,gBAfR;;AAHO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;UAqBXQ,aAAa,UAACpD,cAAD,EAAiBqD,iBAAjB,EAAuC;AAChDrM,MAAAA,KAAK,CAAC6I,eAAN;AADgD,UAGzCE,QAHyC,GAG7B,MAAK/D,KAHwB,CAGzC+D,QAHyC;AAAA,UAIzC/G,WAJyC,GAI1B,MAAKiF,KAJqB,CAIzCjF,WAJyC;;AAOhD,UAAMsK,iBAAiB,GAAGtK,WAAW,CAACuK,MAAZ,CAAmB,UAAC3J,UAAD,EAAaC,CAAb,EAAmB;AAC5D,eAAOA,CAAC,KAAKwJ,iBAAb;AACH,OAFyB,CAA1B,CAPgD;;AAYhD,UAAItD,QAAJ,EAAc;AACVA,QAAAA,QAAQ,CAACC,cAAc,CAACxK,IAAhB,CAAR;AACH,OAd+C;;;AAiBhD,YAAKsJ,QAAL,CAAc;AACV9F,QAAAA,WAAW,EAAEsK;AADH,OAAd,EAEG,MAAKV,gBAFR;AAGH;;UAED0B,cAAc,UAAC/F,GAAD,EAAS;AAAA,wBACe,MAAKvC,KADpB;AAAA,UACZuG,cADY,eACZA,cADY;AAAA,UACIrG,OADJ,eACIA,OADJ;;AAGnB,UAAIA,OAAJ,EAAa;AACTA,QAAAA,OAAO,CAACqC,GAAD,CAAP;AACH;;AAED,UAAIgE,cAAJ,EAAoB;AAChB,cAAKzD,QAAL,CAAc;AACV9F,UAAAA,WAAW,EAAE;AADH,SAAd,EAEG,MAAK4J,gBAFR;AAGH;AACJ;;UAED2B,aAAa,UAAChG,GAAD,EAAS;AAAA,yBACe,MAAKvC,KADpB;AAAA,UACXuG,cADW,gBACXA,cADW;AAAA,UACKuB,MADL,gBACKA,MADL;AAAA,UAEX9K,WAFW,GAEI,MAAKiF,KAFT,CAEXjF,WAFW;;AAIlB,UAAI8K,MAAJ,EAAY;AACRA,QAAAA,MAAM,CAAC9K,WAAW,CAACW,GAAZ,CAAgB,UAACC,UAAD;AAAA,iBAAgBA,UAAU,CAACpE,IAA3B;AAAA,SAAhB,CAAD,EAAmD+I,GAAnD,CAAN;AACH;;AAED,UAAIgE,cAAJ,EAAoB;AAChB,cAAKzD,QAAL,CAAc;AACV9F,UAAAA,WAAW,EAAE;AADH,SAAd,EAEG,MAAK4J,gBAFR;AAGH;AACJ;;;;;;;wCA5HmB;AAChB,WAAKC,gBAAL;AACH;;;2CAEsB;AAAA,UACZN,cADY,GACM,KAAKvG,KADX,CACZuG,cADY;;AAGnB,UAAIA,cAAJ,EAAoB;AAChB,aAAKzD,QAAL,CAAc;AACV9F,UAAAA,WAAW,EAAE;AADH,SAAd,EAEG,KAAK4J,gBAFR;AAGH;AACJ;;;6BAkHQ;AAAA,UACE5J,WADF,GACiB,KAAKiF,KADtB,CACEjF,WADF;AAGL,0BACIF,oBAAC,kBAAD,eACQ,KAAKkD,KADb;AAEI,QAAA,WAAW,EAAEhD,WAFjB;AAGI,QAAA,KAAK,EAAE,KAAKkK,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;AAE1B/D,EAAAA,UAAU,EAAE,CAFc;AAG1BgE,EAAAA,YAAY,EAAE;AAHY,CAA9B;AAMA,wCAAA6B,cAAc,CAACrK,SAAf,gBACOiK,kBAAkB,CAACjK,SAD1B;AAEI;AACAuI,EAAAA,cAAc,EAAEtI,SAAS,CAACK,IAH9B;;AAII;AACAkE,EAAAA,UAAU,EAAEvE,SAAS,CAACkI,MAL1B;;AAMI;;;AAGAK,EAAAA,YAAY,EAAEvI,SAAS,CAACG,OAAV,CACVH,SAAS,CAACoI,SAAV,CAAoB,CAChBpI,SAAS,CAACqC,MADM,EAEhBrC,SAAS,CAACiI,GAFM,CAApB,CADU,CATlB;;AAeI;;;;;;AAMA4B,EAAAA,MAAM,EAAE7J,SAAS,CAACI;AArBtB;;;;;;;"} \ 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, 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 { typeof dropzoneText === 'string' ?\n \n {dropzoneText}\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 or Element inside the dropzone. */\n dropzoneText: PropTypes.string | PropTypes.element,\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, removedFileObjIdx);\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 * @param {number} deletedFileIndex The index of 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","element","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","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,oBAAC,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,oBAAC,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,oBAAC,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,oBAAC,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,oBAAC,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,oBAAC,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,oBAAC,UAAD;AAAY,MAAA,OAAO,EAAC,OAApB;AAA4B,MAAA,SAAS,EAAC;AAAtC,OACKc,UAAU,CAACpE,IAAX,CAAgBuE,IADrB,CAVR,eAeIjB,oBAAC,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,mBAAU,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,oBAAC,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,oBAAC,IAAD;AAAM,MAAA,SAAS,EAAES,OAAO,CAACqC;AAAzB,MADJ,EAEKJ,OAFL,CAJR;AASI,IAAA,MAAM,EAAE,cACJ1C,oBAAC,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,oBAAC,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,mBAAU,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,oBAAC,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,oBAACsI,cAAD,qBACItI,oBAAC,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,YAAEI,YAAF,SAAEA,YAAF;AAAA,YAAgBC,aAAhB,SAAgBA,aAAhB;AAAA,YAA+BC,YAA/B,SAA+BA,YAA/B;AAAA,YAA6CC,YAA7C,SAA6CA,YAA7C;AAAA,4BACG1I,2BACQuI,YAAY,CAAC;AACbpF,UAAAA,SAAS,EAAEvC,IAAI,CACXH,OAAO,CAAC7B,IADG,EAEX2I,aAFW,EAGXkB,YAHW,IAGKhI,OAAO,CAAC2D,MAHb,EAIV,CAACkD,wBAJS,IAImBoB,YAJnB,IAIoCjI,OAAO,CAACgE,OAJ5C;AADF,SAAD,CADpB,eAUIzE,6BAAWwI,aAAa,CAACb,UAAD,CAAxB,CAVJ,eAYI3H;AAAK,UAAA,SAAS,EAAES,OAAO,CAACkE;AAAxB,WACM,OAAO+C,YAAP,KAAwB,QAAxB,gBACE1H,oBAAC,UAAD;AACI,UAAA,OAAO,EAAC,IADZ;AAEI,UAAA,SAAS,EAAC,GAFd;AAGI,UAAA,SAAS,EAAEY,IAAI,CAACH,OAAO,CAAClB,IAAT,EAAeiI,sBAAf;AAHnB,WAIKE,YAJL,CADF,GAOEA,YARR,EAUKnE,IAAI,gBACDvD,oBAAC,IAAD;AAAM,UAAA,SAAS,EAAES,OAAO,CAACqC;AAAzB,UADC,gBAGD9C,oBAAC,eAAD;AAAiB,UAAA,SAAS,EAAES,OAAO,CAACqC;AAApC,UAbR,CAZJ,EA6BKuF,yBAAyB,iBACtBrI,oBAACC,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,UA9BR,CADH;AAAA,OARL,CADJ,EAuDK4H,eAAe,iBACZpI,oBAACsI,cAAD,qBACItI,oBAAC,UAAD;AAAY,QAAA,OAAO,EAAC,WAApB;AAAgC,QAAA,SAAS,EAAC;AAA1C,SACK4H,WADL,CADJ,eAKI5H,oBAACC,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,CAxDR,EA0EK,CAAE,OAAOqH,UAAP,KAAsB,SAAtB,IAAmCA,UAApC,IACGc,KAAK,CAACC,OAAN,CAAcf,UAAd,KAA6BA,UAAU,CAACgB,QAAX,CAAoBvD,eAApB,CADjC,kBAEGtF,oBAAC,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,oBAACiD,wBAAD;AACI,QAAA,OAAO,EAAE,KAAKkE,mBADlB;AAEI,QAAA,OAAO,EAAE7B,eAFb;AAGI,QAAA,OAAO,EAAED;AAHb,QAPJ,CA5ER,CADJ;AA6FH;;;;EAjP0ByD;;AAoP/B5D,gBAAgB,CAAC6D,YAAjB,GAAgC;AAC5BvD,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;AAChB2B,IAAAA,YAAY,EAAE;AACVjE,MAAAA,UAAU,EAAE,MADF;AAEVC,MAAAA,QAAQ,EAAE;AAFA,KADE;AAKhBiE,IAAAA,gBAAgB,EAAE;AALF,GAjBQ;AAwB5BrD,EAAAA,yBAAyB,EAAE,mCAACF,UAAD;AAAA,oEAAmEA,UAAnE;AAAA,GAxBC;AAyB5BC,EAAAA,mBAAmB,EAAE,6BAACuD,QAAD;AAAA,0BAAuBA,QAAvB;AAAA,GAzBO;AA0B5BxI,EAAAA,cAAc,EAAEuE,qBA1BY;AA2B5B+B,EAAAA,qBAAqB,EAAE,+BAACkC,QAAD;AAAA,0BAAuBA,QAAvB;AAAA,GA3BK;AA4B5BzC,EAAAA,oBAAoB,EAAE,8BAACI,YAAD,EAAerB,aAAf,EAA8BkB,WAA9B,EAA8C;AAChE,QAAIhE,OAAO,kBAAWmE,YAAY,CAAC5F,IAAxB,oBAAX;;AACA,QAAI,CAACuE,aAAa,CAACqD,QAAd,CAAuBhC,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,IAAMyG,eAAe,GAAGhI,SAAS,CAACzC,KAAV,CAAgB;AAC3ChC,EAAAA,IAAI,EAAEyE,SAAS,CAACC,MAD2B;AAE3C/D,EAAAA,IAAI,EAAE8D,SAAS,CAACiI;AAF2B,CAAhB,CAAxB;AAKP,wCAAAlE,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,CAACkI,MARG;;AASzB;AACA9F,EAAAA,IAAI,EAAEpC,SAAS,CAACmI,WAVS;;AAWzB;AACApJ,EAAAA,WAAW,EAAEiB,SAAS,CAACG,OAAV,CAAkB6H,eAAlB,CAZY;;AAazB;AACAzC,EAAAA,WAAW,EAAEvF,SAAS,CAACkI,MAdE;;AAezB;AACA3B,EAAAA,YAAY,EAAEvG,SAAS,CAACqC,MAAV,GAAmBrC,SAAS,CAACoI,OAhBlB;;AAiBzB;AACAhC,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,CAACqI,SAAV,CAAoB,CAC5BrI,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,mBAAU,CAACjD,QAAD,EAAS;AAACyC,EAAAA,IAAI,EAAE;AAAP,CAAT,CAAV,CAA8CiE,gBAA9C,CAAf;;;;;;AChhBA,IAAMuE,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACvG,KAAD,EAAW;AAAA,MAC/BwG,cAD+B,GAC2CxG,KAD3C,CAC/BwG,cAD+B;AAAA,MACfC,YADe,GAC2CzG,KAD3C,CACfyG,YADe;AAAA,MACDC,QADC,GAC2C1G,KAD3C,CACD0G,QADC;AAAA,MACS3C,QADT,GAC2C/D,KAD3C,CACS+D,QADT;AAAA,MACsB4C,iBADtB,4BAC2C3G,KAD3C;;AAEtC,SAAO,CAAC;AAACwG,IAAAA,cAAc,EAAdA,cAAD;AAAiBC,IAAAA,YAAY,EAAZA,YAAjB;AAA+BC,IAAAA,QAAQ,EAARA,QAA/B;AAAyC3C,IAAAA,QAAQ,EAARA;AAAzC,GAAD,EAAqD4C,iBAArD,CAAP;AACH,CAHD;AAKA;;;;;;;;;IAOMC;;;;;;;;;;;;;;;UACF3E,QAAQ;AACJjF,MAAAA,WAAW,EAAE;AADT;;UAkBR6J,mBAAmB,YAAM;AAAA,UACdH,QADc,GACF,MAAK1G,KADH,CACd0G,QADc;AAAA,UAEd1J,WAFc,GAEC,MAAKiF,KAFN,CAEdjF,WAFc;;AAIrB,UAAI0J,QAAJ,EAAc;AACVA,QAAAA,QAAQ,CAAC1J,WAAW,CAACW,GAAZ,CAAgB,UAACC,UAAD;AAAA,iBAAgBA,UAAU,CAACpE,IAA3B;AAAA,SAAhB,CAAD,CAAR;AACH;AACJ;;UAEDsN,yFAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AACRL,cAAAA,YADQ,GACQ,MAAKzG,KADb,CACRyG,YADQ;AAAA;AAAA;AAAA,qBAGY/L,OAAO,CAACsI,GAAR,CACnByD,YAAY,CAAC9I,GAAb;AAAA,qFAAiB,iBAAMoJ,WAAN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAET,OAAOA,WAAP,KAAuB,QAFd;AAAA;AAAA;AAAA;;AAAA;AAAA,iCAGIjN,iBAAiB,CAACiN,WAAD,CAHrB;;AAAA;AAGTvN,0BAAAA,IAHS;AAAA;AAAA;;AAAA;AAKTA,0BAAAA,IAAI,GAAGuN,WAAP;;AALS;AAAA;AAAA,iCAOMtM,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,GAAGgK,MAAH,CACT/E,KAAK,CAACjF,WADG,EAETiG,QAFS;AADS,iBAAZ;AAAA,eAAd,EAKI,MAAK4D,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;AACA5E,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,GAAGgK,MAAH,CAAUI,cAAc,CAAC,CAAD,CAAxB;AADV,qBAAP;AAGH,mBANoB;;;AASrB,yBAAO;AACHpK,oBAAAA,WAAW,EAAE,GAAGgK,MAAH,CACT/E,KAAK,CAACjF,WADG,EAEToK,cAFS;AADV,mBAAP;AAMH,iBAfD,EAeG,MAAKP,gBAfR;;AAHO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;UAqBXQ,aAAa,UAACrD,cAAD,EAAiBsD,iBAAjB,EAAuC;AAChDtM,MAAAA,KAAK,CAAC6I,eAAN;AADgD,UAGzCE,QAHyC,GAG7B,MAAK/D,KAHwB,CAGzC+D,QAHyC;AAAA,UAIzC/G,WAJyC,GAI1B,MAAKiF,KAJqB,CAIzCjF,WAJyC;;AAOhD,UAAMuK,iBAAiB,GAAGvK,WAAW,CAACwK,MAAZ,CAAmB,UAAC5J,UAAD,EAAaC,CAAb,EAAmB;AAC5D,eAAOA,CAAC,KAAKyJ,iBAAb;AACH,OAFyB,CAA1B,CAPgD;;AAYhD,UAAIvD,QAAJ,EAAc;AACVA,QAAAA,QAAQ,CAACC,cAAc,CAACxK,IAAhB,EAAsB8N,iBAAtB,CAAR;AACH,OAd+C;;;AAiBhD,YAAKxE,QAAL,CAAc;AACV9F,QAAAA,WAAW,EAAEuK;AADH,OAAd,EAEG,MAAKV,gBAFR;AAGH;;;;;;;wCA/FmB;AAChB,WAAKC,gBAAL;AACH;;;2CAEsB;AAAA,UACZN,cADY,GACM,KAAKxG,KADX,CACZwG,cADY;;AAGnB,UAAIA,cAAJ,EAAoB;AAChB,aAAK1D,QAAL,CAAc;AACV9F,UAAAA,WAAW,EAAE;AADH,SAAd,EAEG,KAAK6J,gBAFR;AAGH;AACJ;;;6BAqFQ;AAAA,kCACyBN,sBAAsB,CAAC,KAAKvG,KAAN,CAD/C;AAAA;AAAA,UACI2G,iBADJ;;AAAA,UAEE3J,WAFF,GAEiB,KAAKiF,KAFtB,CAEEjF,WAFF;AAIL,0BACIF,oBAACkF,kBAAD,eACQ2E,iBADR;AAEI,QAAA,WAAW,EAAE3J,WAFjB;AAGI,QAAA,KAAK,EAAE,KAAKmK,QAHhB;AAII,QAAA,QAAQ,EAAE,KAAKE;AAJnB,SADJ;AAQH;;;;EAlHsBzB;;AAqH3BgB,YAAY,CAACf,YAAb,GAA4B;AACxBW,EAAAA,cAAc,EAAE,IADQ;AAExBhE,EAAAA,UAAU,EAAE,CAFY;AAGxBiE,EAAAA,YAAY,EAAE;AAHU,CAA5B;AAMA,wCAAAG,YAAY,CAAC5I,SAAb,gBACOgE,kBAAgB,CAAChE,SADxB;AAEI;AACAwI,EAAAA,cAAc,EAAEvI,SAAS,CAACK,IAH9B;;AAII;;;AAGAmI,EAAAA,YAAY,EAAExI,SAAS,CAACG,OAAV,CACVH,SAAS,CAACqI,SAAV,CAAoB,CAChBrI,SAAS,CAACqC,MADM,EAEhBrC,SAAS,CAACiI,GAFM,CAApB,CADU,CAPlB;;AAaI;AACA1D,EAAAA,UAAU,EAAEvE,SAAS,CAACkI,MAd1B;;AAeI;;;;;AAKAO,EAAAA,QAAQ,EAAEzI,SAAS,CAACI,IApBxB;;AAqBI;;;;;;AAMA0F,EAAAA,QAAQ,EAAE9F,SAAS,CAACI;AA3BxB;;;;;;ACnIA,SAASoJ,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,MAMpC3L,QANoC,GAYpCuL,QAZoC,CAMpCvL,QANoC;AAAA,MAOpC+D,OAPoC,GAYpCwH,QAZoC,CAOpCxH,OAPoC;AAAA,MAQpC6H,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;AAKI3L,IAAAA,QAAQ,EAARA,QALJ;AAMI+D,IAAAA,OAAO,EAAPA,OANJ;AAOI6H,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,KAAKzH,KAAN,CADpE;AAAA;AAAA,UACEmI,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,UAOD3L,QAPC,GAYDgM,mBAZC,CAODhM,QAPC;AAAA,UAQD+D,OARC,GAYDiI,mBAZC,CAQDjI,OARC;AAAA,UASD6H,MATC,GAYDI,mBAZC,CASDJ,MATC;AAAA,UAUDC,IAVC,GAYDG,mBAZC,CAUDH,IAVC;AAAA,UAWDC,gBAXC,GAYDE,mBAZC,CAWDF,gBAXC;;AAeL,UAAMG,cAAc,GAAGzB,iBAAiB,CAAC3J,WAAlB,CAA8B6F,MAA9B,KAAyC,CAAhE;AAEA,0BACI/F,oBAAC,MAAD,eACQ8K,WADR;AAEI,QAAA,SAAS,EAAEE,SAFf;AAGI,QAAA,QAAQ,EAAE3L,QAHd;AAII,QAAA,OAAO,EAAE+D,OAJb;AAKI,QAAA,IAAI,EAAE8H;AALV,uBAOIlL,oBAAC,WAAD,QAAc+K,WAAd,CAPJ,eASI/K,oBAAC,aAAD,qBACIA,oBAACkF,kBAAD,EACQ2E,iBADR,CADJ,CATJ,eAeI7J,oBAAC,aAAD,qBACIA,oBAAC,MAAD;AACI,QAAA,KAAK,EAAC,SADV;AAEI,QAAA,OAAO,EAAEoD;AAFb,SAIKyH,gBAJL,CADJ,eAQI7K,oBAAC,MAAD;AACI,QAAA,KAAK,EAAC,SADV;AAEI,QAAA,QAAQ,EAAEsL,cAFd;AAGI,QAAA,OAAO,EAAEL;AAHb,SAKKE,gBALL,CARJ,CAfJ,CADJ;AAkCH;;;;EApD4BrC;;AAuDjCsC,kBAAkB,CAACrC,YAAnB,GAAkC;AAC9BmC,EAAAA,IAAI,EAAE,KADwB;AAE9BH,EAAAA,WAAW,EAAE,aAFiB;AAG9BD,EAAAA,WAAW,EAAE,EAHiB;AAI9BE,EAAAA,SAAS,EAAE,IAJmB;AAK9B3L,EAAAA,QAAQ,EAAE,IALoB;AAM9BwL,EAAAA,gBAAgB,EAAE,QANY;AAO9BM,EAAAA,gBAAgB,EAAE,QAPY;AAQ9BpD,EAAAA,YAAY,EAAE,IARgB;AAS9BC,EAAAA,sBAAsB,EAAE,KATM;AAU9BF,EAAAA,sBAAsB,EAAE;AAVM,CAAlC;AAaA,wCAAAsD,kBAAkB,CAAClK,SAAnB,gBACOgE,kBAAgB,CAAChE,SADxB;AAEI;AACAgK,EAAAA,IAAI,EAAE/J,SAAS,CAACK,IAHpB;;AAII;AACAuJ,EAAAA,WAAW,EAAE5J,SAAS,CAACqI,SAAV,CAAoB,CAC7BrI,SAAS,CAACqC,MADmB,EAE7BrC,SAAS,CAACoI,OAFmB,CAApB,CALjB;;AASI;;;;AAIAuB,EAAAA,WAAW,EAAE3J,SAAS,CAACC,MAb3B;;AAcI;;;;AAIA4J,EAAAA,SAAS,EAAE7J,SAAS,CAACK,IAlBzB;;AAmBI;;;;AAIAnC,EAAAA,QAAQ,EAAE8B,SAAS,CAACqC,MAvBxB;;AAwBI;AACAqH,EAAAA,gBAAgB,EAAE1J,SAAS,CAACqC,MAzBhC;;AA0BI;AACA2H,EAAAA,gBAAgB,EAAEhK,SAAS,CAACqC,MA3BhC;;AA4BI;;;;;AAKAJ,EAAAA,OAAO,EAAEjC,SAAS,CAACI,IAjCvB;;AAkCI;;;;;AAKA0J,EAAAA,MAAM,EAAE9J,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;;;;;;;;IAOM+J;;;;;;;;;;;;;;;UACFpG,QAAQ;AACJjF,MAAAA,WAAW,EAAE;AADT;;UAkBR6J,mBAAmB,YAAM;AAAA,UACdH,QADc,GACF,MAAK1G,KADH,CACd0G,QADc;AAAA,UAEd1J,WAFc,GAEC,MAAKiF,KAFN,CAEdjF,WAFc;;AAIrB,UAAI0J,QAAJ,EAAc;AACVA,QAAAA,QAAQ,CAAC1J,WAAW,CAACW,GAAZ,CAAgB,UAACC,UAAD;AAAA,iBAAgBA,UAAU,CAACpE,IAA3B;AAAA,SAAhB,CAAD,CAAR;AACH;AACJ;;UAEDsN,yFAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AACRL,cAAAA,YADQ,GACQ,MAAKzG,KADb,CACRyG,YADQ;AAAA;AAAA;AAAA,qBAGY/L,OAAO,CAACsI,GAAR,CACnByD,YAAY,CAAC9I,GAAb;AAAA,qFAAiB,iBAAMoJ,WAAN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAET,OAAOA,WAAP,KAAuB,QAFd;AAAA;AAAA;AAAA;;AAAA;AAAA,iCAGIjN,iBAAiB,CAACiN,WAAD,CAHrB;;AAAA;AAGTvN,0BAAAA,IAHS;AAAA;AAAA;;AAAA;AAKTA,0BAAAA,IAAI,GAAGuN,WAAP;;AALS;AAAA;AAAA,iCAOMtM,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,GAAGgK,MAAH,CACT/E,KAAK,CAACjF,WADG,EAETiG,QAFS;AADS,iBAAZ;AAAA,eAAd,EAKI,MAAK4D,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;AACA5E,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,GAAGgK,MAAH,CAAUI,cAAc,CAAC,CAAD,CAAxB;AADV,qBAAP;AAGH,mBANoB;;;AASrB,yBAAO;AACHpK,oBAAAA,WAAW,EAAE,GAAGgK,MAAH,CACT/E,KAAK,CAACjF,WADG,EAEToK,cAFS;AADV,mBAAP;AAMH,iBAfD,EAeG,MAAKP,gBAfR;;AAHO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;UAqBXQ,aAAa,UAACrD,cAAD,EAAiBsD,iBAAjB,EAAuC;AAChDtM,MAAAA,KAAK,CAAC6I,eAAN;AADgD,UAGzCE,QAHyC,GAG7B,MAAK/D,KAHwB,CAGzC+D,QAHyC;AAAA,UAIzC/G,WAJyC,GAI1B,MAAKiF,KAJqB,CAIzCjF,WAJyC;;AAOhD,UAAMuK,iBAAiB,GAAGvK,WAAW,CAACwK,MAAZ,CAAmB,UAAC5J,UAAD,EAAaC,CAAb,EAAmB;AAC5D,eAAOA,CAAC,KAAKyJ,iBAAb;AACH,OAFyB,CAA1B,CAPgD;;AAYhD,UAAIvD,QAAJ,EAAc;AACVA,QAAAA,QAAQ,CAACC,cAAc,CAACxK,IAAhB,CAAR;AACH,OAd+C;;;AAiBhD,YAAKsJ,QAAL,CAAc;AACV9F,QAAAA,WAAW,EAAEuK;AADH,OAAd,EAEG,MAAKV,gBAFR;AAGH;;UAEDyB,cAAc,UAAC/F,GAAD,EAAS;AAAA,wBACe,MAAKvC,KADpB;AAAA,UACZwG,cADY,eACZA,cADY;AAAA,UACItG,OADJ,eACIA,OADJ;;AAGnB,UAAIA,OAAJ,EAAa;AACTA,QAAAA,OAAO,CAACqC,GAAD,CAAP;AACH;;AAED,UAAIiE,cAAJ,EAAoB;AAChB,cAAK1D,QAAL,CAAc;AACV9F,UAAAA,WAAW,EAAE;AADH,SAAd,EAEG,MAAK6J,gBAFR;AAGH;AACJ;;UAED0B,aAAa,UAAChG,GAAD,EAAS;AAAA,yBACe,MAAKvC,KADpB;AAAA,UACXwG,cADW,gBACXA,cADW;AAAA,UACKuB,MADL,gBACKA,MADL;AAAA,UAEX/K,WAFW,GAEI,MAAKiF,KAFT,CAEXjF,WAFW;;AAIlB,UAAI+K,MAAJ,EAAY;AACRA,QAAAA,MAAM,CAAC/K,WAAW,CAACW,GAAZ,CAAgB,UAACC,UAAD;AAAA,iBAAgBA,UAAU,CAACpE,IAA3B;AAAA,SAAhB,CAAD,EAAmD+I,GAAnD,CAAN;AACH;;AAED,UAAIiE,cAAJ,EAAoB;AAChB,cAAK1D,QAAL,CAAc;AACV9F,UAAAA,WAAW,EAAE;AADH,SAAd,EAEG,MAAK6J,gBAFR;AAGH;AACJ;;;;;;;wCA5HmB;AAChB,WAAKC,gBAAL;AACH;;;2CAEsB;AAAA,UACZN,cADY,GACM,KAAKxG,KADX,CACZwG,cADY;;AAGnB,UAAIA,cAAJ,EAAoB;AAChB,aAAK1D,QAAL,CAAc;AACV9F,UAAAA,WAAW,EAAE;AADH,SAAd,EAEG,KAAK6J,gBAFR;AAGH;AACJ;;;6BAkHQ;AAAA,UACE7J,WADF,GACiB,KAAKiF,KADtB,CACEjF,WADF;AAGL,0BACIF,oBAAC,kBAAD,eACQ,KAAKkD,KADb;AAEI,QAAA,WAAW,EAAEhD,WAFjB;AAGI,QAAA,KAAK,EAAE,KAAKmK,QAHhB;AAII,QAAA,QAAQ,EAAE,KAAKE,UAJnB;AAKI,QAAA,OAAO,EAAE,KAAKiB,WALlB;AAMI,QAAA,MAAM,EAAE,KAAKC;AANjB,SADJ;AAUH;;;;EAhJwB3C;;AAmJ7ByC,cAAc,CAACxC,YAAf,GAA8B;AAC1BW,EAAAA,cAAc,EAAE,IADU;AAE1BhE,EAAAA,UAAU,EAAE,CAFc;AAG1BiE,EAAAA,YAAY,EAAE;AAHY,CAA9B;AAMA,wCAAA4B,cAAc,CAACrK,SAAf,gBACOkK,kBAAkB,CAAClK,SAD1B;AAEI;AACAwI,EAAAA,cAAc,EAAEvI,SAAS,CAACK,IAH9B;;AAII;AACAkE,EAAAA,UAAU,EAAEvE,SAAS,CAACkI,MAL1B;;AAMI;;;AAGAM,EAAAA,YAAY,EAAExI,SAAS,CAACG,OAAV,CACVH,SAAS,CAACqI,SAAV,CAAoB,CAChBrI,SAAS,CAACqC,MADM,EAEhBrC,SAAS,CAACiI,GAFM,CAApB,CADU,CATlB;;AAeI;;;;;;AAMA6B,EAAAA,MAAM,EAAE9J,SAAS,CAACI;AArBtB;;;;;;;"} \ No newline at end of file diff --git a/docs/intro.md b/docs/intro.md index 37c08f20..c7abb771 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -1,7 +1,8 @@ # material-ui-dropzone -> Material-UI-dropzone is a set of [React](https://github.com/facebook/react) components using [Material-UI](https://github.com/mui-org/material-ui) and is based on the excellent [react-dropzone](https://github.com/react-dropzone/react-dropzone) library. +**Material-UI-Dropzone** is a set of [React](https://github.com/facebook/react) components using [Material-UI](https://github.com/mui-org/material-ui) and is based on the excellent [react-dropzone](https://github.com/react-dropzone/react-dropzone) library. These components provide: -This components provide either a file-upload dropzone or a file-upload dropzone inside of a dialog. +- File Upload Dropzone +- File Upload Dropzone inside of a Dialog -The file-upload dropzone features some snazzy "File Allowed/Not Allowed" effects, previews and alerts. +Additionally, the File Upload Dropzone features some snazzy "File Allowed/Not Allowed" effects, previews and alerts. diff --git a/docs/screenshots.md b/docs/screenshots.md index 7cb8ad89..b1e35f49 100644 --- a/docs/screenshots.md +++ b/docs/screenshots.md @@ -1,14 +1,9 @@ -This is the Dialog component: +Full documentation and samples are available here [https://yuvaleros.github.io/material-ui-dropzone](https://yuvaleros.github.io/material-ui-dropzone). -![Dialog](https://raw.githubusercontent.com/Yuvaleros/material-ui-dropzone/master/pics/demo_pic.jpg) -![Dialog with Previews](https://raw.githubusercontent.com/Yuvaleros/material-ui-dropzone/master/pics/demo_pic5.JPG) +**Preview: Dialog Component** with drag'n'drop effects for accepted and rejected files. -When you drag a file onto the dropzone, you get a neat effect: +drawing +
+
-![Drag Overlay](https://raw.githubusercontent.com/Yuvaleros/material-ui-dropzone/master/pics/demo_pic2.JPG) - -And if you drag in a wrong type of file, you'll get yelled at: - -![Drag Error Overlay](https://raw.githubusercontent.com/Yuvaleros/material-ui-dropzone/master/pics/demo_pic4.JPG) - -**N.B. This has some limitations (see [here](https://github.com/react-dropzone/react-dropzone/tree/master/examples/accept#browser-limitations) for more details).** +**Disclaimer:** Drag'n'drop handling has some known limitations, see [here](https://github.com/react-dropzone/react-dropzone/tree/master/examples/accept#browser-limitations) for more details. diff --git a/pics/dropzone.gif b/pics/dropzone.gif new file mode 100644 index 00000000..99349a2c Binary files /dev/null and b/pics/dropzone.gif differ diff --git a/src/components/DropzoneArea.js b/src/components/DropzoneArea.js index 10b4a4b1..a916174d 100644 --- a/src/components/DropzoneArea.js +++ b/src/components/DropzoneArea.js @@ -110,7 +110,7 @@ class DropzoneArea extends React.PureComponent { // Notify removed file if (onDelete) { - onDelete(removedFileObj.file); + onDelete(removedFileObj.file, removedFileObjIdx); } // Update local state @@ -165,6 +165,7 @@ DropzoneArea.propTypes = { * Fired when a file is deleted from the previews panel. * * @param {File} deletedFile The file that was removed. + * @param {number} deletedFileIndex The index of the file that was removed. */ onDelete: PropTypes.func, }; diff --git a/src/components/DropzoneAreaBase.js b/src/components/DropzoneAreaBase.js index c9fe83d0..517d0cd0 100644 --- a/src/components/DropzoneAreaBase.js +++ b/src/components/DropzoneAreaBase.js @@ -252,13 +252,15 @@ class DropzoneAreaBase extends React.PureComponent {
- - {dropzoneText} - + { typeof dropzoneText === 'string' ? + + {dropzoneText} + : + dropzoneText + } {Icon ? ( ) : ( @@ -382,8 +384,8 @@ DropzoneAreaBase.propTypes = { fileObjects: PropTypes.arrayOf(FileObjectShape), /** Maximum file size (in bytes) that the dropzone will accept. */ maxFileSize: PropTypes.number, - /** Text inside the dropzone. */ - dropzoneText: PropTypes.string, + /** Text or Element inside the dropzone. */ + dropzoneText: PropTypes.string | PropTypes.element, /** Custom CSS class name for dropzone container. */ dropzoneClass: PropTypes.string, /** Custom CSS class name for text inside the container. */ diff --git a/src/components/DropzoneAreaBase.md b/src/components/DropzoneAreaBase.md index ed16497c..86945cdd 100644 --- a/src/components/DropzoneAreaBase.md +++ b/src/components/DropzoneAreaBase.md @@ -9,7 +9,7 @@ import { DropzoneAreaBase } from 'material-ui-dropzone'; ```jsx console.log('Added Files:', fileObjs)} - onDelete={(fileObj) => console.log('Removed File:', fileObj)} + onDelete={(fileObj, index) => console.log('Removed File:', fileObj, 'at index', index)} onAlert={(message, variant) => console.log(`${variant}: ${message}`)} /> ``` diff --git a/src/index.d.ts b/src/index.d.ts index e52beb4f..44bf7f8a 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -42,7 +42,7 @@ export type DropzoneAreaBaseProps = { filesLimit?: number; Icon?: React.ComponentType; maxFileSize?: number; - dropzoneText?: string; + dropzoneText?: string | React.ReactElement; previewText?: string; showPreviews?: boolean; showPreviewsInDropzone?: boolean; @@ -97,7 +97,7 @@ export type DropzoneAreaProps = Omit< clearOnUnmount?: boolean; initialFiles?: (File | string)[]; onChange?: (files: File[]) => void; - onDelete?: (file: File) => void; + onDelete?: (file: File, index: number) => void; }; export const DropzoneArea: React.ComponentType; diff --git a/styleguide.config.js b/styleguide.config.js index 3d0b2df2..6fba1b81 100644 --- a/styleguide.config.js +++ b/styleguide.config.js @@ -15,7 +15,7 @@ module.exports = { content: './docs/support.md', }, { - name: 'Screenshots', + name: 'Demo', content: './docs/screenshots.md', }, { diff --git a/yarn.lock b/yarn.lock index cc0258b5..c7dcd108 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2470,19 +2470,19 @@ camelcase@^5.0.0: integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== caniuse-lite@^1.0.30000989: - version "1.0.30001038" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz#44da3cbca2ab6cb6aa83d1be5d324e17f141caff" - integrity sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ== + version "1.0.30001257" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001257.tgz" + integrity sha512-JN49KplOgHSXpIsVSF+LUyhD8PUp6xPpAXeRrrcBh4KBeP7W864jHn6RvzJgDlrReyeVjMFJL3PLpPvKIxlIHA== caniuse-lite@^1.0.30001030: - version "1.0.30001035" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e" - integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ== + version "1.0.30001257" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001257.tgz" + integrity sha512-JN49KplOgHSXpIsVSF+LUyhD8PUp6xPpAXeRrrcBh4KBeP7W864jHn6RvzJgDlrReyeVjMFJL3PLpPvKIxlIHA== caniuse-lite@^1.0.30001043: - version "1.0.30001081" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001081.tgz#40615a3c416a047c5a4d45673e5257bf128eb3b5" - integrity sha512-iZdh3lu09jsUtLE6Bp8NAbJskco4Y3UDtkR3GTCJGsbMowBU5IWDFF79sV2ws7lSqTzWyKazxam2thasHymENQ== + version "1.0.30001257" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001257.tgz" + integrity sha512-JN49KplOgHSXpIsVSF+LUyhD8PUp6xPpAXeRrrcBh4KBeP7W864jHn6RvzJgDlrReyeVjMFJL3PLpPvKIxlIHA== ccount@^1.0.0: version "1.0.5"