keycloak-d4science-spi-parent/keycloak-d4science-theme/src/main/resources/theme/d4science/account/resources/assets/AccountExtraPage-CuT1Gng0.j...

1 line
127 KiB
Plaintext

{"version":3,"file":"AccountExtraPage-CuT1Gng0.js","sources":["../../../../../node_modules/.pnpm/@patternfly+react-styles@5.2.1/node_modules/@patternfly/react-styles/css/components/FileUpload/file-upload.mjs","../../../../../node_modules/.pnpm/@patternfly+react-core@5.2.3_react-dom@18.2.0_react@18.2.0/node_modules/@patternfly/react-core/dist/esm/helpers/fileUtils.js","../../../../../node_modules/.pnpm/@patternfly+react-core@5.2.3_react-dom@18.2.0_react@18.2.0/node_modules/@patternfly/react-core/dist/esm/components/FileUpload/FileUploadField.js","../../../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/factoryWithThrowingShims.js","../../../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js","../../../../../node_modules/.pnpm/file-selector@0.6.0/node_modules/file-selector/dist/es5/file.js","../../../../../node_modules/.pnpm/file-selector@0.6.0/node_modules/file-selector/dist/es5/file-selector.js","../../../../../node_modules/.pnpm/attr-accept@2.2.2/node_modules/attr-accept/dist/es/index.js","../../../../../node_modules/.pnpm/react-dropzone@14.2.3_react@18.2.0/node_modules/react-dropzone/dist/es/utils/index.js","../../../../../node_modules/.pnpm/react-dropzone@14.2.3_react@18.2.0/node_modules/react-dropzone/dist/es/index.js","../../../../../node_modules/.pnpm/@patternfly+react-core@5.2.3_react-dom@18.2.0_react@18.2.0/node_modules/@patternfly/react-core/dist/esm/components/FileUpload/FileUpload.js","../../src/d4science-page/AvatarForm.tsx","../../src/d4science-page/AccountExtraPage.tsx"],"sourcesContent":["import './file-upload.css';\nexport default {\n \"button\": \"pf-v5-c-button\",\n \"fileUpload\": \"pf-v5-c-file-upload\",\n \"fileUploadFileDetails\": \"pf-v5-c-file-upload__file-details\",\n \"fileUploadFileDetailsSpinner\": \"pf-v5-c-file-upload__file-details-spinner\",\n \"fileUploadFileSelect\": \"pf-v5-c-file-upload__file-select\",\n \"formControl\": \"pf-v5-c-form-control\",\n \"modifiers\": {\n \"dragHover\": \"pf-m-drag-hover\",\n \"loading\": \"pf-m-loading\",\n \"control\": \"pf-m-control\"\n }\n};","export var fileReaderType;\n(function (fileReaderType) {\n fileReaderType[\"text\"] = \"text\";\n fileReaderType[\"dataURL\"] = \"dataURL\";\n})(fileReaderType || (fileReaderType = {}));\n/**\n * Read a file using the FileReader API, either as a plain text string or as a DataURL string.\n * Returns a promise which will resolve with the file contents as a string or reject with a DOMException.\n *\n * @param {File} fileHandle - File object to read\n * @param {fileReaderType} type - How to read it\n */\nexport function readFile(fileHandle, type) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result);\n reader.onerror = () => reject(reader.error);\n if (type === fileReaderType.text) {\n reader.readAsText(fileHandle);\n }\n else if (type === fileReaderType.dataURL) {\n reader.readAsDataURL(fileHandle);\n }\n else {\n reject('unknown type');\n }\n });\n}\n//# sourceMappingURL=fileUtils.js.map","import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport styles from '@patternfly/react-styles/css/components/FileUpload/file-upload.mjs';\nimport { css } from '@patternfly/react-styles';\nimport { InputGroup, InputGroupItem } from '../InputGroup';\nimport { TextInput } from '../TextInput';\nimport { Button, ButtonVariant } from '../Button';\nimport { TextArea, TextAreResizeOrientation } from '../TextArea';\nimport { Spinner, spinnerSize } from '../Spinner';\nimport { fileReaderType } from '../../helpers/fileUtils';\nexport const FileUploadField = (_a) => {\n var { id, name, type, value = '', filename = '', onBrowseButtonClick = () => { }, onClearButtonClick = () => { }, onTextAreaClick, onTextChange, onTextAreaBlur, textAreaPlaceholder = '', className = '', isDisabled = false, isReadOnly = false, isLoading = false, spinnerAriaValueText, isRequired = false, isDragActive = false, validated = 'default', 'aria-label': ariaLabel = 'File upload', filenamePlaceholder = 'Drag a file here or browse to upload', filenameAriaLabel = filename ? 'Read only filename' : filenamePlaceholder, browseButtonText = 'Browse...', clearButtonText = 'Clear', isClearButtonDisabled = !filename && !value, containerRef = null, allowEditingUploadedText = false, hideDefaultPreview = false, children = null } = _a, props = __rest(_a, [\"id\", \"name\", \"type\", \"value\", \"filename\", \"onBrowseButtonClick\", \"onClearButtonClick\", \"onTextAreaClick\", \"onTextChange\", \"onTextAreaBlur\", \"textAreaPlaceholder\", \"className\", \"isDisabled\", \"isReadOnly\", \"isLoading\", \"spinnerAriaValueText\", \"isRequired\", \"isDragActive\", \"validated\", 'aria-label', \"filenamePlaceholder\", \"filenameAriaLabel\", \"browseButtonText\", \"clearButtonText\", \"isClearButtonDisabled\", \"containerRef\", \"allowEditingUploadedText\", \"hideDefaultPreview\", \"children\"]);\n const onTextAreaChange = (event, newValue) => {\n onTextChange === null || onTextChange === void 0 ? void 0 : onTextChange(event, newValue);\n };\n return (React.createElement(\"div\", Object.assign({ className: css(styles.fileUpload, isDragActive && styles.modifiers.dragHover, isLoading && styles.modifiers.loading, className), ref: containerRef }, props),\n React.createElement(\"div\", { className: styles.fileUploadFileSelect },\n React.createElement(InputGroup, null,\n React.createElement(InputGroupItem, { isFill: true },\n React.createElement(TextInput, { readOnlyVariant: \"default\" // Always read-only regardless of isReadOnly prop (which is just for the TextArea)\n , isDisabled: isDisabled, id: `${id}-filename`, name: name || `${id}-filename`, \"aria-label\": filenameAriaLabel, placeholder: filenamePlaceholder, \"aria-describedby\": `${id}-browse-button`, value: filename })),\n React.createElement(InputGroupItem, null,\n React.createElement(Button, { id: `${id}-browse-button`, variant: ButtonVariant.control, onClick: onBrowseButtonClick, isDisabled: isDisabled }, browseButtonText)),\n React.createElement(InputGroupItem, null,\n React.createElement(Button, { variant: ButtonVariant.control, isDisabled: isDisabled || isClearButtonDisabled, onClick: onClearButtonClick }, clearButtonText)))),\n React.createElement(\"div\", { className: styles.fileUploadFileDetails },\n !hideDefaultPreview && type === fileReaderType.text && (React.createElement(TextArea, { readOnly: isReadOnly || (!!filename && !allowEditingUploadedText), disabled: isDisabled, isRequired: isRequired, resizeOrientation: TextAreResizeOrientation.vertical, validated: validated, id: id, \"aria-label\": ariaLabel, value: value, onChange: onTextAreaChange, onClick: onTextAreaClick, onBlur: onTextAreaBlur, placeholder: textAreaPlaceholder })),\n isLoading && (React.createElement(\"div\", { className: styles.fileUploadFileDetailsSpinner },\n React.createElement(Spinner, { size: spinnerSize.lg, \"aria-valuetext\": spinnerAriaValueText })))),\n children));\n};\nFileUploadField.displayName = 'FileUploadField';\n//# sourceMappingURL=FileUploadField.js.map","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export var COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n ['aac', 'audio/aac'],\n ['abw', 'application/x-abiword'],\n ['arc', 'application/x-freearc'],\n ['avif', 'image/avif'],\n ['avi', 'video/x-msvideo'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['bin', 'application/octet-stream'],\n ['bmp', 'image/bmp'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['cda', 'application/x-cdf'],\n ['csh', 'application/x-csh'],\n ['css', 'text/css'],\n ['csv', 'text/csv'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['epub', 'application/epub+zip'],\n ['gz', 'application/gzip'],\n ['gif', 'image/gif'],\n ['heic', 'image/heic'],\n ['heif', 'image/heif'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['ico', 'image/vnd.microsoft.icon'],\n ['ics', 'text/calendar'],\n ['jar', 'application/java-archive'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['js', 'text/javascript'],\n ['json', 'application/json'],\n ['jsonld', 'application/ld+json'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mjs', 'text/javascript'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mpeg', 'video/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['opus', 'audio/opus'],\n ['otf', 'font/otf'],\n ['png', 'image/png'],\n ['pdf', 'application/pdf'],\n ['php', 'application/x-httpd-php'],\n ['ppt', 'application/vnd.ms-powerpoint'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['rar', 'application/vnd.rar'],\n ['rtf', 'application/rtf'],\n ['sh', 'application/x-sh'],\n ['svg', 'image/svg+xml'],\n ['swf', 'application/x-shockwave-flash'],\n ['tar', 'application/x-tar'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['ts', 'video/mp2t'],\n ['ttf', 'font/ttf'],\n ['txt', 'text/plain'],\n ['vsd', 'application/vnd.visio'],\n ['wav', 'audio/wav'],\n ['weba', 'audio/webm'],\n ['webm', 'video/webm'],\n ['webp', 'image/webp'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['xhtml', 'application/xhtml+xml'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xml', 'application/xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['zip', 'application/zip'],\n ['7z', 'application/x-7z-compressed'],\n // Others\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['msg', 'application/vnd.ms-outlook']\n]);\nexport function toFileWithPath(file, path) {\n var f = withMimeType(file);\n if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n var webkitRelativePath = file.webkitRelativePath;\n Object.defineProperty(f, 'path', {\n value: typeof path === 'string'\n ? path\n // If <input webkitdirectory> is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n return f;\n}\nfunction withMimeType(file) {\n var name = file.name;\n var hasExtension = name && name.lastIndexOf('.') !== -1;\n if (hasExtension && !file.type) {\n var ext = name.split('.')\n .pop().toLowerCase();\n var type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n return file;\n}\n//# sourceMappingURL=file.js.map","import { __awaiter, __generator, __read, __spreadArray } from \"tslib\";\nimport { toFileWithPath } from './file';\nvar FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store',\n 'Thumbs.db' // Windows\n];\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport function fromEvent(evt) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (isObject(evt) && isDataTransfer(evt.dataTransfer)) {\n return [2 /*return*/, getDataTransferFiles(evt.dataTransfer, evt.type)];\n }\n else if (isChangeEvt(evt)) {\n return [2 /*return*/, getInputFiles(evt)];\n }\n else if (Array.isArray(evt) && evt.every(function (item) { return 'getFile' in item && typeof item.getFile === 'function'; })) {\n return [2 /*return*/, getFsHandleFiles(evt)];\n }\n return [2 /*return*/, []];\n });\n });\n}\nfunction isDataTransfer(value) {\n return isObject(value);\n}\nfunction isChangeEvt(value) {\n return isObject(value) && isObject(value.target);\n}\nfunction isObject(v) {\n return typeof v === 'object' && v !== null;\n}\nfunction getInputFiles(evt) {\n return fromList(evt.target.files).map(function (file) { return toFileWithPath(file); });\n}\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nfunction getFsHandleFiles(handles) {\n return __awaiter(this, void 0, void 0, function () {\n var files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(handles.map(function (h) { return h.getFile(); }))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, files.map(function (file) { return toFileWithPath(file); })];\n }\n });\n });\n}\nfunction getDataTransferFiles(dt, type) {\n return __awaiter(this, void 0, void 0, function () {\n var items, files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!dt.items) return [3 /*break*/, 2];\n items = fromList(dt.items)\n .filter(function (item) { return item.kind === 'file'; });\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return [2 /*return*/, items];\n }\n return [4 /*yield*/, Promise.all(items.map(toFilePromises))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, noIgnoredFiles(flatten(files))];\n case 2: return [2 /*return*/, noIgnoredFiles(fromList(dt.files)\n .map(function (file) { return toFileWithPath(file); }))];\n }\n });\n });\n}\nfunction noIgnoredFiles(files) {\n return files.filter(function (file) { return FILES_TO_IGNORE.indexOf(file.name) === -1; });\n}\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList(items) {\n if (items === null) {\n return [];\n }\n var files = [];\n // tslint:disable: prefer-for-of\n for (var i = 0; i < items.length; i++) {\n var file = items[i];\n files.push(file);\n }\n return files;\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n var entry = item.webkitGetAsEntry();\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry);\n }\n return fromDataTransferItem(item);\n}\nfunction flatten(items) {\n return items.reduce(function (acc, files) { return __spreadArray(__spreadArray([], __read(acc), false), __read((Array.isArray(files) ? flatten(files) : [files])), false); }, []);\n}\nfunction fromDataTransferItem(item) {\n var file = item.getAsFile();\n if (!file) {\n return Promise.reject(\"\".concat(item, \" is not a File\"));\n }\n var fwp = toFileWithPath(file);\n return Promise.resolve(fwp);\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nfunction fromEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry)];\n });\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry) {\n var reader = entry.createReader();\n return new Promise(function (resolve, reject) {\n var entries = [];\n function readEntries() {\n var _this = this;\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries(function (batch) { return __awaiter(_this, void 0, void 0, function () {\n var files, err_1, items;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!batch.length) return [3 /*break*/, 5];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, Promise.all(entries)];\n case 2:\n files = _a.sent();\n resolve(files);\n return [3 /*break*/, 4];\n case 3:\n err_1 = _a.sent();\n reject(err_1);\n return [3 /*break*/, 4];\n case 4: return [3 /*break*/, 6];\n case 5:\n items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n // Continue reading\n readEntries();\n _a.label = 6;\n case 6: return [2 /*return*/];\n }\n });\n }); }, function (err) {\n reject(err);\n });\n }\n readEntries();\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nfunction fromFileEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n entry.file(function (file) {\n var fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, function (err) {\n reject(err);\n });\n })];\n });\n });\n}\n//# sourceMappingURL=file-selector.js.map","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n var fileName = file.name || '';\n var mimeType = (file.type || '').toLowerCase();\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim().toLowerCase();\n\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\n // This is something like a image/* mime type\n return baseMimeType === validType.replace(/\\/.*$/, '');\n }\n\n return mimeType === validType;\n });\n }\n\n return true;\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport accepts from \"attr-accept\"; // Error codes\n\nexport var FILE_INVALID_TYPE = \"file-invalid-type\";\nexport var FILE_TOO_LARGE = \"file-too-large\";\nexport var FILE_TOO_SMALL = \"file-too-small\";\nexport var TOO_MANY_FILES = \"too-many-files\";\nexport var ErrorCode = {\n FileInvalidType: FILE_INVALID_TYPE,\n FileTooLarge: FILE_TOO_LARGE,\n FileTooSmall: FILE_TOO_SMALL,\n TooManyFiles: TOO_MANY_FILES\n}; // File Errors\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr(accept) {\n accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;\n var messageSuffix = Array.isArray(accept) ? \"one of \".concat(accept.join(\", \")) : accept;\n return {\n code: FILE_INVALID_TYPE,\n message: \"File type must be \".concat(messageSuffix)\n };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n return {\n code: FILE_TOO_LARGE,\n message: \"File is larger than \".concat(maxSize, \" \").concat(maxSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n return {\n code: FILE_TOO_SMALL,\n message: \"File is smaller than \".concat(minSize, \" \").concat(minSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n code: TOO_MANY_FILES,\n message: \"Too many files\"\n}; // Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with\n// that MIME type will always be accepted\n\nexport function fileAccepted(file, accept) {\n var isAcceptable = file.type === \"application/x-moz-file\" || accepts(file, accept);\n return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n if (isDefined(file.size)) {\n if (isDefined(minSize) && isDefined(maxSize)) {\n if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n }\n\n return [true, null];\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n/**\n *\n * @param {object} options\n * @param {File[]} options.files\n * @param {string|string[]} [options.accept]\n * @param {number} [options.minSize]\n * @param {number} [options.maxSize]\n * @param {boolean} [options.multiple]\n * @param {number} [options.maxFiles]\n * @param {(f: File) => FileError|FileError[]|null} [options.validator]\n * @returns\n */\n\n\nexport function allFilesAccepted(_ref) {\n var files = _ref.files,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n multiple = _ref.multiple,\n maxFiles = _ref.maxFiles,\n validator = _ref.validator;\n\n if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n return false;\n }\n\n return files.every(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n accepted = _fileAccepted2[0];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n sizeMatch = _fileMatchSize2[0];\n\n var customErrors = validator ? validator(file) : null;\n return accepted && sizeMatch && !customErrors;\n });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n if (typeof event.isPropagationStopped === \"function\") {\n return event.isPropagationStopped();\n } else if (typeof event.cancelBubble !== \"undefined\") {\n return event.cancelBubble;\n }\n\n return false;\n}\nexport function isEvtWithFiles(event) {\n if (!event.dataTransfer) {\n return !!event.target && !!event.target.files;\n } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n return type === \"Files\" || type === \"application/x-moz-file\";\n });\n}\nexport function isKindFile(item) {\n return _typeof(item) === \"object\" && item !== null && item.kind === \"file\";\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf(\"MSIE\") !== -1 || userAgent.indexOf(\"Trident/\") !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf(\"Edge/\") !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return fns.some(function (fn) {\n if (!isPropagationStopped(event) && fn) {\n fn.apply(void 0, [event].concat(args));\n }\n\n return isPropagationStopped(event);\n });\n };\n}\n/**\n * canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)\n * is supported by the browser.\n * @returns {boolean}\n */\n\nexport function canUseFileSystemAccessAPI() {\n return \"showOpenFilePicker\" in window;\n}\n/**\n * Convert the `{accept}` dropzone prop to the\n * `{types}` option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n *\n * @param {AcceptProp} accept\n * @returns {{accept: string[]}[]}\n */\n\nexport function pickerOptionsFromAccept(accept) {\n if (isDefined(accept)) {\n var acceptForPicker = Object.entries(accept).filter(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n mimeType = _ref3[0],\n ext = _ref3[1];\n\n var ok = true;\n\n if (!isMIMEType(mimeType)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.\"));\n ok = false;\n }\n\n if (!Array.isArray(ext) || !ext.every(isExt)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because an invalid file extension was provided.\"));\n ok = false;\n }\n\n return ok;\n }).reduce(function (agg, _ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n mimeType = _ref5[0],\n ext = _ref5[1];\n\n return _objectSpread(_objectSpread({}, agg), {}, _defineProperty({}, mimeType, ext));\n }, {});\n return [{\n // description is required due to https://crbug.com/1264708\n description: \"Files\",\n accept: acceptForPicker\n }];\n }\n\n return accept;\n}\n/**\n * Convert the `{accept}` dropzone prop to an array of MIME types/extensions.\n * @param {AcceptProp} accept\n * @returns {string}\n */\n\nexport function acceptPropAsAcceptAttr(accept) {\n if (isDefined(accept)) {\n return Object.entries(accept).reduce(function (a, _ref6) {\n var _ref7 = _slicedToArray(_ref6, 2),\n mimeType = _ref7[0],\n ext = _ref7[1];\n\n return [].concat(_toConsumableArray(a), [mimeType], _toConsumableArray(ext));\n }, []) // Silently discard invalid entries as pickerOptionsFromAccept warns about these\n .filter(function (v) {\n return isMIMEType(v) || isExt(v);\n }).join(\",\");\n }\n\n return undefined;\n}\n/**\n * Check if v is an exception caused by aborting a request (e.g window.showOpenFilePicker()).\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is an abort exception.\n */\n\nexport function isAbort(v) {\n return v instanceof DOMException && (v.name === \"AbortError\" || v.code === v.ABORT_ERR);\n}\n/**\n * Check if v is a security error.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is a security error.\n */\n\nexport function isSecurityError(v) {\n return v instanceof DOMException && (v.name === \"SecurityError\" || v.code === v.SECURITY_ERR);\n}\n/**\n * Check if v is a MIME type string.\n *\n * See accepted format: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers.\n *\n * @param {string} v\n */\n\nexport function isMIMEType(v) {\n return v === \"audio/*\" || v === \"video/*\" || v === \"image/*\" || v === \"text/*\" || /\\w+\\/[-+.\\w]+/g.test(v);\n}\n/**\n * Check if v is a file extension.\n * @param {string} v\n */\n\nexport function isExt(v) {\n return /^.*\\.[\\w]+$/.test(v);\n}\n/**\n * @typedef {Object.<string, string[]>} AcceptProp\n */\n\n/**\n * @typedef {object} FileError\n * @property {string} message\n * @property {ErrorCode|string} code\n */\n\n/**\n * @typedef {\"file-invalid-type\"|\"file-too-large\"|\"file-too-small\"|\"too-many-files\"} ErrorCode\n */","var _excluded = [\"children\"],\n _excluded2 = [\"open\"],\n _excluded3 = [\"refKey\", \"role\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { fromEvent } from \"file-selector\";\nimport { acceptPropAsAcceptAttr, allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, canUseFileSystemAccessAPI, isAbort, isEvtWithFiles, isIeOrEdge, isPropagationStopped, isSecurityError, onDocumentDragOver, pickerOptionsFromAccept, TOO_MANY_FILES_REJECTION } from \"./utils/index\";\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * <Dropzone>\n * {({getRootProps, getInputProps}) => (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag 'n' drop some files here, or click to select files</p>\n * </div>\n * )}\n * </Dropzone>\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n params = _objectWithoutProperties(_ref, _excluded);\n\n var _useDropzone = useDropzone(params),\n open = _useDropzone.open,\n props = _objectWithoutProperties(_useDropzone, _excluded2);\n\n useImperativeHandle(ref, function () {\n return {\n open: open\n };\n }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n open: open\n })));\n});\nDropzone.displayName = \"Dropzone\"; // Add default props for react-docgen\n\nvar defaultProps = {\n disabled: false,\n getFilesFromEvent: fromEvent,\n maxSize: Infinity,\n minSize: 0,\n multiple: true,\n maxFiles: 0,\n preventDropOnDocument: true,\n noClick: false,\n noKeyboard: false,\n noDrag: false,\n noDragEventsBubbling: false,\n validator: null,\n useFsAccessApi: true,\n autoFocus: false\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n /**\n * Render function that exposes the dropzone state and prop getter fns\n *\n * @param {object} params\n * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} params.open Open the native file selection dialog\n * @param {boolean} params.isFocused Dropzone area is in focus\n * @param {boolean} params.isFileDialogActive File dialog is opened\n * @param {boolean} params.isDragActive Active drag is in progress\n * @param {boolean} params.isDragAccept Dragged files are accepted\n * @param {boolean} params.isDragReject Some dragged files are rejected\n * @param {File[]} params.acceptedFiles Accepted files\n * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n */\n children: PropTypes.func,\n\n /**\n * Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n */\n accept: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)),\n\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * If true, disables click to open the native file selection dialog\n */\n noClick: PropTypes.bool,\n\n /**\n * If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n */\n noKeyboard: PropTypes.bool,\n\n /**\n * If true, disables drag 'n' drop\n */\n noDrag: PropTypes.bool,\n\n /**\n * If true, stops drag event propagation to parents\n */\n noDragEventsBubbling: PropTypes.bool,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Maximum accepted number of files\n * The default value is 0 which means there is no limitation to how many files are accepted.\n */\n maxFiles: PropTypes.number,\n\n /**\n * Enable/disable the dropzone\n */\n disabled: PropTypes.bool,\n\n /**\n * Use this to provide a custom file aggregator\n *\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n getFilesFromEvent: PropTypes.func,\n\n /**\n * Cb for when closing the file dialog with no selection\n */\n onFileDialogCancel: PropTypes.func,\n\n /**\n * Cb for when opening the file dialog\n */\n onFileDialogOpen: PropTypes.func,\n\n /**\n * Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n */\n useFsAccessApi: PropTypes.bool,\n\n /**\n * Set to true to focus the root element on render\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Cb for when the `dragenter` event occurs.\n *\n * @param {DragEvent} event\n */\n onDragEnter: PropTypes.func,\n\n /**\n * Cb for when the `dragleave` event occurs\n *\n * @param {DragEvent} event\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Cb for when the `dragover` event occurs\n *\n * @param {DragEvent} event\n */\n onDragOver: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n *\n * @param {File[]} acceptedFiles\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n onDrop: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are accepted, this callback is not invoked.\n *\n * @param {File[]} files\n * @param {(DragEvent|Event)} event\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are rejected, this callback is not invoked.\n *\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event\n */\n onDropRejected: PropTypes.func,\n\n /**\n * Cb for when there's some error from any of the promises.\n *\n * @param {Error} error\n */\n onError: PropTypes.func,\n\n /**\n * Custom validation function. It must return null if there's no errors.\n * @param {File} file\n * @returns {FileError|FileError[]|null}\n */\n validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise<File[]>)}\n */\n\n/**\n * An object with the current dropzone state.\n *\n * @typedef {object} DropzoneState\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\n/**\n * An object with the dropzone methods.\n *\n * @typedef {object} DropzoneMethods\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n */\n\nvar initialState = {\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false,\n acceptedFiles: [],\n fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n * const {getRootProps, getInputProps} = useDropzone({\n * onDrop: acceptedFiles => {\n * // do something with the File objects, e.g. upload to some server\n * }\n * });\n * return (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag and drop some files here, or click to select files</p>\n * </div>\n * )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {import(\"./utils\").AcceptProp} [props.accept] Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n * @param {boolean} autoFocus Set to true to auto focus the root element.\n * @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be an object with keys as a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) and the value an array of file extensions (optional).\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n * @param {(error: Error) => void} [props.onError]\n *\n * @returns {DropzoneState & DropzoneMethods}\n */\n\nexport function useDropzone() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),\n accept = _defaultProps$props.accept,\n disabled = _defaultProps$props.disabled,\n getFilesFromEvent = _defaultProps$props.getFilesFromEvent,\n maxSize = _defaultProps$props.maxSize,\n minSize = _defaultProps$props.minSize,\n multiple = _defaultProps$props.multiple,\n maxFiles = _defaultProps$props.maxFiles,\n onDragEnter = _defaultProps$props.onDragEnter,\n onDragLeave = _defaultProps$props.onDragLeave,\n onDragOver = _defaultProps$props.onDragOver,\n onDrop = _defaultProps$props.onDrop,\n onDropAccepted = _defaultProps$props.onDropAccepted,\n onDropRejected = _defaultProps$props.onDropRejected,\n onFileDialogCancel = _defaultProps$props.onFileDialogCancel,\n onFileDialogOpen = _defaultProps$props.onFileDialogOpen,\n useFsAccessApi = _defaultProps$props.useFsAccessApi,\n autoFocus = _defaultProps$props.autoFocus,\n preventDropOnDocument = _defaultProps$props.preventDropOnDocument,\n noClick = _defaultProps$props.noClick,\n noKeyboard = _defaultProps$props.noKeyboard,\n noDrag = _defaultProps$props.noDrag,\n noDragEventsBubbling = _defaultProps$props.noDragEventsBubbling,\n onError = _defaultProps$props.onError,\n validator = _defaultProps$props.validator;\n\n var acceptAttr = useMemo(function () {\n return acceptPropAsAcceptAttr(accept);\n }, [accept]);\n var pickerTypes = useMemo(function () {\n return pickerOptionsFromAccept(accept);\n }, [accept]);\n var onFileDialogOpenCb = useMemo(function () {\n return typeof onFileDialogOpen === \"function\" ? onFileDialogOpen : noop;\n }, [onFileDialogOpen]);\n var onFileDialogCancelCb = useMemo(function () {\n return typeof onFileDialogCancel === \"function\" ? onFileDialogCancel : noop;\n }, [onFileDialogCancel]);\n /**\n * @constant\n * @type {React.MutableRefObject<HTMLElement>}\n */\n\n var rootRef = useRef(null);\n var inputRef = useRef(null);\n\n var _useReducer = useReducer(reducer, initialState),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n\n var isFocused = state.isFocused,\n isFileDialogActive = state.isFileDialogActive;\n var fsAccessApiWorksRef = useRef(typeof window !== \"undefined\" && window.isSecureContext && useFsAccessApi && canUseFileSystemAccessAPI()); // Update file dialog active state when the window is focused on\n\n var onWindowFocus = function onWindowFocus() {\n // Execute the timeout only if the file dialog is opened in the browser\n if (!fsAccessApiWorksRef.current && isFileDialogActive) {\n setTimeout(function () {\n if (inputRef.current) {\n var files = inputRef.current.files;\n\n if (!files.length) {\n dispatch({\n type: \"closeDialog\"\n });\n onFileDialogCancelCb();\n }\n }\n }, 300);\n }\n };\n\n useEffect(function () {\n window.addEventListener(\"focus\", onWindowFocus, false);\n return function () {\n window.removeEventListener(\"focus\", onWindowFocus, false);\n };\n }, [inputRef, isFileDialogActive, onFileDialogCancelCb, fsAccessApiWorksRef]);\n var dragTargetsRef = useRef([]);\n\n var onDocumentDrop = function onDocumentDrop(event) {\n if (rootRef.current && rootRef.current.contains(event.target)) {\n // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n\n event.preventDefault();\n dragTargetsRef.current = [];\n };\n\n useEffect(function () {\n if (preventDropOnDocument) {\n document.addEventListener(\"dragover\", onDocumentDragOver, false);\n document.addEventListener(\"drop\", onDocumentDrop, false);\n }\n\n return function () {\n if (preventDropOnDocument) {\n document.removeEventListener(\"dragover\", onDocumentDragOver);\n document.removeEventListener(\"drop\", onDocumentDrop);\n }\n };\n }, [rootRef, preventDropOnDocument]); // Auto focus the root when autoFocus is true\n\n useEffect(function () {\n if (!disabled && autoFocus && rootRef.current) {\n rootRef.current.focus();\n }\n\n return function () {};\n }, [rootRef, autoFocus, disabled]);\n var onErrCb = useCallback(function (e) {\n if (onError) {\n onError(e);\n } else {\n // Let the user know something's gone wrong if they haven't provided the onError cb.\n console.error(e);\n }\n }, [onError]);\n var onDragEnterCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n var fileCount = files.length;\n var isDragAccept = fileCount > 0 && allFilesAccepted({\n files: files,\n accept: acceptAttr,\n minSize: minSize,\n maxSize: maxSize,\n multiple: multiple,\n maxFiles: maxFiles,\n validator: validator\n });\n var isDragReject = fileCount > 0 && !isDragAccept;\n dispatch({\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n isDragActive: true,\n type: \"setDraggedFiles\"\n });\n\n if (onDragEnter) {\n onDragEnter(event);\n }\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n }, [getFilesFromEvent, onDragEnter, onErrCb, noDragEventsBubbling, acceptAttr, minSize, maxSize, multiple, maxFiles, validator]);\n var onDragOverCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event);\n var hasFiles = isEvtWithFiles(event);\n\n if (hasFiles && event.dataTransfer) {\n try {\n event.dataTransfer.dropEffect = \"copy\";\n } catch (_unused) {}\n /* eslint-disable-line no-empty */\n\n }\n\n if (hasFiles && onDragOver) {\n onDragOver(event);\n }\n\n return false;\n }, [onDragOver, noDragEventsBubbling]);\n var onDragLeaveCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n var targets = dragTargetsRef.current.filter(function (target) {\n return rootRef.current && rootRef.current.contains(target);\n }); // Make sure to remove a target present multiple times only once\n // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n var targetIdx = targets.indexOf(event.target);\n\n if (targetIdx !== -1) {\n targets.splice(targetIdx, 1);\n }\n\n dragTargetsRef.current = targets;\n\n if (targets.length > 0) {\n return;\n }\n\n dispatch({\n type: \"setDraggedFiles\",\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false\n });\n\n if (isEvtWithFiles(event) && onDragLeave) {\n onDragLeave(event);\n }\n }, [rootRef, onDragLeave, noDragEventsBubbling]);\n var setFiles = useCallback(function (files, event) {\n var acceptedFiles = [];\n var fileRejections = [];\n files.forEach(function (file) {\n var _fileAccepted = fileAccepted(file, acceptAttr),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n accepted = _fileAccepted2[0],\n acceptError = _fileAccepted2[1];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n sizeMatch = _fileMatchSize2[0],\n sizeError = _fileMatchSize2[1];\n\n var customErrors = validator ? validator(file) : null;\n\n if (accepted && sizeMatch && !customErrors) {\n acceptedFiles.push(file);\n } else {\n var errors = [acceptError, sizeError];\n\n if (customErrors) {\n errors = errors.concat(customErrors);\n }\n\n fileRejections.push({\n file: file,\n errors: errors.filter(function (e) {\n return e;\n })\n });\n }\n });\n\n if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n // Reject everything and empty accepted files\n acceptedFiles.forEach(function (file) {\n fileRejections.push({\n file: file,\n errors: [TOO_MANY_FILES_REJECTION]\n });\n });\n acceptedFiles.splice(0);\n }\n\n dispatch({\n acceptedFiles: acceptedFiles,\n fileRejections: fileRejections,\n type: \"setFiles\"\n });\n\n if (onDrop) {\n onDrop(acceptedFiles, fileRejections, event);\n }\n\n if (fileRejections.length > 0 && onDropRejected) {\n onDropRejected(fileRejections, event);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted(acceptedFiles, event);\n }\n }, [dispatch, multiple, acceptAttr, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);\n var onDropCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [];\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n setFiles(files, event);\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n\n dispatch({\n type: \"reset\"\n });\n }, [getFilesFromEvent, setFiles, onErrCb, noDragEventsBubbling]); // Fn for opening the file dialog programmatically\n\n var openFileDialog = useCallback(function () {\n // No point to use FS access APIs if context is not secure\n // https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts#feature_detection\n if (fsAccessApiWorksRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n\n var opts = {\n multiple: multiple,\n types: pickerTypes\n };\n window.showOpenFilePicker(opts).then(function (handles) {\n return getFilesFromEvent(handles);\n }).then(function (files) {\n setFiles(files, null);\n dispatch({\n type: \"closeDialog\"\n });\n }).catch(function (e) {\n // AbortError means the user canceled\n if (isAbort(e)) {\n onFileDialogCancelCb(e);\n dispatch({\n type: \"closeDialog\"\n });\n } else if (isSecurityError(e)) {\n fsAccessApiWorksRef.current = false; // CORS, so cannot use this API\n // Try using the input\n\n if (inputRef.current) {\n inputRef.current.value = null;\n inputRef.current.click();\n } else {\n onErrCb(new Error(\"Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no <input> was provided.\"));\n }\n } else {\n onErrCb(e);\n }\n });\n return;\n }\n\n if (inputRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb();\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, onErrCb, pickerTypes, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n var onKeyDownCb = useCallback(function (event) {\n // Ignore keyboard events bubbling up the DOM tree\n if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n return;\n }\n\n if (event.key === \" \" || event.key === \"Enter\" || event.keyCode === 32 || event.keyCode === 13) {\n event.preventDefault();\n openFileDialog();\n }\n }, [rootRef, openFileDialog]); // Update focus state for the dropzone\n\n var onFocusCb = useCallback(function () {\n dispatch({\n type: \"focus\"\n });\n }, []);\n var onBlurCb = useCallback(function () {\n dispatch({\n type: \"blur\"\n });\n }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n var onClickCb = useCallback(function () {\n if (noClick) {\n return;\n } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n // to ensure React can handle state changes\n // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n if (isIeOrEdge()) {\n setTimeout(openFileDialog, 0);\n } else {\n openFileDialog();\n }\n }, [noClick, openFileDialog]);\n\n var composeHandler = function composeHandler(fn) {\n return disabled ? null : fn;\n };\n\n var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n return noKeyboard ? null : composeHandler(fn);\n };\n\n var composeDragHandler = function composeDragHandler(fn) {\n return noDrag ? null : composeHandler(fn);\n };\n\n var stopPropagation = function stopPropagation(event) {\n if (noDragEventsBubbling) {\n event.stopPropagation();\n }\n };\n\n var getRootProps = useMemo(function () {\n return function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === void 0 ? \"ref\" : _ref2$refKey,\n role = _ref2.role,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, _excluded3);\n\n return _objectSpread(_objectSpread(_defineProperty({\n onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),\n role: typeof role === \"string\" && role !== \"\" ? role : \"presentation\"\n }, refKey, rootRef), !disabled && !noKeyboard ? {\n tabIndex: 0\n } : {}), rest);\n };\n }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n var onInputElementClick = useCallback(function (event) {\n event.stopPropagation();\n }, []);\n var getInputProps = useMemo(function () {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, _excluded4);\n\n var inputProps = _defineProperty({\n accept: acceptAttr,\n multiple: multiple,\n type: \"file\",\n style: {\n display: \"none\"\n },\n onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n tabIndex: -1\n }, refKey, inputRef);\n\n return _objectSpread(_objectSpread({}, inputProps), rest);\n };\n }, [inputRef, accept, multiple, onDropCb, disabled]);\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: isFocused && !disabled,\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n rootRef: rootRef,\n inputRef: inputRef,\n open: composeHandler(openFileDialog)\n });\n}\n/**\n * @param {DropzoneState} state\n * @param {{type: string} & DropzoneState} action\n * @returns {DropzoneState}\n */\n\nfunction reducer(state, action) {\n /* istanbul ignore next */\n switch (action.type) {\n case \"focus\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true\n });\n\n case \"blur\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: false\n });\n\n case \"openDialog\":\n return _objectSpread(_objectSpread({}, initialState), {}, {\n isFileDialogActive: true\n });\n\n case \"closeDialog\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false\n });\n\n case \"setDraggedFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragActive: action.isDragActive,\n isDragAccept: action.isDragAccept,\n isDragReject: action.isDragReject\n });\n\n case \"setFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n acceptedFiles: action.acceptedFiles,\n fileRejections: action.fileRejections\n });\n\n case \"reset\":\n return _objectSpread({}, initialState);\n\n default:\n return state;\n }\n}\n\nfunction noop() {}\n\nexport { ErrorCode } from \"./utils\";","import { __awaiter, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { useDropzone } from 'react-dropzone';\nimport { FileUploadField } from './FileUploadField';\nimport { readFile, fileReaderType } from '../../helpers/fileUtils';\nimport { fromEvent } from 'file-selector';\nexport const FileUpload = (_a) => {\n var { id, type, value = type === fileReaderType.text || type === fileReaderType.dataURL ? '' : null, filename = '', children = null, onFileInputChange = null, onReadStarted = () => { }, onReadFinished = () => { }, onReadFailed = () => { }, onClearClick, onClick = (event) => event.preventDefault(), onTextChange, onDataChange, dropzoneProps = {} } = _a, props = __rest(_a, [\"id\", \"type\", \"value\", \"filename\", \"children\", \"onFileInputChange\", \"onReadStarted\", \"onReadFinished\", \"onReadFailed\", \"onClearClick\", \"onClick\", \"onTextChange\", \"onDataChange\", \"dropzoneProps\"]);\n const onDropAccepted = (acceptedFiles, event) => {\n if (acceptedFiles.length > 0) {\n const fileHandle = acceptedFiles[0];\n onFileInputChange === null || onFileInputChange === void 0 ? void 0 : onFileInputChange(event, fileHandle);\n if (type === fileReaderType.text || type === fileReaderType.dataURL) {\n onReadStarted(event, fileHandle);\n readFile(fileHandle, type)\n .then((data) => {\n onReadFinished(event, fileHandle);\n onDataChange === null || onDataChange === void 0 ? void 0 : onDataChange(event, data);\n })\n .catch((error) => {\n onReadFailed(event, error, fileHandle);\n onReadFinished(event, fileHandle);\n onDataChange === null || onDataChange === void 0 ? void 0 : onDataChange(event, '');\n });\n }\n }\n dropzoneProps.onDropAccepted && dropzoneProps.onDropAccepted(acceptedFiles, event);\n };\n const onDropRejected = (rejectedFiles, event) => {\n dropzoneProps.onDropRejected && dropzoneProps.onDropRejected(rejectedFiles, event);\n };\n const onClearButtonClick = (event) => {\n onClearClick === null || onClearClick === void 0 ? void 0 : onClearClick(event);\n setFileValue(null);\n };\n const { getRootProps, getInputProps, isDragActive, open, inputRef } = useDropzone(Object.assign(Object.assign({ noClick: true, multiple: false }, dropzoneProps), { onDropAccepted,\n onDropRejected }));\n const setFileValue = (filename) => {\n inputRef.current.value = filename;\n };\n const oldInputProps = getInputProps();\n const inputProps = Object.assign(Object.assign({}, oldInputProps), { onChange: (e) => __awaiter(void 0, void 0, void 0, function* () {\n var _b;\n (_b = oldInputProps.onChange) === null || _b === void 0 ? void 0 : _b.call(oldInputProps, e);\n const files = yield fromEvent(e.nativeEvent);\n if (files.length === 1) {\n onFileInputChange === null || onFileInputChange === void 0 ? void 0 : onFileInputChange(e, files[0]);\n }\n }) });\n const rootProps = getRootProps(Object.assign(Object.assign({}, props), { tabIndex: null, // Omit the unwanted tabIndex from react-dropzone's getRootProps\n id,\n type,\n filename,\n value,\n isDragActive, onBrowseButtonClick: open, onClearButtonClick, onTextAreaClick: onClick, onTextChange,\n onClick, refKey: 'containerRef' }));\n return (React.createElement(FileUploadField, Object.assign({}, rootProps),\n React.createElement(\"input\", Object.assign({}, inputProps)),\n children));\n};\nFileUpload.displayName = 'FileUpload';\n//# sourceMappingURL=FileUpload.js.map","import {\r\n Form,\r\n FormGroup,\r\n ActionGroup,\r\n FileUpload,\r\n Avatar,\r\n Button,\r\n HelperText,\r\n HelperTextItem\r\n} from \"@patternfly/react-core\";\r\nimport { useState, CSSProperties } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useEnvironment } from \"../root/KeycloakContext\";\r\nimport { useAlerts, HelpItem } from \"ui-shared\";\r\n\r\ninterface AvatarFormProps {\r\n accountUrl: string;\r\n}\r\n\r\ninterface AvatarFormState {\r\n errors: any;\r\n imageBlob: any;\r\n filename: string;\r\n avatarUrl: string;\r\n avatarSrc: string;\r\n noAvatarSrc: string;\r\n}\r\n\r\nexport const AvatarForm = ({accountUrl} : AvatarFormProps) => {\r\n const { t } = useTranslation();\r\n const context = useEnvironment();\r\n const urlparts = accountUrl.indexOf('?') > 0 ? accountUrl.split('?') : accountUrl;\r\n const currentAvatarUrl = Array.isArray(urlparts) ? urlparts[0] + \"-avatar?\" + urlparts[1] : urlparts + \"-avatar\";\r\n const noavatar = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMiwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzNiAzNiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzYgMzY7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRjBGMEYwO30KCS5zdDF7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRDJEMkQyO30KCS5zdDJ7ZmlsbDojQjhCQkJFO30KCS5zdDN7ZmlsbDojRDJEMkQyO30KPC9zdHlsZT4KPHJlY3QgY2xhc3M9InN0MCIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2Ii8+CjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNy43LDIwLjFjLTMuNSwwLTYuNC0yLjktNi40LTYuNHMyLjktNi40LDYuNC02LjRzNi40LDIuOSw2LjQsNi40UzIxLjMsMjAuMSwxNy43LDIwLjF6Ii8+CjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMy4zLDM2bDAtNi43Yy0yLDAuNC0yLjksMS40LTMuMSwzLjVMMTAuMSwzNkgxMy4zeiIvPgo8cGF0aCBjbGFzcz0ic3QzIiBkPSJNMTAuMSwzNmwwLjEtMy4yYzAuMi0yLjEsMS4xLTMuMSwzLjEtMy41bDAsNi43aDkuNGwwLTYuN2MyLDAuNCwyLjksMS40LDMuMSwzLjVsMC4xLDMuMmg0LjcKCWMtMC40LTMuOS0xLjMtOS0yLjktMTFjLTEuMS0xLjQtMi4zLTIuMi0zLjUtMi42cy0xLjgtMC42LTYuMy0wLjZzLTYuMSwwLjctNi4xLDAuN2MtMS4yLDAuNC0yLjQsMS4yLTMuNCwyLjYKCUM2LjcsMjcsNS44LDMyLjIsNS40LDM2SDEwLjF6Ii8+CjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0yNS45LDM2bC0wLjEtMy4yYy0wLjItMi4xLTEuMS0zLjEtMy4xLTMuNWwwLDYuN0gyNS45eiIvPgo8L3N2Zz4=\";\r\n const initialState = {\r\n errors: {avatar: \"\"},\r\n imageBlob: null,\r\n filename: \"\",\r\n avatarUrl: currentAvatarUrl,\r\n avatarSrc: currentAvatarUrl,\r\n noAvatarSrc: noavatar\r\n };\r\n const [state, setState] = useState<AvatarFormState>(initialState);\r\n const { addAlert, addError } = useAlerts();\r\n\r\n const reader = new FileReader();\r\n let currentFilename = \"\";\r\n reader.onloadend = (event: any) => {\r\n var imgData = String(event.target!.result)\r\n imageScale(imgData, (blob: Blob) => {\r\n setState({\r\n errors: {avatar: \"\"},\r\n imageBlob: blob,\r\n filename: currentFilename,\r\n avatarUrl: currentAvatarUrl,\r\n avatarSrc: URL.createObjectURL(blob),\r\n noAvatarSrc: noavatar\r\n })\r\n })\r\n };\r\n\r\n const handleFileInputChange = (_: any, file: File) => {\r\n if (file != null && file.name != \"\") {\r\n if (file.type.startsWith(\"image\")) {\r\n currentFilename = file.name;\r\n reader.readAsDataURL(file);\r\n } else {\r\n console.error(\"Wrong file type: \" + file.type);\r\n }\r\n }\r\n };\r\n\r\n const handleClear = (_: any) => {\r\n setState(initialState);\r\n };\r\n\r\n const imageScale = (imgData: string, callback: any) => {\r\n var img = new Image()\r\n img.src = imgData\r\n img.onload = (event: Event) => {\r\n var canvas = document.createElement(\"canvas\")\r\n var ctx = canvas.getContext(\"2d\")\r\n ctx!.drawImage(img, 0, 0)\r\n\r\n var MAX_WIDTH = 250\r\n var MAX_HEIGHT = 250\r\n var width = img.width\r\n var height = img.height\r\n\r\n if (width > height) {\r\n if (width > MAX_WIDTH) {\r\n height *= MAX_WIDTH / width\r\n width = MAX_WIDTH\r\n }\r\n } else {\r\n if (height > MAX_HEIGHT) {\r\n width *= MAX_HEIGHT / height\r\n height = MAX_HEIGHT\r\n }\r\n }\r\n canvas.width = width\r\n canvas.height = height\r\n ctx = canvas.getContext(\"2d\")\r\n ctx!.drawImage(img, 0, 0, width, height)\r\n canvas.toBlob(callback)\r\n }\r\n }\r\n\r\n const handleSubmit = (event: React.FormEvent<HTMLFormElement>): void => {\r\n event.preventDefault()\r\n const form = event.target as HTMLFormElement\r\n var formData = new FormData(form)\r\n formData.append(\"image\", state.imageBlob)\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange = () => {\r\n if (xhr.readyState == 4) {\r\n if (200 <= xhr.status && xhr.status <= 204) {\r\n addAlert(t(\"avatarUpdatedMessage\"));\r\n // force reload avatar\r\n setState(initialState);\r\n } else {\r\n addError(xhr.response);\r\n }\r\n }\r\n }\r\n xhr.open(form.method, form.action, true);\r\n xhr.send(formData);\r\n }\r\n\r\n const handleError = (event: any) => {\r\n setState({\r\n errors: {avatar: t('error-noAvatarFound')},\r\n imageBlob: null,\r\n filename: \"\",\r\n avatarUrl: \"\",\r\n avatarSrc: \"\",\r\n noAvatarSrc: noavatar\r\n })\r\n };\r\n\r\n const { filename, avatarUrl, avatarSrc, noAvatarSrc } = state;\r\n const avatarStyle = {\r\n objectFit: 'cover',\r\n width: '150px', height: '150px',\r\n border: '1px solid lightgray',\r\n boxShadow: 'lightgray 6px 3px 10px 2px'\r\n } as CSSProperties;\r\n\r\n return (\r\n <Form id=\"avatarForm\" method=\"post\"\r\n action={avatarUrl} encType=\"multipart/form-data\"\r\n onSubmit={handleSubmit}\r\n >\r\n <FormGroup label={t('avatarLabel')} fieldId=\"avatar-current-or-preview\">\r\n <HelperText>\r\n {state.errors.avatar !== \"\"\r\n && <HelperTextItem variant=\"error\" hasIcon>{state.errors.avatar}</HelperTextItem>\r\n }\r\n </HelperText>\r\n { avatarSrc !== \"\"\r\n ? <Avatar src={avatarSrc} style={avatarStyle} alt=\"Avatar image preview\" onError={handleError}/>\r\n : <Avatar src={noAvatarSrc} style={avatarStyle} alt=\"No avatar found\" />\r\n }\r\n </FormGroup>\r\n <FormGroup\r\n fieldId=\"avatar-upload\"\r\n label={t('uploadLabel')}\r\n labelIcon={\r\n <HelpItem\r\n helpText={t(\"avatarInfo\")}\r\n fieldLabelId=\"uploadLabel\"\r\n />\r\n }\r\n >\r\n <FileUpload\r\n id=\"simple-file\"\r\n filename={filename}\r\n filenamePlaceholder={t('dragdropInfo')}\r\n browseButtonText={t('browseButton')}\r\n onFileInputChange={handleFileInputChange}\r\n clearButtonText={t('clearButton')}\r\n onClearClick={handleClear}\r\n />\r\n </FormGroup>\r\n <ActionGroup>\r\n <Button\r\n id=\"save-btn\" type=\"submit\"\r\n variant=\"primary\"\r\n isDisabled={filename === \"\"}\r\n >\r\n {t('doSave')}\r\n </Button>\r\n </ActionGroup>\r\n </Form>\r\n )\r\n};\r\n\r\nexport default AvatarForm;","import {\r\n PageSection,\r\n PageSectionVariants,\r\n} from \"@patternfly/react-core\";\r\nimport { useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { getSupportedLocales } from \"../api/methods\";\r\nimport { UserProfileMetadata } from \"../api/representations\";\r\nimport { Page } from \"../components/page/Page\";\r\nimport { useEnvironment } from \"../root/KeycloakContext\";\r\nimport { usePromise } from \"../utils/usePromise\";\r\nimport { AvatarForm } from './AvatarForm';\r\n\r\ninterface AccountExtraPageProps {\r\n}\r\n\r\ninterface AccountExtraPageState {\r\n isModalOpen: boolean;\r\n}\r\n\r\nexport const AccountExtraPage = () => {\r\n const { t } = useTranslation();\r\n const context = useEnvironment();\r\n const [userProfileMetadata, setUserProfileMetadata] = useState<UserProfileMetadata>();\r\n const [supportedLocales, setSupportedLocales] = useState<string[]>([]);\r\n const accountUrl = context.keycloak.createAccountUrl();\r\n\r\n usePromise(\r\n (signal) =>\r\n Promise.all([\r\n getSupportedLocales({ signal, context }),\r\n ]),\r\n ([supportedLocales]) => {\r\n setSupportedLocales(supportedLocales);\r\n },\r\n );\r\n\r\n return (\r\n <Page title={t('accountExtraInfoHtmlTitle')} description={t('accountExtraSubMessage')}>\r\n <PageSection isFilled variant={PageSectionVariants.light}>\r\n <AvatarForm accountUrl={accountUrl}></AvatarForm>\r\n </PageSection>\r\n </Page>\r\n );\r\n};\r\n\r\nexport default AccountExtraPage;\r\n"],"names":["styles","fileReaderType","readFile","fileHandle","type","resolve","reject","reader","FileUploadField","_a","id","name","value","filename","onBrowseButtonClick","onClearButtonClick","onTextAreaClick","onTextChange","onTextAreaBlur","textAreaPlaceholder","className","isDisabled","isReadOnly","isLoading","spinnerAriaValueText","isRequired","isDragActive","validated","ariaLabel","filenamePlaceholder","filenameAriaLabel","browseButtonText","clearButtonText","isClearButtonDisabled","containerRef","allowEditingUploadedText","hideDefaultPreview","children","props","__rest","onTextAreaChange","event","newValue","React","css","InputGroup","InputGroupItem","TextInput","Button","ButtonVariant","TextArea","TextAreResizeOrientation","Spinner","spinnerSize","ReactPropTypesSecret","ReactPropTypesSecret_1","require$$0","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","propName","componentName","location","propFullName","secret","err","getShim","ReactPropTypes","propTypesModule","COMMON_MIME_TYPES","toFileWithPath","file","path","f","withMimeType","webkitRelativePath","hasExtension","ext","FILES_TO_IGNORE","fromEvent","evt","__awaiter","__generator","isObject","isDataTransfer","getDataTransferFiles","isChangeEvt","getInputFiles","item","getFsHandleFiles","v","fromList","handles","files","h","dt","items","toFilePromises","noIgnoredFiles","flatten","i","fromDataTransferItem","entry","fromDirEntry","acc","__spreadArray","__read","fwp","fromEntry","fromFileEntry","entries","readEntries","_this","batch","err_1","_default","acceptedFiles","acceptedFilesArray","fileName","mimeType","baseMimeType","validType","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","iter","_arrayLikeToArray","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","source","key","_defineProperty","obj","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","o","minLen","n","len","arr2","_i","_arr","_n","_d","_s","_e","FILE_INVALID_TYPE","FILE_TOO_LARGE","FILE_TOO_SMALL","TOO_MANY_FILES","getInvalidTypeRejectionErr","accept","messageSuffix","getTooLargeRejectionErr","maxSize","getTooSmallRejectionErr","minSize","TOO_MANY_FILES_REJECTION","fileAccepted","isAcceptable","accepts","fileMatchSize","isDefined","allFilesAccepted","_ref","multiple","maxFiles","validator","_fileAccepted","_fileAccepted2","accepted","_fileMatchSize","_fileMatchSize2","sizeMatch","customErrors","isPropagationStopped","isEvtWithFiles","onDocumentDragOver","isIe","userAgent","isEdge","isIeOrEdge","composeEventHandlers","_len","fns","_key","_len2","args","_key2","fn","canUseFileSystemAccessAPI","pickerOptionsFromAccept","acceptForPicker","_ref2","_ref3","ok","isMIMEType","isExt","agg","_ref4","_ref5","acceptPropAsAcceptAttr","a","_ref6","_ref7","isAbort","isSecurityError","_excluded","_excluded2","_excluded3","_excluded4","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","sourceKeys","Dropzone","forwardRef","ref","params","_useDropzone","useDropzone","open","useImperativeHandle","Fragment","defaultProps","PropTypes","initialState","_defaultProps$props","disabled","getFilesFromEvent","onDragEnter","onDragLeave","onDragOver","onDrop","onDropAccepted","onDropRejected","onFileDialogCancel","onFileDialogOpen","useFsAccessApi","autoFocus","preventDropOnDocument","noClick","noKeyboard","noDrag","noDragEventsBubbling","onError","acceptAttr","useMemo","pickerTypes","onFileDialogOpenCb","noop","onFileDialogCancelCb","rootRef","useRef","inputRef","_useReducer","useReducer","reducer","_useReducer2","state","dispatch","isFocused","isFileDialogActive","fsAccessApiWorksRef","onWindowFocus","useEffect","dragTargetsRef","onDocumentDrop","onErrCb","useCallback","e","onDragEnterCb","stopPropagation","fileCount","isDragAccept","isDragReject","onDragOverCb","hasFiles","onDragLeaveCb","targets","targetIdx","setFiles","fileRejections","acceptError","sizeError","errors","onDropCb","openFileDialog","opts","onKeyDownCb","onFocusCb","onBlurCb","onClickCb","composeHandler","composeKeyboardHandler","composeDragHandler","getRootProps","_ref2$refKey","refKey","role","onKeyDown","onFocus","onBlur","onClick","rest","onInputElementClick","getInputProps","_ref3$refKey","onChange","inputProps","action","FileUpload","onFileInputChange","onReadStarted","onReadFinished","onReadFailed","onClearClick","onDataChange","dropzoneProps","data","error","rejectedFiles","setFileValue","oldInputProps","_b","rootProps","AvatarForm","accountUrl","t","useTranslation","useEnvironment","urlparts","currentAvatarUrl","noavatar","setState","useState","addAlert","addError","useAlerts","currentFilename","imgData","imageScale","blob","handleFileInputChange","_","handleClear","callback","img","canvas","ctx","MAX_WIDTH","MAX_HEIGHT","width","height","handleSubmit","form","formData","xhr","handleError","avatarUrl","avatarSrc","noAvatarSrc","avatarStyle","jsxs","Form","FormGroup","jsx","HelperText","HelperTextItem","Avatar","HelpItem","ActionGroup","AccountExtraPage","context","supportedLocales","setSupportedLocales","usePromise","signal","getSupportedLocales","Page","PageSection","PageSectionVariants"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11]}