{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@uppy/core/lib/index.js","webpack:///./node_modules/@uppy/utils/lib/Translator.js","webpack:///./node_modules/preact/dist/preact.mjs","webpack:///./node_modules/@uppy/xhr-upload/lib/index.js","webpack:///./node_modules/namespace-emitter/index.js","webpack:///./node_modules/cuid/index.js","webpack:///./node_modules/cuid/lib/pad.js","webpack:///./node_modules/@uppy/utils/lib/getFileNameAndExtension.js","webpack:///./node_modules/@uppy/server-utils/lib/RequestClient.js","webpack:///./node_modules/@uppy/utils/lib/limitPromises.js","webpack:///./node_modules/@uppy/file-input/lib/index.js","webpack:///./node_modules/@uppy/aws-s3/lib/index.js","webpack:///./app/javascript/components/fileuploader.js","webpack:///./node_modules/@uppy/utils/lib/toArray.js","webpack:///./node_modules/@uppy/progress-bar/lib/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/cuid/lib/fingerprint.browser.js","webpack:///./node_modules/cuid/lib/getRandomValue.browser.js","webpack:///./node_modules/prettier-bytes/index.js","webpack:///./node_modules/mime-match/index.js","webpack:///./node_modules/wildcard/index.js","webpack:///./node_modules/@uppy/store-default/lib/index.js","webpack:///./node_modules/@uppy/utils/lib/getFileType.js","webpack:///./node_modules/@uppy/utils/lib/mimeTypes.js","webpack:///./node_modules/@uppy/utils/lib/generateFileID.js","webpack:///./node_modules/@uppy/utils/lib/isObjectURL.js","webpack:///./node_modules/@uppy/utils/lib/getTimeStamp.js","webpack:///./node_modules/@uppy/core/lib/Plugin.js","webpack:///./node_modules/@uppy/utils/lib/findDOMElement.js","webpack:///./node_modules/@uppy/utils/lib/isDOMElement.js","webpack:///./node_modules/@uppy/server-utils/lib/index.js","webpack:///./node_modules/@uppy/server-utils/lib/Provider.js","webpack:///./node_modules/@uppy/server-utils/lib/Socket.js","webpack:///./node_modules/@uppy/utils/lib/emitSocketProgress.js","webpack:///./node_modules/lodash.throttle/index.js","webpack:///./node_modules/@uppy/utils/lib/getSocketHost.js","webpack:///./node_modules/@uppy/utils/lib/settle.js","webpack:///./node_modules/resolve-url/resolve-url.js","webpack:///./app/javascript/packs/fileuploader_pack.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_typeof","iterator","obj","constructor","_extends","assign","target","arguments","length","source","_createClass","defineProperties","props","descriptor","configurable","writable","Constructor","protoProps","staticProps","Translator","ee","cuid","prettyBytes","match","DefaultStore","getFileType","getFileNameAndExtension","generateFileID","isObjectURL","getTimeStamp","Plugin","Uppy","opts","_this","this","instance","TypeError","_classCallCheck","defaultLocale","strings","youCanOnlyUploadX","youHaveToAtLeastSelectX","exceedsSize","youCanOnlyUploadFileTypes","uppyServerError","failedToUpload","noInternetConnection","connectedToInternet","noFilesFound","selectXFiles","cancel","logOut","defaultOptions","id","autoProceed","debug","restrictions","maxFileSize","maxNumberOfFiles","minNumberOfFiles","allowedFileTypes","meta","onBeforeFileAdded","currentFile","files","onBeforeUpload","locale","store","translator","i18n","translate","plugins","getState","getPlugin","setFileMeta","setFileState","log","info","hideInfo","addFile","removeFile","pauseResume","_calculateProgress","updateOnlineStatus","resetProgress","pauseAll","resumeAll","retryAll","cancelAll","retryUpload","upload","emitter","on","off","once","emit","preProcessors","uploaders","postProcessors","setState","currentUploads","capabilities","resumableUploads","totalProgress","isHidden","type","message","_storeUnsubscribe","subscribe","prevState","nextState","patch","updateAll","window","_addListeners","event","callback","state","iteratePlugins","plugin","update","fileID","_extends2","Error","defaultProgress","percentage","bytesUploaded","uploadComplete","uploadStarted","updatedFiles","keys","forEach","updatedFile","progress","addPreProcessor","fn","push","removePreProcessor","indexOf","splice","addPostProcessor","removePostProcessor","addUploader","removeUploader","setMeta","data","updatedMeta","newMeta","getFile","getFiles","map","_checkMinNumberOfFiles","smart_count","_checkRestrictions","file","_opts$restrictions","filter","extension","substr","allowedFileTypesString","join","size","_extends3","_this2","onBeforeFileAddedResult","then","fileType","fileName","split","fileExtension","isRemote","newFile","bytesTotal","remote","preview","err","msg","onError","scheduledAutoProceed","setTimeout","catch","console","error","stack","_this3","_getState3","removedFile","updatedUploads","removeUploads","uploadID","newFileIDs","fileIDs","uploadFileID","_removeUpload","_calculateTotalProgress","URL","revokeObjectURL","isPaused","filesToRetry","_createUpload","_runUpload","_this4","reset","Math","floor","toFixed","inProgress","progressMax","progressAll","_this5","details","Date","now","uploadResp","uploadURL","currentProgress","preprocess","postprocess","addEventListener","navigator","onLine","wasOffline","getID","use","pluginId","existsPluginAlready","_msg","install","foundPlugin","method","_this6","pluginType","removePlugin","uninstall","list","slice","index","updatedState","close","_this7","undefined","duration","isComplexMessage","clearTimeout","infoTimeoutID","newInfo","dir","warn","run","restore","Promise","reject","_extends4","step","result","_getUpload","addResultData","_extends5","currentUpload","_this8","uploadData","restoreStep","steps","concat","lastStep","resolve","_extends6","successful","failed","_this9","uploader","onBeforeUploadResult","currentlyUploadingFiles","reduce","prev","curr","waitingFileIDs","pluralize","interpolate","phrase","options","_String$prototype","String","replace","dollarRegex","interpolated","arg","replacement","insertReplacement","RegExp","rx","newParts","chunk","raw","translateArray","plural","VNode","EMPTY_CHILDREN","h","nodeName","attributes","lastSimple","child","simple","children","pop","vnode","extend","applyRef","ref","current","defer","cloneElement","IS_NON_DIMENSIONAL","items","enqueueRender","component","_dirty","debounceRendering","rerender","renderComponent","isSameNodeType","node","hydrating","splitText","_componentConstructor","isNamedNode","normalizedNodeName","toLowerCase","getNodeProps","defaultProps","removeNode","parentNode","removeChild","setAccessor","old","isSvg","style","cssText","test","innerHTML","__html","useCapture","substring","eventProxy","removeEventListener","_listeners","e","removeAttribute","removeAttributeNS","setAttributeNS","setAttribute","className","mounts","diffLevel","isSvgMode","flushMounts","shift","afterMount","componentDidMount","diff","dom","context","mountAll","parent","componentRoot","ownerSVGElement","ret","idiff","appendChild","out","prevSvgMode","_component","nodeValue","document","createTextNode","replaceChild","recollectNodeTree","vnodeName","originalComponent","oldDom","isDirectOwner","isOwner","_parentComponent","setComponentProps","base","unmountComponent","createComponent","nextBase","buildComponentFromVNode","createElementNS","createElement","firstChild","fc","vchildren","a","nextSibling","isHydrating","j","f","vchild","originalChildren","childNodes","keyed","keyedLen","min","len","childrenLen","vlen","_child","__key","trim","insertBefore","innerDiffNode","dangerouslySetInnerHTML","attrs","diffAttributes","unmountOnly","removeChildren","lastChild","next","previousSibling","recyclerComponents","Ctor","inst","render","Component","doRender","renderMode","_disable","__ref","getDerivedStateFromProps","componentWillMount","componentWillReceiveProps","prevContext","prevProps","syncComponentUpdates","isChild","rendered","cbase","previousProps","previousState","previousContext","isUpdate","initialBase","initialChildComponent","skip","snapshot","shouldComponentUpdate","componentWillUpdate","getChildContext","getSnapshotBeforeUpdate","toUnmount","childComponent","childProps","baseParent","componentRef","componentDidUpdate","afterUpdate","_renderCallbacks","beforeUnmount","componentWillUnmount","inner","merge","createRef","forceUpdate","preact","_require2","Provider","Socket","emitSocketProgress","getSocketHost","settle","limitPromises","buildResponseError","xhr","request","_Plugin","XHRUpload","uppy","self","ReferenceError","_possibleConstructorReturn","title","timedOut","formData","fieldName","metaFields","responseUrlFieldName","bundle","headers","timeout","limit","withCredentials","getResponseData","responseText","response","parsedResponse","JSON","parse","getResponseError","handleUpload","limitUploads","subClass","superClass","setPrototypeOf","__proto__","_inherits","getOptions","overrides","xhrUpload","createProgressTimeout","timeoutHandler","isDone","onTimedOut","seconds","ceil","aliveTimer","done","createFormDataUpload","formPost","FormData","Array","isArray","item","append","createBareUpload","total","timer","abort","XMLHttpRequest","ev","loaded","lengthComputable","status","body","_body","_response","open","toUpperCase","endpoint","header","setRequestHeader","send","uploadRemote","fields","providerOptions","post","url","fieldname","metadata","res","token","host","serverUrl","socket","progressData","resp","errData","cause","uploadBundle","emitError","uploadFiles","promises","parseInt","action","limitedAction","bundled","_fns","arg1","arg2","arg3","arg4","arg5","arg6","toEmit","idx","args","getListeners","fns","apply","emitAll","one","keep","fingerprint","pad","getRandomValue","discreteValues","pow","randomBlock","toString","safeCounter","getTime","slug","date","counter","print","random","isCuid","stringToCheck","startsWith","isSlug","stringLength","num","fullFileName","fileExt","exec","RequestClient","onReceiveResponse","uppyServer","has","_getUrl","hostname","path","fetch","defaultHeaders","json","stringify","statusText","delete","credentials","pending","queue","_len","_key","promise","onfinish","toArray","FileInput","chooseFiles","pretty","inputName","handleInputChange","handleClick","input","click","width","height","opacity","overflow","position","zIndex","onchange","multiple","accept","onclick","mount","unmount","resolveUrl","isXml","contentType","getResponseHeader","AwsS3","preparingUpload","getUploadParameters","prepareUpload","limitRequests","filename","encodeURIComponent","validateParameters","params","all","responses","_responses$index","_responses$index$meth","xhrOpts","warnedSuccessActionStatus","content","location","responseURL","getValue","responseXML","el","querySelector","textContent","start","end","bucket","etag","require","ProgressBar","fileUpload","container","submit_button","closest","fileInput","hiddenField","uploadServer","dataset","button_text","buttonText","uploading_text","uploadingText","display","hideAfterFinish","progressBar","disabled","uploadedFileData","storage","mime_type","replaceTargetContent","fixed","g","Function","env","globalCount","clientId","mimeTypes","userAgent","crypto","msCrypto","lim","abs","getRandomValues","Uint32Array","isNaN","neg","units","exponent","Number","unit","wildcard","reMimePartSplit","pattern","WildcardMatcher","text","separator","hasWild","parts","ii","testParts","matches","partsCount","matcher","callbacks","_publish","listener","lastModified","val","str","getHours","getMinutes","getSeconds","findDOMElement","getPluginState","setPluginState","_updateUI","calling","latestArgs","callerPluginName","targetElement","isTargetDOMEl","targetPlugin","Target","targetPluginName","addTarget","isDOMElement","element","nodeType","Node","ELEMENT_NODE","_RequestClient","provider","authProvider","charAt","tokenKey","setAuthToken","localStorage","setItem","checkAuth","payload","authenticated","authUrl","fileUrl","directory","logout","redirect","href","removeItem","getItem","UppySocket","queued","isOpen","WebSocket","onopen","first","onclose","_handleMessage","onmessage","handler","throttle","leading","trailing","FUNC_ERROR_TEXT","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","global","freeSelf","root","objectToString","nativeMax","max","nativeMin","debounce","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","time","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","toNumber","isObject","flush","isObjectLike","isSymbol","other","valueOf","isBinary","protocol","resolutions","rejections","resolved","rejected","numUrls","head","getElementsByTagName","querySelectorAll","fileInputContainer"],"mappings":"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","file":"js/fileuploader_pack-3094e8938b2310f58b2e.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"//cdn.fradeo.com/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 65);\n","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nvar _extends = Object.assign || 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};\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nvar Translator = require('@uppy/utils/lib/Translator');\nvar ee = require('namespace-emitter');\nvar cuid = require('cuid');\n// const throttle = require('lodash.throttle')\nvar prettyBytes = require('prettier-bytes');\nvar match = require('mime-match');\nvar DefaultStore = require('@uppy/store-default');\nvar getFileType = require('@uppy/utils/lib/getFileType');\nvar getFileNameAndExtension = require('@uppy/utils/lib/getFileNameAndExtension');\nvar generateFileID = require('@uppy/utils/lib/generateFileID');\nvar isObjectURL = require('@uppy/utils/lib/isObjectURL');\nvar getTimeStamp = require('@uppy/utils/lib/getTimeStamp');\nvar Plugin = require('./Plugin'); // Exported from here.\n\n/**\n * Uppy Core module.\n * Manages plugins, state updates, acts as an event bus,\n * adds/removes files and metadata.\n */\n\nvar Uppy = function () {\n /**\n * Instantiate Uppy\n * @param {object} opts — Uppy options\n */\n function Uppy(opts) {\n var _this = this;\n _classCallCheck(this, Uppy);\n var defaultLocale = {\n strings: {\n youCanOnlyUploadX: {\n 0: 'You can only upload %{smart_count} file',\n 1: 'You can only upload %{smart_count} files'\n },\n youHaveToAtLeastSelectX: {\n 0: 'You have to select at least %{smart_count} file',\n 1: 'You have to select at least %{smart_count} files'\n },\n exceedsSize: 'This file exceeds maximum allowed size of',\n youCanOnlyUploadFileTypes: 'You can only upload:',\n uppyServerError: 'Connection with Uppy Server failed',\n failedToUpload: 'Failed to upload %{file}',\n noInternetConnection: 'No Internet connection',\n connectedToInternet: 'Connected to the Internet',\n // Strings for remote providers\n noFilesFound: 'You have no files or folders here',\n selectXFiles: {\n 0: 'Select %{smart_count} file',\n 1: 'Select %{smart_count} files'\n },\n cancel: 'Cancel',\n logOut: 'Log out'\n }\n\n // set default options\n };\n var defaultOptions = {\n id: 'uppy',\n autoProceed: true,\n debug: false,\n restrictions: {\n maxFileSize: null,\n maxNumberOfFiles: null,\n minNumberOfFiles: null,\n allowedFileTypes: null\n },\n meta: {},\n onBeforeFileAdded: function onBeforeFileAdded(currentFile, files) {\n return currentFile;\n },\n onBeforeUpload: function onBeforeUpload(files) {\n return files;\n },\n locale: defaultLocale,\n store: DefaultStore()\n\n // Merge default options with the ones set by user\n };\n this.opts = _extends({}, defaultOptions, opts);\n this.opts.restrictions = _extends({}, defaultOptions.restrictions, this.opts.restrictions);\n this.locale = _extends({}, defaultLocale, this.opts.locale);\n this.locale.strings = _extends({}, defaultLocale.strings, this.opts.locale.strings);\n\n // i18n\n this.translator = new Translator({\n locale: this.locale\n });\n this.i18n = this.translator.translate.bind(this.translator);\n\n // Container for different types of plugins\n this.plugins = {};\n this.getState = this.getState.bind(this);\n this.getPlugin = this.getPlugin.bind(this);\n this.setFileMeta = this.setFileMeta.bind(this);\n this.setFileState = this.setFileState.bind(this);\n this.log = this.log.bind(this);\n this.info = this.info.bind(this);\n this.hideInfo = this.hideInfo.bind(this);\n this.addFile = this.addFile.bind(this);\n this.removeFile = this.removeFile.bind(this);\n this.pauseResume = this.pauseResume.bind(this);\n this._calculateProgress = this._calculateProgress.bind(this);\n this.updateOnlineStatus = this.updateOnlineStatus.bind(this);\n this.resetProgress = this.resetProgress.bind(this);\n this.pauseAll = this.pauseAll.bind(this);\n this.resumeAll = this.resumeAll.bind(this);\n this.retryAll = this.retryAll.bind(this);\n this.cancelAll = this.cancelAll.bind(this);\n this.retryUpload = this.retryUpload.bind(this);\n this.upload = this.upload.bind(this);\n this.emitter = ee();\n this.on = this.on.bind(this);\n this.off = this.off.bind(this);\n this.once = this.emitter.once.bind(this.emitter);\n this.emit = this.emitter.emit.bind(this.emitter);\n this.preProcessors = [];\n this.uploaders = [];\n this.postProcessors = [];\n this.store = this.opts.store;\n this.setState({\n plugins: {},\n files: {},\n currentUploads: {},\n capabilities: {\n resumableUploads: false\n },\n totalProgress: 0,\n meta: _extends({}, this.opts.meta),\n info: {\n isHidden: true,\n type: 'info',\n message: ''\n }\n });\n this._storeUnsubscribe = this.store.subscribe(function (prevState, nextState, patch) {\n _this.emit('state-update', prevState, nextState, patch);\n _this.updateAll(nextState);\n });\n\n // for debugging and testing\n // this.updateNum = 0\n if (this.opts.debug && typeof window !== 'undefined') {\n window['uppyLog'] = '';\n window[this.opts.id] = this;\n }\n this._addListeners();\n }\n Uppy.prototype.on = function on(event, callback) {\n this.emitter.on(event, callback);\n return this;\n };\n Uppy.prototype.off = function off(event, callback) {\n this.emitter.off(event, callback);\n return this;\n };\n\n /**\n * Iterate on all plugins and run `update` on them.\n * Called each time state changes.\n *\n */\n\n Uppy.prototype.updateAll = function updateAll(state) {\n this.iteratePlugins(function (plugin) {\n plugin.update(state);\n });\n };\n\n /**\n * Updates state with a patch\n *\n * @param {object} patch {foo: 'bar'}\n */\n\n Uppy.prototype.setState = function setState(patch) {\n this.store.setState(patch);\n };\n\n /**\n * Returns current state.\n * @return {object}\n */\n\n Uppy.prototype.getState = function getState() {\n return this.store.getState();\n };\n\n /**\n * Back compat for when uppy.state is used instead of uppy.getState().\n */\n\n /**\n * Shorthand to set state for a specific file.\n */\n Uppy.prototype.setFileState = function setFileState(fileID, state) {\n var _extends2;\n if (!this.getState().files[fileID]) {\n throw new Error('Can\\u2019t set state for ' + fileID + ' (the file could have been removed)');\n }\n this.setState({\n files: _extends({}, this.getState().files, (_extends2 = {}, _extends2[fileID] = _extends({}, this.getState().files[fileID], state), _extends2))\n });\n };\n Uppy.prototype.resetProgress = function resetProgress() {\n var defaultProgress = {\n percentage: 0,\n bytesUploaded: 0,\n uploadComplete: false,\n uploadStarted: false\n };\n var files = _extends({}, this.getState().files);\n var updatedFiles = {};\n Object.keys(files).forEach(function (fileID) {\n var updatedFile = _extends({}, files[fileID]);\n updatedFile.progress = _extends({}, updatedFile.progress, defaultProgress);\n updatedFiles[fileID] = updatedFile;\n });\n this.setState({\n files: updatedFiles,\n totalProgress: 0\n });\n\n // TODO Document on the website\n this.emit('reset-progress');\n };\n Uppy.prototype.addPreProcessor = function addPreProcessor(fn) {\n this.preProcessors.push(fn);\n };\n Uppy.prototype.removePreProcessor = function removePreProcessor(fn) {\n var i = this.preProcessors.indexOf(fn);\n if (i !== -1) {\n this.preProcessors.splice(i, 1);\n }\n };\n Uppy.prototype.addPostProcessor = function addPostProcessor(fn) {\n this.postProcessors.push(fn);\n };\n Uppy.prototype.removePostProcessor = function removePostProcessor(fn) {\n var i = this.postProcessors.indexOf(fn);\n if (i !== -1) {\n this.postProcessors.splice(i, 1);\n }\n };\n Uppy.prototype.addUploader = function addUploader(fn) {\n this.uploaders.push(fn);\n };\n Uppy.prototype.removeUploader = function removeUploader(fn) {\n var i = this.uploaders.indexOf(fn);\n if (i !== -1) {\n this.uploaders.splice(i, 1);\n }\n };\n Uppy.prototype.setMeta = function setMeta(data) {\n var updatedMeta = _extends({}, this.getState().meta, data);\n var updatedFiles = _extends({}, this.getState().files);\n Object.keys(updatedFiles).forEach(function (fileID) {\n updatedFiles[fileID] = _extends({}, updatedFiles[fileID], {\n meta: _extends({}, updatedFiles[fileID].meta, data)\n });\n });\n this.log('Adding metadata:');\n this.log(data);\n this.setState({\n meta: updatedMeta,\n files: updatedFiles\n });\n };\n Uppy.prototype.setFileMeta = function setFileMeta(fileID, data) {\n var updatedFiles = _extends({}, this.getState().files);\n if (!updatedFiles[fileID]) {\n this.log('Was trying to set metadata for a file that’s not with us anymore: ', fileID);\n return;\n }\n var newMeta = _extends({}, updatedFiles[fileID].meta, data);\n updatedFiles[fileID] = _extends({}, updatedFiles[fileID], {\n meta: newMeta\n });\n this.setState({\n files: updatedFiles\n });\n };\n\n /**\n * Get a file object.\n *\n * @param {string} fileID The ID of the file object to return.\n */\n\n Uppy.prototype.getFile = function getFile(fileID) {\n return this.getState().files[fileID];\n };\n\n /**\n * Get all files in an array.\n */\n\n Uppy.prototype.getFiles = function getFiles() {\n var _getState = this.getState(),\n files = _getState.files;\n return Object.keys(files).map(function (fileID) {\n return files[fileID];\n });\n };\n\n /**\n * Check if minNumberOfFiles restriction is reached before uploading.\n *\n * @private\n */\n\n Uppy.prototype._checkMinNumberOfFiles = function _checkMinNumberOfFiles(files) {\n var minNumberOfFiles = this.opts.restrictions.minNumberOfFiles;\n if (Object.keys(files).length < minNumberOfFiles) {\n throw new Error('' + this.i18n('youHaveToAtLeastSelectX', {\n smart_count: minNumberOfFiles\n }));\n }\n };\n\n /**\n * Check if file passes a set of restrictions set in options: maxFileSize,\n * maxNumberOfFiles and allowedFileTypes.\n *\n * @param {object} file object to check\n * @private\n */\n\n Uppy.prototype._checkRestrictions = function _checkRestrictions(file) {\n var _opts$restrictions = this.opts.restrictions,\n maxFileSize = _opts$restrictions.maxFileSize,\n maxNumberOfFiles = _opts$restrictions.maxNumberOfFiles,\n allowedFileTypes = _opts$restrictions.allowedFileTypes;\n if (maxNumberOfFiles) {\n if (Object.keys(this.getState().files).length + 1 > maxNumberOfFiles) {\n throw new Error('' + this.i18n('youCanOnlyUploadX', {\n smart_count: maxNumberOfFiles\n }));\n }\n }\n if (allowedFileTypes) {\n var isCorrectFileType = allowedFileTypes.filter(function (type) {\n // if (!file.type) return false\n\n // is this is a mime-type\n if (type.indexOf('/') > -1) {\n if (!file.type) return false;\n return match(file.type, type);\n }\n\n // otherwise this is likely an extension\n if (type[0] === '.') {\n if (file.extension === type.substr(1)) {\n return file.extension;\n }\n }\n }).length > 0;\n if (!isCorrectFileType) {\n var allowedFileTypesString = allowedFileTypes.join(', ');\n throw new Error(this.i18n('youCanOnlyUploadFileTypes') + ' ' + allowedFileTypesString);\n }\n }\n if (maxFileSize) {\n if (file.data.size > maxFileSize) {\n throw new Error(this.i18n('exceedsSize') + ' ' + prettyBytes(maxFileSize));\n }\n }\n };\n\n /**\n * Add a new file to `state.files`. This will run `onBeforeFileAdded`,\n * try to guess file type in a clever way, check file against restrictions,\n * and start an upload if `autoProceed === true`.\n *\n * @param {object} file object to add\n */\n\n Uppy.prototype.addFile = function addFile(file) {\n var _this2 = this,\n _extends3;\n var _getState2 = this.getState(),\n files = _getState2.files;\n var onError = function onError(msg) {\n var err = (typeof msg === 'undefined' ? 'undefined' : _typeof(msg)) === 'object' ? msg : new Error(msg);\n _this2.log(err.message);\n _this2.info(err.message, 'error', 5000);\n throw err;\n };\n var onBeforeFileAddedResult = this.opts.onBeforeFileAdded(file, files);\n if (onBeforeFileAddedResult === false) {\n this.log('Not adding file because onBeforeFileAdded returned false');\n return;\n }\n if ((typeof onBeforeFileAddedResult === 'undefined' ? 'undefined' : _typeof(onBeforeFileAddedResult)) === 'object' && onBeforeFileAddedResult) {\n // warning after the change in 0.24\n if (onBeforeFileAddedResult.then) {\n throw new TypeError('onBeforeFileAdded() returned a Promise, but this is no longer supported. It must be synchronous.');\n }\n file = onBeforeFileAddedResult;\n }\n var fileType = getFileType(file);\n var fileName = void 0;\n if (file.name) {\n fileName = file.name;\n } else if (fileType.split('/')[0] === 'image') {\n fileName = fileType.split('/')[0] + '.' + fileType.split('/')[1];\n } else {\n fileName = 'noname';\n }\n var fileExtension = getFileNameAndExtension(fileName).extension;\n var isRemote = file.isRemote || false;\n var fileID = generateFileID(file);\n var meta = file.meta || {};\n meta.name = fileName;\n meta.type = fileType;\n var newFile = {\n source: file.source || '',\n id: fileID,\n name: fileName,\n extension: fileExtension || '',\n meta: _extends({}, this.getState().meta, meta),\n type: fileType,\n data: file.data,\n progress: {\n percentage: 0,\n bytesUploaded: 0,\n bytesTotal: file.data.size || 0,\n uploadComplete: false,\n uploadStarted: false\n },\n size: file.data.size || 0,\n isRemote: isRemote,\n remote: file.remote || '',\n preview: file.preview\n };\n try {\n this._checkRestrictions(newFile);\n } catch (err) {\n onError(err);\n }\n this.setState({\n files: _extends({}, files, (_extends3 = {}, _extends3[fileID] = newFile, _extends3))\n });\n this.emit('file-added', newFile);\n this.log('Added file: ' + fileName + ', ' + fileID + ', mime type: ' + fileType);\n if (this.opts.autoProceed && !this.scheduledAutoProceed) {\n this.scheduledAutoProceed = setTimeout(function () {\n _this2.scheduledAutoProceed = null;\n _this2.upload().catch(function (err) {\n console.error(err.stack || err.message || err);\n });\n }, 4);\n }\n };\n Uppy.prototype.removeFile = function removeFile(fileID) {\n var _this3 = this;\n var _getState3 = this.getState(),\n files = _getState3.files,\n currentUploads = _getState3.currentUploads;\n var updatedFiles = _extends({}, files);\n var removedFile = updatedFiles[fileID];\n delete updatedFiles[fileID];\n\n // Remove this file from its `currentUpload`.\n var updatedUploads = _extends({}, currentUploads);\n var removeUploads = [];\n Object.keys(updatedUploads).forEach(function (uploadID) {\n var newFileIDs = currentUploads[uploadID].fileIDs.filter(function (uploadFileID) {\n return uploadFileID !== fileID;\n });\n // Remove the upload if no files are associated with it anymore.\n if (newFileIDs.length === 0) {\n removeUploads.push(uploadID);\n return;\n }\n updatedUploads[uploadID] = _extends({}, currentUploads[uploadID], {\n fileIDs: newFileIDs\n });\n });\n this.setState({\n currentUploads: updatedUploads,\n files: updatedFiles\n });\n removeUploads.forEach(function (uploadID) {\n _this3._removeUpload(uploadID);\n });\n this._calculateTotalProgress();\n this.emit('file-removed', removedFile);\n this.log('File removed: ' + removedFile.id);\n\n // Clean up object URLs.\n if (removedFile.preview && isObjectURL(removedFile.preview)) {\n URL.revokeObjectURL(removedFile.preview);\n }\n this.log('Removed file: ' + fileID);\n };\n Uppy.prototype.pauseResume = function pauseResume(fileID) {\n if (this.getFile(fileID).uploadComplete) return;\n var wasPaused = this.getFile(fileID).isPaused || false;\n var isPaused = !wasPaused;\n this.setFileState(fileID, {\n isPaused: isPaused\n });\n this.emit('upload-pause', fileID, isPaused);\n return isPaused;\n };\n Uppy.prototype.pauseAll = function pauseAll() {\n var updatedFiles = _extends({}, this.getState().files);\n var inProgressUpdatedFiles = Object.keys(updatedFiles).filter(function (file) {\n return !updatedFiles[file].progress.uploadComplete && updatedFiles[file].progress.uploadStarted;\n });\n inProgressUpdatedFiles.forEach(function (file) {\n var updatedFile = _extends({}, updatedFiles[file], {\n isPaused: true\n });\n updatedFiles[file] = updatedFile;\n });\n this.setState({\n files: updatedFiles\n });\n this.emit('pause-all');\n };\n Uppy.prototype.resumeAll = function resumeAll() {\n var updatedFiles = _extends({}, this.getState().files);\n var inProgressUpdatedFiles = Object.keys(updatedFiles).filter(function (file) {\n return !updatedFiles[file].progress.uploadComplete && updatedFiles[file].progress.uploadStarted;\n });\n inProgressUpdatedFiles.forEach(function (file) {\n var updatedFile = _extends({}, updatedFiles[file], {\n isPaused: false,\n error: null\n });\n updatedFiles[file] = updatedFile;\n });\n this.setState({\n files: updatedFiles\n });\n this.emit('resume-all');\n };\n Uppy.prototype.retryAll = function retryAll() {\n var updatedFiles = _extends({}, this.getState().files);\n var filesToRetry = Object.keys(updatedFiles).filter(function (file) {\n return updatedFiles[file].error;\n });\n filesToRetry.forEach(function (file) {\n var updatedFile = _extends({}, updatedFiles[file], {\n isPaused: false,\n error: null\n });\n updatedFiles[file] = updatedFile;\n });\n this.setState({\n files: updatedFiles,\n error: null\n });\n this.emit('retry-all', filesToRetry);\n var uploadID = this._createUpload(filesToRetry);\n return this._runUpload(uploadID);\n };\n Uppy.prototype.cancelAll = function cancelAll() {\n var _this4 = this;\n this.emit('cancel-all');\n\n // TODO Or should we just call removeFile on all files?\n\n var _getState4 = this.getState(),\n currentUploads = _getState4.currentUploads;\n var uploadIDs = Object.keys(currentUploads);\n uploadIDs.forEach(function (id) {\n _this4._removeUpload(id);\n });\n this.setState({\n files: {},\n totalProgress: 0,\n error: null\n });\n };\n Uppy.prototype.retryUpload = function retryUpload(fileID) {\n var updatedFiles = _extends({}, this.getState().files);\n var updatedFile = _extends({}, updatedFiles[fileID], {\n error: null,\n isPaused: false\n });\n updatedFiles[fileID] = updatedFile;\n this.setState({\n files: updatedFiles\n });\n this.emit('upload-retry', fileID);\n var uploadID = this._createUpload([fileID]);\n return this._runUpload(uploadID);\n };\n Uppy.prototype.reset = function reset() {\n this.cancelAll();\n };\n Uppy.prototype._calculateProgress = function _calculateProgress(file, data) {\n if (!this.getFile(file.id)) {\n this.log('Not setting progress for a file that has been removed: ' + file.id);\n return;\n }\n this.setFileState(file.id, {\n progress: _extends({}, this.getFile(file.id).progress, {\n bytesUploaded: data.bytesUploaded,\n bytesTotal: data.bytesTotal,\n percentage: Math.floor((data.bytesUploaded / data.bytesTotal * 100).toFixed(2))\n })\n });\n this._calculateTotalProgress();\n };\n Uppy.prototype._calculateTotalProgress = function _calculateTotalProgress() {\n // calculate total progress, using the number of files currently uploading,\n // multiplied by 100 and the summ of individual progress of each file\n var files = _extends({}, this.getState().files);\n var inProgress = Object.keys(files).filter(function (file) {\n return files[file].progress.uploadStarted;\n });\n var progressMax = inProgress.length * 100;\n var progressAll = 0;\n inProgress.forEach(function (file) {\n progressAll = progressAll + files[file].progress.percentage;\n });\n var totalProgress = progressMax === 0 ? 0 : Math.floor((progressAll * 100 / progressMax).toFixed(2));\n this.setState({\n totalProgress: totalProgress\n });\n };\n\n /**\n * Registers listeners for all global actions, like:\n * `error`, `file-removed`, `upload-progress`\n */\n\n Uppy.prototype._addListeners = function _addListeners() {\n var _this5 = this;\n this.on('error', function (error) {\n _this5.setState({\n error: error.message\n });\n });\n this.on('upload-error', function (file, error) {\n _this5.setFileState(file.id, {\n error: error.message\n });\n _this5.setState({\n error: error.message\n });\n var message = _this5.i18n('failedToUpload', {\n file: file.name\n });\n if ((typeof error === 'undefined' ? 'undefined' : _typeof(error)) === 'object' && error.message) {\n message = {\n message: message,\n details: error.message\n };\n }\n _this5.info(message, 'error', 5000);\n });\n this.on('upload', function () {\n _this5.setState({\n error: null\n });\n });\n this.on('upload-started', function (file, upload) {\n if (!_this5.getFile(file.id)) {\n _this5.log('Not setting progress for a file that has been removed: ' + file.id);\n return;\n }\n _this5.setFileState(file.id, {\n progress: {\n uploadStarted: Date.now(),\n uploadComplete: false,\n percentage: 0,\n bytesUploaded: 0,\n bytesTotal: file.size\n }\n });\n });\n\n // upload progress events can occur frequently, especially when you have a good\n // connection to the remote server. Therefore, we are throtteling them to\n // prevent accessive function calls.\n // see also: https://github.com/tus/tus-js-client/commit/9940f27b2361fd7e10ba58b09b60d82422183bbb\n // const _throttledCalculateProgress = throttle(this._calculateProgress, 100, { leading: true, trailing: true })\n\n this.on('upload-progress', this._calculateProgress);\n this.on('upload-success', function (file, uploadResp, uploadURL) {\n var currentProgress = _this5.getFile(file.id).progress;\n _this5.setFileState(file.id, {\n progress: _extends({}, currentProgress, {\n uploadComplete: true,\n percentage: 100,\n bytesUploaded: currentProgress.bytesTotal\n }),\n uploadURL: uploadURL,\n isPaused: false\n });\n _this5._calculateTotalProgress();\n });\n this.on('preprocess-progress', function (file, progress) {\n if (!_this5.getFile(file.id)) {\n _this5.log('Not setting progress for a file that has been removed: ' + file.id);\n return;\n }\n _this5.setFileState(file.id, {\n progress: _extends({}, _this5.getFile(file.id).progress, {\n preprocess: progress\n })\n });\n });\n this.on('preprocess-complete', function (file) {\n if (!_this5.getFile(file.id)) {\n _this5.log('Not setting progress for a file that has been removed: ' + file.id);\n return;\n }\n var files = _extends({}, _this5.getState().files);\n files[file.id] = _extends({}, files[file.id], {\n progress: _extends({}, files[file.id].progress)\n });\n delete files[file.id].progress.preprocess;\n _this5.setState({\n files: files\n });\n });\n this.on('postprocess-progress', function (file, progress) {\n if (!_this5.getFile(file.id)) {\n _this5.log('Not setting progress for a file that has been removed: ' + file.id);\n return;\n }\n _this5.setFileState(file.id, {\n progress: _extends({}, _this5.getState().files[file.id].progress, {\n postprocess: progress\n })\n });\n });\n this.on('postprocess-complete', function (file) {\n if (!_this5.getFile(file.id)) {\n _this5.log('Not setting progress for a file that has been removed: ' + file.id);\n return;\n }\n var files = _extends({}, _this5.getState().files);\n files[file.id] = _extends({}, files[file.id], {\n progress: _extends({}, files[file.id].progress)\n });\n delete files[file.id].progress.postprocess;\n // TODO should we set some kind of `fullyComplete` property on the file object\n // so it's easier to see that the file is upload…fully complete…rather than\n // what we have to do now (`uploadComplete && !postprocess`)\n\n _this5.setState({\n files: files\n });\n });\n this.on('restored', function () {\n // Files may have changed--ensure progress is still accurate.\n _this5._calculateTotalProgress();\n });\n\n // show informer if offline\n if (typeof window !== 'undefined') {\n window.addEventListener('online', function () {\n return _this5.updateOnlineStatus();\n });\n window.addEventListener('offline', function () {\n return _this5.updateOnlineStatus();\n });\n setTimeout(function () {\n return _this5.updateOnlineStatus();\n }, 3000);\n }\n };\n Uppy.prototype.updateOnlineStatus = function updateOnlineStatus() {\n var online = typeof window.navigator.onLine !== 'undefined' ? window.navigator.onLine : true;\n if (!online) {\n this.emit('is-offline');\n this.info(this.i18n('noInternetConnection'), 'error', 0);\n this.wasOffline = true;\n } else {\n this.emit('is-online');\n if (this.wasOffline) {\n this.emit('back-online');\n this.info(this.i18n('connectedToInternet'), 'success', 3000);\n this.wasOffline = false;\n }\n }\n };\n Uppy.prototype.getID = function getID() {\n return this.opts.id;\n };\n\n /**\n * Registers a plugin with Core.\n *\n * @param {object} Plugin object\n * @param {object} [opts] object with options to be passed to Plugin\n * @return {Object} self for chaining\n */\n\n Uppy.prototype.use = function use(Plugin, opts) {\n if (typeof Plugin !== 'function') {\n var msg = 'Expected a plugin class, but got ' + (Plugin === null ? 'null' : typeof Plugin === 'undefined' ? 'undefined' : _typeof(Plugin)) + '.' + ' Please verify that the plugin was imported and spelled correctly.';\n throw new TypeError(msg);\n }\n\n // Instantiate\n var plugin = new Plugin(this, opts);\n var pluginId = plugin.id;\n this.plugins[plugin.type] = this.plugins[plugin.type] || [];\n if (!pluginId) {\n throw new Error('Your plugin must have an id');\n }\n if (!plugin.type) {\n throw new Error('Your plugin must have a type');\n }\n var existsPluginAlready = this.getPlugin(pluginId);\n if (existsPluginAlready) {\n var _msg = 'Already found a plugin named \\'' + existsPluginAlready.id + '\\'. ' + ('Tried to use: \\'' + pluginId + '\\'.\\n') + 'Uppy plugins must have unique \\'id\\' options. See https://uppy.io/docs/plugins/#id.';\n throw new Error(_msg);\n }\n this.plugins[plugin.type].push(plugin);\n plugin.install();\n return this;\n };\n\n /**\n * Find one Plugin by name.\n *\n * @param {string} name description\n * @return {object | boolean}\n */\n\n Uppy.prototype.getPlugin = function getPlugin(name) {\n var foundPlugin = null;\n this.iteratePlugins(function (plugin) {\n var pluginName = plugin.id;\n if (pluginName === name) {\n foundPlugin = plugin;\n return false;\n }\n });\n return foundPlugin;\n };\n\n /**\n * Iterate through all `use`d plugins.\n *\n * @param {function} method that will be run on each plugin\n */\n\n Uppy.prototype.iteratePlugins = function iteratePlugins(method) {\n var _this6 = this;\n Object.keys(this.plugins).forEach(function (pluginType) {\n _this6.plugins[pluginType].forEach(method);\n });\n };\n\n /**\n * Uninstall and remove a plugin.\n *\n * @param {object} instance The plugin instance to remove.\n */\n\n Uppy.prototype.removePlugin = function removePlugin(instance) {\n this.log('Removing plugin ' + instance.id);\n this.emit('plugin-remove', instance);\n if (instance.uninstall) {\n instance.uninstall();\n }\n var list = this.plugins[instance.type].slice();\n var index = list.indexOf(instance);\n if (index !== -1) {\n list.splice(index, 1);\n this.plugins[instance.type] = list;\n }\n var updatedState = this.getState();\n delete updatedState.plugins[instance.id];\n this.setState(updatedState);\n };\n\n /**\n * Uninstall all plugins and close down this Uppy instance.\n */\n\n Uppy.prototype.close = function close() {\n var _this7 = this;\n this.log('Closing Uppy instance ' + this.opts.id + ': removing all files and uninstalling plugins');\n this.reset();\n this._storeUnsubscribe();\n this.iteratePlugins(function (plugin) {\n _this7.removePlugin(plugin);\n });\n };\n\n /**\n * Set info message in `state.info`, so that UI plugins like `Informer`\n * can display the message.\n *\n * @param {string | object} message Message to be displayed by the informer\n * @param {string} [type]\n * @param {number} [duration]\n */\n\n Uppy.prototype.info = function info(message) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'info';\n var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3000;\n var isComplexMessage = (typeof message === 'undefined' ? 'undefined' : _typeof(message)) === 'object';\n this.setState({\n info: {\n isHidden: false,\n type: type,\n message: isComplexMessage ? message.message : message,\n details: isComplexMessage ? message.details : null\n }\n });\n this.emit('info-visible');\n clearTimeout(this.infoTimeoutID);\n if (duration === 0) {\n this.infoTimeoutID = undefined;\n return;\n }\n\n // hide the informer after `duration` milliseconds\n this.infoTimeoutID = setTimeout(this.hideInfo, duration);\n };\n Uppy.prototype.hideInfo = function hideInfo() {\n var newInfo = _extends({}, this.getState().info, {\n isHidden: true\n });\n this.setState({\n info: newInfo\n });\n this.emit('info-hidden');\n };\n\n /**\n * Logs stuff to console, only if `debug` is set to true. Silent in production.\n *\n * @param {String|Object} msg to log\n * @param {String} [type] optional `error` or `warning`\n */\n\n Uppy.prototype.log = function log(msg, type) {\n if (!this.opts.debug) {\n return;\n }\n var message = '[Uppy] [' + getTimeStamp() + '] ' + msg;\n window['uppyLog'] = window['uppyLog'] + '\\n' + 'DEBUG LOG: ' + msg;\n if (type === 'error') {\n console.error(message);\n return;\n }\n if (type === 'warning') {\n console.warn(message);\n return;\n }\n if (msg === '' + msg) {\n console.log(message);\n } else {\n message = '[Uppy] [' + getTimeStamp() + ']';\n console.log(message);\n console.dir(msg);\n }\n };\n\n /**\n * Obsolete, event listeners are now added in the constructor.\n */\n\n Uppy.prototype.run = function run() {\n this.log('Calling run() is no longer necessary.', 'warning');\n return this;\n };\n\n /**\n * Restore an upload by its ID.\n */\n\n Uppy.prototype.restore = function restore(uploadID) {\n this.log('Core: attempting to restore upload \"' + uploadID + '\"');\n if (!this.getState().currentUploads[uploadID]) {\n this._removeUpload(uploadID);\n return Promise.reject(new Error('Nonexistent upload'));\n }\n return this._runUpload(uploadID);\n };\n\n /**\n * Create an upload for a bunch of files.\n *\n * @param {Array} fileIDs File IDs to include in this upload.\n * @return {string} ID of this upload.\n */\n\n Uppy.prototype._createUpload = function _createUpload(fileIDs) {\n var _extends4;\n var uploadID = cuid();\n this.emit('upload', {\n id: uploadID,\n fileIDs: fileIDs\n });\n this.setState({\n currentUploads: _extends({}, this.getState().currentUploads, (_extends4 = {}, _extends4[uploadID] = {\n fileIDs: fileIDs,\n step: 0,\n result: {}\n }, _extends4))\n });\n return uploadID;\n };\n Uppy.prototype._getUpload = function _getUpload(uploadID) {\n return this.getState().currentUploads[uploadID];\n };\n\n /**\n * Add data to an upload's result object.\n *\n * @param {string} uploadID The ID of the upload.\n * @param {object} data Data properties to add to the result object.\n */\n\n Uppy.prototype.addResultData = function addResultData(uploadID, data) {\n var _extends5;\n if (!this._getUpload(uploadID)) {\n this.log('Not setting result for an upload that has been removed: ' + uploadID);\n return;\n }\n var currentUploads = this.getState().currentUploads;\n var currentUpload = _extends({}, currentUploads[uploadID], {\n result: _extends({}, currentUploads[uploadID].result, data)\n });\n this.setState({\n currentUploads: _extends({}, currentUploads, (_extends5 = {}, _extends5[uploadID] = currentUpload, _extends5))\n });\n };\n\n /**\n * Remove an upload, eg. if it has been canceled or completed.\n *\n * @param {string} uploadID The ID of the upload.\n */\n\n Uppy.prototype._removeUpload = function _removeUpload(uploadID) {\n var currentUploads = _extends({}, this.getState().currentUploads);\n delete currentUploads[uploadID];\n this.setState({\n currentUploads: currentUploads\n });\n };\n\n /**\n * Run an upload. This picks up where it left off in case the upload is being restored.\n *\n * @private\n */\n\n Uppy.prototype._runUpload = function _runUpload(uploadID) {\n var _this8 = this;\n var uploadData = this.getState().currentUploads[uploadID];\n var fileIDs = uploadData.fileIDs;\n var restoreStep = uploadData.step;\n var steps = [].concat(this.preProcessors, this.uploaders, this.postProcessors);\n var lastStep = Promise.resolve();\n steps.forEach(function (fn, step) {\n // Skip this step if we are restoring and have already completed this step before.\n if (step < restoreStep) {\n return;\n }\n lastStep = lastStep.then(function () {\n var _extends6;\n var _getState5 = _this8.getState(),\n currentUploads = _getState5.currentUploads;\n var currentUpload = _extends({}, currentUploads[uploadID], {\n step: step\n });\n _this8.setState({\n currentUploads: _extends({}, currentUploads, (_extends6 = {}, _extends6[uploadID] = currentUpload, _extends6))\n });\n // TODO give this the `currentUpload` object as its only parameter maybe?\n // Otherwise when more metadata may be added to the upload this would keep getting more parameters\n return fn(fileIDs, uploadID);\n }).then(function (result) {\n return null;\n });\n });\n\n // Not returning the `catch`ed promise, because we still want to return a rejected\n // promise from this method if the upload failed.\n lastStep.catch(function (err) {\n _this8.emit('error', err, uploadID);\n _this8._removeUpload(uploadID);\n });\n return lastStep.then(function () {\n var files = fileIDs.map(function (fileID) {\n return _this8.getFile(fileID);\n });\n var successful = files.filter(function (file) {\n return file && !file.error;\n });\n var failed = files.filter(function (file) {\n return file && file.error;\n });\n _this8.addResultData(uploadID, {\n successful: successful,\n failed: failed,\n uploadID: uploadID\n });\n var _getState6 = _this8.getState(),\n currentUploads = _getState6.currentUploads;\n if (!currentUploads[uploadID]) {\n _this8.log('Not setting result for an upload that has been removed: ' + uploadID);\n return;\n }\n var result = currentUploads[uploadID].result;\n _this8.emit('complete', result);\n _this8._removeUpload(uploadID);\n return result;\n });\n };\n\n /**\n * Start an upload for all the files that are not currently being uploaded.\n *\n * @return {Promise}\n */\n\n Uppy.prototype.upload = function upload() {\n var _this9 = this;\n if (!this.plugins.uploader) {\n this.log('No uploader type plugins are used', 'warning');\n }\n var files = this.getState().files;\n var onBeforeUploadResult = this.opts.onBeforeUpload(files);\n if (onBeforeUploadResult === false) {\n return Promise.reject(new Error('Not starting the upload because onBeforeUpload returned false'));\n }\n if (onBeforeUploadResult && (typeof onBeforeUploadResult === 'undefined' ? 'undefined' : _typeof(onBeforeUploadResult)) === 'object') {\n // warning after the change in 0.24\n if (onBeforeUploadResult.then) {\n throw new TypeError('onBeforeUpload() returned a Promise, but this is no longer supported. It must be synchronous.');\n }\n files = onBeforeUploadResult;\n }\n return Promise.resolve().then(function () {\n return _this9._checkMinNumberOfFiles(files);\n }).then(function () {\n var _getState7 = _this9.getState(),\n currentUploads = _getState7.currentUploads;\n // get a list of files that are currently assigned to uploads\n\n var currentlyUploadingFiles = Object.keys(currentUploads).reduce(function (prev, curr) {\n return prev.concat(currentUploads[curr].fileIDs);\n }, []);\n var waitingFileIDs = [];\n Object.keys(files).forEach(function (fileID) {\n var file = _this9.getFile(fileID);\n // if the file hasn't started uploading and hasn't already been assigned to an upload..\n if (!file.progress.uploadStarted && currentlyUploadingFiles.indexOf(fileID) === -1) {\n waitingFileIDs.push(file.id);\n }\n });\n var uploadID = _this9._createUpload(waitingFileIDs);\n return _this9._runUpload(uploadID);\n }).catch(function (err) {\n var message = (typeof err === 'undefined' ? 'undefined' : _typeof(err)) === 'object' ? err.message : err;\n var details = (typeof err === 'undefined' ? 'undefined' : _typeof(err)) === 'object' ? err.details : null;\n _this9.log(message + ' ' + details);\n _this9.info({\n message: message,\n details: details\n }, 'error', 4000);\n return Promise.reject((typeof err === 'undefined' ? 'undefined' : _typeof(err)) === 'object' ? err : new Error(err));\n });\n };\n _createClass(Uppy, [{\n key: 'state',\n get: function get() {\n return this.getState();\n }\n }]);\n return Uppy;\n}();\nmodule.exports = function (opts) {\n return new Uppy(opts);\n};\n\n// Expose class constructor.\nmodule.exports.Uppy = Uppy;\nmodule.exports.Plugin = Plugin;","var _extends = Object.assign || 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};\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\n/**\n * Translates strings with interpolation & pluralization support.\n * Extensible with custom dictionaries and pluralization functions.\n *\n * Borrows heavily from and inspired by Polyglot https://github.com/airbnb/polyglot.js,\n * basically a stripped-down version of it. Differences: pluralization functions are not hardcoded\n * and can be easily added among with dictionaries, nested objects are used for pluralization\n * as opposed to `||||` delimeter\n *\n * Usage example: `translator.translate('files_chosen', {smart_count: 3})`\n *\n * @param {object} opts\n */\nmodule.exports = function () {\n function Translator(opts) {\n _classCallCheck(this, Translator);\n var defaultOptions = {\n locale: {\n strings: {},\n pluralize: function pluralize(n) {\n if (n === 1) {\n return 0;\n }\n return 1;\n }\n }\n };\n this.opts = _extends({}, defaultOptions, opts);\n this.locale = _extends({}, defaultOptions.locale, opts.locale);\n }\n\n /**\n * Takes a string with placeholder variables like `%{smart_count} file selected`\n * and replaces it with values from options `{smart_count: 5}`\n *\n * @license https://github.com/airbnb/polyglot.js/blob/master/LICENSE\n * taken from https://github.com/airbnb/polyglot.js/blob/master/lib/polyglot.js#L299\n *\n * @param {string} phrase that needs interpolation, with placeholders\n * @param {object} options with values that will be used to replace placeholders\n * @return {string} interpolated\n */\n\n Translator.prototype.interpolate = function interpolate(phrase, options) {\n var _String$prototype = String.prototype,\n split = _String$prototype.split,\n replace = _String$prototype.replace;\n var dollarRegex = /\\$/g;\n var dollarBillsYall = '$$$$';\n var interpolated = [phrase];\n for (var arg in options) {\n if (arg !== '_' && options.hasOwnProperty(arg)) {\n // Ensure replacement value is escaped to prevent special $-prefixed\n // regex replace tokens. the \"$$$$\" is needed because each \"$\" needs to\n // be escaped with \"$\" itself, and we need two in the resulting output.\n var replacement = options[arg];\n if (typeof replacement === 'string') {\n replacement = replace.call(options[arg], dollarRegex, dollarBillsYall);\n }\n // We create a new `RegExp` each time instead of using a more-efficient\n // string replace so that the same argument can be replaced multiple times\n // in the same phrase.\n interpolated = insertReplacement(interpolated, new RegExp('%\\\\{' + arg + '\\\\}', 'g'), replacement);\n }\n }\n return interpolated;\n function insertReplacement(source, rx, replacement) {\n var newParts = [];\n source.forEach(function (chunk) {\n split.call(chunk, rx).forEach(function (raw, i, list) {\n if (raw !== '') {\n newParts.push(raw);\n }\n\n // Interlace with the `replacement` value\n if (i < list.length - 1) {\n newParts.push(replacement);\n }\n });\n });\n return newParts;\n }\n };\n\n /**\n * Public translate method\n *\n * @param {string} key\n * @param {object} options with values that will be used later to replace placeholders in string\n * @return {string} translated (and interpolated)\n */\n\n Translator.prototype.translate = function translate(key, options) {\n return this.translateArray(key, options).join('');\n };\n\n /**\n * Get a translation and return the translated and interpolated parts as an array.\n * @param {string} key\n * @param {object} options with values that will be used to replace placeholders\n * @return {Array} The translated and interpolated parts, in order.\n */\n\n Translator.prototype.translateArray = function translateArray(key, options) {\n if (options && typeof options.smart_count !== 'undefined') {\n var plural = this.locale.pluralize(options.smart_count);\n return this.interpolate(this.opts.locale.strings[key][plural], options);\n }\n return this.interpolate(this.opts.locale.strings[key], options);\n };\n return Translator;\n}();","var VNode = function VNode() {};\nvar options = {};\nvar stack = [];\nvar EMPTY_CHILDREN = [];\nfunction h(nodeName, attributes) {\n var children = EMPTY_CHILDREN,\n lastSimple,\n child,\n simple,\n i;\n for (i = arguments.length; i-- > 2;) {\n stack.push(arguments[i]);\n }\n if (attributes && attributes.children != null) {\n if (!stack.length) stack.push(attributes.children);\n delete attributes.children;\n }\n while (stack.length) {\n if ((child = stack.pop()) && child.pop !== undefined) {\n for (i = child.length; i--;) {\n stack.push(child[i]);\n }\n } else {\n if (typeof child === 'boolean') child = null;\n if (simple = typeof nodeName !== 'function') {\n if (child == null) child = '';else if (typeof child === 'number') child = String(child);else if (typeof child !== 'string') simple = false;\n }\n if (simple && lastSimple) {\n children[children.length - 1] += child;\n } else if (children === EMPTY_CHILDREN) {\n children = [child];\n } else {\n children.push(child);\n }\n lastSimple = simple;\n }\n }\n var p = new VNode();\n p.nodeName = nodeName;\n p.children = children;\n p.attributes = attributes == null ? undefined : attributes;\n p.key = attributes == null ? undefined : attributes.key;\n if (options.vnode !== undefined) options.vnode(p);\n return p;\n}\nfunction extend(obj, props) {\n for (var i in props) {\n obj[i] = props[i];\n }\n return obj;\n}\nfunction applyRef(ref, value) {\n if (ref) {\n if (typeof ref == 'function') ref(value);else ref.current = value;\n }\n}\nvar defer = typeof Promise == 'function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\nfunction cloneElement(vnode, props) {\n return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);\n}\nvar IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\nvar items = [];\nfunction enqueueRender(component) {\n if (!component._dirty && (component._dirty = true) && items.push(component) == 1) {\n (options.debounceRendering || defer)(rerender);\n }\n}\nfunction rerender() {\n var p;\n while (p = items.pop()) {\n if (p._dirty) renderComponent(p);\n }\n}\nfunction isSameNodeType(node, vnode, hydrating) {\n if (typeof vnode === 'string' || typeof vnode === 'number') {\n return node.splitText !== undefined;\n }\n if (typeof vnode.nodeName === 'string') {\n return !node._componentConstructor && isNamedNode(node, vnode.nodeName);\n }\n return hydrating || node._componentConstructor === vnode.nodeName;\n}\nfunction isNamedNode(node, nodeName) {\n return node.normalizedNodeName === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();\n}\nfunction getNodeProps(vnode) {\n var props = extend({}, vnode.attributes);\n props.children = vnode.children;\n var defaultProps = vnode.nodeName.defaultProps;\n if (defaultProps !== undefined) {\n for (var i in defaultProps) {\n if (props[i] === undefined) {\n props[i] = defaultProps[i];\n }\n }\n }\n return props;\n}\nfunction createNode(nodeName, isSvg) {\n var node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n node.normalizedNodeName = nodeName;\n return node;\n}\nfunction removeNode(node) {\n var parentNode = node.parentNode;\n if (parentNode) parentNode.removeChild(node);\n}\nfunction setAccessor(node, name, old, value, isSvg) {\n if (name === 'className') name = 'class';\n if (name === 'key') {} else if (name === 'ref') {\n applyRef(old, null);\n applyRef(value, node);\n } else if (name === 'class' && !isSvg) {\n node.className = value || '';\n } else if (name === 'style') {\n if (!value || typeof value === 'string' || typeof old === 'string') {\n node.style.cssText = value || '';\n }\n if (value && typeof value === 'object') {\n if (typeof old !== 'string') {\n for (var i in old) {\n if (!(i in value)) node.style[i] = '';\n }\n }\n for (var i in value) {\n node.style[i] = typeof value[i] === 'number' && IS_NON_DIMENSIONAL.test(i) === false ? value[i] + 'px' : value[i];\n }\n }\n } else if (name === 'dangerouslySetInnerHTML') {\n if (value) node.innerHTML = value.__html || '';\n } else if (name[0] == 'o' && name[1] == 'n') {\n var useCapture = name !== (name = name.replace(/Capture$/, ''));\n name = name.toLowerCase().substring(2);\n if (value) {\n if (!old) node.addEventListener(name, eventProxy, useCapture);\n } else {\n node.removeEventListener(name, eventProxy, useCapture);\n }\n (node._listeners || (node._listeners = {}))[name] = value;\n } else if (name !== 'list' && name !== 'type' && !isSvg && name in node) {\n try {\n node[name] = value == null ? '' : value;\n } catch (e) {}\n if ((value == null || value === false) && name != 'spellcheck') node.removeAttribute(name);\n } else {\n var ns = isSvg && name !== (name = name.replace(/^xlink:?/, ''));\n if (value == null || value === false) {\n if (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase());else node.removeAttribute(name);\n } else if (typeof value !== 'function') {\n if (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value);else node.setAttribute(name, value);\n }\n }\n}\nfunction eventProxy(e) {\n return this._listeners[e.type](options.event && options.event(e) || e);\n}\nvar mounts = [];\nvar diffLevel = 0;\nvar isSvgMode = false;\nvar hydrating = false;\nfunction flushMounts() {\n var c;\n while (c = mounts.shift()) {\n if (options.afterMount) options.afterMount(c);\n if (c.componentDidMount) c.componentDidMount();\n }\n}\nfunction diff(dom, vnode, context, mountAll, parent, componentRoot) {\n if (!diffLevel++) {\n isSvgMode = parent != null && parent.ownerSVGElement !== undefined;\n hydrating = dom != null && !('__preactattr_' in dom);\n }\n var ret = idiff(dom, vnode, context, mountAll, componentRoot);\n if (parent && ret.parentNode !== parent) parent.appendChild(ret);\n if (! --diffLevel) {\n hydrating = false;\n if (!componentRoot) flushMounts();\n }\n return ret;\n}\nfunction idiff(dom, vnode, context, mountAll, componentRoot) {\n var out = dom,\n prevSvgMode = isSvgMode;\n if (vnode == null || typeof vnode === 'boolean') vnode = '';\n if (typeof vnode === 'string' || typeof vnode === 'number') {\n if (dom && dom.splitText !== undefined && dom.parentNode && (!dom._component || componentRoot)) {\n if (dom.nodeValue != vnode) {\n dom.nodeValue = vnode;\n }\n } else {\n out = document.createTextNode(vnode);\n if (dom) {\n if (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n recollectNodeTree(dom, true);\n }\n }\n out['__preactattr_'] = true;\n return out;\n }\n var vnodeName = vnode.nodeName;\n if (typeof vnodeName === 'function') {\n return buildComponentFromVNode(dom, vnode, context, mountAll);\n }\n isSvgMode = vnodeName === 'svg' ? true : vnodeName === 'foreignObject' ? false : isSvgMode;\n vnodeName = String(vnodeName);\n if (!dom || !isNamedNode(dom, vnodeName)) {\n out = createNode(vnodeName, isSvgMode);\n if (dom) {\n while (dom.firstChild) {\n out.appendChild(dom.firstChild);\n }\n if (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n recollectNodeTree(dom, true);\n }\n }\n var fc = out.firstChild,\n props = out['__preactattr_'],\n vchildren = vnode.children;\n if (props == null) {\n props = out['__preactattr_'] = {};\n for (var a = out.attributes, i = a.length; i--;) {\n props[a[i].name] = a[i].value;\n }\n }\n if (!hydrating && vchildren && vchildren.length === 1 && typeof vchildren[0] === 'string' && fc != null && fc.splitText !== undefined && fc.nextSibling == null) {\n if (fc.nodeValue != vchildren[0]) {\n fc.nodeValue = vchildren[0];\n }\n } else if (vchildren && vchildren.length || fc != null) {\n innerDiffNode(out, vchildren, context, mountAll, hydrating || props.dangerouslySetInnerHTML != null);\n }\n diffAttributes(out, vnode.attributes, props);\n isSvgMode = prevSvgMode;\n return out;\n}\nfunction innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n var originalChildren = dom.childNodes,\n children = [],\n keyed = {},\n keyedLen = 0,\n min = 0,\n len = originalChildren.length,\n childrenLen = 0,\n vlen = vchildren ? vchildren.length : 0,\n j,\n c,\n f,\n vchild,\n child;\n if (len !== 0) {\n for (var i = 0; i < len; i++) {\n var _child = originalChildren[i],\n props = _child['__preactattr_'],\n key = vlen && props ? _child._component ? _child._component.__key : props.key : null;\n if (key != null) {\n keyedLen++;\n keyed[key] = _child;\n } else if (props || (_child.splitText !== undefined ? isHydrating ? _child.nodeValue.trim() : true : isHydrating)) {\n children[childrenLen++] = _child;\n }\n }\n }\n if (vlen !== 0) {\n for (var i = 0; i < vlen; i++) {\n vchild = vchildren[i];\n child = null;\n var key = vchild.key;\n if (key != null) {\n if (keyedLen && keyed[key] !== undefined) {\n child = keyed[key];\n keyed[key] = undefined;\n keyedLen--;\n }\n } else if (min < childrenLen) {\n for (j = min; j < childrenLen; j++) {\n if (children[j] !== undefined && isSameNodeType(c = children[j], vchild, isHydrating)) {\n child = c;\n children[j] = undefined;\n if (j === childrenLen - 1) childrenLen--;\n if (j === min) min++;\n break;\n }\n }\n }\n child = idiff(child, vchild, context, mountAll);\n f = originalChildren[i];\n if (child && child !== dom && child !== f) {\n if (f == null) {\n dom.appendChild(child);\n } else if (child === f.nextSibling) {\n removeNode(f);\n } else {\n dom.insertBefore(child, f);\n }\n }\n }\n }\n if (keyedLen) {\n for (var i in keyed) {\n if (keyed[i] !== undefined) recollectNodeTree(keyed[i], false);\n }\n }\n while (min <= childrenLen) {\n if ((child = children[childrenLen--]) !== undefined) recollectNodeTree(child, false);\n }\n}\nfunction recollectNodeTree(node, unmountOnly) {\n var component = node._component;\n if (component) {\n unmountComponent(component);\n } else {\n if (node['__preactattr_'] != null) applyRef(node['__preactattr_'].ref, null);\n if (unmountOnly === false || node['__preactattr_'] == null) {\n removeNode(node);\n }\n removeChildren(node);\n }\n}\nfunction removeChildren(node) {\n node = node.lastChild;\n while (node) {\n var next = node.previousSibling;\n recollectNodeTree(node, true);\n node = next;\n }\n}\nfunction diffAttributes(dom, attrs, old) {\n var name;\n for (name in old) {\n if (!(attrs && attrs[name] != null) && old[name] != null) {\n setAccessor(dom, name, old[name], old[name] = undefined, isSvgMode);\n }\n }\n for (name in attrs) {\n if (name !== 'children' && name !== 'innerHTML' && (!(name in old) || attrs[name] !== (name === 'value' || name === 'checked' ? dom[name] : old[name]))) {\n setAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n }\n }\n}\nvar recyclerComponents = [];\nfunction createComponent(Ctor, props, context) {\n var inst,\n i = recyclerComponents.length;\n if (Ctor.prototype && Ctor.prototype.render) {\n inst = new Ctor(props, context);\n Component.call(inst, props, context);\n } else {\n inst = new Component(props, context);\n inst.constructor = Ctor;\n inst.render = doRender;\n }\n while (i--) {\n if (recyclerComponents[i].constructor === Ctor) {\n inst.nextBase = recyclerComponents[i].nextBase;\n recyclerComponents.splice(i, 1);\n return inst;\n }\n }\n return inst;\n}\nfunction doRender(props, state, context) {\n return this.constructor(props, context);\n}\nfunction setComponentProps(component, props, renderMode, context, mountAll) {\n if (component._disable) return;\n component._disable = true;\n component.__ref = props.ref;\n component.__key = props.key;\n delete props.ref;\n delete props.key;\n if (typeof component.constructor.getDerivedStateFromProps === 'undefined') {\n if (!component.base || mountAll) {\n if (component.componentWillMount) component.componentWillMount();\n } else if (component.componentWillReceiveProps) {\n component.componentWillReceiveProps(props, context);\n }\n }\n if (context && context !== component.context) {\n if (!component.prevContext) component.prevContext = component.context;\n component.context = context;\n }\n if (!component.prevProps) component.prevProps = component.props;\n component.props = props;\n component._disable = false;\n if (renderMode !== 0) {\n if (renderMode === 1 || options.syncComponentUpdates !== false || !component.base) {\n renderComponent(component, 1, mountAll);\n } else {\n enqueueRender(component);\n }\n }\n applyRef(component.__ref, component);\n}\nfunction renderComponent(component, renderMode, mountAll, isChild) {\n if (component._disable) return;\n var props = component.props,\n state = component.state,\n context = component.context,\n previousProps = component.prevProps || props,\n previousState = component.prevState || state,\n previousContext = component.prevContext || context,\n isUpdate = component.base,\n nextBase = component.nextBase,\n initialBase = isUpdate || nextBase,\n initialChildComponent = component._component,\n skip = false,\n snapshot = previousContext,\n rendered,\n inst,\n cbase;\n if (component.constructor.getDerivedStateFromProps) {\n state = extend(extend({}, state), component.constructor.getDerivedStateFromProps(props, state));\n component.state = state;\n }\n if (isUpdate) {\n component.props = previousProps;\n component.state = previousState;\n component.context = previousContext;\n if (renderMode !== 2 && component.shouldComponentUpdate && component.shouldComponentUpdate(props, state, context) === false) {\n skip = true;\n } else if (component.componentWillUpdate) {\n component.componentWillUpdate(props, state, context);\n }\n component.props = props;\n component.state = state;\n component.context = context;\n }\n component.prevProps = component.prevState = component.prevContext = component.nextBase = null;\n component._dirty = false;\n if (!skip) {\n rendered = component.render(props, state, context);\n if (component.getChildContext) {\n context = extend(extend({}, context), component.getChildContext());\n }\n if (isUpdate && component.getSnapshotBeforeUpdate) {\n snapshot = component.getSnapshotBeforeUpdate(previousProps, previousState);\n }\n var childComponent = rendered && rendered.nodeName,\n toUnmount,\n base;\n if (typeof childComponent === 'function') {\n var childProps = getNodeProps(rendered);\n inst = initialChildComponent;\n if (inst && inst.constructor === childComponent && childProps.key == inst.__key) {\n setComponentProps(inst, childProps, 1, context, false);\n } else {\n toUnmount = inst;\n component._component = inst = createComponent(childComponent, childProps, context);\n inst.nextBase = inst.nextBase || nextBase;\n inst._parentComponent = component;\n setComponentProps(inst, childProps, 0, context, false);\n renderComponent(inst, 1, mountAll, true);\n }\n base = inst.base;\n } else {\n cbase = initialBase;\n toUnmount = initialChildComponent;\n if (toUnmount) {\n cbase = component._component = null;\n }\n if (initialBase || renderMode === 1) {\n if (cbase) cbase._component = null;\n base = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, true);\n }\n }\n if (initialBase && base !== initialBase && inst !== initialChildComponent) {\n var baseParent = initialBase.parentNode;\n if (baseParent && base !== baseParent) {\n baseParent.replaceChild(base, initialBase);\n if (!toUnmount) {\n initialBase._component = null;\n recollectNodeTree(initialBase, false);\n }\n }\n }\n if (toUnmount) {\n unmountComponent(toUnmount);\n }\n component.base = base;\n if (base && !isChild) {\n var componentRef = component,\n t = component;\n while (t = t._parentComponent) {\n (componentRef = t).base = base;\n }\n base._component = componentRef;\n base._componentConstructor = componentRef.constructor;\n }\n }\n if (!isUpdate || mountAll) {\n mounts.push(component);\n } else if (!skip) {\n if (component.componentDidUpdate) {\n component.componentDidUpdate(previousProps, previousState, snapshot);\n }\n if (options.afterUpdate) options.afterUpdate(component);\n }\n while (component._renderCallbacks.length) {\n component._renderCallbacks.pop().call(component);\n }\n if (!diffLevel && !isChild) flushMounts();\n}\nfunction buildComponentFromVNode(dom, vnode, context, mountAll) {\n var c = dom && dom._component,\n originalComponent = c,\n oldDom = dom,\n isDirectOwner = c && dom._componentConstructor === vnode.nodeName,\n isOwner = isDirectOwner,\n props = getNodeProps(vnode);\n while (c && !isOwner && (c = c._parentComponent)) {\n isOwner = c.constructor === vnode.nodeName;\n }\n if (c && isOwner && (!mountAll || c._component)) {\n setComponentProps(c, props, 3, context, mountAll);\n dom = c.base;\n } else {\n if (originalComponent && !isDirectOwner) {\n unmountComponent(originalComponent);\n dom = oldDom = null;\n }\n c = createComponent(vnode.nodeName, props, context);\n if (dom && !c.nextBase) {\n c.nextBase = dom;\n oldDom = null;\n }\n setComponentProps(c, props, 1, context, mountAll);\n dom = c.base;\n if (oldDom && dom !== oldDom) {\n oldDom._component = null;\n recollectNodeTree(oldDom, false);\n }\n }\n return dom;\n}\nfunction unmountComponent(component) {\n if (options.beforeUnmount) options.beforeUnmount(component);\n var base = component.base;\n component._disable = true;\n if (component.componentWillUnmount) component.componentWillUnmount();\n component.base = null;\n var inner = component._component;\n if (inner) {\n unmountComponent(inner);\n } else if (base) {\n if (base['__preactattr_'] != null) applyRef(base['__preactattr_'].ref, null);\n component.nextBase = base;\n removeNode(base);\n recyclerComponents.push(component);\n removeChildren(base);\n }\n applyRef(component.__ref, null);\n}\nfunction Component(props, context) {\n this._dirty = true;\n this.context = context;\n this.props = props;\n this.state = this.state || {};\n this._renderCallbacks = [];\n}\nextend(Component.prototype, {\n setState: function setState(state, callback) {\n if (!this.prevState) this.prevState = this.state;\n this.state = extend(extend({}, this.state), typeof state === 'function' ? state(this.state, this.props) : state);\n if (callback) this._renderCallbacks.push(callback);\n enqueueRender(this);\n },\n forceUpdate: function forceUpdate(callback) {\n if (callback) this._renderCallbacks.push(callback);\n renderComponent(this, 2);\n },\n render: function render() {}\n});\nfunction render(vnode, parent, merge) {\n return diff(merge, vnode, {}, false, parent, false);\n}\nfunction createRef() {\n return {};\n}\nvar preact = {\n h: h,\n createElement: h,\n cloneElement: cloneElement,\n createRef: createRef,\n Component: Component,\n render: render,\n rerender: rerender,\n options: options\n};\nexport default preact;\nexport { h, h as createElement, cloneElement, createRef, Component, render, rerender, options };","var _extends = Object.assign || 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};\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\nvar cuid = require('cuid');\nvar Translator = require('@uppy/utils/lib/Translator');\nvar _require2 = require('@uppy/server-utils'),\n Provider = _require2.Provider,\n Socket = _require2.Socket;\nvar emitSocketProgress = require('@uppy/utils/lib/emitSocketProgress');\nvar getSocketHost = require('@uppy/utils/lib/getSocketHost');\nvar settle = require('@uppy/utils/lib/settle');\nvar limitPromises = require('@uppy/utils/lib/limitPromises');\nfunction buildResponseError(xhr, error) {\n // No error message\n if (!error) error = new Error('Upload error');\n // Got an error message string\n if (typeof error === 'string') error = new Error(error);\n // Got something else\n if (!(error instanceof Error)) {\n error = _extends(new Error('Upload error'), {\n data: error\n });\n }\n error.request = xhr;\n return error;\n}\nmodule.exports = function (_Plugin) {\n _inherits(XHRUpload, _Plugin);\n function XHRUpload(uppy, opts) {\n _classCallCheck(this, XHRUpload);\n var _this = _possibleConstructorReturn(this, _Plugin.call(this, uppy, opts));\n _this.type = 'uploader';\n _this.id = 'XHRUpload';\n _this.title = 'XHRUpload';\n var defaultLocale = {\n strings: {\n timedOut: 'Upload stalled for %{seconds} seconds, aborting.'\n }\n\n // Default options\n };\n var defaultOptions = {\n formData: true,\n fieldName: 'files[]',\n method: 'post',\n metaFields: null,\n responseUrlFieldName: 'url',\n bundle: false,\n headers: {},\n locale: defaultLocale,\n timeout: 30 * 1000,\n limit: 0,\n withCredentials: false,\n /**\n * @typedef respObj\n * @property {string} responseText\n * @property {number} status\n * @property {string} statusText\n * @property {Object.} headers\n *\n * @param {string} responseText the response body string\n * @param {XMLHttpRequest | respObj} response the response object (XHR or similar)\n */\n getResponseData: function getResponseData(responseText, response) {\n var parsedResponse = {};\n try {\n parsedResponse = JSON.parse(responseText);\n } catch (err) {\n console.log(err);\n }\n return parsedResponse;\n },\n /**\n *\n * @param {string} responseText the response body string\n * @param {XMLHttpRequest | respObj} response the response object (XHR or similar)\n */\n getResponseError: function getResponseError(responseText, response) {\n return new Error('Upload error');\n }\n };\n\n // Merge default options with the ones set by user\n _this.opts = _extends({}, defaultOptions, opts);\n _this.locale = _extends({}, defaultLocale, _this.opts.locale);\n _this.locale.strings = _extends({}, defaultLocale.strings, _this.opts.locale.strings);\n\n // i18n\n _this.translator = new Translator({\n locale: _this.locale\n });\n _this.i18n = _this.translator.translate.bind(_this.translator);\n _this.handleUpload = _this.handleUpload.bind(_this);\n\n // Simultaneous upload limiting is shared across all uploads with this plugin.\n if (typeof _this.opts.limit === 'number' && _this.opts.limit !== 0) {\n _this.limitUploads = limitPromises(_this.opts.limit);\n } else {\n _this.limitUploads = function (fn) {\n return fn;\n };\n }\n if (_this.opts.bundle && !_this.opts.formData) {\n throw new Error('`opts.formData` must be true when `opts.bundle` is enabled.');\n }\n return _this;\n }\n XHRUpload.prototype.getOptions = function getOptions(file) {\n var overrides = this.uppy.getState().xhrUpload;\n var opts = _extends({}, this.opts, overrides || {}, file.xhrUpload || {});\n opts.headers = {};\n _extends(opts.headers, this.opts.headers);\n if (overrides) {\n _extends(opts.headers, overrides.headers);\n }\n if (file.xhrUpload) {\n _extends(opts.headers, file.xhrUpload.headers);\n }\n return opts;\n };\n\n // Helper to abort upload requests if there has not been any progress for `timeout` ms.\n // Create an instance using `timer = createProgressTimeout(10000, onTimeout)`\n // Call `timer.progress()` to signal that there has been progress of any kind.\n // Call `timer.done()` when the upload has completed.\n\n XHRUpload.prototype.createProgressTimeout = function createProgressTimeout(timeout, timeoutHandler) {\n var uppy = this.uppy;\n var self = this;\n var isDone = false;\n function onTimedOut() {\n uppy.log('[XHRUpload] timed out');\n var error = new Error(self.i18n('timedOut', {\n seconds: Math.ceil(timeout / 1000)\n }));\n timeoutHandler(error);\n }\n var aliveTimer = null;\n function progress() {\n // Some browsers fire another progress event when the upload is\n // cancelled, so we have to ignore progress after the timer was\n // told to stop.\n if (isDone) return;\n if (timeout > 0) {\n if (aliveTimer) clearTimeout(aliveTimer);\n aliveTimer = setTimeout(onTimedOut, timeout);\n }\n }\n function done() {\n uppy.log('[XHRUpload] timer done');\n if (aliveTimer) {\n clearTimeout(aliveTimer);\n aliveTimer = null;\n }\n isDone = true;\n }\n return {\n progress: progress,\n done: done\n };\n };\n XHRUpload.prototype.createFormDataUpload = function createFormDataUpload(file, opts) {\n var formPost = new FormData();\n var metaFields = Array.isArray(opts.metaFields) ? opts.metaFields\n // Send along all fields by default.\n : Object.keys(file.meta);\n metaFields.forEach(function (item) {\n formPost.append(item, file.meta[item]);\n });\n formPost.append(opts.fieldName, file.data);\n return formPost;\n };\n XHRUpload.prototype.createBareUpload = function createBareUpload(file, opts) {\n return file.data;\n };\n XHRUpload.prototype.upload = function upload(file, current, total) {\n var _this2 = this;\n var opts = this.getOptions(file);\n this.uppy.log('uploading ' + current + ' of ' + total);\n return new Promise(function (resolve, reject) {\n var data = opts.formData ? _this2.createFormDataUpload(file, opts) : _this2.createBareUpload(file, opts);\n var timer = _this2.createProgressTimeout(opts.timeout, function (error) {\n xhr.abort();\n _this2.uppy.emit('upload-error', file, error);\n reject(error);\n });\n var xhr = new XMLHttpRequest();\n var id = cuid();\n xhr.upload.addEventListener('loadstart', function (ev) {\n _this2.uppy.log('[XHRUpload] ' + id + ' started');\n // Begin checking for timeouts when loading starts.\n timer.progress();\n });\n xhr.upload.addEventListener('progress', function (ev) {\n _this2.uppy.log('[XHRUpload] ' + id + ' progress: ' + ev.loaded + ' / ' + ev.total);\n timer.progress();\n if (ev.lengthComputable) {\n _this2.uppy.emit('upload-progress', file, {\n uploader: _this2,\n bytesUploaded: ev.loaded,\n bytesTotal: ev.total\n });\n }\n });\n xhr.addEventListener('load', function (ev) {\n _this2.uppy.log('[XHRUpload] ' + id + ' finished');\n timer.done();\n if (ev.target.status >= 200 && ev.target.status < 300) {\n var body = opts.getResponseData(xhr.responseText, xhr);\n var uploadURL = body[opts.responseUrlFieldName];\n var response = {\n status: ev.target.status,\n body: body,\n uploadURL: uploadURL\n };\n _this2.uppy.setFileState(file.id, {\n response: response\n });\n _this2.uppy.emit('upload-success', file, body, uploadURL);\n if (uploadURL) {\n _this2.uppy.log('Download ' + file.name + ' from ' + file.uploadURL);\n }\n return resolve(file);\n } else {\n var _body = opts.getResponseData(xhr.responseText, xhr);\n var error = buildResponseError(xhr, opts.getResponseError(xhr.responseText, xhr));\n var _response = {\n status: ev.target.status,\n body: _body\n };\n _this2.uppy.setFileState(file.id, {\n response: _response\n });\n _this2.uppy.emit('upload-error', file, error);\n return reject(error);\n }\n });\n xhr.addEventListener('error', function (ev) {\n _this2.uppy.log('[XHRUpload] ' + id + ' errored');\n timer.done();\n var error = buildResponseError(xhr, opts.getResponseError(xhr.responseText, xhr));\n _this2.uppy.emit('upload-error', file, error);\n return reject(error);\n });\n xhr.open(opts.method.toUpperCase(), opts.endpoint, true);\n xhr.withCredentials = opts.withCredentials;\n Object.keys(opts.headers).forEach(function (header) {\n xhr.setRequestHeader(header, opts.headers[header]);\n });\n xhr.send(data);\n _this2.uppy.on('file-removed', function (removedFile) {\n if (removedFile.id === file.id) {\n timer.done();\n xhr.abort();\n }\n });\n _this2.uppy.on('upload-cancel', function (fileID) {\n if (fileID === file.id) {\n timer.done();\n xhr.abort();\n }\n });\n _this2.uppy.on('cancel-all', function () {\n timer.done();\n xhr.abort();\n });\n });\n };\n XHRUpload.prototype.uploadRemote = function uploadRemote(file, current, total) {\n var _this3 = this;\n var opts = this.getOptions(file);\n return new Promise(function (resolve, reject) {\n var fields = {};\n var metaFields = Array.isArray(opts.metaFields) ? opts.metaFields\n // Send along all fields by default.\n : Object.keys(file.meta);\n metaFields.forEach(function (name) {\n fields[name] = file.meta[name];\n });\n var provider = new Provider(_this3.uppy, file.remote.providerOptions);\n provider.post(file.remote.url, _extends({}, file.remote.body, {\n endpoint: opts.endpoint,\n size: file.data.size,\n fieldname: opts.fieldName,\n metadata: fields,\n headers: opts.headers\n })).then(function (res) {\n var token = res.token;\n var host = getSocketHost(file.remote.serverUrl);\n var socket = new Socket({\n target: host + '/api/' + token\n });\n socket.on('progress', function (progressData) {\n return emitSocketProgress(_this3, progressData, file);\n });\n socket.on('success', function (data) {\n var resp = opts.getResponseData(data.response.responseText, data.response);\n var uploadURL = resp[opts.responseUrlFieldName];\n _this3.uppy.emit('upload-success', file, resp, uploadURL);\n socket.close();\n return resolve();\n });\n socket.on('error', function (errData) {\n var resp = errData.response;\n var error = resp ? opts.getResponseError(resp.responseText, resp) : _extends(new Error(errData.error.message), {\n cause: errData.error\n });\n _this3.uppy.emit('upload-error', file, error);\n reject(error);\n });\n });\n });\n };\n XHRUpload.prototype.uploadBundle = function uploadBundle(files) {\n var _this4 = this;\n return new Promise(function (resolve, reject) {\n var endpoint = _this4.opts.endpoint;\n var method = _this4.opts.method;\n var formData = new FormData();\n files.forEach(function (file, i) {\n var opts = _this4.getOptions(file);\n formData.append(opts.fieldName, file.data);\n });\n var xhr = new XMLHttpRequest();\n xhr.withCredentials = _this4.opts.withCredentials;\n var timer = _this4.createProgressTimeout(_this4.opts.timeout, function (error) {\n xhr.abort();\n emitError(error);\n reject(error);\n });\n var emitError = function emitError(error) {\n files.forEach(function (file) {\n _this4.uppy.emit('upload-error', file, error);\n });\n };\n xhr.upload.addEventListener('loadstart', function (ev) {\n _this4.uppy.log('[XHRUpload] started uploading bundle');\n timer.progress();\n });\n xhr.upload.addEventListener('progress', function (ev) {\n timer.progress();\n if (!ev.lengthComputable) return;\n files.forEach(function (file) {\n _this4.uppy.emit('upload-progress', file, {\n uploader: _this4,\n bytesUploaded: ev.loaded / ev.total * file.size,\n bytesTotal: file.size\n });\n });\n });\n xhr.addEventListener('load', function (ev) {\n timer.done();\n if (ev.target.status >= 200 && ev.target.status < 300) {\n var resp = _this4.opts.getResponseData(xhr.responseText, xhr);\n files.forEach(function (file) {\n _this4.uppy.emit('upload-success', file, resp);\n });\n return resolve();\n }\n var error = _this4.opts.getResponseError(xhr.responseText, xhr) || new Error('Upload error');\n error.request = xhr;\n emitError(error);\n return reject(error);\n });\n xhr.addEventListener('error', function (ev) {\n timer.done();\n var error = _this4.opts.getResponseError(xhr.responseText, xhr) || new Error('Upload error');\n emitError(error);\n return reject(error);\n });\n _this4.uppy.on('cancel-all', function () {\n timer.done();\n xhr.abort();\n });\n xhr.open(method.toUpperCase(), endpoint, true);\n xhr.withCredentials = _this4.opts.withCredentials;\n Object.keys(_this4.opts.headers).forEach(function (header) {\n xhr.setRequestHeader(header, _this4.opts.headers[header]);\n });\n xhr.send(formData);\n files.forEach(function (file) {\n _this4.uppy.emit('upload-started', file);\n });\n });\n };\n XHRUpload.prototype.uploadFiles = function uploadFiles(files) {\n var _this5 = this;\n var actions = files.map(function (file, i) {\n var current = parseInt(i, 10) + 1;\n var total = files.length;\n if (file.error) {\n return function () {\n return Promise.reject(new Error(file.error));\n };\n } else if (file.isRemote) {\n // We emit upload-started here, so that it's also emitted for files\n // that have to wait due to the `limit` option.\n _this5.uppy.emit('upload-started', file);\n return _this5.uploadRemote.bind(_this5, file, current, total);\n } else {\n _this5.uppy.emit('upload-started', file);\n return _this5.upload.bind(_this5, file, current, total);\n }\n });\n var promises = actions.map(function (action) {\n var limitedAction = _this5.limitUploads(action);\n return limitedAction();\n });\n return settle(promises);\n };\n XHRUpload.prototype.handleUpload = function handleUpload(fileIDs) {\n var _this6 = this;\n if (fileIDs.length === 0) {\n this.uppy.log('[XHRUpload] No files to upload!');\n return Promise.resolve();\n }\n this.uppy.log('[XHRUpload] Uploading...');\n var files = fileIDs.map(function (fileID) {\n return _this6.uppy.getFile(fileID);\n });\n if (this.opts.bundle) {\n return this.uploadBundle(files);\n }\n return this.uploadFiles(files).then(function () {\n return null;\n });\n };\n XHRUpload.prototype.install = function install() {\n if (this.opts.bundle) {\n this.uppy.setState({\n capabilities: _extends({}, this.uppy.getState().capabilities, {\n bundled: true\n })\n });\n }\n this.uppy.addUploader(this.handleUpload);\n };\n XHRUpload.prototype.uninstall = function uninstall() {\n if (this.opts.bundle) {\n this.uppy.setState({\n capabilities: _extends({}, this.uppy.getState().capabilities, {\n bundled: true\n })\n });\n }\n this.uppy.removeUploader(this.handleUpload);\n };\n return XHRUpload;\n}(Plugin);","/**\n* Create an event emitter with namespaces\n* @name createNamespaceEmitter\n* @example\n* var emitter = require('./index')()\n*\n* emitter.on('*', function () {\n* console.log('all events emitted', this.event)\n* })\n*\n* emitter.on('example', function () {\n* console.log('example event emitted')\n* })\n*/\nmodule.exports = function createNamespaceEmitter() {\n var emitter = {};\n var _fns = emitter._fns = {};\n\n /**\n * Emit an event. Optionally namespace the event. Handlers are fired in the order in which they were added with exact matches taking precedence. Separate the namespace and event with a `:`\n * @name emit\n * @param {String} event – the name of the event, with optional namespace\n * @param {...*} data – up to 6 arguments that are passed to the event listener\n * @example\n * emitter.emit('example')\n * emitter.emit('demo:test')\n * emitter.emit('data', { example: true}, 'a string', 1)\n */\n emitter.emit = function emit(event, arg1, arg2, arg3, arg4, arg5, arg6) {\n var toEmit = getListeners(event);\n if (toEmit.length) {\n emitAll(event, toEmit, [arg1, arg2, arg3, arg4, arg5, arg6]);\n }\n };\n\n /**\n * Create en event listener.\n * @name on\n * @param {String} event\n * @param {Function} fn\n * @example\n * emitter.on('example', function () {})\n * emitter.on('demo', function () {})\n */\n emitter.on = function on(event, fn) {\n if (!_fns[event]) {\n _fns[event] = [];\n }\n _fns[event].push(fn);\n };\n\n /**\n * Create en event listener that fires once.\n * @name once\n * @param {String} event\n * @param {Function} fn\n * @example\n * emitter.once('example', function () {})\n * emitter.once('demo', function () {})\n */\n emitter.once = function once(event, fn) {\n function one() {\n fn.apply(this, arguments);\n emitter.off(event, one);\n }\n this.on(event, one);\n };\n\n /**\n * Stop listening to an event. Stop all listeners on an event by only passing the event name. Stop a single listener by passing that event handler as a callback.\n * You must be explicit about what will be unsubscribed: `emitter.off('demo')` will unsubscribe an `emitter.on('demo')` listener,\n * `emitter.off('demo:example')` will unsubscribe an `emitter.on('demo:example')` listener\n * @name off\n * @param {String} event\n * @param {Function} [fn] – the specific handler\n * @example\n * emitter.off('example')\n * emitter.off('demo', function () {})\n */\n emitter.off = function off(event, fn) {\n var keep = [];\n if (event && fn) {\n var fns = this._fns[event];\n var i = 0;\n var l = fns ? fns.length : 0;\n for (i; i < l; i++) {\n if (fns[i] !== fn) {\n keep.push(fns[i]);\n }\n }\n }\n keep.length ? this._fns[event] = keep : delete this._fns[event];\n };\n function getListeners(e) {\n var out = _fns[e] ? _fns[e] : [];\n var idx = e.indexOf(':');\n var args = idx === -1 ? [e] : [e.substring(0, idx), e.substring(idx + 1)];\n var keys = Object.keys(_fns);\n var i = 0;\n var l = keys.length;\n for (i; i < l; i++) {\n var key = keys[i];\n if (key === '*') {\n out = out.concat(_fns[key]);\n }\n if (args.length === 2 && args[0] === key) {\n out = out.concat(_fns[key]);\n break;\n }\n }\n return out;\n }\n function emitAll(e, fns, args) {\n var i = 0;\n var l = fns.length;\n for (i; i < l; i++) {\n if (!fns[i]) break;\n fns[i].event = e;\n fns[i].apply(fns[i], args);\n }\n }\n return emitter;\n};","/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n\nvar fingerprint = require('./lib/fingerprint.js');\nvar pad = require('./lib/pad.js');\nvar getRandomValue = require('./lib/getRandomValue.js');\nvar c = 0,\n blockSize = 4,\n base = 36,\n discreteValues = Math.pow(base, blockSize);\nfunction randomBlock() {\n return pad((getRandomValue() * discreteValues << 0).toString(base), blockSize);\n}\nfunction safeCounter() {\n c = c < discreteValues ? c : 0;\n c++; // this is not subliminal\n return c - 1;\n}\nfunction cuid() {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c',\n // hard-coded allows for sequential access\n\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = new Date().getTime().toString(base),\n // Prevent same-machine collisions.\n counter = pad(safeCounter().toString(base), blockSize),\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = fingerprint(),\n // Grab some more chars from Math.random()\n random = randomBlock() + randomBlock();\n return letter + timestamp + counter + print + random;\n}\ncuid.slug = function slug() {\n var date = new Date().getTime().toString(36),\n counter = safeCounter().toString(36).slice(-4),\n print = fingerprint().slice(0, 1) + fingerprint().slice(-1),\n random = randomBlock().slice(-2);\n return date.slice(-2) + counter + print + random;\n};\ncuid.isCuid = function isCuid(stringToCheck) {\n if (typeof stringToCheck !== 'string') return false;\n if (stringToCheck.startsWith('c')) return true;\n return false;\n};\ncuid.isSlug = function isSlug(stringToCheck) {\n if (typeof stringToCheck !== 'string') return false;\n var stringLength = stringToCheck.length;\n if (stringLength >= 7 && stringLength <= 10) return true;\n return false;\n};\ncuid.fingerprint = fingerprint;\nmodule.exports = cuid;","module.exports = function pad(num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n};","/**\n* Takes a full filename string and returns an object {name, extension}\n*\n* @param {string} fullFileName\n* @return {object} {name, extension}\n*/\nmodule.exports = function getFileNameAndExtension(fullFileName) {\n var re = /(?:\\.([^.]+))?$/;\n var fileExt = re.exec(fullFileName)[1];\n var fileName = fullFileName.replace('.' + fileExt, '');\n return {\n name: fileName,\n extension: fileExt\n };\n};","'use strict';\n\n// Remove the trailing slash so we can always safely append /xyz.\nvar _extends = Object.assign || 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};\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction stripSlash(url) {\n return url.replace(/\\/$/, '');\n}\nmodule.exports = function () {\n function RequestClient(uppy, opts) {\n _classCallCheck(this, RequestClient);\n this.uppy = uppy;\n this.opts = opts;\n this.onReceiveResponse = this.onReceiveResponse.bind(this);\n }\n RequestClient.prototype.onReceiveResponse = function onReceiveResponse(response) {\n var state = this.uppy.getState();\n var uppyServer = state.uppyServer || {};\n var host = this.opts.serverUrl;\n var headers = response.headers;\n // Store the self-identified domain name for the uppy-server we just hit.\n if (headers.has('i-am') && headers.get('i-am') !== uppyServer[host]) {\n var _extends2;\n this.uppy.setState({\n uppyServer: _extends({}, uppyServer, (_extends2 = {}, _extends2[host] = headers.get('i-am'), _extends2))\n });\n }\n return response;\n };\n RequestClient.prototype._getUrl = function _getUrl(url) {\n if (/^(https?:|)\\/\\//.test(url)) {\n return url;\n }\n return this.hostname + '/' + url;\n };\n RequestClient.prototype.get = function get(path) {\n var _this = this;\n return fetch(this._getUrl(path), {\n method: 'get',\n headers: this.defaultHeaders\n })\n // @todo validate response status before calling json\n .then(this.onReceiveResponse).then(function (res) {\n return res.json();\n }).catch(function (err) {\n throw new Error('Could not get ' + _this._getUrl(path) + '. ' + err);\n });\n };\n RequestClient.prototype.post = function post(path, data) {\n var _this2 = this;\n return fetch(this._getUrl(path), {\n method: 'post',\n headers: this.defaultHeaders,\n body: JSON.stringify(data)\n }).then(this.onReceiveResponse).then(function (res) {\n if (res.status < 200 || res.status > 300) {\n throw new Error('Could not post ' + _this2._getUrl(path) + '. ' + res.statusText);\n }\n return res.json();\n }).catch(function (err) {\n throw new Error('Could not post ' + _this2._getUrl(path) + '. ' + err);\n });\n };\n RequestClient.prototype.delete = function _delete(path, data) {\n var _this3 = this;\n return fetch(this.hostname + '/' + path, {\n method: 'delete',\n credentials: 'include',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n body: data ? JSON.stringify(data) : null\n }).then(this.onReceiveResponse)\n // @todo validate response status before calling json\n .then(function (res) {\n return res.json();\n }).catch(function (err) {\n throw new Error('Could not delete ' + _this3._getUrl(path) + '. ' + err);\n });\n };\n _createClass(RequestClient, [{\n key: 'hostname',\n get: function get() {\n var _uppy$getState = this.uppy.getState(),\n uppyServer = _uppy$getState.uppyServer;\n var host = this.opts.serverUrl;\n return stripSlash(uppyServer && uppyServer[host] ? uppyServer[host] : host);\n }\n }, {\n key: 'defaultHeaders',\n get: function get() {\n return {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n };\n }\n }]);\n return RequestClient;\n}();","/**\n * Limit the amount of simultaneously pending Promises.\n * Returns a function that, when passed a function `fn`,\n * will make sure that at most `limit` calls to `fn` are pending.\n *\n * @param {number} limit\n * @return {function()}\n */\nmodule.exports = function limitPromises(limit) {\n var pending = 0;\n var queue = [];\n return function (fn) {\n return function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var call = function call() {\n pending++;\n var promise = fn.apply(undefined, args);\n promise.then(onfinish, onfinish);\n return promise;\n };\n if (pending >= limit) {\n return new Promise(function (resolve, reject) {\n queue.push(function () {\n call().then(resolve, reject);\n });\n });\n }\n return call();\n };\n };\n function onfinish() {\n pending--;\n var next = queue.shift();\n if (next) next();\n }\n};","var _extends = Object.assign || 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};\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\nvar toArray = require('@uppy/utils/lib/toArray');\nvar Translator = require('@uppy/utils/lib/Translator');\nvar _require2 = require('preact'),\n h = _require2.h;\nmodule.exports = function (_Plugin) {\n _inherits(FileInput, _Plugin);\n function FileInput(uppy, opts) {\n _classCallCheck(this, FileInput);\n var _this = _possibleConstructorReturn(this, _Plugin.call(this, uppy, opts));\n _this.id = _this.opts.id || 'FileInput';\n _this.title = 'File Input';\n _this.type = 'acquirer';\n var defaultLocale = {\n strings: {\n chooseFiles: 'Choose files'\n }\n\n // Default options\n };\n var defaultOptions = {\n target: null,\n pretty: true,\n inputName: 'files[]',\n locale: defaultLocale\n\n // Merge default options with the ones set by user\n };\n _this.opts = _extends({}, defaultOptions, opts);\n _this.locale = _extends({}, defaultLocale, _this.opts.locale);\n _this.locale.strings = _extends({}, defaultLocale.strings, _this.opts.locale.strings);\n\n // i18n\n _this.translator = new Translator({\n locale: _this.locale\n });\n _this.i18n = _this.translator.translate.bind(_this.translator);\n _this.render = _this.render.bind(_this);\n _this.handleInputChange = _this.handleInputChange.bind(_this);\n _this.handleClick = _this.handleClick.bind(_this);\n return _this;\n }\n FileInput.prototype.handleInputChange = function handleInputChange(ev) {\n var _this2 = this;\n this.uppy.log('[FileInput] Something selected through input...');\n var files = toArray(ev.target.files);\n files.forEach(function (file) {\n try {\n _this2.uppy.addFile({\n source: _this2.id,\n name: file.name,\n type: file.type,\n data: file\n });\n } catch (err) {\n // Nothing, restriction errors handled in Core\n }\n });\n };\n FileInput.prototype.handleClick = function handleClick(ev) {\n this.input.click();\n };\n FileInput.prototype.render = function render(state) {\n var _this3 = this;\n\n /* http://tympanus.net/codrops/2015/09/15/styling-customizing-file-inputs-smart-way/ */\n var hiddenInputStyle = {\n width: '0.1px',\n height: '0.1px',\n opacity: 0,\n overflow: 'hidden',\n position: 'absolute',\n zIndex: -1\n };\n var restrictions = this.uppy.opts.restrictions;\n\n // empty value=\"\" on file input, so that the input is cleared after a file is selected,\n // because Uppy will be handling the upload and so we can select same file\n // after removing — otherwise browser thinks it’s already selected\n return h('div', {\n 'class': 'uppy-Root uppy-FileInput-container'\n }, h('input', {\n 'class': 'uppy-FileInput-input',\n style: this.opts.pretty && hiddenInputStyle,\n type: 'file',\n name: this.opts.inputName,\n onchange: this.handleInputChange,\n multiple: restrictions.maxNumberOfFiles !== 1,\n accept: restrictions.allowedFileTypes,\n ref: function ref(input) {\n _this3.input = input;\n },\n value: ''\n }), this.opts.pretty && h('button', {\n 'class': 'uppy-FileInput-btn',\n type: 'button',\n onclick: this.handleClick\n }, this.i18n('chooseFiles')));\n };\n FileInput.prototype.install = function install() {\n var target = this.opts.target;\n if (target) {\n this.mount(target, this);\n }\n };\n FileInput.prototype.uninstall = function uninstall() {\n this.unmount();\n };\n return FileInput;\n}(Plugin);","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nvar _extends = Object.assign || 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};\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nvar resolveUrl = require('resolve-url');\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\nvar Translator = require('@uppy/utils/lib/Translator');\nvar limitPromises = require('@uppy/utils/lib/limitPromises');\nvar XHRUpload = require('@uppy/xhr-upload');\nfunction isXml(xhr) {\n var contentType = xhr.headers ? xhr.headers['content-type'] : xhr.getResponseHeader('Content-Type');\n return typeof contentType === 'string' && contentType.toLowerCase() === 'application/xml';\n}\nmodule.exports = function (_Plugin) {\n _inherits(AwsS3, _Plugin);\n function AwsS3(uppy, opts) {\n _classCallCheck(this, AwsS3);\n var _this = _possibleConstructorReturn(this, _Plugin.call(this, uppy, opts));\n _this.type = 'uploader';\n _this.id = 'AwsS3';\n _this.title = 'AWS S3';\n var defaultLocale = {\n strings: {\n preparingUpload: 'Preparing upload...'\n }\n };\n var defaultOptions = {\n timeout: 30 * 1000,\n limit: 0,\n getUploadParameters: _this.getUploadParameters.bind(_this),\n locale: defaultLocale\n };\n _this.opts = _extends({}, defaultOptions, opts);\n _this.locale = _extends({}, defaultLocale, _this.opts.locale);\n _this.locale.strings = _extends({}, defaultLocale.strings, _this.opts.locale.strings);\n _this.translator = new Translator({\n locale: _this.locale\n });\n _this.i18n = _this.translator.translate.bind(_this.translator);\n _this.prepareUpload = _this.prepareUpload.bind(_this);\n if (typeof _this.opts.limit === 'number' && _this.opts.limit !== 0) {\n _this.limitRequests = limitPromises(_this.opts.limit);\n } else {\n _this.limitRequests = function (fn) {\n return fn;\n };\n }\n return _this;\n }\n AwsS3.prototype.getUploadParameters = function getUploadParameters(file) {\n if (!this.opts.serverUrl) {\n throw new Error('Expected a `serverUrl` option containing an uppy-server address.');\n }\n var filename = encodeURIComponent(file.name);\n var type = encodeURIComponent(file.type);\n return fetch(this.opts.serverUrl + '/s3/params?filename=' + filename + '&type=' + type, {\n method: 'get',\n headers: {\n accept: 'application/json'\n }\n }).then(function (response) {\n return response.json();\n });\n };\n AwsS3.prototype.validateParameters = function validateParameters(file, params) {\n var valid = (typeof params === 'undefined' ? 'undefined' : _typeof(params)) === 'object' && params && typeof params.url === 'string' && (_typeof(params.fields) === 'object' || params.fields == null) && (params.method == null || /^(put|post)$/i.test(params.method));\n if (!valid) {\n var err = new TypeError('AwsS3: got incorrect result from \\'getUploadParameters()\\' for file \\'' + file.name + '\\', expected an object \\'{ url, method, fields, headers }\\'.\\nSee https://uppy.io/docs/aws-s3/#getUploadParameters-file for more on the expected format.');\n console.error(err);\n throw err;\n }\n return params;\n };\n AwsS3.prototype.prepareUpload = function prepareUpload(fileIDs) {\n var _this2 = this;\n fileIDs.forEach(function (id) {\n var file = _this2.uppy.getFile(id);\n _this2.uppy.emit('preprocess-progress', file, {\n mode: 'determinate',\n message: _this2.i18n('preparingUpload'),\n value: 0\n });\n });\n var getUploadParameters = this.limitRequests(this.opts.getUploadParameters);\n return Promise.all(fileIDs.map(function (id) {\n var file = _this2.uppy.getFile(id);\n var paramsPromise = Promise.resolve().then(function () {\n return getUploadParameters(file);\n });\n return paramsPromise.then(function (params) {\n return _this2.validateParameters(file, params);\n }).then(function (params) {\n _this2.uppy.emit('preprocess-progress', file, {\n mode: 'determinate',\n message: _this2.i18n('preparingUpload'),\n value: 1\n });\n return params;\n }).catch(function (error) {\n _this2.uppy.emit('upload-error', file, error);\n });\n })).then(function (responses) {\n var updatedFiles = {};\n fileIDs.forEach(function (id, index) {\n var file = _this2.uppy.getFile(id);\n if (file.error) {\n return;\n }\n var _responses$index = responses[index],\n _responses$index$meth = _responses$index.method,\n method = _responses$index$meth === undefined ? 'post' : _responses$index$meth,\n url = _responses$index.url,\n fields = _responses$index.fields,\n headers = _responses$index.headers;\n var xhrOpts = {\n method: method,\n formData: method.toLowerCase() === 'post',\n endpoint: url,\n metaFields: Object.keys(fields)\n };\n if (headers) {\n xhrOpts.headers = headers;\n }\n var updatedFile = _extends({}, file, {\n meta: _extends({}, file.meta, fields),\n xhrUpload: xhrOpts\n });\n updatedFiles[id] = updatedFile;\n });\n _this2.uppy.setState({\n files: _extends({}, _this2.uppy.getState().files, updatedFiles)\n });\n fileIDs.forEach(function (id) {\n var file = _this2.uppy.getFile(id);\n _this2.uppy.emit('preprocess-complete', file);\n });\n });\n };\n AwsS3.prototype.install = function install() {\n var log = this.uppy.log;\n this.uppy.addPreProcessor(this.prepareUpload);\n var warnedSuccessActionStatus = false;\n this.uppy.use(XHRUpload, {\n fieldName: 'file',\n responseUrlFieldName: 'location',\n timeout: this.opts.timeout,\n limit: this.opts.limit,\n // Get the response data from a successful XMLHttpRequest instance.\n // `content` is the S3 response as a string.\n // `xhr` is the XMLHttpRequest instance.\n getResponseData: function getResponseData(content, xhr) {\n var opts = this;\n\n // If no response, we've hopefully done a PUT request to the file\n // in the bucket on its full URL.\n if (!isXml(xhr)) {\n if (opts.method.toUpperCase() === 'POST') {\n if (!warnedSuccessActionStatus) {\n log('[AwsS3] No response data found, make sure to set the success_action_status AWS SDK option to 201. See https://uppy.io/docs/aws-s3/#POST-Uploads', 'warning');\n warnedSuccessActionStatus = true;\n }\n // The responseURL won't contain the object key. Give up.\n return {\n location: null\n };\n }\n\n // Trim the query string because it's going to be a bunch of presign\n // parameters for a PUT request—doing a GET request with those will\n // always result in an error\n return {\n location: xhr.responseURL.replace(/\\?.*$/, '')\n };\n }\n var getValue = function getValue() {\n return '';\n };\n if (xhr.responseXML) {\n getValue = function getValue(key) {\n var el = xhr.responseXML.querySelector(key);\n return el ? el.textContent : '';\n };\n }\n if (xhr.responseText) {\n getValue = function getValue(key) {\n var start = xhr.responseText.indexOf('<' + key + '>');\n var end = xhr.responseText.indexOf('');\n return start !== -1 && end !== -1 ? xhr.responseText.slice(start + key.length + 2, end) : '';\n };\n }\n return {\n // Some S3 alternatives do not reply with an absolute URL.\n // Eg DigitalOcean Spaces uses /$bucketName/xyz\n location: resolveUrl(xhr.responseURL, getValue('Location')),\n bucket: getValue('Bucket'),\n key: getValue('Key'),\n etag: getValue('ETag')\n };\n },\n // Get the error data from a failed XMLHttpRequest instance.\n // `content` is the S3 response as a string.\n // `xhr` is the XMLHttpRequest instance.\n getResponseError: function getResponseError(content, xhr) {\n // If no response, we don't have a specific error message, use the default.\n if (!isXml(xhr)) {\n return;\n }\n var error = xhr.responseXML.querySelector('Error > Message');\n return new Error(error.textContent);\n }\n });\n };\n AwsS3.prototype.uninstall = function uninstall() {\n var uploader = this.uppy.getPlugin('XHRUpload');\n this.uppy.removePlugin(uploader);\n this.uppy.removePreProcessor(this.prepareUpload);\n };\n return AwsS3;\n}(Plugin);","const Uppy = require('@uppy/core')\nconst FileInput = require('@uppy/file-input')\nconst XHRUpload = require('@uppy/xhr-upload')\nconst ProgressBar = require('@uppy/progress-bar')\nconst AwsS3 = require('@uppy/aws-s3')\n\nexport function fileUpload(container){\n var form = container.closest('form')\n var submit_button = form.querySelector('input[type=submit]')\n var preview = container.querySelector('.directupload-preview')\n var fileInput = container.querySelector('.directupload-file')\n var hiddenField = container.querySelector('.directupload-result')\n\n var uploadServer = fileInput.dataset.uploadServer\n\n var endpoint = \"/upload\"\n if(fileInput.dataset.endpoint){ endpoint = \"/\" + fileInput.dataset.endpoint + \"/upload\" }\n\n var button_text = fileInput.dataset.buttonText || \"Choose files\"\n var uploading_text = fileInput.dataset.uploadingText || \"Uploading …\"\n\n var restrictions = {}\n if (fileInput.accept !== ''){ restrictions['allowedFileTypes'] = fileInput.accept.split(',') }\n\n\n fileInput.style.display = 'none'\n\n var uppy = new Uppy({ \n id: fileInput.id,\n debug: true,\n autoProceed: true,\n // restrictions: { allowedFileTypes: fileInput.accept.split(','), }\n restrictions: restrictions,\n })\n\n uppy.use(FileInput, {\n target: container,\n locale: { strings: { chooseFiles: button_text } },\n })\n\n uppy.use(ProgressBar, {\n target: preview,\n hideAfterFinish: true,\n })\n\n var progressBar = container.querySelector('.uppy-ProgressBar')\n progressBar.style.display = 'none'\n\n uppy.on('file-added', (file) => {\n progressBar.style.display = 'block'\n submit_button.disabled = true\n preview.innerHTML = uploading_text\n })\n\n if (uploadServer == 's3') {\n uppy.use(AwsS3, {\n getUploadParameters: function (file) {\n return fetch('/presign?filename=' + file.name, { // Shrine's presign endpoint\n credentials: 'same-origin', // send cookies\n })\n .then(function (response) { return response.json() })\n }\n })\n } else {\n uppy.use(XHRUpload, {\n endpoint: endpoint, // Shrine's upload endpoint\n fieldName: 'file',\n })\n }\n\n\n uppy.on('upload-success', function (file, data) {\n preview.innerHTML = file.name\n progressBar.style.display = 'none'\n submit_button.disabled = false\n\n if (uploadServer == 's3') {\n var key = file.meta['key'].match(/cache\\/([^\\?]+)/)[1]\n\n // construct uploaded file data in the format that Shrine expects\n var uploadedFileData = JSON.stringify({\n id: key , // extract key without prefix\n storage: 'cache',\n metadata: {\n size: file.size,\n filename: file.name,\n mime_type: file.type,\n }\n })\n } else {\n var uploadedFileData = JSON.stringify(data)\n }\n\n hiddenField.value = uploadedFileData\n })\n\n return uppy\n}\n\n\n","/**\n * Converts list into array\n*/\nmodule.exports = function toArray(list) {\n return Array.prototype.slice.call(list || [], 0);\n};","var _extends = Object.assign || 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};\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\nvar _require2 = require('preact'),\n h = _require2.h;\n\n/**\n * Progress bar\n *\n */\n\nmodule.exports = function (_Plugin) {\n _inherits(ProgressBar, _Plugin);\n function ProgressBar(uppy, opts) {\n _classCallCheck(this, ProgressBar);\n var _this = _possibleConstructorReturn(this, _Plugin.call(this, uppy, opts));\n _this.id = _this.opts.id || 'ProgressBar';\n _this.title = 'Progress Bar';\n _this.type = 'progressindicator';\n\n // set default options\n var defaultOptions = {\n target: 'body',\n replaceTargetContent: false,\n fixed: false,\n hideAfterFinish: true\n\n // merge default options with the ones set by user\n };\n _this.opts = _extends({}, defaultOptions, opts);\n _this.render = _this.render.bind(_this);\n return _this;\n }\n ProgressBar.prototype.render = function render(state) {\n var progress = state.totalProgress || 0;\n var isHidden = progress === 100 && this.opts.hideAfterFinish;\n return h('div', {\n 'class': 'uppy uppy-ProgressBar',\n style: {\n position: this.opts.fixed ? 'fixed' : 'initial'\n },\n 'aria-hidden': isHidden\n }, h('div', {\n 'class': 'uppy-ProgressBar-inner',\n style: {\n width: progress + '%'\n }\n }), h('div', {\n 'class': 'uppy-ProgressBar-percentage'\n }, progress));\n };\n ProgressBar.prototype.install = function install() {\n var target = this.opts.target;\n if (target) {\n this.mount(target, this);\n }\n };\n ProgressBar.prototype.uninstall = function uninstall() {\n this.unmount();\n };\n return ProgressBar;\n}(Plugin);","var g;\n\n// This works in non-strict mode\ng = function () {\n return this;\n}();\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;","var pad = require('./pad.js');\nvar env = typeof window === 'object' ? window : self;\nvar globalCount = Object.keys(env).length;\nvar mimeTypesLength = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\nvar clientId = pad((mimeTypesLength + navigator.userAgent.length).toString(36) + globalCount.toString(36), 4);\nmodule.exports = function fingerprint() {\n return clientId;\n};","var getRandomValue;\nvar crypto = typeof window !== 'undefined' && (window.crypto || window.msCrypto) || typeof self !== 'undefined' && self.crypto;\nif (crypto) {\n var lim = Math.pow(2, 32) - 1;\n getRandomValue = function () {\n return Math.abs(crypto.getRandomValues(new Uint32Array(1))[0] / lim);\n };\n} else {\n getRandomValue = Math.random;\n}\nmodule.exports = getRandomValue;","module.exports = prettierBytes;\nfunction prettierBytes(num) {\n if (typeof num !== 'number' || isNaN(num)) {\n throw new TypeError('Expected a number, got ' + typeof num);\n }\n var neg = num < 0;\n var units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n if (neg) {\n num = -num;\n }\n if (num < 1) {\n return (neg ? '-' : '') + num + ' B';\n }\n var exponent = Math.min(Math.floor(Math.log(num) / Math.log(1000)), units.length - 1);\n num = Number(num / Math.pow(1000, exponent));\n var unit = units[exponent];\n if (num >= 10 || num % 1 === 0) {\n // Do not show decimals when the number is two-digit, or if the number has no\n // decimal component.\n return (neg ? '-' : '') + num.toFixed(0) + ' ' + unit;\n } else {\n return (neg ? '-' : '') + num.toFixed(1) + ' ' + unit;\n }\n}","var wildcard = require('wildcard');\nvar reMimePartSplit = /[\\/\\+\\.]/;\n\n/**\n # mime-match\n\n A simple function to checker whether a target mime type matches a mime-type\n pattern (e.g. image/jpeg matches image/jpeg OR image/*).\n\n ## Example Usage\n\n <<< example.js\n\n**/\nmodule.exports = function (target, pattern) {\n function test(pattern) {\n var result = wildcard(pattern, target, reMimePartSplit);\n\n // ensure that we have a valid mime type (should have two parts)\n return result && result.length >= 2;\n }\n return pattern ? test(pattern.split(';')[0]) : test;\n};","/* jshint node: true */\n'use strict';\n\n/**\n # wildcard\n\n Very simple wildcard matching, which is designed to provide the same\n functionality that is found in the\n [eve](https://github.com/adobe-webplatform/eve) eventing library.\n\n ## Usage\n\n It works with strings:\n\n <<< examples/strings.js\n\n Arrays:\n\n <<< examples/arrays.js\n\n Objects (matching against keys):\n\n <<< examples/objects.js\n\n While the library works in Node, if you are are looking for file-based\n wildcard matching then you should have a look at:\n\n \n**/\nfunction WildcardMatcher(text, separator) {\n this.text = text = text || '';\n this.hasWild = ~text.indexOf('*');\n this.separator = separator;\n this.parts = text.split(separator);\n}\nWildcardMatcher.prototype.match = function (input) {\n var matches = true;\n var parts = this.parts;\n var ii;\n var partsCount = parts.length;\n var testParts;\n if (typeof input == 'string' || input instanceof String) {\n if (!this.hasWild && this.text != input) {\n matches = false;\n } else {\n testParts = (input || '').split(this.separator);\n for (ii = 0; matches && ii < partsCount; ii++) {\n if (parts[ii] === '*') {\n continue;\n } else if (ii < testParts.length) {\n matches = parts[ii] === testParts[ii];\n } else {\n matches = false;\n }\n }\n\n // If matches, then return the component parts\n matches = matches && testParts;\n }\n } else if (typeof input.splice == 'function') {\n matches = [];\n for (ii = input.length; ii--;) {\n if (this.match(input[ii])) {\n matches[matches.length] = input[ii];\n }\n }\n } else if (typeof input == 'object') {\n matches = {};\n for (var key in input) {\n if (this.match(key)) {\n matches[key] = input[key];\n }\n }\n }\n return matches;\n};\nmodule.exports = function (text, test, separator) {\n var matcher = new WildcardMatcher(text, separator || /[\\/\\.]/);\n if (typeof test != 'undefined') {\n return matcher.match(test);\n }\n return matcher;\n};","var _extends = Object.assign || 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};\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\n/**\n * Default store that keeps state in a simple object.\n */\nvar DefaultStore = function () {\n function DefaultStore() {\n _classCallCheck(this, DefaultStore);\n this.state = {};\n this.callbacks = [];\n }\n DefaultStore.prototype.getState = function getState() {\n return this.state;\n };\n DefaultStore.prototype.setState = function setState(patch) {\n var prevState = _extends({}, this.state);\n var nextState = _extends({}, this.state, patch);\n this.state = nextState;\n this._publish(prevState, nextState, patch);\n };\n DefaultStore.prototype.subscribe = function subscribe(listener) {\n var _this = this;\n this.callbacks.push(listener);\n return function () {\n // Remove the listener.\n _this.callbacks.splice(_this.callbacks.indexOf(listener), 1);\n };\n };\n DefaultStore.prototype._publish = function _publish() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n this.callbacks.forEach(function (listener) {\n listener.apply(undefined, args);\n });\n };\n return DefaultStore;\n}();\nmodule.exports = function defaultStore() {\n return new DefaultStore();\n};","var getFileNameAndExtension = require('./getFileNameAndExtension');\nvar mimeTypes = require('./mimeTypes');\nmodule.exports = function getFileType(file) {\n var fileExtension = file.name ? getFileNameAndExtension(file.name).extension : null;\n if (file.isRemote) {\n // some remote providers do not support file types\n return file.type ? file.type : mimeTypes[fileExtension];\n }\n\n // check if mime type is set in the file object\n if (file.type) {\n return file.type;\n }\n\n // see if we can map extension to a mime type\n if (fileExtension && mimeTypes[fileExtension]) {\n return mimeTypes[fileExtension];\n }\n\n // if all fails, well, return empty\n return null;\n};","module.exports = {\n 'md': 'text/markdown',\n 'markdown': 'text/markdown',\n 'mp4': 'video/mp4',\n 'mp3': 'audio/mp3',\n 'svg': 'image/svg+xml',\n 'jpg': 'image/jpeg',\n 'png': 'image/png',\n 'gif': 'image/gif',\n 'yaml': 'text/yaml',\n 'yml': 'text/yaml',\n 'csv': 'text/csv',\n 'avi': 'video/x-msvideo',\n 'mks': 'video/x-matroska',\n 'mkv': 'video/x-matroska',\n 'mov': 'video/quicktime',\n 'doc': 'application/msword',\n 'docm': 'application/vnd.ms-word.document.macroenabled.12',\n 'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'dot': 'application/msword',\n 'dotm': 'application/vnd.ms-word.template.macroenabled.12',\n 'dotx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n 'xla': 'application/vnd.ms-excel',\n 'xlam': 'application/vnd.ms-excel.addin.macroenabled.12',\n 'xlc': 'application/vnd.ms-excel',\n 'xlf': 'application/x-xliff+xml',\n 'xlm': 'application/vnd.ms-excel',\n 'xls': 'application/vnd.ms-excel',\n 'xlsb': 'application/vnd.ms-excel.sheet.binary.macroenabled.12',\n 'xlsm': 'application/vnd.ms-excel.sheet.macroenabled.12',\n 'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'xlt': 'application/vnd.ms-excel',\n 'xltm': 'application/vnd.ms-excel.template.macroenabled.12',\n 'xltx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n 'xlw': 'application/vnd.ms-excel'\n};","/**\n * Takes a file object and turns it into fileID, by converting file.name to lowercase,\n * removing extra characters and adding type, size and lastModified\n *\n * @param {Object} file\n * @return {String} the fileID\n *\n */\nmodule.exports = function generateFileID(file) {\n // filter is needed to not join empty values with `-`\n return ['uppy', file.name ? file.name.toLowerCase().replace(/[^A-Z0-9]/ig, '') : '', file.type, file.data.size, file.data.lastModified].filter(function (val) {\n return val;\n }).join('-');\n};","/**\n * Check if a URL string is an object URL from `URL.createObjectURL`.\n *\n * @param {string} url\n * @return {boolean}\n */\nmodule.exports = function isObjectURL(url) {\n return url.indexOf('blob:') === 0;\n};","/**\n * Returns a timestamp in the format of `hours:minutes:seconds`\n*/\nmodule.exports = function getTimeStamp() {\n var date = new Date();\n var hours = pad(date.getHours().toString());\n var minutes = pad(date.getMinutes().toString());\n var seconds = pad(date.getSeconds().toString());\n return hours + ':' + minutes + ':' + seconds;\n};\n\n/**\n * Adds zero to strings shorter than two characters\n*/\nfunction pad(str) {\n return str.length !== 2 ? 0 + str : str;\n}","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nvar _extends = Object.assign || 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};\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nvar preact = require('preact');\nvar findDOMElement = require('@uppy/utils/lib/findDOMElement');\n\n/**\n * Defer a frequent call to the microtask queue.\n */\nfunction debounce(fn) {\n var calling = null;\n var latestArgs = null;\n return function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n latestArgs = args;\n if (!calling) {\n calling = Promise.resolve().then(function () {\n calling = null;\n // At this point `args` may be different from the most\n // recent state, if multiple calls happened since this task\n // was queued. So we use the `latestArgs`, which definitely\n // is the most recent call.\n return fn.apply(undefined, latestArgs);\n });\n }\n return calling;\n };\n}\n\n/**\n * Boilerplate that all Plugins share - and should not be used\n * directly. It also shows which methods final plugins should implement/override,\n * this deciding on structure.\n *\n * @param {object} main Uppy core object\n * @param {object} object with plugin options\n * @return {array | string} files or success/fail message\n */\nmodule.exports = function () {\n function Plugin(uppy, opts) {\n _classCallCheck(this, Plugin);\n this.uppy = uppy;\n this.opts = opts || {};\n this.update = this.update.bind(this);\n this.mount = this.mount.bind(this);\n this.install = this.install.bind(this);\n this.uninstall = this.uninstall.bind(this);\n }\n Plugin.prototype.getPluginState = function getPluginState() {\n var _uppy$getState = this.uppy.getState(),\n plugins = _uppy$getState.plugins;\n return plugins[this.id];\n };\n Plugin.prototype.setPluginState = function setPluginState(update) {\n var plugins = _extends({}, this.uppy.getState().plugins);\n plugins[this.id] = _extends({}, plugins[this.id], update);\n this.uppy.setState({\n plugins: plugins\n });\n };\n Plugin.prototype.update = function update(state) {\n if (typeof this.el === 'undefined') {\n return;\n }\n if (this._updateUI) {\n this._updateUI(state);\n }\n };\n\n /**\n * Check if supplied `target` is a DOM element or an `object`.\n * If it’s an object — target is a plugin, and we search `plugins`\n * for a plugin with same name and return its target.\n *\n * @param {String|Object} target\n *\n */\n\n Plugin.prototype.mount = function mount(target, plugin) {\n var _this = this;\n var callerPluginName = plugin.id;\n var targetElement = findDOMElement(target);\n if (targetElement) {\n this.isTargetDOMEl = true;\n\n // API for plugins that require a synchronous rerender.\n this.rerender = function (state) {\n // plugin could be removed, but this.rerender is debounced below,\n // so it could still be called even after uppy.removePlugin or uppy.close\n // hence the check\n if (!_this.uppy.getPlugin(_this.id)) return;\n _this.el = preact.render(_this.render(state), targetElement, _this.el);\n };\n this._updateUI = debounce(this.rerender);\n this.uppy.log('Installing ' + callerPluginName + ' to a DOM element');\n\n // clear everything inside the target container\n if (this.opts.replaceTargetContent) {\n targetElement.innerHTML = '';\n }\n this.el = preact.render(this.render(this.uppy.getState()), targetElement);\n return this.el;\n }\n var targetPlugin = void 0;\n if ((typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target instanceof Plugin) {\n // Targeting a plugin *instance*\n targetPlugin = target;\n } else if (typeof target === 'function') {\n // Targeting a plugin type\n var Target = target;\n // Find the target plugin instance.\n this.uppy.iteratePlugins(function (plugin) {\n if (plugin instanceof Target) {\n targetPlugin = plugin;\n return false;\n }\n });\n }\n if (targetPlugin) {\n var targetPluginName = targetPlugin.id;\n this.uppy.log('Installing ' + callerPluginName + ' to ' + targetPluginName);\n this.el = targetPlugin.addTarget(plugin);\n return this.el;\n }\n this.uppy.log('Not installing ' + callerPluginName);\n throw new Error('Invalid target option given to ' + callerPluginName);\n };\n Plugin.prototype.render = function render(state) {\n throw new Error('Extend the render method to add your plugin to a DOM element');\n };\n Plugin.prototype.addTarget = function addTarget(plugin) {\n throw new Error('Extend the addTarget method to add your plugin to another plugin\\'s target');\n };\n Plugin.prototype.unmount = function unmount() {\n if (this.isTargetDOMEl && this.el && this.el.parentNode) {\n this.el.parentNode.removeChild(this.el);\n }\n };\n Plugin.prototype.install = function install() {};\n Plugin.prototype.uninstall = function uninstall() {\n this.unmount();\n };\n return Plugin;\n}();","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nvar isDOMElement = require('./isDOMElement');\n\n/**\n * Find a DOM element.\n *\n * @param {Node|string} element\n * @return {Node|null}\n */\nmodule.exports = function findDOMElement(element) {\n if (typeof element === 'string') {\n return document.querySelector(element);\n }\n if ((typeof element === 'undefined' ? 'undefined' : _typeof(element)) === 'object' && isDOMElement(element)) {\n return element;\n }\n};","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n/**\n * Check if an object is a DOM element. Duck-typing based on `nodeType`.\n *\n * @param {*} obj\n */\nmodule.exports = function isDOMElement(obj) {\n return obj && (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj.nodeType === Node.ELEMENT_NODE;\n};","'use-strict';\n\n/**\n * Manages communications with Uppy Server\n */\nvar RequestClient = require('./RequestClient');\nvar Provider = require('./Provider');\nvar Socket = require('./Socket');\nmodule.exports = {\n RequestClient: RequestClient,\n Provider: Provider,\n Socket: Socket\n};","'use strict';\n\nvar _extends = Object.assign || 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};\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nvar RequestClient = require('./RequestClient');\nvar _getName = function _getName(id) {\n return id.split('-').map(function (s) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n }).join(' ');\n};\nmodule.exports = function (_RequestClient) {\n _inherits(Provider, _RequestClient);\n function Provider(uppy, opts) {\n _classCallCheck(this, Provider);\n var _this = _possibleConstructorReturn(this, _RequestClient.call(this, uppy, opts));\n _this.provider = opts.provider;\n _this.id = _this.provider;\n _this.authProvider = opts.authProvider || _this.provider;\n _this.name = _this.opts.name || _getName(_this.id);\n _this.tokenKey = 'uppy-server-' + _this.id + '-auth-token';\n return _this;\n }\n\n // @todo(i.olarewaju) consider whether or not this method should be exposed\n Provider.prototype.setAuthToken = function setAuthToken(token) {\n // @todo(i.olarewaju) add fallback for OOM storage\n localStorage.setItem(this.tokenKey, token);\n };\n Provider.prototype.checkAuth = function checkAuth() {\n return this.get(this.id + '/authorized').then(function (payload) {\n return payload.authenticated;\n });\n };\n Provider.prototype.authUrl = function authUrl() {\n return this.hostname + '/' + this.id + '/connect';\n };\n Provider.prototype.fileUrl = function fileUrl(id) {\n return this.hostname + '/' + this.id + '/get/' + id;\n };\n Provider.prototype.list = function list(directory) {\n return this.get(this.id + '/list/' + (directory || ''));\n };\n Provider.prototype.logout = function logout() {\n var _this2 = this;\n var redirect = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : location.href;\n return this.get(this.id + '/logout?redirect=' + redirect).then(function (res) {\n localStorage.removeItem(_this2.tokenKey);\n return res;\n });\n };\n _createClass(Provider, [{\n key: 'defaultHeaders',\n get: function get() {\n return _extends({}, _RequestClient.prototype.defaultHeaders, {\n 'uppy-auth-token': localStorage.getItem(this.tokenKey)\n });\n }\n }]);\n return Provider;\n}(RequestClient);","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nvar ee = require('namespace-emitter');\nmodule.exports = function () {\n function UppySocket(opts) {\n var _this = this;\n _classCallCheck(this, UppySocket);\n this.queued = [];\n this.isOpen = false;\n this.socket = new WebSocket(opts.target);\n this.emitter = ee();\n this.socket.onopen = function (e) {\n _this.isOpen = true;\n while (_this.queued.length > 0 && _this.isOpen) {\n var first = _this.queued[0];\n _this.send(first.action, first.payload);\n _this.queued = _this.queued.slice(1);\n }\n };\n this.socket.onclose = function (e) {\n _this.isOpen = false;\n };\n this._handleMessage = this._handleMessage.bind(this);\n this.socket.onmessage = this._handleMessage;\n this.close = this.close.bind(this);\n this.emit = this.emit.bind(this);\n this.on = this.on.bind(this);\n this.once = this.once.bind(this);\n this.send = this.send.bind(this);\n }\n UppySocket.prototype.close = function close() {\n return this.socket.close();\n };\n UppySocket.prototype.send = function send(action, payload) {\n // attach uuid\n\n if (!this.isOpen) {\n this.queued.push({\n action: action,\n payload: payload\n });\n return;\n }\n this.socket.send(JSON.stringify({\n action: action,\n payload: payload\n }));\n };\n UppySocket.prototype.on = function on(action, handler) {\n this.emitter.on(action, handler);\n };\n UppySocket.prototype.emit = function emit(action, payload) {\n this.emitter.emit(action, payload);\n };\n UppySocket.prototype.once = function once(action, handler) {\n this.emitter.once(action, handler);\n };\n UppySocket.prototype._handleMessage = function _handleMessage(e) {\n try {\n var message = JSON.parse(e.data);\n this.emit(message.action, message.payload);\n } catch (err) {\n console.log(err);\n }\n };\n return UppySocket;\n}();","var throttle = require('lodash.throttle');\nfunction _emitSocketProgress(uploader, progressData, file) {\n var progress = progressData.progress,\n bytesUploaded = progressData.bytesUploaded,\n bytesTotal = progressData.bytesTotal;\n if (progress) {\n uploader.uppy.log('Upload progress: ' + progress);\n uploader.uppy.emit('upload-progress', file, {\n uploader: uploader,\n bytesUploaded: bytesUploaded,\n bytesTotal: bytesTotal\n });\n }\n}\nmodule.exports = throttle(_emitSocketProgress, 300, {\n leading: true,\n trailing: true\n});","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function () {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\nmodule.exports = throttle;","module.exports = function getSocketHost(url) {\n // get the host domain\n var regex = /^(?:https?:\\/\\/|\\/\\/)?(?:[^@\\n]+@)?(?:www\\.)?([^\\n]+)/;\n var host = regex.exec(url)[1];\n var socketProtocol = location.protocol === 'https:' ? 'wss' : 'ws';\n return socketProtocol + '://' + host;\n};","module.exports = function settle(promises) {\n var resolutions = [];\n var rejections = [];\n function resolved(value) {\n resolutions.push(value);\n }\n function rejected(error) {\n rejections.push(error);\n }\n var wait = Promise.all(promises.map(function (promise) {\n return promise.then(resolved, rejected);\n }));\n return wait.then(function () {\n return {\n successful: resolutions,\n failed: rejections\n };\n });\n};","// Copyright 2014 Simon Lydell\n// X11 (“MIT”) Licensed. (See LICENSE.)\n\nvoid function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(factory);\n } else if (typeof exports === \"object\") {\n module.exports = factory();\n } else {\n root.resolveUrl = factory();\n }\n}(this, function () {\n function resolveUrl( /* ...urls */\n ) {\n var numUrls = arguments.length;\n if (numUrls === 0) {\n throw new Error(\"resolveUrl requires at least one argument; got none.\");\n }\n var base = document.createElement(\"base\");\n base.href = arguments[0];\n if (numUrls === 1) {\n return base.href;\n }\n var head = document.getElementsByTagName(\"head\")[0];\n head.insertBefore(base, head.firstChild);\n var a = document.createElement(\"a\");\n var resolved;\n for (var index = 1; index < numUrls; index++) {\n a.href = arguments[index];\n resolved = a.href;\n base.href = resolved;\n }\n head.removeChild(base);\n return resolved;\n }\n return resolveUrl;\n});","console.log('with fileuploader')\n\nimport { fileUpload } from '../components/fileuploader.js'\n\ndocument.addEventListener(\"turbolinks:load\", function(event) {\n document.querySelectorAll('.directupload').forEach(function (fileInputContainer) {\n fileUpload(fileInputContainer)\n })\n})\n"],"sourceRoot":""}