From 644872010b6a631382479100bf2334efb63dbdda Mon Sep 17 00:00:00 2001 From: lianyue Date: Wed, 18 Jul 2018 11:55:29 +0800 Subject: [PATCH] fix #213 --- dist/vue-upload-component.js | 15 +- dist/vue-upload-component.js.map | 2 +- dist/vue-upload-component.min.js | 5 +- dist/vue-upload-component.min.js.map | 2 +- dist/vue-upload-component.part.js | 223 +- dist/vue-upload-component.part.js.map | 2 +- docs/dist/index.js | 4 +- docs/dist/index.js.map | 2 +- docs/docs/en.md | 1 + docs/docs/zh-cn.md | 2 +- package-lock.json | 6272 +++++++------------------ package.json | 42 +- rollup.config.js | 14 +- 13 files changed, 1928 insertions(+), 4658 deletions(-) diff --git a/dist/vue-upload-component.js b/dist/vue-upload-component.js index 5db5a9c..1c0b1a8 100644 --- a/dist/vue-upload-component.js +++ b/dist/vue-upload-component.js @@ -1,6 +1,6 @@ /*! * Name: vue-upload-component - * Version: 2.8.9 + * Version: 2.8.10 * Author: LianYue */ (function (global, factory) { @@ -585,6 +585,7 @@ } }; + /* script */ var __vue_script__ = script; /* template */ @@ -593,7 +594,6 @@ }; var __vue_staticRenderFns__ = []; - var __vue_template__ = typeof __vue_render__ !== 'undefined' ? { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ } : {}; /* style */ var __vue_inject_styles__ = undefined; /* scoped */ @@ -604,7 +604,7 @@ var __vue_is_functional_template__ = false; /* component normalizer */ function __vue_normalize__(template, style, script$$1, scope, functional, moduleIdentifier, createInjector, createInjectorSSR) { - var component = script$$1 || {}; + var component = (typeof script$$1 === 'function' ? script$$1.options : script$$1) || {}; if (!component.render) { component.render = template.render; @@ -680,7 +680,7 @@ } /* style inject SSR */ - var InputFile = __vue_normalize__(__vue_template__, __vue_inject_styles__, typeof __vue_script__ === 'undefined' ? {} : __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, typeof __vue_create_injector__ !== 'undefined' ? __vue_create_injector__ : function () {}, typeof __vue_create_injector_ssr__ !== 'undefined' ? __vue_create_injector_ssr__ : function () {}); + var InputFile = __vue_normalize__({ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ }, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, __vue_create_injector__, undefined); 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; }; @@ -1920,6 +1920,7 @@ } }; + /* script */ var __vue_script__$1 = script$1; /* template */ @@ -1928,7 +1929,6 @@ }; var __vue_staticRenderFns__$1 = []; - var __vue_template__$1 = typeof __vue_render__$1 !== 'undefined' ? { render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 } : {}; /* style */ var __vue_inject_styles__$1 = function (inject) { if (!inject) return; @@ -1942,7 +1942,7 @@ var __vue_is_functional_template__$1 = false; /* component normalizer */ function __vue_normalize__$1(template, style, script, scope, functional, moduleIdentifier, createInjector, createInjectorSSR) { - var component = script || {}; + var component = (typeof script === 'function' ? script.options : script) || {}; if (!component.render) { component.render = template.render; @@ -2042,7 +2042,7 @@ } /* style inject SSR */ - var FileUpload = __vue_normalize__$1(__vue_template__$1, __vue_inject_styles__$1, typeof __vue_script__$1 === 'undefined' ? {} : __vue_script__$1, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, typeof __vue_create_injector__$1 !== 'undefined' ? __vue_create_injector__$1 : function () {}, typeof __vue_create_injector_ssr__ !== 'undefined' ? __vue_create_injector_ssr__ : function () {}); + var FileUpload = __vue_normalize__$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, __vue_create_injector__$1, undefined); var FileUpload$1 = /*#__PURE__*/Object.freeze({ default: FileUpload @@ -2055,3 +2055,4 @@ return src; }))); +//# sourceMappingURL=vue-upload-component.js.map diff --git a/dist/vue-upload-component.js.map b/dist/vue-upload-component.js.map index 2d4f7fa..e5f3a55 100644 --- a/dist/vue-upload-component.js.map +++ b/dist/vue-upload-component.js.map @@ -1 +1 @@ -{"version":3,"file":"vue-upload-component.js","sources":["../src/utils/request.js","../src/chunk/ChunkUploadHandler.js","../src/InputFile.vue.js?rollup-plugin-vue=script.js","../src/FileUpload.vue.js?rollup-plugin-vue=script.js","../src/index.js"],"sourcesContent":["/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const 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(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 */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\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 = () => reject(xhr.response)\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 */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\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 = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets the file size\n */\n get fileName () {\n return this.file.name\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\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 get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\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 get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.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 get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let 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 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 pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n 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 upload () {\n this.promise = new Promise((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 start () {\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(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\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 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 uploadChunk (chunk) {\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(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\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(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nexport default {\n methods: {\n change(e) {\n this.$destroy()\n this.$parent.addInputFile(e.target)\n // eslint-disable-next-line\n new this.constructor({\n parent: this.$parent,\n el: this.$el,\n })\n }\n }\n}\n","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport ChunkUploadDefaultHandler from './chunk/ChunkUploadHandler'\nimport InputFile from './InputFile.vue'\n\nconst CHUNK_DEFAULT_OPTIONS = {\n headers: {},\n action: '',\n minSize: 1048576,\n maxActive: 3,\n maxRetries: 5,\n\n handler: ChunkUploadDefaultHandler\n}\n\nexport default {\n components: {\n 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\n multiple: {\n type: Boolean,\n },\n\n maximum: {\n type: Number,\n 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\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\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: () => {\n return CHUNK_DEFAULT_OPTIONS\n }\n }\n },\n\n data() {\n return {\n files: this.value,\n features: {\n html5: true,\n directory: false,\n drag: 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() {\n let 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\n this.$nextTick(function () {\n\n // 更新下父级\n if (this.$parent) {\n this.$parent.$forceUpdate()\n }\n\n // 拖拽渲染\n this.watchDrop(this.drop)\n })\n },\n\n /**\n * beforeDestroy\n * @return {[type]} [description]\n */\n beforeDestroy() {\n // 已销毁\n this.destroy = true\n\n // 设置成不激活\n this.active = false\n },\n\n computed: {\n /**\n * uploading 正在上传的线程\n * @return {[type]} [description]\n */\n\n /**\n * uploaded 文件列表是否全部已上传\n * @return {[type]} [description]\n */\n uploaded() {\n let file\n for (let 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\n chunkOptions () {\n return Object.assign(CHUNK_DEFAULT_OPTIONS, this.chunk)\n },\n\n className() {\n return [\n 'file-uploads',\n this.features.html5 ? 'file-uploads-html5' : 'file-uploads-html4',\n this.features.directory && this.directory ? 'file-uploads-directory' : undefined,\n this.features.drop && this.drop ? 'file-uploads-drop' : undefined,\n ]\n }\n },\n\n\n watch: {\n active(active) {\n this.watchActive(active)\n },\n\n dropActive() {\n if (this.$parent) {\n this.$parent.$forceUpdate()\n }\n },\n\n drop(value) {\n this.watchDrop(value)\n },\n\n value(files) {\n if (this.files === files) {\n return\n }\n this.files = files\n\n let oldMaps = this.maps\n\n // 重写 maps 缓存\n this.maps = {}\n for (let i = 0; i < this.files.length; i++) {\n let file = this.files[i]\n this.maps[file.id] = file\n }\n\n // add, update\n for (let key in this.maps) {\n let newFile = this.maps[key]\n let oldFile = oldMaps[key]\n if (newFile !== oldFile) {\n this.emitFile(newFile, oldFile)\n }\n }\n\n // delete\n for (let 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() {\n if (this.files.length) {\n let files = this.files\n this.files = []\n\n // 定位\n this.maps = {}\n\n // 事件\n this.emitInput()\n for (let i = 0; i < files.length; i++) {\n this.emitFile(undefined, files[i])\n }\n }\n return true\n },\n\n // 选择\n 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 // 添加\n add(_files, index = this.addIndex) {\n let files = _files\n let isArray = files instanceof Array\n\n // 不是数组整理成数组\n if (!isArray) {\n files = [files]\n }\n\n // 遍历规范对象\n let addFiles = []\n for (let i = 0; i < files.length; i++) {\n let file = files[i]\n if (this.features.html5 && file instanceof Blob) {\n file = {\n file,\n size: file.size,\n name: file.webkitRelativePath || file.relativePath || file.name || 'unknown',\n type: file.type,\n }\n }\n let fileObject = false\n if (file.fileObject === false) {\n // false\n } 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 = {\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 = {\n ...this.data,\n ...file.data ? file.data : {},\n }\n\n file.headers = {\n ...this.headers,\n ...file.headers ? file.headers : {},\n }\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\n // 添加进去 files\n let newFiles\n if (index === true || index === 0) {\n newFiles = addFiles.concat(this.files)\n } else if (index) {\n newFiles = addFiles.concat([])\n newFiles.splice(index, 0, addFiles)\n } else {\n newFiles = this.files.concat(addFiles)\n }\n\n this.files = newFiles\n\n // 定位\n for (let i = 0; i < addFiles.length; i++) {\n let file = addFiles[i]\n this.maps[file.id] = file\n }\n\n // 事件\n this.emitInput()\n for (let i = 0; i < addFiles.length; i++) {\n this.emitFile(addFiles[i], undefined)\n }\n\n return isArray ? addFiles : addFiles[0]\n },\n\n\n\n // 添加表单文件\n addInputFile(el) {\n let files = []\n if (el.files) {\n for (let i = 0; i < el.files.length; i++) {\n let 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,\n el\n })\n }\n } else {\n var names = el.value.replace(/\\\\/g, '/').split('/')\n files.push({\n name: names[names.length - 1],\n el,\n })\n }\n return this.add(files)\n },\n\n\n // 添加 DataTransfer\n addDataTransfer(dataTransfer) {\n let files = []\n if (dataTransfer.items && dataTransfer.items.length) {\n let items = []\n for (let i = 0; i < dataTransfer.items.length; i++) {\n let 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((resolve, reject) => {\n let forEach = (i) => {\n let item = items[i]\n // 结束 文件数量大于 最大数量\n if (!item || (this.maximum > 0 && files.length >= this.maximum)) {\n return resolve(this.add(files))\n }\n this.getEntry(item).then(function (results) {\n files.push(...results)\n forEach(i + 1)\n })\n }\n forEach(0)\n })\n }\n\n if (dataTransfer.files.length) {\n for (let i = 0; i < dataTransfer.files.length; i++) {\n files.push(dataTransfer.files[i])\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(entry, path = '') {\n return new Promise((resolve, reject) => {\n if (entry.isFile) {\n entry.file(function (file) {\n resolve([\n {\n size: file.size,\n name: path + file.name,\n type: file.type,\n file,\n }\n ])\n })\n } else if (entry.isDirectory && this.dropDirectory) {\n let files = []\n let dirReader = entry.createReader()\n let readEntries = () => {\n dirReader.readEntries((entries) => {\n let forEach = (i) => {\n if ((!entries[i] && i === 0) || (this.maximum > 0 && files.length >= this.maximum)) {\n return resolve(files)\n }\n if (!entries[i]) {\n return readEntries()\n }\n this.getEntry(entries[i], path + entry.name + '/').then((results) => {\n files.push(...results)\n forEach(i + 1)\n })\n }\n forEach(0)\n })\n }\n readEntries()\n } else {\n resolve([])\n }\n })\n },\n\n\n replace(id1, id2) {\n let file1 = this.get(id1)\n let file2 = this.get(id2)\n if (!file1 || !file2 || file1 === file2) {\n return false\n }\n let files = this.files.concat([])\n let index1 = files.indexOf(file1)\n let 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 remove(id) {\n let file = this.get(id)\n if (file) {\n if (this.emitFilter(undefined, file)) {\n return false\n }\n let files = this.files.concat([])\n let 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 update(id, data) {\n let file = this.get(id)\n if (file) {\n let newFile = {\n ...file,\n ...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 let files = this.files.concat([])\n let 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 // 预处理 事件 过滤器\n emitFilter(newFile, oldFile) {\n let isPrevent = false\n this.$emit('input-filter', newFile, oldFile, function () {\n isPrevent = true\n return isPrevent\n })\n return isPrevent\n },\n\n // 处理后 事件 分发\n 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 setTimeout(() => {\n this.upload(newFile).then(() => {\n // eslint-disable-next-line\n newFile = this.get(newFile)\n if (newFile && newFile.fileObject) {\n this.update(newFile, {\n active: false,\n success: !newFile.error\n })\n }\n }).catch((e) => {\n this.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\n emitInput() {\n this.$emit('input', this.files)\n },\n\n\n // 上传\n upload(id) {\n let 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 let extensions = this.extensions\n if (extensions && (extensions.length || typeof extensions.length === 'undefined')) {\n if (typeof extensions !== 'object' || !(extensions instanceof RegExp)) {\n if (typeof extensions === 'string') {\n extensions = extensions.split(',').map(value => value.trim()).filter(value => value)\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 * Whether this file should be uploaded using chunk upload or not\n *\n * @param Object file\n */\n shouldUseChunkUpload (file) {\n return this.chunkEnabled &&\n !!this.chunkOptions.handler &&\n file.size > this.chunkOptions.minSize\n },\n\n /**\n * Upload a file using Chunk method\n *\n * @param File file\n */\n uploadChunk (file) {\n const HandlerClass = this.chunkOptions.handler\n file.chunk = new HandlerClass(file, this.chunkOptions)\n\n return file.chunk.upload()\n },\n\n uploadPut(file) {\n let querys = []\n let value\n for (let 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 let queryString = querys.length ? (file.putAction.indexOf('?') === -1 ? '?' : '&') + querys.join('&') : ''\n let xhr = new XMLHttpRequest()\n xhr.open('PUT', file.putAction + queryString)\n return this.uploadXhr(xhr, file, file.file)\n },\n\n uploadHtml5(file) {\n let form = new window.FormData()\n let value\n for (let key in file.data) {\n value = file.data[key]\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 }\n form.append(this.name, file.file, file.file.filename || file.name)\n let xhr = new XMLHttpRequest()\n xhr.open('POST', file.postAction)\n return this.uploadXhr(xhr, file, form)\n },\n\n uploadXhr(xhr, _file, body) {\n let file = _file\n let speedTime = 0\n let speedLoaded = 0\n\n // 进度条\n xhr.upload.onprogress = (e) => {\n // 还未开始上传 已删除 未激活\n file = this.get(file)\n if (!e.lengthComputable || !file || !file.fileObject || !file.active) {\n return\n }\n\n // 进度 速度 每秒更新一次\n let speedTime2 = Math.round(Date.now() / 1000)\n if (speedTime2 === speedTime) {\n return\n }\n speedTime = speedTime2\n\n file = this.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 let interval = setInterval(() => {\n file = this.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 }\n }, 100)\n\n return new Promise((resolve, reject) => {\n let complete\n let 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 = this.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 // 已完成 直接相应\n if (file.success) {\n return resolve(file)\n }\n\n let 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 let 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 = this.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 (let key in file.headers) {\n xhr.setRequestHeader(key, file.headers[key])\n }\n\n // 更新 xhr\n file = this.update(file, { xhr })\n\n // 开始上传\n xhr.send(body)\n })\n },\n\n\n\n\n uploadHtml4(_file) {\n let file = _file\n let onKeydown = function (e) {\n if (e.keyCode === 27) {\n e.preventDefault()\n }\n }\n\n let 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\n let form = document.createElement('form')\n\n form.action = file.postAction\n\n form.name = 'upload-form-' + file.id\n\n\n form.setAttribute('method', 'POST')\n form.setAttribute('target', 'upload-iframe-' + file.id)\n form.setAttribute('enctype', 'multipart/form-data')\n\n let value\n let input\n for (let key in file.data) {\n value = file.data[key]\n if (value && 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\n\n\n let getResponseData = function () {\n let doc\n try {\n if (iframe.contentWindow) {\n doc = iframe.contentWindow.document\n }\n } catch (err) {\n }\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\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n file = this.update(file, { iframe })\n\n // 不存在\n if (!file) {\n return reject('not_exists')\n }\n\n // 定时检查\n let interval = setInterval(() => {\n file = this.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\n let complete\n let fn = (e) => {\n // 已经处理过了\n if (complete) {\n return\n }\n complete = true\n\n\n if (interval) {\n clearInterval(interval)\n interval = false\n }\n\n // 关闭 esc 事件\n document.body.removeEventListener('keydown', onKeydown)\n\n file = this.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 let response = getResponseData()\n let 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 }\n data.response = response\n }\n\n // 更新\n file = this.update(file, data)\n\n if (file.error) {\n return reject(file.error)\n }\n\n // 响应\n return resolve(file)\n }\n\n\n // 添加事件\n iframe.onload = fn\n iframe.onerror = fn\n iframe.onabort = fn\n\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\n\n\n watchActive(active) {\n let file\n let index = 0\n while ((file = this.files[index])) {\n index++\n if (!file.fileObject) {\n // 不是文件对象\n } 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\n\n watchDrop(_el) {\n let 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\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\n\n onDragenter(e) {\n e.preventDefault()\n if (!this.dropActive) {\n this.dropActive = true\n }\n },\n\n onDragleave(e) {\n e.preventDefault()\n if (e.target.nodeName === 'HTML' || e.target === e.explicitOriginalTarget || (e.screenX === 0 && e.screenY === 0 && !e.fromElement && e.offsetX <= 0)) {\n this.dropActive = false\n }\n },\n\n onDragover(e) {\n e.preventDefault()\n },\n\n onDocumentDrop() {\n this.dropActive = false\n },\n\n onDrop(e) {\n e.preventDefault()\n this.addDataTransfer(e.dataTransfer)\n },\n }\n}\n","module.exports = require('./FileUpload.vue')\n"],"names":["createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","Object","keys","forEach","setRequestHeader","key","sendRequest","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","sendFormRequest","data","FormData","name","append","ChunkUploadHandler","file","chunks","start","end","chunkSize","fileSize","push","blob","slice","startOffset","active","retries","maxRetries","progress","stopChunks","chunksUploading","chunk","abort","startChunking","promise","request","assign","action","startBody","phase","mime_type","fileType","size","fileName","then","res","sessionId","session_id","end_offset","createChunks","catch","i","maxActiveChunks","uploadNextChunk","hasChunksToUpload","uploadChunk","chunksToUpload","length","finish","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","uploadBody","start_offset","uploaded","finishBody","parseInt","maxActive","type","completedProgress","chunksUploaded","uploadingProgress","reduce","min","filter","methods","change","e","$destroy","$parent","addInputFile","target","constructor","parent","el","$el","CHUNK_DEFAULT_OPTIONS","minSize","handler","ChunkUploadDefaultHandler","components","InputFile","props","inputId","String","default","accept","capture","multiple","Boolean","maximum","Number","addIndex","directory","postAction","putAction","customAction","Function","timeout","drop","dropDirectory","extensions","Array","value","thread","chunkEnabled","files","features","html5","drag","dropActive","uploading","destroy","mounted","input","document","createElement","window","webkitdirectory","ondrop","maps","$nextTick","$forceUpdate","watchDrop","beforeDestroy","computed","fileObject","error","success","chunkOptions","className","undefined","watch","watchActive","oldMaps","id","newFile","oldFile","emitFile","clear","emitInput","get","add","_files","index","isArray","addFiles","Blob","webkitRelativePath","relativePath","Element","speed","random","toString","substr","emitFilter","newFiles","concat","splice","names","replace","split","addDataTransfer","dataTransfer","items","item","getAsEntry","getAsFile","webkitGetAsEntry","getEntry","results","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","setInterval","clearInterval","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","$root","nodeName","explicitOriginalTarget","screenX","screenY","fromElement","offsetX","require$$0"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vue-upload-component.js","sources":["../src/utils/request.js","../src/chunk/ChunkUploadHandler.js","../src/InputFile.vue","../src/FileUpload.vue","../src/index.js"],"sourcesContent":["/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const 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(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 */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\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 = () => reject(xhr.response)\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 */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\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 = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets the file size\n */\n get fileName () {\n return this.file.name\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\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 get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\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 get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.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 get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let 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 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 pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n 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 upload () {\n this.promise = new Promise((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 start () {\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(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\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 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 uploadChunk (chunk) {\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(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\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(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","\n\n","\n\n\n","module.exports = require('./FileUpload.vue')\n"],"names":["createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","Object","keys","forEach","setRequestHeader","key","sendRequest","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","sendFormRequest","data","FormData","name","append","ChunkUploadHandler","file","chunks","start","end","chunkSize","fileSize","push","blob","slice","startOffset","active","retries","maxRetries","progress","stopChunks","chunksUploading","chunk","abort","startChunking","promise","request","assign","action","startBody","phase","mime_type","fileType","size","fileName","then","res","sessionId","session_id","end_offset","createChunks","catch","i","maxActiveChunks","uploadNextChunk","hasChunksToUpload","uploadChunk","chunksToUpload","length","finish","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","uploadBody","start_offset","uploaded","finishBody","parseInt","maxActive","type","completedProgress","chunksUploaded","uploadingProgress","reduce","min","filter","require$$0"],"mappings":"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AAP;EAGD;;;;;;;;;;;;;;;;;;;;AC/HH;;;;;;;;;;;;GAAA;;;EAXY,2BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECmCZ;;;;;;;;GAAA;;AAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAA;;;EA7CY,+BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECHZ,UAAiBW,UAAjB;;;;;;;;"} \ No newline at end of file diff --git a/dist/vue-upload-component.min.js b/dist/vue-upload-component.min.js index 2164de8..42a0edf 100644 --- a/dist/vue-upload-component.min.js +++ b/dist/vue-upload-component.min.js @@ -1,6 +1,7 @@ /*! * Name: vue-upload-component - * Version: 2.8.9 + * Version: 2.8.10 * Author: LianYue */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.VueUploadComponent=t()}(this,function(){"use strict";var r=function(t){var i=new XMLHttpRequest;return i.open(t.method||"GET",t.url),i.responseType="json",t.headers&&Object.keys(t.headers).forEach(function(e){i.setRequestHeader(e,t.headers[e])}),i};function e(e){var n,t,i=r(e);return n=i,t=e.body,new Promise(function(e,i){n.onload=function(){if(200<=n.status&&n.status<300){var t;try{t=JSON.parse(n.response)}catch(e){t=n.response}e(t)}else i(n.response)},n.onerror=function(){return i(n.response)},n.send(JSON.stringify(t))})}var t=function(){function n(e,t){for(var i=0;i=this.maximum)break;if(r.push(s),1===this.maximum)break}}if(!r.length)return!1;1===this.maximum&&this.clear();var u=void 0;!0===t||0===t?u=r.concat(this.files):t?(u=r.concat([])).splice(t,0,r):u=this.files.concat(r),this.files=u;for(var c=0;c=r.maximum)return n(r.add(o));r.getEntry(e).then(function(e){o.push.apply(o,h(e)),t(i+1)})}(0)})}if(e.files.length){for(var n=0;n=this.maximum));n++);return Promise.resolve(this.add(o))}return Promise.resolve([])},getEntry:function(s){var a=this,u=1=a.maximum?r(o):e[i]?void a.getEntry(e[i],u+s.name+"/").then(function(e){o.push.apply(o,h(e)),t(i+1)}):n()}(0)})}()}else r([])})},replace:function(e,t){var i=this.get(e),n=this.get(t);if(!i||!n||i===n)return!1;var r=this.files.concat([]),o=r.indexOf(i),s=r.indexOf(n);return-1!==o&&-1!==s&&(r[o]=n,r[s]=i,this.files=r,this.emitInput(),!0)},remove:function(e){var t=this.get(e);if(t){if(this.emitFilter(void 0,t))return!1;var i=this.files.concat([]),n=i.indexOf(t);if(-1===n)return console.error("remove",t),!1;i.splice(n,1),this.files=i,delete this.maps[t.id],this.emitInput(),this.emitFile(void 0,t)}return t},update:function(e,t){var i=this.get(e);if(i){var n=f({},i,t);if(!i.fileObject||!i.active||n.active||n.error||n.success||(n.error="abort"),this.emitFilter(n,i))return!1;var r=this.files.concat([]),o=r.indexOf(i);return-1===o?(console.error("update",i),!1):(r.splice(o,1,n),this.files=r,delete this.maps[i.id],this.maps[n.id]=n,this.emitInput(),this.emitFile(n,i),n)}return!1},emitFilter:function(e,t){var i=!1;return this.$emit("input-filter",e,t,function(){return i=!0}),i},emitFile:function(i,e){this.$emit("input-file",i,e),!(i&&i.fileObject&&i.active)||e&&e.active?i&&i.fileObject&&i.active||!e||!e.fileObject||!e.active||this.uploading--:(this.uploading++,this.$nextTick(function(){var t=this;setTimeout(function(){t.upload(i).then(function(){(i=t.get(i))&&i.fileObject&&t.update(i,{active:!1,success:!i.error})}).catch(function(e){t.update(i,{active:!1,success:!1,error:e.code||e.error||e.message||e})})},parseInt(50*Math.random()+50,10))})),!this.active||Boolean(i)===Boolean(e)&&i.active===e.active||this.watchActive(!0)},emitInput:function(){this.$emit("input",this.files)},upload:function(e){var t=this.get(e);if(!t)return Promise.reject("not_exists");if(!t.fileObject)return Promise.reject("file_object");if(t.error)return Promise.reject(t.error);if(t.success)return Promise.resolve(t);var i=this.extensions;if(i&&(i.length||void 0===i.length)&&("object"===(void 0===i?"undefined":l(i))&&i instanceof RegExp||("string"==typeof i&&(i=i.split(",").map(function(e){return e.trim()}).filter(function(e){return e})),i=new RegExp("\\.("+i.join("|").replace(/\./g,"\\.")+")$","i")),-1===t.name.search(i)))return Promise.reject("extension");if(0this.size)return Promise.reject("size");if(this.customAction)return this.customAction(t,this);if(this.features.html5){if(this.shouldUseChunkUpload(t))return this.uploadChunk(t);if(t.putAction)return this.uploadPut(t);if(t.postAction)return this.uploadHtml5(t)}return t.postAction?this.uploadHtml4(t):Promise.reject("No action configured")},shouldUseChunkUpload:function(e){return this.chunkEnabled&&!!this.chunkOptions.handler&&e.size>this.chunkOptions.minSize},uploadChunk:function(e){var t=this.chunkOptions.handler;return e.chunk=new t(e,this.chunkOptions),e.chunk.upload()},uploadPut:function(e){var t=[],i=void 0;for(var n in e.data)null!=(i=e.data[n])&&t.push(encodeURIComponent(n)+"="+encodeURIComponent(i));var r=t.length?(-1===e.putAction.indexOf("?")?"?":"&")+t.join("&"):"",o=new XMLHttpRequest;return o.open("PUT",e.putAction+r),this.uploadXhr(o,e,e.file)},uploadHtml5:function(e){var t=new window.FormData,i=void 0;for(var n in e.data)(i=e.data[n])&&"object"===(void 0===i?"undefined":l(i))&&"function"!=typeof i.toString?i instanceof File?t.append(n,i,i.name):t.append(n,JSON.stringify(i)):null!=i&&t.append(n,i);t.append(this.name,e.file,e.file.filename||e.name);var r=new XMLHttpRequest;return r.open("POST",e.postAction),this.uploadXhr(r,e,t)},uploadXhr:function(s,e,i){var a=this,u=e,n=0,r=0;s.upload.onprogress=function(e){if(u=a.get(u),e.lengthComputable&&u&&u.fileObject&&u.active){var t=Math.round(Date.now()/1e3);t!==n&&(n=t,u=a.update(u,{progress:(e.loaded/e.total*100).toFixed(2),speed:e.loaded-r}),r=e.loaded)}};var c=setInterval(function(){if(!(u=a.get(u))||!u.fileObject||u.success||u.error||!u.active){c&&(clearInterval(c),c=!1);try{s.abort(),s.timeout=1}catch(e){}}},100);return new Promise(function(n,r){var o=void 0,e=function(e){if(!o){if(o=!0,c&&(clearInterval(c),c=!1),!(u=a.get(u)))return r("not_exists");if(!u.fileObject)return r("file_object");if(u.error)return r(u.error);if(!u.active)return r("abort");if(u.success)return n(u);var t={};switch(e.type){case"timeout":case"abort":t.error=e.type;break;case"error":s.status?500<=s.status?t.error="server":400<=s.status&&(t.error="denied"):t.error="network";break;default:500<=s.status?t.error="server":400<=s.status?t.error="denied":t.progress="100.00"}if(s.responseText){var i=s.getResponseHeader("Content-Type");i&&-1!==i.indexOf("/json")?t.response=JSON.parse(s.responseText):t.response=s.responseText}return(u=a.update(u,t)).error?r(u.error):n(u)}};for(var t in s.onload=e,s.onerror=e,s.onabort=e,s.ontimeout=e,u.timeout&&(s.timeout=u.timeout),u.headers)s.setRequestHeader(t,u.headers[t]);u=a.update(u,{xhr:s}),s.send(i)})},uploadHtml4:function(e){var a=this,u=e,c=function(e){27===e.keyCode&&e.preventDefault()},d=document.createElement("iframe");d.id="upload-iframe-"+u.id,d.name="upload-iframe-"+u.id,d.src="about:blank",d.setAttribute("style","width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;");var t=document.createElement("form");t.action=u.postAction,t.name="upload-form-"+u.id,t.setAttribute("method","POST"),t.setAttribute("target","upload-iframe-"+u.id),t.setAttribute("enctype","multipart/form-data");var i=void 0,n=void 0;for(var r in u.data)(i=u.data[r])&&"object"===(void 0===i?"undefined":l(i))&&"function"!=typeof i.toString&&(i=JSON.stringify(i)),null!=i&&((n=document.createElement("input")).type="hidden",n.name=r,n.value=i,t.appendChild(n));t.appendChild(u.el),document.body.appendChild(d).appendChild(t);return new Promise(function(o,s){setTimeout(function(){if(!(u=a.update(u,{iframe:d})))return s("not_exists");var n=setInterval(function(){(u=a.get(u))&&u.fileObject&&!u.success&&!u.error&&u.active||(n&&(clearInterval(n),n=!1),d.onabort({type:u?"abort":"not_exists"}))},100),r=void 0,e=function(e){if(!r){if(r=!0,n&&(clearInterval(n),n=!1),document.body.removeEventListener("keydown",c),!(u=a.get(u)))return s("not_exists");if(!u.fileObject)return s("file_object");if(u.error)return s(u.error);if(!u.active)return s("abort");if(u.success)return o(u);var t=function(){var t=void 0;try{d.contentWindow&&(t=d.contentWindow.document)}catch(e){}if(!t)try{t=d.contentDocument?d.contentDocument:d.document}catch(e){t=d.document}return t&&t.body?t.body.innerHTML:null}(),i={};switch(e.type){case"abort":i.error="abort";break;case"error":u.error?i.error=u.error:i.error=null===t?"network":"denied";break;default:u.error?i.error=u.error:null===i?i.error="network":i.progress="100.00"}if(null!==t){if(t&&"{"===t.substr(0,1)&&"}"===t.substr(t.length-1,1))try{t=JSON.parse(t)}catch(e){}i.response=t}return(u=a.update(u,i)).error?s(u.error):o(u)}};d.onload=e,d.onerror=e,d.onabort=e,document.body.addEventListener("keydown",c),t.submit()},50)}).then(function(e){return d.parentNode&&d.parentNode.removeChild(d),e}).catch(function(e){return d.parentNode&&d.parentNode.removeChild(d),e})},watchActive:function(e){for(var t=void 0,i=0;t=this.files[i];)if(i++,t.fileObject)if(e&&!this.destroy){if(this.uploading>=this.thread||this.uploading&&!this.features.html5)break;t.active||t.error||t.success||this.update(t,{active:!0})}else t.active&&this.update(t,{active:!1});else;0===this.uploading&&(this.active=!1)},watchDrop:function(e){var t=e;if(this.features.drop){if(this.dropElement)try{document.removeEventListener("dragenter",this.onDragenter,!1),document.removeEventListener("dragleave",this.onDragleave,!1),document.removeEventListener("drop",this.onDocumentDrop,!1),this.dropElement.removeEventListener("dragover",this.onDragover,!1),this.dropElement.removeEventListener("drop",this.onDrop,!1)}catch(e){}t?"string"==typeof t?t=document.querySelector(t)||this.$root.$el.querySelector(t):!0===t&&(t=this.$parent.$el):t=!1,this.dropElement=t,this.dropElement&&(document.addEventListener("dragenter",this.onDragenter,!1),document.addEventListener("dragleave",this.onDragleave,!1),document.addEventListener("drop",this.onDocumentDrop,!1),this.dropElement.addEventListener("dragover",this.onDragover,!1),this.dropElement.addEventListener("drop",this.onDrop,!1))}},onDragenter:function(e){e.preventDefault(),this.dropActive||(this.dropActive=!0)},onDragleave:function(e){e.preventDefault(),("HTML"===e.target.nodeName||e.target===e.explicitOriginalTarget||0===e.screenX&&0===e.screenY&&!e.fromElement&&e.offsetX<=0)&&(this.dropActive=!1)},onDragover:function(e){e.preventDefault()},onDocumentDrop:function(){this.dropActive=!1},onDrop:function(e){e.preventDefault(),this.addDataTransfer(e.dataTransfer)}}},v=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{class:e.className},[e._t("default"),e._ssrNode(" "),i("input-file")],2)};function y(o){if(o||"undefined"==typeof __VUE_SSR_CONTEXT__||(o=__VUE_SSR_CONTEXT__),!o)return function(){};return o.hasOwnProperty("styles")||(Object.defineProperty(o,"styles",{enumerable:!0,get:function(){return o._styles}}),o._renderStyles=function(e){var t="",i=!0,n=!1,r=void 0;try{for(var o,s=e[Symbol.iterator]();!(i=(o=s.next()).done);i=!0){var a=o.value,u=a.ids,c=a.media,d=a.parts;t+='"}}catch(e){n=!0,r=e}finally{try{!i&&s.return&&s.return()}finally{if(n)throw r}}return t}),function(e,t){var i=t.media||"default",n=o._styles[i]||(o._styles[i]={ids:[],parts:[]});if(!n.ids.includes(e)){n.media=t.media,n.ids.push(e);var r=t.source;n.parts.push(r)}}}var g=function(e,t,i,n,r,o,s,a){var u,c=i||{};if(c.render||(c.render=e.render,c.staticRenderFns=e.staticRenderFns,c._compiled=!0,r&&(c.functional=!0)),c._scopeId=n,u=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),t&&t.call(this,a(e)),e&&e._registeredComponents&&e._registeredComponents.add(o)},void 0!==(c._ssrRegister=u))if(c.functional){var d=c.render;c.render=function(e,t){return u.call(t),d(e,t)}}else{var l=c.beforeCreate;c.beforeCreate=l?[].concat(l,u):[u]}return c}(void 0!==v?{render:v,staticRenderFns:[]}:{},function(e){e&&e("data-v-00c97c04_0",{source:"\n.file-uploads{overflow:hidden;position:relative;text-align:center;display:inline-block\n}\n.file-uploads.file-uploads-html4 input[type=file]{opacity:0;font-size:20em;z-index:1;top:0;left:0;right:0;bottom:0;position:absolute;width:100%;height:100%\n}\n.file-uploads.file-uploads-html5 input[type=file]{overflow:hidden;position:fixed;width:1px;height:1px;z-index:-1;opacity:0\n}",map:void 0,media:void 0})},void 0===m?{}:m,void 0,!1,"data-v-00c97c04","undefined"!=typeof __vue_create_injector__&&__vue_create_injector__,void 0!==y?y:function(){}),b=Object.freeze({default:g});return b&&g||b}); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.VueUploadComponent=t()}(this,function(){"use strict";var r=function(t){var n=new XMLHttpRequest;return n.open(t.method||"GET",t.url),n.responseType="json",t.headers&&Object.keys(t.headers).forEach(function(e){n.setRequestHeader(e,t.headers[e])}),n};function e(e){var i,t,n=r(e);return i=n,t=e.body,new Promise(function(e,n){i.onload=function(){if(200<=i.status&&i.status<300){var t;try{t=JSON.parse(i.response)}catch(e){t=i.response}e(t)}else n(i.response)},i.onerror=function(){return n(i.response)},i.send(JSON.stringify(t))})}var t=function(){function i(e,t){for(var n=0;n=this.maximum)break;if(r.push(s),1===this.maximum)break}}if(!r.length)return!1;1===this.maximum&&this.clear();var u=void 0;!0===t||0===t?u=r.concat(this.files):t?(u=r.concat([])).splice(t,0,r):u=this.files.concat(r),this.files=u;for(var c=0;c=r.maximum)return i(r.add(o));r.getEntry(e).then(function(e){o.push.apply(o,l(e)),t(n+1)})}(0)})}if(e.files.length){for(var i=0;i=this.maximum));i++);return Promise.resolve(this.add(o))}return Promise.resolve([])},getEntry:function(s){var a=this,u=1=a.maximum?r(o):e[n]?void a.getEntry(e[n],u+s.name+"/").then(function(e){o.push.apply(o,l(e)),t(n+1)}):i()}(0)})}()}else r([])})},replace:function(e,t){var n=this.get(e),i=this.get(t);if(!n||!i||n===i)return!1;var r=this.files.concat([]),o=r.indexOf(n),s=r.indexOf(i);return-1!==o&&-1!==s&&(r[o]=i,r[s]=n,this.files=r,this.emitInput(),!0)},remove:function(e){var t=this.get(e);if(t){if(this.emitFilter(void 0,t))return!1;var n=this.files.concat([]),i=n.indexOf(t);if(-1===i)return console.error("remove",t),!1;n.splice(i,1),this.files=n,delete this.maps[t.id],this.emitInput(),this.emitFile(void 0,t)}return t},update:function(e,t){var n=this.get(e);if(n){var i=f({},n,t);if(!n.fileObject||!n.active||i.active||i.error||i.success||(i.error="abort"),this.emitFilter(i,n))return!1;var r=this.files.concat([]),o=r.indexOf(n);return-1===o?(console.error("update",n),!1):(r.splice(o,1,i),this.files=r,delete this.maps[n.id],this.maps[i.id]=i,this.emitInput(),this.emitFile(i,n),i)}return!1},emitFilter:function(e,t){var n=!1;return this.$emit("input-filter",e,t,function(){return n=!0}),n},emitFile:function(n,e){this.$emit("input-file",n,e),!(n&&n.fileObject&&n.active)||e&&e.active?n&&n.fileObject&&n.active||!e||!e.fileObject||!e.active||this.uploading--:(this.uploading++,this.$nextTick(function(){var t=this;setTimeout(function(){t.upload(n).then(function(){(n=t.get(n))&&n.fileObject&&t.update(n,{active:!1,success:!n.error})}).catch(function(e){t.update(n,{active:!1,success:!1,error:e.code||e.error||e.message||e})})},parseInt(50*Math.random()+50,10))})),!this.active||Boolean(n)===Boolean(e)&&n.active===e.active||this.watchActive(!0)},emitInput:function(){this.$emit("input",this.files)},upload:function(e){var t=this.get(e);if(!t)return Promise.reject("not_exists");if(!t.fileObject)return Promise.reject("file_object");if(t.error)return Promise.reject(t.error);if(t.success)return Promise.resolve(t);var n=this.extensions;if(n&&(n.length||void 0===n.length)&&("object"===(void 0===n?"undefined":d(n))&&n instanceof RegExp||("string"==typeof n&&(n=n.split(",").map(function(e){return e.trim()}).filter(function(e){return e})),n=new RegExp("\\.("+n.join("|").replace(/\./g,"\\.")+")$","i")),-1===t.name.search(n)))return Promise.reject("extension");if(0this.size)return Promise.reject("size");if(this.customAction)return this.customAction(t,this);if(this.features.html5){if(this.shouldUseChunkUpload(t))return this.uploadChunk(t);if(t.putAction)return this.uploadPut(t);if(t.postAction)return this.uploadHtml5(t)}return t.postAction?this.uploadHtml4(t):Promise.reject("No action configured")},shouldUseChunkUpload:function(e){return this.chunkEnabled&&!!this.chunkOptions.handler&&e.size>this.chunkOptions.minSize},uploadChunk:function(e){var t=this.chunkOptions.handler;return e.chunk=new t(e,this.chunkOptions),e.chunk.upload()},uploadPut:function(e){var t=[],n=void 0;for(var i in e.data)null!=(n=e.data[i])&&t.push(encodeURIComponent(i)+"="+encodeURIComponent(n));var r=t.length?(-1===e.putAction.indexOf("?")?"?":"&")+t.join("&"):"",o=new XMLHttpRequest;return o.open("PUT",e.putAction+r),this.uploadXhr(o,e,e.file)},uploadHtml5:function(e){var t=new window.FormData,n=void 0;for(var i in e.data)(n=e.data[i])&&"object"===(void 0===n?"undefined":d(n))&&"function"!=typeof n.toString?n instanceof File?t.append(i,n,n.name):t.append(i,JSON.stringify(n)):null!=n&&t.append(i,n);t.append(this.name,e.file,e.file.filename||e.name);var r=new XMLHttpRequest;return r.open("POST",e.postAction),this.uploadXhr(r,e,t)},uploadXhr:function(s,e,n){var a=this,u=e,i=0,r=0;s.upload.onprogress=function(e){if(u=a.get(u),e.lengthComputable&&u&&u.fileObject&&u.active){var t=Math.round(Date.now()/1e3);t!==i&&(i=t,u=a.update(u,{progress:(e.loaded/e.total*100).toFixed(2),speed:e.loaded-r}),r=e.loaded)}};var c=setInterval(function(){if(!(u=a.get(u))||!u.fileObject||u.success||u.error||!u.active){c&&(clearInterval(c),c=!1);try{s.abort(),s.timeout=1}catch(e){}}},100);return new Promise(function(i,r){var o=void 0,e=function(e){if(!o){if(o=!0,c&&(clearInterval(c),c=!1),!(u=a.get(u)))return r("not_exists");if(!u.fileObject)return r("file_object");if(u.error)return r(u.error);if(!u.active)return r("abort");if(u.success)return i(u);var t={};switch(e.type){case"timeout":case"abort":t.error=e.type;break;case"error":s.status?500<=s.status?t.error="server":400<=s.status&&(t.error="denied"):t.error="network";break;default:500<=s.status?t.error="server":400<=s.status?t.error="denied":t.progress="100.00"}if(s.responseText){var n=s.getResponseHeader("Content-Type");n&&-1!==n.indexOf("/json")?t.response=JSON.parse(s.responseText):t.response=s.responseText}return(u=a.update(u,t)).error?r(u.error):i(u)}};for(var t in s.onload=e,s.onerror=e,s.onabort=e,s.ontimeout=e,u.timeout&&(s.timeout=u.timeout),u.headers)s.setRequestHeader(t,u.headers[t]);u=a.update(u,{xhr:s}),s.send(n)})},uploadHtml4:function(e){var a=this,u=e,c=function(e){27===e.keyCode&&e.preventDefault()},l=document.createElement("iframe");l.id="upload-iframe-"+u.id,l.name="upload-iframe-"+u.id,l.src="about:blank",l.setAttribute("style","width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;");var t=document.createElement("form");t.action=u.postAction,t.name="upload-form-"+u.id,t.setAttribute("method","POST"),t.setAttribute("target","upload-iframe-"+u.id),t.setAttribute("enctype","multipart/form-data");var n=void 0,i=void 0;for(var r in u.data)(n=u.data[r])&&"object"===(void 0===n?"undefined":d(n))&&"function"!=typeof n.toString&&(n=JSON.stringify(n)),null!=n&&((i=document.createElement("input")).type="hidden",i.name=r,i.value=n,t.appendChild(i));t.appendChild(u.el),document.body.appendChild(l).appendChild(t);return new Promise(function(o,s){setTimeout(function(){if(!(u=a.update(u,{iframe:l})))return s("not_exists");var i=setInterval(function(){(u=a.get(u))&&u.fileObject&&!u.success&&!u.error&&u.active||(i&&(clearInterval(i),i=!1),l.onabort({type:u?"abort":"not_exists"}))},100),r=void 0,e=function(e){if(!r){if(r=!0,i&&(clearInterval(i),i=!1),document.body.removeEventListener("keydown",c),!(u=a.get(u)))return s("not_exists");if(!u.fileObject)return s("file_object");if(u.error)return s(u.error);if(!u.active)return s("abort");if(u.success)return o(u);var t=function(){var t=void 0;try{l.contentWindow&&(t=l.contentWindow.document)}catch(e){}if(!t)try{t=l.contentDocument?l.contentDocument:l.document}catch(e){t=l.document}return t&&t.body?t.body.innerHTML:null}(),n={};switch(e.type){case"abort":n.error="abort";break;case"error":u.error?n.error=u.error:n.error=null===t?"network":"denied";break;default:u.error?n.error=u.error:null===n?n.error="network":n.progress="100.00"}if(null!==t){if(t&&"{"===t.substr(0,1)&&"}"===t.substr(t.length-1,1))try{t=JSON.parse(t)}catch(e){}n.response=t}return(u=a.update(u,n)).error?s(u.error):o(u)}};l.onload=e,l.onerror=e,l.onabort=e,document.body.addEventListener("keydown",c),t.submit()},50)}).then(function(e){return l.parentNode&&l.parentNode.removeChild(l),e}).catch(function(e){return l.parentNode&&l.parentNode.removeChild(l),e})},watchActive:function(e){for(var t=void 0,n=0;t=this.files[n];)if(n++,t.fileObject)if(e&&!this.destroy){if(this.uploading>=this.thread||this.uploading&&!this.features.html5)break;t.active||t.error||t.success||this.update(t,{active:!0})}else t.active&&this.update(t,{active:!1});else;0===this.uploading&&(this.active=!1)},watchDrop:function(e){var t=e;if(this.features.drop){if(this.dropElement)try{document.removeEventListener("dragenter",this.onDragenter,!1),document.removeEventListener("dragleave",this.onDragleave,!1),document.removeEventListener("drop",this.onDocumentDrop,!1),this.dropElement.removeEventListener("dragover",this.onDragover,!1),this.dropElement.removeEventListener("drop",this.onDrop,!1)}catch(e){}t?"string"==typeof t?t=document.querySelector(t)||this.$root.$el.querySelector(t):!0===t&&(t=this.$parent.$el):t=!1,this.dropElement=t,this.dropElement&&(document.addEventListener("dragenter",this.onDragenter,!1),document.addEventListener("dragleave",this.onDragleave,!1),document.addEventListener("drop",this.onDocumentDrop,!1),this.dropElement.addEventListener("dragover",this.onDragover,!1),this.dropElement.addEventListener("drop",this.onDrop,!1))}},onDragenter:function(e){e.preventDefault(),this.dropActive||(this.dropActive=!0)},onDragleave:function(e){e.preventDefault(),("HTML"===e.target.nodeName||e.target===e.explicitOriginalTarget||0===e.screenX&&0===e.screenY&&!e.fromElement&&e.offsetX<=0)&&(this.dropActive=!1)},onDragover:function(e){e.preventDefault()},onDocumentDrop:function(){this.dropActive=!1},onDrop:function(e){e.preventDefault(),this.addDataTransfer(e.dataTransfer)}}},void 0,!1,0,function e(){var c=document.head||document.getElementsByTagName("head")[0],l=e.styles||(e.styles={}),d="undefined"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());return function(e,t){if(!document.querySelector('style[data-vue-ssr-id~="'+e+'"]')){var n=d?t.media||"default":e,i=l[n]||(l[n]={ids:[],parts:[],element:void 0});if(!i.ids.includes(e)){var r=t.source,o=i.ids.length;if(i.ids.push(e),t.map&&(r+="\n/*# sourceURL="+t.map.sources[0]+" */",r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t.map))))+" */"),d&&(i.element=i.element||document.querySelector("style[data-group="+n+"]")),!i.element){var s=i.element=document.createElement("style");s.type="text/css",t.media&&s.setAttribute("media",t.media),d&&(s.setAttribute("data-group",n),s.setAttribute("data-next-index","0")),c.appendChild(s)}if(d&&(o=parseInt(i.element.getAttribute("data-next-index")),i.element.setAttribute("data-next-index",o+1)),i.element.styleSheet)i.parts.push(r),i.element.styleSheet.cssText=i.parts.filter(Boolean).join("\n");else{var a=document.createTextNode(r),u=i.element.childNodes;u[o]&&i.element.removeChild(u[o]),u.length?i.element.insertBefore(a,u[o]):i.element.appendChild(a)}}}}}),m=Object.freeze({default:p});return m&&p||m}); +//# sourceMappingURL=vue-upload-component.min.js.map diff --git a/dist/vue-upload-component.min.js.map b/dist/vue-upload-component.min.js.map index ed5368b..adf4b61 100644 --- a/dist/vue-upload-component.min.js.map +++ b/dist/vue-upload-component.min.js.map @@ -1 +1 @@ -{"version":3,"file":"vue-upload-component.min.js","sources":["../src/utils/request.js","../src/chunk/ChunkUploadHandler.js","../src/InputFile.vue.js?rollup-plugin-vue=script.js","../src/FileUpload.vue.js?rollup-plugin-vue=script.js"],"sourcesContent":["/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const 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(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 */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\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 = () => reject(xhr.response)\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 */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\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 = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets the file size\n */\n get fileName () {\n return this.file.name\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\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 get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\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 get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.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 get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let 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 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 pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n 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 upload () {\n this.promise = new Promise((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 start () {\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(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\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 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 uploadChunk (chunk) {\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(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\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(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nexport default {\n methods: {\n change(e) {\n this.$destroy()\n this.$parent.addInputFile(e.target)\n // eslint-disable-next-line\n new this.constructor({\n parent: this.$parent,\n el: this.$el,\n })\n }\n }\n}\n","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport ChunkUploadDefaultHandler from './chunk/ChunkUploadHandler'\nimport InputFile from './InputFile.vue'\n\nconst CHUNK_DEFAULT_OPTIONS = {\n headers: {},\n action: '',\n minSize: 1048576,\n maxActive: 3,\n maxRetries: 5,\n\n handler: ChunkUploadDefaultHandler\n}\n\nexport default {\n components: {\n 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\n multiple: {\n type: Boolean,\n },\n\n maximum: {\n type: Number,\n 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\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\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: () => {\n return CHUNK_DEFAULT_OPTIONS\n }\n }\n },\n\n data() {\n return {\n files: this.value,\n features: {\n html5: true,\n directory: false,\n drag: 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() {\n let 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\n this.$nextTick(function () {\n\n // 更新下父级\n if (this.$parent) {\n this.$parent.$forceUpdate()\n }\n\n // 拖拽渲染\n this.watchDrop(this.drop)\n })\n },\n\n /**\n * beforeDestroy\n * @return {[type]} [description]\n */\n beforeDestroy() {\n // 已销毁\n this.destroy = true\n\n // 设置成不激活\n this.active = false\n },\n\n computed: {\n /**\n * uploading 正在上传的线程\n * @return {[type]} [description]\n */\n\n /**\n * uploaded 文件列表是否全部已上传\n * @return {[type]} [description]\n */\n uploaded() {\n let file\n for (let 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\n chunkOptions () {\n return Object.assign(CHUNK_DEFAULT_OPTIONS, this.chunk)\n },\n\n className() {\n return [\n 'file-uploads',\n this.features.html5 ? 'file-uploads-html5' : 'file-uploads-html4',\n this.features.directory && this.directory ? 'file-uploads-directory' : undefined,\n this.features.drop && this.drop ? 'file-uploads-drop' : undefined,\n ]\n }\n },\n\n\n watch: {\n active(active) {\n this.watchActive(active)\n },\n\n dropActive() {\n if (this.$parent) {\n this.$parent.$forceUpdate()\n }\n },\n\n drop(value) {\n this.watchDrop(value)\n },\n\n value(files) {\n if (this.files === files) {\n return\n }\n this.files = files\n\n let oldMaps = this.maps\n\n // 重写 maps 缓存\n this.maps = {}\n for (let i = 0; i < this.files.length; i++) {\n let file = this.files[i]\n this.maps[file.id] = file\n }\n\n // add, update\n for (let key in this.maps) {\n let newFile = this.maps[key]\n let oldFile = oldMaps[key]\n if (newFile !== oldFile) {\n this.emitFile(newFile, oldFile)\n }\n }\n\n // delete\n for (let 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() {\n if (this.files.length) {\n let files = this.files\n this.files = []\n\n // 定位\n this.maps = {}\n\n // 事件\n this.emitInput()\n for (let i = 0; i < files.length; i++) {\n this.emitFile(undefined, files[i])\n }\n }\n return true\n },\n\n // 选择\n 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 // 添加\n add(_files, index = this.addIndex) {\n let files = _files\n let isArray = files instanceof Array\n\n // 不是数组整理成数组\n if (!isArray) {\n files = [files]\n }\n\n // 遍历规范对象\n let addFiles = []\n for (let i = 0; i < files.length; i++) {\n let file = files[i]\n if (this.features.html5 && file instanceof Blob) {\n file = {\n file,\n size: file.size,\n name: file.webkitRelativePath || file.relativePath || file.name || 'unknown',\n type: file.type,\n }\n }\n let fileObject = false\n if (file.fileObject === false) {\n // false\n } 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 = {\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 = {\n ...this.data,\n ...file.data ? file.data : {},\n }\n\n file.headers = {\n ...this.headers,\n ...file.headers ? file.headers : {},\n }\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\n // 添加进去 files\n let newFiles\n if (index === true || index === 0) {\n newFiles = addFiles.concat(this.files)\n } else if (index) {\n newFiles = addFiles.concat([])\n newFiles.splice(index, 0, addFiles)\n } else {\n newFiles = this.files.concat(addFiles)\n }\n\n this.files = newFiles\n\n // 定位\n for (let i = 0; i < addFiles.length; i++) {\n let file = addFiles[i]\n this.maps[file.id] = file\n }\n\n // 事件\n this.emitInput()\n for (let i = 0; i < addFiles.length; i++) {\n this.emitFile(addFiles[i], undefined)\n }\n\n return isArray ? addFiles : addFiles[0]\n },\n\n\n\n // 添加表单文件\n addInputFile(el) {\n let files = []\n if (el.files) {\n for (let i = 0; i < el.files.length; i++) {\n let 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,\n el\n })\n }\n } else {\n var names = el.value.replace(/\\\\/g, '/').split('/')\n files.push({\n name: names[names.length - 1],\n el,\n })\n }\n return this.add(files)\n },\n\n\n // 添加 DataTransfer\n addDataTransfer(dataTransfer) {\n let files = []\n if (dataTransfer.items && dataTransfer.items.length) {\n let items = []\n for (let i = 0; i < dataTransfer.items.length; i++) {\n let 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((resolve, reject) => {\n let forEach = (i) => {\n let item = items[i]\n // 结束 文件数量大于 最大数量\n if (!item || (this.maximum > 0 && files.length >= this.maximum)) {\n return resolve(this.add(files))\n }\n this.getEntry(item).then(function (results) {\n files.push(...results)\n forEach(i + 1)\n })\n }\n forEach(0)\n })\n }\n\n if (dataTransfer.files.length) {\n for (let i = 0; i < dataTransfer.files.length; i++) {\n files.push(dataTransfer.files[i])\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(entry, path = '') {\n return new Promise((resolve, reject) => {\n if (entry.isFile) {\n entry.file(function (file) {\n resolve([\n {\n size: file.size,\n name: path + file.name,\n type: file.type,\n file,\n }\n ])\n })\n } else if (entry.isDirectory && this.dropDirectory) {\n let files = []\n let dirReader = entry.createReader()\n let readEntries = () => {\n dirReader.readEntries((entries) => {\n let forEach = (i) => {\n if ((!entries[i] && i === 0) || (this.maximum > 0 && files.length >= this.maximum)) {\n return resolve(files)\n }\n if (!entries[i]) {\n return readEntries()\n }\n this.getEntry(entries[i], path + entry.name + '/').then((results) => {\n files.push(...results)\n forEach(i + 1)\n })\n }\n forEach(0)\n })\n }\n readEntries()\n } else {\n resolve([])\n }\n })\n },\n\n\n replace(id1, id2) {\n let file1 = this.get(id1)\n let file2 = this.get(id2)\n if (!file1 || !file2 || file1 === file2) {\n return false\n }\n let files = this.files.concat([])\n let index1 = files.indexOf(file1)\n let 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 remove(id) {\n let file = this.get(id)\n if (file) {\n if (this.emitFilter(undefined, file)) {\n return false\n }\n let files = this.files.concat([])\n let 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 update(id, data) {\n let file = this.get(id)\n if (file) {\n let newFile = {\n ...file,\n ...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 let files = this.files.concat([])\n let 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 // 预处理 事件 过滤器\n emitFilter(newFile, oldFile) {\n let isPrevent = false\n this.$emit('input-filter', newFile, oldFile, function () {\n isPrevent = true\n return isPrevent\n })\n return isPrevent\n },\n\n // 处理后 事件 分发\n 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 setTimeout(() => {\n this.upload(newFile).then(() => {\n // eslint-disable-next-line\n newFile = this.get(newFile)\n if (newFile && newFile.fileObject) {\n this.update(newFile, {\n active: false,\n success: !newFile.error\n })\n }\n }).catch((e) => {\n this.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\n emitInput() {\n this.$emit('input', this.files)\n },\n\n\n // 上传\n upload(id) {\n let 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 let extensions = this.extensions\n if (extensions && (extensions.length || typeof extensions.length === 'undefined')) {\n if (typeof extensions !== 'object' || !(extensions instanceof RegExp)) {\n if (typeof extensions === 'string') {\n extensions = extensions.split(',').map(value => value.trim()).filter(value => value)\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 * Whether this file should be uploaded using chunk upload or not\n *\n * @param Object file\n */\n shouldUseChunkUpload (file) {\n return this.chunkEnabled &&\n !!this.chunkOptions.handler &&\n file.size > this.chunkOptions.minSize\n },\n\n /**\n * Upload a file using Chunk method\n *\n * @param File file\n */\n uploadChunk (file) {\n const HandlerClass = this.chunkOptions.handler\n file.chunk = new HandlerClass(file, this.chunkOptions)\n\n return file.chunk.upload()\n },\n\n uploadPut(file) {\n let querys = []\n let value\n for (let 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 let queryString = querys.length ? (file.putAction.indexOf('?') === -1 ? '?' : '&') + querys.join('&') : ''\n let xhr = new XMLHttpRequest()\n xhr.open('PUT', file.putAction + queryString)\n return this.uploadXhr(xhr, file, file.file)\n },\n\n uploadHtml5(file) {\n let form = new window.FormData()\n let value\n for (let key in file.data) {\n value = file.data[key]\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 }\n form.append(this.name, file.file, file.file.filename || file.name)\n let xhr = new XMLHttpRequest()\n xhr.open('POST', file.postAction)\n return this.uploadXhr(xhr, file, form)\n },\n\n uploadXhr(xhr, _file, body) {\n let file = _file\n let speedTime = 0\n let speedLoaded = 0\n\n // 进度条\n xhr.upload.onprogress = (e) => {\n // 还未开始上传 已删除 未激活\n file = this.get(file)\n if (!e.lengthComputable || !file || !file.fileObject || !file.active) {\n return\n }\n\n // 进度 速度 每秒更新一次\n let speedTime2 = Math.round(Date.now() / 1000)\n if (speedTime2 === speedTime) {\n return\n }\n speedTime = speedTime2\n\n file = this.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 let interval = setInterval(() => {\n file = this.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 }\n }, 100)\n\n return new Promise((resolve, reject) => {\n let complete\n let 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 = this.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 // 已完成 直接相应\n if (file.success) {\n return resolve(file)\n }\n\n let 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 let 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 = this.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 (let key in file.headers) {\n xhr.setRequestHeader(key, file.headers[key])\n }\n\n // 更新 xhr\n file = this.update(file, { xhr })\n\n // 开始上传\n xhr.send(body)\n })\n },\n\n\n\n\n uploadHtml4(_file) {\n let file = _file\n let onKeydown = function (e) {\n if (e.keyCode === 27) {\n e.preventDefault()\n }\n }\n\n let 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\n let form = document.createElement('form')\n\n form.action = file.postAction\n\n form.name = 'upload-form-' + file.id\n\n\n form.setAttribute('method', 'POST')\n form.setAttribute('target', 'upload-iframe-' + file.id)\n form.setAttribute('enctype', 'multipart/form-data')\n\n let value\n let input\n for (let key in file.data) {\n value = file.data[key]\n if (value && 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\n\n\n let getResponseData = function () {\n let doc\n try {\n if (iframe.contentWindow) {\n doc = iframe.contentWindow.document\n }\n } catch (err) {\n }\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\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n file = this.update(file, { iframe })\n\n // 不存在\n if (!file) {\n return reject('not_exists')\n }\n\n // 定时检查\n let interval = setInterval(() => {\n file = this.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\n let complete\n let fn = (e) => {\n // 已经处理过了\n if (complete) {\n return\n }\n complete = true\n\n\n if (interval) {\n clearInterval(interval)\n interval = false\n }\n\n // 关闭 esc 事件\n document.body.removeEventListener('keydown', onKeydown)\n\n file = this.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 let response = getResponseData()\n let 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 }\n data.response = response\n }\n\n // 更新\n file = this.update(file, data)\n\n if (file.error) {\n return reject(file.error)\n }\n\n // 响应\n return resolve(file)\n }\n\n\n // 添加事件\n iframe.onload = fn\n iframe.onerror = fn\n iframe.onabort = fn\n\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\n\n\n watchActive(active) {\n let file\n let index = 0\n while ((file = this.files[index])) {\n index++\n if (!file.fileObject) {\n // 不是文件对象\n } 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\n\n watchDrop(_el) {\n let 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\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\n\n onDragenter(e) {\n e.preventDefault()\n if (!this.dropActive) {\n this.dropActive = true\n }\n },\n\n onDragleave(e) {\n e.preventDefault()\n if (e.target.nodeName === 'HTML' || e.target === e.explicitOriginalTarget || (e.screenX === 0 && e.screenY === 0 && !e.fromElement && e.offsetX <= 0)) {\n this.dropActive = false\n }\n },\n\n onDragover(e) {\n e.preventDefault()\n },\n\n onDocumentDrop() {\n this.dropActive = false\n },\n\n onDrop(e) {\n e.preventDefault()\n this.addDataTransfer(e.dataTransfer)\n },\n }\n}\n"],"names":["createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","keys","forEach","setRequestHeader","key","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","ChunkUploadHandler","file","chunks","start","end","this","chunkSize","fileSize","push","slice","maxRetries","progress","active","stopChunks","chunksUploading","abort","startChunking","promise","Object","assign","action","startBody","fileType","fileName","then","res","_this2","sessionId","data","session_id","end_offset","createChunks","catch","i","maxActiveChunks","uploadNextChunk","hasChunksToUpload","uploadChunk","chunksToUpload","length","finish","chunk","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","FormData","name","append","uploadBody","startOffset","blob","uploaded","retries","_this3","finishBody","_this4","parseInt","maxActive","type","size","completedProgress","chunksUploaded","uploadingProgress","reduce","_this5","min","filter","e","$destroy","$parent","addInputFile","target","constructor","$el","CHUNK_DEFAULT_OPTIONS","ChunkUploadDefaultHandler","String","Boolean","Number","multiple","Function","Array","value","input","document","createElement","window","files","webkitdirectory","directory","features","html5","ondrop","drop","maps","$nextTick","$forceUpdate","watchDrop","destroy","fileObject","error","success","undefined","watchActive","oldMaps","id","newFile","oldFile","emitFile","emitInput","_files","index","addIndex","isArray","addFiles","Blob","webkitRelativePath","relativePath","Element","el","putAction","postAction","timeout","random","toString","substr","emitFilter","maximum","clear","newFiles","concat","splice","names","replace","split","add","dataTransfer","items","item","getAsEntry","getAsFile","webkitGetAsEntry","_this","getEntry","results","entry","path","isFile","isDirectory","dropDirectory","dirReader","createReader","readEntries","entries","id1","id2","file1","get","file2","index1","indexOf","index2","isPrevent","$emit","uploading","update","code","message","extensions","RegExp","map","trim","join","search","customAction","shouldUseChunkUpload","uploadPut","uploadHtml5","uploadHtml4","chunkEnabled","chunkOptions","handler","minSize","HandlerClass","querys","encodeURIComponent","queryString","uploadXhr","form","File","filename","_file","speedTime","speedLoaded","onprogress","speedTime2","Date","now","toFixed","interval","setInterval","complete","fn","responseText","contentType","getResponseHeader","onabort","ontimeout","onKeydown","keyCode","preventDefault","iframe","src","setAttribute","appendChild","removeEventListener","doc","contentWindow","contentDocument","innerHTML","getResponseData","submit","parentNode","removeChild","thread","_el","dropElement","onDragenter","onDragleave","onDocumentDrop","onDragover","onDrop","querySelector","$root","dropActive","nodeName","explicitOriginalTarget","screenX","screenY","fromElement","offsetX","addDataTransfer"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vue-upload-component.min.js","sources":["../src/utils/request.js","../src/chunk/ChunkUploadHandler.js","../src/FileUpload.vue"],"sourcesContent":["/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const 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(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 */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\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 = () => reject(xhr.response)\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 */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\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 = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets the file size\n */\n get fileName () {\n return this.file.name\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\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 get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\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 get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.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 get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let 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 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 pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n 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 upload () {\n this.promise = new Promise((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 start () {\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(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\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 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 uploadChunk (chunk) {\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(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\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(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","\n\n\n"],"names":["createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","keys","forEach","setRequestHeader","key","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","ChunkUploadHandler","file","chunks","start","end","this","chunkSize","fileSize","push","slice","maxRetries","progress","active","stopChunks","chunksUploading","abort","startChunking","promise","Object","assign","action","startBody","fileType","fileName","then","res","_this2","sessionId","data","session_id","end_offset","createChunks","catch","i","maxActiveChunks","uploadNextChunk","hasChunksToUpload","uploadChunk","chunksToUpload","length","finish","chunk","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","FormData","name","append","uploadBody","startOffset","blob","uploaded","retries","_this3","finishBody","_this4","parseInt","maxActive","type","size","completedProgress","chunksUploaded","uploadingProgress","reduce","_this5","min","filter"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vue-upload-component.part.js b/dist/vue-upload-component.part.js index 50b45a9..d66cdb7 100644 --- a/dist/vue-upload-component.part.js +++ b/dist/vue-upload-component.part.js @@ -1,6 +1,6 @@ /*! * Name: vue-upload-component - * Version: 2.8.9 + * Version: 2.8.10 * Author: LianYue */ (function (global, factory) { @@ -585,26 +585,26 @@ } }; + /* script */ var __vue_script__ = script; /* template */ var __vue_render__ = function __vue_render__() { - 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, "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 } }, []); + 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, "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 } }); }; var __vue_staticRenderFns__ = []; - var __vue_template__ = typeof __vue_render__ !== 'undefined' ? { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ } : {}; /* style */ var __vue_inject_styles__ = undefined; /* scoped */ var __vue_scope_id__ = undefined; /* module identifier */ - var __vue_module_identifier__ = "data-v-36701cce"; + var __vue_module_identifier__ = undefined; /* functional template */ var __vue_is_functional_template__ = false; /* component normalizer */ function __vue_normalize__(template, style, script$$1, scope, functional, moduleIdentifier, createInjector, createInjectorSSR) { - var component = script$$1 || {}; + var component = (typeof script$$1 === 'function' ? script$$1.options : script$$1) || {}; if (!component.render) { component.render = template.render; @@ -619,72 +619,68 @@ return component; } /* style inject */ + function __vue_create_injector__() { + var head = document.head || document.getElementsByTagName('head')[0]; + var styles = __vue_create_injector__.styles || (__vue_create_injector__.styles = {}); + var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase()); - /* style inject SSR */ - function __vue_create_injector_ssr__(context) { - if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { - context = __VUE_SSR_CONTEXT__; - } + return function addStyle(id, css) { + if (document.querySelector('style[data-vue-ssr-id~="' + id + '"]')) return; // SSR styles are present. - if (!context) return function () {}; + var group = isOldIE ? css.media || 'default' : id; + var style = styles[group] || (styles[group] = { ids: [], parts: [], element: undefined }); - if (!context.hasOwnProperty('styles')) { - Object.defineProperty(context, 'styles', { - enumerable: true, - get: function get() { - return context._styles; + if (!style.ids.includes(id)) { + var code = css.source; + var index = style.ids.length; + + style.ids.push(id); + + if (css.map) { + // https://developer.chrome.com/devtools/docs/javascript-debugging + // this makes source maps inside style tags work properly in Chrome + code += '\n/*# sourceURL=' + css.map.sources[0] + ' */'; + // http://stackoverflow.com/a/26603875 + code += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) + ' */'; } - }); - context._renderStyles = renderStyles; - } - function renderStyles(styles) { - var css = ''; - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = styles[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var _ref = _step.value; - var ids = _ref.ids, - media = _ref.media, - parts = _ref.parts; - - css += ''; - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } + if (isOldIE) { + style.element = style.element || document.querySelector('style[data-group=' + group + ']'); } - } - return css; - } + if (!style.element) { + var el = style.element = document.createElement('style'); + el.type = 'text/css'; - return function addStyle(id, css) { - var group = css.media || 'default'; - var style = context._styles[group] || (context._styles[group] = { ids: [], parts: [] }); + if (css.media) el.setAttribute('media', css.media); + if (isOldIE) { + el.setAttribute('data-group', group); + el.setAttribute('data-next-index', '0'); + } - if (!style.ids.includes(id)) { - style.media = css.media; - style.ids.push(id); - var code = css.source; - style.parts.push(code); + head.appendChild(el); + } + + if (isOldIE) { + index = parseInt(style.element.getAttribute('data-next-index')); + style.element.setAttribute('data-next-index', index + 1); + } + + if (style.element.styleSheet) { + style.parts.push(code); + style.element.styleSheet.cssText = style.parts.filter(Boolean).join('\n'); + } else { + var textNode = document.createTextNode(code); + var nodes = style.element.childNodes; + if (nodes[index]) style.element.removeChild(nodes[index]); + if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode); + } } }; } + /* style inject SSR */ - var InputFile = __vue_normalize__(__vue_template__, __vue_inject_styles__, typeof __vue_script__ === 'undefined' ? {} : __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, typeof __vue_create_injector__ !== 'undefined' ? __vue_create_injector__ : function () {}, typeof __vue_create_injector_ssr__ !== 'undefined' ? __vue_create_injector_ssr__ : function () {}); + var InputFile = __vue_normalize__({ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ }, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, __vue_create_injector__, undefined); 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; }; @@ -1924,25 +1920,25 @@ } }; + /* script */ var __vue_script__$1 = script$1; /* template */ var __vue_render__$1 = function __vue_render__() { - var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('label', { class: _vm.className }, [_vm._t("default"), _vm._ssrNode(" "), _c('input-file')], 2); + var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('label', { class: _vm.className }, [_vm._t("default"), _vm._v(" "), _c('input-file')], 2); }; var __vue_staticRenderFns__$1 = []; - var __vue_template__$1 = typeof __vue_render__$1 !== 'undefined' ? { render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 } : {}; /* style */ var __vue_inject_styles__$1 = undefined; /* scoped */ var __vue_scope_id__$1 = undefined; /* module identifier */ - var __vue_module_identifier__$1 = "data-v-00c97c04"; + var __vue_module_identifier__$1 = undefined; /* functional template */ var __vue_is_functional_template__$1 = false; /* component normalizer */ function __vue_normalize__$1(template, style, script, scope, functional, moduleIdentifier, createInjector, createInjectorSSR) { - var component = script || {}; + var component = (typeof script === 'function' ? script.options : script) || {}; if (!component.render) { component.render = template.render; @@ -1957,72 +1953,68 @@ return component; } /* style inject */ + function __vue_create_injector__$1() { + var head = document.head || document.getElementsByTagName('head')[0]; + var styles = __vue_create_injector__$1.styles || (__vue_create_injector__$1.styles = {}); + var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase()); - /* style inject SSR */ - function __vue_create_injector_ssr__$1(context) { - if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { - context = __VUE_SSR_CONTEXT__; - } + return function addStyle(id, css) { + if (document.querySelector('style[data-vue-ssr-id~="' + id + '"]')) return; // SSR styles are present. - if (!context) return function () {}; + var group = isOldIE ? css.media || 'default' : id; + var style = styles[group] || (styles[group] = { ids: [], parts: [], element: undefined }); - if (!context.hasOwnProperty('styles')) { - Object.defineProperty(context, 'styles', { - enumerable: true, - get: function get() { - return context._styles; + if (!style.ids.includes(id)) { + var code = css.source; + var index = style.ids.length; + + style.ids.push(id); + + if (css.map) { + // https://developer.chrome.com/devtools/docs/javascript-debugging + // this makes source maps inside style tags work properly in Chrome + code += '\n/*# sourceURL=' + css.map.sources[0] + ' */'; + // http://stackoverflow.com/a/26603875 + code += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) + ' */'; } - }); - context._renderStyles = renderStyles; - } - function renderStyles(styles) { - var css = ''; - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = styles[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var _ref = _step.value; - var ids = _ref.ids, - media = _ref.media, - parts = _ref.parts; - - css += ''; - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } + if (isOldIE) { + style.element = style.element || document.querySelector('style[data-group=' + group + ']'); } - } - return css; - } + if (!style.element) { + var el = style.element = document.createElement('style'); + el.type = 'text/css'; - return function addStyle(id, css) { - var group = css.media || 'default'; - var style = context._styles[group] || (context._styles[group] = { ids: [], parts: [] }); + if (css.media) el.setAttribute('media', css.media); + if (isOldIE) { + el.setAttribute('data-group', group); + el.setAttribute('data-next-index', '0'); + } - if (!style.ids.includes(id)) { - style.media = css.media; - style.ids.push(id); - var code = css.source; - style.parts.push(code); + head.appendChild(el); + } + + if (isOldIE) { + index = parseInt(style.element.getAttribute('data-next-index')); + style.element.setAttribute('data-next-index', index + 1); + } + + if (style.element.styleSheet) { + style.parts.push(code); + style.element.styleSheet.cssText = style.parts.filter(Boolean).join('\n'); + } else { + var textNode = document.createTextNode(code); + var nodes = style.element.childNodes; + if (nodes[index]) style.element.removeChild(nodes[index]); + if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode); + } } }; } + /* style inject SSR */ - var FileUpload = __vue_normalize__$1(__vue_template__$1, __vue_inject_styles__$1, typeof __vue_script__$1 === 'undefined' ? {} : __vue_script__$1, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, typeof __vue_create_injector__ !== 'undefined' ? __vue_create_injector__ : function () {}, typeof __vue_create_injector_ssr__$1 !== 'undefined' ? __vue_create_injector_ssr__$1 : function () {}); + var FileUpload = __vue_normalize__$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, __vue_create_injector__$1, undefined); var FileUpload$1 = /*#__PURE__*/Object.freeze({ default: FileUpload @@ -2035,3 +2027,4 @@ return src; }))); +//# sourceMappingURL=vue-upload-component.part.js.map diff --git a/dist/vue-upload-component.part.js.map b/dist/vue-upload-component.part.js.map index 04a9f7a..eb5b0c8 100644 --- a/dist/vue-upload-component.part.js.map +++ b/dist/vue-upload-component.part.js.map @@ -1 +1 @@ -{"version":3,"file":"vue-upload-component.part.js","sources":["../src/utils/request.js","../src/chunk/ChunkUploadHandler.js","../src/InputFile.vue.js?rollup-plugin-vue=script.js","../src/FileUpload.vue.js?rollup-plugin-vue=script.js","../src/index.js"],"sourcesContent":["/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const 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(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 */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\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 = () => reject(xhr.response)\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 */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\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 = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets the file size\n */\n get fileName () {\n return this.file.name\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\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 get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\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 get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.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 get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let 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 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 pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n 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 upload () {\n this.promise = new Promise((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 start () {\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(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\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 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 uploadChunk (chunk) {\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(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\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(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nexport default {\n methods: {\n change(e) {\n this.$destroy()\n this.$parent.addInputFile(e.target)\n // eslint-disable-next-line\n new this.constructor({\n parent: this.$parent,\n el: this.$el,\n })\n }\n }\n}\n","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport ChunkUploadDefaultHandler from './chunk/ChunkUploadHandler'\nimport InputFile from './InputFile.vue'\n\nconst CHUNK_DEFAULT_OPTIONS = {\n headers: {},\n action: '',\n minSize: 1048576,\n maxActive: 3,\n maxRetries: 5,\n\n handler: ChunkUploadDefaultHandler\n}\n\nexport default {\n components: {\n 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\n multiple: {\n type: Boolean,\n },\n\n maximum: {\n type: Number,\n 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\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\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: () => {\n return CHUNK_DEFAULT_OPTIONS\n }\n }\n },\n\n data() {\n return {\n files: this.value,\n features: {\n html5: true,\n directory: false,\n drag: 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() {\n let 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\n this.$nextTick(function () {\n\n // 更新下父级\n if (this.$parent) {\n this.$parent.$forceUpdate()\n }\n\n // 拖拽渲染\n this.watchDrop(this.drop)\n })\n },\n\n /**\n * beforeDestroy\n * @return {[type]} [description]\n */\n beforeDestroy() {\n // 已销毁\n this.destroy = true\n\n // 设置成不激活\n this.active = false\n },\n\n computed: {\n /**\n * uploading 正在上传的线程\n * @return {[type]} [description]\n */\n\n /**\n * uploaded 文件列表是否全部已上传\n * @return {[type]} [description]\n */\n uploaded() {\n let file\n for (let 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\n chunkOptions () {\n return Object.assign(CHUNK_DEFAULT_OPTIONS, this.chunk)\n },\n\n className() {\n return [\n 'file-uploads',\n this.features.html5 ? 'file-uploads-html5' : 'file-uploads-html4',\n this.features.directory && this.directory ? 'file-uploads-directory' : undefined,\n this.features.drop && this.drop ? 'file-uploads-drop' : undefined,\n ]\n }\n },\n\n\n watch: {\n active(active) {\n this.watchActive(active)\n },\n\n dropActive() {\n if (this.$parent) {\n this.$parent.$forceUpdate()\n }\n },\n\n drop(value) {\n this.watchDrop(value)\n },\n\n value(files) {\n if (this.files === files) {\n return\n }\n this.files = files\n\n let oldMaps = this.maps\n\n // 重写 maps 缓存\n this.maps = {}\n for (let i = 0; i < this.files.length; i++) {\n let file = this.files[i]\n this.maps[file.id] = file\n }\n\n // add, update\n for (let key in this.maps) {\n let newFile = this.maps[key]\n let oldFile = oldMaps[key]\n if (newFile !== oldFile) {\n this.emitFile(newFile, oldFile)\n }\n }\n\n // delete\n for (let 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() {\n if (this.files.length) {\n let files = this.files\n this.files = []\n\n // 定位\n this.maps = {}\n\n // 事件\n this.emitInput()\n for (let i = 0; i < files.length; i++) {\n this.emitFile(undefined, files[i])\n }\n }\n return true\n },\n\n // 选择\n 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 // 添加\n add(_files, index = this.addIndex) {\n let files = _files\n let isArray = files instanceof Array\n\n // 不是数组整理成数组\n if (!isArray) {\n files = [files]\n }\n\n // 遍历规范对象\n let addFiles = []\n for (let i = 0; i < files.length; i++) {\n let file = files[i]\n if (this.features.html5 && file instanceof Blob) {\n file = {\n file,\n size: file.size,\n name: file.webkitRelativePath || file.relativePath || file.name || 'unknown',\n type: file.type,\n }\n }\n let fileObject = false\n if (file.fileObject === false) {\n // false\n } 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 = {\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 = {\n ...this.data,\n ...file.data ? file.data : {},\n }\n\n file.headers = {\n ...this.headers,\n ...file.headers ? file.headers : {},\n }\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\n // 添加进去 files\n let newFiles\n if (index === true || index === 0) {\n newFiles = addFiles.concat(this.files)\n } else if (index) {\n newFiles = addFiles.concat([])\n newFiles.splice(index, 0, addFiles)\n } else {\n newFiles = this.files.concat(addFiles)\n }\n\n this.files = newFiles\n\n // 定位\n for (let i = 0; i < addFiles.length; i++) {\n let file = addFiles[i]\n this.maps[file.id] = file\n }\n\n // 事件\n this.emitInput()\n for (let i = 0; i < addFiles.length; i++) {\n this.emitFile(addFiles[i], undefined)\n }\n\n return isArray ? addFiles : addFiles[0]\n },\n\n\n\n // 添加表单文件\n addInputFile(el) {\n let files = []\n if (el.files) {\n for (let i = 0; i < el.files.length; i++) {\n let 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,\n el\n })\n }\n } else {\n var names = el.value.replace(/\\\\/g, '/').split('/')\n files.push({\n name: names[names.length - 1],\n el,\n })\n }\n return this.add(files)\n },\n\n\n // 添加 DataTransfer\n addDataTransfer(dataTransfer) {\n let files = []\n if (dataTransfer.items && dataTransfer.items.length) {\n let items = []\n for (let i = 0; i < dataTransfer.items.length; i++) {\n let 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((resolve, reject) => {\n let forEach = (i) => {\n let item = items[i]\n // 结束 文件数量大于 最大数量\n if (!item || (this.maximum > 0 && files.length >= this.maximum)) {\n return resolve(this.add(files))\n }\n this.getEntry(item).then(function (results) {\n files.push(...results)\n forEach(i + 1)\n })\n }\n forEach(0)\n })\n }\n\n if (dataTransfer.files.length) {\n for (let i = 0; i < dataTransfer.files.length; i++) {\n files.push(dataTransfer.files[i])\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(entry, path = '') {\n return new Promise((resolve, reject) => {\n if (entry.isFile) {\n entry.file(function (file) {\n resolve([\n {\n size: file.size,\n name: path + file.name,\n type: file.type,\n file,\n }\n ])\n })\n } else if (entry.isDirectory && this.dropDirectory) {\n let files = []\n let dirReader = entry.createReader()\n let readEntries = () => {\n dirReader.readEntries((entries) => {\n let forEach = (i) => {\n if ((!entries[i] && i === 0) || (this.maximum > 0 && files.length >= this.maximum)) {\n return resolve(files)\n }\n if (!entries[i]) {\n return readEntries()\n }\n this.getEntry(entries[i], path + entry.name + '/').then((results) => {\n files.push(...results)\n forEach(i + 1)\n })\n }\n forEach(0)\n })\n }\n readEntries()\n } else {\n resolve([])\n }\n })\n },\n\n\n replace(id1, id2) {\n let file1 = this.get(id1)\n let file2 = this.get(id2)\n if (!file1 || !file2 || file1 === file2) {\n return false\n }\n let files = this.files.concat([])\n let index1 = files.indexOf(file1)\n let 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 remove(id) {\n let file = this.get(id)\n if (file) {\n if (this.emitFilter(undefined, file)) {\n return false\n }\n let files = this.files.concat([])\n let 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 update(id, data) {\n let file = this.get(id)\n if (file) {\n let newFile = {\n ...file,\n ...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 let files = this.files.concat([])\n let 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 // 预处理 事件 过滤器\n emitFilter(newFile, oldFile) {\n let isPrevent = false\n this.$emit('input-filter', newFile, oldFile, function () {\n isPrevent = true\n return isPrevent\n })\n return isPrevent\n },\n\n // 处理后 事件 分发\n 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 setTimeout(() => {\n this.upload(newFile).then(() => {\n // eslint-disable-next-line\n newFile = this.get(newFile)\n if (newFile && newFile.fileObject) {\n this.update(newFile, {\n active: false,\n success: !newFile.error\n })\n }\n }).catch((e) => {\n this.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\n emitInput() {\n this.$emit('input', this.files)\n },\n\n\n // 上传\n upload(id) {\n let 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 let extensions = this.extensions\n if (extensions && (extensions.length || typeof extensions.length === 'undefined')) {\n if (typeof extensions !== 'object' || !(extensions instanceof RegExp)) {\n if (typeof extensions === 'string') {\n extensions = extensions.split(',').map(value => value.trim()).filter(value => value)\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 * Whether this file should be uploaded using chunk upload or not\n *\n * @param Object file\n */\n shouldUseChunkUpload (file) {\n return this.chunkEnabled &&\n !!this.chunkOptions.handler &&\n file.size > this.chunkOptions.minSize\n },\n\n /**\n * Upload a file using Chunk method\n *\n * @param File file\n */\n uploadChunk (file) {\n const HandlerClass = this.chunkOptions.handler\n file.chunk = new HandlerClass(file, this.chunkOptions)\n\n return file.chunk.upload()\n },\n\n uploadPut(file) {\n let querys = []\n let value\n for (let 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 let queryString = querys.length ? (file.putAction.indexOf('?') === -1 ? '?' : '&') + querys.join('&') : ''\n let xhr = new XMLHttpRequest()\n xhr.open('PUT', file.putAction + queryString)\n return this.uploadXhr(xhr, file, file.file)\n },\n\n uploadHtml5(file) {\n let form = new window.FormData()\n let value\n for (let key in file.data) {\n value = file.data[key]\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 }\n form.append(this.name, file.file, file.file.filename || file.name)\n let xhr = new XMLHttpRequest()\n xhr.open('POST', file.postAction)\n return this.uploadXhr(xhr, file, form)\n },\n\n uploadXhr(xhr, _file, body) {\n let file = _file\n let speedTime = 0\n let speedLoaded = 0\n\n // 进度条\n xhr.upload.onprogress = (e) => {\n // 还未开始上传 已删除 未激活\n file = this.get(file)\n if (!e.lengthComputable || !file || !file.fileObject || !file.active) {\n return\n }\n\n // 进度 速度 每秒更新一次\n let speedTime2 = Math.round(Date.now() / 1000)\n if (speedTime2 === speedTime) {\n return\n }\n speedTime = speedTime2\n\n file = this.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 let interval = setInterval(() => {\n file = this.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 }\n }, 100)\n\n return new Promise((resolve, reject) => {\n let complete\n let 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 = this.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 // 已完成 直接相应\n if (file.success) {\n return resolve(file)\n }\n\n let 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 let 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 = this.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 (let key in file.headers) {\n xhr.setRequestHeader(key, file.headers[key])\n }\n\n // 更新 xhr\n file = this.update(file, { xhr })\n\n // 开始上传\n xhr.send(body)\n })\n },\n\n\n\n\n uploadHtml4(_file) {\n let file = _file\n let onKeydown = function (e) {\n if (e.keyCode === 27) {\n e.preventDefault()\n }\n }\n\n let 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\n let form = document.createElement('form')\n\n form.action = file.postAction\n\n form.name = 'upload-form-' + file.id\n\n\n form.setAttribute('method', 'POST')\n form.setAttribute('target', 'upload-iframe-' + file.id)\n form.setAttribute('enctype', 'multipart/form-data')\n\n let value\n let input\n for (let key in file.data) {\n value = file.data[key]\n if (value && 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\n\n\n let getResponseData = function () {\n let doc\n try {\n if (iframe.contentWindow) {\n doc = iframe.contentWindow.document\n }\n } catch (err) {\n }\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\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n file = this.update(file, { iframe })\n\n // 不存在\n if (!file) {\n return reject('not_exists')\n }\n\n // 定时检查\n let interval = setInterval(() => {\n file = this.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\n let complete\n let fn = (e) => {\n // 已经处理过了\n if (complete) {\n return\n }\n complete = true\n\n\n if (interval) {\n clearInterval(interval)\n interval = false\n }\n\n // 关闭 esc 事件\n document.body.removeEventListener('keydown', onKeydown)\n\n file = this.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 let response = getResponseData()\n let 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 }\n data.response = response\n }\n\n // 更新\n file = this.update(file, data)\n\n if (file.error) {\n return reject(file.error)\n }\n\n // 响应\n return resolve(file)\n }\n\n\n // 添加事件\n iframe.onload = fn\n iframe.onerror = fn\n iframe.onabort = fn\n\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\n\n\n watchActive(active) {\n let file\n let index = 0\n while ((file = this.files[index])) {\n index++\n if (!file.fileObject) {\n // 不是文件对象\n } 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\n\n watchDrop(_el) {\n let 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\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\n\n onDragenter(e) {\n e.preventDefault()\n if (!this.dropActive) {\n this.dropActive = true\n }\n },\n\n onDragleave(e) {\n e.preventDefault()\n if (e.target.nodeName === 'HTML' || e.target === e.explicitOriginalTarget || (e.screenX === 0 && e.screenY === 0 && !e.fromElement && e.offsetX <= 0)) {\n this.dropActive = false\n }\n },\n\n onDragover(e) {\n e.preventDefault()\n },\n\n onDocumentDrop() {\n this.dropActive = false\n },\n\n onDrop(e) {\n e.preventDefault()\n this.addDataTransfer(e.dataTransfer)\n },\n }\n}\n","module.exports = require('./FileUpload.vue')\n"],"names":["createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","Object","keys","forEach","setRequestHeader","key","sendRequest","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","sendFormRequest","data","FormData","name","append","ChunkUploadHandler","file","chunks","start","end","chunkSize","fileSize","push","blob","slice","startOffset","active","retries","maxRetries","progress","stopChunks","chunksUploading","chunk","abort","startChunking","promise","request","assign","action","startBody","phase","mime_type","fileType","size","fileName","then","res","sessionId","session_id","end_offset","createChunks","catch","i","maxActiveChunks","uploadNextChunk","hasChunksToUpload","uploadChunk","chunksToUpload","length","finish","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","uploadBody","start_offset","uploaded","finishBody","parseInt","maxActive","type","completedProgress","chunksUploaded","uploadingProgress","reduce","min","filter","methods","change","e","$destroy","$parent","addInputFile","target","constructor","parent","el","$el","CHUNK_DEFAULT_OPTIONS","minSize","handler","ChunkUploadDefaultHandler","components","InputFile","props","inputId","String","default","accept","capture","multiple","Boolean","maximum","Number","addIndex","directory","postAction","putAction","customAction","Function","timeout","drop","dropDirectory","extensions","Array","value","thread","chunkEnabled","files","features","html5","drag","dropActive","uploading","destroy","mounted","input","document","createElement","window","webkitdirectory","ondrop","maps","$nextTick","$forceUpdate","watchDrop","beforeDestroy","computed","fileObject","error","success","chunkOptions","className","undefined","watch","watchActive","oldMaps","id","newFile","oldFile","emitFile","clear","emitInput","get","add","_files","index","isArray","addFiles","Blob","webkitRelativePath","relativePath","Element","speed","random","toString","substr","emitFilter","newFiles","concat","splice","names","replace","split","addDataTransfer","dataTransfer","items","item","getAsEntry","getAsFile","webkitGetAsEntry","getEntry","results","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","setInterval","clearInterval","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","$root","nodeName","explicitOriginalTarget","screenX","screenY","fromElement","offsetX","require$$0"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vue-upload-component.part.js","sources":["../src/utils/request.js","../src/chunk/ChunkUploadHandler.js","../src/InputFile.vue","../src/FileUpload.vue","../src/index.js"],"sourcesContent":["/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const 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(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 */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\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 = () => reject(xhr.response)\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 */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\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 = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets the file size\n */\n get fileName () {\n return this.file.name\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\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 get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\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 get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.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 get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let 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 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 pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n 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 upload () {\n this.promise = new Promise((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 start () {\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(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\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 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 uploadChunk (chunk) {\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(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\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(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","\n\n","\n\n\n","module.exports = require('./FileUpload.vue')\n"],"names":["createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","Object","keys","forEach","setRequestHeader","key","sendRequest","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","sendFormRequest","data","FormData","name","append","ChunkUploadHandler","file","chunks","start","end","chunkSize","fileSize","push","blob","slice","startOffset","active","retries","maxRetries","progress","stopChunks","chunksUploading","chunk","abort","startChunking","promise","request","assign","action","startBody","phase","mime_type","fileType","size","fileName","then","res","sessionId","session_id","end_offset","createChunks","catch","i","maxActiveChunks","uploadNextChunk","hasChunksToUpload","uploadChunk","chunksToUpload","length","finish","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","uploadBody","start_offset","uploaded","finishBody","parseInt","maxActive","type","completedProgress","chunksUploaded","uploadingProgress","reduce","min","filter","require$$0"],"mappings":"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AAP;EAGD;;;;;;;;;;;;;;;;;;;;AC/HH;;;;;;;;;;;;GAAA;;;EAXY,2BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECmCZ;;;;;;;;GAAA;;AAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAA;;;EA7CY,+BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECHZ,UAAiBW,UAAjB;;;;;;;;"} \ No newline at end of file diff --git a/docs/dist/index.js b/docs/dist/index.js index c61fe67..07d5fbf 100644 --- a/docs/dist/index.js +++ b/docs/dist/index.js @@ -1,6 +1,6 @@ /*! * Name: vue-upload-component - * Version: 2.8.9 + * Version: 2.8.10 * Author: LianYue - */!function(e){var n={};function t(i){if(n[i])return n[i].exports;var a=n[i]={i:i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,t),a.l=!0,a.exports}t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="/dist",t(t.s=51)}([function(e,n,t){"use strict";function i(e,n,t,i,a,o,s,r){var l,u="function"==typeof e?e.options:e;if(n&&(u.render=n,u.staticRenderFns=t,u._compiled=!0),i&&(u.functional=!0),o&&(u._scopeId="data-v-"+o),s?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),a&&a.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},u._ssrRegister=l):a&&(l=r?function(){a.call(this,this.$root.$options.shadowRoot)}:a),l)if(u.functional){u._injectStyles=l;var d=u.render;u.render=function(e,n){return l.call(n),d(e,n)}}else{var p=u.beforeCreate;u.beforeCreate=p?[].concat(p,l):[l]}return{exports:e,options:u}}t.d(n,"a",function(){return i})},function(e,n,t){e.exports=t(26)},function(e,n,t){"use strict";t.r(n),t.d(n,"default",function(){return h});var i=t(19),a=t.n(i),o="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!o)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var s={},r=o&&(document.head||document.getElementsByTagName("head")[0]),l=null,u=0,d=!1,p=function(){},c=null,f="data-vue-ssr-id",m="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function h(e,n,t,i){d=t,c=i||{};var o=a()(e,n);return v(o),function(n){for(var t=[],i=0;it.parts.length&&(i.parts.length=t.parts.length)}else{var o=[];for(a=0;a<\/script>\n\\n\\n\\n```\\n\\njsDelivr\\n\\n``` html\\n\\n\\n\\n```\\n\\n\\n### 简单的例子\\n\\n\\n\\n```html\\n\\n\\n\\n \\n Vue-upload-component Test\\n \\n \\n\\n\\n
\\n
    \\n
  • {{file.name}} - Error: {{file.error}}, Success: {{file.success}}
  • \\n
\\n \\n 上传文件\\n \\n \\n \\n
\\n\\n\\n\\n```\\n\\n\\n\\n### SSR (服务器同构)\\n\\n\\n```html\\n\\n\\n\\n```\\n\\n\\n** 或者 **\\n\\n\\n```js\\nimport FileUpload from 'vue-upload-component/src'\\n```\\n\\nwebpack.config.js\\n\\n```js\\nconst nodeExternals = require('webpack-node-externals');\\n{\\n //...\\n externals: [\\n nodeExternals({whitelist:[/^vue-upload-component\\\\/src/]})\\n ]\\n //...\\n}\\n```\\n\\n* [https://github.com/liady/webpack-node-externals](https://github.com/liady/webpack-node-externals) \\n\\n* [**`vue-hackernews` 演示**](https://github.com/lian-yue/vue-hackernews-2.0/) \\n\\n* [**浏览修改文件**](https://github.com/lian-yue/vue-hackernews-2.0/commit/bd6c58a30cc6b8ba6c0148e737b3ce9336b99cf8)\\n\\n\\n\\n\\n## 选项 / 属性\\n\\n\\n### input-id\\n\\ninput 标签的 `id` 属性\\n\\n* **类型:** `String`\\n\\n* **默认值:** `this.name`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### name\\n\\ninput标签的 `name` 属性\\n\\n* **类型:** `String`\\n\\n* **默认值:** `file`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### post-action\\n\\n`POST` 请求的上传URL\\n\\n* **类型:** `String`\\n\\n* **默认值:** `undefined`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### put-action\\n\\n`PUT` 请求的上传URL\\n\\n* **类型:** `String`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `> IE9`\\n\\n* **详细:** \\n\\n `put-action` 不为空请优先 `PUT` 请求 \\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n### custom-action\\n\\n自定义上传方法\\n\\n* **类型:** `async Function`\\n\\n* **默认值:** `undefined`\\n\\n* **详细:** \\n\\n `custom-action` 优先级高于 `put-action, post-action`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n ```js\\n async function customAction(file, component) {\\n // return await component.uploadPut(file)\\n return await component.uploadHtml4(file)\\n }\\n ```\\n\\n\\n\\n### headers\\n\\n自定义上传请求 `header` 数据\\n\\n* **类型:** `Object`\\n\\n* **默认值:** `{}`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### data\\n\\n`POST 请求`: 附加请求的 body \\n`PUT 请求`: 附加请求的 query \\n\\n* **类型:** `Object`\\n\\n* **默认值:** `{}`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### value, v-model\\n\\n文件列表\\n\\n* **类型:** `Array`\\n\\n* **默认值:** `[]`\\n\\n* **详细:** \\n\\n 浏览 **[`File`](#file)** 详细信息 \\n > 为了防止不可预知的错误,不可直接修改 `files`,请使用 [`add`](#实例-方法-add), [`update`](#实例-方法-update), [`remove`](#实例-方法-remove) 方法修改\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### accept\\n\\n表单的`accept`属性, MIME type \\n\\n* **类型:** `String`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### multiple\\n\\n文件表单的 `multiple` 属性 \\n是否允许选择多个文件 \\n\\n* **类型:** `Boolean`\\n\\n* **默认值:** `false`\\n\\n* **详细:** \\n\\n 如果是 `false` `files` 里面最多只有一个文件 多的会自动删除 \\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n### directory\\n\\n文件表单的 `directory` 属性 \\n是否是上传文件夹 \\n\\n* **类型:** `Boolean`\\n\\n* **默认值:** `false`\\n\\n* **浏览器:** [http://caniuse.com/#feat=input-file-directory](http://caniuse.com/#feat=input-file-directory)\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### extensions\\n\\n允许上传的文件后缀\\n\\n* **类型:** `Array | String | RegExp`\\n\\n* **默认值:** `undefined`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n \\n \\n ```\\n\\n\\n\\n\\n### size\\n\\n允许上传的最大字节\\n\\n* **类型:** `Number`\\n\\n* **默认值:** `0`\\n\\n* **浏览器:** `> IE9`\\n\\n* **详细:**\\n\\n `0` 等于不限制\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### timeout\\n\\n上传超时时间毫秒\\n\\n* **类型:** `Number`\\n\\n* **默认值:** `0`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n### maximum\\n\\n列表最大文件数\\n\\n* **类型:** `Number`\\n\\n* **默认值:** `props.multiple ? 0 : 1`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### thread\\n\\n同时并发上传的文件数量 线程数 \\n\\n* **类型:** `Number`\\n\\n* **默认值:** `1`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### drop\\n\\n拖拽上传 \\n\\n* **类型:** `Boolean | Element | CSS selector`\\n\\n* **默认值:** `false`\\n\\n* **浏览器:** [http://caniuse.com/#feat=dragndrop](http://caniuse.com/#feat=dragndrop)\\n\\n* **详细:**\\n\\n 如果设置成 `true` 则读取父组件作为容器 \\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### drop-directory\\n\\n是否开启拖拽目录 \\n\\n* **类型:** `Boolean`\\n\\n* **默认值:** `true`\\n\\n* **详细:**\\n\\n 如果设置成 `false` 则过滤掉目录\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n### add-index\\n\\n* **类型:** `Boolean, Number`\\n\\n* **默认值:** `undefined`\\n\\n* **版本:** `>= 2.6.1`\\n\\n* **详细:**\\n\\n [`add()`](#实例-方法-add) 方法 `index` 参数的默认值\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n## 选项 / 事件\\n\\n文件被改变触发的方法 \\n默认用于`v-model`绑定\\n\\n### @input\\n* **参数:**\\n\\n * `files: Array`\\n\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n### @input-filter\\n\\nAdd, update, remove pre-filter \\n\\n* **参数:**\\n\\n * `newFile: File | Object | undefined` `读写`\\n * `oldFile: File | Object | undefined` `只读`\\n * `prevent: Function` 调用该方法 阻止修改\\n\\n\\n* **详细:**\\n\\n 如果 `newFile` 值为 `undefined` 则是删除 \\n 如果 `oldFile` 值为 `undefined` 则是添加 \\n 如果 `newFile`, `oldFile` 都存在则是更新\\n\\n > 事件内同步处理请直接修改 `newFile` \\n > 事件内异步处理请使用 `update`, `add`, `remove`, `clear` 方法 \\n > 异步请先设置一个错误以防止被上传\\n\\n > 同步不能使用 `update`, `add`, `remove`, `clear` 方法 \\n > 异步不能修改 `newFile`\\n\\n\\n* **示例:** \\n ```html\\n \\n \\n ```\\n\\n### @input-file\\n\\n添加,更新,移除 后\\n\\n* **参数:**\\n\\n * `newFile: File | Object | undefined` `只读`\\n * `oldFile: File | Object | undefined` `只读`\\n\\n\\n* **详细:**\\n\\n 如果 `newFile` 值为 `undefined` 则是删除 \\n 如果 `oldFile` 值为 `undefined` 则是添加 \\n 如果 `newFile`, `oldFile` 都存在则是更新\\n\\n >事件内可使用 `update`, `add`, `remove`, `clear` 方法 \\n >事件内不可修改 `newFile` 对象 \\n >事件内不可修改 `oldFile` 对象\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n## 实例 / 数据\\n\\n### features\\n\\n用于判断浏览器支持的特性\\n\\n* **类型:** `Object`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `{ html5: true, directory: false, drag: false }`\\n\\n* **示例:**\\n ```html\\n \\n \\n 支持拖拽上传\\n 支持文件夹上传\\n 支持HTML5\\n \\n ```\\n\\n\\n\\n### active\\n\\n激活或停止上传\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `false`\\n\\n* **示例:**\\n ```html\\n \\n \\n 开始上传\\n 停止上传\\n \\n ```\\n\\n\\n\\n### dropActive\\n\\n是否正在拖拽\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `false`\\n\\n* **示例:**\\n ```html\\n \\n \\n 拖拽到这里上传\\n \\n ```\\n\\n\\n\\n\\n\\n### uploaded\\n\\n是否全部已上传\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `true`\\n\\n* **示例:**\\n ```html\\n \\n \\n 全部文件已上传完毕\\n \\n ```\\n\\n\\n\\n\\n\\n## 实例 / 方法\\n\\n\\n\\n### get()\\n\\n使用`id`获得某个对象\\n\\n* **参数:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **结果:** `File | Object | Boolean` 存在返回文件对象否则返回 `false`\\n\\n\\n\\n### add()\\n\\n添加一个或多个文件\\n\\n* **参数:**\\n\\n * `files: Array | File | window.File | Object` 如果它是一个数组的响应将是一个数组\\n * `index: Number | Boolean` = [`props.add-index`](#选项-属性-add-index) `true = ` 开始位置, `false = ` 结束位置, `Number = ` 下标位置\\n\\n\\n* **结果:** `Object | Array | Boolean` 传入的是数组返回数组否则对象或`false`\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n### addInputFile()\\n\\n把``选择的文件添加进上传列表 \\n\\n* **参数:**\\n\\n * `el: HTMLInputElement` 文件元素\\n\\n\\n* **结果:** `Array` 返回已添加的文件列表\\n\\n* **版本:** : `>=2.5.1`\\n\\n\\n\\n### addDataTransfer()\\n\\n把拖拽或者粘贴的数据的文件添加进上传列表 \\n\\n* **参数:**\\n\\n * `dataTransfer: DataTransfer` 拖拽或者粘贴的数据\\n\\n\\n* **结果:** `Promise>` 返回已添加的文件列表\\n\\n\\n* **版本:** : `>=2.5.1`\\n\\n\\n\\n### update()\\n\\n更新某个对象\\n\\n* **参数:**\\n\\n * `id: File | Object | String`\\n * `data: Object` 更新的数据对象\\n\\n\\n* **结果:** `Object | Boolean` 成功返回 `newFile` 失败返回 `false`\\n\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n### remove()\\n\\n移除某个文件对象\\n\\n* **参数:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **结果:** `Object | Boolean` 成功返回 `oldFile` 失败返回 `false`\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n### replace()\\n 替换两个文件的位置\\n\\n* **参数:**\\n\\n * `id1: File | Object | String`\\n * `id2: File | Object | String`\\n\\n\\n* **结果:** `Boolean`\\n\\n\\n\\n### clear()\\n\\n清空文件列表\\n\\n* **结果:** `Boolean` 总是返回 `true`\\n\\n\\n\\n## 实例 / File\\n\\n\\n> **文件对象在`input-filter`事件外修改请使用 [`update`](#实例-方法-update) 方法**\\n\\n\\n### fileObject\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `true`\\n\\n* **Required:** `true`\\n\\n* **默认值:** `true`\\n\\n* **版本:** : `>=2.6.0`\\n\\n* **详细:**\\n\\n 如果属性不存在,则不会在内部处理该对象 \\n 如果属性不存在,它不是 `File` 而是 `Object`\\n\\n\\n\\n### id\\n\\n文件id\\n\\n* **类型:** `String | Number`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `Math.random().toString(36).substr(2)`\\n\\n* **详细:**\\n\\n >`id` can not be repeated \\n >Upload can not modify `id`\\n\\n\\n### size\\n\\n文件大小\\n\\n* **类型:** `Number`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `-1`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n### name\\n\\n文件名 \\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** ` `\\n\\n* **详细:**\\n\\n 格式: `directory/filename.gif` `filename.gif` \\n\\n\\n\\n### type\\n\\nMIME类型\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** ` `\\n\\n* **浏览器:** `> IE9`\\n\\n* **详细:**\\n\\n 格式: `image/gif` `image/png` `text/html`\\n\\n\\n\\n\\n### active\\n\\n激活或终止上传\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `false`\\n\\n* **详细:**\\n\\n `true` = 上传 \\n `false` = 停止 \\n\\n\\n\\n\\n\\n\\n### error\\n\\n上传失败错误代码\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** ` `\\n\\n* **详细:**\\n\\n 内置\\n `size`, `extension`, `timeout`, `abort`, `network`, `server`, `denied`\\n\\n\\n\\n\\n### success\\n\\n是否上传成功\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `false`\\n\\n\\n### putAction\\n\\n自定义当前文件 `PUT` 地址\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.putAction`\\n\\n\\n\\n### postAction\\n\\n自定义当前文件 `POST` 地址\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.postAction`\\n\\n\\n\\n\\n### headers\\n\\n自定义当前文件 `HTTP` Header\\n\\n* **类型:** `Object`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.headers`\\n\\n\\n### data\\n\\n自定义当前文件 `body` 或 `query` 附加内容\\n\\n* **类型:** `Object`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.data`\\n\\n\\n### timeout\\n\\n自定义当前单个文件的上传超时时间\\n\\n* **类型:** `Number`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.timeout`\\n\\n\\n### response\\n\\n响应的数据\\n\\n* **类型:** `Object | String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `{}`\\n\\n\\n\\n\\n### progress\\n\\n上传进度\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `0.00`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n\\n### speed\\n\\n每秒的上传速度\\n\\n* **类型:** `Number`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `0`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n\\n\\n### xhr\\n\\n`HTML5` 上传 `XMLHttpRequest` 对象\\n\\n* **类型:** `XMLHttpRequest`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n\\n\\n### iframe\\n\\n`HTML4` 上传 `iframe` 元素\\n\\n* **类型:** `Element`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `= IE9`\\n\"","module.exports = \"\\n> **The document uses Google Translate**\\n\\n## Getting Started\\n\\n### NPM\\n\\n``` bash\\nnpm install vue-upload-component --save\\n```\\n\\n``` js\\nconst VueUploadComponent = require('vue-upload-component')\\nVue.component('file-upload', VueUploadComponent)\\n```\\n\\n### Curated\\n\\n**No data**\\n\\n\\n### Script\\n\\n\\nunpkg\\n\\n``` html\\n\\n\\n\\n```\\n\\njsDelivr\\n\\n``` html\\n\\n\\n\\n```\\n\\n\\n### Simple example\\n\\n\\n\\n```html\\n\\n\\n\\n \\n Vue-upload-component Test\\n \\n \\n\\n\\n
\\n
    \\n
  • {{file.name}} - Error: {{file.error}}, Success: {{file.success}}
  • \\n
\\n \\n Upload file\\n \\n \\n \\n
\\n\\n\\n\\n```\\n\\n### Chunk Upload\\n\\nThis package allows chunk uploads, which means you can upload a file in different parts.\\n\\nThis process is divided in three phases: start, upload,finish

\\n\\n#### start\\n\\nThis is the first phase of the process. We'll tell the backend that we are going to upload a file, with certain `size` and `mime_type`.\\n\\nUse the option `startBody` to add more parameters to the body of this request.\\n\\nThe backend should provide a `session_id` (to identify the upload) and a `end_offset` which is the size of every chunk\\n\\n#### upload\\n\\nIn this phase we'll upload every chunk until all of them are uploaded. This step allows some failures in the backend, and will retry up to `maxRetries` times.\\n\\nWe'll send the `session_id`, `start_offset` and `chunk` (the sliced blob - part of file we are uploading). We expect the backend to return `{ status: 'success' }`, we'll retry otherwise.\\n\\nUse the option `uploadBody` to add more parameters to the body of this request.\\n\\n#### finish\\n\\nIn this phase we tell the backend that there are no more chunks to upload, so it can wrap everything. We send the `session_id` in this phase.\\n\\nUse the option `finishBody` to add more parameters to the body of this request.\\n\\n#### Example\\n\\nIn the following example we are going to add `Chunk Upload Functionality`. This component will use `Chunk Upload` when the size of the file is > `1MB`, it will behave as the `Simple example` when the size of the file is lower.\\n\\n```html\\n \\n Upload file\\n \\n```\\n\\n#### Extending the handler\\n\\nWe are using the class `src/chunk/ChunkUploadHandler` class to implement this protocol. You can extend this class (or even create a different one from scratch) to implement your own way to communicat with the backend.\\n\\nThis class must implement a method called `upload` which **must** return a promise. This promise will be used by the `FileUpload` component to determinate whether the file was uploaded or failed.\\n\\nUse the `handler` parameter to use a different Handler\\n\\n```html\\n :chunk=\\\"{\\n action: '/upload/chunk',\\n minSize: 1048576,\\n maxActive: 3,\\n maxRetries: 5,\\n\\n handler: MyHandlerClass\\n }\\n```\\n\\n### SSR (Server isomorphism)\\n\\n\\n```html\\n\\n\\n\\n```\\n\\n\\n** OR **\\n\\n\\n```js\\nimport FileUpload from 'vue-upload-component/src'\\n```\\n\\n\\nwebpack.config.js\\n\\n```js\\nconst nodeExternals = require('webpack-node-externals');\\n{\\n //.....\\n externals: [\\n nodeExternals({whitelist:[/^vue-upload-component\\\\/src/]})\\n ]\\n //.....\\n}\\n```\\n\\n* [https://github.com/liady/webpack-node-externals](https://github.com/liady/webpack-node-externals)\\n\\n* [**`vue-hackernews` demo**](https://github.com/lian-yue/vue-hackernews-2.0/)\\n\\n* [**View changes**](https://github.com/lian-yue/vue-hackernews-2.0/commit/bd6c58a30cc6b8ba6c0148e737b3ce9336b99cf8)\\n\\n\\n\\n\\n## Options / Props\\n\\n\\n### input-id\\n\\nThe `id` attribute of the input tag\\n\\n* **Type:** `String`\\n\\n* **Default:** `this.name`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### name\\n\\nThe `name` attribute of the input tag\\n\\n* **Type:** `String`\\n\\n* **Default:** `file`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### post-action\\n\\n`POST` Request upload URL\\n\\n* **Type:** `String`\\n\\n* **Default:** `undefined`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### put-action\\n\\n`PUT` Request upload URL\\n\\n* **Type:** `String`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `> IE9`\\n\\n* **Details:**\\n\\n `put-action` is not empty Please give priority to` PUT` request\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### custom-action\\n\\nCustom upload method\\n\\n* **Type:** `async Function`\\n\\n* **Default:** `undefined`\\n\\n* **Details:** \\n\\n `custom-action` priority than `put-action, post-action`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n ```js\\n async function customAction(file, component) {\\n // return await component.uploadPut(file)\\n return await component.uploadHtml4(file)\\n }\\n ```\\n\\n\\n\\n\\n\\n### headers\\n\\nAttach `header` data\\n\\n* **Type:** `Object`\\n\\n* **Default:** `{}`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### data\\n\\n`POST request`: Append request `body`\\n`PUT request`: Append request `query`\\n\\n* **Type:** `Object`\\n\\n* **Default:** `{}`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### value, v-model\\n\\nFile List\\n\\n* **Type:** `Array`\\n\\n* **Default:** `[]`\\n\\n* **Details:**\\n\\n View **[`File`](#file)** details\\n > In order to prevent unpredictable errors, can not directly modify the `files`, please use [`add`](#instance-methods-add), [`update`](#instance-methods-update), [`remove`](#instance-methods-remove) method to modify\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### accept\\n\\nThe `accept` attribute of the input tag, MIME type\\n\\n* **Type:** `String`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### multiple\\n\\nThe `multiple` attribute of the input tag\\nWhether to allow multiple files to be selected\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `false`\\n\\n* **Details:**\\n\\n If it is `false` file inside only one file will be automatically deleted\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### directory\\n\\nThe `directory` attribute of the input tag\\nWhether it is a upload folder\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `false`\\n\\n* **Browser:** [http://caniuse.com/#feat=input-file-directory](http://caniuse.com/#feat=input-file-directory)\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### extensions\\n\\nAllow upload file extensions\\n\\n* **Type:** `Array | String | RegExp`\\n\\n* **Default:** `undefined`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n \\n \\n ```\\n\\n\\n\\n\\n### size\\n\\nAllow the maximum byte to upload\\n\\n* **Type:** `Number`\\n\\n* **Default:** `0`\\n\\n* **Browser:** `> IE9`\\n\\n* **Details:**\\n\\n `0` is equal to not limit\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### timeout\\n\\nUpload timeout time in milliseconds\\n\\n* **Type:** `Number`\\n\\n* **Default:** `0`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n### maximum\\n\\nList the maximum number of files\\n\\n* **Type:** `Number`\\n\\n* **Default:** `props.multiple ? 0 : 1`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### thread\\n\\nAlso upload the number of files at the same time (number of threads)\\n\\n* **Type:** `Number`\\n\\n* **Default:** `1`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n### chunk-enabled\\n\\nWhether chunk uploads is enabled or not\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### chunk\\n\\nAll the options to handle chunk uploads\\n\\n* **Type:** `Object`\\n\\n* **Default:**\\n```js\\n{\\n headers: {\\n 'Content-Type': 'application/json'\\n },\\n action: '',\\n minSize: 1048576,\\n maxActive: 3,\\n maxRetries: 5,\\n\\n // This is the default Handler implemented in this package\\n // you can use your own handler if your protocol is different\\n handler: ChunkUploadDefaultHandler\\n}\\n```\\n\\n### drop\\n\\nDrag and drop upload\\n\\n* **Type:** `Boolean | Element | CSS selector`\\n\\n* **Default:** `false`\\n\\n* **Browser:** [http://caniuse.com/#feat=dragndrop](http://caniuse.com/#feat=dragndrop)\\n\\n* **Details:**\\n\\n If set to `true`, read the parent component as a container\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### drop-directory\\n\\nWhether to open the drag directory\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `true`\\n\\n* **Details:**\\n\\n If set to `false` filter out the directory\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### add-index\\n\\n* **Type:** `Boolean, Number`\\n\\n* **Default:** `undefined`\\n\\n* **Version:** : `>=2.6.1`\\n\\n* **Details:**\\n\\n The default value of the `index` parameter for the [`add()`](#instance-methods-add) method\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n## Options / Events\\n\\nThe files is changed to trigger the method\\nDefault for `v-model` binding\\n\\n### @input\\n* **Arguments:**\\n\\n * `files: Array`\\n\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n### @input-filter\\n\\nAdd, update, remove pre-filter\\n\\n* **Arguments:**\\n\\n * `newFile: File | Object | undefined` `Read and write`\\n * `oldFile: File | Object | undefined` `Read only`\\n * `prevent: Function` Call this function to prevent modification\\n\\n\\n* **Details:**\\n\\n If the `newFile` value is `undefined` 'is deleted\\n If the `oldFile` value is `undefined` 'is added\\n If `newFile`, `oldFile` is exist, it is updated\\n\\n > Synchronization modify `newFile`\\n > Asynchronous Please use `update`,` add`, `remove`,` clear` method\\n > Asynchronous Please set an error first to prevent being uploaded\\n\\n > Synchronization can not use `update`,` add`, `remove`,` clear` methods\\n > Asynchronous can not modify `newFile`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### @input-file\\n\\nAdd, update, remove after\\n\\n* **Arguments:**\\n\\n * `newFile: File | Object | undefined` `Read only`\\n * `oldFile: File | Object | undefined` `Read only`\\n\\n\\n* **Details:**\\n\\n If the `newFile` value is `undefined` 'is deleted\\n If the `oldFile` value is `undefined` 'is added\\n If `newFile`, `oldFile` is exist, it is updated\\n\\n\\n >You can use `update`,` add`, `remove`,` clear` methods in the event\\n >You can not modify the `newFile` object in the event\\n >You can not modify the `oldFile` object in the event\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n## Instance / Data\\n\\n### features\\n\\nUsed to determine the browser support features\\n\\n* **Type:** `Object`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `{ html5: true, directory: false, drag: false }`\\n\\n* **Usage:**\\n ```html\\n \\n \\n Support drag and drop upload\\n Support folder upload\\n Support for HTML5\\n \\n ```\\n\\n\\n\\n### active\\n\\nActivation or abort upload\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n Start upload\\n Stop upload\\n \\n ```\\n\\n\\n\\n### dropActive\\n\\nIs dragging\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n Drag and drop here for upload\\n \\n ```\\n\\n\\n\\n\\n\\n### uploaded\\n\\nAll uploaded\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `true`\\n\\n* **Usage:**\\n ```html\\n \\n \\n All files have been uploaded\\n \\n ```\\n\\n\\n\\n\\n\\n## Instance / Methods\\n\\n\\n\\n### get()\\n\\nUse `id` to get a file object\\n\\n* **Arguments:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **Result:** `File | Object | Boolean` There is a return file, object that otherwise returns `false`\\n\\n\\n\\n### add()\\n\\nAdd one or more files\\n\\n* **Arguments:**\\n\\n * `files: Array | File | window.File | Object` If it is an array of responses will be an array\\n * `index: Number | Boolean` = [`props.add-index`](#options-props-add-index) `true = ` Start, `false = ` End, `Number = ` Index\\n\\n\\n* **Result:** `Object | Array | Boolean` The incoming array is returned to the array otherwise the object or `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n\\n### addInputFile()\\n\\nAdd the file selected by `` to the upload list\\n\\n* **Arguments:**\\n\\n * `el: HTMLInputElement` File element\\n\\n\\n* **Result:** `Array` Added list of files\\n\\n* **Version:** : `>=2.5.1`\\n\\n\\n\\n### addDataTransfer()\\n\\nAdd files that are dragged or pasted into the upload list\\n\\n* **Arguments:**\\n\\n * `dataTransfer: DataTransfer` Drag or paste data\\n\\n\\n* **Result:** `Promise>` Added list of files\\n\\n\\n* **Version:** : `>=2.5.1`\\n\\n\\n\\n### update()\\n\\nUpdate a file object\\n\\n* **Arguments:**\\n\\n * `id: File | Object | String`\\n * `data: Object` Updated data object\\n\\n\\n* **Result:** `Object | Boolean` Successfully returned `newFile` failed to return` false`\\n\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### remove()\\n\\nRemove a file object\\n\\n* **Arguments:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **Result:** `Object | Boolean` Successfully returned `oldFile` failed to return` false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### replace()\\n Replace the location of the two files\\n\\n* **Arguments:**\\n\\n * `id1: File | Object | String`\\n * `id2: File | Object | String`\\n\\n\\n* **Result:** `Boolean`\\n\\n\\n### clear()\\n\\nEmpty the file list\\n\\n* **Result:** `Boolean` Always return `true`\\n\\n\\n\\n## Instance / File\\n\\n\\n\\n> **File object in the `@input-filter` event outside the use of [`update`](#instance-methods-update) method**\\n\\n\\n\\n\\n### fileObject\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `true`\\n\\n* **Required:** `true`\\n\\n* **Default:** `true`\\n\\n* **Version:** : `>=2.6.0`\\n\\n* **Details:**\\n\\n If the attribute does not exist, the object will not be processed internally\\n If the attribute does not exist, it is not `File` but `Object`\\n\\n\\n\\n\\n### id\\n\\nFile ID\\n\\n* **Type:** `String | Number`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `Math.random().toString(36).substr(2)`\\n\\n* **Details:**\\n\\n >`id` can not be repeated\\n >Upload can not modify `id`\\n\\n\\n### size\\n\\nFile size\\n\\n* **Type:** `Number`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `-1`\\n\\n* **Browser:** `> IE9`\\n\\n\\n### name\\n\\nFilename\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** ` `\\n\\n* **Details:**\\n\\n Format: `directory/filename.gif` `filename.gif`\\n\\n\\n\\n### type\\n\\nMIME type\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** ` `\\n\\n* **Browser:** `> IE9`\\n\\n* **Details:**\\n\\n Format: `image/gif` `image/png` `text/html`\\n\\n\\n\\n\\n### active\\n\\nActivation or abort upload\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `false`\\n\\n* **Details:**\\n\\n `true` = Upload\\n `false` = Abort\\n\\n\\n\\n\\n\\n\\n### error\\n\\nUpload failed error code\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** ` `\\n\\n* **Details:**\\n\\n Built-in\\n `size`, `extension`, `timeout`, `abort`, `network`, `server`, `denied`\\n\\n\\n\\n\\n### success\\n\\nWhether the upload was successful\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `false`\\n\\n\\n### putAction\\n\\nCustomize the current file `PUT` URL\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.putAction`\\n\\n\\n\\n### postAction\\n\\nCustomize the current file `POST` URL\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.postAction`\\n\\n\\n\\n\\n### headers\\n\\nCustomize the current file `HTTP` Header\\n\\n* **Type:** `Object`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.headers`\\n\\n\\n### data\\n\\nCustomize the current file `body` or` query` to attach content\\n\\n* **Type:** `Object`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.data`\\n\\n\\n### timeout\\n\\nCustomize the upload timeout for a current single file\\n\\n* **Type:** `Number`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.timeout`\\n\\n\\n### response\\n\\nResponse data\\n\\n* **Type:** `Object | String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `{}`\\n\\n\\n\\n\\n### progress\\n\\nUpload progress\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `0.00`\\n\\n* **Browser:** `> IE9`\\n\\n\\n\\n### speed\\n\\nPer second upload speed\\n\\n* **Type:** `Number`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `0`\\n\\n* **Browser:** `> IE9`\\n\\n\\n\\n\\n### xhr\\n\\n`HTML5` upload` XMLHttpRequest` object\\n\\n* **Type:** `XMLHttpRequest`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `> IE9`\\n\\n\\n\\n\\n### iframe\\n\\n`HTML4` upload` iframe` element\\n\\n* **Type:** `Element`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `= IE9`\\n\"","module.exports = ImageCompressor;","module.exports = VueI18n;","module.exports = VueRouter;","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{class:_vm.className},[_vm._t(\"default\"),_vm._v(\" \"),_c('input-file')],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const 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(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 */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\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 = () => reject(xhr.response)\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 */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\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 = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets the file size\n */\n get fileName () {\n return this.file.name\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\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 get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\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 get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.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 get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let 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 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 pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n 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 upload () {\n this.promise = new Promise((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 start () {\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(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\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 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 uploadChunk (chunk) {\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(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\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(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","import mod from \"-!../node_modules/babel-loader/lib/index.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputFile.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputFile.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./InputFile.vue?vue&type=template&id=314920ae\"\nimport script from \"./InputFile.vue?vue&type=script&lang=js\"\nexport * from \"./InputFile.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {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,\"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}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../node_modules/babel-loader/lib/index.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FileUpload.vue?vue&type=template&id=e23cb532\"\nimport script from \"./FileUpload.vue?vue&type=script&lang=js\"\nexport * from \"./FileUpload.vue?vue&type=script&lang=js\"\nimport style0 from \"./FileUpload.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// import Vue from 'vue'\nimport Vuex from 'vuex'\n//\n// Vue.use(Vuex)\n\n\nconst state = {\n files: [],\n}\n\nconst mutations = {\n updateFiles(state, files) {\n state.files = files\n }\n}\nexport default new Vuex.Store({\n strict: true,\n state,\n mutations\n})\n","// import Vue from 'vue'\nimport VueI18n from 'vue-i18n'\nimport en from './en'\nimport zhCN from './zh-cn'\n\n// Vue.use(VueI18n)\n\nexport default new VueI18n({\n locale: 'en',\n messages: {\n 'zh-cn': zhCN,\n en,\n }\n})\n","export default {\n header: {\n logo: 'Vuejs',\n home: '首页',\n examples: '演示',\n documents: '文档',\n blog: 'Blog',\n locale: 'Language(语言)',\n issues: 'Issues',\n github: 'Github',\n },\n\n locale: {\n en: 'English',\n 'zh-cn': '中文(简体)',\n },\n\n document: {\n title: '文档',\n },\n\n\n example: {\n full: '完整例子',\n simple: '简单例子',\n avatar: '上传头像',\n drag: '拖拽上传',\n multiple: '多个实例',\n vuex: 'Vuex',\n }\n}\n","export default {\n header: {\n logo: 'Vuejs',\n home: 'Home',\n examples: 'Examples',\n documents: 'Documentation',\n blog: 'Blog',\n locale: 'Language(语言)',\n issues: 'Issues',\n github: 'Github',\n },\n\n locale: {\n en: 'English',\n 'zh-cn': '中文(简体)',\n },\n\n document: {\n title: 'Documentation',\n },\n\n example: {\n full: 'Full Example',\n simple: 'Simple',\n avatar: 'Upload avatar',\n drag: 'Drag and drop',\n multiple: 'Multiple instances',\n chunk: 'Chunk upload',\n vuex: 'Vuex',\n }\n}\n","import { render, staticRenderFns } from \"./Router.vue?vue&type=template&id=3075fd62\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-view')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=script&lang=js\"","\n\n\n","import { render, staticRenderFns } from \"./Document.vue?vue&type=template&id=61209807\"\nimport script from \"./Document.vue?vue&type=script&lang=js\"\nexport * from \"./Document.vue?vue&type=script&lang=js\"\nimport style0 from \"./Document.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"row flex-xl-nowrap\"},[_c('div',{staticClass:\"col-12 col-md-3 col-xl-2\",attrs:{\"id\":\"sidebar\"}},[_c('nav',{staticClass:\"collapse show\",attrs:{\"id\":\"sidebar-nav\"}},[_c('ul',{staticClass:\"nav\"},_vm._l((_vm.navs),function(group,index){return _c('li',{class:{'nav-item': true, active: (!_vm.$route.hash && !index) || _vm.$route.hash.indexOf(group.hash) === 1}},[_c('router-link',{class:{'nav-link': true, active: _vm.$route.hash.indexOf(group.hash) === 1},attrs:{\"active-class\":\"active\",\"to\":'#' + group.hash}},[_vm._v(_vm._s(group.name))]),_vm._v(\" \"),(group.children.length)?_c('ul',{staticClass:\"nav\"},_vm._l((group.children),function(child){return _c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":'#' + group.hash + '-' + child.hash}},[_vm._v(_vm._s(child.name))])],1)})):_vm._e()],1)}))])]),_vm._v(\" \"),_c('main',{staticClass:\"col-12 col-md-9 col-xl-10 py-md-3 pr-md-5 pl-md-5\",attrs:{\"id\":\"main\",\"role\":\"main\"}},[_c('h1',{staticClass:\"document-title\",attrs:{\"id\":\"document-title\"}},[_vm._v(_vm._s(_vm.$t('document.title')))]),_vm._v(\" \"),_c('div',{directives:[{name:\"markdown\",rawName:\"v-markdown\"}],staticClass:\"document-content\"},[_vm._v(_vm._s(_vm.document))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Example.vue?vue&type=template&id=02498012\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"row flex-xl-nowrap\"},[_c('div',{staticClass:\"col-12 col-md-3 col-xl-2\",attrs:{\"id\":\"sidebar\"}},[_c('nav',{staticClass:\"collapse show\",attrs:{\"id\":\"sidebar-nav\"}},[_c('ul',{staticClass:\"nav\"},[_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/full')}},[_vm._v(_vm._s(_vm.$t('example.full')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/simple')}},[_vm._v(_vm._s(_vm.$t('example.simple')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/avatar')}},[_vm._v(_vm._s(_vm.$t('example.avatar')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/drag')}},[_vm._v(_vm._s(_vm.$t('example.drag')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/multiple')}},[_vm._v(_vm._s(_vm.$t('example.multiple')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/chunk')}},[_vm._v(_vm._s(_vm.$t('example.chunk')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/vuex')}},[_vm._v(_vm._s(_vm.$t('example.vuex')))])],1)])])]),_vm._v(\" \"),_c('main',{staticClass:\"col-12 col-md-9 col-xl-10 py-md-3 pr-md-5 pl-md-5\",attrs:{\"id\":\"main\",\"role\":\"main\"}},[_c('router-view')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=script&lang=js\"","\n\n\n\n","import { render, staticRenderFns } from \"./Full.vue?vue&type=template&id=c2419f2a\"\nimport script from \"./Full.vue?vue&type=script&lang=js\"\nexport * from \"./Full.vue?vue&type=script&lang=js\"\nimport style0 from \"./Full.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-full\"},[_c('button',{staticClass:\"btn btn-danger float-right btn-is-option\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.isOption = !_vm.isOption}}},[_c('i',{staticClass:\"fa fa-cog\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Options\\n \")]),_vm._v(\" \"),_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Full Example\")]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$refs.upload && _vm.$refs.upload.dropActive),expression:\"$refs.upload && $refs.upload.dropActive\"}],staticClass:\"drop-active\"},[_c('h3',[_vm._v(\"Drop files to upload\")])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isOption),expression:\"!isOption\"}],staticClass:\"upload\"},[_c('div',{staticClass:\"table-responsive\"},[_c('table',{staticClass:\"table table-hover\"},[_vm._m(0),_vm._v(\" \"),_c('tbody',[(!_vm.files.length)?_c('tr',[_c('td',{attrs:{\"colspan\":\"7\"}},[_c('div',{staticClass:\"text-center p-5\"},[_vm._m(1),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-lg btn-primary\",attrs:{\"for\":_vm.name}},[_vm._v(\"Select Files\")])])])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.files),function(file,index){return _c('tr',{key:file.id},[_c('td',[_vm._v(_vm._s(index))]),_vm._v(\" \"),_c('td',[(file.thumb)?_c('img',{attrs:{\"src\":file.thumb,\"width\":\"40\",\"height\":\"auto\"}}):_c('span',[_vm._v(\"No Image\")])]),_vm._v(\" \"),_c('td',[_c('div',{staticClass:\"filename\"},[_vm._v(\"\\n \"+_vm._s(file.name)+\"\\n \")]),_vm._v(\" \"),(file.active || file.progress !== '0.00')?_c('div',{staticClass:\"progress\"},[_c('div',{class:{'progress-bar': true, 'progress-bar-striped': true, 'bg-danger': file.error, 'progress-bar-animated': file.active},style:({width: file.progress + '%'}),attrs:{\"role\":\"progressbar\"}},[_vm._v(_vm._s(file.progress)+\"%\")])]):_vm._e()]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.speed)))]),_vm._v(\" \"),(file.error)?_c('td',[_vm._v(_vm._s(file.error))]):(file.success)?_c('td',[_vm._v(\"success\")]):(file.active)?_c('td',[_vm._v(\"active\")]):_c('td'),_vm._v(\" \"),_c('td',[_c('div',{staticClass:\"btn-group\"},[_c('button',{staticClass:\"btn btn-secondary btn-sm dropdown-toggle\",attrs:{\"type\":\"button\"}},[_vm._v(\"\\n Action\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-menu\"},[_c('a',{class:{'dropdown-item': true, disabled: file.active || file.success || file.error === 'compressing'},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();file.active || file.success || file.error === 'compressing' ? false : _vm.onEditFileShow(file)}}},[_vm._v(\"Edit\")]),_vm._v(\" \"),_c('a',{class:{'dropdown-item': true, disabled: !file.active},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();file.active ? _vm.$refs.upload.update(file, {error: 'cancel'}) : false}}},[_vm._v(\"Cancel\")]),_vm._v(\" \"),(file.active)?_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.update(file, {active: false})}}},[_vm._v(\"Abort\")]):(file.error && file.error !== 'compressing' && _vm.$refs.upload.features.html5)?_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.update(file, {active: true, error: '', progress: '0.00'})}}},[_vm._v(\"Retry upload\")]):_c('a',{class:{'dropdown-item': true, disabled: file.success || file.error === 'compressing'},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();file.success || file.error === 'compressing' ? false : _vm.$refs.upload.update(file, {active: true})}}},[_vm._v(\"Upload\")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\"}),_vm._v(\" \"),_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.remove(file)}}},[_vm._v(\"Remove\")])])])])])})],2)])]),_vm._v(\" \"),_c('div',{staticClass:\"example-foorer\"},[_c('div',{staticClass:\"footer-status float-right\"},[_vm._v(\"\\n Drop: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.drop : false)+\",\\n Active: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.active : false)+\",\\n Uploaded: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.uploaded : true)+\",\\n Drop active: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.dropActive : false)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"btn-group\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary dropdown-toggle\",attrs:{\"post-action\":_vm.postAction,\"put-action\":_vm.putAction,\"extensions\":_vm.extensions,\"accept\":_vm.accept,\"multiple\":_vm.multiple,\"directory\":_vm.directory,\"size\":_vm.size || 0,\"thread\":_vm.thread < 1 ? 1 : (_vm.thread > 5 ? 5 : _vm.thread),\"headers\":_vm.headers,\"data\":_vm.data,\"drop\":_vm.drop,\"drop-directory\":_vm.dropDirectory,\"add-index\":_vm.addIndex},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-menu\"},[_c('label',{staticClass:\"dropdown-item\",attrs:{\"for\":_vm.name}},[_vm._v(\"Add files\")]),_vm._v(\" \"),_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.onAddFolader}},[_vm._v(\"Add folder\")]),_vm._v(\" \"),_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.addData.show = true}}},[_vm._v(\"Add data\")])])],1),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isOption),expression:\"isOption\"}],staticClass:\"option\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"accept\"}},[_vm._v(\"Accept:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.accept),expression:\"accept\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"accept\"},domProps:{\"value\":(_vm.accept)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.accept=$event.target.value}}}),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Allow upload mime type\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"extensions\"}},[_vm._v(\"Extensions:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.extensions),expression:\"extensions\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"extensions\"},domProps:{\"value\":(_vm.extensions)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.extensions=$event.target.value}}}),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Allow upload file extension\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"PUT Upload:\")]),_vm._v(\" \"),_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.putAction),expression:\"putAction\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"radio\",\"name\":\"put-action\",\"id\":\"put-action\",\"value\":\"\"},domProps:{\"checked\":_vm._q(_vm.putAction,\"\")},on:{\"change\":function($event){_vm.putAction=\"\"}}}),_vm._v(\" Off\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.putAction),expression:\"putAction\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"radio\",\"name\":\"put-action\",\"id\":\"put-action\",\"value\":\"/upload/put\"},domProps:{\"checked\":_vm._q(_vm.putAction,\"/upload/put\")},on:{\"change\":function($event){_vm.putAction=\"/upload/put\"}}}),_vm._v(\" On\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"After the shutdown, use the POST method to upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"thread\"}},[_vm._v(\"Thread:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.thread),expression:\"thread\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"max\":\"5\",\"min\":\"1\",\"id\":\"thread\"},domProps:{\"value\":(_vm.thread)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.thread=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}}),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Also upload the number of files at the same time (number of threads)\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"size\"}},[_vm._v(\"Max size:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.size),expression:\"size\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"min\":\"0\",\"id\":\"size\"},domProps:{\"value\":(_vm.size)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.size=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"minSize\"}},[_vm._v(\"Min size:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.minSize),expression:\"minSize\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"min\":\"0\",\"id\":\"minSize\"},domProps:{\"value\":(_vm.minSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.minSize=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"autoCompress\"}},[_vm._v(\"Automatically compress:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.autoCompress),expression:\"autoCompress\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"min\":\"0\",\"id\":\"autoCompress\"},domProps:{\"value\":(_vm.autoCompress)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.autoCompress=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}}),_vm._v(\" \"),(_vm.autoCompress > 0)?_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"More than \"+_vm._s(_vm._f(\"formatSize\")(_vm.autoCompress))+\" files are automatically compressed\")]):_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Set up automatic compression\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addIndex),expression:\"addIndex\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"add-index\"},domProps:{\"checked\":Array.isArray(_vm.addIndex)?_vm._i(_vm.addIndex,null)>-1:(_vm.addIndex)},on:{\"change\":function($event){var $$a=_vm.addIndex,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.addIndex=$$a.concat([$$v]))}else{$$i>-1&&(_vm.addIndex=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.addIndex=$$c}}}}),_vm._v(\" Start position to add\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Add a file list to start the location to add\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.drop),expression:\"drop\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"drop\"},domProps:{\"checked\":Array.isArray(_vm.drop)?_vm._i(_vm.drop,null)>-1:(_vm.drop)},on:{\"change\":function($event){var $$a=_vm.drop,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.drop=$$a.concat([$$v]))}else{$$i>-1&&(_vm.drop=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.drop=$$c}}}}),_vm._v(\" Drop\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Drag and drop upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.dropDirectory),expression:\"dropDirectory\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"drop-directory\"},domProps:{\"checked\":Array.isArray(_vm.dropDirectory)?_vm._i(_vm.dropDirectory,null)>-1:(_vm.dropDirectory)},on:{\"change\":function($event){var $$a=_vm.dropDirectory,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.dropDirectory=$$a.concat([$$v]))}else{$$i>-1&&(_vm.dropDirectory=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.dropDirectory=$$c}}}}),_vm._v(\" Drop directory\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Not checked, filter the dragged folder\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.uploadAuto),expression:\"uploadAuto\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"upload-auto\"},domProps:{\"checked\":Array.isArray(_vm.uploadAuto)?_vm._i(_vm.uploadAuto,null)>-1:(_vm.uploadAuto)},on:{\"change\":function($event){var $$a=_vm.uploadAuto,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.uploadAuto=$$a.concat([$$v]))}else{$$i>-1&&(_vm.uploadAuto=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.uploadAuto=$$c}}}}),_vm._v(\" Auto start\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Automatically activate upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('button',{staticClass:\"btn btn-primary btn-lg btn-block\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.isOption = !_vm.isOption}}},[_vm._v(\"Confirm\")])])]),_vm._v(\" \"),_c('div',{class:{'modal-backdrop': true, 'fade': true, show: _vm.addData.show}}),_vm._v(\" \"),_c('div',{class:{modal: true, fade: true, show: _vm.addData.show},attrs:{\"id\":\"modal-add-data\",\"tabindex\":\"-1\",\"role\":\"dialog\"}},[_c('div',{staticClass:\"modal-dialog\",attrs:{\"role\":\"document\"}},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"modal-header\"},[_c('h5',{staticClass:\"modal-title\"},[_vm._v(\"Add data\")]),_vm._v(\" \"),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.addData.show = false}}},[_c('span',[_vm._v(\"×\")])])]),_vm._v(\" \"),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.onAddData($event)}}},[_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"name\"}},[_vm._v(\"Name:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addData.name),expression:\"addData.name\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"required\":\"\",\"id\":\"name\",\"placeholder\":\"Please enter a file name\"},domProps:{\"value\":(_vm.addData.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.addData, \"name\", $event.target.value)}}}),_vm._v(\" \"),_vm._m(2)]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"type\"}},[_vm._v(\"Type:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addData.type),expression:\"addData.type\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"required\":\"\",\"id\":\"type\",\"placeholder\":\"Please enter the MIME type\"},domProps:{\"value\":(_vm.addData.type)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.addData, \"type\", $event.target.value)}}}),_vm._v(\" \"),_vm._m(3)]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"content\"}},[_vm._v(\"Content:\")]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addData.content),expression:\"addData.content\"}],staticClass:\"form-control\",attrs:{\"required\":\"\",\"id\":\"content\",\"rows\":\"3\",\"placeholder\":\"Please enter the file contents\"},domProps:{\"value\":(_vm.addData.content)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.addData, \"content\", $event.target.value)}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"modal-footer\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.addData.show = false}}},[_vm._v(\"Close\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\"Save\")])])])])])]),_vm._v(\" \"),_c('div',{class:{'modal-backdrop': true, 'fade': true, show: _vm.editFile.show}}),_vm._v(\" \"),_c('div',{class:{modal: true, fade: true, show: _vm.editFile.show},attrs:{\"id\":\"modal-edit-file\",\"tabindex\":\"-1\",\"role\":\"dialog\"}},[_c('div',{staticClass:\"modal-dialog modal-lg\",attrs:{\"role\":\"document\"}},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"modal-header\"},[_c('h5',{staticClass:\"modal-title\"},[_vm._v(\"Edit file\")]),_vm._v(\" \"),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.editFile.show = false}}},[_c('span',[_vm._v(\"×\")])])]),_vm._v(\" \"),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.onEditorFile($event)}}},[_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"name\"}},[_vm._v(\"Name:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.editFile.name),expression:\"editFile.name\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"required\":\"\",\"id\":\"name\",\"placeholder\":\"Please enter a file name\"},domProps:{\"value\":(_vm.editFile.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.editFile, \"name\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.editFile.show && _vm.editFile.blob && _vm.editFile.type && _vm.editFile.type.substr(0, 6) === 'image/')?_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Image: \")]),_vm._v(\" \"),_c('div',{staticClass:\"edit-image\"},[_c('img',{ref:\"editImage\",attrs:{\"src\":_vm.editFile.blob}})]),_vm._v(\" \"),_c('div',{staticClass:\"edit-image-tool\"},[_c('div',{staticClass:\"btn-group\",attrs:{\"role\":\"group\"}},[_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.rotate(-90)\"},on:{\"click\":function($event){_vm.editFile.cropper.rotate(-90)}}},[_c('i',{staticClass:\"fa fa-undo\",attrs:{\"aria-hidden\":\"true\"}})]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.rotate(90)\"},on:{\"click\":function($event){_vm.editFile.cropper.rotate(90)}}},[_c('i',{staticClass:\"fa fa-repeat\",attrs:{\"aria-hidden\":\"true\"}})])]),_vm._v(\" \"),_c('div',{staticClass:\"btn-group\",attrs:{\"role\":\"group\"}},[_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.crop()\"},on:{\"click\":function($event){_vm.editFile.cropper.crop()}}},[_c('i',{staticClass:\"fa fa-check\",attrs:{\"aria-hidden\":\"true\"}})]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.clear()\"},on:{\"click\":function($event){_vm.editFile.cropper.clear()}}},[_c('i',{staticClass:\"fa fa-remove\",attrs:{\"aria-hidden\":\"true\"}})])])])]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"modal-footer\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.editFile.show = false}}},[_vm._v(\"Close\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\"Save\")])])])])])]),_vm._v(\" \"),_vm._m(4)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"#\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Thumb\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Name\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Size\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Speed\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Status\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Action\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',[_vm._v(\"Drop files anywhere to upload\"),_c('br'),_vm._v(\"or\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Such as \"),_c('code',[_vm._v(\"filename.txt\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Such as \"),_c('code',[_vm._v(\"text/plain\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Full.vue\"}},[_vm._v(\"/docs/views/examples/Full.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=script&lang=js\"","\n\n\n\n","import { render, staticRenderFns } from \"./Simple.vue?vue&type=template&id=3576474f\"\nimport script from \"./Simple.vue?vue&type=script&lang=js\"\nexport * from \"./Simple.vue?vue&type=script&lang=js\"\nimport style0 from \"./Simple.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-simple\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Simple Example\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"multiple\":true,\"size\":1024 * 1024 * 10},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Simple.vue\"}},[_vm._v(\"/docs/views/examples/Simple.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=script&lang=js\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Avatar.vue?vue&type=template&id=7343c9e0\"\nimport script from \"./Avatar.vue?vue&type=script&lang=js\"\nexport * from \"./Avatar.vue?vue&type=script&lang=js\"\nimport style0 from \"./Avatar.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-avatar\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$refs.upload && _vm.$refs.upload.dropActive),expression:\"$refs.upload && $refs.upload.dropActive\"}],staticClass:\"drop-active\"},[_c('h3',[_vm._v(\"Drop files to upload\")])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.edit),expression:\"!edit\"}],staticClass:\"avatar-upload\"},[_c('div',{staticClass:\"text-center p-2\"},[_c('label',{attrs:{\"for\":\"avatar\"}},[_c('img',{staticClass:\"rounded-circle\",attrs:{\"src\":_vm.files.length ? _vm.files[0].url : 'https://www.gravatar.com/avatar/default?s=200&r=pg&d=mm'}}),_vm._v(\" \"),_vm._m(0)])]),_vm._v(\" \"),_c('div',{staticClass:\"text-center p-2\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"name\":\"avatar\",\"post-action\":\"/upload/post\",\"drop\":!_vm.edit},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_vm._v(\"\\n Upload avatar\\n \")])],1)]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.files.length && _vm.edit),expression:\"files.length && edit\"}],staticClass:\"avatar-edit\"},[(_vm.files.length)?_c('div',{staticClass:\"avatar-edit-image\"},[_c('img',{ref:\"editImage\",attrs:{\"src\":_vm.files[0].url}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text-center p-4\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$refs.upload.clear($event)}}},[_vm._v(\"Cancel\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"submit\"},on:{\"click\":function($event){$event.preventDefault();return _vm.editSave($event)}}},[_vm._v(\"Save\")])])]),_vm._v(\" \"),_vm._m(1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',{staticClass:\"pt-2\"},[_vm._v(\"or\"),_c('br'),_vm._v(\"Drop files anywhere to upload\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Avatar.vue\"}},[_vm._v(\"/docs/views/examples/Avatar.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=script&lang=js\"","\n\n\n\n","import { render, staticRenderFns } from \"./Drag.vue?vue&type=template&id=78f5a515\"\nimport script from \"./Drag.vue?vue&type=script&lang=js\"\nexport * from \"./Drag.vue?vue&type=script&lang=js\"\nimport style0 from \"./Drag.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-drag\"},[_c('div',{staticClass:\"upload\"},[(_vm.files.length)?_c('ul',_vm._l((_vm.files),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})):_c('ul',[_vm._m(0)]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$refs.upload && _vm.$refs.upload.dropActive),expression:\"$refs.upload && $refs.upload.dropActive\"}],staticClass:\"drop-active\"},[_c('h3',[_vm._v(\"Drop files to upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"multiple\":true,\"drop\":true,\"drop-directory\":true},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',{attrs:{\"colspan\":\"7\"}},[_c('div',{staticClass:\"text-center p-5\"},[_c('h4',[_vm._v(\"Drop files anywhere to upload\"),_c('br'),_vm._v(\"or\")]),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-lg btn-primary\",attrs:{\"for\":\"file\"}},[_vm._v(\"Select Files\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Drag.vue\"}},[_vm._v(\"/docs/views/examples/Drag.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=script&lang=js\"","\n\n\n\n","import { render, staticRenderFns } from \"./Multiple.vue?vue&type=template&id=3d82a174\"\nimport script from \"./Multiple.vue?vue&type=script&lang=js\"\nexport * from \"./Multiple.vue?vue&type=script&lang=js\"\nimport style0 from \"./Multiple.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-multiple\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Multiple instances\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files1),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload1\",staticClass:\"btn btn-primary\",attrs:{\"input-id\":\"file1\",\"post-action\":\"/upload/post\"},model:{value:(_vm.files1),callback:function ($$v) {_vm.files1=$$v},expression:\"files1\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-primary\",attrs:{\"for\":\"file1\"}},[_vm._v(\"Label Select files\")]),_vm._v(\" \"),(!_vm.$refs.upload1 || !_vm.$refs.upload1.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload1.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload1.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files2),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload2\",staticClass:\"btn btn-primary\",attrs:{\"input-id\":\"file2\",\"post-action\":\"/upload/post\"},model:{value:(_vm.files2),callback:function ($$v) {_vm.files2=$$v},expression:\"files2\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-primary\",attrs:{\"for\":\"file2\"}},[_vm._v(\"Label Select files\")]),_vm._v(\" \"),(!_vm.$refs.upload2 || !_vm.$refs.upload2.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload2.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload2.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Multiple.vue\"}},[_vm._v(\"/docs/views/examples/Multiple.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","import { render, staticRenderFns } from \"./Chunk.vue?vue&type=template&id=c205936e&scoped=true\"\nimport script from \"./Chunk.vue?vue&type=script&lang=js\"\nexport * from \"./Chunk.vue?vue&type=script&lang=js\"\nimport style0 from \"./Chunk.vue?vue&type=style&index=0&lang=css\"\nimport style1 from \"./Chunk.vue?vue&type=style&index=1&id=c205936e&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c205936e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-simple\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Chunk Upload Example\")]),_vm._v(\" \"),_c('p',[_vm._v(\"When using chunk uploads, the file will be uploaded in different parts (or chunks). All the files with a size higher than the set in the input will be uploaded using this method.\")]),_vm._v(\" \"),_vm._m(0),_vm._v(\" \"),_c('p',[_vm._v(\"You can also pause / resume the upload process.\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('div',{staticClass:\"form-horizontal\"},[_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"col-sm-offset-2 col-sm-10\"},[_c('div',{staticClass:\"checkbox\"},[_c('label',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkEnabled),expression:\"chunkEnabled\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.chunkEnabled)?_vm._i(_vm.chunkEnabled,null)>-1:(_vm.chunkEnabled)},on:{\"change\":function($event){var $$a=_vm.chunkEnabled,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.chunkEnabled=$$a.concat([$$v]))}else{$$i>-1&&(_vm.chunkEnabled=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.chunkEnabled=$$c}}}}),_vm._v(\" Use chunk upload\\n \")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"inputMinSize\"}},[_vm._v(\"Min Size\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10\"},[_c('div',{staticClass:\"input-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkMinSize),expression:\"chunkMinSize\"}],staticClass:\"form-control\",attrs:{\"id\":\"inputMinSize\",\"type\":\"number\"},domProps:{\"value\":(_vm.chunkMinSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.chunkMinSize=$event.target.value}}}),_vm._v(\" \"),_c('span',{staticClass:\"input-group-addon\"},[_vm._v(\"MB\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"inputMaxActive\"}},[_vm._v(\"Max Active Chunks\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkMaxActive),expression:\"chunkMaxActive\"}],staticClass:\"form-control\",attrs:{\"id\":\"inputMaxActive\",\"type\":\"number\"},domProps:{\"value\":(_vm.chunkMaxActive)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.chunkMaxActive=$event.target.value}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"inputMaxRetries\"}},[_vm._v(\"Max Chunk Retries\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkMaxRetries),expression:\"chunkMaxRetries\"}],staticClass:\"form-control\",attrs:{\"id\":\"inputMaxRetries\",\"type\":\"number\"},domProps:{\"value\":(_vm.chunkMaxRetries)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.chunkMaxRetries=$event.target.value}}})])])]),_vm._v(\" \"),_c('table',{staticClass:\"table table-striped table-condensed\"},[_vm._m(1),_vm._v(\" \"),_c('tbody',[_vm._l((_vm.files),function(file){return [_c('tr',{key:file.id + '-info'},[_c('td',[_vm._v(_vm._s(file.name))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.progress)+\"%\")]),_vm._v(\" \"),(file.error)?_c('td',[_vm._v(_vm._s(file.error))]):(file.success)?_c('td',[_vm._v(\"Success\")]):(file.active)?_c('td',[_vm._v(\"Active\")]):_c('td',[_vm._v(\" - \")]),_vm._v(\" \"),_c('td',[(file.chunk)?[(file.active)?_c('button',{staticClass:\"btn btn-sm btn-danger\",on:{\"click\":function($event){file.chunk.pause()}}},[_c('i',{staticClass:\"fa fa-pause\"})]):_vm._e(),_vm._v(\" \"),(!file.active && file.chunk.hasChunksToUpload)?_c('button',{staticClass:\"btn btn-sm btn-primary\",on:{\"click\":function($event){file.chunk.resume()}}},[_c('i',{staticClass:\"fa fa-play\"})]):_vm._e()]:_vm._e()],2),_vm._v(\" \"),(file.chunk)?[_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.chunk.chunks.length))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.chunk.chunksUploading.length))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.chunk.chunksUploaded.length))])]:[_c('td',{staticClass:\"text-right\"},[_vm._v(\" - \")]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(\" - \")]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(\" - \")])]],2),_vm._v(\" \"),_c('tr',{key:file.id + '-loading'},[_c('td',{attrs:{\"colspan\":\"8\"}},[(file.chunk)?_c('div',{staticClass:\"chunk-loading\"},_vm._l((file.chunk.chunks),function(chunk,index){return _c('span',{key:index,staticClass:\"chunk-loading-part\",class:{'chunk-loading-part__uploaded': chunk.uploaded}},[(chunk.retries != file.chunk.maxRetries)?[_vm._v(\"\\n \"+_vm._s(file.chunk.maxRetries - chunk.retries)+\" error(s)\\n \")]:_vm._e()],2)})):_vm._e()])])]})],2)]),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"chunk-enabled\":_vm.chunkEnabled,\"chunk\":{\n action: '/upload/chunk',\n minSize: _vm.chunkMinSize * 1048576,\n maxActive: _vm.chunkMaxActive,\n maxRetries: _vm.chunkMaxRetries\n },\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"multiple\":true,\"size\":1024 * 1024 * 10},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")])],1)]),_vm._v(\" \"),_vm._m(2)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"You will be able to see the different parts being uploaded individually. Some parts might fail, and the package is prepared to \"),_c('em',[_vm._v(\"retry\")]),_vm._v(\" up to a certain amount of times.\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',{staticClass:\"thead-dark\"},[_c('tr',[_c('th',[_vm._v(\"Name\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Size\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Progress\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Status\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Pause\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-center\",attrs:{\"colspan\":\"3\"}},[_vm._v(\"Chunks\")])]),_vm._v(\" \"),_c('tr',[_c('th',{attrs:{\"colspan\":\"5\"}}),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Total\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Active\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Completed\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Chunk.vue\"}},[_vm._v(\"/docs/views/examples/Chunk.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=script&lang=js\"","\n\n\n\n","// import Vue from 'vue'\nimport VueRouter from 'vue-router'\n\nimport i18n from './i18n'\nimport RouterComponent from './views/Router'\nimport DocumentComponent from './views/Document'\nimport ExampleComponent from './views/Example'\n\nimport FullExampleComponent from './views/examples/Full'\nimport SimpleExampleComponent from './views/examples/Simple'\nimport AvatarExampleComponent from './views/examples/Avatar'\nimport DragExampleComponent from './views/examples/Drag'\nimport MultipleExampleComponent from './views/examples/Multiple'\nimport ChunkExampleComponent from './views/examples/Chunk'\nimport VuexExampleComponent from './views/examples/Vuex'\n\n\n\n// Vue.use(VueRouter)\n\n\nlet examples = [\n {\n path: '',\n component: FullExampleComponent,\n },\n {\n path: 'full',\n component: FullExampleComponent,\n },\n {\n path: 'simple',\n component: SimpleExampleComponent,\n },\n {\n path: 'avatar',\n component: AvatarExampleComponent,\n },\n {\n path: 'drag',\n component: DragExampleComponent,\n },\n {\n path: 'multiple',\n component: MultipleExampleComponent,\n },\n {\n path: 'chunk',\n component: ChunkExampleComponent,\n },\n {\n path: 'vuex',\n component: VuexExampleComponent,\n },\n]\n\n\n\nconst router = new VueRouter({\n mode: 'hash',\n fallback: false,\n scrollBehavior(to, from, savedPosition) {\n if (savedPosition) {\n return savedPosition\n } else if (to.hash) {\n let el = document.querySelector(to.hash)\n return { x: 0, y: el ? el.offsetTop : 0 }\n } else {\n return { x: 0, y: 0 }\n }\n },\n routes: [\n {\n path: '/:locale(' + Object.keys(i18n.messages).join('|') + ')?',\n component: RouterComponent,\n children: [\n {\n path: 'documents',\n component: DocumentComponent,\n },\n {\n path: 'examples',\n component: ExampleComponent,\n children: examples,\n },\n {\n path: '',\n component: ExampleComponent,\n children: examples,\n },\n ]\n },\n ]\n})\nexport default router\n","import { render, staticRenderFns } from \"./Vuex.vue?vue&type=template&id=765a8e49\"\nimport script from \"./Vuex.vue?vue&type=script&lang=js\"\nexport * from \"./Vuex.vue?vue&type=script&lang=js\"\nimport style0 from \"./Vuex.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-vuex\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Vuex Example\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"multiple\":true,\"size\":1024 * 1024 * 10,\"value\":_vm.files},on:{\"input\":_vm.inputUpdate}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Vuex.vue\"}},[_vm._v(\"/docs/views/examples/Vuex.vue\")]),_vm._v(\", \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/store.js\"}},[_vm._v(\"/docs/store.js\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","\n\n\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=521aa91e\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('header',{staticClass:\"navbar navbar-expand-lg navbar-dark bg-dark\",attrs:{\"id\":\"header\"}},[_c('router-link',{staticClass:\"navbar-brand\",attrs:{\"exact\":true,\"to\":_vm._f(\"toLocale\")('/')}},[_vm._v(_vm._s(_vm.$t('header.logo')))]),_vm._v(\" \"),_c('button',{staticClass:\"navbar-toggler\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.showNav = !_vm.showNav}}},[_c('span',{staticClass:\"navbar-toggler-icon\"})]),_vm._v(\" \"),_c('nav',{class:{collapse: true, 'navbar-collapse': true, show: _vm.showNav},attrs:{\"id\":\"navbar\"}},[_c('ul',{staticClass:\"navbar-nav\"},[_c('li',{staticClass:\"nav-item\"},[_c('router-link',{class:'nav-link' + (_vm.$route.path === '/' ? ' active' : ''),attrs:{\"active-class\":\"active\",\"exact\":true,\"to\":_vm._f(\"toLocale\")('/')}},[_vm._v(_vm._s(_vm.$t('header.home')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/documents')}},[_vm._v(_vm._s(_vm.$t('header.documents')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples')}},[_vm._v(_vm._s(_vm.$t('header.examples')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"rel\":\"license noopener\",\"href\":\"https://www.lianyue.org\",\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t('header.blog')))])])]),_vm._v(\" \"),_c('ul',{staticClass:\"navbar-nav ml-md-auto\"},[_c('li',{staticClass:\"nav-item dropdown\"},[_c('a',{staticClass:\"nav-link dropdown-toggle\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.onLocale(true)},\"focus\":function($event){_vm.onLocale(true)},\"blur\":function($event){_vm.onLocale(false)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('header.locale'))+\"\\n \")]),_vm._v(\" \"),_c('div',{class:{'dropdown-menu': true, show: _vm.showLocale},on:{\"blur\":function($event){_vm.onLocale(false)}}},_vm._l((_vm.locale),function(value,name){return _c('router-link',{key:name,staticClass:\"dropdown-item\",attrs:{\"to\":'/' + name + (_vm.$route.params.locale ? _vm.$route.fullPath.substr(_vm.$route.params.locale.length + 1) : _vm.$route.fullPath)}},[_vm._v(_vm._s(value))])}))]),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/issues\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('header.issues'))+\"\\n \")])]),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('header.github'))+\"\\n \")])])])])],1),_vm._v(\" \"),_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport marked from 'marked'\nimport highlightjs from 'highlight.js'\nimport store from './store'\nimport router from './router'\nimport i18n from './i18n'\nimport App from './views/App'\n\nVue.config.silent = false\nVue.config.devtools = true\n\n\nclass Renderer extends marked.Renderer {\n heading(text, level, raw) {\n let rawName = raw.toLowerCase().replace(/([\\u0000-\\u002F\\u003A-\\u0060\\u007B-\\u007F]+)/g, '-').replace(/^\\-+|\\-+$/, '')\n\n if (!this.options.headers) {\n this.options.headers = []\n }\n while (this.options.headers.length >= level) {\n this.options.headers.pop()\n }\n let parent = this.options.headers.filter(value => !!value).join('-')\n if (parent) {\n parent = parent + '-'\n }\n while (this.options.headers.length < (level - 1)) {\n this.options.headers.push('')\n }\n this.options.headers.push(rawName)\n return ''\n + text\n + '\\n'\n }\n}\n\nmarked.setOptions({\n renderer: new Renderer(),\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n smartLists: true,\n smartypants: false,\n highlight(code, lang) {\n if (lang) {\n return highlightjs.highlight(lang, code).value\n } else {\n return highlightjs.highlightAuto(code).value\n }\n }\n})\n\nVue.directive('markdown', function (el, binding, vnode) {\n if (!el.className || !/vue-markdown/.test(el.className)) {\n el.className += ' vue-markdown'\n }\n let text = ''\n for (let i = 0; i < vnode.children.length; i++) {\n text += vnode.children[i].text || ''\n }\n if (el.markdown === text) {\n return\n }\n\n el.markdown = text\n\n el.innerHTML = marked(text)\n let selectorList = el.querySelectorAll('a')\n for (let i = 0; i < selectorList.length; i++) {\n selectorList[i].onclick = function (e) {\n if (e.metaKey || e.ctrlKey || e.shiftKey) {\n return\n }\n if (e.defaultPrevented) {\n return\n }\n if (e.button !== undefined && e.button !== 0) {\n return\n }\n\n if (this.host !== window.location.host) {\n return\n }\n\n let href = this.getAttribute('href')\n if (!href) {\n return\n }\n\n if (href.charAt(0) !== '#') {\n return\n }\n\n e.preventDefault()\n router.push(href)\n }\n }\n})\n\n\n\nVue.filter('formatSize', function (size) {\n if (size > 1024 * 1024 * 1024 * 1024) {\n return (size / 1024 / 1024 / 1024 / 1024).toFixed(2) + ' TB'\n } else if (size > 1024 * 1024 * 1024) {\n return (size / 1024 / 1024 / 1024).toFixed(2) + ' GB'\n } else if (size > 1024 * 1024) {\n return (size / 1024 / 1024).toFixed(2) + ' MB'\n } else if (size > 1024) {\n return (size / 1024).toFixed(2) + ' KB'\n }\n return size.toString() + ' B'\n})\n\nVue.filter('toLocale', function (to) {\n return '/' + i18n.locale + to\n})\n\n\n\nnew Vue({\n store,\n router,\n i18n,\n ...App\n}).$mount('#app')\n","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"#header{position:-webkit-sticky;position:sticky;top:0;z-index:1071}#sidebar{background:#fff;border-right:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5}@media (min-width:768px){#sidebar{position:-webkit-sticky;position:sticky;top:3.5rem;z-index:1000;max-height:calc(100vh - 3.5rem);border-right:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5}}#sidebar-nav{padding-top:1rem;padding-bottom:1rem;margin-right:-15px;margin-left:-15px;max-height:100%;overflow-y:auto}#sidebar-nav .nav{display:block}#sidebar-nav .nav .nav-item .nav{display:none;margin-bottom:1rem}#sidebar-nav .nav .active+.nav,#sidebar-nav .nav .nav-item.active .nav{display:block}@media (min-width:768px){#sidebar-nav .nav .nav-item .nav{display:block}}#sidebar-nav .nav .active>.nav-link,#sidebar-nav .nav .nav-link.active{color:#262626;font-weight:500}#sidebar-nav .nav-item .nav-link{padding:.25rem 1rem;font-weight:500;color:#666}#sidebar-nav .nav-item .nav-item .nav-link{font-weight:400;font-size:85%;margin-left:1rem}#main{padding-top:1rem;margin-bottom:2rem}blockquote{margin-bottom:1rem;font-size:1.25rem;padding:0 1em;color:#6a737d;border-left:.25em solid #dfe2e5}pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f6f8fa;border-radius:3px}.modal-backdrop.fade{visibility:hidden}.modal-backdrop.fade.show{visibility:visible}.fade.show{display:block;z-index:1072}\", \"\"]);\n\n// exports\n","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".example-vuex label.btn{margin-bottom:0;margin-right:1rem}\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=style&index=0&lang=css\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chunk-loading[data-v-c205936e]{margin:-12px;display:flex;width:calc(100% + 24px)}.chunk-loading .chunk-loading-part[data-v-c205936e]{height:25px;line-height:25px;flex:1;background:#ccc;font-size:14px;color:#fff;text-align:center}.chunk-loading .chunk-loading-part.chunk-loading-part__uploaded[data-v-c205936e]{background:#28a745}\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=1&id=c205936e&scoped=true&lang=css\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=1&id=c205936e&scoped=true&lang=css\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".example-simple label.btn{margin-bottom:0;margin-right:1rem}\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=0&lang=css\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".example-multiple label.btn{margin-bottom:0;margin-right:1rem}.example-multiple .upload{margin-bottom:1rem}\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=style&index=0&lang=css\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".example-drag label.btn{margin-bottom:0;margin-right:1rem}.example-drag .drop-active{top:0;bottom:0;right:0;left:0;position:fixed;z-index:9999;opacity:.6;text-align:center;background:#000}.example-drag .drop-active h3{margin:-.5em 0 0;position:absolute;top:50%;left:0;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-size:40px;color:#fff;padding:0}\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=style&index=0&lang=css\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".example-avatar .avatar-upload .rounded-circle{width:200px;height:200px}.example-avatar .text-center .btn{margin:0 .5rem}.example-avatar .avatar-edit-image{max-width:100%}.example-avatar .drop-active{top:0;bottom:0;right:0;left:0;position:fixed;z-index:9999;opacity:.6;text-align:center;background:#000}.example-avatar .drop-active h3{margin:-.5em 0 0;position:absolute;top:50%;left:0;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-size:40px;color:#fff;padding:0}\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=style&index=0&lang=css\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".example-simple label.btn{margin-bottom:0;margin-right:1rem}\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=style&index=0&lang=css\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".example-full .btn-group .dropdown-menu{display:block;visibility:hidden;transition:all .2s}.example-full .btn-group:hover>.dropdown-menu{visibility:visible}.example-full label.dropdown-item{margin-bottom:0}.example-full .btn-group .dropdown-toggle{margin-right:.6rem}.example-full .filename{margin-bottom:.3rem}.example-full .btn-is-option{margin-top:.25rem}.example-full .example-foorer{padding:.5rem 0;border-top:1px solid #e9ecef;border-bottom:1px solid #e9ecef}.example-full .edit-image img{max-width:100%}.example-full .edit-image-tool{margin-top:.6rem}.example-full .edit-image-tool .btn-group{margin-right:.6rem}.example-full .footer-status{padding-top:.4rem}.example-full .drop-active{top:0;bottom:0;right:0;left:0;position:fixed;z-index:9999;opacity:.6;text-align:center;background:#000}.example-full .drop-active h3{margin:-.5em 0 0;position:absolute;top:50%;left:0;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-size:40px;color:#fff;padding:0}\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=style&index=0&lang=css\"","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".file-uploads{overflow:hidden;position:relative;text-align:center;display:inline-block}.file-uploads.file-uploads-html4 input[type=file]{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-html5 input[type=file]{overflow:hidden;position:fixed;width:1px;height:1px;z-index:-1;opacity:0}\", \"\"]);\n\n// exports\n","import mod from \"-!../node_modules/vue-style-loader/index.js!../node_modules/css-loader/index.js??ref--2-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../node_modules/vue-style-loader/index.js!../node_modules/css-loader/index.js??ref--2-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=style&index=0&lang=css\"","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".document-title{margin-bottom:2rem;padding-bottom:1rem;border-bottom:1px solid #ddd}.document-content h2{padding-top:1rem;padding-bottom:1rem;margin-top:4rem;border-bottom:1px solid #eaecef}.document-content h2+h3,.document-content h2:first-child{margin-top:0}.document-content h3{margin-top:1.5rem;padding-top:1rem;margin-bottom:1rem}\", \"\"]);\n\n// exports\n","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=style&index=0&lang=css\"","var map = {\n\t\"./en\": 22,\n\t\"./en.md\": 22,\n\t\"./zh-cn\": 21,\n\t\"./zh-cn.md\": 21\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\tvar module = __webpack_require__(id);\n\treturn module;\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error('Cannot find module \"' + req + '\".');\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 50;"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./src/index.js","webpack:///./node_modules/css-loader/lib/css-base.js","webpack:///./node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///external \"Vue\"","webpack:///external \"marked\"","webpack:///./docs/views/Document.vue?d8b8","webpack:///./src/FileUpload.vue?8809","webpack:///./docs/views/examples/Full.vue?e893","webpack:///./docs/views/examples/Simple.vue?6b74","webpack:///./docs/views/examples/Avatar.vue?2202","webpack:///./docs/views/examples/Drag.vue?fa34","webpack:///./docs/views/examples/Multiple.vue?2d25","webpack:///./docs/views/examples/Chunk.vue?7f0a","webpack:///./docs/views/examples/Chunk.vue?9b50","webpack:///./docs/views/examples/Vuex.vue?098c","webpack:///./docs/views/App.vue?1892","webpack:///external \"Vuex\"","webpack:///external \"Cropper\"","webpack:///external \"hljs\"","webpack:///./node_modules/vue-style-loader/lib/listToStyles.js","webpack:///./docs/docs/en.md","webpack:///./docs/docs/zh-cn.md","webpack:///external \"VueRouter\"","webpack:///external \"VueI18n\"","webpack:///external \"ImageCompressor\"","webpack:///./docs/docs sync ^\\.\\/.*$","webpack:///./docs/views/Document.vue?e319","webpack:///./docs/views/Document.vue?5311","webpack:///./src/FileUpload.vue?7ff8","webpack:///./src/FileUpload.vue?7bf3","webpack:///./docs/views/examples/Full.vue?87cf","webpack:///./docs/views/examples/Full.vue?773e","webpack:///./docs/views/examples/Simple.vue?b2e2","webpack:///./docs/views/examples/Simple.vue?a75d","webpack:///./docs/views/examples/Avatar.vue?5c0e","webpack:///./docs/views/examples/Avatar.vue?6096","webpack:///./docs/views/examples/Drag.vue?7c76","webpack:///./docs/views/examples/Drag.vue?b103","webpack:///./docs/views/examples/Multiple.vue?0ed7","webpack:///./docs/views/examples/Multiple.vue?a355","webpack:///./docs/views/examples/Chunk.vue?f294","webpack:///./docs/views/examples/Chunk.vue?202d","webpack:///./docs/views/examples/Chunk.vue?e406","webpack:///./docs/views/examples/Chunk.vue?b919","webpack:///./docs/views/examples/Vuex.vue?bc35","webpack:///./docs/views/examples/Vuex.vue?e2ab","webpack:///./docs/views/App.vue?ee32","webpack:///./docs/views/App.vue?4f5a","webpack:///./docs/store.js","webpack:///./docs/i18n/index.js","webpack:///./docs/i18n/zh-cn.js","webpack:///./docs/i18n/en.js","webpack:///./docs/views/Router.vue","webpack:///./docs/views/Router.vue?a2e3","webpack:///./docs/views/Document.vue?561e","webpack:///docs/views/Document.vue","webpack:///./docs/views/Document.vue","webpack:///./docs/views/Document.vue?59fe","webpack:///./docs/views/Example.vue","webpack:///./docs/views/Example.vue?d2c8","webpack:///./docs/views/examples/Full.vue?d782","webpack:///docs/views/examples/Full.vue","webpack:///./docs/views/examples/Full.vue","webpack:///./docs/views/examples/Full.vue?cb48","webpack:///./docs/views/examples/Simple.vue?5bb5","webpack:///docs/views/examples/Simple.vue","webpack:///./docs/views/examples/Simple.vue","webpack:///./docs/views/examples/Simple.vue?8717","webpack:///./docs/views/examples/Avatar.vue?17d6","webpack:///docs/views/examples/Avatar.vue","webpack:///./docs/views/examples/Avatar.vue","webpack:///./docs/views/examples/Avatar.vue?9dac","webpack:///./docs/views/examples/Drag.vue?11b0","webpack:///docs/views/examples/Drag.vue","webpack:///./docs/views/examples/Drag.vue","webpack:///./docs/views/examples/Drag.vue?51f4","webpack:///./docs/views/examples/Multiple.vue?9b18","webpack:///docs/views/examples/Multiple.vue","webpack:///./docs/views/examples/Multiple.vue","webpack:///./docs/views/examples/Multiple.vue?a83d","webpack:///./docs/views/examples/Chunk.vue?856c","webpack:///docs/views/examples/Chunk.vue","webpack:///./docs/views/examples/Chunk.vue","webpack:///./docs/views/examples/Chunk.vue?a29c","webpack:///./docs/views/examples/Vuex.vue?25d4","webpack:///docs/views/examples/Vuex.vue","webpack:///./docs/router.js","webpack:///./docs/views/examples/Vuex.vue","webpack:///./docs/views/examples/Vuex.vue?d009","webpack:///./docs/views/App.vue?38a5","webpack:///docs/views/App.vue","webpack:///./docs/views/App.vue","webpack:///./docs/views/App.vue?7c21","webpack:///./docs/index.js","webpack:///./src/FileUpload.vue?f74e","webpack:///./src/utils/request.js","webpack:///./src/chunk/ChunkUploadHandler.js","webpack:///./src/InputFile.vue?72d5","webpack:///src/InputFile.vue","webpack:///./src/InputFile.vue","webpack:///./src/InputFile.vue?814e","webpack:///src/FileUpload.vue","webpack:///./src/FileUpload.vue?b00f","webpack:///./src/FileUpload.vue"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","this","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","concat","__webpack_exports__","useSourceMap","list","toString","map","item","content","cssMapping","btoa","sourceMapping","sourceMap","unescape","encodeURIComponent","JSON","stringify","toComment","sourceURLs","sources","source","sourceRoot","join","cssWithMappingToString","mediaQuery","alreadyImportedModules","length","id","push","_listToStyles__WEBPACK_IMPORTED_MODULE_0__","_listToStyles__WEBPACK_IMPORTED_MODULE_0___default","hasDocument","document","DEBUG","Error","stylesInDom","head","getElementsByTagName","singletonElement","singletonCounter","isProduction","noop","ssrIdKey","isOldIE","navigator","test","userAgent","toLowerCase","addStylesClient","parentId","_isProduction","_options","styles","addStylesToDom","newList","mayRemove","domStyle","refs","j","parts","addStyle","createStyleElement","styleElement","createElement","type","appendChild","obj","update","remove","querySelector","parentNode","removeChild","styleIndex","applyToSingletonTag","css","media","setAttribute","ssrId","styleSheet","cssText","firstChild","createTextNode","newObj","replaceText","textStore","index","replacement","filter","Boolean","cssNode","childNodes","insertBefore","Vue","marked","locals","default","Vuex","Cropper","hljs","newStyles","part","VueRouter","VueI18n","ImageCompressor","./en","./en.md","./zh-cn","./zh-cn.md","webpackContext","req","webpackContextResolve","e","code","keys","resolve","store","a","Store","strict","state","files","mutations","updateFiles","i18n","locale","messages","zh-cn","header","logo","home","examples","documents","blog","issues","github","en","title","example","full","simple","avatar","drag","multiple","vuex","chunk","Router","componentNormalizer","_h","$createElement","_self","_c","views_Documentvue_type_script_lang_js_","mounted","$route","hash","el","decodeURIComponent","window","scrollTo","offsetTop","computed","$i18n","navs","tokens","external_marked_default","lexer","rootNode","children","level","navPrev","token","nav","text","replace","depth","Document","_vm","staticClass","attrs","_l","group","class","nav-item","active","indexOf","nav-link","active-class","to","_v","_s","child","_e","role","$t","directives","rawName","Example","_f","examples_Fullvue_type_script_lang_js_","components","FileUpload","src_default","data","accept","extensions","minSize","size","directory","drop","dropDirectory","addIndex","thread","postAction","putAction","headers","X-Csrf-Token","_csrf_token","autoCompress","uploadAuto","isOption","addData","show","editFile","watch","editFile.show","newValue","oldValue","$refs","upload","error","$nextTick","editImage","cropper","external_Cropper_default","autoCrop","_extends","addData.show","methods","inputFilter","newFile","oldFile","prevent","_this","file","substr","external_ImageCompressor_default","convertSize","Infinity","maxWidth","maxHeight","compress","then","catch","err","message","blob","URL","webkitURL","createObjectURL","thumb","inputFile","progress","success","response","alert","_alert","_x","apply","arguments","onEditFileShow","onEditorFile","features","html5","binStr","atob","getCroppedCanvas","toDataURL","split","arr","Uint8Array","charCodeAt","File","onAddFolader","_this2","input","$el","webkitdirectory","onclick","click","onAddData","Full","on","$event","preventDefault","aria-hidden","dropActive","expression","_m","colspan","for","src","width","height","progress-bar","progress-bar-striped","bg-danger","progress-bar-animated","style","speed","dropdown-item","disabled","href","uploaded","ref","post-action","put-action","drop-directory","add-index","input-filter","input-file","model","callback","$$v","domProps","target","composing","checked","_q","change","modifiers","number","max","min","_n","blur","$forceUpdate","Array","isArray","_i","$$a","$$el","$$c","$$i","slice","modal-backdrop","fade","modal","tabindex","submit","required","placeholder","$set","rows","rotate","crop","clear","examples_Simplevue_type_script_lang_js_","console","log","Simple","examples_Avatarvue_type_script_lang_js_","edit","aspectRatio","viewMode","destroy","editSave","url","Avatar","examples_Dragvue_type_script_lang_js_","Drag","examples_Multiplevue_type_script_lang_js_","files1","files2","Multiple","input-id","upload1","upload2","examples_Chunkvue_type_script_lang_js_","chunkEnabled","chunkMinSize","chunkMaxActive","chunkMaxRetries","Chunk","pause","hasChunksToUpload","resume","chunks","chunksUploading","chunksUploaded","chunk-loading-part__uploaded","retries","maxRetries","chunk-enabled","action","maxActive","examples_Vuexvue_type_script_lang_js_","Vuexvue_type_script_lang_js_extends","external_Vuex_","inputUpdate","$store","commit","path","component","docs_router","external_VueRouter_default","fallback","scrollBehavior","from","savedPosition","x","y","routes","views_Appvue_type_script_lang_js_","showLocale","showNav","params","beforeUpdate","onLocale","setTimeout","App","exact","collapse","navbar-collapse","rel","focus","dropdown-menu","fullPath","external_Vue_default","config","silent","devtools","Renderer","raw","pop","headerPrefix","setOptions","renderer","gfm","tables","breaks","pedantic","sanitize","smartLists","smartypants","highlight","lang","external_hljs_default","highlightAuto","directive","binding","vnode","className","markdown","innerHTML","selectorList","querySelectorAll","metaKey","ctrlKey","shiftKey","defaultPrevented","undefined","button","host","location","getAttribute","charAt","toFixed","docs_extends","router","$mount","createRequest","xhr","XMLHttpRequest","open","method","responseType","forEach","setRequestHeader","request","body","Promise","reject","onload","status","parse","onerror","send","sendRequest","ChunkUploadHandler","_classCallCheck","start","end","chunkSize","fileSize","startOffset","stopChunks","abort","startChunking","promise","assign","Content-Type","startBody","phase","mime_type","fileType","fileName","res","sessionId","session_id","end_offset","createChunks","maxActiveChunks","uploadNextChunk","uploadChunk","chunksToUpload","finish","_this3","updateFileProgress","addEventListener","evt","lengthComputable","Math","round","loaded","total","FormData","append","sendFormRequest","uploadBody","start_offset","_this4","finishBody","parseInt","_this5","completedProgress","uploadingProgress","reduce","src_InputFilevue_type_script_lang_js_","$destroy","$parent","addInputFile","constructor","InputFile","inputId","capture","CHUNK_DEFAULT_OPTIONS","handler","chunk_ChunkUploadHandler","src_FileUploadvue_type_script_lang_js_","props","String","maximum","Number","customAction","Function","timeout","uploading","ondrop","maps","watchDrop","beforeDestroy","fileObject","chunkOptions","_active","watchActive","oldMaps","emitFile","_key","emitInput","_typeof","_files","addFiles","Blob","webkitRelativePath","relativePath","Element","random","emitFilter","newFiles","splice","_file2","_i2","names","addDataTransfer","dataTransfer","items","getAsEntry","getAsFile","webkitGetAsEntry","getEntry","results","_toConsumableArray","_i3","entry","isFile","isDirectory","dirReader","createReader","readEntries","entries","id1","id2","file1","file2","index1","index2","isPrevent","$emit","RegExp","trim","search","shouldUseChunkUpload","uploadPut","uploadHtml5","uploadHtml4","HandlerClass","querys","queryString","uploadXhr","form","filename","_file","speedTime","speedLoaded","onprogress","speedTime2","Date","now","interval","setInterval","clearInterval","complete","fn","responseText","contentType","getResponseHeader","onabort","ontimeout","onKeydown","keyCode","iframe","removeEventListener","doc","contentWindow","contentDocument","getResponseData","_el","dropElement","onDragenter","onDragleave","onDocumentDrop","onDragover","onDrop","nodeName","explicitOriginalTarget","screenX","screenY","fromElement","offsetX","FileUpload_component","_t"],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 26);\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n 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 if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\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\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","module.exports = require('./FileUpload.vue')\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n","/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of \\n\\n```\\n\\n\\n** OR **\\n\\n\\n```js\\nimport FileUpload from 'vue-upload-component/src'\\n```\\n\\n\\nwebpack.config.js\\n\\n```js\\nconst nodeExternals = require('webpack-node-externals');\\n{\\n //.....\\n externals: [\\n nodeExternals({whitelist:[/^vue-upload-component\\\\/src/]})\\n ]\\n //.....\\n}\\n```\\n\\n* [https://github.com/liady/webpack-node-externals](https://github.com/liady/webpack-node-externals)\\n\\n* [**`vue-hackernews` demo**](https://github.com/lian-yue/vue-hackernews-2.0/)\\n\\n* [**View changes**](https://github.com/lian-yue/vue-hackernews-2.0/commit/bd6c58a30cc6b8ba6c0148e737b3ce9336b99cf8)\\n\\n\\n\\n\\n## Options / Props\\n\\n\\n### input-id\\n\\nThe `id` attribute of the input tag\\n\\n* **Type:** `String`\\n\\n* **Default:** `this.name`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### name\\n\\nThe `name` attribute of the input tag\\n\\n* **Type:** `String`\\n\\n* **Default:** `file`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### post-action\\n\\n`POST` Request upload URL\\n\\n* **Type:** `String`\\n\\n* **Default:** `undefined`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### put-action\\n\\n`PUT` Request upload URL\\n\\n* **Type:** `String`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `> IE9`\\n\\n* **Details:**\\n\\n `put-action` is not empty Please give priority to` PUT` request\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### custom-action\\n\\nCustom upload method\\n\\n* **Type:** `async Function`\\n\\n* **Default:** `undefined`\\n\\n* **Details:** \\n\\n `custom-action` priority than `put-action, post-action`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n ```js\\n async function customAction(file, component) {\\n // return await component.uploadPut(file)\\n return await component.uploadHtml4(file)\\n }\\n ```\\n\\n\\n\\n\\n\\n### headers\\n\\nAttach `header` data\\n\\n* **Type:** `Object`\\n\\n* **Default:** `{}`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### data\\n\\n`POST request`: Append request `body`\\n`PUT request`: Append request `query`\\n\\n* **Type:** `Object`\\n\\n* **Default:** `{}`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### value, v-model\\n\\nFile List\\n\\n* **Type:** `Array`\\n\\n* **Default:** `[]`\\n\\n* **Details:**\\n\\n View **[`File`](#file)** details\\n > In order to prevent unpredictable errors, can not directly modify the `files`, please use [`add`](#instance-methods-add), [`update`](#instance-methods-update), [`remove`](#instance-methods-remove) method to modify\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### accept\\n\\nThe `accept` attribute of the input tag, MIME type\\n\\n* **Type:** `String`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### multiple\\n\\nThe `multiple` attribute of the input tag\\nWhether to allow multiple files to be selected\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `false`\\n\\n* **Details:**\\n\\n If it is `false` file inside only one file will be automatically deleted\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### directory\\n\\nThe `directory` attribute of the input tag\\nWhether it is a upload folder\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `false`\\n\\n* **Browser:** [http://caniuse.com/#feat=input-file-directory](http://caniuse.com/#feat=input-file-directory)\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### extensions\\n\\nAllow upload file extensions\\n\\n* **Type:** `Array | String | RegExp`\\n\\n* **Default:** `undefined`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n \\n \\n ```\\n\\n\\n\\n\\n### size\\n\\nAllow the maximum byte to upload\\n\\n* **Type:** `Number`\\n\\n* **Default:** `0`\\n\\n* **Browser:** `> IE9`\\n\\n* **Details:**\\n\\n `0` is equal to not limit\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### timeout\\n\\nUpload timeout time in milliseconds\\n\\n* **Type:** `Number`\\n\\n* **Default:** `0`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n### maximum\\n\\nList the maximum number of files\\n\\n* **Type:** `Number`\\n\\n* **Default:** `props.multiple ? 0 : 1`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### thread\\n\\nAlso upload the number of files at the same time (number of threads)\\n\\n* **Type:** `Number`\\n\\n* **Default:** `1`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n### chunk-enabled\\n\\nWhether chunk uploads is enabled or not\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### chunk\\n\\nAll the options to handle chunk uploads\\n\\n* **Type:** `Object`\\n\\n* **Default:**\\n```js\\n{\\n headers: {\\n 'Content-Type': 'application/json'\\n },\\n action: '',\\n minSize: 1048576,\\n maxActive: 3,\\n maxRetries: 5,\\n\\n // This is the default Handler implemented in this package\\n // you can use your own handler if your protocol is different\\n handler: ChunkUploadDefaultHandler\\n}\\n```\\n\\n### drop\\n\\nDrag and drop upload\\n\\n* **Type:** `Boolean | Element | CSS selector`\\n\\n* **Default:** `false`\\n\\n* **Browser:** [http://caniuse.com/#feat=dragndrop](http://caniuse.com/#feat=dragndrop)\\n\\n* **Details:**\\n\\n If set to `true`, read the parent component as a container\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### drop-directory\\n\\nWhether to open the drag directory\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `true`\\n\\n* **Details:**\\n\\n If set to `false` filter out the directory\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### add-index\\n\\n* **Type:** `Boolean, Number`\\n\\n* **Default:** `undefined`\\n\\n* **Version:** : `>=2.6.1`\\n\\n* **Details:**\\n\\n The default value of the `index` parameter for the [`add()`](#instance-methods-add) method\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n## Options / Events\\n\\nThe files is changed to trigger the method\\nDefault for `v-model` binding\\n\\n### @input\\n* **Arguments:**\\n\\n * `files: Array`\\n\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n### @input-filter\\n\\nAdd, update, remove pre-filter\\n\\n* **Arguments:**\\n\\n * `newFile: File | Object | undefined` `Read and write`\\n * `oldFile: File | Object | undefined` `Read only`\\n * `prevent: Function` Call this function to prevent modification\\n\\n\\n* **Details:**\\n\\n If the `newFile` value is `undefined` 'is deleted\\n If the `oldFile` value is `undefined` 'is added\\n If `newFile`, `oldFile` is exist, it is updated\\n\\n > Synchronization modify `newFile`\\n > Asynchronous Please use `update`,` add`, `remove`,` clear` method\\n > Asynchronous Please set an error first to prevent being uploaded\\n\\n > Synchronization can not use `update`,` add`, `remove`,` clear` methods\\n > Asynchronous can not modify `newFile`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### @input-file\\n\\nAdd, update, remove after\\n\\n* **Arguments:**\\n\\n * `newFile: File | Object | undefined` `Read only`\\n * `oldFile: File | Object | undefined` `Read only`\\n\\n\\n* **Details:**\\n\\n If the `newFile` value is `undefined` 'is deleted\\n If the `oldFile` value is `undefined` 'is added\\n If `newFile`, `oldFile` is exist, it is updated\\n\\n\\n >You can use `update`,` add`, `remove`,` clear` methods in the event\\n >You can not modify the `newFile` object in the event\\n >You can not modify the `oldFile` object in the event\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n## Instance / Data\\n\\n### features\\n\\nUsed to determine the browser support features\\n\\n* **Type:** `Object`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `{ html5: true, directory: false, drag: false }`\\n\\n* **Usage:**\\n ```html\\n \\n \\n Support drag and drop upload\\n Support folder upload\\n Support for HTML5\\n \\n ```\\n\\n\\n\\n### active\\n\\nActivation or abort upload\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n Start upload\\n Stop upload\\n \\n ```\\n\\n\\n\\n### dropActive\\n\\nIs dragging\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n Drag and drop here for upload\\n \\n ```\\n\\n\\n\\n\\n\\n### uploaded\\n\\nAll uploaded\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `true`\\n\\n* **Usage:**\\n ```html\\n \\n \\n All files have been uploaded\\n \\n ```\\n\\n\\n\\n\\n\\n## Instance / Methods\\n\\n\\n\\n### get()\\n\\nUse `id` to get a file object\\n\\n* **Arguments:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **Result:** `File | Object | Boolean` There is a return file, object that otherwise returns `false`\\n\\n\\n\\n### add()\\n\\nAdd one or more files\\n\\n* **Arguments:**\\n\\n * `files: Array | File | window.File | Object` If it is an array of responses will be an array\\n * `index: Number | Boolean` = [`props.add-index`](#options-props-add-index) `true = ` Start, `false = ` End, `Number = ` Index\\n\\n\\n* **Result:** `Object | Array | Boolean` The incoming array is returned to the array otherwise the object or `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n\\n### addInputFile()\\n\\nAdd the file selected by `` to the upload list\\n\\n* **Arguments:**\\n\\n * `el: HTMLInputElement` File element\\n\\n\\n* **Result:** `Array` Added list of files\\n\\n* **Version:** : `>=2.5.1`\\n\\n\\n\\n### addDataTransfer()\\n\\nAdd files that are dragged or pasted into the upload list\\n\\n* **Arguments:**\\n\\n * `dataTransfer: DataTransfer` Drag or paste data\\n\\n\\n* **Result:** `Promise>` Added list of files\\n\\n\\n* **Version:** : `>=2.5.1`\\n\\n\\n\\n### update()\\n\\nUpdate a file object\\n\\n* **Arguments:**\\n\\n * `id: File | Object | String`\\n * `data: Object` Updated data object\\n\\n\\n* **Result:** `Object | Boolean` Successfully returned `newFile` failed to return` false`\\n\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### remove()\\n\\nRemove a file object\\n\\n* **Arguments:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **Result:** `Object | Boolean` Successfully returned `oldFile` failed to return` false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### replace()\\n Replace the location of the two files\\n\\n* **Arguments:**\\n\\n * `id1: File | Object | String`\\n * `id2: File | Object | String`\\n\\n\\n* **Result:** `Boolean`\\n\\n\\n### clear()\\n\\nEmpty the file list\\n\\n* **Result:** `Boolean` Always return `true`\\n\\n\\n\\n## Instance / File\\n\\n\\n\\n> **File object in the `@input-filter` event outside the use of [`update`](#instance-methods-update) method**\\n\\n\\n\\n\\n### fileObject\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `true`\\n\\n* **Required:** `true`\\n\\n* **Default:** `true`\\n\\n* **Version:** : `>=2.6.0`\\n\\n* **Details:**\\n\\n If the attribute does not exist, the object will not be processed internally\\n If the attribute does not exist, it is not `File` but `Object`\\n\\n\\n\\n\\n### id\\n\\nFile ID\\n\\n* **Type:** `String | Number`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `Math.random().toString(36).substr(2)`\\n\\n* **Details:**\\n\\n >`id` can not be repeated\\n >Upload can not modify `id`\\n\\n\\n### size\\n\\nFile size\\n\\n* **Type:** `Number`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `-1`\\n\\n* **Browser:** `> IE9`\\n\\n\\n### name\\n\\nFilename\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** ` `\\n\\n* **Details:**\\n\\n Format: `directory/filename.gif` `filename.gif`\\n\\n\\n\\n### type\\n\\nMIME type\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** ` `\\n\\n* **Browser:** `> IE9`\\n\\n* **Details:**\\n\\n Format: `image/gif` `image/png` `text/html`\\n\\n\\n\\n\\n### active\\n\\nActivation or abort upload\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `false`\\n\\n* **Details:**\\n\\n `true` = Upload\\n `false` = Abort\\n\\n\\n\\n\\n\\n\\n### error\\n\\nUpload failed error code\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** ` `\\n\\n* **Details:**\\n\\n Built-in\\n `size`, `extension`, `timeout`, `abort`, `network`, `server`, `denied`\\n\\n\\n\\n\\n### success\\n\\nWhether the upload was successful\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `false`\\n\\n\\n### putAction\\n\\nCustomize the current file `PUT` URL\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.putAction`\\n\\n\\n\\n### postAction\\n\\nCustomize the current file `POST` URL\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.postAction`\\n\\n\\n\\n\\n### headers\\n\\nCustomize the current file `HTTP` Header\\n\\n* **Type:** `Object`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.headers`\\n\\n\\n### data\\n\\nCustomize the current file `body` or` query` to attach content\\n\\n* **Type:** `Object`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.data`\\n\\n\\n### timeout\\n\\nCustomize the upload timeout for a current single file\\n\\n* **Type:** `Number`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.timeout`\\n\\n\\n### response\\n\\nResponse data\\n\\n* **Type:** `Object | String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `{}`\\n\\n\\n\\n\\n### progress\\n\\nUpload progress\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `0.00`\\n\\n* **Browser:** `> IE9`\\n\\n\\n\\n### speed\\n\\nPer second upload speed\\n\\n* **Type:** `Number`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `0`\\n\\n* **Browser:** `> IE9`\\n\\n\\n\\n\\n### xhr\\n\\n`HTML5` upload` XMLHttpRequest` object\\n\\n* **Type:** `XMLHttpRequest`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `> IE9`\\n\\n\\n\\n\\n### iframe\\n\\n`HTML4` upload` iframe` element\\n\\n* **Type:** `Element`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `= IE9`\\n\"","module.exports = \"## 入门开始\\n\\n### NPM\\n\\n``` bash\\nnpm install vue-upload-component --save\\n```\\n\\n``` js\\nconst VueUploadComponent = require('vue-upload-component')\\nVue.component('file-upload', VueUploadComponent)\\n```\\n\\n### Curated\\n\\n**No data**\\n\\n\\n### 直接使用\\n\\n\\nunpkg\\n\\n``` html\\n\\n\\n\\n```\\n\\njsDelivr\\n\\n``` html\\n\\n\\n\\n```\\n\\n\\n### 简单的例子\\n\\n\\n\\n```html\\n\\n\\n\\n \\n Vue-upload-component Test\\n \\n \\n\\n\\n
\\n
    \\n
  • {{file.name}} - Error: {{file.error}}, Success: {{file.success}}
  • \\n
\\n \\n 上传文件\\n \\n \\n \\n
\\n\\n\\n\\n```\\n\\n\\n\\n### SSR (服务器同构)\\n\\n\\n```html\\n\\n\\n\\n```\\n\\n\\n** 或者 **\\n\\n\\n```js\\nimport FileUpload from 'vue-upload-component/src'\\n```\\n\\nwebpack.config.js\\n\\n```js\\nconst nodeExternals = require('webpack-node-externals');\\n{\\n //...\\n externals: [\\n nodeExternals({whitelist:[/^vue-upload-component\\\\/src/]})\\n ]\\n //...\\n}\\n```\\n\\n* [https://github.com/liady/webpack-node-externals](https://github.com/liady/webpack-node-externals) \\n\\n* [**`vue-hackernews` 演示**](https://github.com/lian-yue/vue-hackernews-2.0/) \\n\\n* [**浏览修改文件**](https://github.com/lian-yue/vue-hackernews-2.0/commit/bd6c58a30cc6b8ba6c0148e737b3ce9336b99cf8)\\n\\n\\n\\n\\n## 选项 / 属性\\n\\n\\n### input-id\\n\\ninput 标签的 `id` 属性\\n\\n* **类型:** `String`\\n\\n* **默认值:** `this.name`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### name\\n\\ninput标签的 `name` 属性\\n\\n* **类型:** `String`\\n\\n* **默认值:** `file`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### post-action\\n\\n`POST` 请求的上传URL\\n\\n* **类型:** `String`\\n\\n* **默认值:** `undefined`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### put-action\\n\\n`PUT` 请求的上传URL\\n\\n* **类型:** `String`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `> IE9`\\n\\n* **详细:** \\n\\n `put-action` 不为空请优先 `PUT` 请求 \\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n### custom-action\\n\\n自定义上传方法\\n\\n* **类型:** `async Function`\\n\\n* **默认值:** `undefined`\\n\\n* **详细:** \\n\\n `custom-action` 优先级高于 `put-action, post-action`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n ```js\\n async function customAction(file, component) {\\n // return await component.uploadPut(file)\\n return await component.uploadHtml4(file)\\n }\\n ```\\n\\n\\n\\n### headers\\n\\n自定义上传请求 `header` 数据\\n\\n* **类型:** `Object`\\n\\n* **默认值:** `{}`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### data\\n\\n`POST 请求`: 附加请求的 body \\n`PUT 请求`: 附加请求的 query \\n\\n* **类型:** `Object`\\n\\n* **默认值:** `{}`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### value, v-model\\n\\n文件列表\\n\\n* **类型:** `Array`\\n\\n* **默认值:** `[]`\\n\\n* **详细:** \\n\\n 浏览 **[`File`](#file)** 详细信息 \\n > 为了防止不可预知的错误,不可直接修改 `files`,请使用 [`add`](#实例-方法-add), [`update`](#实例-方法-update), [`remove`](#实例-方法-remove) 方法修改\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### accept\\n\\n表单的`accept`属性, MIME type \\n\\n* **类型:** `String`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### multiple\\n\\n文件表单的 `multiple` 属性 \\n是否允许选择多个文件 \\n\\n* **类型:** `Boolean`\\n\\n* **默认值:** `false`\\n\\n* **详细:** \\n\\n 如果是 `false` `files` 里面最多只有一个文件 多的会自动删除 \\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n### directory\\n\\n文件表单的 `directory` 属性 \\n是否是上传文件夹 \\n\\n* **类型:** `Boolean`\\n\\n* **默认值:** `false`\\n\\n* **浏览器:** [http://caniuse.com/#feat=input-file-directory](http://caniuse.com/#feat=input-file-directory)\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### extensions\\n\\n允许上传的文件后缀\\n\\n* **类型:** `Array | String | RegExp`\\n\\n* **默认值:** `undefined`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n \\n \\n ```\\n\\n\\n\\n\\n### size\\n\\n允许上传的最大字节\\n\\n* **类型:** `Number`\\n\\n* **默认值:** `0`\\n\\n* **浏览器:** `> IE9`\\n\\n* **详细:**\\n\\n `0` 等于不限制\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### timeout\\n\\n上传超时时间毫秒\\n\\n* **类型:** `Number`\\n\\n* **默认值:** `0`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n### maximum\\n\\n列表最大文件数\\n\\n* **类型:** `Number`\\n\\n* **默认值:** `props.multiple ? 0 : 1`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### thread\\n\\n同时并发上传的文件数量 线程数 \\n\\n* **类型:** `Number`\\n\\n* **默认值:** `1`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### drop\\n\\n拖拽上传 \\n\\n* **类型:** `Boolean | Element | CSS selector`\\n\\n* **默认值:** `false`\\n\\n* **浏览器:** [http://caniuse.com/#feat=dragndrop](http://caniuse.com/#feat=dragndrop)\\n\\n* **详细:**\\n\\n 如果设置成 `true` 则读取父组件作为容器 \\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### drop-directory\\n\\n是否开启拖拽目录 \\n\\n* **类型:** `Boolean`\\n\\n* **默认值:** `true`\\n\\n* **详细:**\\n\\n 如果设置成 `false` 则过滤掉目录\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n### add-index\\n\\n* **类型:** `Boolean, Number`\\n\\n* **默认值:** `undefined`\\n\\n* **版本:** `>= 2.6.1`\\n\\n* **详细:**\\n\\n [`add()`](#实例-方法-add) 方法 `index` 参数的默认值\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n## 选项 / 事件\\n\\n文件被改变触发的方法 \\n默认用于`v-model`绑定\\n\\n### @input\\n* **参数:**\\n\\n * `files: Array`\\n\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n### @input-filter\\n\\nAdd, update, remove pre-filter \\n\\n* **参数:**\\n\\n * `newFile: File | Object | undefined` `读写`\\n * `oldFile: File | Object | undefined` `只读`\\n * `prevent: Function` 调用该方法 阻止修改\\n\\n\\n* **详细:**\\n\\n 如果 `newFile` 值为 `undefined` 则是删除 \\n 如果 `oldFile` 值为 `undefined` 则是添加 \\n 如果 `newFile`, `oldFile` 都存在则是更新\\n\\n > 事件内同步处理请直接修改 `newFile` \\n > 事件内异步处理请使用 `update`, `add`, `remove`, `clear` 方法 \\n > 异步请先设置一个错误以防止被上传\\n\\n > 同步不能使用 `update`, `add`, `remove`, `clear` 方法 \\n > 异步不能修改 `newFile`\\n\\n\\n* **示例:** \\n ```html\\n \\n \\n ```\\n\\n### @input-file\\n\\n添加,更新,移除 后\\n\\n* **参数:**\\n\\n * `newFile: File | Object | undefined` `只读`\\n * `oldFile: File | Object | undefined` `只读`\\n\\n\\n* **详细:**\\n\\n 如果 `newFile` 值为 `undefined` 则是删除 \\n 如果 `oldFile` 值为 `undefined` 则是添加 \\n 如果 `newFile`, `oldFile` 都存在则是更新\\n\\n >事件内可使用 `update`, `add`, `remove`, `clear` 方法 \\n >事件内不可修改 `newFile` 对象 \\n >事件内不可修改 `oldFile` 对象\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n## 实例 / 数据\\n\\n### features\\n\\n用于判断浏览器支持的特性\\n\\n* **类型:** `Object`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `{ html5: true, directory: false, drag: false }`\\n\\n* **示例:**\\n ```html\\n \\n \\n 支持拖拽上传\\n 支持文件夹上传\\n 支持HTML5\\n \\n ```\\n\\n\\n\\n### active\\n\\n激活或停止上传\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `false`\\n\\n* **示例:**\\n ```html\\n \\n \\n 开始上传\\n 停止上传\\n \\n ```\\n\\n\\n\\n### dropActive\\n\\n是否正在拖拽\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `false`\\n\\n* **示例:**\\n ```html\\n \\n \\n 拖拽到这里上传\\n \\n ```\\n\\n\\n\\n\\n\\n### uploaded\\n\\n是否全部已上传\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `true`\\n\\n* **示例:**\\n ```html\\n \\n \\n 全部文件已上传完毕\\n \\n ```\\n\\n\\n\\n\\n\\n## 实例 / 方法\\n\\n\\n\\n### get()\\n\\n使用`id`获得某个对象\\n\\n* **参数:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **结果:** `File | Object | Boolean` 存在返回文件对象否则返回 `false`\\n\\n\\n\\n### add()\\n\\n添加一个或多个文件\\n\\n* **参数:**\\n\\n * `files: Array | File | window.File | Object` 如果它是一个数组的响应将是一个数组\\n * `index: Number | Boolean` = [`props.add-index`](#选项-属性-add-index) `true = ` 开始位置, `false = ` 结束位置, `Number = ` 下标位置\\n\\n\\n* **结果:** `Object | Array | Boolean` 传入的是数组返回数组否则对象或`false`\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n### addInputFile()\\n\\n把``选择的文件添加进上传列表 \\n\\n* **参数:**\\n\\n * `el: HTMLInputElement` 文件元素\\n\\n\\n* **结果:** `Array` 返回已添加的文件列表\\n\\n* **版本:** : `>=2.5.1`\\n\\n\\n\\n### addDataTransfer()\\n\\n把拖拽或者粘贴的数据的文件添加进上传列表 \\n\\n* **参数:**\\n\\n * `dataTransfer: DataTransfer` 拖拽或者粘贴的数据\\n\\n\\n* **结果:** `Promise>` 返回已添加的文件列表\\n\\n\\n* **版本:** : `>=2.5.1`\\n\\n\\n\\n### update()\\n\\n更新某个对象\\n\\n* **参数:**\\n\\n * `id: File | Object | String`\\n * `data: Object` 更新的数据对象\\n\\n\\n* **结果:** `Object | Boolean` 成功返回 `newFile` 失败返回 `false`\\n\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n### remove()\\n\\n移除某个文件对象\\n\\n* **参数:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **结果:** `Object | Boolean` 成功返回 `oldFile` 失败返回 `false`\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n### replace()\\n 替换两个文件的位置\\n\\n* **参数:**\\n\\n * `id1: File | Object | String`\\n * `id2: File | Object | String`\\n\\n\\n* **结果:** `Boolean`\\n\\n\\n\\n### clear()\\n\\n清空文件列表\\n\\n* **结果:** `Boolean` 总是返回 `true`\\n\\n\\n\\n## 实例 / File\\n\\n\\n> **文件对象在`input-filter`事件外修改请使用 [`update`](#实例-方法-update) 方法**\\n\\n\\n### fileObject\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `true`\\n\\n* **Required:** `true`\\n\\n* **默认值:** `true`\\n\\n* **版本:** : `>=2.6.0`\\n\\n* **详细:**\\n\\n 如果属性不存在,则不会在内部处理该对象 \\n 如果属性不存在,它不是 `File` 而是 `Object`\\n\\n\\n\\n### id\\n\\n文件id\\n\\n* **类型:** `String | Number`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `Math.random().toString(36).substr(2)`\\n\\n* **详细:**\\n\\n >`id` can not be repeated \\n >Upload can not modify `id`\\n\\n\\n### size\\n\\n文件大小\\n\\n* **类型:** `Number`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `-1`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n### name\\n\\n文件名 \\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** ` `\\n\\n* **详细:**\\n\\n 格式: `directory/filename.gif` `filename.gif` \\n\\n\\n\\n### type\\n\\nMIME类型\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** ` `\\n\\n* **浏览器:** `> IE9`\\n\\n* **详细:**\\n\\n 格式: `image/gif` `image/png` `text/html`\\n\\n\\n\\n\\n### active\\n\\n激活或终止上传\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `false`\\n\\n* **详细:**\\n\\n `true` = 上传 \\n `false` = 停止 \\n\\n\\n\\n\\n\\n\\n### error\\n\\n上传失败错误代码\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** ` `\\n\\n* **详细:**\\n\\n 内置\\n `size`, `extension`, `timeout`, `abort`, `network`, `server`, `denied`\\n\\n\\n\\n\\n### success\\n\\n是否上传成功\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `false`\\n\\n\\n### putAction\\n\\n自定义当前文件 `PUT` 地址\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.putAction`\\n\\n\\n\\n### postAction\\n\\n自定义当前文件 `POST` 地址\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.postAction`\\n\\n\\n\\n\\n### headers\\n\\n自定义当前文件 `HTTP` Header\\n\\n* **类型:** `Object`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.headers`\\n\\n\\n### data\\n\\n自定义当前文件 `body` 或 `query` 附加内容\\n\\n* **类型:** `Object`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.data`\\n\\n\\n### timeout\\n\\n自定义当前单个文件的上传超时时间\\n\\n* **类型:** `Number`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.timeout`\\n\\n\\n### response\\n\\n响应的数据\\n\\n* **类型:** `Object | String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `{}`\\n\\n\\n\\n\\n### progress\\n\\n上传进度\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `0.00`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n\\n### speed\\n\\n每秒的上传速度\\n\\n* **类型:** `Number`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `0`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n\\n\\n### xhr\\n\\n`HTML5` 上传 `XMLHttpRequest` 对象\\n\\n* **类型:** `XMLHttpRequest`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n\\n\\n### iframe\\n\\n`HTML4` 上传 `iframe` 元素\\n\\n* **类型:** `Element`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `= IE9`\\n\"","module.exports = VueRouter;","module.exports = VueI18n;","module.exports = ImageCompressor;","var map = {\n\t\"./en\": 21,\n\t\"./en.md\": 21,\n\t\"./zh-cn\": 22,\n\t\"./zh-cn.md\": 22\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 27;","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.document-title {\\n margin-bottom: 2rem;\\n padding-bottom: 1rem;\\n border-bottom: 1px solid #ddd;\\n}\\n.document-content h2 {\\n padding-top: 1rem;\\n padding-bottom: 1rem;\\n margin-top: 4rem;\\n border-bottom: 1px solid #eaecef;\\n}\\n.document-content h2:first-child {\\n margin-top: 0;\\n}\\n.document-content h2 + h3 {\\n margin-top: 0rem;\\n}\\n.document-content h3 {\\n margin-top: 1.5rem;\\n padding-top: 1rem;\\n margin-bottom: 1rem;\\n}\\n\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../node_modules/vue-style-loader/index.js!../node_modules/css-loader/index.js??ref--2-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../node_modules/vue-style-loader/index.js!../node_modules/css-loader/index.js??ref--2-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\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[type=\\\"file\\\"] {\\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[type=\\\"file\\\"] {\\n overflow: hidden;\\n position: fixed;\\n width: 1px;\\n height: 1px;\\n z-index: -1;\\n opacity: 0;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-full .btn-group .dropdown-menu {\\n display: block;\\n visibility: hidden;\\n transition: all .2s\\n}\\n.example-full .btn-group:hover > .dropdown-menu {\\n visibility: visible;\\n}\\n.example-full label.dropdown-item {\\n margin-bottom: 0;\\n}\\n.example-full .btn-group .dropdown-toggle {\\n margin-right: .6rem\\n}\\n.example-full .filename {\\n margin-bottom: .3rem\\n}\\n.example-full .btn-is-option {\\n margin-top: 0.25rem;\\n}\\n.example-full .example-foorer {\\n padding: .5rem 0;\\n border-top: 1px solid #e9ecef;\\n border-bottom: 1px solid #e9ecef;\\n}\\n.example-full .edit-image img {\\n max-width: 100%;\\n}\\n.example-full .edit-image-tool {\\n margin-top: .6rem;\\n}\\n.example-full .edit-image-tool .btn-group{\\n margin-right: .6rem;\\n}\\n.example-full .footer-status {\\n padding-top: .4rem;\\n}\\n.example-full .drop-active {\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n position: fixed;\\n z-index: 9999;\\n opacity: .6;\\n text-align: center;\\n background: #000;\\n}\\n.example-full .drop-active h3 {\\n margin: -.5em 0 0;\\n position: absolute;\\n top: 50%;\\n left: 0;\\n right: 0;\\n -webkit-transform: translateY(-50%);\\n -ms-transform: translateY(-50%);\\n transform: translateY(-50%);\\n font-size: 40px;\\n color: #fff;\\n padding: 0;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-simple label.btn {\\n margin-bottom: 0;\\n margin-right: 1rem;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-avatar .avatar-upload .rounded-circle {\\n width: 200px;\\n height: 200px;\\n}\\n.example-avatar .text-center .btn {\\n margin: 0 .5rem\\n}\\n.example-avatar .avatar-edit-image {\\n max-width: 100%\\n}\\n.example-avatar .drop-active {\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n position: fixed;\\n z-index: 9999;\\n opacity: .6;\\n text-align: center;\\n background: #000;\\n}\\n.example-avatar .drop-active h3 {\\n margin: -.5em 0 0;\\n position: absolute;\\n top: 50%;\\n left: 0;\\n right: 0;\\n -webkit-transform: translateY(-50%);\\n -ms-transform: translateY(-50%);\\n transform: translateY(-50%);\\n font-size: 40px;\\n color: #fff;\\n padding: 0;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-drag label.btn {\\n margin-bottom: 0;\\n margin-right: 1rem;\\n}\\n.example-drag .drop-active {\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n position: fixed;\\n z-index: 9999;\\n opacity: .6;\\n text-align: center;\\n background: #000;\\n}\\n.example-drag .drop-active h3 {\\n margin: -.5em 0 0;\\n position: absolute;\\n top: 50%;\\n left: 0;\\n right: 0;\\n -webkit-transform: translateY(-50%);\\n -ms-transform: translateY(-50%);\\n transform: translateY(-50%);\\n font-size: 40px;\\n color: #fff;\\n padding: 0;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-multiple label.btn {\\n margin-bottom: 0;\\n margin-right: 1rem;\\n}\\n.example-multiple .upload {\\n margin-bottom: 1rem;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-simple label.btn {\\n margin-bottom: 0;\\n margin-right: 1rem;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=1&id=c205936e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=1&id=c205936e&scoped=true&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.chunk-loading[data-v-c205936e] {\\n margin: -12px;\\n display: flex;\\n width: calc(100% + 24px);\\n}\\n.chunk-loading .chunk-loading-part[data-v-c205936e] {\\n height: 25px;\\n line-height: 25px;\\n flex: 1;\\n background: #ccc;\\n font-size: 14px;\\n color: white;\\n text-align: center;\\n}\\n.chunk-loading .chunk-loading-part.chunk-loading-part__uploaded[data-v-c205936e] {\\n background: #28A745;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-vuex label.btn {\\n margin-bottom: 0;\\n margin-right: 1rem;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n#header {\\n position: -webkit-sticky;\\n position: sticky;\\n top: 0;\\n z-index: 1071;\\n}\\n#sidebar {\\n background: #fff;\\n border-right: 1px solid #e5e5e5;\\n border-bottom: 1px solid #e5e5e5;\\n}\\n@media (min-width: 768px) {\\n#sidebar {\\n position: -webkit-sticky;\\n position: sticky;\\n top: 3.5rem;\\n z-index: 1000;\\n max-height: calc(100vh - 3.5rem);\\n border-right: 1px solid #e5e5e5;\\n border-bottom: 1px solid #e5e5e5;\\n}\\n}\\n#sidebar-nav {\\n padding-top: 1rem;\\n padding-bottom: 1rem;\\n margin-right: -15px;\\n margin-left: -15px;\\n max-height: 100%;\\n overflow-y: auto;\\n}\\n#sidebar-nav .nav {\\n display: block;\\n}\\n#sidebar-nav .nav .nav-item .nav {\\n display: none;\\n margin-bottom: 1rem;\\n}\\n#sidebar-nav .nav .nav-item .nav {\\n display: none;\\n margin-bottom: 1rem;\\n}\\n#sidebar-nav .nav .nav-item.active .nav, #sidebar-nav .nav .active + .nav {\\n display: block;\\n}\\n@media (min-width: 768px) {\\n#sidebar-nav .nav .nav-item .nav {\\n display: block;\\n}\\n}\\n#sidebar-nav .nav .nav-link.active, #sidebar-nav .nav .active > .nav-link{\\n color: #262626;\\n font-weight: 500;\\n}\\n#sidebar-nav .nav-item .nav-link {\\n padding: .25rem 1rem;\\n font-weight: 500;\\n color: #666\\n}\\n#sidebar-nav .nav-item .nav-item .nav-link {\\n font-weight: 400;\\n font-size: 85%;\\n margin-left: 1rem\\n}\\n#main {\\n padding-top: 1rem;\\n margin-bottom: 2rem\\n}\\nblockquote {\\n margin-bottom: 1rem;\\n font-size: 1.25rem;\\n padding: 0 1em;\\n color: #6a737d;\\n border-left: 0.25em solid #dfe2e5;\\n}\\npre {\\n padding: 16px;\\n overflow: auto;\\n font-size: 85%;\\n line-height: 1.45;\\n background-color: #f6f8fa;\\n border-radius: 3px;\\n}\\n.modal-backdrop.fade {\\n visibility: hidden;\\n}\\n.modal-backdrop.fade.show {\\n visibility: visible;\\n}\\n.fade.show {\\n display: block;\\n z-index: 1072;\\n}\\n\", \"\"]);\n\n// exports\n","// import Vue from 'vue'\nimport Vuex from 'vuex'\n//\n// Vue.use(Vuex)\n\n\nconst state = {\n files: [],\n}\n\nconst mutations = {\n updateFiles(state, files) {\n state.files = files\n }\n}\nexport default new Vuex.Store({\n strict: true,\n state,\n mutations\n})\n","// import Vue from 'vue'\nimport VueI18n from 'vue-i18n'\nimport en from './en'\nimport zhCN from './zh-cn'\n\n// Vue.use(VueI18n)\n\nexport default new VueI18n({\n locale: 'en',\n messages: {\n 'zh-cn': zhCN,\n en,\n }\n})\n","export default {\n header: {\n logo: 'Vuejs',\n home: '首页',\n examples: '演示',\n documents: '文档',\n blog: 'Blog',\n locale: 'Language(语言)',\n issues: 'Issues',\n github: 'Github',\n },\n\n locale: {\n en: 'English',\n 'zh-cn': '中文(简体)',\n },\n\n document: {\n title: '文档',\n },\n\n\n example: {\n full: '完整例子',\n simple: '简单例子',\n avatar: '上传头像',\n drag: '拖拽上传',\n multiple: '多个实例',\n vuex: 'Vuex',\n }\n}\n","export default {\n header: {\n logo: 'Vuejs',\n home: 'Home',\n examples: 'Examples',\n documents: 'Documentation',\n blog: 'Blog',\n locale: 'Language(语言)',\n issues: 'Issues',\n github: 'Github',\n },\n\n locale: {\n en: 'English',\n 'zh-cn': '中文(简体)',\n },\n\n document: {\n title: 'Documentation',\n },\n\n example: {\n full: 'Full Example',\n simple: 'Simple',\n avatar: 'Upload avatar',\n drag: 'Drag and drop',\n multiple: 'Multiple instances',\n chunk: 'Chunk upload',\n vuex: 'Vuex',\n }\n}\n","import { render, staticRenderFns } from \"./Router.vue?vue&type=template&id=3075fd62&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-view')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./Document.vue?vue&type=template&id=61209807&\"\nimport script from \"./Document.vue?vue&type=script&lang=js&\"\nexport * from \"./Document.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Document.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"row flex-xl-nowrap\"},[_c('div',{staticClass:\"col-12 col-md-3 col-xl-2\",attrs:{\"id\":\"sidebar\"}},[_c('nav',{staticClass:\"collapse show\",attrs:{\"id\":\"sidebar-nav\"}},[_c('ul',{staticClass:\"nav\"},_vm._l((_vm.navs),function(group,index){return _c('li',{class:{'nav-item': true, active: (!_vm.$route.hash && !index) || _vm.$route.hash.indexOf(group.hash) === 1}},[_c('router-link',{class:{'nav-link': true, active: _vm.$route.hash.indexOf(group.hash) === 1},attrs:{\"active-class\":\"active\",\"to\":'#' + group.hash}},[_vm._v(_vm._s(group.name))]),_vm._v(\" \"),(group.children.length)?_c('ul',{staticClass:\"nav\"},_vm._l((group.children),function(child){return _c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":'#' + group.hash + '-' + child.hash}},[_vm._v(_vm._s(child.name))])],1)})):_vm._e()],1)}))])]),_vm._v(\" \"),_c('main',{staticClass:\"col-12 col-md-9 col-xl-10 py-md-3 pr-md-5 pl-md-5\",attrs:{\"id\":\"main\",\"role\":\"main\"}},[_c('h1',{staticClass:\"document-title\",attrs:{\"id\":\"document-title\"}},[_vm._v(_vm._s(_vm.$t('document.title')))]),_vm._v(\" \"),_c('div',{directives:[{name:\"markdown\",rawName:\"v-markdown\"}],staticClass:\"document-content\"},[_vm._v(_vm._s(_vm.document))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Example.vue?vue&type=template&id=02498012&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"row flex-xl-nowrap\"},[_c('div',{staticClass:\"col-12 col-md-3 col-xl-2\",attrs:{\"id\":\"sidebar\"}},[_c('nav',{staticClass:\"collapse show\",attrs:{\"id\":\"sidebar-nav\"}},[_c('ul',{staticClass:\"nav\"},[_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/full')}},[_vm._v(_vm._s(_vm.$t('example.full')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/simple')}},[_vm._v(_vm._s(_vm.$t('example.simple')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/avatar')}},[_vm._v(_vm._s(_vm.$t('example.avatar')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/drag')}},[_vm._v(_vm._s(_vm.$t('example.drag')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/multiple')}},[_vm._v(_vm._s(_vm.$t('example.multiple')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/chunk')}},[_vm._v(_vm._s(_vm.$t('example.chunk')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/vuex')}},[_vm._v(_vm._s(_vm.$t('example.vuex')))])],1)])])]),_vm._v(\" \"),_c('main',{staticClass:\"col-12 col-md-9 col-xl-10 py-md-3 pr-md-5 pl-md-5\",attrs:{\"id\":\"main\",\"role\":\"main\"}},[_c('router-view')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./Full.vue?vue&type=template&id=c2419f2a&\"\nimport script from \"./Full.vue?vue&type=script&lang=js&\"\nexport * from \"./Full.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Full.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-full\"},[_c('button',{staticClass:\"btn btn-danger float-right btn-is-option\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.isOption = !_vm.isOption}}},[_c('i',{staticClass:\"fa fa-cog\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Options\\n \")]),_vm._v(\" \"),_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Full Example\")]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$refs.upload && _vm.$refs.upload.dropActive),expression:\"$refs.upload && $refs.upload.dropActive\"}],staticClass:\"drop-active\"},[_c('h3',[_vm._v(\"Drop files to upload\")])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isOption),expression:\"!isOption\"}],staticClass:\"upload\"},[_c('div',{staticClass:\"table-responsive\"},[_c('table',{staticClass:\"table table-hover\"},[_vm._m(0),_vm._v(\" \"),_c('tbody',[(!_vm.files.length)?_c('tr',[_c('td',{attrs:{\"colspan\":\"7\"}},[_c('div',{staticClass:\"text-center p-5\"},[_vm._m(1),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-lg btn-primary\",attrs:{\"for\":_vm.name}},[_vm._v(\"Select Files\")])])])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.files),function(file,index){return _c('tr',{key:file.id},[_c('td',[_vm._v(_vm._s(index))]),_vm._v(\" \"),_c('td',[(file.thumb)?_c('img',{attrs:{\"src\":file.thumb,\"width\":\"40\",\"height\":\"auto\"}}):_c('span',[_vm._v(\"No Image\")])]),_vm._v(\" \"),_c('td',[_c('div',{staticClass:\"filename\"},[_vm._v(\"\\n \"+_vm._s(file.name)+\"\\n \")]),_vm._v(\" \"),(file.active || file.progress !== '0.00')?_c('div',{staticClass:\"progress\"},[_c('div',{class:{'progress-bar': true, 'progress-bar-striped': true, 'bg-danger': file.error, 'progress-bar-animated': file.active},style:({width: file.progress + '%'}),attrs:{\"role\":\"progressbar\"}},[_vm._v(_vm._s(file.progress)+\"%\")])]):_vm._e()]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.speed)))]),_vm._v(\" \"),(file.error)?_c('td',[_vm._v(_vm._s(file.error))]):(file.success)?_c('td',[_vm._v(\"success\")]):(file.active)?_c('td',[_vm._v(\"active\")]):_c('td'),_vm._v(\" \"),_c('td',[_c('div',{staticClass:\"btn-group\"},[_c('button',{staticClass:\"btn btn-secondary btn-sm dropdown-toggle\",attrs:{\"type\":\"button\"}},[_vm._v(\"\\n Action\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-menu\"},[_c('a',{class:{'dropdown-item': true, disabled: file.active || file.success || file.error === 'compressing'},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();file.active || file.success || file.error === 'compressing' ? false : _vm.onEditFileShow(file)}}},[_vm._v(\"Edit\")]),_vm._v(\" \"),_c('a',{class:{'dropdown-item': true, disabled: !file.active},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();file.active ? _vm.$refs.upload.update(file, {error: 'cancel'}) : false}}},[_vm._v(\"Cancel\")]),_vm._v(\" \"),(file.active)?_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.update(file, {active: false})}}},[_vm._v(\"Abort\")]):(file.error && file.error !== 'compressing' && _vm.$refs.upload.features.html5)?_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.update(file, {active: true, error: '', progress: '0.00'})}}},[_vm._v(\"Retry upload\")]):_c('a',{class:{'dropdown-item': true, disabled: file.success || file.error === 'compressing'},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();file.success || file.error === 'compressing' ? false : _vm.$refs.upload.update(file, {active: true})}}},[_vm._v(\"Upload\")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\"}),_vm._v(\" \"),_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.remove(file)}}},[_vm._v(\"Remove\")])])])])])})],2)])]),_vm._v(\" \"),_c('div',{staticClass:\"example-foorer\"},[_c('div',{staticClass:\"footer-status float-right\"},[_vm._v(\"\\n Drop: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.drop : false)+\",\\n Active: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.active : false)+\",\\n Uploaded: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.uploaded : true)+\",\\n Drop active: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.dropActive : false)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"btn-group\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary dropdown-toggle\",attrs:{\"post-action\":_vm.postAction,\"put-action\":_vm.putAction,\"extensions\":_vm.extensions,\"accept\":_vm.accept,\"multiple\":_vm.multiple,\"directory\":_vm.directory,\"size\":_vm.size || 0,\"thread\":_vm.thread < 1 ? 1 : (_vm.thread > 5 ? 5 : _vm.thread),\"headers\":_vm.headers,\"data\":_vm.data,\"drop\":_vm.drop,\"drop-directory\":_vm.dropDirectory,\"add-index\":_vm.addIndex},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-menu\"},[_c('label',{staticClass:\"dropdown-item\",attrs:{\"for\":_vm.name}},[_vm._v(\"Add files\")]),_vm._v(\" \"),_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.onAddFolader}},[_vm._v(\"Add folder\")]),_vm._v(\" \"),_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.addData.show = true}}},[_vm._v(\"Add data\")])])],1),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isOption),expression:\"isOption\"}],staticClass:\"option\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"accept\"}},[_vm._v(\"Accept:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.accept),expression:\"accept\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"accept\"},domProps:{\"value\":(_vm.accept)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.accept=$event.target.value}}}),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Allow upload mime type\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"extensions\"}},[_vm._v(\"Extensions:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.extensions),expression:\"extensions\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"extensions\"},domProps:{\"value\":(_vm.extensions)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.extensions=$event.target.value}}}),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Allow upload file extension\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"PUT Upload:\")]),_vm._v(\" \"),_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.putAction),expression:\"putAction\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"radio\",\"name\":\"put-action\",\"id\":\"put-action\",\"value\":\"\"},domProps:{\"checked\":_vm._q(_vm.putAction,\"\")},on:{\"change\":function($event){_vm.putAction=\"\"}}}),_vm._v(\" Off\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.putAction),expression:\"putAction\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"radio\",\"name\":\"put-action\",\"id\":\"put-action\",\"value\":\"/upload/put\"},domProps:{\"checked\":_vm._q(_vm.putAction,\"/upload/put\")},on:{\"change\":function($event){_vm.putAction=\"/upload/put\"}}}),_vm._v(\" On\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"After the shutdown, use the POST method to upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"thread\"}},[_vm._v(\"Thread:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.thread),expression:\"thread\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"max\":\"5\",\"min\":\"1\",\"id\":\"thread\"},domProps:{\"value\":(_vm.thread)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.thread=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}}),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Also upload the number of files at the same time (number of threads)\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"size\"}},[_vm._v(\"Max size:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.size),expression:\"size\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"min\":\"0\",\"id\":\"size\"},domProps:{\"value\":(_vm.size)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.size=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"minSize\"}},[_vm._v(\"Min size:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.minSize),expression:\"minSize\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"min\":\"0\",\"id\":\"minSize\"},domProps:{\"value\":(_vm.minSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.minSize=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"autoCompress\"}},[_vm._v(\"Automatically compress:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.autoCompress),expression:\"autoCompress\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"min\":\"0\",\"id\":\"autoCompress\"},domProps:{\"value\":(_vm.autoCompress)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.autoCompress=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}}),_vm._v(\" \"),(_vm.autoCompress > 0)?_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"More than \"+_vm._s(_vm._f(\"formatSize\")(_vm.autoCompress))+\" files are automatically compressed\")]):_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Set up automatic compression\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addIndex),expression:\"addIndex\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"add-index\"},domProps:{\"checked\":Array.isArray(_vm.addIndex)?_vm._i(_vm.addIndex,null)>-1:(_vm.addIndex)},on:{\"change\":function($event){var $$a=_vm.addIndex,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.addIndex=$$a.concat([$$v]))}else{$$i>-1&&(_vm.addIndex=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.addIndex=$$c}}}}),_vm._v(\" Start position to add\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Add a file list to start the location to add\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.drop),expression:\"drop\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"drop\"},domProps:{\"checked\":Array.isArray(_vm.drop)?_vm._i(_vm.drop,null)>-1:(_vm.drop)},on:{\"change\":function($event){var $$a=_vm.drop,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.drop=$$a.concat([$$v]))}else{$$i>-1&&(_vm.drop=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.drop=$$c}}}}),_vm._v(\" Drop\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Drag and drop upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.dropDirectory),expression:\"dropDirectory\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"drop-directory\"},domProps:{\"checked\":Array.isArray(_vm.dropDirectory)?_vm._i(_vm.dropDirectory,null)>-1:(_vm.dropDirectory)},on:{\"change\":function($event){var $$a=_vm.dropDirectory,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.dropDirectory=$$a.concat([$$v]))}else{$$i>-1&&(_vm.dropDirectory=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.dropDirectory=$$c}}}}),_vm._v(\" Drop directory\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Not checked, filter the dragged folder\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.uploadAuto),expression:\"uploadAuto\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"upload-auto\"},domProps:{\"checked\":Array.isArray(_vm.uploadAuto)?_vm._i(_vm.uploadAuto,null)>-1:(_vm.uploadAuto)},on:{\"change\":function($event){var $$a=_vm.uploadAuto,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.uploadAuto=$$a.concat([$$v]))}else{$$i>-1&&(_vm.uploadAuto=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.uploadAuto=$$c}}}}),_vm._v(\" Auto start\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Automatically activate upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('button',{staticClass:\"btn btn-primary btn-lg btn-block\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.isOption = !_vm.isOption}}},[_vm._v(\"Confirm\")])])]),_vm._v(\" \"),_c('div',{class:{'modal-backdrop': true, 'fade': true, show: _vm.addData.show}}),_vm._v(\" \"),_c('div',{class:{modal: true, fade: true, show: _vm.addData.show},attrs:{\"id\":\"modal-add-data\",\"tabindex\":\"-1\",\"role\":\"dialog\"}},[_c('div',{staticClass:\"modal-dialog\",attrs:{\"role\":\"document\"}},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"modal-header\"},[_c('h5',{staticClass:\"modal-title\"},[_vm._v(\"Add data\")]),_vm._v(\" \"),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.addData.show = false}}},[_c('span',[_vm._v(\"×\")])])]),_vm._v(\" \"),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.onAddData($event)}}},[_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"name\"}},[_vm._v(\"Name:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addData.name),expression:\"addData.name\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"required\":\"\",\"id\":\"name\",\"placeholder\":\"Please enter a file name\"},domProps:{\"value\":(_vm.addData.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.addData, \"name\", $event.target.value)}}}),_vm._v(\" \"),_vm._m(2)]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"type\"}},[_vm._v(\"Type:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addData.type),expression:\"addData.type\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"required\":\"\",\"id\":\"type\",\"placeholder\":\"Please enter the MIME type\"},domProps:{\"value\":(_vm.addData.type)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.addData, \"type\", $event.target.value)}}}),_vm._v(\" \"),_vm._m(3)]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"content\"}},[_vm._v(\"Content:\")]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addData.content),expression:\"addData.content\"}],staticClass:\"form-control\",attrs:{\"required\":\"\",\"id\":\"content\",\"rows\":\"3\",\"placeholder\":\"Please enter the file contents\"},domProps:{\"value\":(_vm.addData.content)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.addData, \"content\", $event.target.value)}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"modal-footer\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.addData.show = false}}},[_vm._v(\"Close\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\"Save\")])])])])])]),_vm._v(\" \"),_c('div',{class:{'modal-backdrop': true, 'fade': true, show: _vm.editFile.show}}),_vm._v(\" \"),_c('div',{class:{modal: true, fade: true, show: _vm.editFile.show},attrs:{\"id\":\"modal-edit-file\",\"tabindex\":\"-1\",\"role\":\"dialog\"}},[_c('div',{staticClass:\"modal-dialog modal-lg\",attrs:{\"role\":\"document\"}},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"modal-header\"},[_c('h5',{staticClass:\"modal-title\"},[_vm._v(\"Edit file\")]),_vm._v(\" \"),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.editFile.show = false}}},[_c('span',[_vm._v(\"×\")])])]),_vm._v(\" \"),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.onEditorFile($event)}}},[_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"name\"}},[_vm._v(\"Name:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.editFile.name),expression:\"editFile.name\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"required\":\"\",\"id\":\"name\",\"placeholder\":\"Please enter a file name\"},domProps:{\"value\":(_vm.editFile.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.editFile, \"name\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.editFile.show && _vm.editFile.blob && _vm.editFile.type && _vm.editFile.type.substr(0, 6) === 'image/')?_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Image: \")]),_vm._v(\" \"),_c('div',{staticClass:\"edit-image\"},[_c('img',{ref:\"editImage\",attrs:{\"src\":_vm.editFile.blob}})]),_vm._v(\" \"),_c('div',{staticClass:\"edit-image-tool\"},[_c('div',{staticClass:\"btn-group\",attrs:{\"role\":\"group\"}},[_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.rotate(-90)\"},on:{\"click\":function($event){_vm.editFile.cropper.rotate(-90)}}},[_c('i',{staticClass:\"fa fa-undo\",attrs:{\"aria-hidden\":\"true\"}})]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.rotate(90)\"},on:{\"click\":function($event){_vm.editFile.cropper.rotate(90)}}},[_c('i',{staticClass:\"fa fa-repeat\",attrs:{\"aria-hidden\":\"true\"}})])]),_vm._v(\" \"),_c('div',{staticClass:\"btn-group\",attrs:{\"role\":\"group\"}},[_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.crop()\"},on:{\"click\":function($event){_vm.editFile.cropper.crop()}}},[_c('i',{staticClass:\"fa fa-check\",attrs:{\"aria-hidden\":\"true\"}})]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.clear()\"},on:{\"click\":function($event){_vm.editFile.cropper.clear()}}},[_c('i',{staticClass:\"fa fa-remove\",attrs:{\"aria-hidden\":\"true\"}})])])])]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"modal-footer\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.editFile.show = false}}},[_vm._v(\"Close\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\"Save\")])])])])])]),_vm._v(\" \"),_vm._m(4)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"#\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Thumb\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Name\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Size\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Speed\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Status\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Action\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',[_vm._v(\"Drop files anywhere to upload\"),_c('br'),_vm._v(\"or\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Such as \"),_c('code',[_vm._v(\"filename.txt\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Such as \"),_c('code',[_vm._v(\"text/plain\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Full.vue\"}},[_vm._v(\"/docs/views/examples/Full.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./Simple.vue?vue&type=template&id=3576474f&\"\nimport script from \"./Simple.vue?vue&type=script&lang=js&\"\nexport * from \"./Simple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Simple.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-simple\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Simple Example\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"multiple\":true,\"size\":1024 * 1024 * 10},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Simple.vue\"}},[_vm._v(\"/docs/views/examples/Simple.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Avatar.vue?vue&type=template&id=7343c9e0&\"\nimport script from \"./Avatar.vue?vue&type=script&lang=js&\"\nexport * from \"./Avatar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Avatar.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-avatar\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$refs.upload && _vm.$refs.upload.dropActive),expression:\"$refs.upload && $refs.upload.dropActive\"}],staticClass:\"drop-active\"},[_c('h3',[_vm._v(\"Drop files to upload\")])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.edit),expression:\"!edit\"}],staticClass:\"avatar-upload\"},[_c('div',{staticClass:\"text-center p-2\"},[_c('label',{attrs:{\"for\":\"avatar\"}},[_c('img',{staticClass:\"rounded-circle\",attrs:{\"src\":_vm.files.length ? _vm.files[0].url : 'https://www.gravatar.com/avatar/default?s=200&r=pg&d=mm'}}),_vm._v(\" \"),_vm._m(0)])]),_vm._v(\" \"),_c('div',{staticClass:\"text-center p-2\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"name\":\"avatar\",\"post-action\":\"/upload/post\",\"drop\":!_vm.edit},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_vm._v(\"\\n Upload avatar\\n \")])],1)]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.files.length && _vm.edit),expression:\"files.length && edit\"}],staticClass:\"avatar-edit\"},[(_vm.files.length)?_c('div',{staticClass:\"avatar-edit-image\"},[_c('img',{ref:\"editImage\",attrs:{\"src\":_vm.files[0].url}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text-center p-4\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$refs.upload.clear($event)}}},[_vm._v(\"Cancel\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"submit\"},on:{\"click\":function($event){$event.preventDefault();return _vm.editSave($event)}}},[_vm._v(\"Save\")])])]),_vm._v(\" \"),_vm._m(1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',{staticClass:\"pt-2\"},[_vm._v(\"or\"),_c('br'),_vm._v(\"Drop files anywhere to upload\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Avatar.vue\"}},[_vm._v(\"/docs/views/examples/Avatar.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./Drag.vue?vue&type=template&id=78f5a515&\"\nimport script from \"./Drag.vue?vue&type=script&lang=js&\"\nexport * from \"./Drag.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Drag.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-drag\"},[_c('div',{staticClass:\"upload\"},[(_vm.files.length)?_c('ul',_vm._l((_vm.files),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})):_c('ul',[_vm._m(0)]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$refs.upload && _vm.$refs.upload.dropActive),expression:\"$refs.upload && $refs.upload.dropActive\"}],staticClass:\"drop-active\"},[_c('h3',[_vm._v(\"Drop files to upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"multiple\":true,\"drop\":true,\"drop-directory\":true},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',{attrs:{\"colspan\":\"7\"}},[_c('div',{staticClass:\"text-center p-5\"},[_c('h4',[_vm._v(\"Drop files anywhere to upload\"),_c('br'),_vm._v(\"or\")]),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-lg btn-primary\",attrs:{\"for\":\"file\"}},[_vm._v(\"Select Files\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Drag.vue\"}},[_vm._v(\"/docs/views/examples/Drag.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./Multiple.vue?vue&type=template&id=3d82a174&\"\nimport script from \"./Multiple.vue?vue&type=script&lang=js&\"\nexport * from \"./Multiple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Multiple.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-multiple\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Multiple instances\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files1),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload1\",staticClass:\"btn btn-primary\",attrs:{\"input-id\":\"file1\",\"post-action\":\"/upload/post\"},model:{value:(_vm.files1),callback:function ($$v) {_vm.files1=$$v},expression:\"files1\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-primary\",attrs:{\"for\":\"file1\"}},[_vm._v(\"Label Select files\")]),_vm._v(\" \"),(!_vm.$refs.upload1 || !_vm.$refs.upload1.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload1.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload1.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files2),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload2\",staticClass:\"btn btn-primary\",attrs:{\"input-id\":\"file2\",\"post-action\":\"/upload/post\"},model:{value:(_vm.files2),callback:function ($$v) {_vm.files2=$$v},expression:\"files2\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-primary\",attrs:{\"for\":\"file2\"}},[_vm._v(\"Label Select files\")]),_vm._v(\" \"),(!_vm.$refs.upload2 || !_vm.$refs.upload2.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload2.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload2.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Multiple.vue\"}},[_vm._v(\"/docs/views/examples/Multiple.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import { render, staticRenderFns } from \"./Chunk.vue?vue&type=template&id=c205936e&scoped=true&\"\nimport script from \"./Chunk.vue?vue&type=script&lang=js&\"\nexport * from \"./Chunk.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Chunk.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./Chunk.vue?vue&type=style&index=1&id=c205936e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c205936e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-simple\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Chunk Upload Example\")]),_vm._v(\" \"),_c('p',[_vm._v(\"When using chunk uploads, the file will be uploaded in different parts (or chunks). All the files with a size higher than the set in the input will be uploaded using this method.\")]),_vm._v(\" \"),_vm._m(0),_vm._v(\" \"),_c('p',[_vm._v(\"You can also pause / resume the upload process.\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('div',{staticClass:\"form-horizontal\"},[_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"col-sm-offset-2 col-sm-10\"},[_c('div',{staticClass:\"checkbox\"},[_c('label',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkEnabled),expression:\"chunkEnabled\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.chunkEnabled)?_vm._i(_vm.chunkEnabled,null)>-1:(_vm.chunkEnabled)},on:{\"change\":function($event){var $$a=_vm.chunkEnabled,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.chunkEnabled=$$a.concat([$$v]))}else{$$i>-1&&(_vm.chunkEnabled=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.chunkEnabled=$$c}}}}),_vm._v(\" Use chunk upload\\n \")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"inputMinSize\"}},[_vm._v(\"Min Size\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10\"},[_c('div',{staticClass:\"input-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkMinSize),expression:\"chunkMinSize\"}],staticClass:\"form-control\",attrs:{\"id\":\"inputMinSize\",\"type\":\"number\"},domProps:{\"value\":(_vm.chunkMinSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.chunkMinSize=$event.target.value}}}),_vm._v(\" \"),_c('span',{staticClass:\"input-group-addon\"},[_vm._v(\"MB\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"inputMaxActive\"}},[_vm._v(\"Max Active Chunks\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkMaxActive),expression:\"chunkMaxActive\"}],staticClass:\"form-control\",attrs:{\"id\":\"inputMaxActive\",\"type\":\"number\"},domProps:{\"value\":(_vm.chunkMaxActive)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.chunkMaxActive=$event.target.value}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"inputMaxRetries\"}},[_vm._v(\"Max Chunk Retries\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkMaxRetries),expression:\"chunkMaxRetries\"}],staticClass:\"form-control\",attrs:{\"id\":\"inputMaxRetries\",\"type\":\"number\"},domProps:{\"value\":(_vm.chunkMaxRetries)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.chunkMaxRetries=$event.target.value}}})])])]),_vm._v(\" \"),_c('table',{staticClass:\"table table-striped table-condensed\"},[_vm._m(1),_vm._v(\" \"),_c('tbody',[_vm._l((_vm.files),function(file){return [_c('tr',{key:file.id + '-info'},[_c('td',[_vm._v(_vm._s(file.name))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.progress)+\"%\")]),_vm._v(\" \"),(file.error)?_c('td',[_vm._v(_vm._s(file.error))]):(file.success)?_c('td',[_vm._v(\"Success\")]):(file.active)?_c('td',[_vm._v(\"Active\")]):_c('td',[_vm._v(\" - \")]),_vm._v(\" \"),_c('td',[(file.chunk)?[(file.active)?_c('button',{staticClass:\"btn btn-sm btn-danger\",on:{\"click\":function($event){file.chunk.pause()}}},[_c('i',{staticClass:\"fa fa-pause\"})]):_vm._e(),_vm._v(\" \"),(!file.active && file.chunk.hasChunksToUpload)?_c('button',{staticClass:\"btn btn-sm btn-primary\",on:{\"click\":function($event){file.chunk.resume()}}},[_c('i',{staticClass:\"fa fa-play\"})]):_vm._e()]:_vm._e()],2),_vm._v(\" \"),(file.chunk)?[_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.chunk.chunks.length))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.chunk.chunksUploading.length))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.chunk.chunksUploaded.length))])]:[_c('td',{staticClass:\"text-right\"},[_vm._v(\" - \")]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(\" - \")]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(\" - \")])]],2),_vm._v(\" \"),_c('tr',{key:file.id + '-loading'},[_c('td',{attrs:{\"colspan\":\"8\"}},[(file.chunk)?_c('div',{staticClass:\"chunk-loading\"},_vm._l((file.chunk.chunks),function(chunk,index){return _c('span',{key:index,staticClass:\"chunk-loading-part\",class:{'chunk-loading-part__uploaded': chunk.uploaded}},[(chunk.retries != file.chunk.maxRetries)?[_vm._v(\"\\n \"+_vm._s(file.chunk.maxRetries - chunk.retries)+\" error(s)\\n \")]:_vm._e()],2)})):_vm._e()])])]})],2)]),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"chunk-enabled\":_vm.chunkEnabled,\"chunk\":{\n action: '/upload/chunk',\n minSize: _vm.chunkMinSize * 1048576,\n maxActive: _vm.chunkMaxActive,\n maxRetries: _vm.chunkMaxRetries\n },\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"multiple\":true,\"size\":1024 * 1024 * 10},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")])],1)]),_vm._v(\" \"),_vm._m(2)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"You will be able to see the different parts being uploaded individually. Some parts might fail, and the package is prepared to \"),_c('em',[_vm._v(\"retry\")]),_vm._v(\" up to a certain amount of times.\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',{staticClass:\"thead-dark\"},[_c('tr',[_c('th',[_vm._v(\"Name\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Size\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Progress\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Status\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Pause\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-center\",attrs:{\"colspan\":\"3\"}},[_vm._v(\"Chunks\")])]),_vm._v(\" \"),_c('tr',[_c('th',{attrs:{\"colspan\":\"5\"}}),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Total\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Active\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Completed\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Chunk.vue\"}},[_vm._v(\"/docs/views/examples/Chunk.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=script&lang=js&\"","\n\n\n\n","// import Vue from 'vue'\nimport VueRouter from 'vue-router'\n\nimport i18n from './i18n'\nimport RouterComponent from './views/Router'\nimport DocumentComponent from './views/Document'\nimport ExampleComponent from './views/Example'\n\nimport FullExampleComponent from './views/examples/Full'\nimport SimpleExampleComponent from './views/examples/Simple'\nimport AvatarExampleComponent from './views/examples/Avatar'\nimport DragExampleComponent from './views/examples/Drag'\nimport MultipleExampleComponent from './views/examples/Multiple'\nimport ChunkExampleComponent from './views/examples/Chunk'\nimport VuexExampleComponent from './views/examples/Vuex'\n\n\n\n// Vue.use(VueRouter)\n\n\nlet examples = [\n {\n path: '',\n component: FullExampleComponent,\n },\n {\n path: 'full',\n component: FullExampleComponent,\n },\n {\n path: 'simple',\n component: SimpleExampleComponent,\n },\n {\n path: 'avatar',\n component: AvatarExampleComponent,\n },\n {\n path: 'drag',\n component: DragExampleComponent,\n },\n {\n path: 'multiple',\n component: MultipleExampleComponent,\n },\n {\n path: 'chunk',\n component: ChunkExampleComponent,\n },\n {\n path: 'vuex',\n component: VuexExampleComponent,\n },\n]\n\n\n\nconst router = new VueRouter({\n mode: 'hash',\n fallback: false,\n scrollBehavior(to, from, savedPosition) {\n if (savedPosition) {\n return savedPosition\n } else if (to.hash) {\n let el = document.querySelector(to.hash)\n return { x: 0, y: el ? el.offsetTop : 0 }\n } else {\n return { x: 0, y: 0 }\n }\n },\n routes: [\n {\n path: '/:locale(' + Object.keys(i18n.messages).join('|') + ')?',\n component: RouterComponent,\n children: [\n {\n path: 'documents',\n component: DocumentComponent,\n },\n {\n path: 'examples',\n component: ExampleComponent,\n children: examples,\n },\n {\n path: '',\n component: ExampleComponent,\n children: examples,\n },\n ]\n },\n ]\n})\nexport default router\n","import { render, staticRenderFns } from \"./Vuex.vue?vue&type=template&id=765a8e49&\"\nimport script from \"./Vuex.vue?vue&type=script&lang=js&\"\nexport * from \"./Vuex.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Vuex.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-vuex\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Vuex Example\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"multiple\":true,\"size\":1024 * 1024 * 10,\"value\":_vm.files},on:{\"input\":_vm.inputUpdate}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Vuex.vue\"}},[_vm._v(\"/docs/views/examples/Vuex.vue\")]),_vm._v(\", \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/store.js\"}},[_vm._v(\"/docs/store.js\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=521aa91e&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('header',{staticClass:\"navbar navbar-expand-lg navbar-dark bg-dark\",attrs:{\"id\":\"header\"}},[_c('router-link',{staticClass:\"navbar-brand\",attrs:{\"exact\":true,\"to\":_vm._f(\"toLocale\")('/')}},[_vm._v(_vm._s(_vm.$t('header.logo')))]),_vm._v(\" \"),_c('button',{staticClass:\"navbar-toggler\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.showNav = !_vm.showNav}}},[_c('span',{staticClass:\"navbar-toggler-icon\"})]),_vm._v(\" \"),_c('nav',{class:{collapse: true, 'navbar-collapse': true, show: _vm.showNav},attrs:{\"id\":\"navbar\"}},[_c('ul',{staticClass:\"navbar-nav\"},[_c('li',{staticClass:\"nav-item\"},[_c('router-link',{class:'nav-link' + (_vm.$route.path === '/' ? ' active' : ''),attrs:{\"active-class\":\"active\",\"exact\":true,\"to\":_vm._f(\"toLocale\")('/')}},[_vm._v(_vm._s(_vm.$t('header.home')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/documents')}},[_vm._v(_vm._s(_vm.$t('header.documents')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples')}},[_vm._v(_vm._s(_vm.$t('header.examples')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"rel\":\"license noopener\",\"href\":\"https://www.lianyue.org\",\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t('header.blog')))])])]),_vm._v(\" \"),_c('ul',{staticClass:\"navbar-nav ml-md-auto\"},[_c('li',{staticClass:\"nav-item dropdown\"},[_c('a',{staticClass:\"nav-link dropdown-toggle\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.onLocale(true)},\"focus\":function($event){_vm.onLocale(true)},\"blur\":function($event){_vm.onLocale(false)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('header.locale'))+\"\\n \")]),_vm._v(\" \"),_c('div',{class:{'dropdown-menu': true, show: _vm.showLocale},on:{\"blur\":function($event){_vm.onLocale(false)}}},_vm._l((_vm.locale),function(value,name){return _c('router-link',{key:name,staticClass:\"dropdown-item\",attrs:{\"to\":'/' + name + (_vm.$route.params.locale ? _vm.$route.fullPath.substr(_vm.$route.params.locale.length + 1) : _vm.$route.fullPath)}},[_vm._v(_vm._s(value))])}))]),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/issues\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('header.issues'))+\"\\n \")])]),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('header.github'))+\"\\n \")])])])])],1),_vm._v(\" \"),_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport marked from 'marked'\nimport highlightjs from 'highlight.js'\nimport store from './store'\nimport router from './router'\nimport i18n from './i18n'\nimport App from './views/App'\n\nVue.config.silent = false\nVue.config.devtools = true\n\n\nclass Renderer extends marked.Renderer {\n heading(text, level, raw) {\n let rawName = raw.toLowerCase().replace(/([\\u0000-\\u002F\\u003A-\\u0060\\u007B-\\u007F]+)/g, '-').replace(/^\\-+|\\-+$/, '')\n\n if (!this.options.headers) {\n this.options.headers = []\n }\n while (this.options.headers.length >= level) {\n this.options.headers.pop()\n }\n let parent = this.options.headers.filter(value => !!value).join('-')\n if (parent) {\n parent = parent + '-'\n }\n while (this.options.headers.length < (level - 1)) {\n this.options.headers.push('')\n }\n this.options.headers.push(rawName)\n return ''\n + text\n + '\\n'\n }\n}\n\nmarked.setOptions({\n renderer: new Renderer(),\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n smartLists: true,\n smartypants: false,\n highlight(code, lang) {\n if (lang) {\n return highlightjs.highlight(lang, code).value\n } else {\n return highlightjs.highlightAuto(code).value\n }\n }\n})\n\nVue.directive('markdown', function (el, binding, vnode) {\n if (!el.className || !/vue-markdown/.test(el.className)) {\n el.className += ' vue-markdown'\n }\n let text = ''\n for (let i = 0; i < vnode.children.length; i++) {\n text += vnode.children[i].text || ''\n }\n if (el.markdown === text) {\n return\n }\n\n el.markdown = text\n\n el.innerHTML = marked(text)\n let selectorList = el.querySelectorAll('a')\n for (let i = 0; i < selectorList.length; i++) {\n selectorList[i].onclick = function (e) {\n if (e.metaKey || e.ctrlKey || e.shiftKey) {\n return\n }\n if (e.defaultPrevented) {\n return\n }\n if (e.button !== undefined && e.button !== 0) {\n return\n }\n\n if (this.host !== window.location.host) {\n return\n }\n\n let href = this.getAttribute('href')\n if (!href) {\n return\n }\n\n if (href.charAt(0) !== '#') {\n return\n }\n\n e.preventDefault()\n router.push(href)\n }\n }\n})\n\n\n\nVue.filter('formatSize', function (size) {\n if (size > 1024 * 1024 * 1024 * 1024) {\n return (size / 1024 / 1024 / 1024 / 1024).toFixed(2) + ' TB'\n } else if (size > 1024 * 1024 * 1024) {\n return (size / 1024 / 1024 / 1024).toFixed(2) + ' GB'\n } else if (size > 1024 * 1024) {\n return (size / 1024 / 1024).toFixed(2) + ' MB'\n } else if (size > 1024) {\n return (size / 1024).toFixed(2) + ' KB'\n }\n return size.toString() + ' B'\n})\n\nVue.filter('toLocale', function (to) {\n return '/' + i18n.locale + to\n})\n\n\n\nnew Vue({\n store,\n router,\n i18n,\n ...App\n}).$mount('#app')\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{class:_vm.className},[_vm._t(\"default\"),_vm._v(\" \"),_c('input-file')],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const 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(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 */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\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 = () => reject(xhr.response)\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 */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\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 = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets the file size\n */\n get fileName () {\n return this.file.name\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\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 get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\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 get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.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 get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let 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 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 pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n 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 upload () {\n this.promise = new Promise((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 start () {\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(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\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 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 uploadChunk (chunk) {\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(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\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(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","import mod from \"-!../node_modules/babel-loader/lib/index.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputFile.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputFile.vue?vue&type=script&lang=js&\"","\n\n","import { render, staticRenderFns } from \"./InputFile.vue?vue&type=template&id=314920ae&\"\nimport script from \"./InputFile.vue?vue&type=script&lang=js&\"\nexport * from \"./InputFile.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {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,\"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}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../node_modules/babel-loader/lib/index.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FileUpload.vue?vue&type=template&id=e23cb532&\"\nimport script from \"./FileUpload.vue?vue&type=script&lang=js&\"\nexport * from \"./FileUpload.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileUpload.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/docs/en.md b/docs/docs/en.md index ee2175c..04615c2 100644 --- a/docs/docs/en.md +++ b/docs/docs/en.md @@ -219,6 +219,7 @@ Use the `handler` parameter to use a different Handler