From f45a552a33b2dbab3f29c4bb48e4f0e49cd67f01 Mon Sep 17 00:00:00 2001 From: lianyue Date: Tue, 5 Jun 2018 21:05:17 +0800 Subject: [PATCH] build --- dist/vue-upload-component.js | 16 +++++++++++++--- 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 | 16 +++++++++++++--- dist/vue-upload-component.part.js.map | 2 +- docs/dist/index.js | 4 ++-- docs/dist/index.js.map | 2 +- package.json | 2 +- 9 files changed, 35 insertions(+), 16 deletions(-) diff --git a/dist/vue-upload-component.js b/dist/vue-upload-component.js index 16ef3c4..5db5a9c 100644 --- a/dist/vue-upload-component.js +++ b/dist/vue-upload-component.js @@ -1,6 +1,6 @@ /*! * Name: vue-upload-component - * Version: 2.8.8 + * Version: 2.8.9 * Author: LianYue */ (function (global, factory) { @@ -238,7 +238,8 @@ body: Object.assign(this.startBody, { phase: 'start', mime_type: this.fileType, - size: this.fileSize + size: this.fileSize, + name: this.fileName }) }).then(function (res) { if (res.status !== 'success') { @@ -417,6 +418,16 @@ return this.file.size; } + /** + * Gets the file size + */ + + }, { + key: 'fileName', + get: function get() { + return this.file.name; + } + /** * Gets action (url) to upload the file */ @@ -2044,4 +2055,3 @@ 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 20f40f0..2d4f7fa 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 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 })\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","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.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 diff --git a/dist/vue-upload-component.min.js b/dist/vue-upload-component.min.js index 994e3a8..2164de8 100644 --- a/dist/vue-upload-component.min.js +++ b/dist/vue-upload-component.min.js @@ -1,7 +1,6 @@ /*! * Name: vue-upload-component - * Version: 2.8.8 + * Version: 2.8.9 * 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}); -//# sourceMappingURL=vue-upload-component.min.js.map +!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}); diff --git a/dist/vue-upload-component.min.js.map b/dist/vue-upload-component.min.js.map index eaabe40..ed5368b 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 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 })\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","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/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 diff --git a/dist/vue-upload-component.part.js b/dist/vue-upload-component.part.js index 1d12a2b..50b45a9 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.8 + * Version: 2.8.9 * Author: LianYue */ (function (global, factory) { @@ -238,7 +238,8 @@ body: Object.assign(this.startBody, { phase: 'start', mime_type: this.fileType, - size: this.fileSize + size: this.fileSize, + name: this.fileName }) }).then(function (res) { if (res.status !== 'success') { @@ -417,6 +418,16 @@ return this.file.size; } + /** + * Gets the file size + */ + + }, { + key: 'fileName', + get: function get() { + return this.file.name; + } + /** * Gets action (url) to upload the file */ @@ -2024,4 +2035,3 @@ 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 5f97501..04a9f7a 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 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 })\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","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.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 diff --git a/docs/dist/index.js b/docs/dist/index.js index a69c3db..c61fe67 100644 --- a/docs/dist/index.js +++ b/docs/dist/index.js @@ -1,6 +1,6 @@ /*! * Name: vue-upload-component - * Version: 2.8.8 + * Version: 2.8.9 * 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_chunk` 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 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 })\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/vue-style-loader/lib/addStylesClient.js","webpack:///./node_modules/css-loader/lib/css-base.js","webpack:///external \"Vue\"","webpack:///external \"marked\"","webpack:///./docs/views/App.vue?167d","webpack:///./docs/views/examples/Vuex.vue?4268","webpack:///./docs/views/examples/Chunk.vue?91b6","webpack:///./docs/views/examples/Chunk.vue?60ca","webpack:///./docs/views/examples/Multiple.vue?2d1f","webpack:///./docs/views/examples/Drag.vue?0b61","webpack:///./docs/views/examples/Avatar.vue?405c","webpack:///./docs/views/examples/Simple.vue?fdd6","webpack:///./docs/views/examples/Full.vue?89db","webpack:///./src/FileUpload.vue?33cb","webpack:///./docs/views/Document.vue?3294","webpack:///external \"Cropper\"","webpack:///external \"Vuex\"","webpack:///./node_modules/vue-style-loader/lib/listToStyles.js","webpack:///external \"hljs\"","webpack:///./docs/docs/zh-cn.md","webpack:///./docs/docs/en.md","webpack:///external \"ImageCompressor\"","webpack:///external \"VueI18n\"","webpack:///external \"VueRouter\"","webpack:///./src/FileUpload.vue?f53e","webpack:///./src/utils/request.js","webpack:///./src/chunk/ChunkUploadHandler.js","webpack:///./src/InputFile.vue?ce81","webpack:///src/InputFile.vue","webpack:///./src/InputFile.vue","webpack:///./src/InputFile.vue?74e1","webpack:///src/FileUpload.vue","webpack:///./src/FileUpload.vue?47ac","webpack:///./src/FileUpload.vue","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?9296","webpack:///./docs/views/Document.vue?eb22","webpack:///docs/views/Document.vue","webpack:///./docs/views/Document.vue","webpack:///./docs/views/Document.vue?ef57","webpack:///./docs/views/Example.vue","webpack:///./docs/views/Example.vue?d9aa","webpack:///./docs/views/examples/Full.vue?c1c7","webpack:///docs/views/examples/Full.vue","webpack:///./docs/views/examples/Full.vue","webpack:///./docs/views/examples/Full.vue?6c87","webpack:///./docs/views/examples/Simple.vue?dc62","webpack:///docs/views/examples/Simple.vue","webpack:///./docs/views/examples/Simple.vue","webpack:///./docs/views/examples/Simple.vue?4ec4","webpack:///./docs/views/examples/Avatar.vue?ae34","webpack:///docs/views/examples/Avatar.vue","webpack:///./docs/views/examples/Avatar.vue","webpack:///./docs/views/examples/Avatar.vue?38f2","webpack:///./docs/views/examples/Drag.vue?424d","webpack:///docs/views/examples/Drag.vue","webpack:///./docs/views/examples/Drag.vue","webpack:///./docs/views/examples/Drag.vue?18f7","webpack:///./docs/views/examples/Multiple.vue?0eea","webpack:///docs/views/examples/Multiple.vue","webpack:///./docs/views/examples/Multiple.vue","webpack:///./docs/views/examples/Multiple.vue?d33e","webpack:///./docs/views/examples/Chunk.vue?986d","webpack:///docs/views/examples/Chunk.vue","webpack:///./docs/views/examples/Chunk.vue","webpack:///./docs/views/examples/Chunk.vue?ee22","webpack:///./docs/views/examples/Vuex.vue?f40d","webpack:///docs/views/examples/Vuex.vue","webpack:///./docs/router.js","webpack:///./docs/views/examples/Vuex.vue","webpack:///./docs/views/examples/Vuex.vue?42a7","webpack:///./docs/views/App.vue?8404","webpack:///docs/views/App.vue","webpack:///./docs/views/App.vue","webpack:///./docs/views/App.vue?eb5e","webpack:///./docs/index.js","webpack:///./docs/views/App.vue?0764","webpack:///./docs/views/App.vue?06ad","webpack:///./docs/views/examples/Vuex.vue?51ac","webpack:///./docs/views/examples/Vuex.vue?c3ba","webpack:///./docs/views/examples/Chunk.vue?118e","webpack:///./docs/views/examples/Chunk.vue?98ce","webpack:///./docs/views/examples/Chunk.vue?19b8","webpack:///./docs/views/examples/Chunk.vue?a74c","webpack:///./docs/views/examples/Multiple.vue?2674","webpack:///./docs/views/examples/Multiple.vue?7ac2","webpack:///./docs/views/examples/Drag.vue?cc76","webpack:///./docs/views/examples/Drag.vue?e9b0","webpack:///./docs/views/examples/Avatar.vue?50ce","webpack:///./docs/views/examples/Avatar.vue?e7d4","webpack:///./docs/views/examples/Simple.vue?0ded","webpack:///./docs/views/examples/Simple.vue?fb91","webpack:///./docs/views/examples/Full.vue?10ff","webpack:///./docs/views/examples/Full.vue?2068","webpack:///./src/FileUpload.vue?d8c2","webpack:///./src/FileUpload.vue?ee2f","webpack:///./docs/views/Document.vue?8353","webpack:///./docs/views/Document.vue?1548","webpack:///./docs/docs sync ^\\.\\/.*$"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","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__","_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","list","_isProduction","_options","styles","addStylesToDom","newList","mayRemove","length","item","domStyle","id","refs","push","j","parts","addStyle","createStyleElement","styleElement","createElement","type","appendChild","obj","update","remove","querySelector","parentNode","removeChild","styleIndex","applyToSingletonTag","bind","css","media","sourceMap","setAttribute","ssrId","sources","btoa","unescape","encodeURIComponent","JSON","stringify","styleSheet","cssText","firstChild","createTextNode","newObj","textStore","replaceText","index","replacement","filter","Boolean","join","cssNode","childNodes","insertBefore","useSourceMap","toString","map","content","cssMapping","sourceMapping","sourceURLs","source","sourceRoot","cssWithMappingToString","mediaQuery","alreadyImportedModules","Vue","marked","locals","default","Cropper","Vuex","newStyles","part","hljs","ImageCompressor","VueI18n","VueRouter","createRequest","xhr","XMLHttpRequest","open","method","url","responseType","headers","keys","forEach","key","setRequestHeader","request","body","Promise","resolve","reject","onload","status","response","parse","err","onerror","send","sendRequest","ChunkUploadHandler","file","_classCallCheck","chunks","start","end","chunkSize","fileSize","blob","slice","startOffset","active","retries","maxRetries","progress","stopChunks","chunksUploading","chunk","abort","startChunking","_this","promise","_this2","assign","Content-Type","action","startBody","phase","mime_type","fileType","size","fileName","then","res","sessionId","data","session_id","end_offset","createChunks","catch","maxActiveChunks","uploadNextChunk","hasChunksToUpload","uploadChunk","chunksToUpload","finish","_this3","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","FormData","append","sendFormRequest","uploadBody","start_offset","uploaded","_this4","finishBody","parseInt","maxActive","_this5","completedProgress","chunksUploaded","uploadingProgress","reduce","min","src_InputFilevue_type_script_lang_js","methods","change","e","$destroy","$parent","addInputFile","target","constructor","el","$el","InputFile","componentNormalizer","_vm","_h","$createElement","_self","_c","attrs","inputId","accept","capture","webkitdirectory","directory","features","multiple","html5","on","CHUNK_DEFAULT_OPTIONS","minSize","handler","chunk_ChunkUploadHandler","src_FileUploadvue_type_script_lang_js","components","props","String","maximum","Number","addIndex","postAction","putAction","customAction","Function","timeout","drop","dropDirectory","extensions","Array","thread","chunkEnabled","files","drag","dropActive","uploading","destroy","mounted","input","window","ondrop","maps","$nextTick","$forceUpdate","watchDrop","beforeDestroy","computed","fileObject","error","success","chunkOptions","className","undefined","watch","_active","watchActive","oldMaps","newFile","oldFile","emitFile","_key","clear","emitInput","_typeof","_files","arguments","isArray","addFiles","Blob","webkitRelativePath","relativePath","Element","_extends","speed","random","substr","emitFilter","newFiles","splice","_i","_file2","_i2","names","replace","split","addDataTransfer","dataTransfer","items","getAsEntry","getAsFile","webkitGetAsEntry","getEntry","results","apply","_toConsumableArray","_i3","entry","path","isFile","isDirectory","dirReader","createReader","readEntries","entries","id1","id2","file1","file2","index1","indexOf","index2","console","isPrevent","$emit","setTimeout","code","message","RegExp","trim","search","shouldUseChunkUpload","uploadPut","uploadHtml5","uploadHtml4","HandlerClass","querys","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","removeEventListener","doc","contentWindow","contentDocument","innerHTML","getResponseData","submit","_el","dropElement","onDragenter","onDragleave","onDocumentDrop","onDragover","onDrop","nodeName","explicitOriginalTarget","screenX","screenY","fromElement","offsetX","FileUpload_component","class","_t","_v","store","a","Store","strict","state","mutations","updateFiles","i18n","locale","messages","zh-cn","header","logo","home","examples","documents","blog","issues","github","en","title","example","full","simple","avatar","vuex","Router","views_Documentvue_type_script_lang_js","$route","hash","decodeURIComponent","scrollTo","offsetTop","$i18n","navs","tokens","external_marked_default","lexer","rootNode","children","level","navPrev","token","nav","text","depth","Document","staticClass","_l","group","nav-item","nav-link","active-class","to","_s","child","_e","role","$t","directives","rawName","Example","_f","examples_Fullvue_type_script_lang_js","FileUpload","src_default","X-Csrf-Token","_csrf_token","autoCompress","uploadAuto","isOption","addData","show","editFile","editFile.show","newValue","oldValue","$refs","editImage","cropper","external_Cropper_default","autoCrop","addData.show","inputFilter","prevent","external_ImageCompressor_default","convertSize","Infinity","maxWidth","maxHeight","compress","URL","webkitURL","createObjectURL","thumb","inputFile","alert","_alert","_x","onEditFileShow","onEditorFile","binStr","atob","getCroppedCanvas","toDataURL","arr","Uint8Array","charCodeAt","onAddFolader","onclick","click","onAddData","Full","$event","aria-hidden","expression","_m","colspan","for","width","height","progress-bar","progress-bar-striped","bg-danger","progress-bar-animated","style","dropdown-item","disabled","href","ref","post-action","put-action","drop-directory","add-index","input-filter","input-file","model","callback","$$v","domProps","composing","checked","_q","modifiers","number","max","_n","blur","$$a","$$el","$$c","$$i","modal-backdrop","fade","modal","tabindex","required","placeholder","$set","rows","rotate","crop","examples_Simplevue_type_script_lang_js","log","Simple","examples_Avatarvue_type_script_lang_js","edit","aspectRatio","viewMode","editSave","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","chunkMinSize","chunkMaxActive","chunkMaxRetries","Chunk","pause","resume","chunk-loading-part__uploaded","chunk-enabled","examples_Vuexvue_type_script_lang_js","Vuexvue_type_script_lang_js_extends","external_Vuex_","inputUpdate","$store","commit","component","docs_router","external_VueRouter_default","mode","fallback","scrollBehavior","from","savedPosition","x","y","routes","views_Appvue_type_script_lang_js","showLocale","showNav","params","beforeUpdate","onLocale","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","markdown","selectorList","querySelectorAll","metaKey","ctrlKey","shiftKey","defaultPrevented","button","host","location","getAttribute","charAt","docs_extends","router","$mount","./en","./en.md","./zh-cn","./zh-cn.md","webpackContext","req","webpackContextResolve"],"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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\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 = 51);\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 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** 或者 **\\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 diff --git a/package.json b/package.json index 63eeb91..617ef46 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "vue-upload-component", "description": "Vue.js file upload component, Multi-file upload, Upload directory, Drag upload, Drag the directory, Upload multiple files at the same time, html4 (IE 9), `PUT` method, Customize the filter", - "version": "2.8.8", + "version": "2.8.9", "author": "LianYue", "scripts": { "dev": "cross-env NODE_ENV=development webpack-dev-server",