{"version":3,"sources":["webpack:///./node_modules/vue-upload-component/dist/vue-upload-component.js"],"names":["global","factory","module","exports","this","createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","Object","keys","forEach","key","setRequestHeader","sendRequest","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","sendFormRequest","data","FormData","name","append","request","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","defineProperty","Constructor","protoProps","staticProps","prototype","_classCallCheck","instance","TypeError","ChunkUploadHandler","file","chunks","sessionId","chunkSize","speedInterval","value","start","end","fileSize","push","blob","slice","startOffset","active","retries","maxRetries","progress","stopChunks","chunksUploading","chunk","abort","stopSpeedCalc","startChunking","_this","promise","_this2","assign","action","startBody","phase","mime_type","fileType","size","fileName","then","res","session_id","end_offset","createChunks","catch","maxActiveChunks","uploadNextChunk","startSpeedCalc","hasChunksToUpload","uploadChunk","chunksToUpload","finish","_this3","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","uploadBody","start_offset","uploaded","_this4","finishBody","_this5","speed","lastUploadedBytes","window","setInterval","uploadedBytes","clearInterval","get","parseInt","maxActive","type","_this6","completedProgress","chunksUploaded","uploadingProgress","reduce","min","filter","script","methods","change","e","$parent","addInputFile","files","test","navigator","userAgent","$destroy","constructor","parent","el","$el","normalizeComponent","template","style","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","render","staticRenderFns","_compiled","functional","_scopeId","context","$vnode","ssrContext","__VUE_SSR_CONTEXT__","call","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","originalRender","h","existing","beforeCreate","concat","normalizeComponent_1","__vue_script__","__vue_render__","_vm","_h","$createElement","_c","_self","attrs","inputId","accept","capture","disabled","directory","features","multiple","html5","on","__vue_staticRenderFns__","__vue_inject_styles__","undefined","__vue_scope_id__","__vue_module_identifier__","__vue_is_functional_template__","InputFile","_extends","arguments","source","hasOwnProperty","_typeof","Symbol","iterator","obj","_toConsumableArray","arr","Array","isArray","arr2","from","CHUNK_DEFAULT_OPTIONS","minSize","handler","script$1","components","String","default","Boolean","maximum","Number","addIndex","postAction","putAction","customAction","Function","timeout","drop","dropDirectory","extensions","thread","chunkEnabled","dropActive","uploading","destroy","mounted","input","document","createElement","webkitdirectory","ondrop","maps","id","$nextTick","$forceUpdate","watchDrop","beforeDestroy","computed","fileObject","error","success","chunkOptions","className","watch","_active","watchActive","oldMaps","newFile","oldFile","emitFile","_key","clear","emitInput","_files","index","addFiles","Blob","webkitRelativePath","relativePath","Element","random","toString","substr","emitFilter","newFiles","_newFiles","splice","apply","_i","_file2","_i2","names","replace","split","__vuex__","addDataTransfer","dataTransfer","items","item","getAsEntry","getAsFile","webkitGetAsEntry","getEntry","results","_i3","entry","path","isFile","isDirectory","dirReader","createReader","readEntries","entries","id1","id2","file1","file2","index1","indexOf","index2","remove","console","update","isPrevent","$emit","setTimeout","code","message","RegExp","map","trim","join","search","shouldUseChunkUpload","uploadPut","uploadHtml5","uploadHtml4","HandlerClass","querys","encodeURIComponent","queryString","uploadXhr","form","File","filename","_file","speedTime","speedLoaded","onprogress","speedTime2","Date","now","toFixed","interval","complete","fn","responseText","contentType","getResponseHeader","onabort","ontimeout","onKeydown","keyCode","preventDefault","iframe","src","setAttribute","appendChild","getResponseData","doc","contentWindow","contentDocument","innerHTML","removeEventListener","submit","parentNode","removeChild","_el","dropElement","onDragenter","onDragleave","onDocumentDrop","onDragover","onDrop","querySelector","dt","types","contains","nodeName","explicitOriginalTarget","fromElement","clientX","clientY","innerWidth","innerHeight","isOldIE","toLowerCase","addStyle","HEAD","head","getElementsByTagName","styles","css","group","media","ids","Set","has","sources","btoa","unescape","element","styleSheet","cssText","textNode","createTextNode","nodes","childNodes","insertBefore","browser","__vue_script__$1","__vue_render__$1","class","_t","_v","__vue_staticRenderFns__$1","__vue_inject_styles__$1","inject","__vue_scope_id__$1","__vue_module_identifier__$1","__vue_is_functional_template__$1","FileUpload","FileUpload$1","freeze","getCjsExportFromNamespace","n","require$$0"],"mappings":"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","file":"js/chunk-2d0dd016.9d85e22c.js","sourcesContent":["/*!\n * Name: vue-upload-component\n * Version: 2.8.21\n * Author: Marco Lang\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.VueUploadComponent = factory());\n}(this, (function () { 'use strict';\n\n /**\n * Creates a XHR request\n *\n * @param {Object} options\n */\n var createRequest = function createRequest(options) {\n var xhr = new XMLHttpRequest();\n xhr.open(options.method || 'GET', options.url);\n xhr.responseType = 'json';\n if (options.headers) {\n Object.keys(options.headers).forEach(function (key) {\n xhr.setRequestHeader(key, options.headers[key]);\n });\n }\n\n return xhr;\n };\n\n /**\n * Sends a XHR request with certain body\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} body\n */\n var sendRequest = function sendRequest(xhr, body) {\n return new Promise(function (resolve, reject) {\n xhr.onload = function () {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response;\n try {\n response = JSON.parse(xhr.response);\n } catch (err) {\n response = xhr.response;\n }\n resolve(response);\n } else {\n reject(xhr.response);\n }\n };\n xhr.onerror = function () {\n return reject(xhr.response);\n };\n xhr.send(JSON.stringify(body));\n });\n };\n\n /**\n * Sends a XHR request with certain form data\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} data\n */\n var sendFormRequest = function sendFormRequest(xhr, data) {\n var body = new FormData();\n for (var name in data) {\n body.append(name, data[name]);\n }\n\n return new Promise(function (resolve, reject) {\n xhr.onload = function () {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response;\n try {\n response = JSON.parse(xhr.response);\n } catch (err) {\n response = xhr.response;\n }\n resolve(response);\n } else {\n reject(xhr.response);\n }\n };\n xhr.onerror = function () {\n return reject(xhr.response);\n };\n xhr.send(body);\n });\n };\n\n /**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\n function request (options) {\n var xhr = createRequest(options);\n\n return sendRequest(xhr, options.body);\n }\n\n var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n var ChunkUploadHandler = function () {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n function ChunkUploadHandler(file, options) {\n _classCallCheck(this, ChunkUploadHandler);\n\n this.file = file;\n this.options = options;\n this.chunks = [];\n this.sessionId = null;\n this.chunkSize = null;\n this.speedInterval = null;\n }\n\n /**\n * Gets the max retries from options\n */\n\n\n _createClass(ChunkUploadHandler, [{\n key: 'createChunks',\n\n\n /**\n * Creates all the chunks in the initial state\n */\n value: function createChunks() {\n this.chunks = [];\n\n var start = 0;\n var end = this.chunkSize;\n while (start < this.fileSize) {\n this.chunks.push({\n blob: this.file.file.slice(start, end),\n startOffset: start,\n active: false,\n retries: this.maxRetries\n });\n start = end;\n end = start + this.chunkSize;\n }\n }\n\n /**\n * Updates the progress of the file with the handler's progress\n */\n\n }, {\n key: 'updateFileProgress',\n value: function updateFileProgress() {\n this.file.progress = this.progress;\n }\n\n /**\n * Paues the upload process\n * - Stops all active requests\n * - Sets the file not active\n */\n\n }, {\n key: 'pause',\n value: function pause() {\n this.file.active = false;\n this.stopChunks();\n }\n\n /**\n * Stops all the current chunks\n */\n\n }, {\n key: 'stopChunks',\n value: function stopChunks() {\n this.chunksUploading.forEach(function (chunk) {\n chunk.xhr.abort();\n chunk.active = false;\n });\n\n this.stopSpeedCalc();\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n\n }, {\n key: 'resume',\n value: function resume() {\n this.file.active = true;\n this.startChunking();\n }\n\n /**\n * Starts the file upload\n *\n * @returns Promise\n * - resolve The file was uploaded\n * - reject The file upload failed\n */\n\n }, {\n key: 'upload',\n value: function upload() {\n var _this = this;\n\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n this.start();\n\n return this.promise;\n }\n\n /**\n * Start phase\n * Sends a request to the backend to initialise the chunks\n */\n\n }, {\n key: 'start',\n value: function start() {\n var _this2 = this;\n\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.startBody, {\n phase: 'start',\n mime_type: this.fileType,\n size: this.fileSize,\n name: this.fileName\n })\n }).then(function (res) {\n if (res.status !== 'success') {\n _this2.file.response = res;\n return _this2.reject('server');\n }\n\n _this2.sessionId = res.data.session_id;\n _this2.chunkSize = res.data.end_offset;\n\n _this2.createChunks();\n _this2.startChunking();\n }).catch(function (res) {\n _this2.file.response = res;\n _this2.reject('server');\n });\n }\n\n /**\n * Starts to upload chunks\n */\n\n }, {\n key: 'startChunking',\n value: function startChunking() {\n for (var i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk();\n }\n\n this.startSpeedCalc();\n }\n\n /**\n * Uploads the next chunk\n * - Won't do anything if the process is paused\n * - Will start finish phase if there are no more chunks to upload\n */\n\n }, {\n key: 'uploadNextChunk',\n value: function uploadNextChunk() {\n if (this.file.active) {\n if (this.hasChunksToUpload) {\n return this.uploadChunk(this.chunksToUpload[0]);\n }\n\n if (this.chunksUploading.length === 0) {\n return this.finish();\n }\n }\n }\n\n /**\n * Uploads a chunk\n * - Sends the chunk to the backend\n * - Sets the chunk as uploaded if everything went well\n * - Decreases the number of retries if anything went wrong\n * - Fails if there are no more retries\n *\n * @param {Object} chunk\n */\n\n }, {\n key: 'uploadChunk',\n value: function uploadChunk(chunk) {\n var _this3 = this;\n\n chunk.progress = 0;\n chunk.active = true;\n this.updateFileProgress();\n chunk.xhr = createRequest({\n method: 'POST',\n headers: this.headers,\n url: this.action\n });\n\n chunk.xhr.upload.addEventListener('progress', function (evt) {\n if (evt.lengthComputable) {\n chunk.progress = Math.round(evt.loaded / evt.total * 100);\n }\n }, false);\n\n sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, {\n phase: 'upload',\n session_id: this.sessionId,\n start_offset: chunk.startOffset,\n chunk: chunk.blob\n })).then(function (res) {\n chunk.active = false;\n if (res.status === 'success') {\n chunk.uploaded = true;\n } else {\n if (chunk.retries-- <= 0) {\n _this3.stopChunks();\n return _this3.reject('upload');\n }\n }\n\n _this3.uploadNextChunk();\n }).catch(function () {\n chunk.active = false;\n if (chunk.retries-- <= 0) {\n _this3.stopChunks();\n return _this3.reject('upload');\n }\n\n _this3.uploadNextChunk();\n });\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n\n }, {\n key: 'finish',\n value: function finish() {\n var _this4 = this;\n\n this.updateFileProgress();\n this.stopSpeedCalc();\n\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.finishBody, {\n phase: 'finish',\n session_id: this.sessionId\n })\n }).then(function (res) {\n _this4.file.response = res;\n if (res.status !== 'success') {\n return _this4.reject('server');\n }\n\n _this4.resolve(res);\n }).catch(function (res) {\n _this4.file.response = res;\n _this4.reject('server');\n });\n }\n\n /**\n * Sets an interval to calculate and\n * set upload speed every 3 seconds\n */\n\n }, {\n key: 'startSpeedCalc',\n value: function startSpeedCalc() {\n var _this5 = this;\n\n this.file.speed = 0;\n var lastUploadedBytes = 0;\n if (!this.speedInterval) {\n this.speedInterval = window.setInterval(function () {\n var uploadedBytes = _this5.progress / 100 * _this5.fileSize;\n _this5.file.speed = uploadedBytes - lastUploadedBytes;\n lastUploadedBytes = uploadedBytes;\n }, 1000);\n }\n }\n\n /**\n * Removes the upload speed interval\n */\n\n }, {\n key: 'stopSpeedCalc',\n value: function stopSpeedCalc() {\n this.speedInterval && window.clearInterval(this.speedInterval);\n this.speedInterval = null;\n this.file.speed = 0;\n }\n }, {\n key: 'maxRetries',\n get: function get() {\n return parseInt(this.options.maxRetries, 10);\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n\n }, {\n key: 'maxActiveChunks',\n get: function get() {\n return parseInt(this.options.maxActive, 10);\n }\n\n /**\n * Gets the file type\n */\n\n }, {\n key: 'fileType',\n get: function get() {\n return this.file.type;\n }\n\n /**\n * Gets the file size\n */\n\n }, {\n key: 'fileSize',\n get: function get() {\n return this.file.size;\n }\n\n /**\n * Gets the file name\n */\n\n }, {\n key: 'fileName',\n get: function get() {\n return this.file.name;\n }\n\n /**\n * Gets action (url) to upload the file\n */\n\n }, {\n key: 'action',\n get: function get() {\n return this.options.action || null;\n }\n\n /**\n * Gets the body to be merged when sending the request in start phase\n */\n\n }, {\n key: 'startBody',\n get: function get() {\n return this.options.startBody || {};\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n\n }, {\n key: 'uploadBody',\n get: function get() {\n return this.options.uploadBody || {};\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n\n }, {\n key: 'finishBody',\n get: function get() {\n return this.options.finishBody || {};\n }\n\n /**\n * Gets the headers of the requests from options\n */\n\n }, {\n key: 'headers',\n get: function get() {\n return this.options.headers || {};\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n\n }, {\n key: 'readyToUpload',\n get: function get() {\n return !!this.chunks;\n }\n\n /**\n * Gets the progress of the chunk upload\n * - Gets all the completed chunks\n * - Gets the progress of all the chunks that are being uploaded\n */\n\n }, {\n key: 'progress',\n get: function get() {\n var _this6 = this;\n\n var completedProgress = this.chunksUploaded.length / this.chunks.length * 100;\n var uploadingProgress = this.chunksUploading.reduce(function (progress, chunk) {\n return progress + (chunk.progress | 0) / _this6.chunks.length;\n }, 0);\n\n return Math.min(completedProgress + uploadingProgress, 100);\n }\n\n /**\n * Gets all the chunks that are pending to be uploaded\n */\n\n }, {\n key: 'chunksToUpload',\n get: function get() {\n return this.chunks.filter(function (chunk) {\n return !chunk.active && !chunk.uploaded;\n });\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n\n }, {\n key: 'hasChunksToUpload',\n get: function get() {\n return this.chunksToUpload.length > 0;\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n\n }, {\n key: 'chunksUploading',\n get: function get() {\n return this.chunks.filter(function (chunk) {\n return !!chunk.xhr && !!chunk.active;\n });\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n\n }, {\n key: 'chunksUploaded',\n get: function get() {\n return this.chunks.filter(function (chunk) {\n return !!chunk.uploaded;\n });\n }\n }]);\n\n return ChunkUploadHandler;\n }();\n\n //\n //\n //\n //\n //\n //\n //\n //\n //\n //\n //\n //\n //\n //\n\n var script = {\n methods: {\n change: function change(e) {\n this.$parent.addInputFile(e.target);\n if (e.target.files) {\n e.target.value = '';\n if (e.target.files.length && !/safari/i.test(navigator.userAgent)) {\n e.target.type = '';\n e.target.type = 'file';\n }\n } else {\n // ie9 fix #219\n this.$destroy();\n // eslint-disable-next-line\n new this.constructor({\n parent: this.$parent,\n el: this.$el\n });\n }\n }\n }\n };\n\n function normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier\n /* server only */\n , shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n if (typeof shadowMode !== 'boolean') {\n createInjectorSSR = createInjector;\n createInjector = shadowMode;\n shadowMode = false;\n } // Vue.extend constructor export interop.\n\n\n var options = typeof script === 'function' ? script.options : script; // render functions\n\n if (template && template.render) {\n options.render = template.render;\n options.staticRenderFns = template.staticRenderFns;\n options._compiled = true; // functional template\n\n if (isFunctionalTemplate) {\n options.functional = true;\n }\n } // scopedId\n\n\n if (scopeId) {\n options._scopeId = scopeId;\n }\n\n var hook;\n\n if (moduleIdentifier) {\n // server build\n hook = function hook(context) {\n // 2.3 injection\n context = context || // cached call\n this.$vnode && this.$vnode.ssrContext || // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n // 2.2 with runInNewContext: true\n\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__;\n } // inject component styles\n\n\n if (style) {\n style.call(this, createInjectorSSR(context));\n } // register component module identifier for async chunk inference\n\n\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n }; // used by ssr in case component is cached and beforeCreate\n // never gets called\n\n\n options._ssrRegister = hook;\n } else if (style) {\n hook = shadowMode ? function () {\n style.call(this, createInjectorShadow(this.$root.$options.shadowRoot));\n } : function (context) {\n style.call(this, createInjector(context));\n };\n }\n\n if (hook) {\n if (options.functional) {\n // register for functional component in vue file\n var originalRender = options.render;\n\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n\n return script;\n }\n\n var normalizeComponent_1 = normalizeComponent;\n\n /* script */\n var __vue_script__ = script;\n\n /* template */\n var __vue_render__ = function __vue_render__() {\n var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('input', { attrs: { \"type\": \"file\", \"name\": _vm.$parent.name, \"id\": _vm.$parent.inputId || _vm.$parent.name, \"accept\": _vm.$parent.accept, \"capture\": _vm.$parent.capture, \"disabled\": _vm.$parent.disabled, \"webkitdirectory\": _vm.$parent.directory && _vm.$parent.features.directory, \"directory\": _vm.$parent.directory && _vm.$parent.features.directory, \"multiple\": _vm.$parent.multiple && _vm.$parent.features.html5 }, on: { \"change\": _vm.change } });\n };\n var __vue_staticRenderFns__ = [];\n\n /* style */\n var __vue_inject_styles__ = undefined;\n /* scoped */\n var __vue_scope_id__ = undefined;\n /* module identifier */\n var __vue_module_identifier__ = undefined;\n /* functional template */\n var __vue_is_functional_template__ = false;\n /* style inject */\n\n /* style inject SSR */\n\n var InputFile = normalizeComponent_1({ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ }, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, undefined, undefined);\n\n var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n var CHUNK_DEFAULT_OPTIONS = {\n headers: {},\n action: '',\n minSize: 1048576,\n maxActive: 3,\n maxRetries: 5,\n\n handler: ChunkUploadHandler\n };\n\n var script$1 = {\n components: {\n InputFile: InputFile\n },\n props: {\n inputId: {\n type: String\n },\n\n name: {\n type: String,\n default: 'file'\n },\n\n accept: {\n type: String\n },\n\n capture: {},\n\n disabled: {},\n\n multiple: {\n type: Boolean\n },\n\n maximum: {\n type: Number,\n default: function _default() {\n return this.multiple ? 0 : 1;\n }\n },\n\n addIndex: {\n type: [Boolean, Number]\n },\n\n directory: {\n type: Boolean\n },\n\n postAction: {\n type: String\n },\n\n putAction: {\n type: String\n },\n\n customAction: {\n type: Function\n },\n\n headers: {\n type: Object,\n default: Object\n },\n\n data: {\n type: Object,\n default: Object\n },\n\n timeout: {\n type: Number,\n default: 0\n },\n\n drop: {\n default: false\n },\n\n dropDirectory: {\n type: Boolean,\n default: true\n },\n\n size: {\n type: Number,\n default: 0\n },\n\n extensions: {\n default: Array\n },\n\n value: {\n type: Array,\n default: Array\n },\n\n thread: {\n type: Number,\n default: 1\n },\n\n // Chunk upload enabled\n chunkEnabled: {\n type: Boolean,\n default: false\n },\n\n // Chunk upload properties\n chunk: {\n type: Object,\n default: function _default() {\n return CHUNK_DEFAULT_OPTIONS;\n }\n }\n },\n\n data: function data() {\n return {\n files: this.value,\n features: {\n html5: true,\n directory: false,\n drop: false\n },\n\n active: false,\n dropActive: false,\n\n uploading: 0,\n\n destroy: false\n };\n },\n\n\n /**\n * mounted\n * @return {[type]} [description]\n */\n mounted: function mounted() {\n var input = document.createElement('input');\n input.type = 'file';\n input.multiple = true;\n\n // html5 特征\n if (window.FormData && input.files) {\n // 上传目录特征\n if (typeof input.webkitdirectory === 'boolean' || typeof input.directory === 'boolean') {\n this.features.directory = true;\n }\n\n // 拖拽特征\n if (this.features.html5 && typeof input.ondrop !== 'undefined') {\n this.features.drop = true;\n }\n } else {\n this.features.html5 = false;\n }\n\n // files 定位缓存\n this.maps = {};\n if (this.files) {\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n this.maps[file.id] = file;\n }\n }\n\n this.$nextTick(function () {\n var _this = this;\n\n // 更新下父级\n if (this.$parent) {\n this.$parent.$forceUpdate();\n // 拖拽渲染\n this.$parent.$nextTick(function () {\n _this.watchDrop(_this.drop);\n });\n } else {\n // 拖拽渲染\n this.watchDrop(this.drop);\n }\n });\n },\n\n\n /**\n * beforeDestroy\n * @return {[type]} [description]\n */\n beforeDestroy: function beforeDestroy() {\n // 已销毁\n this.destroy = true;\n\n // 设置成不激活\n this.active = false;\n\n // 销毁拖拽事件\n this.watchDrop(false);\n },\n\n\n computed: {\n /**\n * uploading 正在上传的线程\n * @return {[type]} [description]\n */\n\n /**\n * uploaded 文件列表是否全部已上传\n * @return {[type]} [description]\n */\n uploaded: function uploaded() {\n var file = void 0;\n for (var i = 0; i < this.files.length; i++) {\n file = this.files[i];\n if (file.fileObject && !file.error && !file.success) {\n return false;\n }\n }\n return true;\n },\n chunkOptions: function chunkOptions() {\n return Object.assign(CHUNK_DEFAULT_OPTIONS, this.chunk);\n },\n className: function className() {\n return ['file-uploads', this.features.html5 ? 'file-uploads-html5' : 'file-uploads-html4', this.features.directory && this.directory ? 'file-uploads-directory' : undefined, this.features.drop && this.drop ? 'file-uploads-drop' : undefined, this.disabled ? 'file-uploads-disabled' : undefined];\n }\n },\n\n watch: {\n active: function active(_active) {\n this.watchActive(_active);\n },\n dropActive: function dropActive() {\n if (this.$parent) {\n this.$parent.$forceUpdate();\n }\n },\n drop: function drop(value) {\n this.watchDrop(value);\n },\n value: function value(files) {\n if (this.files === files) {\n return;\n }\n this.files = files;\n\n var oldMaps = this.maps;\n\n // 重写 maps 缓存\n this.maps = {};\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n this.maps[file.id] = file;\n }\n\n // add, update\n for (var key in this.maps) {\n var newFile = this.maps[key];\n var oldFile = oldMaps[key];\n if (newFile !== oldFile) {\n this.emitFile(newFile, oldFile);\n }\n }\n\n // delete\n for (var _key in oldMaps) {\n if (!this.maps[_key]) {\n this.emitFile(undefined, oldMaps[_key]);\n }\n }\n }\n },\n\n methods: {\n\n // 清空\n clear: function clear() {\n if (this.files.length) {\n var files = this.files;\n this.files = [];\n\n // 定位\n this.maps = {};\n\n // 事件\n this.emitInput();\n for (var i = 0; i < files.length; i++) {\n this.emitFile(undefined, files[i]);\n }\n }\n return true;\n },\n\n\n // 选择\n get: function get(id) {\n if (!id) {\n return false;\n }\n\n if ((typeof id === 'undefined' ? 'undefined' : _typeof(id)) === 'object') {\n return this.maps[id.id] || false;\n }\n\n return this.maps[id] || false;\n },\n\n\n // 添加\n add: function add(_files) {\n var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.addIndex;\n\n var files = _files;\n var isArray = files instanceof Array;\n\n // 不是数组整理成数组\n if (!isArray) {\n files = [files];\n }\n\n // 遍历规范对象\n var addFiles = [];\n for (var i = 0; i < files.length; i++) {\n var file = files[i];\n if (this.features.html5 && file instanceof Blob) {\n file = {\n file: file,\n size: file.size,\n name: file.webkitRelativePath || file.relativePath || file.name || 'unknown',\n type: file.type\n };\n }\n var fileObject = false;\n if (file.fileObject === false) ; else if (file.fileObject) {\n fileObject = true;\n } else if (typeof Element !== 'undefined' && file.el instanceof Element) {\n fileObject = true;\n } else if (typeof Blob !== 'undefined' && file.file instanceof Blob) {\n fileObject = true;\n }\n if (fileObject) {\n file = _extends({\n fileObject: true,\n size: -1,\n name: 'Filename',\n type: '',\n active: false,\n error: '',\n success: false,\n putAction: this.putAction,\n postAction: this.postAction,\n timeout: this.timeout\n }, file, {\n response: {},\n\n progress: '0.00', // 只读\n speed: 0 // 只读\n // xhr: false, // 只读\n // iframe: false, // 只读\n });\n\n file.data = _extends({}, this.data, file.data ? file.data : {});\n\n file.headers = _extends({}, this.headers, file.headers ? file.headers : {});\n }\n\n // 必须包含 id\n if (!file.id) {\n file.id = Math.random().toString(36).substr(2);\n }\n\n if (this.emitFilter(file, undefined)) {\n continue;\n }\n\n // 最大数量限制\n if (this.maximum > 1 && addFiles.length + this.files.length >= this.maximum) {\n break;\n }\n\n addFiles.push(file);\n\n // 最大数量限制\n if (this.maximum === 1) {\n break;\n }\n }\n\n // 没有文件\n if (!addFiles.length) {\n return false;\n }\n\n // 如果是 1 清空\n if (this.maximum === 1) {\n this.clear();\n }\n\n // 添加进去 files\n var newFiles = void 0;\n if (index === true || index === 0) {\n newFiles = addFiles.concat(this.files);\n } else if (index) {\n var _newFiles;\n\n newFiles = this.files.concat([]);\n (_newFiles = newFiles).splice.apply(_newFiles, [index, 0].concat(addFiles));\n } else {\n newFiles = this.files.concat(addFiles);\n }\n\n this.files = newFiles;\n\n // 定位\n for (var _i = 0; _i < addFiles.length; _i++) {\n var _file2 = addFiles[_i];\n this.maps[_file2.id] = _file2;\n }\n\n // 事件\n this.emitInput();\n for (var _i2 = 0; _i2 < addFiles.length; _i2++) {\n this.emitFile(addFiles[_i2], undefined);\n }\n\n return isArray ? addFiles : addFiles[0];\n },\n\n\n // 添加表单文件\n addInputFile: function addInputFile(el) {\n var files = [];\n if (el.files) {\n for (var i = 0; i < el.files.length; i++) {\n var file = el.files[i];\n files.push({\n size: file.size,\n name: file.webkitRelativePath || file.relativePath || file.name,\n type: file.type,\n file: file\n });\n }\n } else {\n var names = el.value.replace(/\\\\/g, '/').split('/');\n delete el.__vuex__;\n files.push({\n name: names[names.length - 1],\n el: el\n });\n }\n return this.add(files);\n },\n\n\n // 添加 DataTransfer\n addDataTransfer: function addDataTransfer(dataTransfer) {\n var _this2 = this;\n\n var files = [];\n if (dataTransfer.items && dataTransfer.items.length) {\n var items = [];\n for (var i = 0; i < dataTransfer.items.length; i++) {\n var item = dataTransfer.items[i];\n if (item.getAsEntry) {\n item = item.getAsEntry() || item.getAsFile();\n } else if (item.webkitGetAsEntry) {\n item = item.webkitGetAsEntry() || item.getAsFile();\n } else {\n item = item.getAsFile();\n }\n if (item) {\n items.push(item);\n }\n }\n\n return new Promise(function (resolve, reject) {\n var forEach = function forEach(i) {\n var item = items[i];\n // 结束 文件数量大于 最大数量\n if (!item || _this2.maximum > 0 && files.length >= _this2.maximum) {\n return resolve(_this2.add(files));\n }\n _this2.getEntry(item).then(function (results) {\n files.push.apply(files, _toConsumableArray(results));\n forEach(i + 1);\n });\n };\n forEach(0);\n });\n }\n\n if (dataTransfer.files.length) {\n for (var _i3 = 0; _i3 < dataTransfer.files.length; _i3++) {\n files.push(dataTransfer.files[_i3]);\n if (this.maximum > 0 && files.length >= this.maximum) {\n break;\n }\n }\n return Promise.resolve(this.add(files));\n }\n\n return Promise.resolve([]);\n },\n\n\n // 获得 entry\n getEntry: function getEntry(entry) {\n var _this3 = this;\n\n var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n return new Promise(function (resolve, reject) {\n if (entry.isFile) {\n entry.file(function (file) {\n resolve([{\n size: file.size,\n name: path + file.name,\n type: file.type,\n file: file\n }]);\n });\n } else if (entry.isDirectory && _this3.dropDirectory) {\n var files = [];\n var dirReader = entry.createReader();\n var readEntries = function readEntries() {\n dirReader.readEntries(function (entries) {\n var forEach = function forEach(i) {\n if (!entries[i] && i === 0 || _this3.maximum > 0 && files.length >= _this3.maximum) {\n return resolve(files);\n }\n if (!entries[i]) {\n return readEntries();\n }\n _this3.getEntry(entries[i], path + entry.name + '/').then(function (results) {\n files.push.apply(files, _toConsumableArray(results));\n forEach(i + 1);\n });\n };\n forEach(0);\n });\n };\n readEntries();\n } else {\n resolve([]);\n }\n });\n },\n replace: function replace(id1, id2) {\n var file1 = this.get(id1);\n var file2 = this.get(id2);\n if (!file1 || !file2 || file1 === file2) {\n return false;\n }\n var files = this.files.concat([]);\n var index1 = files.indexOf(file1);\n var index2 = files.indexOf(file2);\n if (index1 === -1 || index2 === -1) {\n return false;\n }\n files[index1] = file2;\n files[index2] = file1;\n this.files = files;\n this.emitInput();\n return true;\n },\n\n\n // 移除\n remove: function remove(id) {\n var file = this.get(id);\n if (file) {\n if (this.emitFilter(undefined, file)) {\n return false;\n }\n var files = this.files.concat([]);\n var index = files.indexOf(file);\n if (index === -1) {\n console.error('remove', file);\n return false;\n }\n files.splice(index, 1);\n this.files = files;\n\n // 定位\n delete this.maps[file.id];\n\n // 事件\n this.emitInput();\n this.emitFile(undefined, file);\n }\n return file;\n },\n\n\n // 更新\n update: function update(id, data) {\n var file = this.get(id);\n if (file) {\n var newFile = _extends({}, file, data);\n // 停用必须加上错误\n if (file.fileObject && file.active && !newFile.active && !newFile.error && !newFile.success) {\n newFile.error = 'abort';\n }\n\n if (this.emitFilter(newFile, file)) {\n return false;\n }\n\n var files = this.files.concat([]);\n var index = files.indexOf(file);\n if (index === -1) {\n console.error('update', file);\n return false;\n }\n files.splice(index, 1, newFile);\n this.files = files;\n\n // 删除 旧定位 写入 新定位 (已便支持修改id)\n delete this.maps[file.id];\n this.maps[newFile.id] = newFile;\n\n // 事件\n this.emitInput();\n this.emitFile(newFile, file);\n return newFile;\n }\n return false;\n },\n\n\n // 预处理 事件 过滤器\n emitFilter: function emitFilter(newFile, oldFile) {\n var isPrevent = false;\n this.$emit('input-filter', newFile, oldFile, function () {\n isPrevent = true;\n return isPrevent;\n });\n return isPrevent;\n },\n\n\n // 处理后 事件 分发\n emitFile: function emitFile(newFile, oldFile) {\n this.$emit('input-file', newFile, oldFile);\n if (newFile && newFile.fileObject && newFile.active && (!oldFile || !oldFile.active)) {\n this.uploading++;\n // 激活\n this.$nextTick(function () {\n var _this4 = this;\n\n setTimeout(function () {\n _this4.upload(newFile).then(function () {\n // eslint-disable-next-line\n newFile = _this4.get(newFile);\n if (newFile && newFile.fileObject) {\n _this4.update(newFile, {\n active: false,\n success: !newFile.error\n });\n }\n }).catch(function (e) {\n _this4.update(newFile, {\n active: false,\n success: false,\n error: e.code || e.error || e.message || e\n });\n });\n }, parseInt(Math.random() * 50 + 50, 10));\n });\n } else if ((!newFile || !newFile.fileObject || !newFile.active) && oldFile && oldFile.fileObject && oldFile.active) {\n // 停止\n this.uploading--;\n }\n\n // 自动延续激活\n if (this.active && (Boolean(newFile) !== Boolean(oldFile) || newFile.active !== oldFile.active)) {\n this.watchActive(true);\n }\n },\n emitInput: function emitInput() {\n this.$emit('input', this.files);\n },\n\n\n // 上传\n upload: function upload(id) {\n var file = this.get(id);\n\n // 被删除\n if (!file) {\n return Promise.reject('not_exists');\n }\n\n // 不是文件对象\n if (!file.fileObject) {\n return Promise.reject('file_object');\n }\n\n // 有错误直接响应\n if (file.error) {\n return Promise.reject(file.error);\n }\n\n // 已完成直接响应\n if (file.success) {\n return Promise.resolve(file);\n }\n\n // 后缀\n var extensions = this.extensions;\n if (extensions && (extensions.length || typeof extensions.length === 'undefined')) {\n if ((typeof extensions === 'undefined' ? 'undefined' : _typeof(extensions)) !== 'object' || !(extensions instanceof RegExp)) {\n if (typeof extensions === 'string') {\n extensions = extensions.split(',').map(function (value) {\n return value.trim();\n }).filter(function (value) {\n return value;\n });\n }\n extensions = new RegExp('\\\\.(' + extensions.join('|').replace(/\\./g, '\\\\.') + ')$', 'i');\n }\n if (file.name.search(extensions) === -1) {\n return Promise.reject('extension');\n }\n }\n\n // 大小\n if (this.size > 0 && file.size >= 0 && file.size > this.size) {\n return Promise.reject('size');\n }\n\n if (this.customAction) {\n return this.customAction(file, this);\n }\n\n if (this.features.html5) {\n if (this.shouldUseChunkUpload(file)) {\n return this.uploadChunk(file);\n }\n if (file.putAction) {\n return this.uploadPut(file);\n }\n if (file.postAction) {\n return this.uploadHtml5(file);\n }\n }\n if (file.postAction) {\n return this.uploadHtml4(file);\n }\n return Promise.reject('No action configured');\n },\n\n\n /**\n * Whether this file should be uploaded using chunk upload or not\n *\n * @param Object file\n */\n shouldUseChunkUpload: function shouldUseChunkUpload(file) {\n return this.chunkEnabled && !!this.chunkOptions.handler && file.size > this.chunkOptions.minSize;\n },\n\n\n /**\n * Upload a file using Chunk method\n *\n * @param File file\n */\n uploadChunk: function uploadChunk(file) {\n var HandlerClass = this.chunkOptions.handler;\n file.chunk = new HandlerClass(file, this.chunkOptions);\n\n return file.chunk.upload();\n },\n uploadPut: function uploadPut(file) {\n var querys = [];\n var value = void 0;\n for (var key in file.data) {\n value = file.data[key];\n if (value !== null && value !== undefined) {\n querys.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n }\n }\n var queryString = querys.length ? (file.putAction.indexOf('?') === -1 ? '?' : '&') + querys.join('&') : '';\n var xhr = new XMLHttpRequest();\n xhr.open('PUT', file.putAction + queryString);\n return this.uploadXhr(xhr, file, file.file);\n },\n uploadHtml5: function uploadHtml5(file) {\n var form = new window.FormData();\n var value = void 0;\n for (var key in file.data) {\n value = file.data[key];\n if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString !== 'function') {\n if (value instanceof File) {\n form.append(key, value, value.name);\n } else {\n form.append(key, JSON.stringify(value));\n }\n } else if (value !== null && value !== undefined) {\n form.append(key, value);\n }\n }\n form.append(this.name, file.file, file.file.filename || file.name);\n var xhr = new XMLHttpRequest();\n xhr.open('POST', file.postAction);\n return this.uploadXhr(xhr, file, form);\n },\n uploadXhr: function uploadXhr(xhr, _file, body) {\n var _this5 = this;\n\n var file = _file;\n var speedTime = 0;\n var speedLoaded = 0;\n\n // 进度条\n xhr.upload.onprogress = function (e) {\n // 还未开始上传 已删除 未激活\n file = _this5.get(file);\n if (!e.lengthComputable || !file || !file.fileObject || !file.active) {\n return;\n }\n\n // 进度 速度 每秒更新一次\n var speedTime2 = Math.round(Date.now() / 1000);\n if (speedTime2 === speedTime) {\n return;\n }\n speedTime = speedTime2;\n\n file = _this5.update(file, {\n progress: (e.loaded / e.total * 100).toFixed(2),\n speed: e.loaded - speedLoaded\n });\n speedLoaded = e.loaded;\n };\n\n // 检查激活状态\n var interval = setInterval(function () {\n file = _this5.get(file);\n if (file && file.fileObject && !file.success && !file.error && file.active) {\n return;\n }\n\n if (interval) {\n clearInterval(interval);\n interval = false;\n }\n\n try {\n xhr.abort();\n xhr.timeout = 1;\n } catch (e) {}\n }, 100);\n\n return new Promise(function (resolve, reject) {\n var complete = void 0;\n var fn = function fn(e) {\n // 已经处理过了\n if (complete) {\n return;\n }\n complete = true;\n if (interval) {\n clearInterval(interval);\n interval = false;\n }\n\n file = _this5.get(file);\n\n // 不存在直接响应\n if (!file) {\n return reject('not_exists');\n }\n\n // 不是文件对象\n if (!file.fileObject) {\n return reject('file_object');\n }\n\n // 有错误自动响应\n if (file.error) {\n return reject(file.error);\n }\n\n // 未激活\n if (!file.active) {\n return reject('abort');\n }\n\n // 已完成 直接相应\n if (file.success) {\n return resolve(file);\n }\n\n var data = {};\n\n switch (e.type) {\n case 'timeout':\n case 'abort':\n data.error = e.type;\n break;\n case 'error':\n if (!xhr.status) {\n data.error = 'network';\n } else if (xhr.status >= 500) {\n data.error = 'server';\n } else if (xhr.status >= 400) {\n data.error = 'denied';\n }\n break;\n default:\n if (xhr.status >= 500) {\n data.error = 'server';\n } else if (xhr.status >= 400) {\n data.error = 'denied';\n } else {\n data.progress = '100.00';\n }\n }\n\n if (xhr.responseText) {\n var contentType = xhr.getResponseHeader('Content-Type');\n if (contentType && contentType.indexOf('/json') !== -1) {\n data.response = JSON.parse(xhr.responseText);\n } else {\n data.response = xhr.responseText;\n }\n }\n\n // 更新\n file = _this5.update(file, data);\n\n // 相应错误\n if (file.error) {\n return reject(file.error);\n }\n\n // 响应\n return resolve(file);\n };\n\n // 事件\n xhr.onload = fn;\n xhr.onerror = fn;\n xhr.onabort = fn;\n xhr.ontimeout = fn;\n\n // 超时\n if (file.timeout) {\n xhr.timeout = file.timeout;\n }\n\n // headers\n for (var key in file.headers) {\n xhr.setRequestHeader(key, file.headers[key]);\n }\n\n // 更新 xhr\n file = _this5.update(file, { xhr: xhr });\n\n // 开始上传\n xhr.send(body);\n });\n },\n uploadHtml4: function uploadHtml4(_file) {\n var _this6 = this;\n\n var file = _file;\n var onKeydown = function onKeydown(e) {\n if (e.keyCode === 27) {\n e.preventDefault();\n }\n };\n\n var iframe = document.createElement('iframe');\n iframe.id = 'upload-iframe-' + file.id;\n iframe.name = 'upload-iframe-' + file.id;\n iframe.src = 'about:blank';\n iframe.setAttribute('style', 'width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;');\n\n var form = document.createElement('form');\n\n form.action = file.postAction;\n\n form.name = 'upload-form-' + file.id;\n\n form.setAttribute('method', 'POST');\n form.setAttribute('target', 'upload-iframe-' + file.id);\n form.setAttribute('enctype', 'multipart/form-data');\n\n var value = void 0;\n var input = void 0;\n for (var key in file.data) {\n value = file.data[key];\n if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString !== 'function') {\n value = JSON.stringify(value);\n }\n if (value !== null && value !== undefined) {\n input = document.createElement('input');\n input.type = 'hidden';\n input.name = key;\n input.value = value;\n form.appendChild(input);\n }\n }\n form.appendChild(file.el);\n\n document.body.appendChild(iframe).appendChild(form);\n\n var getResponseData = function getResponseData() {\n var doc = void 0;\n try {\n if (iframe.contentWindow) {\n doc = iframe.contentWindow.document;\n }\n } catch (err) {}\n if (!doc) {\n try {\n doc = iframe.contentDocument ? iframe.contentDocument : iframe.document;\n } catch (err) {\n doc = iframe.document;\n }\n }\n if (doc && doc.body) {\n return doc.body.innerHTML;\n }\n return null;\n };\n\n return new Promise(function (resolve, reject) {\n setTimeout(function () {\n file = _this6.update(file, { iframe: iframe });\n\n // 不存在\n if (!file) {\n return reject('not_exists');\n }\n\n // 定时检查\n var interval = setInterval(function () {\n file = _this6.get(file);\n if (file && file.fileObject && !file.success && !file.error && file.active) {\n return;\n }\n\n if (interval) {\n clearInterval(interval);\n interval = false;\n }\n\n iframe.onabort({ type: file ? 'abort' : 'not_exists' });\n }, 100);\n\n var complete = void 0;\n var fn = function fn(e) {\n // 已经处理过了\n if (complete) {\n return;\n }\n complete = true;\n\n if (interval) {\n clearInterval(interval);\n interval = false;\n }\n\n // 关闭 esc 事件\n document.body.removeEventListener('keydown', onKeydown);\n\n file = _this6.get(file);\n\n // 不存在直接响应\n if (!file) {\n return reject('not_exists');\n }\n\n // 不是文件对象\n if (!file.fileObject) {\n return reject('file_object');\n }\n\n // 有错误自动响应\n if (file.error) {\n return reject(file.error);\n }\n\n // 未激活\n if (!file.active) {\n return reject('abort');\n }\n\n // 已完成 直接相应\n if (file.success) {\n return resolve(file);\n }\n\n var response = getResponseData();\n var data = {};\n switch (e.type) {\n case 'abort':\n data.error = 'abort';\n break;\n case 'error':\n if (file.error) {\n data.error = file.error;\n } else if (response === null) {\n data.error = 'network';\n } else {\n data.error = 'denied';\n }\n break;\n default:\n if (file.error) {\n data.error = file.error;\n } else if (data === null) {\n data.error = 'network';\n } else {\n data.progress = '100.00';\n }\n }\n\n if (response !== null) {\n if (response && response.substr(0, 1) === '{' && response.substr(response.length - 1, 1) === '}') {\n try {\n response = JSON.parse(response);\n } catch (err) {}\n }\n data.response = response;\n }\n\n // 更新\n file = _this6.update(file, data);\n\n if (file.error) {\n return reject(file.error);\n }\n\n // 响应\n return resolve(file);\n };\n\n // 添加事件\n iframe.onload = fn;\n iframe.onerror = fn;\n iframe.onabort = fn;\n\n // 禁止 esc 键\n document.body.addEventListener('keydown', onKeydown);\n\n // 提交\n form.submit();\n }, 50);\n }).then(function (res) {\n iframe.parentNode && iframe.parentNode.removeChild(iframe);\n return res;\n }).catch(function (res) {\n iframe.parentNode && iframe.parentNode.removeChild(iframe);\n return res;\n });\n },\n watchActive: function watchActive(active) {\n var file = void 0;\n var index = 0;\n while (file = this.files[index]) {\n index++;\n if (!file.fileObject) ; else if (active && !this.destroy) {\n if (this.uploading >= this.thread || this.uploading && !this.features.html5) {\n break;\n }\n if (!file.active && !file.error && !file.success) {\n this.update(file, { active: true });\n }\n } else {\n if (file.active) {\n this.update(file, { active: false });\n }\n }\n }\n if (this.uploading === 0) {\n this.active = false;\n }\n },\n watchDrop: function watchDrop(_el) {\n var el = _el;\n if (!this.features.drop) {\n return;\n }\n\n // 移除挂载\n if (this.dropElement) {\n try {\n document.removeEventListener('dragenter', this.onDragenter, false);\n document.removeEventListener('dragleave', this.onDragleave, false);\n document.removeEventListener('drop', this.onDocumentDrop, false);\n this.dropElement.removeEventListener('dragover', this.onDragover, false);\n this.dropElement.removeEventListener('drop', this.onDrop, false);\n } catch (e) {}\n }\n\n if (!el) {\n el = false;\n } else if (typeof el === 'string') {\n el = document.querySelector(el) || this.$root.$el.querySelector(el);\n } else if (el === true) {\n el = this.$parent.$el;\n }\n\n this.dropElement = el;\n\n if (this.dropElement) {\n document.addEventListener('dragenter', this.onDragenter, false);\n document.addEventListener('dragleave', this.onDragleave, false);\n document.addEventListener('drop', this.onDocumentDrop, false);\n this.dropElement.addEventListener('dragover', this.onDragover, false);\n this.dropElement.addEventListener('drop', this.onDrop, false);\n }\n },\n onDragenter: function onDragenter(e) {\n e.preventDefault();\n if (this.dropActive) {\n return;\n }\n if (!e.dataTransfer) {\n return;\n }\n var dt = e.dataTransfer;\n if (dt.files && dt.files.length) {\n this.dropActive = true;\n } else if (!dt.types) {\n this.dropActive = true;\n } else if (dt.types.indexOf && dt.types.indexOf('Files') !== -1) {\n this.dropActive = true;\n } else if (dt.types.contains && dt.types.contains('Files')) {\n this.dropActive = true;\n }\n },\n onDragleave: function onDragleave(e) {\n e.preventDefault();\n if (!this.dropActive) {\n return;\n }\n if (e.target.nodeName === 'HTML' || e.target === e.explicitOriginalTarget || !e.fromElement && (e.clientX <= 0 || e.clientY <= 0 || e.clientX >= window.innerWidth || e.clientY >= window.innerHeight)) {\n this.dropActive = false;\n }\n },\n onDragover: function onDragover(e) {\n e.preventDefault();\n },\n onDocumentDrop: function onDocumentDrop() {\n this.dropActive = false;\n },\n onDrop: function onDrop(e) {\n e.preventDefault();\n this.addDataTransfer(e.dataTransfer);\n }\n }\n };\n\n var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\n function createInjector(context) {\n return function (id, style) {\n return addStyle(id, style);\n };\n }\n var HEAD = document.head || document.getElementsByTagName('head')[0];\n var styles = {};\n\n function addStyle(id, css) {\n var group = isOldIE ? css.media || 'default' : id;\n var style = styles[group] || (styles[group] = {\n ids: new Set(),\n styles: []\n });\n\n if (!style.ids.has(id)) {\n style.ids.add(id);\n var code = css.source;\n\n if (css.map) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n code += '\\n/*# sourceURL=' + css.map.sources[0] + ' */'; // http://stackoverflow.com/a/26603875\n\n code += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) + ' */';\n }\n\n if (!style.element) {\n style.element = document.createElement('style');\n style.element.type = 'text/css';\n if (css.media) style.element.setAttribute('media', css.media);\n HEAD.appendChild(style.element);\n }\n\n if ('styleSheet' in style.element) {\n style.styles.push(code);\n style.element.styleSheet.cssText = style.styles.filter(Boolean).join('\\n');\n } else {\n var index = style.ids.size - 1;\n var textNode = document.createTextNode(code);\n var nodes = style.element.childNodes;\n if (nodes[index]) style.element.removeChild(nodes[index]);\n if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode);\n }\n }\n }\n\n var browser = createInjector;\n\n /* script */\n var __vue_script__$1 = script$1;\n\n /* template */\n var __vue_render__$1 = function __vue_render__() {\n var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('span', { class: _vm.className }, [_vm._t(\"default\"), _vm._v(\" \"), _c('label', { attrs: { \"for\": _vm.inputId || _vm.name } }), _vm._v(\" \"), _c('input-file')], 2);\n };\n var __vue_staticRenderFns__$1 = [];\n\n /* style */\n var __vue_inject_styles__$1 = function __vue_inject_styles__(inject) {\n if (!inject) return;\n inject(\"data-v-76d380b6_0\", { source: \".file-uploads{overflow:hidden;position:relative;text-align:center;display:inline-block}.file-uploads.file-uploads-html4 input,.file-uploads.file-uploads-html5 label{background:#fff;opacity:0;font-size:20em;z-index:1;top:0;left:0;right:0;bottom:0;position:absolute;width:100%;height:100%}.file-uploads.file-uploads-html4 label,.file-uploads.file-uploads-html5 input{background:rgba(255,255,255,0);overflow:hidden;position:fixed;width:1px;height:1px;z-index:-1;opacity:0}\", map: undefined, media: undefined });\n };\n /* scoped */\n var __vue_scope_id__$1 = undefined;\n /* module identifier */\n var __vue_module_identifier__$1 = undefined;\n /* functional template */\n var __vue_is_functional_template__$1 = false;\n /* style inject SSR */\n\n var FileUpload = normalizeComponent_1({ render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 }, __vue_inject_styles__$1, __vue_script__$1, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, browser, undefined);\n\n var FileUpload$1 = /*#__PURE__*/Object.freeze({\n default: FileUpload\n });\n\n function getCjsExportFromNamespace (n) {\n \treturn n && n['default'] || n;\n }\n\n var require$$0 = getCjsExportFromNamespace(FileUpload$1);\n\n var src = require$$0;\n\n return src;\n\n})));\n//# sourceMappingURL=vue-upload-component.js.map\n"],"sourceRoot":""}