{"version":3,"sources":["webpack:///./node_modules/vue-upload-component/dist/vue-upload-component.js"],"names":["global","factory","module","exports","this","vue","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","o","minLen","_arrayLikeToArray","n","Object","prototype","toString","call","slice","constructor","name","Array","from","test","iter","Symbol","iterator","isArray","len","length","i","arr2","_ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","arguments","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","configurable","writable","_typeof","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","_defineProperty","ownKeys","_objectSpread2","createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","setRequestHeader","sendRequest","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","sendFormRequest","data","FormData","append","request","ChunkUploadHandler","file","chunks","sessionId","chunkSize","speedInterval","start","end","fileSize","blob","startOffset","active","retries","maxRetries","progress","stopChunks","chunksUploading","chunk","abort","stopSpeedCalc","startChunking","_this","promise","_this2","action","assign","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","CHUNK_DEFAULT_OPTIONS","minSize","handler","script","defineComponent","inputId","String","default","accept","capture","disabled","multiple","Boolean","maximum","Number","addIndex","directory","createDirectory","postAction","putAction","customAction","Function","timeout","drop","dropDirectory","extensions","RegExp","modelValue","thread","chunkEnabled","emits","files","features","html5","dropActive","uploading","destroy","maps","dropElement","reload","mounted","_this7","input","document","createElement","webkitdirectory","ondrop","id","$nextTick","$parent","$forceUpdate","watchDrop","beforeUnmount","watchActive","computed","fileObject","error","success","chunkOptions","className","undefined","forId","iMaximum","iExtensions","exts","split","map","trim","join","replace","watch","_active","oldMaps","newFile","oldFile","emitFile","_key","methods","newId","random","substr","clear","emitInput","add","_files","index","addFiles","Blob","webkitRelativePath","relativePath","Element","el","HTMLInputElement","emitFilter","newFiles","concat","_newFiles","splice","_i","_file","_i2","addInputFile","_this8","entrys","webkitEntries","entries","getFileSystemEntry","names","__vuex__","addDataTransfer","dataTransfer","_dataTransfer$items","_this9","items","dataTransferTtem","entry","getAsEntry","getAsFile","webkitGetAsEntry","maximumValue","_i3","_this10","path","uploadFiles","v","results","isFile","isDirectory","_uploadFiles","File","dirReader","createReader","readEntries","id1","id2","file1","file2","index1","indexOf","index2","remove","console","update","isPrevent","$emit","prevent","_newFile","_this11","setTimeout","_newFile2","e","code","message","ceil","Error","search","shouldUseChunkUpload","uploadPut","uploadHtml5","uploadHtml4","HandlerClass","querys","encodeURIComponent","queryString","uploadXhr","form","filename","ufile","_this12","speedTime","speedLoaded","onprogress","speedTime2","Date","now","toFixed","interval","_file2","complete","fn","responseText","contentType","getResponseHeader","onabort","ontimeout","_this13","onKeydown","keyCode","preventDefault","iframe","src","setAttribute","appendChild","getResponseData","_doc","doc","contentWindow","contentDocument","innerHTML","_file3","removeEventListener","submit","_iframe$parentNode","parentNode","removeChild","_iframe$parentNode2","newDrop","oldDrop","onDragenter","onDragleave","onDocumentDrop","onDragover","onDrop","querySelector","$root","$el","_dt$files","_dt$types","dt","types","contains","nodeName","explicitOriginalTarget","fromElement","clientX","clientY","innerWidth","innerHeight","inputOnChange","async","_this14","reinput","render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createBlock","class","renderSlot","$slots","createVNode","for","createCommentVNode","ref","allowdirs","onChange","styleInject","css","insertAt","head","getElementsByTagName","style","firstChild","insertBefore","styleSheet","cssText","createTextNode","css_248z"],"mappings":"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","file":"js/chunk-2d0dd016.b269a6f9.js","sourcesContent":["/*!\n Name: vue-upload-component \nComponent URI: https://github.com/lian-yue/vue-upload-component#readme \nVersion: 3.0.49 \nAuthor: LianYue \nLicense: Apache-2.0 \nDescription: Vue.js file upload component, Multi-file upload, Upload directory, Drag upload, Drag the directory, Upload multiple files at the same time, html4 (IE 9), `PUT` method, Customize the filter \n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue')) :\n typeof define === 'function' && define.amd ? define(['vue'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.VueUploadComponent = factory(global.Vue));\n}(this, (function (vue) { 'use strict';\n\n function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\n function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\n function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\n function _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\n function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\n function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n function _ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\n function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { _ownKeys(Object(source), true).forEach(function (key) { _defineProperty2(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { _ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n function _defineProperty2(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\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\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n }\n /**\n * Creates a XHR request\n *\n * @param {Object} options\n */\n\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\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 * Sends a XHR request with certain body\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} body\n */\n\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\n try {\n response = JSON.parse(xhr.response);\n } catch (err) {\n response = xhr.response;\n }\n\n resolve(response);\n } else {\n reject(xhr.response);\n }\n };\n\n xhr.onerror = function () {\n return reject(xhr.response);\n };\n\n xhr.send(JSON.stringify(body));\n });\n };\n /**\n * Sends a XHR request with certain form data\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} data\n */\n\n\n var sendFormRequest = function sendFormRequest(xhr, data) {\n var body = new FormData();\n\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\n try {\n response = JSON.parse(xhr.response);\n } catch (err) {\n response = xhr.response;\n }\n\n resolve(response);\n } else {\n reject(xhr.response);\n }\n };\n\n xhr.onerror = function () {\n return reject(xhr.response);\n };\n\n xhr.send(body);\n });\n };\n /**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\n\n\n function request(options) {\n var xhr = createRequest(options);\n return sendRequest(xhr, options.body);\n }\n\n var ChunkUploadHandler = /*#__PURE__*/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 * Gets the max retries from options\n */\n\n\n _createClass(ChunkUploadHandler, [{\n key: \"createChunks\",\n\n /**\n * Creates all the chunks in the initial state\n */\n value: function createChunks() {\n this.chunks = [];\n var start = 0;\n var end = this.chunkSize;\n\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 * 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 * 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 * 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 this.stopSpeedCalc();\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 * 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 return this.promise;\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: _objectSpread2(_objectSpread2({}, 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\n _this2.startChunking();\n }).catch(function (res) {\n _this2.file.response = res;\n\n _this2.reject('server');\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 * 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 * 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 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 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\n if (res.status === 'success') {\n chunk.uploaded = true;\n } else {\n if (chunk.retries-- <= 0) {\n _this3.stopChunks();\n\n return _this3.reject('upload');\n }\n }\n\n _this3.uploadNextChunk();\n }).catch(function () {\n chunk.active = false;\n\n if (chunk.retries-- <= 0) {\n _this3.stopChunks();\n\n return _this3.reject('upload');\n }\n\n _this3.uploadNextChunk();\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 request({\n method: 'POST',\n headers: _objectSpread2(_objectSpread2({}, 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\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\n _this4.reject('server');\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\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 * 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 * 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 * Gets the file type\n */\n\n }, {\n key: \"fileType\",\n get: function get() {\n return this.file.type;\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 * Gets the file name\n */\n\n }, {\n key: \"fileName\",\n get: function get() {\n return this.file.name;\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 * 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 * 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 * 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 * 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 * 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 * 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 return Math.min(completedProgress + uploadingProgress, 100);\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 * 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 * 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 * 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 var CHUNK_DEFAULT_OPTIONS = {\n headers: {},\n action: '',\n minSize: 1048576,\n maxActive: 3,\n maxRetries: 5,\n handler: ChunkUploadHandler\n };\n var script = vue.defineComponent({\n props: {\n inputId: {\n type: String\n },\n name: {\n type: String,\n default: 'file'\n },\n accept: {\n type: String\n },\n capture: {},\n disabled: {\n default: false\n },\n multiple: {\n type: Boolean,\n default: false\n },\n maximum: {\n type: Number\n },\n addIndex: {\n type: [Boolean, Number]\n },\n directory: {\n type: Boolean\n },\n createDirectory: {\n type: Boolean,\n default: false\n },\n postAction: {\n type: String\n },\n putAction: {\n type: String\n },\n customAction: {\n type: Function\n },\n headers: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n data: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n timeout: {\n type: Number,\n default: 0\n },\n drop: {\n default: false\n },\n dropDirectory: {\n type: Boolean,\n default: true\n },\n size: {\n type: Number,\n default: 0\n },\n extensions: {\n type: [RegExp, String, Array],\n default: function _default() {\n return [];\n }\n },\n modelValue: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n thread: {\n type: Number,\n default: 1\n },\n // Chunk upload enabled\n chunkEnabled: {\n type: Boolean,\n default: false\n },\n // Chunk upload properties\n chunk: {\n type: Object,\n default: function _default() {\n return CHUNK_DEFAULT_OPTIONS;\n }\n }\n },\n emits: ['update:modelValue', 'input-filter', 'input-file'],\n data: function data() {\n return {\n files: this.modelValue,\n features: {\n html5: true,\n directory: false,\n drop: false\n },\n active: false,\n dropActive: false,\n uploading: 0,\n destroy: false,\n maps: {},\n dropElement: null,\n reload: false\n };\n },\n\n /**\r\n * mounted\r\n * @return {[type]} [description]\r\n */\n mounted: function mounted() {\n var _this7 = this;\n\n var input = document.createElement('input');\n input.type = 'file';\n input.multiple = true; // html5 特征\n\n if (window.FormData && input.files) {\n // 上传目录特征\n // @ts-ignore\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 } // files 定位缓存\n\n\n this.maps = {};\n\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 } // @ts-ignore\n\n\n this.$nextTick(function () {\n // 更新下父级\n if (_this7.$parent) {\n _this7.$parent.$forceUpdate(); // 拖拽渲染\n\n\n _this7.$parent.$nextTick(function () {\n _this7.watchDrop(_this7.drop);\n });\n } else {\n // 拖拽渲染\n _this7.watchDrop(_this7.drop);\n }\n });\n },\n\n /**\r\n * beforeUnmount\r\n * @return {[type]} [description]\r\n */\n beforeUnmount: function beforeUnmount() {\n // 已销毁\n this.destroy = true; // 设置成不激活\n\n this.active = false; // 销毁拖拽事件\n\n this.watchDrop(false); // 销毁不激活\n\n this.watchActive(false);\n },\n computed: {\n /**\r\n * uploading 正在上传的线程\r\n * @return {[type]} [description]\r\n */\n\n /**\r\n * uploaded 文件列表是否全部已上传\r\n * @return {[type]} [description]\r\n */\n uploaded: function uploaded() {\n var file;\n\n for (var i = 0; i < this.files.length; i++) {\n file = this.files[i];\n\n if (file.fileObject && !file.error && !file.success) {\n return false;\n }\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 forId: function forId() {\n return this.inputId || this.name;\n },\n iMaximum: function iMaximum() {\n if (this.maximum === undefined) {\n return this.multiple ? 0 : 1;\n }\n\n return this.maximum;\n },\n iExtensions: function iExtensions() {\n if (!this.extensions) {\n return;\n }\n\n if (this.extensions instanceof RegExp) {\n return this.extensions;\n }\n\n if (!this.extensions.length) {\n return;\n }\n\n var exts = [];\n\n if (typeof this.extensions === 'string') {\n exts = this.extensions.split(',');\n } else {\n exts = this.extensions;\n }\n\n exts = exts.map(function (value) {\n return value.trim();\n }).filter(function (value) {\n return value;\n });\n return new RegExp('\\\\.(' + exts.join('|').replace(/\\./g, '\\\\.') + ')$', 'i');\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 modelValue: function modelValue(files) {\n if (this.files === files) {\n return;\n }\n\n this.files = files;\n var oldMaps = this.maps; // 重写 maps 缓存\n\n this.maps = {};\n\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n this.maps[file.id] = file;\n } // add, update\n\n\n for (var key in this.maps) {\n var newFile = this.maps[key];\n var oldFile = oldMaps[key];\n\n if (newFile !== oldFile) {\n this.emitFile(newFile, oldFile);\n }\n } // delete\n\n\n for (var _key in oldMaps) {\n if (!this.maps[_key]) {\n this.emitFile(undefined, oldMaps[_key]);\n }\n }\n }\n },\n methods: {\n newId: function newId() {\n return Math.random().toString(36).substr(2);\n },\n // 清空\n clear: function clear() {\n if (this.files.length) {\n var files = this.files;\n this.files = []; // 定位\n\n this.maps = {}; // 事件\n\n this.emitInput();\n\n for (var i = 0; i < files.length; i++) {\n this.emitFile(undefined, files[i]);\n }\n }\n\n return true;\n },\n // 选择\n get: function get(id) {\n if (!id) {\n return false;\n }\n\n if (_typeof(id) === 'object') {\n return this.maps[id.id || ''] || false;\n }\n\n return this.maps[id] || false;\n },\n // 添加\n add: function add(_files, index) {\n // 不是数组整理成数组\n var files;\n\n if (_files instanceof Array) {\n files = _files;\n } else {\n files = [_files];\n }\n\n if (index === undefined) {\n // eslint-disable-next-line\n index = this.addIndex;\n } // 遍历规范对象\n\n\n var addFiles = [];\n\n for (var i = 0; i < files.length; i++) {\n var file = files[i];\n\n if (this.features.html5 && file instanceof Blob) {\n file = {\n id: '',\n file: file,\n size: file.size,\n // @ts-ignore\n name: file.webkitRelativePath || file.relativePath || file.name || 'unknown',\n type: file.type\n };\n }\n\n file = file;\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 HTMLInputElement) {\n fileObject = true;\n } else if (typeof Blob !== 'undefined' && file.file instanceof Blob) {\n fileObject = true;\n }\n\n if (fileObject) {\n file = _objectSpread(_objectSpread({\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 progress: '0.00',\n speed: 0\n });\n file.data = _objectSpread(_objectSpread({}, this.data), file.data ? file.data : {});\n file.headers = _objectSpread(_objectSpread({}, this.headers), file.headers ? file.headers : {});\n } // 必须包含 id\n\n\n if (!file.id) {\n file.id = this.newId();\n }\n\n if (this.emitFilter(file, undefined)) {\n continue;\n } // 最大数量限制\n\n\n if (this.iMaximum > 1 && addFiles.length + this.files.length >= this.iMaximum) {\n break;\n }\n\n addFiles.push(file); // 最大数量限制\n\n if (this.iMaximum === 1) {\n break;\n }\n } // 没有文件\n\n\n if (!addFiles.length) {\n return;\n } // 如果是 1 清空\n\n\n if (this.iMaximum === 1) {\n this.clear();\n } // 添加进去 files\n\n\n var newFiles;\n\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\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 for (var _i = 0; _i < addFiles.length; _i++) {\n var _file = addFiles[_i];\n this.maps[_file.id] = _file;\n } // 事件\n\n\n this.emitInput();\n\n for (var _i2 = 0; _i2 < addFiles.length; _i2++) {\n this.emitFile(addFiles[_i2], undefined);\n }\n\n return _files instanceof Array ? addFiles : addFiles[0];\n },\n // 添加表单文件\n addInputFile: function addInputFile(el) {\n var _this8 = this;\n\n var files = [];\n var maximumValue = this.iMaximum; // @ts-ignore\n\n var entrys = el.webkitEntries || el.entries || undefined;\n\n if (entrys !== null && entrys !== void 0 && entrys.length) {\n return this.getFileSystemEntry(entrys).then(function (files) {\n return _this8.add(files);\n });\n }\n\n if (el.files) {\n for (var i = 0; i < el.files.length; i++) {\n var file = el.files[i];\n files.push({\n id: '',\n size: file.size,\n // @ts-ignore\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\n if (!names || !names.length) {\n names = [el.value];\n } // @ts-ignore\n\n\n delete el.__vuex__;\n files.push({\n id: '',\n name: names[names.length - 1],\n el: el\n });\n }\n\n return Promise.resolve(this.add(files));\n },\n // 添加 DataTransfer\n addDataTransfer: function addDataTransfer(dataTransfer) {\n var _dataTransfer$items,\n _this9 = this;\n\n // dataTransfer.items 支持\n if (dataTransfer !== null && dataTransfer !== void 0 && (_dataTransfer$items = dataTransfer.items) !== null && _dataTransfer$items !== void 0 && _dataTransfer$items.length) {\n var entrys = []; // 遍历出所有 dataTransferVueUploadItem\n\n for (var i = 0; i < dataTransfer.items.length; i++) {\n var dataTransferTtem = dataTransfer.items[i];\n var entry = void 0; // @ts-ignore\n\n if (dataTransferTtem.getAsEntry) {\n // @ts-ignore\n entry = dataTransferTtem.getAsEntry() || dataTransferTtem.getAsFile();\n } else if (dataTransferTtem.webkitGetAsEntry) {\n entry = dataTransferTtem.webkitGetAsEntry() || dataTransferTtem.getAsFile();\n } else {\n entry = dataTransferTtem.getAsFile();\n }\n\n if (entry) {\n entrys.push(entry);\n }\n }\n\n return this.getFileSystemEntry(entrys).then(function (files) {\n return _this9.add(files);\n });\n } // dataTransfer.files 支持\n\n\n var maximumValue = this.iMaximum;\n var files = [];\n\n if (dataTransfer.files.length) {\n for (var _i3 = 0; _i3 < dataTransfer.files.length; _i3++) {\n files.push(dataTransfer.files[_i3]);\n\n if (maximumValue > 0 && files.length >= maximumValue) {\n break;\n }\n }\n\n return Promise.resolve(this.add(files));\n }\n\n return Promise.resolve([]);\n },\n // 获得 entrys \n getFileSystemEntry: function getFileSystemEntry(entry) {\n var _this10 = this;\n\n var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return new Promise(function (resolve) {\n var maximumValue = _this10.iMaximum;\n\n if (!entry) {\n resolve([]);\n return;\n }\n\n if (entry instanceof Array) {\n // 多个\n var uploadFiles = [];\n\n var forEach = function forEach(i) {\n var v = entry[i];\n\n if (!v || maximumValue > 0 && uploadFiles.length >= maximumValue) {\n return resolve(uploadFiles);\n }\n\n _this10.getFileSystemEntry(v, path).then(function (results) {\n uploadFiles.push.apply(uploadFiles, _toConsumableArray(results));\n forEach(i + 1);\n });\n };\n\n forEach(0);\n return;\n }\n\n if (entry instanceof Blob) {\n resolve([{\n id: '',\n size: entry.size,\n name: path + entry.name,\n type: entry.type,\n file: entry\n }]);\n return;\n }\n\n if (entry.isFile) {\n entry.file(function (file) {\n resolve([{\n id: '',\n size: file.size,\n name: path + file.name,\n type: file.type,\n file: file\n }]);\n });\n return;\n }\n\n if (entry.isDirectory && _this10.dropDirectory) {\n var _uploadFiles = []; // 目录也要添加到文件列表\n\n if (_this10.createDirectory) {\n _uploadFiles.push({\n id: '',\n name: path + entry.name,\n size: 0,\n type: 'text/directory',\n file: new File([], path + entry.name, {\n type: 'text/directory'\n })\n });\n }\n\n var dirReader = entry.createReader();\n\n var readEntries = function readEntries() {\n dirReader.readEntries(function (entries) {\n var forEach = function forEach(i) {\n if (!entries[i] && i === 0 || maximumValue > 0 && _uploadFiles.length >= maximumValue) {\n return resolve(_uploadFiles);\n }\n\n if (!entries[i]) {\n return readEntries();\n }\n\n _this10.getFileSystemEntry(entries[i], path + entry.name + '/').then(function (results) {\n _uploadFiles.push.apply(_uploadFiles, _toConsumableArray(results));\n\n forEach(i + 1);\n });\n };\n\n forEach(0);\n });\n };\n\n readEntries();\n return;\n }\n\n resolve([]);\n });\n },\n // 替换\n replace: function replace(id1, id2) {\n var file1 = this.get(id1);\n var file2 = this.get(id2);\n\n if (!file1 || !file2 || file1 === file2) {\n return false;\n }\n\n var files = this.files.concat([]);\n var index1 = files.indexOf(file1);\n var index2 = files.indexOf(file2);\n\n if (index1 === -1 || index2 === -1) {\n return false;\n }\n\n files[index1] = file2;\n files[index2] = file1;\n this.files = files;\n this.emitInput();\n return true;\n },\n // 移除\n remove: function remove(id) {\n var file = this.get(id);\n\n if (file) {\n if (this.emitFilter(undefined, file)) {\n return false;\n }\n\n var files = this.files.concat([]);\n var index = files.indexOf(file);\n\n if (index === -1) {\n console.error('remove', file);\n return false;\n }\n\n files.splice(index, 1);\n this.files = files; // 定位\n\n delete this.maps[file.id]; // 事件\n\n this.emitInput();\n this.emitFile(undefined, file);\n }\n\n return file;\n },\n // 更新\n update: function update(id, data) {\n var file = this.get(id);\n\n if (file) {\n var newFile = _objectSpread(_objectSpread({}, file), data); // 停用必须加上错误\n\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\n if (index === -1) {\n console.error('update', file);\n return false;\n }\n\n files.splice(index, 1, newFile);\n this.files = files; // 删除 旧定位 写入 新定位 (已便支持修改id)\n\n delete this.maps[file.id];\n this.maps[newFile.id] = newFile; // 事件\n\n this.emitInput();\n this.emitFile(newFile, file);\n return newFile;\n }\n\n return false;\n },\n // 预处理 事件 过滤器\n emitFilter: function emitFilter(newFile, oldFile) {\n var isPrevent = false;\n this.$emit('input-filter', newFile, oldFile, function () {\n var prevent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n isPrevent = prevent;\n return isPrevent;\n });\n return isPrevent;\n },\n // 处理后 事件 分发\n emitFile: function emitFile(newFile, oldFile) {\n var _newFile,\n _this11 = this;\n\n this.$emit('input-file', newFile, oldFile);\n\n if ((_newFile = newFile) !== null && _newFile !== void 0 && _newFile.fileObject && newFile.active && (!oldFile || !oldFile.active)) {\n this.uploading++; // 激活\n // @ts-ignore\n\n this.$nextTick(function () {\n setTimeout(function () {\n newFile && _this11.upload(newFile).then(function () {\n var _newFile2;\n\n if (newFile) {\n // eslint-disable-next-line\n newFile = _this11.get(newFile) || undefined;\n }\n\n if ((_newFile2 = newFile) !== null && _newFile2 !== void 0 && _newFile2.fileObject) {\n _this11.update(newFile, {\n active: false,\n success: !newFile.error\n });\n }\n }).catch(function (e) {\n newFile && _this11.update(newFile, {\n active: false,\n success: false,\n error: e.code || e.error || e.message || e\n });\n });\n }, Math.ceil(Math.random() * 50 + 50));\n });\n } else if ((!newFile || !newFile.fileObject || !newFile.active) && oldFile && oldFile.fileObject && oldFile.active) {\n // 停止\n this.uploading--;\n } // 自动延续激活\n // @ts-ignore\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('update:modelValue', this.files);\n },\n // 上传\n upload: function upload(id) {\n var file = this.get(id); // 被删除\n\n if (!file) {\n return Promise.reject(new Error('not_exists'));\n } // 不是文件对象\n\n\n if (!file.fileObject) {\n return Promise.reject(new Error('file_object'));\n } // 有错误直接响应\n\n\n if (file.error) {\n if (file.error instanceof Error) {\n return Promise.reject(file.error);\n }\n\n return Promise.reject(new Error(file.error));\n } // 已完成直接响应\n\n\n if (file.success) {\n return Promise.resolve(file);\n } // 后缀\n\n\n if (file.name && this.iExtensions) {\n if (file.name.search(this.iExtensions) === -1) {\n return Promise.reject(new Error('extension'));\n }\n } // 大小\n\n\n if (this.size > 0 && file.size !== undefined && file.size >= 0 && file.size > this.size) {\n return Promise.reject(new Error('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\n if (file.putAction) {\n return this.uploadPut(file);\n }\n\n if (file.postAction) {\n return this.uploadHtml5(file);\n }\n }\n\n if (file.postAction) {\n return this.uploadHtml4(file);\n }\n\n return Promise.reject(new Error('No action configured'));\n },\n\n /**\r\n * Whether this file should be uploaded using chunk upload or not\r\n *\r\n * @param Object file\r\n */\n shouldUseChunkUpload: function shouldUseChunkUpload(file) {\n return this.chunkEnabled && !!this.chunkOptions.handler && file.size && file.size > this.chunkOptions.minSize;\n },\n\n /**\r\n * Upload a file using Chunk method\r\n *\r\n * @param File file\r\n */\n uploadChunk: function uploadChunk(file) {\n var HandlerClass = this.chunkOptions.handler;\n file.chunk = new HandlerClass(file, this.chunkOptions);\n return file.chunk.upload().then(function (res) {\n return file;\n });\n },\n uploadPut: function uploadPut(file) {\n var querys = [];\n var value;\n\n for (var key in file.data) {\n value = file.data[key];\n\n if (value !== null && value !== undefined) {\n querys.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n }\n }\n\n var putAction = file.putAction || '';\n var queryString = querys.length ? (putAction.indexOf('?') === -1 ? '?' : '&') + querys.join('&') : '';\n var xhr = new XMLHttpRequest();\n xhr.open('PUT', 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;\n\n for (var key in file.data) {\n value = file.data[key];\n\n if (value && _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 } // @ts-ignore\n\n\n form.append(this.name, file.file, file.file.name || 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, ufile, body) {\n var _this12 = this;\n\n var file = ufile;\n var speedTime = 0;\n var speedLoaded = 0; // 进度条\n\n xhr.upload.onprogress = function (e) {\n // 还未开始上传 已删除 未激活\n if (!file) {\n return;\n }\n\n file = _this12.get(file);\n\n if (!e.lengthComputable || !file || !file.fileObject || !file.active) {\n return;\n } // 进度 速度 每秒更新一次\n\n\n var speedTime2 = Math.round(Date.now() / 1000);\n\n if (speedTime2 === speedTime) {\n return;\n }\n\n speedTime = speedTime2;\n file = _this12.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 = window.setInterval(function () {\n if (file) {\n if (file = _this12.get(file)) {\n var _file2;\n\n if ((_file2 = file) !== null && _file2 !== void 0 && _file2.fileObject && !file.success && !file.error && file.active) {\n return;\n }\n }\n }\n\n if (interval) {\n clearInterval(interval);\n interval = undefined;\n }\n\n try {\n xhr.abort();\n xhr.timeout = 1;\n } catch (e) {}\n }, 100);\n return new Promise(function (resolve, reject) {\n if (!file) {\n reject(new Error('not_exists'));\n return;\n }\n\n var complete;\n\n var fn = function fn(e) {\n // 已经处理过了\n if (complete) {\n return;\n }\n\n complete = true;\n\n if (interval) {\n clearInterval(interval);\n interval = undefined;\n }\n\n if (!file) {\n return reject(new Error('not_exists'));\n }\n\n file = _this12.get(file); // 不存在直接响应\n\n if (!file) {\n return reject(new Error('not_exists'));\n } // 不是文件对象\n\n\n if (!file.fileObject) {\n return reject(new Error('file_object'));\n } // 有错误自动响应\n\n\n if (file.error) {\n if (file.error instanceof Error) {\n return reject(file.error);\n }\n\n return reject(new Error(file.error));\n } // 未激活\n\n\n if (!file.active) {\n return reject(new Error('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\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\n break;\n\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\n if (xhr.responseText) {\n var contentType = xhr.getResponseHeader('Content-Type');\n\n if (contentType && contentType.indexOf('/json') !== -1) {\n data.response = JSON.parse(xhr.responseText);\n } else {\n data.response = xhr.responseText;\n }\n } // 更新\n // @ts-ignore\n\n\n file = _this12.update(file, data);\n\n if (!file) {\n return reject(new Error('abort'));\n } // 有错误自动响应\n\n\n if (file.error) {\n if (file.error instanceof Error) {\n return reject(file.error);\n }\n\n return reject(new Error(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 if (file.timeout) {\n xhr.timeout = file.timeout;\n } // headers\n\n\n for (var key in file.headers) {\n xhr.setRequestHeader(key, file.headers[key]);\n } // 更新 xhr\n // @ts-ignore\n\n\n file = _this12.update(file, {\n xhr: xhr\n }); // 开始上传\n\n file && xhr.send(body);\n });\n },\n uploadHtml4: function uploadHtml4(ufile) {\n var _this13 = this;\n\n var file = ufile;\n\n if (!file) {\n return Promise.reject(new Error('not_exists'));\n }\n\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 var form = document.createElement('form');\n form.setAttribute('action', file.postAction || '');\n form.name = 'upload-form-' + file.id;\n form.setAttribute('method', 'POST');\n form.setAttribute('target', 'upload-iframe-' + file.id);\n form.setAttribute('enctype', 'multipart/form-data');\n\n for (var key in file.data) {\n var value = file.data[key];\n\n if (value && _typeof(value) === 'object' && typeof value.toString !== 'function') {\n value = JSON.stringify(value);\n }\n\n if (value !== null && value !== undefined) {\n var el = document.createElement('input');\n el.type = 'hidden';\n el.name = key;\n el.value = value;\n form.appendChild(el);\n }\n }\n\n form.appendChild(file.el);\n document.body.appendChild(iframe).appendChild(form);\n\n var getResponseData = function getResponseData() {\n var _doc;\n\n var doc;\n\n try {\n if (iframe.contentWindow) {\n doc = iframe.contentWindow.document;\n }\n } catch (err) {}\n\n if (!doc) {\n try {\n // @ts-ignore\n doc = iframe.contentDocument ? iframe.contentDocument : iframe.document;\n } catch (err) {\n // @ts-ignore\n doc = iframe.document;\n }\n } // @ts-ignore\n\n\n if ((_doc = doc) !== null && _doc !== void 0 && _doc.body) {\n return doc.body.innerHTML;\n }\n\n return null;\n };\n\n return new Promise(function (resolve, reject) {\n setTimeout(function () {\n if (!file) {\n reject(new Error('not_exists'));\n return;\n }\n\n file = _this13.update(file, {\n iframe: iframe\n }); // 不存在\n\n if (!file) {\n return reject(new Error('not_exists'));\n } // 定时检查\n\n\n var interval = window.setInterval(function () {\n if (file) {\n if (file = _this13.get(file)) {\n if (file.fileObject && !file.success && !file.error && file.active) {\n return;\n }\n }\n }\n\n if (interval) {\n clearInterval(interval);\n interval = undefined;\n } // @ts-ignore\n\n\n iframe.onabort({\n type: file ? 'abort' : 'not_exists'\n });\n }, 100);\n var complete;\n\n var fn = function fn(e) {\n var _file3;\n\n // 已经处理过了\n if (complete) {\n return;\n }\n\n complete = true;\n\n if (interval) {\n clearInterval(interval);\n interval = undefined;\n } // 关闭 esc 事件\n\n\n document.body.removeEventListener('keydown', onKeydown);\n\n if (!file) {\n return reject(new Error('not_exists'));\n }\n\n file = _this13.get(file); // 不存在直接响应\n\n if (!file) {\n return reject(new Error('not_exists'));\n } // 不是文件对象\n\n\n if (!file.fileObject) {\n return reject(new Error('file_object'));\n } // 有错误自动响应\n\n\n if (file.error) {\n if (file.error instanceof Error) {\n return reject(file.error);\n }\n\n return reject(new Error(file.error));\n } // 未激活\n\n\n if (!file.active) {\n return reject(new Error('abort'));\n } // 已完成 直接相应\n\n\n if (file.success) {\n return resolve(file);\n }\n\n var response = getResponseData();\n var data = {};\n\n if (typeof e === 'string') {\n return reject(new Error(e));\n }\n\n switch (e.type) {\n case 'abort':\n data.error = 'abort';\n break;\n\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\n break;\n\n default:\n if (file.error) {\n data.error = file.error;\n } else if (response === null) {\n data.error = 'network';\n } else {\n data.progress = '100.00';\n }\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\n data.response = response;\n } // 更新\n\n\n file = _this13.update(file, data);\n\n if (!file) {\n return reject(new Error('not_exists'));\n }\n\n if ((_file3 = file) !== null && _file3 !== void 0 && _file3.error) {\n if (file.error instanceof Error) {\n return reject(file.error);\n }\n\n return reject(new Error(file.error));\n } // 响应\n\n\n return resolve(file);\n }; // 添加事件\n\n\n iframe.onload = fn;\n iframe.onerror = fn;\n iframe.onabort = fn; // 禁止 esc 键\n\n document.body.addEventListener('keydown', onKeydown); // 提交\n\n form.submit();\n }, 50);\n }).then(function (res) {\n var _iframe$parentNode;\n\n iframe === null || iframe === void 0 ? void 0 : (_iframe$parentNode = iframe.parentNode) === null || _iframe$parentNode === void 0 ? void 0 : _iframe$parentNode.removeChild(iframe);\n return res;\n }).catch(function (res) {\n var _iframe$parentNode2;\n\n iframe === null || iframe === void 0 ? void 0 : (_iframe$parentNode2 = iframe.parentNode) === null || _iframe$parentNode2 === void 0 ? void 0 : _iframe$parentNode2.removeChild(iframe);\n return res;\n });\n },\n watchActive: function watchActive(active) {\n var file;\n var index = 0;\n\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\n if (!file.active && !file.error && !file.success) {\n this.update(file, {\n active: true\n });\n }\n } else {\n if (file.active) {\n this.update(file, {\n active: false\n });\n }\n }\n }\n\n if (this.uploading === 0) {\n this.active = false;\n }\n },\n watchDrop: function watchDrop(newDrop) {\n var oldDrop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n if (!this.features.drop) {\n return;\n }\n\n if (newDrop === oldDrop) {\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 var el = null;\n if (!newDrop) ;else if (typeof newDrop === 'string') {\n // @ts-ignore\n el = document.querySelector(newDrop) || this.$root.$el.querySelector(newDrop);\n } else if (newDrop === true) {\n // @ts-ignore\n el = this.$parent.$el;\n } else {\n el = newDrop;\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 var _dt$files, _dt$types;\n\n e.preventDefault();\n\n if (this.dropActive) {\n return;\n }\n\n if (!e.dataTransfer) {\n return;\n }\n\n var dt = e.dataTransfer;\n\n if (dt !== null && dt !== void 0 && (_dt$files = dt.files) !== null && _dt$files !== void 0 && _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; // @ts-ignore\n } else if ((_dt$types = dt.types) !== null && _dt$types !== void 0 && _dt$types.contains && dt.types.contains('Files')) {\n this.dropActive = true;\n }\n },\n onDragleave: function onDragleave(e) {\n e.preventDefault();\n\n if (!this.dropActive) {\n return;\n } // @ts-ignore\n\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 e.dataTransfer && this.addDataTransfer(e.dataTransfer);\n },\n inputOnChange: async function inputOnChange(e) {\n var _this14 = this;\n\n if (!(e.target instanceof HTMLInputElement)) {\n return Promise.reject(new Error(\"not HTMLInputElement\"));\n }\n\n var target = e.target;\n\n var reinput = function reinput(res) {\n _this14.reload = true; // @ts-ignore\n\n _this14.$nextTick(function () {\n _this14.reload = false;\n });\n\n return res;\n };\n\n return this.addInputFile(e.target).then(reinput).catch(reinput);\n }\n }\n });\n\n function render(_ctx, _cache, $props, $setup, $data, $options) {\n return vue.openBlock(), vue.createBlock(\"span\", {\n class: _ctx.className\n }, [vue.renderSlot(_ctx.$slots, \"default\"), vue.createVNode(\"label\", {\n for: _ctx.forId\n }, null, 8, [\"for\"]), !_ctx.reload ? (vue.openBlock(), vue.createBlock(\"input\", {\n key: 0,\n ref: \"input\",\n type: \"file\",\n name: _ctx.name,\n id: _ctx.forId,\n accept: _ctx.accept,\n capture: _ctx.capture,\n disabled: _ctx.disabled,\n webkitdirectory: _ctx.directory && _ctx.features.directory,\n allowdirs: _ctx.directory && _ctx.features.directory,\n directory: _ctx.directory && _ctx.features.directory,\n multiple: _ctx.multiple && _ctx.features.html5,\n onChange: _cache[1] || (_cache[1] = function () {\n return _ctx.inputOnChange && _ctx.inputOnChange.apply(_ctx, arguments);\n })\n }, null, 40, [\"name\", \"id\", \"accept\", \"capture\", \"disabled\", \"webkitdirectory\", \"allowdirs\", \"directory\", \"multiple\"])) : vue.createCommentVNode(\"\", true)], 2);\n }\n\n function styleInject(css, ref) {\n if (ref === void 0) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') {\n return;\n }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n }\n\n var css_248z = \"\\n.file-uploads {\\n overflow: hidden;\\n position: relative;\\n text-align: center;\\n display: inline-block;\\n}\\n.file-uploads.file-uploads-html4 input, .file-uploads.file-uploads-html5 label {\\n /* background fix ie click */\\n background: #fff;\\n opacity: 0;\\n font-size: 20em;\\n z-index: 1;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n}\\n.file-uploads.file-uploads-html5 input, .file-uploads.file-uploads-html4 label {\\n /* background fix ie click */\\n background: rgba(255, 255, 255, 0);\\n overflow: hidden;\\n position: fixed;\\n width: 1px;\\n height: 1px;\\n z-index: -1;\\n opacity: 0;\\n}\\n\";\n styleInject(css_248z);\n script.render = render;\n\n return script;\n\n})));\n//# sourceMappingURL=vue-upload-component.js.map\n"],"sourceRoot":""}