All Downloads are FREE. Search and download functionalities are using the official Maven repository.

theme.keycloak.v2.admin.resources.assets.FileUpload-2469f593.js.map Maven / Gradle / Ivy

There is a newer version: 25.0.1
Show newest version
{"version":3,"file":"FileUpload-2469f593.js","sources":["../../../../node_modules/.pnpm/@[email protected]/node_modules/@patternfly/react-styles/css/components/FileUpload/file-upload.mjs","../../../../node_modules/.pnpm/[email protected]/node_modules/file-selector/dist/es5/file.js","../../../../node_modules/.pnpm/[email protected]/node_modules/file-selector/dist/es5/file-selector.js","../../../../node_modules/.pnpm/[email protected]/node_modules/attr-accept/dist/es/index.js","../../../../node_modules/.pnpm/[email protected][email protected]/node_modules/react-dropzone/dist/es/utils/index.js","../../../../node_modules/.pnpm/[email protected][email protected]/node_modules/react-dropzone/dist/es/index.js","../../src/components/json-file-upload/patternfly/fileUtils.ts","../../src/components/json-file-upload/patternfly/FileUploadField.tsx","../../src/components/json-file-upload/patternfly/FileUpload.tsx"],"sourcesContent":["import './file-upload.css';\nexport default {\n  \"button\": \"pf-c-button\",\n  \"fileUpload\": \"pf-c-file-upload\",\n  \"fileUploadFileDetails\": \"pf-c-file-upload__file-details\",\n  \"fileUploadFileDetailsSpinner\": \"pf-c-file-upload__file-details-spinner\",\n  \"fileUploadFileSelect\": \"pf-c-file-upload__file-select\",\n  \"formControl\": \"pf-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 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  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.} 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 * \n *   {({getRootProps, getInputProps}) => (\n *     
\n * \n *

Drag 'n' drop some files here, or click to select files

\n *
\n * )}\n *
\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 `` 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)}\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 *
\n * \n *

Drag and drop some files here, or click to select files

\n *
\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 `` 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}\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 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\";","export enum fileReaderType {\n text = \"text\",\n dataURL = \"dataURL\",\n}\n\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: File, type: fileReaderType) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = () => resolve(reader.result);\n reader.onerror = () => reject(reader.error);\n\n switch (type) {\n case fileReaderType.text:\n reader.readAsText(fileHandle);\n break;\n case fileReaderType.dataURL:\n reader.readAsDataURL(fileHandle);\n break;\n default:\n reject(\"unknown type\");\n }\n });\n}\n","import {\n Button,\n ButtonVariant,\n InputGroup,\n Spinner,\n spinnerSize,\n TextArea,\n TextAreResizeOrientation,\n TextInput,\n} from \"@patternfly/react-core\";\nimport { css } from \"@patternfly/react-styles\";\nimport styles from \"@patternfly/react-styles/css/components/FileUpload/file-upload\";\nimport { PropsWithChildren } from \"react\";\n\nimport { fileReaderType } from \"./fileUtils\";\n\nexport interface FileUploadFieldProps\n extends Omit, \"value\" | \"onChange\"> {\n /** Unique id for the TextArea, also used to generate ids for accessible labels */\n id: string;\n /** What type of file. Determines what is is expected by `value`\n * (a string for 'text' and 'dataURL', or a File object otherwise). */\n type?: \"text\" | \"dataURL\";\n /** Value of the file's contents\n * (string if text file, File object otherwise) */\n value?: string | File;\n /** Value to be shown in the read-only filename field. */\n filename?: string;\n /** A callback for when the TextArea value changes. */\n onChange?: (\n value: string,\n filename: string,\n event:\n | React.ChangeEvent // User typed in the TextArea\n | React.MouseEvent // User clicked Clear button\n ) => void;\n /** Additional classes added to the FileUploadField container element. */\n className?: string;\n /** Flag to show if the field is disabled. */\n isDisabled?: boolean;\n /** Flag to show if the field is read only. */\n isReadOnly?: boolean;\n /** Flag to show if a file is being loaded. */\n isLoading?: boolean;\n /** Aria-valuetext for the loading spinner */\n spinnerAriaValueText?: string;\n /** Flag to show if the field is required. */\n isRequired?: boolean;\n /** Value to indicate if the field is modified to show that validation state.\n * If set to success, field will be modified to indicate valid state.\n * If set to error, field will be modified to indicate error state.\n */\n validated?: \"success\" | \"error\" | \"default\";\n /** Aria-label for the TextArea. */\n \"aria-label\"?: string;\n /** Placeholder string to display in the empty filename field */\n filenamePlaceholder?: string;\n /** Aria-label for the read-only filename field */\n filenameAriaLabel?: string;\n /** Text for the Browse button */\n browseButtonText?: string;\n /** Text for the Clear button */\n clearButtonText?: string;\n /** Flag to disable the Clear button */\n isClearButtonDisabled?: boolean;\n /** Flag to hide the built-in preview of the file (where available).\n * If true, you can use children to render an alternate preview. */\n hideDefaultPreview?: boolean;\n /** Flag to allow editing of a text file's contents after it is selected from disk */\n allowEditingUploadedText?: boolean;\n /** Additional children to render after (or instead of) the file preview. */\n children?: React.ReactNode;\n\n // Props available in FileUploadField but not FileUpload:\n\n /** A callback for when the Browse button is clicked. */\n onBrowseButtonClick?: (\n event: React.MouseEvent\n ) => void;\n /** A callback for when the Clear button is clicked. */\n onClearButtonClick?: (\n event: React.MouseEvent\n ) => void;\n /** A callback from when the text area is clicked. Can also be set via the onClick property of FileUpload. */\n onTextAreaClick?: (\n event: React.MouseEvent\n ) => void;\n /** Flag to show if a file is being dragged over the field */\n isDragActive?: boolean;\n /** A reference object to attach to the FileUploadField container element. */\n containerRef?: React.Ref;\n /** Text area text changed */\n onTextChange?: (text: string) => void;\n}\n\nexport const FileUploadField = ({\n id,\n type,\n value = \"\",\n filename = \"\",\n onChange,\n onBrowseButtonClick,\n onClearButtonClick,\n onTextAreaClick,\n onTextChange,\n className = \"\",\n isDisabled = false,\n isReadOnly = false,\n isLoading = false,\n spinnerAriaValueText,\n isRequired = false,\n isDragActive = false,\n validated = \"default\" as \"success\" | \"error\" | \"default\",\n \"aria-label\": ariaLabel = \"File upload\",\n filenamePlaceholder = \"Drag a file here or browse to upload\",\n filenameAriaLabel = filename ? \"Read only filename\" : filenamePlaceholder,\n browseButtonText = \"Browse...\",\n clearButtonText = \"Clear\",\n isClearButtonDisabled = !filename && !value,\n containerRef = null as React.Ref,\n allowEditingUploadedText = false,\n hideDefaultPreview = false,\n children = null,\n\n ...props\n}: PropsWithChildren) => {\n const onTextAreaChange = (\n newValue: string,\n event: React.ChangeEvent\n ) => {\n onChange?.(newValue, filename, event);\n onTextChange?.(newValue);\n };\n return (\n \n
\n \n \n \n {browseButtonText}\n \n \n {clearButtonText}\n \n \n
\n
\n {!hideDefaultPreview && type === fileReaderType.text && (\n \n )}\n {isLoading && (\n
\n \n
\n )}\n
\n {children}\n
\n );\n};\nFileUploadField.displayName = \"FileUploadField\";\n","import { fromEvent } from \"file-selector\";\nimport { PropsWithChildren } from \"react\";\nimport {\n DropEvent,\n DropzoneInputProps,\n DropzoneOptions,\n FileRejection,\n useDropzone,\n} from \"react-dropzone\";\n\nimport { FileUploadField, FileUploadFieldProps } from \"./FileUploadField\";\nimport { fileReaderType, readFile } from \"./fileUtils\";\n\nexport interface FileUploadProps\n extends Omit<\n FileUploadFieldProps,\n | \"children\"\n | \"onBrowseButtonClick\"\n | \"onClearButtonClick\"\n | \"isDragActive\"\n | \"containerRef\"\n > {\n /** Unique id for the TextArea, also used to generate ids for accessible labels. */\n id: string;\n /** What type of file. Determines what is is passed to `onChange` and expected by `value`\n * (a string for 'text' and 'dataURL', or a File object otherwise. */\n type?: \"text\" | \"dataURL\";\n /** Value of the file's contents\n * (string if text file, File object otherwise) */\n value?: string | File;\n /** Value to be shown in the read-only filename field. */\n filename?: string;\n /** @deprecated A callback for when the file contents change. Please instead use onFileInputChange, onTextChange, onDataChange, onClearClick individually. */\n onChange?: (\n value: string | File,\n filename: string,\n event:\n | React.MouseEvent // Clear button was clicked\n | React.ChangeEvent // User typed in the TextArea\n | DropEvent\n ) => void;\n /** Change event emitted from the hidden \\ field associated with the component */\n onFileInputChange?: (event: DropEvent, file: File) => void;\n /** Callback for clicking on the FileUploadField text area. By default, prevents a click in the text area from opening file dialog. */\n onClick?: (event: React.MouseEvent) => void;\n /** Additional classes added to the FileUpload container element. */\n className?: string;\n /** Flag to show if the field is disabled. */\n isDisabled?: boolean;\n /** Flag to show if the field is read only. */\n isReadOnly?: boolean;\n /** Flag to show if a file is being loaded. */\n isLoading?: boolean;\n /** Aria-valuetext for the loading spinner */\n spinnerAriaValueText?: string;\n /** Flag to show if the field is required. */\n isRequired?: boolean;\n /** Value to indicate if the field is modified to show that validation state.\n * If set to success, field will be modified to indicate valid state.\n * If set to error, field will be modified to indicate error state.\n */\n validated?: \"success\" | \"error\" | \"default\";\n /** Aria-label for the TextArea. */\n \"aria-label\"?: string;\n /** Placeholder string to display in the empty filename field */\n filenamePlaceholder?: string;\n /** Aria-label for the read-only filename field */\n filenameAriaLabel?: string;\n /** Text for the Browse button */\n browseButtonText?: string;\n /** Text for the Clear button */\n clearButtonText?: string;\n /** Flag to hide the built-in preview of the file (where available).\n * If true, you can use children to render an alternate preview. */\n hideDefaultPreview?: boolean;\n /** Flag to allow editing of a text file's contents after it is selected from disk */\n allowEditingUploadedText?: boolean;\n /** Additional children to render after (or instead of) the file preview. */\n children?: React.ReactNode;\n\n // Props available in FileUpload but not FileUploadField:\n\n /** A callback for when a selected file starts loading */\n onReadStarted?: (fileHandle: File) => void;\n /** A callback for when a selected file finishes loading */\n onReadFinished?: (fileHandle: File) => void;\n /** A callback for when the FileReader API fails */\n onReadFailed?: (error: DOMException, fileHandle: File) => void;\n /** Optional extra props to customize react-dropzone. */\n dropzoneProps?: DropzoneOptions;\n /** Clear button was clicked */\n onClearClick?: React.MouseEventHandler;\n /** Text area text changed */\n onTextChange?: (text: string) => void;\n /** On data changed - if type='text' or type='dataURL' and file was loaded it will call this method */\n onDataChange?: (data: string) => void;\n}\n\nexport const FileUpload = ({\n id,\n type,\n value = type === fileReaderType.text || type === fileReaderType.dataURL\n ? \"\"\n : undefined,\n filename = \"\",\n children = null,\n onChange,\n onFileInputChange,\n onReadStarted,\n onReadFinished,\n onReadFailed,\n onClearClick,\n onClick = (event) => event.preventDefault(),\n onTextChange,\n onDataChange,\n dropzoneProps = {},\n ...props\n}: PropsWithChildren) => {\n const onDropAccepted = (acceptedFiles: File[], event: DropEvent) => {\n if (acceptedFiles.length > 0) {\n const fileHandle = acceptedFiles[0];\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (event?.type === \"drop\") {\n onFileInputChange?.(event, fileHandle);\n }\n if (type === fileReaderType.text || type === fileReaderType.dataURL) {\n onChange?.(\"\", fileHandle.name, event); // Show the filename while reading\n onReadStarted?.(fileHandle);\n readFile(fileHandle, type as fileReaderType)\n .then((data) => {\n onReadFinished?.(fileHandle);\n onChange?.(data as string, fileHandle.name, event);\n onDataChange?.(data as string);\n })\n .catch((error: DOMException) => {\n onReadFailed?.(error, fileHandle);\n onReadFinished?.(fileHandle);\n onChange?.(\"\", \"\", event); // Clear the filename field on a failure\n onDataChange?.(\"\");\n });\n } else {\n onChange?.(fileHandle, fileHandle.name, event);\n }\n }\n dropzoneProps.onDropAccepted?.(acceptedFiles, event);\n };\n\n const onDropRejected = (rejectedFiles: FileRejection[], event: DropEvent) => {\n if (rejectedFiles.length > 0) {\n onChange?.(\"\", rejectedFiles[0].file.name, event);\n }\n\n dropzoneProps.onDropRejected?.(rejectedFiles, event);\n };\n\n const onClearButtonClick = (\n event: React.MouseEvent\n ) => {\n onChange?.(\"\", \"\", event);\n onClearClick?.(event);\n setFileValue(\"\");\n };\n\n const { getRootProps, getInputProps, isDragActive, open, inputRef } =\n useDropzone({\n multiple: false,\n ...dropzoneProps,\n onDropAccepted,\n onDropRejected,\n });\n\n const setFileValue = (filename: string) => {\n if (!inputRef.current) {\n return;\n }\n\n inputRef.current.value = filename;\n };\n\n const oldInputProps = getInputProps();\n const inputProps: DropzoneInputProps = {\n ...oldInputProps,\n onChange: async (e: React.ChangeEvent) => {\n oldInputProps.onChange?.(e);\n const files = await fromEvent(e.nativeEvent);\n if (files.length === 1) {\n onFileInputChange?.(e, files[0] as File);\n }\n },\n };\n\n return (\n event.preventDefault(),\n })}\n tabIndex={undefined} // Omit the unwanted tabIndex from react-dropzone's getRootProps\n id={id}\n type={type}\n filename={filename}\n value={value}\n onChange={onChange}\n isDragActive={isDragActive}\n onBrowseButtonClick={open}\n onClearButtonClick={onClearButtonClick}\n onTextAreaClick={onClick}\n onTextChange={onTextChange}\n onClick={(e) => e.stopPropagation()}\n >\n \n {children}\n \n );\n};\n\nFileUpload.displayName = \"FileUpload\";\n"],"names":["styles","COMMON_MIME_TYPES","toFileWithPath","file","path","f","withMimeType","webkitRelativePath","name","hasExtension","ext","type","FILES_TO_IGNORE","fromEvent","evt","__awaiter","__generator","_a","isObject","isDataTransfer","getDataTransferFiles","isChangeEvt","getInputFiles","item","getFsHandleFiles","value","v","fromList","handles","files","h","dt","items","toFilePromises","noIgnoredFiles","flatten","i","fromDataTransferItem","entry","fromDirEntry","acc","__spreadArray","__read","fwp","fromEntry","fromFileEntry","reader","resolve","reject","entries","readEntries","_this","batch","err_1","err","_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","event","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","children","params","_useDropzone","useDropzone","open","props","useImperativeHandle","React","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","fileReaderType","readFile","fileHandle","FileUploadField","id","filename","onBrowseButtonClick","onClearButtonClick","onTextAreaClick","onTextChange","className","isDisabled","isReadOnly","isLoading","spinnerAriaValueText","isRequired","isDragActive","validated","ariaLabel","filenamePlaceholder","filenameAriaLabel","browseButtonText","clearButtonText","isClearButtonDisabled","containerRef","allowEditingUploadedText","hideDefaultPreview","onTextAreaChange","newValue","jsxs","css","jsx","InputGroup","TextInput","Button","ButtonVariant","TextArea","TextAreResizeOrientation","Spinner","spinnerSize","FileUpload","onFileInputChange","onReadStarted","onReadFinished","onReadFailed","onClearClick","onDataChange","dropzoneProps","data","error","rejectedFiles","setFileValue","oldInputProps"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}



© 2015 - 2024 Weber Informatics LLC | Privacy Policy