{"version":3,"file":"use-file-picker-L70Tst4A.js","sources":["../../node_modules/use-file-picker/dist/_rollupPluginBabelHelpers-4e04b055.js","../../node_modules/use-file-picker/dist/index.esm.js","../../node_modules/use-file-picker/dist/validators.esm.js"],"sourcesContent":["function _regeneratorRuntime() {\n _regeneratorRuntime = function () {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function (obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == typeof value && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator.return && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function (skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function () {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function (exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function (type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function (record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function (finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n catch: function (tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function (iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure \" + obj);\n}\n\nexport { _asyncToGenerator as _, _regeneratorRuntime as a, _extends as b, _objectDestructuringEmpty as c, _inheritsLoose as d };\n//# sourceMappingURL=_rollupPluginBabelHelpers-4e04b055.js.map\n","import { _ as _asyncToGenerator, a as _regeneratorRuntime, b as _extends, c as _objectDestructuringEmpty } from './_rollupPluginBabelHelpers-4e04b055.js';\nimport { useCallback, useState } from 'react';\nimport { fromEvent } from 'file-selector';\n\nfunction openFileDialog(accept, multiple, callback, initializeWithCustomAttributes) {\n // this function must be called from a user\n // activation event (ie an onclick event)\n // Create an input element\n var inputElement = document.createElement('input');\n // Hide element and append to body (required to run on iOS safari)\n inputElement.style.display = 'none';\n document.body.appendChild(inputElement);\n // Set its type to file\n inputElement.type = 'file';\n // Set accept to the file types you want the user to select.\n // Include both the file extension and the mime type\n // if accept is \"*\" then dont set the accept attribute\n if (accept !== '*') inputElement.accept = accept;\n // Accept multiple files\n inputElement.multiple = multiple;\n // set onchange event to call callback when user has selected file\n //inputElement.addEventListener('change', callback);\n inputElement.addEventListener('change', function (arg) {\n callback(arg);\n // remove element\n document.body.removeChild(inputElement);\n });\n if (initializeWithCustomAttributes) {\n initializeWithCustomAttributes(inputElement);\n }\n // dispatch a click event to open the file dialog\n inputElement.dispatchEvent(new MouseEvent('click'));\n}\n\nvar useValidators = function useValidators(_ref) {\n var onFilesSelectedProp = _ref.onFilesSelected,\n onFilesSuccessfullySelectedProp = _ref.onFilesSuccessfullySelected,\n onFilesRejectedProp = _ref.onFilesRejected,\n onClearProp = _ref.onClear,\n validators = _ref.validators;\n // setup validators' event handlers\n var onFilesSelected = useCallback(function (data) {\n onFilesSelectedProp == null ? void 0 : onFilesSelectedProp(data);\n validators == null ? void 0 : validators.forEach(function (validator) {\n validator.onFilesSelected(data);\n });\n }, [onFilesSelectedProp, validators]);\n var onFilesSuccessfullySelected = useCallback(function (data) {\n onFilesSuccessfullySelectedProp == null ? void 0 : onFilesSuccessfullySelectedProp(data);\n validators == null ? void 0 : validators.forEach(function (validator) {\n validator.onFilesSuccessfullySelected(data);\n });\n }, [validators, onFilesSuccessfullySelectedProp]);\n var onFilesRejected = useCallback(function (errors) {\n onFilesRejectedProp == null ? void 0 : onFilesRejectedProp(errors);\n validators == null ? void 0 : validators.forEach(function (validator) {\n validator.onFilesRejected(errors);\n });\n }, [validators, onFilesRejectedProp]);\n var onClear = useCallback(function () {\n onClearProp == null ? void 0 : onClearProp();\n validators == null ? void 0 : validators.forEach(function (validator) {\n validator.onClear == null ? void 0 : validator.onClear();\n });\n }, [validators, onClearProp]);\n return {\n onFilesSelected: onFilesSelected,\n onFilesSuccessfullySelected: onFilesSuccessfullySelected,\n onFilesRejected: onFilesRejected,\n onClear: onClear\n };\n};\n\n// empty array reference in order to avoid re-renders when no validators are passed as props\nvar EMPTY_ARRAY = [];\nfunction useFilePicker(props) {\n var _props$accept = props.accept,\n accept = _props$accept === void 0 ? '*' : _props$accept,\n _props$multiple = props.multiple,\n multiple = _props$multiple === void 0 ? true : _props$multiple,\n _props$readAs = props.readAs,\n readAs = _props$readAs === void 0 ? 'Text' : _props$readAs,\n _props$readFilesConte = props.readFilesContent,\n readFilesContent = _props$readFilesConte === void 0 ? true : _props$readFilesConte,\n _props$validators = props.validators,\n validators = _props$validators === void 0 ? EMPTY_ARRAY : _props$validators,\n initializeWithCustomParameters = props.initializeWithCustomParameters;\n var _useState = useState([]),\n plainFiles = _useState[0],\n setPlainFiles = _useState[1];\n var _useState2 = useState([]),\n filesContent = _useState2[0],\n setFilesContent = _useState2[1];\n var _useState3 = useState([]),\n fileErrors = _useState3[0],\n setFileErrors = _useState3[1];\n var _useState4 = useState(false),\n loading = _useState4[0],\n setLoading = _useState4[1];\n var _useValidators = useValidators(props),\n onFilesSelected = _useValidators.onFilesSelected,\n onFilesSuccessfullySelected = _useValidators.onFilesSuccessfullySelected,\n onFilesRejected = _useValidators.onFilesRejected,\n onClear = _useValidators.onClear;\n var clear = useCallback(function () {\n setPlainFiles([]);\n setFilesContent([]);\n setFileErrors([]);\n }, []);\n var clearWithEventListener = useCallback(function () {\n clear();\n onClear == null ? void 0 : onClear();\n }, [clear, onClear]);\n var parseFile = useCallback(function (file) {\n return new Promise( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(resolve, reject) {\n var reader, readStrategy, addError;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n reader = new FileReader(); //availible reader methods: readAsText, readAsBinaryString, readAsArrayBuffer, readAsDataURL\n readStrategy = reader[\"readAs\" + readAs];\n readStrategy.call(reader, file);\n addError = function addError(_ref2) {\n var others = _extends({}, (_objectDestructuringEmpty(_ref2), _ref2));\n reject(_extends({}, others));\n };\n reader.onload = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\", Promise.all(validators.map(function (validator) {\n return validator.validateAfterParsing(props, file, reader)[\"catch\"](function (err) {\n return Promise.reject(addError(err));\n });\n })).then(function () {\n return resolve(_extends({}, file, {\n content: reader.result,\n name: file.name,\n lastModified: file.lastModified\n }));\n })[\"catch\"](function () {}));\n case 1:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n reader.onerror = function () {\n addError({\n name: 'FileReaderError',\n readerError: reader.error,\n causedByFile: file\n });\n };\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n }, [props, readAs, validators]);\n var openFilePicker = useCallback(function () {\n var fileExtensions = accept instanceof Array ? accept.join(',') : accept;\n openFileDialog(fileExtensions, multiple, /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(evt) {\n var inputElement, plainFileObjects, validationsBeforeParsing, files, validationsAfterParsing, filesContent;\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n clear();\n inputElement = evt.target;\n plainFileObjects = inputElement.files ? Array.from(inputElement.files) : [];\n setLoading(true);\n _context3.next = 6;\n return Promise.all(validators.map(function (validator) {\n return validator.validateBeforeParsing(props, plainFileObjects)[\"catch\"](function (err) {\n return Array.isArray(err) ? err : [err];\n });\n }));\n case 6:\n validationsBeforeParsing = _context3.sent.flat(1).filter(Boolean);\n setPlainFiles(plainFileObjects);\n setFileErrors(validationsBeforeParsing);\n if (!validationsBeforeParsing.length) {\n _context3.next = 15;\n break;\n }\n setLoading(false);\n setPlainFiles([]);\n onFilesRejected == null ? void 0 : onFilesRejected({\n errors: validationsBeforeParsing\n });\n onFilesSelected == null ? void 0 : onFilesSelected({\n errors: validationsBeforeParsing\n });\n return _context3.abrupt(\"return\");\n case 15:\n if (readFilesContent) {\n _context3.next = 19;\n break;\n }\n setLoading(false);\n onFilesSelected == null ? void 0 : onFilesSelected({\n plainFiles: plainFileObjects,\n filesContent: []\n });\n return _context3.abrupt(\"return\");\n case 19:\n _context3.next = 21;\n return fromEvent(evt);\n case 21:\n files = _context3.sent;\n validationsAfterParsing = [];\n _context3.next = 25;\n return Promise.all(files.map(function (file) {\n return parseFile(file)[\"catch\"](function (fileError) {\n validationsAfterParsing.push.apply(validationsAfterParsing, Array.isArray(fileError) ? fileError : [fileError]);\n });\n }));\n case 25:\n filesContent = _context3.sent;\n setLoading(false);\n if (!validationsAfterParsing.length) {\n _context3.next = 34;\n break;\n }\n setPlainFiles([]);\n setFilesContent([]);\n setFileErrors(function (errors) {\n return [].concat(errors, validationsAfterParsing);\n });\n onFilesRejected == null ? void 0 : onFilesRejected({\n errors: validationsAfterParsing\n });\n onFilesSelected == null ? void 0 : onFilesSelected({\n errors: validationsBeforeParsing.concat(validationsAfterParsing)\n });\n return _context3.abrupt(\"return\");\n case 34:\n setFilesContent(filesContent);\n setPlainFiles(plainFileObjects);\n setFileErrors([]);\n onFilesSuccessfullySelected == null ? void 0 : onFilesSuccessfullySelected({\n filesContent: filesContent,\n plainFiles: plainFileObjects\n });\n onFilesSelected == null ? void 0 : onFilesSelected({\n plainFiles: plainFileObjects,\n filesContent: filesContent\n });\n case 39:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n return function (_x3) {\n return _ref4.apply(this, arguments);\n };\n }(), initializeWithCustomParameters);\n }, [props, accept, clear, initializeWithCustomParameters, multiple, onFilesRejected, onFilesSelected, onFilesSuccessfullySelected, parseFile, readFilesContent, validators]);\n return {\n openFilePicker: openFilePicker,\n filesContent: filesContent,\n errors: fileErrors,\n loading: loading,\n plainFiles: plainFiles,\n clear: clearWithEventListener\n };\n}\n\n/**\n * A version of useFilePicker hook that keeps selected files between selections. On top of that it allows to remove files from the selection.\n */\nfunction useImperativeFilePicker(props) {\n var _onFilesSelected = props.onFilesSelected,\n _onFilesSuccessfullySelected = props.onFilesSuccessfullySelected,\n validators = props.validators,\n onFileRemoved = props.onFileRemoved;\n var _useState = useState([]),\n allPlainFiles = _useState[0],\n setAllPlainFiles = _useState[1];\n var _useState2 = useState([]),\n allFilesContent = _useState2[0],\n setAllFilesContent = _useState2[1];\n var _useFilePicker = useFilePicker(_extends({}, props, {\n onFilesSelected: function onFilesSelected(data) {\n var _data$errors;\n if (!_onFilesSelected) return;\n if ((_data$errors = data.errors) != null && _data$errors.length) {\n return _onFilesSelected(data);\n }\n // override the files property to return all files that were selected previously and in the current batch\n _onFilesSelected({\n errors: undefined,\n plainFiles: [].concat(allPlainFiles, data.plainFiles || []),\n filesContent: [].concat(allFilesContent, data.filesContent || [])\n });\n },\n onFilesSuccessfullySelected: function onFilesSuccessfullySelected(data) {\n setAllPlainFiles(function (previousPlainFiles) {\n return previousPlainFiles.concat(data.plainFiles);\n });\n setAllFilesContent(function (previousFilesContent) {\n return previousFilesContent.concat(data.filesContent);\n });\n if (!_onFilesSuccessfullySelected) return;\n // override the files property to return all files that were selected previously and in the current batch\n _onFilesSuccessfullySelected({\n plainFiles: [].concat(allPlainFiles, data.plainFiles || []),\n filesContent: [].concat(allFilesContent, data.filesContent || [])\n });\n }\n })),\n openFilePicker = _useFilePicker.openFilePicker,\n loading = _useFilePicker.loading,\n errors = _useFilePicker.errors,\n clear = _useFilePicker.clear;\n var clearAll = useCallback(function () {\n clear();\n // clear previous files\n setAllPlainFiles([]);\n setAllFilesContent([]);\n }, [clear]);\n var removeFileByIndex = useCallback(function (index) {\n setAllFilesContent(function (previousFilesContent) {\n return [].concat(previousFilesContent.slice(0, index), previousFilesContent.slice(index + 1));\n });\n setAllPlainFiles(function (previousPlainFiles) {\n var removedFile = previousPlainFiles[index];\n validators == null ? void 0 : validators.forEach(function (validator) {\n return validator.onFileRemoved == null ? void 0 : validator.onFileRemoved(removedFile, index);\n });\n onFileRemoved == null ? void 0 : onFileRemoved(removedFile, index);\n return [].concat(previousPlainFiles.slice(0, index), previousPlainFiles.slice(index + 1));\n });\n }, [validators, onFileRemoved]);\n var removeFileByReference = useCallback(function (file) {\n var index = allPlainFiles.findIndex(function (f) {\n return f === file;\n });\n if (index === -1) return;\n removeFileByIndex(index);\n }, [removeFileByIndex, allPlainFiles]);\n return {\n openFilePicker: openFilePicker,\n plainFiles: allPlainFiles,\n filesContent: allFilesContent,\n loading: loading,\n errors: errors,\n clear: clearAll,\n removeFileByIndex: removeFileByIndex,\n removeFileByReference: removeFileByReference\n };\n}\n\nexport { useFilePicker, useImperativeFilePicker };\n//# sourceMappingURL=index.esm.js.map\n","import { d as _inheritsLoose, _ as _asyncToGenerator, a as _regeneratorRuntime } from './_rollupPluginBabelHelpers-4e04b055.js';\n\nvar Validator = /*#__PURE__*/function () {\n function Validator() {\n this.invokerHookId = void 0;\n }\n var _proto = Validator.prototype;\n /**\n * lifecycle method called after user selection (regardless of validation result)\n */\n _proto.onFilesSelected = function onFilesSelected(_data) {}\n /**\n * lifecycle method called after successful validation\n */;\n _proto.onFilesSuccessfullySelected = function onFilesSuccessfullySelected(_data) {}\n /**\n * lifecycle method called after failed validation\n */;\n _proto.onFilesRejected = function onFilesRejected(_data) {}\n /**\n * lifecycle method called after the selection is cleared\n */;\n _proto.onClear = function onClear() {}\n /**\n * This method is called when file is removed from the list of selected files.\n * Invoked only by the useImperativeFilePicker hook\n * @param _removedFile removed file\n * @param _removedIndex index of removed file\n */;\n _proto.onFileRemoved = function onFileRemoved(_removedFile, _removedIndex) {};\n return Validator;\n}();\n\nvar FileAmountLimitValidator = /*#__PURE__*/function (_Validator) {\n _inheritsLoose(FileAmountLimitValidator, _Validator);\n function FileAmountLimitValidator(limitAmountOfFilesConfig) {\n var _this;\n _this = _Validator.call(this) || this;\n _this.limitAmountOfFilesConfig = void 0;\n _this.limitAmountOfFilesConfig = limitAmountOfFilesConfig;\n return _this;\n }\n var _proto = FileAmountLimitValidator.prototype;\n _proto.validateBeforeParsing = function validateBeforeParsing(_config, plainFiles) {\n var _this$limitAmountOfFi = this.limitAmountOfFilesConfig,\n min = _this$limitAmountOfFi.min,\n max = _this$limitAmountOfFi.max;\n if (max && plainFiles.length > max) {\n return Promise.reject({\n name: 'FileAmountLimitError',\n reason: 'MAX_AMOUNT_OF_FILES_EXCEEDED'\n });\n }\n if (min && plainFiles.length < min) {\n return Promise.reject({\n name: 'FileAmountLimitError',\n reason: 'MIN_AMOUNT_OF_FILES_NOT_REACHED'\n });\n }\n return Promise.resolve();\n };\n _proto.validateAfterParsing = function validateAfterParsing() {\n return Promise.resolve();\n };\n return FileAmountLimitValidator;\n}(Validator);\n\nvar FileSizeValidator = /*#__PURE__*/function (_Validator) {\n _inheritsLoose(FileSizeValidator, _Validator);\n function FileSizeValidator(fileSizeRestrictions) {\n var _this;\n _this = _Validator.call(this) || this;\n _this.fileSizeRestrictions = void 0;\n _this.fileSizeRestrictions = fileSizeRestrictions;\n return _this;\n }\n var _proto = FileSizeValidator.prototype;\n _proto.validateBeforeParsing = /*#__PURE__*/function () {\n var _validateBeforeParsing = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_config, plainFiles) {\n var _this$fileSizeRestric, minFileSize, maxFileSize, errors;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _this$fileSizeRestric = this.fileSizeRestrictions, minFileSize = _this$fileSizeRestric.minFileSize, maxFileSize = _this$fileSizeRestric.maxFileSize;\n if (!(!minFileSize && !maxFileSize)) {\n _context.next = 3;\n break;\n }\n return _context.abrupt(\"return\", Promise.resolve());\n case 3:\n errors = plainFiles.map(function (file) {\n return getFileSizeError({\n minFileSize: minFileSize,\n maxFileSize: maxFileSize,\n file: file\n });\n }).filter(function (error) {\n return !!error;\n });\n return _context.abrupt(\"return\", errors.length > 0 ? Promise.reject(errors) : Promise.resolve());\n case 5:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function validateBeforeParsing(_x, _x2) {\n return _validateBeforeParsing.apply(this, arguments);\n }\n return validateBeforeParsing;\n }();\n _proto.validateAfterParsing = /*#__PURE__*/function () {\n var _validateAfterParsing = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_config, _file) {\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt(\"return\", Promise.resolve());\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n function validateAfterParsing(_x3, _x4) {\n return _validateAfterParsing.apply(this, arguments);\n }\n return validateAfterParsing;\n }();\n return FileSizeValidator;\n}(Validator);\nvar getFileSizeError = function getFileSizeError(_ref) {\n var file = _ref.file,\n maxFileSize = _ref.maxFileSize,\n minFileSize = _ref.minFileSize;\n if (minFileSize) {\n var minBytes = minFileSize;\n if (file.size < minBytes) {\n return {\n name: 'FileSizeError',\n reason: 'FILE_SIZE_TOO_SMALL',\n causedByFile: file\n };\n }\n }\n if (maxFileSize) {\n var maxBytes = maxFileSize;\n if (file.size > maxBytes) {\n return {\n name: 'FileSizeError',\n reason: 'FILE_SIZE_TOO_LARGE',\n causedByFile: file\n };\n }\n }\n};\n\nvar ImageDimensionsValidator = /*#__PURE__*/function (_Validator) {\n _inheritsLoose(ImageDimensionsValidator, _Validator);\n function ImageDimensionsValidator(imageSizeRestrictions) {\n var _this;\n _this = _Validator.call(this) || this;\n _this.imageSizeRestrictions = void 0;\n _this.imageSizeRestrictions = imageSizeRestrictions;\n return _this;\n }\n var _proto = ImageDimensionsValidator.prototype;\n _proto.validateBeforeParsing = function validateBeforeParsing() {\n return Promise.resolve();\n };\n _proto.validateAfterParsing = function validateAfterParsing(config, file, reader) {\n var readAs = config.readAs;\n if (readAs === 'DataURL' && this.imageSizeRestrictions && isImage(file.type)) {\n return checkImageDimensions(file, reader.result, this.imageSizeRestrictions);\n }\n return Promise.resolve();\n };\n return ImageDimensionsValidator;\n}(Validator);\nvar isImage = function isImage(fileType) {\n return fileType.startsWith('image');\n};\nvar checkImageDimensions = function checkImageDimensions(file, imgDataURL, imageSizeRestrictions) {\n return new Promise(function (resolve, reject) {\n var img = new Image();\n var error = {\n name: 'ImageDimensionError',\n causedByFile: file,\n reasons: []\n };\n img.onload = function () {\n var maxHeight = imageSizeRestrictions.maxHeight,\n maxWidth = imageSizeRestrictions.maxWidth,\n minHeight = imageSizeRestrictions.minHeight,\n minWidth = imageSizeRestrictions.minWidth;\n var width = this.width,\n height = this.height;\n if (maxHeight && maxHeight < height) error.reasons.push('IMAGE_HEIGHT_TOO_BIG');\n if (minHeight && minHeight > height) error.reasons.push('IMAGE_HEIGHT_TOO_SMALL');\n if (maxWidth && maxWidth < width) error.reasons.push('IMAGE_WIDTH_TOO_BIG');\n if (minWidth && minWidth > width) error.reasons.push('IMAGE_WIDTH_TOO_SMALL');\n error.reasons.length ? reject(error) : resolve();\n };\n img.onerror = function () {\n error.reasons.push('IMAGE_NOT_LOADED');\n reject(error);\n };\n img.src = imgDataURL;\n });\n};\n\nvar PersistentFileAmountLimitValidator = /*#__PURE__*/function (_Validator) {\n _inheritsLoose(PersistentFileAmountLimitValidator, _Validator);\n function PersistentFileAmountLimitValidator(limitFilesConfig) {\n var _this;\n _this = _Validator.call(this) || this;\n _this.limitFilesConfig = void 0;\n _this.previousPlainFiles = [];\n _this.limitFilesConfig = limitFilesConfig;\n return _this;\n }\n var _proto = PersistentFileAmountLimitValidator.prototype;\n _proto.onClear = function onClear() {\n this.previousPlainFiles = [];\n };\n _proto.onFileRemoved = function onFileRemoved(_removedFile, removedIndex) {\n this.previousPlainFiles.splice(removedIndex, 1);\n };\n _proto.validateBeforeParsing = function validateBeforeParsing(_config, plainFiles) {\n var fileAmount = this.previousPlainFiles.length + plainFiles.length;\n var _this$limitFilesConfi = this.limitFilesConfig,\n min = _this$limitFilesConfi.min,\n max = _this$limitFilesConfi.max;\n if (max && fileAmount > max) {\n return Promise.reject({\n name: 'FileAmountLimitError',\n reason: 'MAX_AMOUNT_OF_FILES_EXCEEDED'\n });\n }\n if (min && fileAmount < min) {\n return Promise.reject({\n name: 'FileAmountLimitError',\n reason: 'MIN_AMOUNT_OF_FILES_NOT_REACHED'\n });\n }\n this.previousPlainFiles = [].concat(this.previousPlainFiles, plainFiles);\n return Promise.resolve();\n };\n _proto.validateAfterParsing = function validateAfterParsing() {\n return Promise.resolve();\n };\n return PersistentFileAmountLimitValidator;\n}(Validator);\n\nvar FileTypeValidator = /*#__PURE__*/function (_Validator) {\n _inheritsLoose(FileTypeValidator, _Validator);\n function FileTypeValidator(acceptedFileExtensions) {\n var _this;\n _this = _Validator.call(this) || this;\n _this.acceptedFileExtensions = void 0;\n _this.acceptedFileExtensions = acceptedFileExtensions;\n return _this;\n }\n var _proto = FileTypeValidator.prototype;\n _proto.validateBeforeParsing = function validateBeforeParsing(_config, plainFiles) {\n var _this2 = this;\n var fileExtensionErrors = plainFiles.reduce(function (errors, currentFile) {\n var fileExtension = currentFile.name.split('.').pop();\n if (!fileExtension) {\n return [].concat(errors, [{\n name: 'FileTypeError',\n reason: 'FILE_EXTENSION_NOT_FOUND',\n causedByFile: currentFile\n }]);\n }\n if (!_this2.acceptedFileExtensions.includes(fileExtension)) {\n return [].concat(errors, [{\n name: 'FileTypeError',\n reason: 'FILE_TYPE_NOT_ACCEPTED',\n causedByFile: currentFile\n }]);\n }\n return errors;\n }, []);\n return fileExtensionErrors.length > 0 ? Promise.reject(fileExtensionErrors) : Promise.resolve();\n };\n _proto.validateAfterParsing = function validateAfterParsing(_config, _file, _reader) {\n return Promise.resolve();\n };\n return FileTypeValidator;\n}(Validator);\n\nexport { FileAmountLimitValidator, FileSizeValidator, FileTypeValidator, ImageDimensionsValidator, PersistentFileAmountLimitValidator, Validator };\n//# sourceMappingURL=validators.esm.js.map\n"],"names":["_regeneratorRuntime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","defineProperty","obj","key","desc","value","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","type","call","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","this","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","state","Error","done","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","return","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","i","doneResult","displayName","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","val","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","arguments","apply","_extends","assign","bind","target","source","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","_objectDestructuringEmpty","EMPTY_ARRAY","useFilePicker","props","_props$accept","accept","_props$multiple","multiple","_props$readAs","readAs","_props$readFilesConte","readFilesContent","_props$validators","validators","initializeWithCustomParameters","_useState","useState","plainFiles","setPlainFiles","_useState2","filesContent","setFilesContent","_useState3","fileErrors","setFileErrors","_useState4","loading","setLoading","_useValidators","_ref","onFilesSelectedProp","onFilesSelected","onFilesSuccessfullySelectedProp","onFilesSuccessfullySelected","onFilesRejectedProp","onFilesRejected","onClearProp","onClear","useCallback","data","validator","errors","useValidators","clear","clearWithEventListener","parseFile","file","_callee2","reader","addError","_context2","FileReader","_ref2","others","onload","_callee","_context","all","map","validateAfterParsing","content","lastModified","onerror","readerError","causedByFile","_x","_x2","openFilePicker","callback","initializeWithCustomAttributes","inputElement","document","createElement","style","display","body","appendChild","addEventListener","removeChild","dispatchEvent","MouseEvent","openFileDialog","Array","join","_ref4","_callee3","evt","plainFileObjects","validationsBeforeParsing","files","validationsAfterParsing","_context3","from","validateBeforeParsing","isArray","flat","filter","Boolean","fromEvent","fileError","concat","_x3","Validator","invokerHookId","_proto","_data","onFileRemoved","_removedFile","_removedIndex","FileAmountLimitValidator","_Validator","limitAmountOfFilesConfig","_this","_config","_this$limitAmountOfFi","min","max","reason","FileSizeValidator","fileSizeRestrictions","_validateBeforeParsing","_this$fileSizeRestric","minFileSize","maxFileSize","getFileSizeError","_validateAfterParsing","_file","_x4","minBytes","size","maxBytes"],"mappings":"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","x_google_ignoreList":[0,1,2]}