From 0d307c175afbdac50950cd2f42618fd82cf966b7 Mon Sep 17 00:00:00 2001 From: lianyue Date: Wed, 16 Jan 2019 17:35:35 +0800 Subject: [PATCH] build # ------------------------ >8 ------------------------ # Do not touch the line above. # Everything below will be removed. # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # On branch master # Your branch is ahead of 'github/master' by 3 commits. # # Changes to be committed: # # modified: dist/vue-upload-component.js # modified: dist/vue-upload-component.js.map # modified: dist/vue-upload-component.min.js.map # modified: dist/vue-upload-component.part.js # modified: dist/vue-upload-component.part.js.map # modified: docs/dist/index.js # modified: docs/dist/index.js.map --- dist/vue-upload-component.js | 2 +- dist/vue-upload-component.js.map | 2 +- dist/vue-upload-component.min.js.map | 2 +- dist/vue-upload-component.part.js | 2 +- dist/vue-upload-component.part.js.map | 2 +- docs/dist/index.js | 2 +- docs/dist/index.js.map | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/dist/vue-upload-component.js b/dist/vue-upload-component.js index 8b0cc24..0df1e25 100644 --- a/dist/vue-upload-component.js +++ b/dist/vue-upload-component.js @@ -419,7 +419,7 @@ } /** - * Gets the file size + * Gets the file name */ }, { diff --git a/dist/vue-upload-component.js.map b/dist/vue-upload-component.js.map index 31501bd..a1fba20 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","../src/FileUpload.vue","../src/index.js"],"sourcesContent":["/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const xhr = new XMLHttpRequest()\n xhr.open(options.method || 'GET', options.url)\n xhr.responseType = 'json'\n if (options.headers) {\n Object.keys(options.headers).forEach(key => {\n xhr.setRequestHeader(key, options.headers[key])\n })\n }\n\n return xhr\n}\n\n/**\n * Sends a XHR request with certain body\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} body\n */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(JSON.stringify(body))\n })\n}\n\n/**\n * Sends a XHR request with certain form data\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} data\n */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets the file size\n */\n get fileName () {\n return this.file.name\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\n return this.options.action || null\n }\n\n /**\n * Gets the body to be merged when sending the request in start phase\n */\n get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\n return !!this.chunks\n }\n\n /**\n * Gets the progress of the chunk upload\n * - Gets all the completed chunks\n * - Gets the progress of all the chunks that are being uploaded\n */\n get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.chunks.length)\n }, 0)\n\n return Math.min(completedProgress + uploadingProgress, 100)\n }\n\n /**\n * Gets all the chunks that are pending to be uploaded\n */\n get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let end = this.chunkSize\n while (start < this.fileSize) {\n this.chunks.push({\n blob: this.file.file.slice(start, end),\n startOffset: start,\n active: false,\n retries: this.maxRetries\n })\n start = end\n end = start + this.chunkSize\n }\n }\n\n /**\n * Updates the progress of the file with the handler's progress\n */\n updateFileProgress () {\n this.file.progress = this.progress\n }\n\n /**\n * Paues the upload process\n * - Stops all active requests\n * - Sets the file not active\n */\n pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n resume () {\n this.file.active = true\n this.startChunking()\n }\n\n /**\n * Starts the file upload\n *\n * @returns Promise\n * - resolve The file was uploaded\n * - reject The file upload failed\n */\n upload () {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve\n this.reject = reject\n })\n this.start()\n\n return this.promise\n }\n\n /**\n * Start phase\n * Sends a request to the backend to initialise the chunks\n */\n start () {\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.startBody, {\n phase: 'start',\n mime_type: this.fileType,\n size: this.fileSize,\n name: this.fileName\n })\n }).then(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\n }\n\n /**\n * Uploads the next chunk\n * - Won't do anything if the process is paused\n * - Will start finish phase if there are no more chunks to upload\n */\n uploadNextChunk () {\n if (this.file.active) {\n if (this.hasChunksToUpload) {\n return this.uploadChunk(this.chunksToUpload[0])\n }\n\n if (this.chunksUploading.length === 0) {\n return this.finish()\n }\n }\n }\n\n /**\n * Uploads a chunk\n * - Sends the chunk to the backend\n * - Sets the chunk as uploaded if everything went well\n * - Decreases the number of retries if anything went wrong\n * - Fails if there are no more retries\n *\n * @param {Object} chunk\n */\n uploadChunk (chunk) {\n chunk.progress = 0\n chunk.active = true\n this.updateFileProgress()\n chunk.xhr = createRequest({\n method: 'POST',\n headers: this.headers,\n url: this.action\n })\n\n chunk.xhr.upload.addEventListener('progress', function (evt) {\n if (evt.lengthComputable) {\n chunk.progress = Math.round(evt.loaded / evt.total * 100)\n }\n }, false)\n\n sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, {\n phase: 'upload',\n session_id: this.sessionId,\n start_offset: chunk.startOffset,\n chunk: chunk.blob\n })).then(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\n\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.finishBody, {\n phase: 'finish',\n session_id: this.sessionId\n })\n }).then(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","\n\n","\n\n\n","module.exports = require('./FileUpload.vue')\n"],"names":["createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","Object","keys","forEach","setRequestHeader","key","sendRequest","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","sendFormRequest","data","FormData","name","append","ChunkUploadHandler","file","chunks","start","end","chunkSize","fileSize","push","blob","slice","startOffset","active","retries","maxRetries","progress","stopChunks","chunksUploading","chunk","abort","startChunking","promise","request","assign","action","startBody","phase","mime_type","fileType","size","fileName","then","res","sessionId","session_id","end_offset","createChunks","catch","i","maxActiveChunks","uploadNextChunk","hasChunksToUpload","uploadChunk","chunksToUpload","length","finish","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","uploadBody","start_offset","uploaded","finishBody","parseInt","maxActive","type","completedProgress","chunksUploaded","uploadingProgress","reduce","min","filter","require$$0"],"mappings":"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AAP;EAGD;;;;;;;;;;;;;;;;;;;;;AC9HH;;;;;;;;;;;;;;;;;;;;;GAAA;;;EAZY,2BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECwCZ;;;;;;;;GAAA;;AAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAA;;;EAlDY,+BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECHZ,UAAiBW,UAAjB;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"vue-upload-component.js","sources":["../src/utils/request.js","../src/chunk/ChunkUploadHandler.js","../src/InputFile.vue","../src/FileUpload.vue","../src/index.js"],"sourcesContent":["/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const xhr = new XMLHttpRequest()\n xhr.open(options.method || 'GET', options.url)\n xhr.responseType = 'json'\n if (options.headers) {\n Object.keys(options.headers).forEach(key => {\n xhr.setRequestHeader(key, options.headers[key])\n })\n }\n\n return xhr\n}\n\n/**\n * Sends a XHR request with certain body\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} body\n */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(JSON.stringify(body))\n })\n}\n\n/**\n * Sends a XHR request with certain form data\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} data\n */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets the file name\n */\n get fileName () {\n return this.file.name\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\n return this.options.action || null\n }\n\n /**\n * Gets the body to be merged when sending the request in start phase\n */\n get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\n return !!this.chunks\n }\n\n /**\n * Gets the progress of the chunk upload\n * - Gets all the completed chunks\n * - Gets the progress of all the chunks that are being uploaded\n */\n get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.chunks.length)\n }, 0)\n\n return Math.min(completedProgress + uploadingProgress, 100)\n }\n\n /**\n * Gets all the chunks that are pending to be uploaded\n */\n get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let end = this.chunkSize\n while (start < this.fileSize) {\n this.chunks.push({\n blob: this.file.file.slice(start, end),\n startOffset: start,\n active: false,\n retries: this.maxRetries\n })\n start = end\n end = start + this.chunkSize\n }\n }\n\n /**\n * Updates the progress of the file with the handler's progress\n */\n updateFileProgress () {\n this.file.progress = this.progress\n }\n\n /**\n * Paues the upload process\n * - Stops all active requests\n * - Sets the file not active\n */\n pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n resume () {\n this.file.active = true\n this.startChunking()\n }\n\n /**\n * Starts the file upload\n *\n * @returns Promise\n * - resolve The file was uploaded\n * - reject The file upload failed\n */\n upload () {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve\n this.reject = reject\n })\n this.start()\n\n return this.promise\n }\n\n /**\n * Start phase\n * Sends a request to the backend to initialise the chunks\n */\n start () {\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.startBody, {\n phase: 'start',\n mime_type: this.fileType,\n size: this.fileSize,\n name: this.fileName\n })\n }).then(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\n }\n\n /**\n * Uploads the next chunk\n * - Won't do anything if the process is paused\n * - Will start finish phase if there are no more chunks to upload\n */\n uploadNextChunk () {\n if (this.file.active) {\n if (this.hasChunksToUpload) {\n return this.uploadChunk(this.chunksToUpload[0])\n }\n\n if (this.chunksUploading.length === 0) {\n return this.finish()\n }\n }\n }\n\n /**\n * Uploads a chunk\n * - Sends the chunk to the backend\n * - Sets the chunk as uploaded if everything went well\n * - Decreases the number of retries if anything went wrong\n * - Fails if there are no more retries\n *\n * @param {Object} chunk\n */\n uploadChunk (chunk) {\n chunk.progress = 0\n chunk.active = true\n this.updateFileProgress()\n chunk.xhr = createRequest({\n method: 'POST',\n headers: this.headers,\n url: this.action\n })\n\n chunk.xhr.upload.addEventListener('progress', function (evt) {\n if (evt.lengthComputable) {\n chunk.progress = Math.round(evt.loaded / evt.total * 100)\n }\n }, false)\n\n sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, {\n phase: 'upload',\n session_id: this.sessionId,\n start_offset: chunk.startOffset,\n chunk: chunk.blob\n })).then(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\n\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.finishBody, {\n phase: 'finish',\n session_id: this.sessionId\n })\n }).then(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","\n\n","\n\n\n","module.exports = require('./FileUpload.vue')\n"],"names":["createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","Object","keys","forEach","setRequestHeader","key","sendRequest","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","sendFormRequest","data","FormData","name","append","ChunkUploadHandler","file","chunks","start","end","chunkSize","fileSize","push","blob","slice","startOffset","active","retries","maxRetries","progress","stopChunks","chunksUploading","chunk","abort","startChunking","promise","request","assign","action","startBody","phase","mime_type","fileType","size","fileName","then","res","sessionId","session_id","end_offset","createChunks","catch","i","maxActiveChunks","uploadNextChunk","hasChunksToUpload","uploadChunk","chunksToUpload","length","finish","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","uploadBody","start_offset","uploaded","finishBody","parseInt","maxActive","type","completedProgress","chunksUploaded","uploadingProgress","reduce","min","filter","require$$0"],"mappings":"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AAP;EAGD;;;;;;;;;;;;;;;;;;;;;AC9HH;;;;;;;;;;;;;;;;;;;;;GAAA;;;EAZY,2BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECwCZ;;;;;;;;GAAA;;AAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAA;;;EAlDY,+BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECHZ,UAAiBW,UAAjB;;;;;;;;"} \ No newline at end of file diff --git a/dist/vue-upload-component.min.js.map b/dist/vue-upload-component.min.js.map index bb34afb..80ce5c1 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/FileUpload.vue"],"sourcesContent":["/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const xhr = new XMLHttpRequest()\n xhr.open(options.method || 'GET', options.url)\n xhr.responseType = 'json'\n if (options.headers) {\n Object.keys(options.headers).forEach(key => {\n xhr.setRequestHeader(key, options.headers[key])\n })\n }\n\n return xhr\n}\n\n/**\n * Sends a XHR request with certain body\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} body\n */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(JSON.stringify(body))\n })\n}\n\n/**\n * Sends a XHR request with certain form data\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} data\n */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets the file size\n */\n get fileName () {\n return this.file.name\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\n return this.options.action || null\n }\n\n /**\n * Gets the body to be merged when sending the request in start phase\n */\n get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\n return !!this.chunks\n }\n\n /**\n * Gets the progress of the chunk upload\n * - Gets all the completed chunks\n * - Gets the progress of all the chunks that are being uploaded\n */\n get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.chunks.length)\n }, 0)\n\n return Math.min(completedProgress + uploadingProgress, 100)\n }\n\n /**\n * Gets all the chunks that are pending to be uploaded\n */\n get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let end = this.chunkSize\n while (start < this.fileSize) {\n this.chunks.push({\n blob: this.file.file.slice(start, end),\n startOffset: start,\n active: false,\n retries: this.maxRetries\n })\n start = end\n end = start + this.chunkSize\n }\n }\n\n /**\n * Updates the progress of the file with the handler's progress\n */\n updateFileProgress () {\n this.file.progress = this.progress\n }\n\n /**\n * Paues the upload process\n * - Stops all active requests\n * - Sets the file not active\n */\n pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n resume () {\n this.file.active = true\n this.startChunking()\n }\n\n /**\n * Starts the file upload\n *\n * @returns Promise\n * - resolve The file was uploaded\n * - reject The file upload failed\n */\n upload () {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve\n this.reject = reject\n })\n this.start()\n\n return this.promise\n }\n\n /**\n * Start phase\n * Sends a request to the backend to initialise the chunks\n */\n start () {\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.startBody, {\n phase: 'start',\n mime_type: this.fileType,\n size: this.fileSize,\n name: this.fileName\n })\n }).then(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\n }\n\n /**\n * Uploads the next chunk\n * - Won't do anything if the process is paused\n * - Will start finish phase if there are no more chunks to upload\n */\n uploadNextChunk () {\n if (this.file.active) {\n if (this.hasChunksToUpload) {\n return this.uploadChunk(this.chunksToUpload[0])\n }\n\n if (this.chunksUploading.length === 0) {\n return this.finish()\n }\n }\n }\n\n /**\n * Uploads a chunk\n * - Sends the chunk to the backend\n * - Sets the chunk as uploaded if everything went well\n * - Decreases the number of retries if anything went wrong\n * - Fails if there are no more retries\n *\n * @param {Object} chunk\n */\n uploadChunk (chunk) {\n chunk.progress = 0\n chunk.active = true\n this.updateFileProgress()\n chunk.xhr = createRequest({\n method: 'POST',\n headers: this.headers,\n url: this.action\n })\n\n chunk.xhr.upload.addEventListener('progress', function (evt) {\n if (evt.lengthComputable) {\n chunk.progress = Math.round(evt.loaded / evt.total * 100)\n }\n }, false)\n\n sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, {\n phase: 'upload',\n session_id: this.sessionId,\n start_offset: chunk.startOffset,\n chunk: chunk.blob\n })).then(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\n\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.finishBody, {\n phase: 'finish',\n session_id: this.sessionId\n })\n }).then(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","\n\n\n"],"names":["createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","keys","forEach","setRequestHeader","key","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","ChunkUploadHandler","file","chunks","start","end","this","chunkSize","fileSize","push","slice","maxRetries","progress","active","stopChunks","chunksUploading","abort","startChunking","promise","Object","assign","action","startBody","fileType","fileName","then","res","_this2","sessionId","data","session_id","end_offset","createChunks","catch","i","maxActiveChunks","uploadNextChunk","hasChunksToUpload","uploadChunk","chunksToUpload","length","finish","chunk","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","FormData","name","append","uploadBody","startOffset","blob","uploaded","retries","_this3","finishBody","_this4","parseInt","maxActive","type","size","completedProgress","chunksUploaded","uploadingProgress","reduce","_this5","min","filter"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vue-upload-component.min.js","sources":["../src/utils/request.js","../src/chunk/ChunkUploadHandler.js","../src/FileUpload.vue"],"sourcesContent":["/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const xhr = new XMLHttpRequest()\n xhr.open(options.method || 'GET', options.url)\n xhr.responseType = 'json'\n if (options.headers) {\n Object.keys(options.headers).forEach(key => {\n xhr.setRequestHeader(key, options.headers[key])\n })\n }\n\n return xhr\n}\n\n/**\n * Sends a XHR request with certain body\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} body\n */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(JSON.stringify(body))\n })\n}\n\n/**\n * Sends a XHR request with certain form data\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} data\n */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets the file name\n */\n get fileName () {\n return this.file.name\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\n return this.options.action || null\n }\n\n /**\n * Gets the body to be merged when sending the request in start phase\n */\n get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\n return !!this.chunks\n }\n\n /**\n * Gets the progress of the chunk upload\n * - Gets all the completed chunks\n * - Gets the progress of all the chunks that are being uploaded\n */\n get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.chunks.length)\n }, 0)\n\n return Math.min(completedProgress + uploadingProgress, 100)\n }\n\n /**\n * Gets all the chunks that are pending to be uploaded\n */\n get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let end = this.chunkSize\n while (start < this.fileSize) {\n this.chunks.push({\n blob: this.file.file.slice(start, end),\n startOffset: start,\n active: false,\n retries: this.maxRetries\n })\n start = end\n end = start + this.chunkSize\n }\n }\n\n /**\n * Updates the progress of the file with the handler's progress\n */\n updateFileProgress () {\n this.file.progress = this.progress\n }\n\n /**\n * Paues the upload process\n * - Stops all active requests\n * - Sets the file not active\n */\n pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n resume () {\n this.file.active = true\n this.startChunking()\n }\n\n /**\n * Starts the file upload\n *\n * @returns Promise\n * - resolve The file was uploaded\n * - reject The file upload failed\n */\n upload () {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve\n this.reject = reject\n })\n this.start()\n\n return this.promise\n }\n\n /**\n * Start phase\n * Sends a request to the backend to initialise the chunks\n */\n start () {\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.startBody, {\n phase: 'start',\n mime_type: this.fileType,\n size: this.fileSize,\n name: this.fileName\n })\n }).then(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\n }\n\n /**\n * Uploads the next chunk\n * - Won't do anything if the process is paused\n * - Will start finish phase if there are no more chunks to upload\n */\n uploadNextChunk () {\n if (this.file.active) {\n if (this.hasChunksToUpload) {\n return this.uploadChunk(this.chunksToUpload[0])\n }\n\n if (this.chunksUploading.length === 0) {\n return this.finish()\n }\n }\n }\n\n /**\n * Uploads a chunk\n * - Sends the chunk to the backend\n * - Sets the chunk as uploaded if everything went well\n * - Decreases the number of retries if anything went wrong\n * - Fails if there are no more retries\n *\n * @param {Object} chunk\n */\n uploadChunk (chunk) {\n chunk.progress = 0\n chunk.active = true\n this.updateFileProgress()\n chunk.xhr = createRequest({\n method: 'POST',\n headers: this.headers,\n url: this.action\n })\n\n chunk.xhr.upload.addEventListener('progress', function (evt) {\n if (evt.lengthComputable) {\n chunk.progress = Math.round(evt.loaded / evt.total * 100)\n }\n }, false)\n\n sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, {\n phase: 'upload',\n session_id: this.sessionId,\n start_offset: chunk.startOffset,\n chunk: chunk.blob\n })).then(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\n\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.finishBody, {\n phase: 'finish',\n session_id: this.sessionId\n })\n }).then(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","\n\n\n"],"names":["createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","keys","forEach","setRequestHeader","key","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","ChunkUploadHandler","file","chunks","start","end","this","chunkSize","fileSize","push","slice","maxRetries","progress","active","stopChunks","chunksUploading","abort","startChunking","promise","Object","assign","action","startBody","fileType","fileName","then","res","_this2","sessionId","data","session_id","end_offset","createChunks","catch","i","maxActiveChunks","uploadNextChunk","hasChunksToUpload","uploadChunk","chunksToUpload","length","finish","chunk","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","FormData","name","append","uploadBody","startOffset","blob","uploaded","retries","_this3","finishBody","_this4","parseInt","maxActive","type","size","completedProgress","chunksUploaded","uploadingProgress","reduce","_this5","min","filter"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vue-upload-component.part.js b/dist/vue-upload-component.part.js index ee5048f..4ba510e 100644 --- a/dist/vue-upload-component.part.js +++ b/dist/vue-upload-component.part.js @@ -419,7 +419,7 @@ } /** - * Gets the file size + * Gets the file name */ }, { diff --git a/dist/vue-upload-component.part.js.map b/dist/vue-upload-component.part.js.map index 6bcc9a7..93d0934 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","../src/FileUpload.vue","../src/index.js"],"sourcesContent":["/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const xhr = new XMLHttpRequest()\n xhr.open(options.method || 'GET', options.url)\n xhr.responseType = 'json'\n if (options.headers) {\n Object.keys(options.headers).forEach(key => {\n xhr.setRequestHeader(key, options.headers[key])\n })\n }\n\n return xhr\n}\n\n/**\n * Sends a XHR request with certain body\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} body\n */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(JSON.stringify(body))\n })\n}\n\n/**\n * Sends a XHR request with certain form data\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} data\n */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets the file size\n */\n get fileName () {\n return this.file.name\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\n return this.options.action || null\n }\n\n /**\n * Gets the body to be merged when sending the request in start phase\n */\n get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\n return !!this.chunks\n }\n\n /**\n * Gets the progress of the chunk upload\n * - Gets all the completed chunks\n * - Gets the progress of all the chunks that are being uploaded\n */\n get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.chunks.length)\n }, 0)\n\n return Math.min(completedProgress + uploadingProgress, 100)\n }\n\n /**\n * Gets all the chunks that are pending to be uploaded\n */\n get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let end = this.chunkSize\n while (start < this.fileSize) {\n this.chunks.push({\n blob: this.file.file.slice(start, end),\n startOffset: start,\n active: false,\n retries: this.maxRetries\n })\n start = end\n end = start + this.chunkSize\n }\n }\n\n /**\n * Updates the progress of the file with the handler's progress\n */\n updateFileProgress () {\n this.file.progress = this.progress\n }\n\n /**\n * Paues the upload process\n * - Stops all active requests\n * - Sets the file not active\n */\n pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n resume () {\n this.file.active = true\n this.startChunking()\n }\n\n /**\n * Starts the file upload\n *\n * @returns Promise\n * - resolve The file was uploaded\n * - reject The file upload failed\n */\n upload () {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve\n this.reject = reject\n })\n this.start()\n\n return this.promise\n }\n\n /**\n * Start phase\n * Sends a request to the backend to initialise the chunks\n */\n start () {\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.startBody, {\n phase: 'start',\n mime_type: this.fileType,\n size: this.fileSize,\n name: this.fileName\n })\n }).then(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\n }\n\n /**\n * Uploads the next chunk\n * - Won't do anything if the process is paused\n * - Will start finish phase if there are no more chunks to upload\n */\n uploadNextChunk () {\n if (this.file.active) {\n if (this.hasChunksToUpload) {\n return this.uploadChunk(this.chunksToUpload[0])\n }\n\n if (this.chunksUploading.length === 0) {\n return this.finish()\n }\n }\n }\n\n /**\n * Uploads a chunk\n * - Sends the chunk to the backend\n * - Sets the chunk as uploaded if everything went well\n * - Decreases the number of retries if anything went wrong\n * - Fails if there are no more retries\n *\n * @param {Object} chunk\n */\n uploadChunk (chunk) {\n chunk.progress = 0\n chunk.active = true\n this.updateFileProgress()\n chunk.xhr = createRequest({\n method: 'POST',\n headers: this.headers,\n url: this.action\n })\n\n chunk.xhr.upload.addEventListener('progress', function (evt) {\n if (evt.lengthComputable) {\n chunk.progress = Math.round(evt.loaded / evt.total * 100)\n }\n }, false)\n\n sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, {\n phase: 'upload',\n session_id: this.sessionId,\n start_offset: chunk.startOffset,\n chunk: chunk.blob\n })).then(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\n\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.finishBody, {\n phase: 'finish',\n session_id: this.sessionId\n })\n }).then(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","\n\n","\n\n\n","module.exports = require('./FileUpload.vue')\n"],"names":["createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","Object","keys","forEach","setRequestHeader","key","sendRequest","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","sendFormRequest","data","FormData","name","append","ChunkUploadHandler","file","chunks","start","end","chunkSize","fileSize","push","blob","slice","startOffset","active","retries","maxRetries","progress","stopChunks","chunksUploading","chunk","abort","startChunking","promise","request","assign","action","startBody","phase","mime_type","fileType","size","fileName","then","res","sessionId","session_id","end_offset","createChunks","catch","i","maxActiveChunks","uploadNextChunk","hasChunksToUpload","uploadChunk","chunksToUpload","length","finish","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","uploadBody","start_offset","uploaded","finishBody","parseInt","maxActive","type","completedProgress","chunksUploaded","uploadingProgress","reduce","min","filter","require$$0"],"mappings":"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AAP;EAGD;;;;;;;;;;;;;;;;;;;;;AC9HH;;;;;;;;;;;;;;;;;;;;;GAAA;;;EAZY,2BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECwCZ;;;;;;;;GAAA;;AAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAA;;;EAlDY,+BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECHZ,UAAiBW,UAAjB;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"vue-upload-component.part.js","sources":["../src/utils/request.js","../src/chunk/ChunkUploadHandler.js","../src/InputFile.vue","../src/FileUpload.vue","../src/index.js"],"sourcesContent":["/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const xhr = new XMLHttpRequest()\n xhr.open(options.method || 'GET', options.url)\n xhr.responseType = 'json'\n if (options.headers) {\n Object.keys(options.headers).forEach(key => {\n xhr.setRequestHeader(key, options.headers[key])\n })\n }\n\n return xhr\n}\n\n/**\n * Sends a XHR request with certain body\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} body\n */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(JSON.stringify(body))\n })\n}\n\n/**\n * Sends a XHR request with certain form data\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} data\n */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets the file name\n */\n get fileName () {\n return this.file.name\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\n return this.options.action || null\n }\n\n /**\n * Gets the body to be merged when sending the request in start phase\n */\n get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\n return !!this.chunks\n }\n\n /**\n * Gets the progress of the chunk upload\n * - Gets all the completed chunks\n * - Gets the progress of all the chunks that are being uploaded\n */\n get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.chunks.length)\n }, 0)\n\n return Math.min(completedProgress + uploadingProgress, 100)\n }\n\n /**\n * Gets all the chunks that are pending to be uploaded\n */\n get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let end = this.chunkSize\n while (start < this.fileSize) {\n this.chunks.push({\n blob: this.file.file.slice(start, end),\n startOffset: start,\n active: false,\n retries: this.maxRetries\n })\n start = end\n end = start + this.chunkSize\n }\n }\n\n /**\n * Updates the progress of the file with the handler's progress\n */\n updateFileProgress () {\n this.file.progress = this.progress\n }\n\n /**\n * Paues the upload process\n * - Stops all active requests\n * - Sets the file not active\n */\n pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n resume () {\n this.file.active = true\n this.startChunking()\n }\n\n /**\n * Starts the file upload\n *\n * @returns Promise\n * - resolve The file was uploaded\n * - reject The file upload failed\n */\n upload () {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve\n this.reject = reject\n })\n this.start()\n\n return this.promise\n }\n\n /**\n * Start phase\n * Sends a request to the backend to initialise the chunks\n */\n start () {\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.startBody, {\n phase: 'start',\n mime_type: this.fileType,\n size: this.fileSize,\n name: this.fileName\n })\n }).then(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\n }\n\n /**\n * Uploads the next chunk\n * - Won't do anything if the process is paused\n * - Will start finish phase if there are no more chunks to upload\n */\n uploadNextChunk () {\n if (this.file.active) {\n if (this.hasChunksToUpload) {\n return this.uploadChunk(this.chunksToUpload[0])\n }\n\n if (this.chunksUploading.length === 0) {\n return this.finish()\n }\n }\n }\n\n /**\n * Uploads a chunk\n * - Sends the chunk to the backend\n * - Sets the chunk as uploaded if everything went well\n * - Decreases the number of retries if anything went wrong\n * - Fails if there are no more retries\n *\n * @param {Object} chunk\n */\n uploadChunk (chunk) {\n chunk.progress = 0\n chunk.active = true\n this.updateFileProgress()\n chunk.xhr = createRequest({\n method: 'POST',\n headers: this.headers,\n url: this.action\n })\n\n chunk.xhr.upload.addEventListener('progress', function (evt) {\n if (evt.lengthComputable) {\n chunk.progress = Math.round(evt.loaded / evt.total * 100)\n }\n }, false)\n\n sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, {\n phase: 'upload',\n session_id: this.sessionId,\n start_offset: chunk.startOffset,\n chunk: chunk.blob\n })).then(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\n\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.finishBody, {\n phase: 'finish',\n session_id: this.sessionId\n })\n }).then(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","\n\n","\n\n\n","module.exports = require('./FileUpload.vue')\n"],"names":["createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","Object","keys","forEach","setRequestHeader","key","sendRequest","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","sendFormRequest","data","FormData","name","append","ChunkUploadHandler","file","chunks","start","end","chunkSize","fileSize","push","blob","slice","startOffset","active","retries","maxRetries","progress","stopChunks","chunksUploading","chunk","abort","startChunking","promise","request","assign","action","startBody","phase","mime_type","fileType","size","fileName","then","res","sessionId","session_id","end_offset","createChunks","catch","i","maxActiveChunks","uploadNextChunk","hasChunksToUpload","uploadChunk","chunksToUpload","length","finish","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","uploadBody","start_offset","uploaded","finishBody","parseInt","maxActive","type","completedProgress","chunksUploaded","uploadingProgress","reduce","min","filter","require$$0"],"mappings":"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AAP;EAGD;;;;;;;;;;;;;;;;;;;;;AC9HH;;;;;;;;;;;;;;;;;;;;;GAAA;;;EAZY,2BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECwCZ;;;;;;;;GAAA;;AAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAA;;;EAlDY,+BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECHZ,UAAiBW,UAAjB;;;;;;;;"} \ No newline at end of file diff --git a/docs/dist/index.js b/docs/dist/index.js index 5d97137..755cc69 100644 --- a/docs/dist/index.js +++ b/docs/dist/index.js @@ -2,5 +2,5 @@ * Name: vue-upload-component * Version: 2.8.19 * 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,{enumerable:!0,get:i})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var a in e)t.d(i,a,function(n){return e[n]}.bind(null,a));return i},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=26)}([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(51)},function(e,n){e.exports=function(e){var n=[];return n.toString=function(){return this.map(function(n){var t=function(e,n){var t=e[1]||"",i=e[3];if(!i)return t;if(n&&"function"==typeof btoa){var a=function(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}(i),o=i.sources.map(function(e){return"/*# sourceURL="+i.sourceRoot+e+" */"});return[t].concat(o).concat([a]).join("\n")}return[t].join("\n")}(n,e);return n[2]?"@media "+n[2]+"{"+t+"}":t}).join("")},n.i=function(e,t){"string"==typeof e&&(e=[[null,e,""]]);for(var i={},a=0;at.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### 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 = \"## 入门开始\\n\\n### NPM\\n\\n``` bash\\nnpm install vue-upload-component --save\\n```\\n\\n``` js\\nconst VueUploadComponent = require('vue-upload-component')\\nVue.component('file-upload', VueUploadComponent)\\n```\\n\\n### Curated\\n\\n**No data**\\n\\n\\n### 直接使用\\n\\n\\nunpkg\\n\\n``` html\\n\\n\\n\\n```\\n\\njsDelivr\\n\\n``` html\\n\\n\\n\\n```\\n\\n\\n### 简单的例子\\n\\n\\n\\n```html\\n\\n\\n\\n \\n Vue-upload-component Test\\n \\n \\n\\n\\n
\\n
    \\n
  • {{file.name}} - Error: {{file.error}}, Success: {{file.success}}
  • \\n
\\n \\n 上传文件\\n \\n \\n \\n
\\n\\n\\n\\n```\\n\\n\\n\\n### SSR (服务器同构)\\n\\n\\n```html\\n\\n\\n\\n```\\n\\n\\n** 或者 **\\n\\n\\n```js\\nimport FileUpload from 'vue-upload-component/src'\\n```\\n\\nwebpack.config.js\\n\\n```js\\nconst nodeExternals = require('webpack-node-externals');\\n{\\n //...\\n externals: [\\n nodeExternals({whitelist:[/^vue-upload-component\\\\/src/]})\\n ]\\n //...\\n}\\n```\\n\\n* [https://github.com/liady/webpack-node-externals](https://github.com/liady/webpack-node-externals) \\n\\n* [**`vue-hackernews` 演示**](https://github.com/lian-yue/vue-hackernews-2.0/) \\n\\n* [**浏览修改文件**](https://github.com/lian-yue/vue-hackernews-2.0/commit/bd6c58a30cc6b8ba6c0148e737b3ce9336b99cf8)\\n\\n\\n\\n\\n## 选项 / 属性\\n\\n\\n### input-id\\n\\ninput 标签的 `id` 属性\\n\\n* **类型:** `String`\\n\\n* **默认值:** `this.name`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### name\\n\\ninput标签的 `name` 属性\\n\\n* **类型:** `String`\\n\\n* **默认值:** `file`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### post-action\\n\\n`POST` 请求的上传URL\\n\\n* **类型:** `String`\\n\\n* **默认值:** `undefined`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### put-action\\n\\n`PUT` 请求的上传URL\\n\\n* **类型:** `String`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `> IE9`\\n\\n* **详细:** \\n\\n `put-action` 不为空请优先 `PUT` 请求 \\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n### custom-action\\n\\n自定义上传方法\\n\\n* **类型:** `async Function`\\n\\n* **默认值:** `undefined`\\n\\n* **详细:** \\n\\n `custom-action` 优先级高于 `put-action, post-action`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n ```js\\n async function customAction(file, component) {\\n // return await component.uploadPut(file)\\n return await component.uploadHtml4(file)\\n }\\n ```\\n\\n\\n\\n### headers\\n\\n自定义上传请求 `header` 数据\\n\\n* **类型:** `Object`\\n\\n* **默认值:** `{}`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### data\\n\\n`POST 请求`: 附加请求的 body \\n`PUT 请求`: 附加请求的 query \\n\\n* **类型:** `Object`\\n\\n* **默认值:** `{}`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### value, v-model\\n\\n文件列表\\n\\n* **类型:** `Array`\\n\\n* **默认值:** `[]`\\n\\n* **详细:** \\n\\n 浏览 **[`File`](#file)** 详细信息 \\n > 为了防止不可预知的错误,不可直接修改 `files`,请使用 [`add`](#实例-方法-add), [`update`](#实例-方法-update), [`remove`](#实例-方法-remove) 方法修改\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### accept\\n\\n表单的`accept`属性, MIME type \\n\\n* **类型:** `String`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### multiple\\n\\n文件表单的 `multiple` 属性 \\n是否允许选择多个文件 \\n\\n* **类型:** `Boolean`\\n\\n* **默认值:** `false`\\n\\n* **详细:** \\n\\n 如果是 `false` `files` 里面最多只有一个文件 多的会自动删除 \\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n### directory\\n\\n文件表单的 `directory` 属性 \\n是否是上传文件夹 \\n\\n* **类型:** `Boolean`\\n\\n* **默认值:** `false`\\n\\n* **浏览器:** [http://caniuse.com/#feat=input-file-directory](http://caniuse.com/#feat=input-file-directory)\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### extensions\\n\\n允许上传的文件后缀\\n\\n* **类型:** `Array | String | RegExp`\\n\\n* **默认值:** `undefined`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n \\n \\n ```\\n\\n\\n\\n\\n### size\\n\\n允许上传的最大字节\\n\\n* **类型:** `Number`\\n\\n* **默认值:** `0`\\n\\n* **浏览器:** `> IE9`\\n\\n* **详细:**\\n\\n `0` 等于不限制\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### timeout\\n\\n上传超时时间毫秒\\n\\n* **类型:** `Number`\\n\\n* **默认值:** `0`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n### maximum\\n\\n列表最大文件数\\n\\n* **类型:** `Number`\\n\\n* **默认值:** `props.multiple ? 0 : 1`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### thread\\n\\n同时并发上传的文件数量 线程数 \\n\\n* **类型:** `Number`\\n\\n* **默认值:** `1`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### drop\\n\\n拖拽上传 \\n\\n* **类型:** `Boolean | Element | CSS selector`\\n\\n* **默认值:** `false`\\n\\n* **浏览器:** [http://caniuse.com/#feat=dragndrop](http://caniuse.com/#feat=dragndrop)\\n\\n* **详细:**\\n\\n 如果设置成 `true` 则读取父组件作为容器 \\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### drop-directory\\n\\n是否开启拖拽目录 \\n\\n* **类型:** `Boolean`\\n\\n* **默认值:** `true`\\n\\n* **详细:**\\n\\n 如果设置成 `false` 则过滤掉目录\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n### add-index\\n\\n* **类型:** `Boolean, Number`\\n\\n* **默认值:** `undefined`\\n\\n* **版本:** `>= 2.6.1`\\n\\n* **详细:**\\n\\n [`add()`](#实例-方法-add) 方法 `index` 参数的默认值\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n## 选项 / 事件\\n\\n文件被改变触发的方法 \\n默认用于`v-model`绑定\\n\\n### @input\\n* **参数:**\\n\\n * `files: Array`\\n\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n### @input-filter\\n\\nAdd, update, remove pre-filter \\n\\n* **参数:**\\n\\n * `newFile: File | Object | undefined` `读写`\\n * `oldFile: File | Object | undefined` `只读`\\n * `prevent: Function` 调用该方法 阻止修改\\n\\n\\n* **详细:**\\n\\n 如果 `newFile` 值为 `undefined` 则是删除 \\n 如果 `oldFile` 值为 `undefined` 则是添加 \\n 如果 `newFile`, `oldFile` 都存在则是更新\\n\\n > 事件内同步处理请直接修改 `newFile` \\n > 事件内异步处理请使用 `update`, `add`, `remove`, `clear` 方法 \\n > 异步请先设置一个错误以防止被上传\\n\\n > 同步不能使用 `update`, `add`, `remove`, `clear` 方法 \\n > 异步不能修改 `newFile`\\n\\n\\n* **示例:** \\n ```html\\n \\n \\n ```\\n\\n### @input-file\\n\\n添加,更新,移除 后\\n\\n* **参数:**\\n\\n * `newFile: File | Object | undefined` `只读`\\n * `oldFile: File | Object | undefined` `只读`\\n\\n\\n* **详细:**\\n\\n 如果 `newFile` 值为 `undefined` 则是删除 \\n 如果 `oldFile` 值为 `undefined` 则是添加 \\n 如果 `newFile`, `oldFile` 都存在则是更新\\n\\n >事件内可使用 `update`, `add`, `remove`, `clear` 方法 \\n >事件内不可修改 `newFile` 对象 \\n >事件内不可修改 `oldFile` 对象\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n## 实例 / 数据\\n\\n### features\\n\\n用于判断浏览器支持的特性\\n\\n* **类型:** `Object`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `{ html5: true, directory: false, drag: false }`\\n\\n* **示例:**\\n ```html\\n \\n \\n 支持拖拽上传\\n 支持文件夹上传\\n 支持HTML5\\n \\n ```\\n\\n\\n\\n### active\\n\\n激活或停止上传\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `false`\\n\\n* **示例:**\\n ```html\\n \\n \\n 开始上传\\n 停止上传\\n \\n ```\\n\\n\\n\\n### dropActive\\n\\n是否正在拖拽\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `false`\\n\\n* **示例:**\\n ```html\\n \\n \\n 拖拽到这里上传\\n \\n ```\\n\\n\\n\\n\\n\\n### uploaded\\n\\n是否全部已上传\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `true`\\n\\n* **示例:**\\n ```html\\n \\n \\n 全部文件已上传完毕\\n \\n ```\\n\\n\\n\\n\\n\\n## 实例 / 方法\\n\\n\\n\\n### get()\\n\\n使用`id`获得某个对象\\n\\n* **参数:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **结果:** `File | Object | Boolean` 存在返回文件对象否则返回 `false`\\n\\n\\n\\n### add()\\n\\n添加一个或多个文件\\n\\n* **参数:**\\n\\n * `files: Array | File | window.File | Object` 如果它是一个数组的响应将是一个数组\\n * `index: Number | Boolean` = [`props.add-index`](#选项-属性-add-index) `true = ` 开始位置, `false = ` 结束位置, `Number = ` 下标位置\\n\\n\\n* **结果:** `Object | Array | Boolean` 传入的是数组返回数组否则对象或`false`\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n### addInputFile()\\n\\n把``选择的文件添加进上传列表 \\n\\n* **参数:**\\n\\n * `el: HTMLInputElement` 文件元素\\n\\n\\n* **结果:** `Array` 返回已添加的文件列表\\n\\n* **版本:** : `>=2.5.1`\\n\\n\\n\\n### addDataTransfer()\\n\\n把拖拽或者粘贴的数据的文件添加进上传列表 \\n\\n* **参数:**\\n\\n * `dataTransfer: DataTransfer` 拖拽或者粘贴的数据\\n\\n\\n* **结果:** `Promise>` 返回已添加的文件列表\\n\\n\\n* **版本:** : `>=2.5.1`\\n\\n\\n\\n### update()\\n\\n更新某个对象\\n\\n* **参数:**\\n\\n * `id: File | Object | String`\\n * `data: Object` 更新的数据对象\\n\\n\\n* **结果:** `Object | Boolean` 成功返回 `newFile` 失败返回 `false`\\n\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n### remove()\\n\\n移除某个文件对象\\n\\n* **参数:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **结果:** `Object | Boolean` 成功返回 `oldFile` 失败返回 `false`\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n### replace()\\n 替换两个文件的位置\\n\\n* **参数:**\\n\\n * `id1: File | Object | String`\\n * `id2: File | Object | String`\\n\\n\\n* **结果:** `Boolean`\\n\\n\\n\\n### clear()\\n\\n清空文件列表\\n\\n* **结果:** `Boolean` 总是返回 `true`\\n\\n\\n\\n## 实例 / File\\n\\n\\n> **文件对象在`input-filter`事件外修改请使用 [`update`](#实例-方法-update) 方法**\\n\\n\\n### fileObject\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `true`\\n\\n* **Required:** `true`\\n\\n* **默认值:** `true`\\n\\n* **版本:** : `>=2.6.0`\\n\\n* **详细:**\\n\\n 如果属性不存在,则不会在内部处理该对象 \\n 如果属性不存在,它不是 `File` 而是 `Object`\\n\\n\\n\\n### id\\n\\n文件id\\n\\n* **类型:** `String | Number`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `Math.random().toString(36).substr(2)`\\n\\n* **详细:**\\n\\n >`id` can not be repeated \\n >Upload can not modify `id`\\n\\n\\n### size\\n\\n文件大小\\n\\n* **类型:** `Number`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `-1`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n### name\\n\\n文件名 \\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** ` `\\n\\n* **详细:**\\n\\n 格式: `directory/filename.gif` `filename.gif` \\n\\n\\n\\n### type\\n\\nMIME类型\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** ` `\\n\\n* **浏览器:** `> IE9`\\n\\n* **详细:**\\n\\n 格式: `image/gif` `image/png` `text/html`\\n\\n\\n\\n\\n### active\\n\\n激活或终止上传\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `false`\\n\\n* **详细:**\\n\\n `true` = 上传 \\n `false` = 停止 \\n\\n\\n\\n\\n\\n\\n### error\\n\\n上传失败错误代码\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** ` `\\n\\n* **详细:**\\n\\n 内置\\n `size`, `extension`, `timeout`, `abort`, `network`, `server`, `denied`\\n\\n\\n\\n\\n### success\\n\\n是否上传成功\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `false`\\n\\n\\n### putAction\\n\\n自定义当前文件 `PUT` 地址\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.putAction`\\n\\n\\n\\n### postAction\\n\\n自定义当前文件 `POST` 地址\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.postAction`\\n\\n\\n\\n\\n### headers\\n\\n自定义当前文件 `HTTP` Header\\n\\n* **类型:** `Object`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.headers`\\n\\n\\n### data\\n\\n自定义当前文件 `body` 或 `query` 附加内容\\n\\n* **类型:** `Object`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.data`\\n\\n\\n### timeout\\n\\n自定义当前单个文件的上传超时时间\\n\\n* **类型:** `Number`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.timeout`\\n\\n\\n### response\\n\\n响应的数据\\n\\n* **类型:** `Object | String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `{}`\\n\\n\\n\\n\\n### progress\\n\\n上传进度\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `0.00`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n\\n### speed\\n\\n每秒的上传速度\\n\\n* **类型:** `Number`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `0`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n\\n\\n### xhr\\n\\n`HTML5` 上传 `XMLHttpRequest` 对象\\n\\n* **类型:** `XMLHttpRequest`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n\\n\\n### iframe\\n\\n`HTML4` 上传 `iframe` 元素\\n\\n* **类型:** `Element`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `= IE9`\\n\"","module.exports = VueRouter;","module.exports = VueI18n;","module.exports = ImageCompressor;","var map = {\n\t\"./en\": 21,\n\t\"./en.md\": 21,\n\t\"./zh-cn\": 22,\n\t\"./zh-cn.md\": 22\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 27;","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.document-title {\\n margin-bottom: 2rem;\\n padding-bottom: 1rem;\\n border-bottom: 1px solid #ddd;\\n}\\n.document-content h2 {\\n padding-top: 1rem;\\n padding-bottom: 1rem;\\n margin-top: 4rem;\\n border-bottom: 1px solid #eaecef;\\n}\\n.document-content h2:first-child {\\n margin-top: 0;\\n}\\n.document-content h2 + h3 {\\n margin-top: 0rem;\\n}\\n.document-content h3 {\\n margin-top: 1.5rem;\\n padding-top: 1rem;\\n margin-bottom: 1rem;\\n}\\n\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../node_modules/vue-style-loader/index.js!../node_modules/css-loader/index.js??ref--2-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../node_modules/vue-style-loader/index.js!../node_modules/css-loader/index.js??ref--2-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.file-uploads {\\n overflow: hidden;\\n position: relative;\\n text-align: center;\\n display: inline-block;\\n}\\n.file-uploads.file-uploads-html4 input, .file-uploads.file-uploads-html5 label {\\n /* background fix ie click */\\n background: #fff;\\n opacity: 0;\\n font-size: 20em;\\n z-index: 1;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n}\\n.file-uploads.file-uploads-html5 input, .file-uploads.file-uploads-html4 label {\\n /* background fix ie click */\\n background: rgba(255, 255, 255, 0);\\n overflow: hidden;\\n position: fixed;\\n width: 1px;\\n height: 1px;\\n z-index: -1;\\n opacity: 0;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-full .btn-group .dropdown-menu {\\n display: block;\\n visibility: hidden;\\n transition: all .2s\\n}\\n.example-full .btn-group:hover > .dropdown-menu {\\n visibility: visible;\\n}\\n.example-full label.dropdown-item {\\n margin-bottom: 0;\\n}\\n.example-full .btn-group .dropdown-toggle {\\n margin-right: .6rem\\n}\\n.example-full .filename {\\n margin-bottom: .3rem\\n}\\n.example-full .btn-is-option {\\n margin-top: 0.25rem;\\n}\\n.example-full .example-foorer {\\n padding: .5rem 0;\\n border-top: 1px solid #e9ecef;\\n border-bottom: 1px solid #e9ecef;\\n}\\n.example-full .edit-image img {\\n max-width: 100%;\\n}\\n.example-full .edit-image-tool {\\n margin-top: .6rem;\\n}\\n.example-full .edit-image-tool .btn-group{\\n margin-right: .6rem;\\n}\\n.example-full .footer-status {\\n padding-top: .4rem;\\n}\\n.example-full .drop-active {\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n position: fixed;\\n z-index: 9999;\\n opacity: .6;\\n text-align: center;\\n background: #000;\\n}\\n.example-full .drop-active h3 {\\n margin: -.5em 0 0;\\n position: absolute;\\n top: 50%;\\n left: 0;\\n right: 0;\\n -webkit-transform: translateY(-50%);\\n -ms-transform: translateY(-50%);\\n transform: translateY(-50%);\\n font-size: 40px;\\n color: #fff;\\n padding: 0;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-simple label.btn {\\n margin-bottom: 0;\\n margin-right: 1rem;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-avatar .avatar-upload .rounded-circle {\\n width: 200px;\\n height: 200px;\\n}\\n.example-avatar .text-center .btn {\\n margin: 0 .5rem\\n}\\n.example-avatar .avatar-edit-image {\\n max-width: 100%\\n}\\n.example-avatar .drop-active {\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n position: fixed;\\n z-index: 9999;\\n opacity: .6;\\n text-align: center;\\n background: #000;\\n}\\n.example-avatar .drop-active h3 {\\n margin: -.5em 0 0;\\n position: absolute;\\n top: 50%;\\n left: 0;\\n right: 0;\\n -webkit-transform: translateY(-50%);\\n -ms-transform: translateY(-50%);\\n transform: translateY(-50%);\\n font-size: 40px;\\n color: #fff;\\n padding: 0;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-drag label.btn {\\n margin-bottom: 0;\\n margin-right: 1rem;\\n}\\n.example-drag .drop-active {\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n position: fixed;\\n z-index: 9999;\\n opacity: .6;\\n text-align: center;\\n background: #000;\\n}\\n.example-drag .drop-active h3 {\\n margin: -.5em 0 0;\\n position: absolute;\\n top: 50%;\\n left: 0;\\n right: 0;\\n -webkit-transform: translateY(-50%);\\n -ms-transform: translateY(-50%);\\n transform: translateY(-50%);\\n font-size: 40px;\\n color: #fff;\\n padding: 0;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-multiple label.btn {\\n margin-bottom: 0;\\n margin-right: 1rem;\\n}\\n.example-multiple .upload {\\n margin-bottom: 1rem;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-simple label.btn {\\n margin-bottom: 0;\\n margin-right: 1rem;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=1&id=c205936e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=1&id=c205936e&scoped=true&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.chunk-loading[data-v-c205936e] {\\n margin: -12px;\\n display: flex;\\n width: calc(100% + 24px);\\n}\\n.chunk-loading .chunk-loading-part[data-v-c205936e] {\\n height: 25px;\\n line-height: 25px;\\n flex: 1;\\n background: #ccc;\\n font-size: 14px;\\n color: white;\\n text-align: center;\\n}\\n.chunk-loading .chunk-loading-part.chunk-loading-part__uploaded[data-v-c205936e] {\\n background: #28A745;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-vuex label.btn {\\n margin-bottom: 0;\\n margin-right: 1rem;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n#header {\\n position: -webkit-sticky;\\n position: sticky;\\n top: 0;\\n z-index: 1071;\\n}\\n#sidebar {\\n background: #fff;\\n border-right: 1px solid #e5e5e5;\\n border-bottom: 1px solid #e5e5e5;\\n}\\n@media (min-width: 768px) {\\n#sidebar {\\n position: -webkit-sticky;\\n position: sticky;\\n top: 3.5rem;\\n z-index: 1000;\\n max-height: calc(100vh - 3.5rem);\\n border-right: 1px solid #e5e5e5;\\n border-bottom: 1px solid #e5e5e5;\\n}\\n}\\n#sidebar-nav {\\n padding-top: 1rem;\\n padding-bottom: 1rem;\\n margin-right: -15px;\\n margin-left: -15px;\\n max-height: 100%;\\n overflow-y: auto;\\n}\\n#sidebar-nav .nav {\\n display: block;\\n}\\n#sidebar-nav .nav .nav-item .nav {\\n display: none;\\n margin-bottom: 1rem;\\n}\\n#sidebar-nav .nav .nav-item .nav {\\n display: none;\\n margin-bottom: 1rem;\\n}\\n#sidebar-nav .nav .nav-item.active .nav, #sidebar-nav .nav .active + .nav {\\n display: block;\\n}\\n@media (min-width: 768px) {\\n#sidebar-nav .nav .nav-item .nav {\\n display: block;\\n}\\n}\\n#sidebar-nav .nav .nav-link.active, #sidebar-nav .nav .active > .nav-link{\\n color: #262626;\\n font-weight: 500;\\n}\\n#sidebar-nav .nav-item .nav-link {\\n padding: .25rem 1rem;\\n font-weight: 500;\\n color: #666\\n}\\n#sidebar-nav .nav-item .nav-item .nav-link {\\n font-weight: 400;\\n font-size: 85%;\\n margin-left: 1rem\\n}\\n#main {\\n padding-top: 1rem;\\n margin-bottom: 2rem\\n}\\nblockquote {\\n margin-bottom: 1rem;\\n font-size: 1.25rem;\\n padding: 0 1em;\\n color: #6a737d;\\n border-left: 0.25em solid #dfe2e5;\\n}\\npre {\\n padding: 16px;\\n overflow: auto;\\n font-size: 85%;\\n line-height: 1.45;\\n background-color: #f6f8fa;\\n border-radius: 3px;\\n}\\n.modal-backdrop.fade {\\n visibility: hidden;\\n}\\n.modal-backdrop.fade.show {\\n visibility: visible;\\n}\\n.fade.show {\\n display: block;\\n z-index: 1072;\\n}\\n\", \"\"]);\n\n// exports\n","// import Vue from 'vue'\nimport Vuex from 'vuex'\n//\n// Vue.use(Vuex)\n\n\nconst state = {\n files: [],\n}\n\nconst mutations = {\n updateFiles(state, files) {\n state.files = files\n }\n}\nexport default new Vuex.Store({\n strict: true,\n state,\n mutations\n})\n","// import Vue from 'vue'\nimport VueI18n from 'vue-i18n'\nimport en from './en'\nimport zhCN from './zh-cn'\n\n// Vue.use(VueI18n)\n\nexport default new VueI18n({\n locale: 'en',\n messages: {\n 'zh-cn': zhCN,\n en,\n }\n})\n","export default {\n header: {\n logo: 'Vuejs',\n home: '首页',\n examples: '演示',\n documents: '文档',\n blog: 'Blog',\n locale: 'Language(语言)',\n issues: 'Issues',\n github: 'Github',\n },\n\n locale: {\n en: 'English',\n 'zh-cn': '中文(简体)',\n },\n\n document: {\n title: '文档',\n },\n\n\n example: {\n full: '完整例子',\n simple: '简单例子',\n avatar: '上传头像',\n drag: '拖拽上传',\n multiple: '多个实例',\n vuex: 'Vuex',\n }\n}\n","export default {\n header: {\n logo: 'Vuejs',\n home: 'Home',\n examples: 'Examples',\n documents: 'Documentation',\n blog: 'Blog',\n locale: 'Language(语言)',\n issues: 'Issues',\n github: 'Github',\n },\n\n locale: {\n en: 'English',\n 'zh-cn': '中文(简体)',\n },\n\n document: {\n title: 'Documentation',\n },\n\n example: {\n full: 'Full Example',\n simple: 'Simple',\n avatar: 'Upload avatar',\n drag: 'Drag and drop',\n multiple: 'Multiple instances',\n chunk: 'Chunk upload',\n vuex: 'Vuex',\n }\n}\n","import { render, staticRenderFns } from \"./Router.vue?vue&type=template&id=3075fd62&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-view')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./Document.vue?vue&type=template&id=61209807&\"\nimport script from \"./Document.vue?vue&type=script&lang=js&\"\nexport * from \"./Document.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Document.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"row flex-xl-nowrap\"},[_c('div',{staticClass:\"col-12 col-md-3 col-xl-2\",attrs:{\"id\":\"sidebar\"}},[_c('nav',{staticClass:\"collapse show\",attrs:{\"id\":\"sidebar-nav\"}},[_c('ul',{staticClass:\"nav\"},_vm._l((_vm.navs),function(group,index){return _c('li',{class:{'nav-item': true, active: (!_vm.$route.hash && !index) || _vm.$route.hash.indexOf(group.hash) === 1}},[_c('router-link',{class:{'nav-link': true, active: _vm.$route.hash.indexOf(group.hash) === 1},attrs:{\"active-class\":\"active\",\"to\":'#' + group.hash}},[_vm._v(_vm._s(group.name))]),_vm._v(\" \"),(group.children.length)?_c('ul',{staticClass:\"nav\"},_vm._l((group.children),function(child){return _c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":'#' + group.hash + '-' + child.hash}},[_vm._v(_vm._s(child.name))])],1)})):_vm._e()],1)}))])]),_vm._v(\" \"),_c('main',{staticClass:\"col-12 col-md-9 col-xl-10 py-md-3 pr-md-5 pl-md-5\",attrs:{\"id\":\"main\",\"role\":\"main\"}},[_c('h1',{staticClass:\"document-title\",attrs:{\"id\":\"document-title\"}},[_vm._v(_vm._s(_vm.$t('document.title')))]),_vm._v(\" \"),_c('div',{directives:[{name:\"markdown\",rawName:\"v-markdown\"}],staticClass:\"document-content\"},[_vm._v(_vm._s(_vm.document))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Example.vue?vue&type=template&id=02498012&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"row flex-xl-nowrap\"},[_c('div',{staticClass:\"col-12 col-md-3 col-xl-2\",attrs:{\"id\":\"sidebar\"}},[_c('nav',{staticClass:\"collapse show\",attrs:{\"id\":\"sidebar-nav\"}},[_c('ul',{staticClass:\"nav\"},[_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/full')}},[_vm._v(_vm._s(_vm.$t('example.full')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/simple')}},[_vm._v(_vm._s(_vm.$t('example.simple')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/avatar')}},[_vm._v(_vm._s(_vm.$t('example.avatar')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/drag')}},[_vm._v(_vm._s(_vm.$t('example.drag')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/multiple')}},[_vm._v(_vm._s(_vm.$t('example.multiple')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/chunk')}},[_vm._v(_vm._s(_vm.$t('example.chunk')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/vuex')}},[_vm._v(_vm._s(_vm.$t('example.vuex')))])],1)])])]),_vm._v(\" \"),_c('main',{staticClass:\"col-12 col-md-9 col-xl-10 py-md-3 pr-md-5 pl-md-5\",attrs:{\"id\":\"main\",\"role\":\"main\"}},[_c('router-view')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./Full.vue?vue&type=template&id=c2419f2a&\"\nimport script from \"./Full.vue?vue&type=script&lang=js&\"\nexport * from \"./Full.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Full.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-full\"},[_c('button',{staticClass:\"btn btn-danger float-right btn-is-option\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.isOption = !_vm.isOption}}},[_c('i',{staticClass:\"fa fa-cog\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Options\\n \")]),_vm._v(\" \"),_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Full Example\")]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$refs.upload && _vm.$refs.upload.dropActive),expression:\"$refs.upload && $refs.upload.dropActive\"}],staticClass:\"drop-active\"},[_c('h3',[_vm._v(\"Drop files to upload\")])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isOption),expression:\"!isOption\"}],staticClass:\"upload\"},[_c('div',{staticClass:\"table-responsive\"},[_c('table',{staticClass:\"table table-hover\"},[_vm._m(0),_vm._v(\" \"),_c('tbody',[(!_vm.files.length)?_c('tr',[_c('td',{attrs:{\"colspan\":\"7\"}},[_c('div',{staticClass:\"text-center p-5\"},[_vm._m(1),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-lg btn-primary\",attrs:{\"for\":_vm.name}},[_vm._v(\"Select Files\")])])])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.files),function(file,index){return _c('tr',{key:file.id},[_c('td',[_vm._v(_vm._s(index))]),_vm._v(\" \"),_c('td',[(file.thumb)?_c('img',{attrs:{\"src\":file.thumb,\"width\":\"40\",\"height\":\"auto\"}}):_c('span',[_vm._v(\"No Image\")])]),_vm._v(\" \"),_c('td',[_c('div',{staticClass:\"filename\"},[_vm._v(\"\\n \"+_vm._s(file.name)+\"\\n \")]),_vm._v(\" \"),(file.active || file.progress !== '0.00')?_c('div',{staticClass:\"progress\"},[_c('div',{class:{'progress-bar': true, 'progress-bar-striped': true, 'bg-danger': file.error, 'progress-bar-animated': file.active},style:({width: file.progress + '%'}),attrs:{\"role\":\"progressbar\"}},[_vm._v(_vm._s(file.progress)+\"%\")])]):_vm._e()]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.speed)))]),_vm._v(\" \"),(file.error)?_c('td',[_vm._v(_vm._s(file.error))]):(file.success)?_c('td',[_vm._v(\"success\")]):(file.active)?_c('td',[_vm._v(\"active\")]):_c('td'),_vm._v(\" \"),_c('td',[_c('div',{staticClass:\"btn-group\"},[_c('button',{staticClass:\"btn btn-secondary btn-sm dropdown-toggle\",attrs:{\"type\":\"button\"}},[_vm._v(\"\\n Action\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-menu\"},[_c('a',{class:{'dropdown-item': true, disabled: file.active || file.success || file.error === 'compressing'},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();file.active || file.success || file.error === 'compressing' ? false : _vm.onEditFileShow(file)}}},[_vm._v(\"Edit\")]),_vm._v(\" \"),_c('a',{class:{'dropdown-item': true, disabled: !file.active},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();file.active ? _vm.$refs.upload.update(file, {error: 'cancel'}) : false}}},[_vm._v(\"Cancel\")]),_vm._v(\" \"),(file.active)?_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.update(file, {active: false})}}},[_vm._v(\"Abort\")]):(file.error && file.error !== 'compressing' && _vm.$refs.upload.features.html5)?_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.update(file, {active: true, error: '', progress: '0.00'})}}},[_vm._v(\"Retry upload\")]):_c('a',{class:{'dropdown-item': true, disabled: file.success || file.error === 'compressing'},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();file.success || file.error === 'compressing' ? false : _vm.$refs.upload.update(file, {active: true})}}},[_vm._v(\"Upload\")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\"}),_vm._v(\" \"),_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.remove(file)}}},[_vm._v(\"Remove\")])])])])])})],2)])]),_vm._v(\" \"),_c('div',{staticClass:\"example-foorer\"},[_c('div',{staticClass:\"footer-status float-right\"},[_vm._v(\"\\n Drop: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.drop : false)+\",\\n Active: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.active : false)+\",\\n Uploaded: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.uploaded : true)+\",\\n Drop active: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.dropActive : false)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"btn-group\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary dropdown-toggle\",attrs:{\"post-action\":_vm.postAction,\"put-action\":_vm.putAction,\"extensions\":_vm.extensions,\"accept\":_vm.accept,\"multiple\":_vm.multiple,\"directory\":_vm.directory,\"size\":_vm.size || 0,\"thread\":_vm.thread < 1 ? 1 : (_vm.thread > 5 ? 5 : _vm.thread),\"headers\":_vm.headers,\"data\":_vm.data,\"drop\":_vm.drop,\"drop-directory\":_vm.dropDirectory,\"add-index\":_vm.addIndex},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-menu\"},[_c('label',{staticClass:\"dropdown-item\",attrs:{\"for\":_vm.name}},[_vm._v(\"Add files\")]),_vm._v(\" \"),_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.onAddFolader}},[_vm._v(\"Add folder\")]),_vm._v(\" \"),_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.addData.show = true}}},[_vm._v(\"Add data\")])])],1),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isOption),expression:\"isOption\"}],staticClass:\"option\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"accept\"}},[_vm._v(\"Accept:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.accept),expression:\"accept\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"accept\"},domProps:{\"value\":(_vm.accept)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.accept=$event.target.value}}}),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Allow upload mime type\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"extensions\"}},[_vm._v(\"Extensions:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.extensions),expression:\"extensions\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"extensions\"},domProps:{\"value\":(_vm.extensions)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.extensions=$event.target.value}}}),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Allow upload file extension\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"PUT Upload:\")]),_vm._v(\" \"),_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.putAction),expression:\"putAction\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"radio\",\"name\":\"put-action\",\"id\":\"put-action\",\"value\":\"\"},domProps:{\"checked\":_vm._q(_vm.putAction,\"\")},on:{\"change\":function($event){_vm.putAction=\"\"}}}),_vm._v(\" Off\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.putAction),expression:\"putAction\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"radio\",\"name\":\"put-action\",\"id\":\"put-action\",\"value\":\"/upload/put\"},domProps:{\"checked\":_vm._q(_vm.putAction,\"/upload/put\")},on:{\"change\":function($event){_vm.putAction=\"/upload/put\"}}}),_vm._v(\" On\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"After the shutdown, use the POST method to upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"thread\"}},[_vm._v(\"Thread:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.thread),expression:\"thread\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"max\":\"5\",\"min\":\"1\",\"id\":\"thread\"},domProps:{\"value\":(_vm.thread)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.thread=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}}),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Also upload the number of files at the same time (number of threads)\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"size\"}},[_vm._v(\"Max size:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.size),expression:\"size\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"min\":\"0\",\"id\":\"size\"},domProps:{\"value\":(_vm.size)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.size=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"minSize\"}},[_vm._v(\"Min size:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.minSize),expression:\"minSize\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"min\":\"0\",\"id\":\"minSize\"},domProps:{\"value\":(_vm.minSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.minSize=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"autoCompress\"}},[_vm._v(\"Automatically compress:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.autoCompress),expression:\"autoCompress\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"min\":\"0\",\"id\":\"autoCompress\"},domProps:{\"value\":(_vm.autoCompress)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.autoCompress=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}}),_vm._v(\" \"),(_vm.autoCompress > 0)?_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"More than \"+_vm._s(_vm._f(\"formatSize\")(_vm.autoCompress))+\" files are automatically compressed\")]):_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Set up automatic compression\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addIndex),expression:\"addIndex\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"add-index\"},domProps:{\"checked\":Array.isArray(_vm.addIndex)?_vm._i(_vm.addIndex,null)>-1:(_vm.addIndex)},on:{\"change\":function($event){var $$a=_vm.addIndex,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.addIndex=$$a.concat([$$v]))}else{$$i>-1&&(_vm.addIndex=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.addIndex=$$c}}}}),_vm._v(\" Start position to add\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Add a file list to start the location to add\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.drop),expression:\"drop\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"drop\"},domProps:{\"checked\":Array.isArray(_vm.drop)?_vm._i(_vm.drop,null)>-1:(_vm.drop)},on:{\"change\":function($event){var $$a=_vm.drop,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.drop=$$a.concat([$$v]))}else{$$i>-1&&(_vm.drop=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.drop=$$c}}}}),_vm._v(\" Drop\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Drag and drop upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.dropDirectory),expression:\"dropDirectory\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"drop-directory\"},domProps:{\"checked\":Array.isArray(_vm.dropDirectory)?_vm._i(_vm.dropDirectory,null)>-1:(_vm.dropDirectory)},on:{\"change\":function($event){var $$a=_vm.dropDirectory,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.dropDirectory=$$a.concat([$$v]))}else{$$i>-1&&(_vm.dropDirectory=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.dropDirectory=$$c}}}}),_vm._v(\" Drop directory\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Not checked, filter the dragged folder\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.uploadAuto),expression:\"uploadAuto\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"upload-auto\"},domProps:{\"checked\":Array.isArray(_vm.uploadAuto)?_vm._i(_vm.uploadAuto,null)>-1:(_vm.uploadAuto)},on:{\"change\":function($event){var $$a=_vm.uploadAuto,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.uploadAuto=$$a.concat([$$v]))}else{$$i>-1&&(_vm.uploadAuto=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.uploadAuto=$$c}}}}),_vm._v(\" Auto start\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Automatically activate upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('button',{staticClass:\"btn btn-primary btn-lg btn-block\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.isOption = !_vm.isOption}}},[_vm._v(\"Confirm\")])])]),_vm._v(\" \"),_c('div',{class:{'modal-backdrop': true, 'fade': true, show: _vm.addData.show}}),_vm._v(\" \"),_c('div',{class:{modal: true, fade: true, show: _vm.addData.show},attrs:{\"id\":\"modal-add-data\",\"tabindex\":\"-1\",\"role\":\"dialog\"}},[_c('div',{staticClass:\"modal-dialog\",attrs:{\"role\":\"document\"}},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"modal-header\"},[_c('h5',{staticClass:\"modal-title\"},[_vm._v(\"Add data\")]),_vm._v(\" \"),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.addData.show = false}}},[_c('span',[_vm._v(\"×\")])])]),_vm._v(\" \"),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.onAddData($event)}}},[_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"name\"}},[_vm._v(\"Name:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addData.name),expression:\"addData.name\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"required\":\"\",\"id\":\"name\",\"placeholder\":\"Please enter a file name\"},domProps:{\"value\":(_vm.addData.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.addData, \"name\", $event.target.value)}}}),_vm._v(\" \"),_vm._m(2)]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"type\"}},[_vm._v(\"Type:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addData.type),expression:\"addData.type\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"required\":\"\",\"id\":\"type\",\"placeholder\":\"Please enter the MIME type\"},domProps:{\"value\":(_vm.addData.type)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.addData, \"type\", $event.target.value)}}}),_vm._v(\" \"),_vm._m(3)]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"content\"}},[_vm._v(\"Content:\")]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addData.content),expression:\"addData.content\"}],staticClass:\"form-control\",attrs:{\"required\":\"\",\"id\":\"content\",\"rows\":\"3\",\"placeholder\":\"Please enter the file contents\"},domProps:{\"value\":(_vm.addData.content)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.addData, \"content\", $event.target.value)}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"modal-footer\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.addData.show = false}}},[_vm._v(\"Close\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\"Save\")])])])])])]),_vm._v(\" \"),_c('div',{class:{'modal-backdrop': true, 'fade': true, show: _vm.editFile.show}}),_vm._v(\" \"),_c('div',{class:{modal: true, fade: true, show: _vm.editFile.show},attrs:{\"id\":\"modal-edit-file\",\"tabindex\":\"-1\",\"role\":\"dialog\"}},[_c('div',{staticClass:\"modal-dialog modal-lg\",attrs:{\"role\":\"document\"}},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"modal-header\"},[_c('h5',{staticClass:\"modal-title\"},[_vm._v(\"Edit file\")]),_vm._v(\" \"),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.editFile.show = false}}},[_c('span',[_vm._v(\"×\")])])]),_vm._v(\" \"),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.onEditorFile($event)}}},[_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"name\"}},[_vm._v(\"Name:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.editFile.name),expression:\"editFile.name\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"required\":\"\",\"id\":\"name\",\"placeholder\":\"Please enter a file name\"},domProps:{\"value\":(_vm.editFile.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.editFile, \"name\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.editFile.show && _vm.editFile.blob && _vm.editFile.type && _vm.editFile.type.substr(0, 6) === 'image/')?_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Image: \")]),_vm._v(\" \"),_c('div',{staticClass:\"edit-image\"},[_c('img',{ref:\"editImage\",attrs:{\"src\":_vm.editFile.blob}})]),_vm._v(\" \"),_c('div',{staticClass:\"edit-image-tool\"},[_c('div',{staticClass:\"btn-group\",attrs:{\"role\":\"group\"}},[_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.rotate(-90)\"},on:{\"click\":function($event){_vm.editFile.cropper.rotate(-90)}}},[_c('i',{staticClass:\"fa fa-undo\",attrs:{\"aria-hidden\":\"true\"}})]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.rotate(90)\"},on:{\"click\":function($event){_vm.editFile.cropper.rotate(90)}}},[_c('i',{staticClass:\"fa fa-repeat\",attrs:{\"aria-hidden\":\"true\"}})])]),_vm._v(\" \"),_c('div',{staticClass:\"btn-group\",attrs:{\"role\":\"group\"}},[_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.crop()\"},on:{\"click\":function($event){_vm.editFile.cropper.crop()}}},[_c('i',{staticClass:\"fa fa-check\",attrs:{\"aria-hidden\":\"true\"}})]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.clear()\"},on:{\"click\":function($event){_vm.editFile.cropper.clear()}}},[_c('i',{staticClass:\"fa fa-remove\",attrs:{\"aria-hidden\":\"true\"}})])])])]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"modal-footer\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.editFile.show = false}}},[_vm._v(\"Close\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\"Save\")])])])])])]),_vm._v(\" \"),_vm._m(4)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"#\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Thumb\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Name\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Size\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Speed\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Status\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Action\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',[_vm._v(\"Drop files anywhere to upload\"),_c('br'),_vm._v(\"or\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Such as \"),_c('code',[_vm._v(\"filename.txt\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Such as \"),_c('code',[_vm._v(\"text/plain\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Full.vue\"}},[_vm._v(\"/docs/views/examples/Full.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./Simple.vue?vue&type=template&id=3576474f&\"\nimport script from \"./Simple.vue?vue&type=script&lang=js&\"\nexport * from \"./Simple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Simple.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-simple\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Simple Example\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"multiple\":true,\"size\":1024 * 1024 * 10},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Simple.vue\"}},[_vm._v(\"/docs/views/examples/Simple.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Avatar.vue?vue&type=template&id=7343c9e0&\"\nimport script from \"./Avatar.vue?vue&type=script&lang=js&\"\nexport * from \"./Avatar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Avatar.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-avatar\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$refs.upload && _vm.$refs.upload.dropActive),expression:\"$refs.upload && $refs.upload.dropActive\"}],staticClass:\"drop-active\"},[_c('h3',[_vm._v(\"Drop files to upload\")])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.edit),expression:\"!edit\"}],staticClass:\"avatar-upload\"},[_c('div',{staticClass:\"text-center p-2\"},[_c('label',{attrs:{\"for\":\"avatar\"}},[_c('img',{staticClass:\"rounded-circle\",attrs:{\"src\":_vm.files.length ? _vm.files[0].url : 'https://www.gravatar.com/avatar/default?s=200&r=pg&d=mm'}}),_vm._v(\" \"),_vm._m(0)])]),_vm._v(\" \"),_c('div',{staticClass:\"text-center p-2\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"name\":\"avatar\",\"post-action\":\"/upload/post\",\"drop\":!_vm.edit},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_vm._v(\"\\n Upload avatar\\n \")])],1)]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.files.length && _vm.edit),expression:\"files.length && edit\"}],staticClass:\"avatar-edit\"},[(_vm.files.length)?_c('div',{staticClass:\"avatar-edit-image\"},[_c('img',{ref:\"editImage\",attrs:{\"src\":_vm.files[0].url}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text-center p-4\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$refs.upload.clear($event)}}},[_vm._v(\"Cancel\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"submit\"},on:{\"click\":function($event){$event.preventDefault();return _vm.editSave($event)}}},[_vm._v(\"Save\")])])]),_vm._v(\" \"),_vm._m(1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',{staticClass:\"pt-2\"},[_vm._v(\"or\"),_c('br'),_vm._v(\"Drop files anywhere to upload\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Avatar.vue\"}},[_vm._v(\"/docs/views/examples/Avatar.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./Drag.vue?vue&type=template&id=6899f793&\"\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\")]):_c('span')])})):_c('ul',[_vm._m(0)]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$refs.upload && _vm.$refs.upload.dropActive),expression:\"$refs.upload && $refs.upload.dropActive\"}],staticClass:\"drop-active\"},[_c('h3',[_vm._v(\"Drop files to upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"multiple\":true,\"drop\":true,\"drop-directory\":true},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',{attrs:{\"colspan\":\"7\"}},[_c('div',{staticClass:\"text-center p-5\"},[_c('h4',[_vm._v(\"Drop files anywhere to upload\"),_c('br'),_vm._v(\"or\")]),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-lg btn-primary\",attrs:{\"for\":\"file\"}},[_vm._v(\"Select Files\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Drag.vue\"}},[_vm._v(\"/docs/views/examples/Drag.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./Multiple.vue?vue&type=template&id=3d82a174&\"\nimport script from \"./Multiple.vue?vue&type=script&lang=js&\"\nexport * from \"./Multiple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Multiple.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-multiple\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Multiple instances\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files1),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload1\",staticClass:\"btn btn-primary\",attrs:{\"input-id\":\"file1\",\"post-action\":\"/upload/post\"},model:{value:(_vm.files1),callback:function ($$v) {_vm.files1=$$v},expression:\"files1\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-primary\",attrs:{\"for\":\"file1\"}},[_vm._v(\"Label Select files\")]),_vm._v(\" \"),(!_vm.$refs.upload1 || !_vm.$refs.upload1.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload1.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload1.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files2),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload2\",staticClass:\"btn btn-primary\",attrs:{\"input-id\":\"file2\",\"post-action\":\"/upload/post\"},model:{value:(_vm.files2),callback:function ($$v) {_vm.files2=$$v},expression:\"files2\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-primary\",attrs:{\"for\":\"file2\"}},[_vm._v(\"Label Select files\")]),_vm._v(\" \"),(!_vm.$refs.upload2 || !_vm.$refs.upload2.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload2.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload2.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Multiple.vue\"}},[_vm._v(\"/docs/views/examples/Multiple.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import { render, staticRenderFns } from \"./Chunk.vue?vue&type=template&id=c205936e&scoped=true&\"\nimport script from \"./Chunk.vue?vue&type=script&lang=js&\"\nexport * from \"./Chunk.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Chunk.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./Chunk.vue?vue&type=style&index=1&id=c205936e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c205936e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-simple\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Chunk Upload Example\")]),_vm._v(\" \"),_c('p',[_vm._v(\"When using chunk uploads, the file will be uploaded in different parts (or chunks). All the files with a size higher than the set in the input will be uploaded using this method.\")]),_vm._v(\" \"),_vm._m(0),_vm._v(\" \"),_c('p',[_vm._v(\"You can also pause / resume the upload process.\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('div',{staticClass:\"form-horizontal\"},[_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"col-sm-offset-2 col-sm-10\"},[_c('div',{staticClass:\"checkbox\"},[_c('label',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkEnabled),expression:\"chunkEnabled\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.chunkEnabled)?_vm._i(_vm.chunkEnabled,null)>-1:(_vm.chunkEnabled)},on:{\"change\":function($event){var $$a=_vm.chunkEnabled,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.chunkEnabled=$$a.concat([$$v]))}else{$$i>-1&&(_vm.chunkEnabled=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.chunkEnabled=$$c}}}}),_vm._v(\" Use chunk upload\\n \")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"inputMinSize\"}},[_vm._v(\"Min Size\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10\"},[_c('div',{staticClass:\"input-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkMinSize),expression:\"chunkMinSize\"}],staticClass:\"form-control\",attrs:{\"id\":\"inputMinSize\",\"type\":\"number\"},domProps:{\"value\":(_vm.chunkMinSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.chunkMinSize=$event.target.value}}}),_vm._v(\" \"),_c('span',{staticClass:\"input-group-addon\"},[_vm._v(\"MB\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"inputMaxActive\"}},[_vm._v(\"Max Active Chunks\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkMaxActive),expression:\"chunkMaxActive\"}],staticClass:\"form-control\",attrs:{\"id\":\"inputMaxActive\",\"type\":\"number\"},domProps:{\"value\":(_vm.chunkMaxActive)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.chunkMaxActive=$event.target.value}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"inputMaxRetries\"}},[_vm._v(\"Max Chunk Retries\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkMaxRetries),expression:\"chunkMaxRetries\"}],staticClass:\"form-control\",attrs:{\"id\":\"inputMaxRetries\",\"type\":\"number\"},domProps:{\"value\":(_vm.chunkMaxRetries)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.chunkMaxRetries=$event.target.value}}})])])]),_vm._v(\" \"),_c('table',{staticClass:\"table table-striped table-condensed\"},[_vm._m(1),_vm._v(\" \"),_c('tbody',[_vm._l((_vm.files),function(file){return [_c('tr',{key:file.id + '-info'},[_c('td',[_vm._v(_vm._s(file.name))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.progress)+\"%\")]),_vm._v(\" \"),(file.error)?_c('td',[_vm._v(_vm._s(file.error))]):(file.success)?_c('td',[_vm._v(\"Success\")]):(file.active)?_c('td',[_vm._v(\"Active\")]):_c('td',[_vm._v(\" - \")]),_vm._v(\" \"),_c('td',[(file.chunk)?[(file.active)?_c('button',{staticClass:\"btn btn-sm btn-danger\",on:{\"click\":function($event){file.chunk.pause()}}},[_c('i',{staticClass:\"fa fa-pause\"})]):_vm._e(),_vm._v(\" \"),(!file.active && file.chunk.hasChunksToUpload)?_c('button',{staticClass:\"btn btn-sm btn-primary\",on:{\"click\":function($event){file.chunk.resume()}}},[_c('i',{staticClass:\"fa fa-play\"})]):_vm._e()]:_vm._e()],2),_vm._v(\" \"),(file.chunk)?[_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.chunk.chunks.length))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.chunk.chunksUploading.length))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.chunk.chunksUploaded.length))])]:[_c('td',{staticClass:\"text-right\"},[_vm._v(\" - \")]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(\" - \")]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(\" - \")])]],2),_vm._v(\" \"),_c('tr',{key:file.id + '-loading'},[_c('td',{attrs:{\"colspan\":\"8\"}},[(file.chunk)?_c('div',{staticClass:\"chunk-loading\"},_vm._l((file.chunk.chunks),function(chunk,index){return _c('span',{key:index,staticClass:\"chunk-loading-part\",class:{'chunk-loading-part__uploaded': chunk.uploaded}},[(chunk.retries != file.chunk.maxRetries)?[_vm._v(\"\\n \"+_vm._s(file.chunk.maxRetries - chunk.retries)+\" error(s)\\n \")]:_vm._e()],2)})):_vm._e()])])]})],2)]),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"chunk-enabled\":_vm.chunkEnabled,\"chunk\":{\n action: '/upload/chunk',\n minSize: _vm.chunkMinSize * 1048576,\n maxActive: _vm.chunkMaxActive,\n maxRetries: _vm.chunkMaxRetries\n },\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"multiple\":true,\"size\":1024 * 1024 * 10},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")])],1)]),_vm._v(\" \"),_vm._m(2)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"You will be able to see the different parts being uploaded individually. Some parts might fail, and the package is prepared to \"),_c('em',[_vm._v(\"retry\")]),_vm._v(\" up to a certain amount of times.\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',{staticClass:\"thead-dark\"},[_c('tr',[_c('th',[_vm._v(\"Name\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Size\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Progress\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Status\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Pause\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-center\",attrs:{\"colspan\":\"3\"}},[_vm._v(\"Chunks\")])]),_vm._v(\" \"),_c('tr',[_c('th',{attrs:{\"colspan\":\"5\"}}),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Total\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Active\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Completed\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Chunk.vue\"}},[_vm._v(\"/docs/views/examples/Chunk.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=script&lang=js&\"","\n\n\n\n","// import Vue from 'vue'\nimport VueRouter from 'vue-router'\n\nimport i18n from './i18n'\nimport RouterComponent from './views/Router'\nimport DocumentComponent from './views/Document'\nimport ExampleComponent from './views/Example'\n\nimport FullExampleComponent from './views/examples/Full'\nimport SimpleExampleComponent from './views/examples/Simple'\nimport AvatarExampleComponent from './views/examples/Avatar'\nimport DragExampleComponent from './views/examples/Drag'\nimport MultipleExampleComponent from './views/examples/Multiple'\nimport ChunkExampleComponent from './views/examples/Chunk'\nimport VuexExampleComponent from './views/examples/Vuex'\n\n\n\n// Vue.use(VueRouter)\n\n\nlet examples = [\n {\n path: '',\n component: FullExampleComponent,\n },\n {\n path: 'full',\n component: FullExampleComponent,\n },\n {\n path: 'simple',\n component: SimpleExampleComponent,\n },\n {\n path: 'avatar',\n component: AvatarExampleComponent,\n },\n {\n path: 'drag',\n component: DragExampleComponent,\n },\n {\n path: 'multiple',\n component: MultipleExampleComponent,\n },\n {\n path: 'chunk',\n component: ChunkExampleComponent,\n },\n {\n path: 'vuex',\n component: VuexExampleComponent,\n },\n]\n\n\n\nconst router = new VueRouter({\n mode: 'hash',\n fallback: false,\n scrollBehavior(to, from, savedPosition) {\n if (savedPosition) {\n return savedPosition\n } else if (to.hash) {\n let el = document.querySelector(to.hash)\n return { x: 0, y: el ? el.offsetTop : 0 }\n } else {\n return { x: 0, y: 0 }\n }\n },\n routes: [\n {\n path: '/:locale(' + Object.keys(i18n.messages).join('|') + ')?',\n component: RouterComponent,\n children: [\n {\n path: 'documents',\n component: DocumentComponent,\n },\n {\n path: 'examples',\n component: ExampleComponent,\n children: examples,\n },\n {\n path: '',\n component: ExampleComponent,\n children: examples,\n },\n ]\n },\n ]\n})\nexport default router\n","import { render, staticRenderFns } from \"./Vuex.vue?vue&type=template&id=765a8e49&\"\nimport script from \"./Vuex.vue?vue&type=script&lang=js&\"\nexport * from \"./Vuex.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Vuex.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-vuex\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Vuex Example\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"multiple\":true,\"size\":1024 * 1024 * 10,\"value\":_vm.files},on:{\"input\":_vm.inputUpdate}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Vuex.vue\"}},[_vm._v(\"/docs/views/examples/Vuex.vue\")]),_vm._v(\", \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/store.js\"}},[_vm._v(\"/docs/store.js\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=521aa91e&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('header',{staticClass:\"navbar navbar-expand-lg navbar-dark bg-dark\",attrs:{\"id\":\"header\"}},[_c('router-link',{staticClass:\"navbar-brand\",attrs:{\"exact\":true,\"to\":_vm._f(\"toLocale\")('/')}},[_vm._v(_vm._s(_vm.$t('header.logo')))]),_vm._v(\" \"),_c('button',{staticClass:\"navbar-toggler\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.showNav = !_vm.showNav}}},[_c('span',{staticClass:\"navbar-toggler-icon\"})]),_vm._v(\" \"),_c('nav',{class:{collapse: true, 'navbar-collapse': true, show: _vm.showNav},attrs:{\"id\":\"navbar\"}},[_c('ul',{staticClass:\"navbar-nav\"},[_c('li',{staticClass:\"nav-item\"},[_c('router-link',{class:'nav-link' + (_vm.$route.path === '/' ? ' active' : ''),attrs:{\"active-class\":\"active\",\"exact\":true,\"to\":_vm._f(\"toLocale\")('/')}},[_vm._v(_vm._s(_vm.$t('header.home')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/documents')}},[_vm._v(_vm._s(_vm.$t('header.documents')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples')}},[_vm._v(_vm._s(_vm.$t('header.examples')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"rel\":\"license noopener\",\"href\":\"https://www.lianyue.org\",\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t('header.blog')))])])]),_vm._v(\" \"),_c('ul',{staticClass:\"navbar-nav ml-md-auto\"},[_c('li',{staticClass:\"nav-item dropdown\"},[_c('a',{staticClass:\"nav-link dropdown-toggle\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.onLocale(true)},\"focus\":function($event){_vm.onLocale(true)},\"blur\":function($event){_vm.onLocale(false)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('header.locale'))+\"\\n \")]),_vm._v(\" \"),_c('div',{class:{'dropdown-menu': true, show: _vm.showLocale},on:{\"blur\":function($event){_vm.onLocale(false)}}},_vm._l((_vm.locale),function(value,name){return _c('router-link',{key:name,staticClass:\"dropdown-item\",attrs:{\"to\":'/' + name + (_vm.$route.params.locale ? _vm.$route.fullPath.substr(_vm.$route.params.locale.length + 1) : _vm.$route.fullPath)}},[_vm._v(_vm._s(value))])}))]),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/issues\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('header.issues'))+\"\\n \")])]),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('header.github'))+\"\\n \")])])])])],1),_vm._v(\" \"),_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport marked from 'marked'\nimport highlightjs from 'highlight.js'\nimport store from './store'\nimport router from './router'\nimport i18n from './i18n'\nimport App from './views/App'\n\nVue.config.silent = false\nVue.config.devtools = true\n\n\nclass Renderer extends marked.Renderer {\n heading(text, level, raw) {\n let rawName = raw.toLowerCase().replace(/([\\u0000-\\u002F\\u003A-\\u0060\\u007B-\\u007F]+)/g, '-').replace(/^\\-+|\\-+$/, '')\n\n if (!this.options.headers) {\n this.options.headers = []\n }\n while (this.options.headers.length >= level) {\n this.options.headers.pop()\n }\n let parent = this.options.headers.filter(value => !!value).join('-')\n if (parent) {\n parent = parent + '-'\n }\n while (this.options.headers.length < (level - 1)) {\n this.options.headers.push('')\n }\n this.options.headers.push(rawName)\n return ''\n + text\n + '\\n'\n }\n}\n\nmarked.setOptions({\n renderer: new Renderer(),\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n smartLists: true,\n smartypants: false,\n highlight(code, lang) {\n if (lang) {\n return highlightjs.highlight(lang, code).value\n } else {\n return highlightjs.highlightAuto(code).value\n }\n }\n})\n\nVue.directive('markdown', function (el, binding, vnode) {\n if (!el.className || !/vue-markdown/.test(el.className)) {\n el.className += ' vue-markdown'\n }\n let text = ''\n for (let i = 0; i < vnode.children.length; i++) {\n text += vnode.children[i].text || ''\n }\n if (el.markdown === text) {\n return\n }\n\n el.markdown = text\n\n el.innerHTML = marked(text)\n let selectorList = el.querySelectorAll('a')\n for (let i = 0; i < selectorList.length; i++) {\n selectorList[i].onclick = function (e) {\n if (e.metaKey || e.ctrlKey || e.shiftKey) {\n return\n }\n if (e.defaultPrevented) {\n return\n }\n if (e.button !== undefined && e.button !== 0) {\n return\n }\n\n if (this.host !== window.location.host) {\n return\n }\n\n let href = this.getAttribute('href')\n if (!href) {\n return\n }\n\n if (href.charAt(0) !== '#') {\n return\n }\n\n e.preventDefault()\n router.push(href)\n }\n }\n})\n\n\n\nVue.filter('formatSize', function (size) {\n if (size > 1024 * 1024 * 1024 * 1024) {\n return (size / 1024 / 1024 / 1024 / 1024).toFixed(2) + ' TB'\n } else if (size > 1024 * 1024 * 1024) {\n return (size / 1024 / 1024 / 1024).toFixed(2) + ' GB'\n } else if (size > 1024 * 1024) {\n return (size / 1024 / 1024).toFixed(2) + ' MB'\n } else if (size > 1024) {\n return (size / 1024).toFixed(2) + ' KB'\n }\n return size.toString() + ' B'\n})\n\nVue.filter('toLocale', function (to) {\n return '/' + i18n.locale + to\n})\n\n\n\nnew Vue({\n store,\n router,\n i18n,\n ...App\n}).$mount('#app')\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{class:_vm.className},[_vm._t(\"default\"),_vm._v(\" \"),_c('label',{attrs:{\"for\":_vm.inputId || _vm.name}}),_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=7f0877af&\"\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,\"disabled\":_vm.$parent.disabled,\"webkitdirectory\":_vm.$parent.directory && _vm.$parent.features.directory,\"directory\":_vm.$parent.directory && _vm.$parent.features.directory,\"multiple\":_vm.$parent.multiple && _vm.$parent.features.html5},on:{\"change\":_vm.change}})}\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=5dd5f1e6&\"\nimport script from \"./FileUpload.vue?vue&type=script&lang=js&\"\nexport * from \"./FileUpload.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileUpload.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./src/index.js","webpack:///./node_modules/css-loader/lib/css-base.js","webpack:///./node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///external \"Vue\"","webpack:///external \"marked\"","webpack:///./docs/views/Document.vue?d8b8","webpack:///./src/FileUpload.vue?8809","webpack:///./docs/views/examples/Full.vue?e893","webpack:///./docs/views/examples/Simple.vue?6b74","webpack:///./docs/views/examples/Avatar.vue?2202","webpack:///./docs/views/examples/Drag.vue?fa34","webpack:///./docs/views/examples/Multiple.vue?2d25","webpack:///./docs/views/examples/Chunk.vue?7f0a","webpack:///./docs/views/examples/Chunk.vue?9b50","webpack:///./docs/views/examples/Vuex.vue?098c","webpack:///./docs/views/App.vue?1892","webpack:///external \"Vuex\"","webpack:///external \"Cropper\"","webpack:///external \"hljs\"","webpack:///./node_modules/vue-style-loader/lib/listToStyles.js","webpack:///./docs/docs/en.md","webpack:///./docs/docs/zh-cn.md","webpack:///external \"VueRouter\"","webpack:///external \"VueI18n\"","webpack:///external \"ImageCompressor\"","webpack:///./docs/docs sync ^\\.\\/.*$","webpack:///./docs/views/Document.vue?e319","webpack:///./docs/views/Document.vue?5311","webpack:///./src/FileUpload.vue?7ff8","webpack:///./src/FileUpload.vue?7bf3","webpack:///./docs/views/examples/Full.vue?87cf","webpack:///./docs/views/examples/Full.vue?773e","webpack:///./docs/views/examples/Simple.vue?b2e2","webpack:///./docs/views/examples/Simple.vue?a75d","webpack:///./docs/views/examples/Avatar.vue?5c0e","webpack:///./docs/views/examples/Avatar.vue?6096","webpack:///./docs/views/examples/Drag.vue?7c76","webpack:///./docs/views/examples/Drag.vue?b103","webpack:///./docs/views/examples/Multiple.vue?0ed7","webpack:///./docs/views/examples/Multiple.vue?a355","webpack:///./docs/views/examples/Chunk.vue?f294","webpack:///./docs/views/examples/Chunk.vue?202d","webpack:///./docs/views/examples/Chunk.vue?e406","webpack:///./docs/views/examples/Chunk.vue?b919","webpack:///./docs/views/examples/Vuex.vue?bc35","webpack:///./docs/views/examples/Vuex.vue?e2ab","webpack:///./docs/views/App.vue?ee32","webpack:///./docs/views/App.vue?4f5a","webpack:///./docs/store.js","webpack:///./docs/i18n/index.js","webpack:///./docs/i18n/zh-cn.js","webpack:///./docs/i18n/en.js","webpack:///./docs/views/Router.vue","webpack:///./docs/views/Router.vue?a2e3","webpack:///./docs/views/Document.vue?561e","webpack:///docs/views/Document.vue","webpack:///./docs/views/Document.vue","webpack:///./docs/views/Document.vue?59fe","webpack:///./docs/views/Example.vue","webpack:///./docs/views/Example.vue?d2c8","webpack:///./docs/views/examples/Full.vue?d782","webpack:///docs/views/examples/Full.vue","webpack:///./docs/views/examples/Full.vue","webpack:///./docs/views/examples/Full.vue?cb48","webpack:///./docs/views/examples/Simple.vue?5bb5","webpack:///docs/views/examples/Simple.vue","webpack:///./docs/views/examples/Simple.vue","webpack:///./docs/views/examples/Simple.vue?8717","webpack:///./docs/views/examples/Avatar.vue?17d6","webpack:///docs/views/examples/Avatar.vue","webpack:///./docs/views/examples/Avatar.vue","webpack:///./docs/views/examples/Avatar.vue?9dac","webpack:///./docs/views/examples/Drag.vue?11b0","webpack:///docs/views/examples/Drag.vue","webpack:///./docs/views/examples/Drag.vue","webpack:///./docs/views/examples/Drag.vue?3ccc","webpack:///./docs/views/examples/Multiple.vue?9b18","webpack:///docs/views/examples/Multiple.vue","webpack:///./docs/views/examples/Multiple.vue","webpack:///./docs/views/examples/Multiple.vue?a83d","webpack:///./docs/views/examples/Chunk.vue?856c","webpack:///docs/views/examples/Chunk.vue","webpack:///./docs/views/examples/Chunk.vue","webpack:///./docs/views/examples/Chunk.vue?a29c","webpack:///./docs/views/examples/Vuex.vue?25d4","webpack:///docs/views/examples/Vuex.vue","webpack:///./docs/router.js","webpack:///./docs/views/examples/Vuex.vue","webpack:///./docs/views/examples/Vuex.vue?d009","webpack:///./docs/views/App.vue?38a5","webpack:///docs/views/App.vue","webpack:///./docs/views/App.vue","webpack:///./docs/views/App.vue?7c21","webpack:///./docs/index.js","webpack:///./src/FileUpload.vue?d28d","webpack:///./src/utils/request.js","webpack:///./src/chunk/ChunkUploadHandler.js","webpack:///./src/InputFile.vue?72d5","webpack:///src/InputFile.vue","webpack:///./src/InputFile.vue","webpack:///./src/InputFile.vue?a592","webpack:///src/FileUpload.vue","webpack:///./src/FileUpload.vue?b00f","webpack:///./src/FileUpload.vue"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","this","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","concat","__webpack_exports__","useSourceMap","list","toString","map","item","content","cssMapping","btoa","sourceMapping","sourceMap","unescape","encodeURIComponent","JSON","stringify","toComment","sourceURLs","sources","source","sourceRoot","join","cssWithMappingToString","mediaQuery","alreadyImportedModules","length","id","push","_listToStyles__WEBPACK_IMPORTED_MODULE_0__","_listToStyles__WEBPACK_IMPORTED_MODULE_0___default","hasDocument","document","DEBUG","Error","stylesInDom","head","getElementsByTagName","singletonElement","singletonCounter","isProduction","noop","ssrIdKey","isOldIE","navigator","test","userAgent","toLowerCase","addStylesClient","parentId","_isProduction","_options","styles","addStylesToDom","newList","mayRemove","domStyle","refs","j","parts","addStyle","createStyleElement","styleElement","createElement","type","appendChild","obj","update","remove","querySelector","parentNode","removeChild","styleIndex","applyToSingletonTag","css","media","setAttribute","ssrId","styleSheet","cssText","firstChild","createTextNode","newObj","replaceText","textStore","index","replacement","filter","Boolean","cssNode","childNodes","insertBefore","Vue","marked","locals","default","Vuex","Cropper","hljs","newStyles","part","VueRouter","VueI18n","ImageCompressor","./en","./en.md","./zh-cn","./zh-cn.md","webpackContext","req","webpackContextResolve","e","code","keys","resolve","store","a","Store","strict","state","files","mutations","updateFiles","i18n","locale","messages","zh-cn","header","logo","home","examples","documents","blog","issues","github","en","title","example","full","simple","avatar","drag","multiple","vuex","chunk","Router","componentNormalizer","_h","$createElement","_self","_c","views_Documentvue_type_script_lang_js_","mounted","$route","hash","el","decodeURIComponent","window","scrollTo","offsetTop","computed","$i18n","navs","tokens","external_marked_default","lexer","rootNode","children","level","navPrev","token","nav","text","replace","depth","Document","_vm","staticClass","attrs","_l","group","class","nav-item","active","indexOf","nav-link","active-class","to","_v","_s","child","_e","role","$t","directives","rawName","Example","_f","examples_Fullvue_type_script_lang_js_","components","FileUpload","src_default","data","accept","extensions","minSize","size","directory","drop","dropDirectory","addIndex","thread","postAction","putAction","headers","X-Csrf-Token","_csrf_token","autoCompress","uploadAuto","isOption","addData","show","editFile","watch","editFile.show","newValue","oldValue","$refs","upload","error","$nextTick","editImage","cropper","external_Cropper_default","autoCrop","_extends","addData.show","methods","inputFilter","newFile","oldFile","prevent","_this","file","substr","external_ImageCompressor_default","convertSize","Infinity","maxWidth","maxHeight","compress","then","catch","err","message","blob","URL","webkitURL","createObjectURL","thumb","inputFile","progress","success","response","alert","_alert","_x","apply","arguments","onEditFileShow","onEditorFile","features","html5","binStr","atob","getCroppedCanvas","toDataURL","split","arr","Uint8Array","charCodeAt","File","onAddFolader","_this2","input","$el","webkitdirectory","onclick","click","onAddData","Full","on","$event","preventDefault","aria-hidden","dropActive","expression","_m","colspan","for","src","width","height","progress-bar","progress-bar-striped","bg-danger","progress-bar-animated","style","speed","dropdown-item","disabled","href","uploaded","ref","post-action","put-action","drop-directory","add-index","input-filter","input-file","model","callback","$$v","domProps","target","composing","checked","_q","change","modifiers","number","max","min","_n","blur","$forceUpdate","Array","isArray","_i","$$a","$$el","$$c","$$i","slice","modal-backdrop","fade","modal","tabindex","submit","required","placeholder","$set","rows","rotate","crop","clear","examples_Simplevue_type_script_lang_js_","console","log","Simple","examples_Avatarvue_type_script_lang_js_","edit","aspectRatio","viewMode","destroy","editSave","url","Avatar","examples_Dragvue_type_script_lang_js_","Drag","examples_Multiplevue_type_script_lang_js_","files1","files2","Multiple","input-id","upload1","upload2","examples_Chunkvue_type_script_lang_js_","chunkEnabled","chunkMinSize","chunkMaxActive","chunkMaxRetries","Chunk","pause","hasChunksToUpload","resume","chunks","chunksUploading","chunksUploaded","chunk-loading-part__uploaded","retries","maxRetries","chunk-enabled","action","maxActive","examples_Vuexvue_type_script_lang_js_","Vuexvue_type_script_lang_js_extends","external_Vuex_","inputUpdate","$store","commit","path","component","docs_router","external_VueRouter_default","fallback","scrollBehavior","from","savedPosition","x","y","routes","views_Appvue_type_script_lang_js_","showLocale","showNav","params","beforeUpdate","onLocale","setTimeout","App","exact","collapse","navbar-collapse","rel","focus","dropdown-menu","fullPath","external_Vue_default","config","silent","devtools","Renderer","raw","pop","headerPrefix","setOptions","renderer","gfm","tables","breaks","pedantic","sanitize","smartLists","smartypants","highlight","lang","external_hljs_default","highlightAuto","directive","binding","vnode","className","markdown","innerHTML","selectorList","querySelectorAll","metaKey","ctrlKey","shiftKey","defaultPrevented","undefined","button","host","location","getAttribute","charAt","toFixed","docs_extends","router","$mount","createRequest","xhr","XMLHttpRequest","open","method","responseType","forEach","setRequestHeader","request","body","Promise","reject","onload","status","parse","onerror","send","sendRequest","ChunkUploadHandler","_classCallCheck","start","end","chunkSize","fileSize","startOffset","stopChunks","abort","startChunking","promise","assign","Content-Type","startBody","phase","mime_type","fileType","fileName","res","sessionId","session_id","end_offset","createChunks","maxActiveChunks","uploadNextChunk","uploadChunk","chunksToUpload","finish","_this3","updateFileProgress","addEventListener","evt","lengthComputable","Math","round","loaded","total","FormData","append","sendFormRequest","uploadBody","start_offset","_this4","finishBody","parseInt","_this5","completedProgress","uploadingProgress","reduce","src_InputFilevue_type_script_lang_js_","$parent","addInputFile","$destroy","constructor","InputFile","inputId","capture","CHUNK_DEFAULT_OPTIONS","handler","chunk_ChunkUploadHandler","src_FileUploadvue_type_script_lang_js_","props","String","maximum","Number","customAction","Function","timeout","uploading","ondrop","maps","watchDrop","beforeDestroy","fileObject","chunkOptions","_active","watchActive","oldMaps","emitFile","_key","emitInput","_typeof","_files","addFiles","Blob","webkitRelativePath","relativePath","Element","random","emitFilter","newFiles","_newFiles","splice","_file2","_i2","names","__vuex__","addDataTransfer","dataTransfer","items","getAsEntry","getAsFile","webkitGetAsEntry","getEntry","results","_toConsumableArray","_i3","entry","isFile","isDirectory","dirReader","createReader","readEntries","entries","id1","id2","file1","file2","index1","index2","isPrevent","$emit","RegExp","trim","search","shouldUseChunkUpload","uploadPut","uploadHtml5","uploadHtml4","HandlerClass","querys","queryString","uploadXhr","form","filename","_file","speedTime","speedLoaded","onprogress","speedTime2","Date","now","interval","setInterval","clearInterval","complete","fn","responseText","contentType","getResponseHeader","onabort","ontimeout","onKeydown","keyCode","iframe","removeEventListener","doc","contentWindow","contentDocument","getResponseData","_el","dropElement","onDragenter","onDragleave","onDocumentDrop","onDragover","onDrop","dt","types","contains","nodeName","explicitOriginalTarget","fromElement","clientX","clientY","innerWidth","innerHeight","FileUpload_component","_t"],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 26);\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","module.exports = require('./FileUpload.vue')\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n","/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of \\n\\n```\\n\\n\\n** OR **\\n\\n\\n```js\\nimport FileUpload from 'vue-upload-component/src'\\n```\\n\\n\\nwebpack.config.js\\n\\n```js\\nconst nodeExternals = require('webpack-node-externals');\\n{\\n //.....\\n externals: [\\n nodeExternals({whitelist:[/^vue-upload-component\\\\/src/]})\\n ]\\n //.....\\n}\\n```\\n\\n* [https://github.com/liady/webpack-node-externals](https://github.com/liady/webpack-node-externals)\\n\\n* [**`vue-hackernews` demo**](https://github.com/lian-yue/vue-hackernews-2.0/)\\n\\n* [**View changes**](https://github.com/lian-yue/vue-hackernews-2.0/commit/bd6c58a30cc6b8ba6c0148e737b3ce9336b99cf8)\\n\\n\\n\\n\\n## Options / Props\\n\\n\\n### input-id\\n\\nThe `id` attribute of the input tag\\n\\n* **Type:** `String`\\n\\n* **Default:** `this.name`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### name\\n\\nThe `name` attribute of the input tag\\n\\n* **Type:** `String`\\n\\n* **Default:** `file`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### post-action\\n\\n`POST` Request upload URL\\n\\n* **Type:** `String`\\n\\n* **Default:** `undefined`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### put-action\\n\\n`PUT` Request upload URL\\n\\n* **Type:** `String`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `> IE9`\\n\\n* **Details:**\\n\\n `put-action` is not empty Please give priority to` PUT` request\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### custom-action\\n\\nCustom upload method\\n\\n* **Type:** `async Function`\\n\\n* **Default:** `undefined`\\n\\n* **Details:** \\n\\n `custom-action` priority than `put-action, post-action`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n ```js\\n async function customAction(file, component) {\\n // return await component.uploadPut(file)\\n return await component.uploadHtml4(file)\\n }\\n ```\\n\\n\\n\\n\\n\\n### headers\\n\\nAttach `header` data\\n\\n* **Type:** `Object`\\n\\n* **Default:** `{}`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### data\\n\\n`POST request`: Append request `body`\\n`PUT request`: Append request `query`\\n\\n* **Type:** `Object`\\n\\n* **Default:** `{}`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### value, v-model\\n\\nFile List\\n\\n* **Type:** `Array`\\n\\n* **Default:** `[]`\\n\\n* **Details:**\\n\\n View **[`File`](#file)** details\\n > In order to prevent unpredictable errors, can not directly modify the `files`, please use [`add`](#instance-methods-add), [`update`](#instance-methods-update), [`remove`](#instance-methods-remove) method to modify\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### accept\\n\\nThe `accept` attribute of the input tag, MIME type\\n\\n* **Type:** `String`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### multiple\\n\\nThe `multiple` attribute of the input tag\\nWhether to allow multiple files to be selected\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `false`\\n\\n* **Details:**\\n\\n If it is `false` file inside only one file will be automatically deleted\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### directory\\n\\nThe `directory` attribute of the input tag\\nWhether it is a upload folder\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `false`\\n\\n* **Browser:** [http://caniuse.com/#feat=input-file-directory](http://caniuse.com/#feat=input-file-directory)\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### extensions\\n\\nAllow upload file extensions\\n\\n* **Type:** `Array | String | RegExp`\\n\\n* **Default:** `undefined`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n \\n \\n ```\\n\\n\\n\\n\\n### size\\n\\nAllow the maximum byte to upload\\n\\n* **Type:** `Number`\\n\\n* **Default:** `0`\\n\\n* **Browser:** `> IE9`\\n\\n* **Details:**\\n\\n `0` is equal to not limit\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### timeout\\n\\nUpload timeout time in milliseconds\\n\\n* **Type:** `Number`\\n\\n* **Default:** `0`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n### maximum\\n\\nList the maximum number of files\\n\\n* **Type:** `Number`\\n\\n* **Default:** `props.multiple ? 0 : 1`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### thread\\n\\nAlso upload the number of files at the same time (number of threads)\\n\\n* **Type:** `Number`\\n\\n* **Default:** `1`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n### chunk-enabled\\n\\nWhether chunk uploads is enabled or not\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### chunk\\n\\nAll the options to handle chunk uploads\\n\\n* **Type:** `Object`\\n\\n* **Default:**\\n```js\\n{\\n headers: {\\n 'Content-Type': 'application/json'\\n },\\n action: '',\\n minSize: 1048576,\\n maxActive: 3,\\n maxRetries: 5,\\n\\n // This is the default Handler implemented in this package\\n // you can use your own handler if your protocol is different\\n handler: ChunkUploadDefaultHandler\\n}\\n```\\n\\n### drop\\n\\nDrag and drop upload\\n\\n* **Type:** `Boolean | Element | CSS selector`\\n\\n* **Default:** `false`\\n\\n* **Browser:** [http://caniuse.com/#feat=dragndrop](http://caniuse.com/#feat=dragndrop)\\n\\n* **Details:**\\n\\n If set to `true`, read the parent component as a container\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### drop-directory\\n\\nWhether to open the drag directory\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `true`\\n\\n* **Details:**\\n\\n If set to `false` filter out the directory\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### add-index\\n\\n* **Type:** `Boolean, Number`\\n\\n* **Default:** `undefined`\\n\\n* **Version:** : `>=2.6.1`\\n\\n* **Details:**\\n\\n The default value of the `index` parameter for the [`add()`](#instance-methods-add) method\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n## Options / Events\\n\\nThe files is changed to trigger the method\\nDefault for `v-model` binding\\n\\n### @input\\n* **Arguments:**\\n\\n * `files: Array`\\n\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n### @input-filter\\n\\nAdd, update, remove pre-filter\\n\\n* **Arguments:**\\n\\n * `newFile: File | Object | undefined` `Read and write`\\n * `oldFile: File | Object | undefined` `Read only`\\n * `prevent: Function` Call this function to prevent modification\\n\\n\\n* **Details:**\\n\\n If the `newFile` value is `undefined` 'is deleted\\n If the `oldFile` value is `undefined` 'is added\\n If `newFile`, `oldFile` is exist, it is updated\\n\\n > Synchronization modify `newFile`\\n > Asynchronous Please use `update`,` add`, `remove`,` clear` method\\n > Asynchronous Please set an error first to prevent being uploaded\\n\\n > Synchronization can not use `update`,` add`, `remove`,` clear` methods\\n > Asynchronous can not modify `newFile`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### @input-file\\n\\nAdd, update, remove after\\n\\n* **Arguments:**\\n\\n * `newFile: File | Object | undefined` `Read only`\\n * `oldFile: File | Object | undefined` `Read only`\\n\\n\\n* **Details:**\\n\\n If the `newFile` value is `undefined` 'is deleted\\n If the `oldFile` value is `undefined` 'is added\\n If `newFile`, `oldFile` is exist, it is updated\\n\\n\\n >You can use `update`,` add`, `remove`,` clear` methods in the event\\n >You can not modify the `newFile` object in the event\\n >You can not modify the `oldFile` object in the event\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n## Instance / Data\\n\\n### features\\n\\nUsed to determine the browser support features\\n\\n* **Type:** `Object`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `{ html5: true, directory: false, drag: false }`\\n\\n* **Usage:**\\n ```html\\n \\n \\n Support drag and drop upload\\n Support folder upload\\n Support for HTML5\\n \\n ```\\n\\n\\n\\n### active\\n\\nActivation or abort upload\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n Start upload\\n Stop upload\\n \\n ```\\n\\n\\n\\n### dropActive\\n\\nIs dragging\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n Drag and drop here for upload\\n \\n ```\\n\\n\\n\\n\\n\\n### uploaded\\n\\nAll uploaded\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `true`\\n\\n* **Usage:**\\n ```html\\n \\n \\n All files have been uploaded\\n \\n ```\\n\\n\\n\\n\\n\\n## Instance / Methods\\n\\n\\n\\n### get()\\n\\nUse `id` to get a file object\\n\\n* **Arguments:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **Result:** `File | Object | Boolean` There is a return file, object that otherwise returns `false`\\n\\n\\n\\n### add()\\n\\nAdd one or more files\\n\\n* **Arguments:**\\n\\n * `files: Array | File | window.File | Object` If it is an array of responses will be an array\\n * `index: Number | Boolean` = [`props.add-index`](#options-props-add-index) `true = ` Start, `false = ` End, `Number = ` Index\\n\\n\\n* **Result:** `Object | Array | Boolean` The incoming array is returned to the array otherwise the object or `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n\\n### addInputFile()\\n\\nAdd the file selected by `` to the upload list\\n\\n* **Arguments:**\\n\\n * `el: HTMLInputElement` File element\\n\\n\\n* **Result:** `Array` Added list of files\\n\\n* **Version:** : `>=2.5.1`\\n\\n\\n\\n### addDataTransfer()\\n\\nAdd files that are dragged or pasted into the upload list\\n\\n* **Arguments:**\\n\\n * `dataTransfer: DataTransfer` Drag or paste data\\n\\n\\n* **Result:** `Promise>` Added list of files\\n\\n\\n* **Version:** : `>=2.5.1`\\n\\n\\n\\n### update()\\n\\nUpdate a file object\\n\\n* **Arguments:**\\n\\n * `id: File | Object | String`\\n * `data: Object` Updated data object\\n\\n\\n* **Result:** `Object | Boolean` Successfully returned `newFile` failed to return` false`\\n\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### remove()\\n\\nRemove a file object\\n\\n* **Arguments:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **Result:** `Object | Boolean` Successfully returned `oldFile` failed to return` false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### replace()\\n Replace the location of the two files\\n\\n* **Arguments:**\\n\\n * `id1: File | Object | String`\\n * `id2: File | Object | String`\\n\\n\\n* **Result:** `Boolean`\\n\\n\\n### clear()\\n\\nEmpty the file list\\n\\n* **Result:** `Boolean` Always return `true`\\n\\n\\n\\n## Instance / File\\n\\n\\n\\n> **File object in the `@input-filter` event outside the use of [`update`](#instance-methods-update) method**\\n\\n\\n\\n\\n### fileObject\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `true`\\n\\n* **Required:** `true`\\n\\n* **Default:** `true`\\n\\n* **Version:** : `>=2.6.0`\\n\\n* **Details:**\\n\\n If the attribute does not exist, the object will not be processed internally\\n If the attribute does not exist, it is not `File` but `Object`\\n\\n\\n\\n\\n### id\\n\\nFile ID\\n\\n* **Type:** `String | Number`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `Math.random().toString(36).substr(2)`\\n\\n* **Details:**\\n\\n >`id` can not be repeated\\n >Upload can not modify `id`\\n\\n\\n### size\\n\\nFile size\\n\\n* **Type:** `Number`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `-1`\\n\\n* **Browser:** `> IE9`\\n\\n\\n### name\\n\\nFilename\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** ` `\\n\\n* **Details:**\\n\\n Format: `directory/filename.gif` `filename.gif`\\n\\n\\n\\n### type\\n\\nMIME type\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** ` `\\n\\n* **Browser:** `> IE9`\\n\\n* **Details:**\\n\\n Format: `image/gif` `image/png` `text/html`\\n\\n\\n\\n\\n### active\\n\\nActivation or abort upload\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `false`\\n\\n* **Details:**\\n\\n `true` = Upload\\n `false` = Abort\\n\\n\\n\\n\\n\\n\\n### error\\n\\nUpload failed error code\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** ` `\\n\\n* **Details:**\\n\\n Built-in\\n `size`, `extension`, `timeout`, `abort`, `network`, `server`, `denied`\\n\\n\\n\\n\\n### success\\n\\nWhether the upload was successful\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `false`\\n\\n\\n### putAction\\n\\nCustomize the current file `PUT` URL\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.putAction`\\n\\n\\n\\n### postAction\\n\\nCustomize the current file `POST` URL\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.postAction`\\n\\n\\n\\n\\n### headers\\n\\nCustomize the current file `HTTP` Header\\n\\n* **Type:** `Object`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.headers`\\n\\n\\n### data\\n\\nCustomize the current file `body` or` query` to attach content\\n\\n* **Type:** `Object`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.data`\\n\\n\\n### timeout\\n\\nCustomize the upload timeout for a current single file\\n\\n* **Type:** `Number`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.timeout`\\n\\n\\n### response\\n\\nResponse data\\n\\n* **Type:** `Object | String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `{}`\\n\\n\\n\\n\\n### progress\\n\\nUpload progress\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `0.00`\\n\\n* **Browser:** `> IE9`\\n\\n\\n\\n### speed\\n\\nPer second upload speed\\n\\n* **Type:** `Number`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `0`\\n\\n* **Browser:** `> IE9`\\n\\n\\n\\n\\n### xhr\\n\\n`HTML5` upload` XMLHttpRequest` object\\n\\n* **Type:** `XMLHttpRequest`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `> IE9`\\n\\n\\n\\n\\n### iframe\\n\\n`HTML4` upload` iframe` element\\n\\n* **Type:** `Element`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `= IE9`\\n\"","module.exports = \"## 入门开始\\n\\n### NPM\\n\\n``` bash\\nnpm install vue-upload-component --save\\n```\\n\\n``` js\\nconst VueUploadComponent = require('vue-upload-component')\\nVue.component('file-upload', VueUploadComponent)\\n```\\n\\n### Curated\\n\\n**No data**\\n\\n\\n### 直接使用\\n\\n\\nunpkg\\n\\n``` html\\n\\n\\n\\n```\\n\\njsDelivr\\n\\n``` html\\n\\n\\n\\n```\\n\\n\\n### 简单的例子\\n\\n\\n\\n```html\\n\\n\\n\\n \\n Vue-upload-component Test\\n \\n \\n\\n\\n
\\n
    \\n
  • {{file.name}} - Error: {{file.error}}, Success: {{file.success}}
  • \\n
\\n \\n 上传文件\\n \\n \\n \\n
\\n\\n\\n\\n```\\n\\n\\n\\n### SSR (服务器同构)\\n\\n\\n```html\\n\\n\\n\\n```\\n\\n\\n** 或者 **\\n\\n\\n```js\\nimport FileUpload from 'vue-upload-component/src'\\n```\\n\\nwebpack.config.js\\n\\n```js\\nconst nodeExternals = require('webpack-node-externals');\\n{\\n //...\\n externals: [\\n nodeExternals({whitelist:[/^vue-upload-component\\\\/src/]})\\n ]\\n //...\\n}\\n```\\n\\n* [https://github.com/liady/webpack-node-externals](https://github.com/liady/webpack-node-externals) \\n\\n* [**`vue-hackernews` 演示**](https://github.com/lian-yue/vue-hackernews-2.0/) \\n\\n* [**浏览修改文件**](https://github.com/lian-yue/vue-hackernews-2.0/commit/bd6c58a30cc6b8ba6c0148e737b3ce9336b99cf8)\\n\\n\\n\\n\\n## 选项 / 属性\\n\\n\\n### input-id\\n\\ninput 标签的 `id` 属性\\n\\n* **类型:** `String`\\n\\n* **默认值:** `this.name`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### name\\n\\ninput标签的 `name` 属性\\n\\n* **类型:** `String`\\n\\n* **默认值:** `file`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### post-action\\n\\n`POST` 请求的上传URL\\n\\n* **类型:** `String`\\n\\n* **默认值:** `undefined`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### put-action\\n\\n`PUT` 请求的上传URL\\n\\n* **类型:** `String`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `> IE9`\\n\\n* **详细:** \\n\\n `put-action` 不为空请优先 `PUT` 请求 \\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n### custom-action\\n\\n自定义上传方法\\n\\n* **类型:** `async Function`\\n\\n* **默认值:** `undefined`\\n\\n* **详细:** \\n\\n `custom-action` 优先级高于 `put-action, post-action`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n ```js\\n async function customAction(file, component) {\\n // return await component.uploadPut(file)\\n return await component.uploadHtml4(file)\\n }\\n ```\\n\\n\\n\\n### headers\\n\\n自定义上传请求 `header` 数据\\n\\n* **类型:** `Object`\\n\\n* **默认值:** `{}`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### data\\n\\n`POST 请求`: 附加请求的 body \\n`PUT 请求`: 附加请求的 query \\n\\n* **类型:** `Object`\\n\\n* **默认值:** `{}`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### value, v-model\\n\\n文件列表\\n\\n* **类型:** `Array`\\n\\n* **默认值:** `[]`\\n\\n* **详细:** \\n\\n 浏览 **[`File`](#file)** 详细信息 \\n > 为了防止不可预知的错误,不可直接修改 `files`,请使用 [`add`](#实例-方法-add), [`update`](#实例-方法-update), [`remove`](#实例-方法-remove) 方法修改\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### accept\\n\\n表单的`accept`属性, MIME type \\n\\n* **类型:** `String`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### multiple\\n\\n文件表单的 `multiple` 属性 \\n是否允许选择多个文件 \\n\\n* **类型:** `Boolean`\\n\\n* **默认值:** `false`\\n\\n* **详细:** \\n\\n 如果是 `false` `files` 里面最多只有一个文件 多的会自动删除 \\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n### directory\\n\\n文件表单的 `directory` 属性 \\n是否是上传文件夹 \\n\\n* **类型:** `Boolean`\\n\\n* **默认值:** `false`\\n\\n* **浏览器:** [http://caniuse.com/#feat=input-file-directory](http://caniuse.com/#feat=input-file-directory)\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### extensions\\n\\n允许上传的文件后缀\\n\\n* **类型:** `Array | String | RegExp`\\n\\n* **默认值:** `undefined`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n \\n \\n ```\\n\\n\\n\\n\\n### size\\n\\n允许上传的最大字节\\n\\n* **类型:** `Number`\\n\\n* **默认值:** `0`\\n\\n* **浏览器:** `> IE9`\\n\\n* **详细:**\\n\\n `0` 等于不限制\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### timeout\\n\\n上传超时时间毫秒\\n\\n* **类型:** `Number`\\n\\n* **默认值:** `0`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n### maximum\\n\\n列表最大文件数\\n\\n* **类型:** `Number`\\n\\n* **默认值:** `props.multiple ? 0 : 1`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### thread\\n\\n同时并发上传的文件数量 线程数 \\n\\n* **类型:** `Number`\\n\\n* **默认值:** `1`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### drop\\n\\n拖拽上传 \\n\\n* **类型:** `Boolean | Element | CSS selector`\\n\\n* **默认值:** `false`\\n\\n* **浏览器:** [http://caniuse.com/#feat=dragndrop](http://caniuse.com/#feat=dragndrop)\\n\\n* **详细:**\\n\\n 如果设置成 `true` 则读取父组件作为容器 \\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### drop-directory\\n\\n是否开启拖拽目录 \\n\\n* **类型:** `Boolean`\\n\\n* **默认值:** `true`\\n\\n* **详细:**\\n\\n 如果设置成 `false` 则过滤掉目录\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n### add-index\\n\\n* **类型:** `Boolean, Number`\\n\\n* **默认值:** `undefined`\\n\\n* **版本:** `>= 2.6.1`\\n\\n* **详细:**\\n\\n [`add()`](#实例-方法-add) 方法 `index` 参数的默认值\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n## 选项 / 事件\\n\\n文件被改变触发的方法 \\n默认用于`v-model`绑定\\n\\n### @input\\n* **参数:**\\n\\n * `files: Array`\\n\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n### @input-filter\\n\\nAdd, update, remove pre-filter \\n\\n* **参数:**\\n\\n * `newFile: File | Object | undefined` `读写`\\n * `oldFile: File | Object | undefined` `只读`\\n * `prevent: Function` 调用该方法 阻止修改\\n\\n\\n* **详细:**\\n\\n 如果 `newFile` 值为 `undefined` 则是删除 \\n 如果 `oldFile` 值为 `undefined` 则是添加 \\n 如果 `newFile`, `oldFile` 都存在则是更新\\n\\n > 事件内同步处理请直接修改 `newFile` \\n > 事件内异步处理请使用 `update`, `add`, `remove`, `clear` 方法 \\n > 异步请先设置一个错误以防止被上传\\n\\n > 同步不能使用 `update`, `add`, `remove`, `clear` 方法 \\n > 异步不能修改 `newFile`\\n\\n\\n* **示例:** \\n ```html\\n \\n \\n ```\\n\\n### @input-file\\n\\n添加,更新,移除 后\\n\\n* **参数:**\\n\\n * `newFile: File | Object | undefined` `只读`\\n * `oldFile: File | Object | undefined` `只读`\\n\\n\\n* **详细:**\\n\\n 如果 `newFile` 值为 `undefined` 则是删除 \\n 如果 `oldFile` 值为 `undefined` 则是添加 \\n 如果 `newFile`, `oldFile` 都存在则是更新\\n\\n >事件内可使用 `update`, `add`, `remove`, `clear` 方法 \\n >事件内不可修改 `newFile` 对象 \\n >事件内不可修改 `oldFile` 对象\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n## 实例 / 数据\\n\\n### features\\n\\n用于判断浏览器支持的特性\\n\\n* **类型:** `Object`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `{ html5: true, directory: false, drag: false }`\\n\\n* **示例:**\\n ```html\\n \\n \\n 支持拖拽上传\\n 支持文件夹上传\\n 支持HTML5\\n \\n ```\\n\\n\\n\\n### active\\n\\n激活或停止上传\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `false`\\n\\n* **示例:**\\n ```html\\n \\n \\n 开始上传\\n 停止上传\\n \\n ```\\n\\n\\n\\n### dropActive\\n\\n是否正在拖拽\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `false`\\n\\n* **示例:**\\n ```html\\n \\n \\n 拖拽到这里上传\\n \\n ```\\n\\n\\n\\n\\n\\n### uploaded\\n\\n是否全部已上传\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `true`\\n\\n* **示例:**\\n ```html\\n \\n \\n 全部文件已上传完毕\\n \\n ```\\n\\n\\n\\n\\n\\n## 实例 / 方法\\n\\n\\n\\n### get()\\n\\n使用`id`获得某个对象\\n\\n* **参数:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **结果:** `File | Object | Boolean` 存在返回文件对象否则返回 `false`\\n\\n\\n\\n### add()\\n\\n添加一个或多个文件\\n\\n* **参数:**\\n\\n * `files: Array | File | window.File | Object` 如果它是一个数组的响应将是一个数组\\n * `index: Number | Boolean` = [`props.add-index`](#选项-属性-add-index) `true = ` 开始位置, `false = ` 结束位置, `Number = ` 下标位置\\n\\n\\n* **结果:** `Object | Array | Boolean` 传入的是数组返回数组否则对象或`false`\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n### addInputFile()\\n\\n把``选择的文件添加进上传列表 \\n\\n* **参数:**\\n\\n * `el: HTMLInputElement` 文件元素\\n\\n\\n* **结果:** `Array` 返回已添加的文件列表\\n\\n* **版本:** : `>=2.5.1`\\n\\n\\n\\n### addDataTransfer()\\n\\n把拖拽或者粘贴的数据的文件添加进上传列表 \\n\\n* **参数:**\\n\\n * `dataTransfer: DataTransfer` 拖拽或者粘贴的数据\\n\\n\\n* **结果:** `Promise>` 返回已添加的文件列表\\n\\n\\n* **版本:** : `>=2.5.1`\\n\\n\\n\\n### update()\\n\\n更新某个对象\\n\\n* **参数:**\\n\\n * `id: File | Object | String`\\n * `data: Object` 更新的数据对象\\n\\n\\n* **结果:** `Object | Boolean` 成功返回 `newFile` 失败返回 `false`\\n\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n### remove()\\n\\n移除某个文件对象\\n\\n* **参数:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **结果:** `Object | Boolean` 成功返回 `oldFile` 失败返回 `false`\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n### replace()\\n 替换两个文件的位置\\n\\n* **参数:**\\n\\n * `id1: File | Object | String`\\n * `id2: File | Object | String`\\n\\n\\n* **结果:** `Boolean`\\n\\n\\n\\n### clear()\\n\\n清空文件列表\\n\\n* **结果:** `Boolean` 总是返回 `true`\\n\\n\\n\\n## 实例 / File\\n\\n\\n> **文件对象在`input-filter`事件外修改请使用 [`update`](#实例-方法-update) 方法**\\n\\n\\n### fileObject\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `true`\\n\\n* **Required:** `true`\\n\\n* **默认值:** `true`\\n\\n* **版本:** : `>=2.6.0`\\n\\n* **详细:**\\n\\n 如果属性不存在,则不会在内部处理该对象 \\n 如果属性不存在,它不是 `File` 而是 `Object`\\n\\n\\n\\n### id\\n\\n文件id\\n\\n* **类型:** `String | Number`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `Math.random().toString(36).substr(2)`\\n\\n* **详细:**\\n\\n >`id` can not be repeated \\n >Upload can not modify `id`\\n\\n\\n### size\\n\\n文件大小\\n\\n* **类型:** `Number`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `-1`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n### name\\n\\n文件名 \\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** ` `\\n\\n* **详细:**\\n\\n 格式: `directory/filename.gif` `filename.gif` \\n\\n\\n\\n### type\\n\\nMIME类型\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** ` `\\n\\n* **浏览器:** `> IE9`\\n\\n* **详细:**\\n\\n 格式: `image/gif` `image/png` `text/html`\\n\\n\\n\\n\\n### active\\n\\n激活或终止上传\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `false`\\n\\n* **详细:**\\n\\n `true` = 上传 \\n `false` = 停止 \\n\\n\\n\\n\\n\\n\\n### error\\n\\n上传失败错误代码\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** ` `\\n\\n* **详细:**\\n\\n 内置\\n `size`, `extension`, `timeout`, `abort`, `network`, `server`, `denied`\\n\\n\\n\\n\\n### success\\n\\n是否上传成功\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `false`\\n\\n\\n### putAction\\n\\n自定义当前文件 `PUT` 地址\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.putAction`\\n\\n\\n\\n### postAction\\n\\n自定义当前文件 `POST` 地址\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.postAction`\\n\\n\\n\\n\\n### headers\\n\\n自定义当前文件 `HTTP` Header\\n\\n* **类型:** `Object`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.headers`\\n\\n\\n### data\\n\\n自定义当前文件 `body` 或 `query` 附加内容\\n\\n* **类型:** `Object`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.data`\\n\\n\\n### timeout\\n\\n自定义当前单个文件的上传超时时间\\n\\n* **类型:** `Number`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.timeout`\\n\\n\\n### response\\n\\n响应的数据\\n\\n* **类型:** `Object | String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `{}`\\n\\n\\n\\n\\n### progress\\n\\n上传进度\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `0.00`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n\\n### speed\\n\\n每秒的上传速度\\n\\n* **类型:** `Number`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `0`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n\\n\\n### xhr\\n\\n`HTML5` 上传 `XMLHttpRequest` 对象\\n\\n* **类型:** `XMLHttpRequest`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n\\n\\n### iframe\\n\\n`HTML4` 上传 `iframe` 元素\\n\\n* **类型:** `Element`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `= IE9`\\n\"","module.exports = VueRouter;","module.exports = VueI18n;","module.exports = ImageCompressor;","var map = {\n\t\"./en\": 21,\n\t\"./en.md\": 21,\n\t\"./zh-cn\": 22,\n\t\"./zh-cn.md\": 22\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 27;","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.document-title {\\n margin-bottom: 2rem;\\n padding-bottom: 1rem;\\n border-bottom: 1px solid #ddd;\\n}\\n.document-content h2 {\\n padding-top: 1rem;\\n padding-bottom: 1rem;\\n margin-top: 4rem;\\n border-bottom: 1px solid #eaecef;\\n}\\n.document-content h2:first-child {\\n margin-top: 0;\\n}\\n.document-content h2 + h3 {\\n margin-top: 0rem;\\n}\\n.document-content h3 {\\n margin-top: 1.5rem;\\n padding-top: 1rem;\\n margin-bottom: 1rem;\\n}\\n\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../node_modules/vue-style-loader/index.js!../node_modules/css-loader/index.js??ref--2-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../node_modules/vue-style-loader/index.js!../node_modules/css-loader/index.js??ref--2-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.file-uploads {\\n overflow: hidden;\\n position: relative;\\n text-align: center;\\n display: inline-block;\\n}\\n.file-uploads.file-uploads-html4 input, .file-uploads.file-uploads-html5 label {\\n /* background fix ie click */\\n background: #fff;\\n opacity: 0;\\n font-size: 20em;\\n z-index: 1;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n}\\n.file-uploads.file-uploads-html5 input, .file-uploads.file-uploads-html4 label {\\n /* background fix ie click */\\n background: rgba(255, 255, 255, 0);\\n overflow: hidden;\\n position: fixed;\\n width: 1px;\\n height: 1px;\\n z-index: -1;\\n opacity: 0;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-full .btn-group .dropdown-menu {\\n display: block;\\n visibility: hidden;\\n transition: all .2s\\n}\\n.example-full .btn-group:hover > .dropdown-menu {\\n visibility: visible;\\n}\\n.example-full label.dropdown-item {\\n margin-bottom: 0;\\n}\\n.example-full .btn-group .dropdown-toggle {\\n margin-right: .6rem\\n}\\n.example-full .filename {\\n margin-bottom: .3rem\\n}\\n.example-full .btn-is-option {\\n margin-top: 0.25rem;\\n}\\n.example-full .example-foorer {\\n padding: .5rem 0;\\n border-top: 1px solid #e9ecef;\\n border-bottom: 1px solid #e9ecef;\\n}\\n.example-full .edit-image img {\\n max-width: 100%;\\n}\\n.example-full .edit-image-tool {\\n margin-top: .6rem;\\n}\\n.example-full .edit-image-tool .btn-group{\\n margin-right: .6rem;\\n}\\n.example-full .footer-status {\\n padding-top: .4rem;\\n}\\n.example-full .drop-active {\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n position: fixed;\\n z-index: 9999;\\n opacity: .6;\\n text-align: center;\\n background: #000;\\n}\\n.example-full .drop-active h3 {\\n margin: -.5em 0 0;\\n position: absolute;\\n top: 50%;\\n left: 0;\\n right: 0;\\n -webkit-transform: translateY(-50%);\\n -ms-transform: translateY(-50%);\\n transform: translateY(-50%);\\n font-size: 40px;\\n color: #fff;\\n padding: 0;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-simple label.btn {\\n margin-bottom: 0;\\n margin-right: 1rem;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-avatar .avatar-upload .rounded-circle {\\n width: 200px;\\n height: 200px;\\n}\\n.example-avatar .text-center .btn {\\n margin: 0 .5rem\\n}\\n.example-avatar .avatar-edit-image {\\n max-width: 100%\\n}\\n.example-avatar .drop-active {\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n position: fixed;\\n z-index: 9999;\\n opacity: .6;\\n text-align: center;\\n background: #000;\\n}\\n.example-avatar .drop-active h3 {\\n margin: -.5em 0 0;\\n position: absolute;\\n top: 50%;\\n left: 0;\\n right: 0;\\n -webkit-transform: translateY(-50%);\\n -ms-transform: translateY(-50%);\\n transform: translateY(-50%);\\n font-size: 40px;\\n color: #fff;\\n padding: 0;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-drag label.btn {\\n margin-bottom: 0;\\n margin-right: 1rem;\\n}\\n.example-drag .drop-active {\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n position: fixed;\\n z-index: 9999;\\n opacity: .6;\\n text-align: center;\\n background: #000;\\n}\\n.example-drag .drop-active h3 {\\n margin: -.5em 0 0;\\n position: absolute;\\n top: 50%;\\n left: 0;\\n right: 0;\\n -webkit-transform: translateY(-50%);\\n -ms-transform: translateY(-50%);\\n transform: translateY(-50%);\\n font-size: 40px;\\n color: #fff;\\n padding: 0;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-multiple label.btn {\\n margin-bottom: 0;\\n margin-right: 1rem;\\n}\\n.example-multiple .upload {\\n margin-bottom: 1rem;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-simple label.btn {\\n margin-bottom: 0;\\n margin-right: 1rem;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=1&id=c205936e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=1&id=c205936e&scoped=true&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.chunk-loading[data-v-c205936e] {\\n margin: -12px;\\n display: flex;\\n width: calc(100% + 24px);\\n}\\n.chunk-loading .chunk-loading-part[data-v-c205936e] {\\n height: 25px;\\n line-height: 25px;\\n flex: 1;\\n background: #ccc;\\n font-size: 14px;\\n color: white;\\n text-align: center;\\n}\\n.chunk-loading .chunk-loading-part.chunk-loading-part__uploaded[data-v-c205936e] {\\n background: #28A745;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.example-vuex label.btn {\\n margin-bottom: 0;\\n margin-right: 1rem;\\n}\\n\", \"\"]);\n\n// exports\n","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n#header {\\n position: -webkit-sticky;\\n position: sticky;\\n top: 0;\\n z-index: 1071;\\n}\\n#sidebar {\\n background: #fff;\\n border-right: 1px solid #e5e5e5;\\n border-bottom: 1px solid #e5e5e5;\\n}\\n@media (min-width: 768px) {\\n#sidebar {\\n position: -webkit-sticky;\\n position: sticky;\\n top: 3.5rem;\\n z-index: 1000;\\n max-height: calc(100vh - 3.5rem);\\n border-right: 1px solid #e5e5e5;\\n border-bottom: 1px solid #e5e5e5;\\n}\\n}\\n#sidebar-nav {\\n padding-top: 1rem;\\n padding-bottom: 1rem;\\n margin-right: -15px;\\n margin-left: -15px;\\n max-height: 100%;\\n overflow-y: auto;\\n}\\n#sidebar-nav .nav {\\n display: block;\\n}\\n#sidebar-nav .nav .nav-item .nav {\\n display: none;\\n margin-bottom: 1rem;\\n}\\n#sidebar-nav .nav .nav-item .nav {\\n display: none;\\n margin-bottom: 1rem;\\n}\\n#sidebar-nav .nav .nav-item.active .nav, #sidebar-nav .nav .active + .nav {\\n display: block;\\n}\\n@media (min-width: 768px) {\\n#sidebar-nav .nav .nav-item .nav {\\n display: block;\\n}\\n}\\n#sidebar-nav .nav .nav-link.active, #sidebar-nav .nav .active > .nav-link{\\n color: #262626;\\n font-weight: 500;\\n}\\n#sidebar-nav .nav-item .nav-link {\\n padding: .25rem 1rem;\\n font-weight: 500;\\n color: #666\\n}\\n#sidebar-nav .nav-item .nav-item .nav-link {\\n font-weight: 400;\\n font-size: 85%;\\n margin-left: 1rem\\n}\\n#main {\\n padding-top: 1rem;\\n margin-bottom: 2rem\\n}\\nblockquote {\\n margin-bottom: 1rem;\\n font-size: 1.25rem;\\n padding: 0 1em;\\n color: #6a737d;\\n border-left: 0.25em solid #dfe2e5;\\n}\\npre {\\n padding: 16px;\\n overflow: auto;\\n font-size: 85%;\\n line-height: 1.45;\\n background-color: #f6f8fa;\\n border-radius: 3px;\\n}\\n.modal-backdrop.fade {\\n visibility: hidden;\\n}\\n.modal-backdrop.fade.show {\\n visibility: visible;\\n}\\n.fade.show {\\n display: block;\\n z-index: 1072;\\n}\\n\", \"\"]);\n\n// exports\n","// import Vue from 'vue'\nimport Vuex from 'vuex'\n//\n// Vue.use(Vuex)\n\n\nconst state = {\n files: [],\n}\n\nconst mutations = {\n updateFiles(state, files) {\n state.files = files\n }\n}\nexport default new Vuex.Store({\n strict: true,\n state,\n mutations\n})\n","// import Vue from 'vue'\nimport VueI18n from 'vue-i18n'\nimport en from './en'\nimport zhCN from './zh-cn'\n\n// Vue.use(VueI18n)\n\nexport default new VueI18n({\n locale: 'en',\n messages: {\n 'zh-cn': zhCN,\n en,\n }\n})\n","export default {\n header: {\n logo: 'Vuejs',\n home: '首页',\n examples: '演示',\n documents: '文档',\n blog: 'Blog',\n locale: 'Language(语言)',\n issues: 'Issues',\n github: 'Github',\n },\n\n locale: {\n en: 'English',\n 'zh-cn': '中文(简体)',\n },\n\n document: {\n title: '文档',\n },\n\n\n example: {\n full: '完整例子',\n simple: '简单例子',\n avatar: '上传头像',\n drag: '拖拽上传',\n multiple: '多个实例',\n vuex: 'Vuex',\n }\n}\n","export default {\n header: {\n logo: 'Vuejs',\n home: 'Home',\n examples: 'Examples',\n documents: 'Documentation',\n blog: 'Blog',\n locale: 'Language(语言)',\n issues: 'Issues',\n github: 'Github',\n },\n\n locale: {\n en: 'English',\n 'zh-cn': '中文(简体)',\n },\n\n document: {\n title: 'Documentation',\n },\n\n example: {\n full: 'Full Example',\n simple: 'Simple',\n avatar: 'Upload avatar',\n drag: 'Drag and drop',\n multiple: 'Multiple instances',\n chunk: 'Chunk upload',\n vuex: 'Vuex',\n }\n}\n","import { render, staticRenderFns } from \"./Router.vue?vue&type=template&id=3075fd62&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-view')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./Document.vue?vue&type=template&id=61209807&\"\nimport script from \"./Document.vue?vue&type=script&lang=js&\"\nexport * from \"./Document.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Document.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"row flex-xl-nowrap\"},[_c('div',{staticClass:\"col-12 col-md-3 col-xl-2\",attrs:{\"id\":\"sidebar\"}},[_c('nav',{staticClass:\"collapse show\",attrs:{\"id\":\"sidebar-nav\"}},[_c('ul',{staticClass:\"nav\"},_vm._l((_vm.navs),function(group,index){return _c('li',{class:{'nav-item': true, active: (!_vm.$route.hash && !index) || _vm.$route.hash.indexOf(group.hash) === 1}},[_c('router-link',{class:{'nav-link': true, active: _vm.$route.hash.indexOf(group.hash) === 1},attrs:{\"active-class\":\"active\",\"to\":'#' + group.hash}},[_vm._v(_vm._s(group.name))]),_vm._v(\" \"),(group.children.length)?_c('ul',{staticClass:\"nav\"},_vm._l((group.children),function(child){return _c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":'#' + group.hash + '-' + child.hash}},[_vm._v(_vm._s(child.name))])],1)})):_vm._e()],1)}))])]),_vm._v(\" \"),_c('main',{staticClass:\"col-12 col-md-9 col-xl-10 py-md-3 pr-md-5 pl-md-5\",attrs:{\"id\":\"main\",\"role\":\"main\"}},[_c('h1',{staticClass:\"document-title\",attrs:{\"id\":\"document-title\"}},[_vm._v(_vm._s(_vm.$t('document.title')))]),_vm._v(\" \"),_c('div',{directives:[{name:\"markdown\",rawName:\"v-markdown\"}],staticClass:\"document-content\"},[_vm._v(_vm._s(_vm.document))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Example.vue?vue&type=template&id=02498012&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"row flex-xl-nowrap\"},[_c('div',{staticClass:\"col-12 col-md-3 col-xl-2\",attrs:{\"id\":\"sidebar\"}},[_c('nav',{staticClass:\"collapse show\",attrs:{\"id\":\"sidebar-nav\"}},[_c('ul',{staticClass:\"nav\"},[_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/full')}},[_vm._v(_vm._s(_vm.$t('example.full')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/simple')}},[_vm._v(_vm._s(_vm.$t('example.simple')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/avatar')}},[_vm._v(_vm._s(_vm.$t('example.avatar')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/drag')}},[_vm._v(_vm._s(_vm.$t('example.drag')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/multiple')}},[_vm._v(_vm._s(_vm.$t('example.multiple')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/chunk')}},[_vm._v(_vm._s(_vm.$t('example.chunk')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/vuex')}},[_vm._v(_vm._s(_vm.$t('example.vuex')))])],1)])])]),_vm._v(\" \"),_c('main',{staticClass:\"col-12 col-md-9 col-xl-10 py-md-3 pr-md-5 pl-md-5\",attrs:{\"id\":\"main\",\"role\":\"main\"}},[_c('router-view')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./Full.vue?vue&type=template&id=c2419f2a&\"\nimport script from \"./Full.vue?vue&type=script&lang=js&\"\nexport * from \"./Full.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Full.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-full\"},[_c('button',{staticClass:\"btn btn-danger float-right btn-is-option\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.isOption = !_vm.isOption}}},[_c('i',{staticClass:\"fa fa-cog\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Options\\n \")]),_vm._v(\" \"),_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Full Example\")]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$refs.upload && _vm.$refs.upload.dropActive),expression:\"$refs.upload && $refs.upload.dropActive\"}],staticClass:\"drop-active\"},[_c('h3',[_vm._v(\"Drop files to upload\")])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isOption),expression:\"!isOption\"}],staticClass:\"upload\"},[_c('div',{staticClass:\"table-responsive\"},[_c('table',{staticClass:\"table table-hover\"},[_vm._m(0),_vm._v(\" \"),_c('tbody',[(!_vm.files.length)?_c('tr',[_c('td',{attrs:{\"colspan\":\"7\"}},[_c('div',{staticClass:\"text-center p-5\"},[_vm._m(1),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-lg btn-primary\",attrs:{\"for\":_vm.name}},[_vm._v(\"Select Files\")])])])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.files),function(file,index){return _c('tr',{key:file.id},[_c('td',[_vm._v(_vm._s(index))]),_vm._v(\" \"),_c('td',[(file.thumb)?_c('img',{attrs:{\"src\":file.thumb,\"width\":\"40\",\"height\":\"auto\"}}):_c('span',[_vm._v(\"No Image\")])]),_vm._v(\" \"),_c('td',[_c('div',{staticClass:\"filename\"},[_vm._v(\"\\n \"+_vm._s(file.name)+\"\\n \")]),_vm._v(\" \"),(file.active || file.progress !== '0.00')?_c('div',{staticClass:\"progress\"},[_c('div',{class:{'progress-bar': true, 'progress-bar-striped': true, 'bg-danger': file.error, 'progress-bar-animated': file.active},style:({width: file.progress + '%'}),attrs:{\"role\":\"progressbar\"}},[_vm._v(_vm._s(file.progress)+\"%\")])]):_vm._e()]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.speed)))]),_vm._v(\" \"),(file.error)?_c('td',[_vm._v(_vm._s(file.error))]):(file.success)?_c('td',[_vm._v(\"success\")]):(file.active)?_c('td',[_vm._v(\"active\")]):_c('td'),_vm._v(\" \"),_c('td',[_c('div',{staticClass:\"btn-group\"},[_c('button',{staticClass:\"btn btn-secondary btn-sm dropdown-toggle\",attrs:{\"type\":\"button\"}},[_vm._v(\"\\n Action\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-menu\"},[_c('a',{class:{'dropdown-item': true, disabled: file.active || file.success || file.error === 'compressing'},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();file.active || file.success || file.error === 'compressing' ? false : _vm.onEditFileShow(file)}}},[_vm._v(\"Edit\")]),_vm._v(\" \"),_c('a',{class:{'dropdown-item': true, disabled: !file.active},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();file.active ? _vm.$refs.upload.update(file, {error: 'cancel'}) : false}}},[_vm._v(\"Cancel\")]),_vm._v(\" \"),(file.active)?_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.update(file, {active: false})}}},[_vm._v(\"Abort\")]):(file.error && file.error !== 'compressing' && _vm.$refs.upload.features.html5)?_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.update(file, {active: true, error: '', progress: '0.00'})}}},[_vm._v(\"Retry upload\")]):_c('a',{class:{'dropdown-item': true, disabled: file.success || file.error === 'compressing'},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();file.success || file.error === 'compressing' ? false : _vm.$refs.upload.update(file, {active: true})}}},[_vm._v(\"Upload\")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\"}),_vm._v(\" \"),_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.remove(file)}}},[_vm._v(\"Remove\")])])])])])})],2)])]),_vm._v(\" \"),_c('div',{staticClass:\"example-foorer\"},[_c('div',{staticClass:\"footer-status float-right\"},[_vm._v(\"\\n Drop: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.drop : false)+\",\\n Active: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.active : false)+\",\\n Uploaded: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.uploaded : true)+\",\\n Drop active: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.dropActive : false)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"btn-group\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary dropdown-toggle\",attrs:{\"post-action\":_vm.postAction,\"put-action\":_vm.putAction,\"extensions\":_vm.extensions,\"accept\":_vm.accept,\"multiple\":_vm.multiple,\"directory\":_vm.directory,\"size\":_vm.size || 0,\"thread\":_vm.thread < 1 ? 1 : (_vm.thread > 5 ? 5 : _vm.thread),\"headers\":_vm.headers,\"data\":_vm.data,\"drop\":_vm.drop,\"drop-directory\":_vm.dropDirectory,\"add-index\":_vm.addIndex},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-menu\"},[_c('label',{staticClass:\"dropdown-item\",attrs:{\"for\":_vm.name}},[_vm._v(\"Add files\")]),_vm._v(\" \"),_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.onAddFolader}},[_vm._v(\"Add folder\")]),_vm._v(\" \"),_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.addData.show = true}}},[_vm._v(\"Add data\")])])],1),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isOption),expression:\"isOption\"}],staticClass:\"option\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"accept\"}},[_vm._v(\"Accept:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.accept),expression:\"accept\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"accept\"},domProps:{\"value\":(_vm.accept)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.accept=$event.target.value}}}),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Allow upload mime type\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"extensions\"}},[_vm._v(\"Extensions:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.extensions),expression:\"extensions\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"extensions\"},domProps:{\"value\":(_vm.extensions)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.extensions=$event.target.value}}}),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Allow upload file extension\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"PUT Upload:\")]),_vm._v(\" \"),_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.putAction),expression:\"putAction\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"radio\",\"name\":\"put-action\",\"id\":\"put-action\",\"value\":\"\"},domProps:{\"checked\":_vm._q(_vm.putAction,\"\")},on:{\"change\":function($event){_vm.putAction=\"\"}}}),_vm._v(\" Off\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.putAction),expression:\"putAction\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"radio\",\"name\":\"put-action\",\"id\":\"put-action\",\"value\":\"/upload/put\"},domProps:{\"checked\":_vm._q(_vm.putAction,\"/upload/put\")},on:{\"change\":function($event){_vm.putAction=\"/upload/put\"}}}),_vm._v(\" On\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"After the shutdown, use the POST method to upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"thread\"}},[_vm._v(\"Thread:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.thread),expression:\"thread\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"max\":\"5\",\"min\":\"1\",\"id\":\"thread\"},domProps:{\"value\":(_vm.thread)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.thread=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}}),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Also upload the number of files at the same time (number of threads)\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"size\"}},[_vm._v(\"Max size:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.size),expression:\"size\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"min\":\"0\",\"id\":\"size\"},domProps:{\"value\":(_vm.size)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.size=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"minSize\"}},[_vm._v(\"Min size:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.minSize),expression:\"minSize\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"min\":\"0\",\"id\":\"minSize\"},domProps:{\"value\":(_vm.minSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.minSize=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"autoCompress\"}},[_vm._v(\"Automatically compress:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.autoCompress),expression:\"autoCompress\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"min\":\"0\",\"id\":\"autoCompress\"},domProps:{\"value\":(_vm.autoCompress)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.autoCompress=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}}),_vm._v(\" \"),(_vm.autoCompress > 0)?_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"More than \"+_vm._s(_vm._f(\"formatSize\")(_vm.autoCompress))+\" files are automatically compressed\")]):_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Set up automatic compression\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addIndex),expression:\"addIndex\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"add-index\"},domProps:{\"checked\":Array.isArray(_vm.addIndex)?_vm._i(_vm.addIndex,null)>-1:(_vm.addIndex)},on:{\"change\":function($event){var $$a=_vm.addIndex,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.addIndex=$$a.concat([$$v]))}else{$$i>-1&&(_vm.addIndex=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.addIndex=$$c}}}}),_vm._v(\" Start position to add\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Add a file list to start the location to add\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.drop),expression:\"drop\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"drop\"},domProps:{\"checked\":Array.isArray(_vm.drop)?_vm._i(_vm.drop,null)>-1:(_vm.drop)},on:{\"change\":function($event){var $$a=_vm.drop,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.drop=$$a.concat([$$v]))}else{$$i>-1&&(_vm.drop=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.drop=$$c}}}}),_vm._v(\" Drop\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Drag and drop upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.dropDirectory),expression:\"dropDirectory\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"drop-directory\"},domProps:{\"checked\":Array.isArray(_vm.dropDirectory)?_vm._i(_vm.dropDirectory,null)>-1:(_vm.dropDirectory)},on:{\"change\":function($event){var $$a=_vm.dropDirectory,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.dropDirectory=$$a.concat([$$v]))}else{$$i>-1&&(_vm.dropDirectory=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.dropDirectory=$$c}}}}),_vm._v(\" Drop directory\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Not checked, filter the dragged folder\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.uploadAuto),expression:\"uploadAuto\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"upload-auto\"},domProps:{\"checked\":Array.isArray(_vm.uploadAuto)?_vm._i(_vm.uploadAuto,null)>-1:(_vm.uploadAuto)},on:{\"change\":function($event){var $$a=_vm.uploadAuto,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.uploadAuto=$$a.concat([$$v]))}else{$$i>-1&&(_vm.uploadAuto=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.uploadAuto=$$c}}}}),_vm._v(\" Auto start\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Automatically activate upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('button',{staticClass:\"btn btn-primary btn-lg btn-block\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.isOption = !_vm.isOption}}},[_vm._v(\"Confirm\")])])]),_vm._v(\" \"),_c('div',{class:{'modal-backdrop': true, 'fade': true, show: _vm.addData.show}}),_vm._v(\" \"),_c('div',{class:{modal: true, fade: true, show: _vm.addData.show},attrs:{\"id\":\"modal-add-data\",\"tabindex\":\"-1\",\"role\":\"dialog\"}},[_c('div',{staticClass:\"modal-dialog\",attrs:{\"role\":\"document\"}},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"modal-header\"},[_c('h5',{staticClass:\"modal-title\"},[_vm._v(\"Add data\")]),_vm._v(\" \"),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.addData.show = false}}},[_c('span',[_vm._v(\"×\")])])]),_vm._v(\" \"),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.onAddData($event)}}},[_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"name\"}},[_vm._v(\"Name:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addData.name),expression:\"addData.name\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"required\":\"\",\"id\":\"name\",\"placeholder\":\"Please enter a file name\"},domProps:{\"value\":(_vm.addData.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.addData, \"name\", $event.target.value)}}}),_vm._v(\" \"),_vm._m(2)]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"type\"}},[_vm._v(\"Type:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addData.type),expression:\"addData.type\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"required\":\"\",\"id\":\"type\",\"placeholder\":\"Please enter the MIME type\"},domProps:{\"value\":(_vm.addData.type)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.addData, \"type\", $event.target.value)}}}),_vm._v(\" \"),_vm._m(3)]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"content\"}},[_vm._v(\"Content:\")]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addData.content),expression:\"addData.content\"}],staticClass:\"form-control\",attrs:{\"required\":\"\",\"id\":\"content\",\"rows\":\"3\",\"placeholder\":\"Please enter the file contents\"},domProps:{\"value\":(_vm.addData.content)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.addData, \"content\", $event.target.value)}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"modal-footer\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.addData.show = false}}},[_vm._v(\"Close\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\"Save\")])])])])])]),_vm._v(\" \"),_c('div',{class:{'modal-backdrop': true, 'fade': true, show: _vm.editFile.show}}),_vm._v(\" \"),_c('div',{class:{modal: true, fade: true, show: _vm.editFile.show},attrs:{\"id\":\"modal-edit-file\",\"tabindex\":\"-1\",\"role\":\"dialog\"}},[_c('div',{staticClass:\"modal-dialog modal-lg\",attrs:{\"role\":\"document\"}},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"modal-header\"},[_c('h5',{staticClass:\"modal-title\"},[_vm._v(\"Edit file\")]),_vm._v(\" \"),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.editFile.show = false}}},[_c('span',[_vm._v(\"×\")])])]),_vm._v(\" \"),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.onEditorFile($event)}}},[_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"name\"}},[_vm._v(\"Name:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.editFile.name),expression:\"editFile.name\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"required\":\"\",\"id\":\"name\",\"placeholder\":\"Please enter a file name\"},domProps:{\"value\":(_vm.editFile.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.editFile, \"name\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.editFile.show && _vm.editFile.blob && _vm.editFile.type && _vm.editFile.type.substr(0, 6) === 'image/')?_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Image: \")]),_vm._v(\" \"),_c('div',{staticClass:\"edit-image\"},[_c('img',{ref:\"editImage\",attrs:{\"src\":_vm.editFile.blob}})]),_vm._v(\" \"),_c('div',{staticClass:\"edit-image-tool\"},[_c('div',{staticClass:\"btn-group\",attrs:{\"role\":\"group\"}},[_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.rotate(-90)\"},on:{\"click\":function($event){_vm.editFile.cropper.rotate(-90)}}},[_c('i',{staticClass:\"fa fa-undo\",attrs:{\"aria-hidden\":\"true\"}})]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.rotate(90)\"},on:{\"click\":function($event){_vm.editFile.cropper.rotate(90)}}},[_c('i',{staticClass:\"fa fa-repeat\",attrs:{\"aria-hidden\":\"true\"}})])]),_vm._v(\" \"),_c('div',{staticClass:\"btn-group\",attrs:{\"role\":\"group\"}},[_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.crop()\"},on:{\"click\":function($event){_vm.editFile.cropper.crop()}}},[_c('i',{staticClass:\"fa fa-check\",attrs:{\"aria-hidden\":\"true\"}})]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.clear()\"},on:{\"click\":function($event){_vm.editFile.cropper.clear()}}},[_c('i',{staticClass:\"fa fa-remove\",attrs:{\"aria-hidden\":\"true\"}})])])])]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"modal-footer\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.editFile.show = false}}},[_vm._v(\"Close\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\"Save\")])])])])])]),_vm._v(\" \"),_vm._m(4)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"#\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Thumb\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Name\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Size\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Speed\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Status\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Action\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',[_vm._v(\"Drop files anywhere to upload\"),_c('br'),_vm._v(\"or\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Such as \"),_c('code',[_vm._v(\"filename.txt\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Such as \"),_c('code',[_vm._v(\"text/plain\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Full.vue\"}},[_vm._v(\"/docs/views/examples/Full.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./Simple.vue?vue&type=template&id=3576474f&\"\nimport script from \"./Simple.vue?vue&type=script&lang=js&\"\nexport * from \"./Simple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Simple.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-simple\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Simple Example\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"multiple\":true,\"size\":1024 * 1024 * 10},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Simple.vue\"}},[_vm._v(\"/docs/views/examples/Simple.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Avatar.vue?vue&type=template&id=7343c9e0&\"\nimport script from \"./Avatar.vue?vue&type=script&lang=js&\"\nexport * from \"./Avatar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Avatar.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-avatar\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$refs.upload && _vm.$refs.upload.dropActive),expression:\"$refs.upload && $refs.upload.dropActive\"}],staticClass:\"drop-active\"},[_c('h3',[_vm._v(\"Drop files to upload\")])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.edit),expression:\"!edit\"}],staticClass:\"avatar-upload\"},[_c('div',{staticClass:\"text-center p-2\"},[_c('label',{attrs:{\"for\":\"avatar\"}},[_c('img',{staticClass:\"rounded-circle\",attrs:{\"src\":_vm.files.length ? _vm.files[0].url : 'https://www.gravatar.com/avatar/default?s=200&r=pg&d=mm'}}),_vm._v(\" \"),_vm._m(0)])]),_vm._v(\" \"),_c('div',{staticClass:\"text-center p-2\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"name\":\"avatar\",\"post-action\":\"/upload/post\",\"drop\":!_vm.edit},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_vm._v(\"\\n Upload avatar\\n \")])],1)]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.files.length && _vm.edit),expression:\"files.length && edit\"}],staticClass:\"avatar-edit\"},[(_vm.files.length)?_c('div',{staticClass:\"avatar-edit-image\"},[_c('img',{ref:\"editImage\",attrs:{\"src\":_vm.files[0].url}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text-center p-4\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$refs.upload.clear($event)}}},[_vm._v(\"Cancel\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"submit\"},on:{\"click\":function($event){$event.preventDefault();return _vm.editSave($event)}}},[_vm._v(\"Save\")])])]),_vm._v(\" \"),_vm._m(1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',{staticClass:\"pt-2\"},[_vm._v(\"or\"),_c('br'),_vm._v(\"Drop files anywhere to upload\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Avatar.vue\"}},[_vm._v(\"/docs/views/examples/Avatar.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./Drag.vue?vue&type=template&id=6899f793&\"\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\")]):_c('span')])})):_c('ul',[_vm._m(0)]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$refs.upload && _vm.$refs.upload.dropActive),expression:\"$refs.upload && $refs.upload.dropActive\"}],staticClass:\"drop-active\"},[_c('h3',[_vm._v(\"Drop files to upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"multiple\":true,\"drop\":true,\"drop-directory\":true},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',{attrs:{\"colspan\":\"7\"}},[_c('div',{staticClass:\"text-center p-5\"},[_c('h4',[_vm._v(\"Drop files anywhere to upload\"),_c('br'),_vm._v(\"or\")]),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-lg btn-primary\",attrs:{\"for\":\"file\"}},[_vm._v(\"Select Files\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Drag.vue\"}},[_vm._v(\"/docs/views/examples/Drag.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./Multiple.vue?vue&type=template&id=3d82a174&\"\nimport script from \"./Multiple.vue?vue&type=script&lang=js&\"\nexport * from \"./Multiple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Multiple.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-multiple\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Multiple instances\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files1),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload1\",staticClass:\"btn btn-primary\",attrs:{\"input-id\":\"file1\",\"post-action\":\"/upload/post\"},model:{value:(_vm.files1),callback:function ($$v) {_vm.files1=$$v},expression:\"files1\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-primary\",attrs:{\"for\":\"file1\"}},[_vm._v(\"Label Select files\")]),_vm._v(\" \"),(!_vm.$refs.upload1 || !_vm.$refs.upload1.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload1.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload1.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files2),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload2\",staticClass:\"btn btn-primary\",attrs:{\"input-id\":\"file2\",\"post-action\":\"/upload/post\"},model:{value:(_vm.files2),callback:function ($$v) {_vm.files2=$$v},expression:\"files2\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-primary\",attrs:{\"for\":\"file2\"}},[_vm._v(\"Label Select files\")]),_vm._v(\" \"),(!_vm.$refs.upload2 || !_vm.$refs.upload2.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload2.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload2.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Multiple.vue\"}},[_vm._v(\"/docs/views/examples/Multiple.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import { render, staticRenderFns } from \"./Chunk.vue?vue&type=template&id=c205936e&scoped=true&\"\nimport script from \"./Chunk.vue?vue&type=script&lang=js&\"\nexport * from \"./Chunk.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Chunk.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./Chunk.vue?vue&type=style&index=1&id=c205936e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c205936e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-simple\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Chunk Upload Example\")]),_vm._v(\" \"),_c('p',[_vm._v(\"When using chunk uploads, the file will be uploaded in different parts (or chunks). All the files with a size higher than the set in the input will be uploaded using this method.\")]),_vm._v(\" \"),_vm._m(0),_vm._v(\" \"),_c('p',[_vm._v(\"You can also pause / resume the upload process.\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('div',{staticClass:\"form-horizontal\"},[_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"col-sm-offset-2 col-sm-10\"},[_c('div',{staticClass:\"checkbox\"},[_c('label',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkEnabled),expression:\"chunkEnabled\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.chunkEnabled)?_vm._i(_vm.chunkEnabled,null)>-1:(_vm.chunkEnabled)},on:{\"change\":function($event){var $$a=_vm.chunkEnabled,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.chunkEnabled=$$a.concat([$$v]))}else{$$i>-1&&(_vm.chunkEnabled=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.chunkEnabled=$$c}}}}),_vm._v(\" Use chunk upload\\n \")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"inputMinSize\"}},[_vm._v(\"Min Size\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10\"},[_c('div',{staticClass:\"input-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkMinSize),expression:\"chunkMinSize\"}],staticClass:\"form-control\",attrs:{\"id\":\"inputMinSize\",\"type\":\"number\"},domProps:{\"value\":(_vm.chunkMinSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.chunkMinSize=$event.target.value}}}),_vm._v(\" \"),_c('span',{staticClass:\"input-group-addon\"},[_vm._v(\"MB\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"inputMaxActive\"}},[_vm._v(\"Max Active Chunks\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkMaxActive),expression:\"chunkMaxActive\"}],staticClass:\"form-control\",attrs:{\"id\":\"inputMaxActive\",\"type\":\"number\"},domProps:{\"value\":(_vm.chunkMaxActive)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.chunkMaxActive=$event.target.value}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"inputMaxRetries\"}},[_vm._v(\"Max Chunk Retries\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkMaxRetries),expression:\"chunkMaxRetries\"}],staticClass:\"form-control\",attrs:{\"id\":\"inputMaxRetries\",\"type\":\"number\"},domProps:{\"value\":(_vm.chunkMaxRetries)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.chunkMaxRetries=$event.target.value}}})])])]),_vm._v(\" \"),_c('table',{staticClass:\"table table-striped table-condensed\"},[_vm._m(1),_vm._v(\" \"),_c('tbody',[_vm._l((_vm.files),function(file){return [_c('tr',{key:file.id + '-info'},[_c('td',[_vm._v(_vm._s(file.name))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.progress)+\"%\")]),_vm._v(\" \"),(file.error)?_c('td',[_vm._v(_vm._s(file.error))]):(file.success)?_c('td',[_vm._v(\"Success\")]):(file.active)?_c('td',[_vm._v(\"Active\")]):_c('td',[_vm._v(\" - \")]),_vm._v(\" \"),_c('td',[(file.chunk)?[(file.active)?_c('button',{staticClass:\"btn btn-sm btn-danger\",on:{\"click\":function($event){file.chunk.pause()}}},[_c('i',{staticClass:\"fa fa-pause\"})]):_vm._e(),_vm._v(\" \"),(!file.active && file.chunk.hasChunksToUpload)?_c('button',{staticClass:\"btn btn-sm btn-primary\",on:{\"click\":function($event){file.chunk.resume()}}},[_c('i',{staticClass:\"fa fa-play\"})]):_vm._e()]:_vm._e()],2),_vm._v(\" \"),(file.chunk)?[_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.chunk.chunks.length))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.chunk.chunksUploading.length))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.chunk.chunksUploaded.length))])]:[_c('td',{staticClass:\"text-right\"},[_vm._v(\" - \")]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(\" - \")]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(\" - \")])]],2),_vm._v(\" \"),_c('tr',{key:file.id + '-loading'},[_c('td',{attrs:{\"colspan\":\"8\"}},[(file.chunk)?_c('div',{staticClass:\"chunk-loading\"},_vm._l((file.chunk.chunks),function(chunk,index){return _c('span',{key:index,staticClass:\"chunk-loading-part\",class:{'chunk-loading-part__uploaded': chunk.uploaded}},[(chunk.retries != file.chunk.maxRetries)?[_vm._v(\"\\n \"+_vm._s(file.chunk.maxRetries - chunk.retries)+\" error(s)\\n \")]:_vm._e()],2)})):_vm._e()])])]})],2)]),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"chunk-enabled\":_vm.chunkEnabled,\"chunk\":{\n action: '/upload/chunk',\n minSize: _vm.chunkMinSize * 1048576,\n maxActive: _vm.chunkMaxActive,\n maxRetries: _vm.chunkMaxRetries\n },\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"multiple\":true,\"size\":1024 * 1024 * 10},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")])],1)]),_vm._v(\" \"),_vm._m(2)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"You will be able to see the different parts being uploaded individually. Some parts might fail, and the package is prepared to \"),_c('em',[_vm._v(\"retry\")]),_vm._v(\" up to a certain amount of times.\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',{staticClass:\"thead-dark\"},[_c('tr',[_c('th',[_vm._v(\"Name\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Size\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Progress\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Status\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Pause\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-center\",attrs:{\"colspan\":\"3\"}},[_vm._v(\"Chunks\")])]),_vm._v(\" \"),_c('tr',[_c('th',{attrs:{\"colspan\":\"5\"}}),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Total\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Active\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Completed\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Chunk.vue\"}},[_vm._v(\"/docs/views/examples/Chunk.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=script&lang=js&\"","\n\n\n\n","// import Vue from 'vue'\nimport VueRouter from 'vue-router'\n\nimport i18n from './i18n'\nimport RouterComponent from './views/Router'\nimport DocumentComponent from './views/Document'\nimport ExampleComponent from './views/Example'\n\nimport FullExampleComponent from './views/examples/Full'\nimport SimpleExampleComponent from './views/examples/Simple'\nimport AvatarExampleComponent from './views/examples/Avatar'\nimport DragExampleComponent from './views/examples/Drag'\nimport MultipleExampleComponent from './views/examples/Multiple'\nimport ChunkExampleComponent from './views/examples/Chunk'\nimport VuexExampleComponent from './views/examples/Vuex'\n\n\n\n// Vue.use(VueRouter)\n\n\nlet examples = [\n {\n path: '',\n component: FullExampleComponent,\n },\n {\n path: 'full',\n component: FullExampleComponent,\n },\n {\n path: 'simple',\n component: SimpleExampleComponent,\n },\n {\n path: 'avatar',\n component: AvatarExampleComponent,\n },\n {\n path: 'drag',\n component: DragExampleComponent,\n },\n {\n path: 'multiple',\n component: MultipleExampleComponent,\n },\n {\n path: 'chunk',\n component: ChunkExampleComponent,\n },\n {\n path: 'vuex',\n component: VuexExampleComponent,\n },\n]\n\n\n\nconst router = new VueRouter({\n mode: 'hash',\n fallback: false,\n scrollBehavior(to, from, savedPosition) {\n if (savedPosition) {\n return savedPosition\n } else if (to.hash) {\n let el = document.querySelector(to.hash)\n return { x: 0, y: el ? el.offsetTop : 0 }\n } else {\n return { x: 0, y: 0 }\n }\n },\n routes: [\n {\n path: '/:locale(' + Object.keys(i18n.messages).join('|') + ')?',\n component: RouterComponent,\n children: [\n {\n path: 'documents',\n component: DocumentComponent,\n },\n {\n path: 'examples',\n component: ExampleComponent,\n children: examples,\n },\n {\n path: '',\n component: ExampleComponent,\n children: examples,\n },\n ]\n },\n ]\n})\nexport default router\n","import { render, staticRenderFns } from \"./Vuex.vue?vue&type=template&id=765a8e49&\"\nimport script from \"./Vuex.vue?vue&type=script&lang=js&\"\nexport * from \"./Vuex.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Vuex.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-vuex\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Vuex Example\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"multiple\":true,\"size\":1024 * 1024 * 10,\"value\":_vm.files},on:{\"input\":_vm.inputUpdate}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Vuex.vue\"}},[_vm._v(\"/docs/views/examples/Vuex.vue\")]),_vm._v(\", \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/store.js\"}},[_vm._v(\"/docs/store.js\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=521aa91e&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('header',{staticClass:\"navbar navbar-expand-lg navbar-dark bg-dark\",attrs:{\"id\":\"header\"}},[_c('router-link',{staticClass:\"navbar-brand\",attrs:{\"exact\":true,\"to\":_vm._f(\"toLocale\")('/')}},[_vm._v(_vm._s(_vm.$t('header.logo')))]),_vm._v(\" \"),_c('button',{staticClass:\"navbar-toggler\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.showNav = !_vm.showNav}}},[_c('span',{staticClass:\"navbar-toggler-icon\"})]),_vm._v(\" \"),_c('nav',{class:{collapse: true, 'navbar-collapse': true, show: _vm.showNav},attrs:{\"id\":\"navbar\"}},[_c('ul',{staticClass:\"navbar-nav\"},[_c('li',{staticClass:\"nav-item\"},[_c('router-link',{class:'nav-link' + (_vm.$route.path === '/' ? ' active' : ''),attrs:{\"active-class\":\"active\",\"exact\":true,\"to\":_vm._f(\"toLocale\")('/')}},[_vm._v(_vm._s(_vm.$t('header.home')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/documents')}},[_vm._v(_vm._s(_vm.$t('header.documents')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples')}},[_vm._v(_vm._s(_vm.$t('header.examples')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"rel\":\"license noopener\",\"href\":\"https://www.lianyue.org\",\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t('header.blog')))])])]),_vm._v(\" \"),_c('ul',{staticClass:\"navbar-nav ml-md-auto\"},[_c('li',{staticClass:\"nav-item dropdown\"},[_c('a',{staticClass:\"nav-link dropdown-toggle\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.onLocale(true)},\"focus\":function($event){_vm.onLocale(true)},\"blur\":function($event){_vm.onLocale(false)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('header.locale'))+\"\\n \")]),_vm._v(\" \"),_c('div',{class:{'dropdown-menu': true, show: _vm.showLocale},on:{\"blur\":function($event){_vm.onLocale(false)}}},_vm._l((_vm.locale),function(value,name){return _c('router-link',{key:name,staticClass:\"dropdown-item\",attrs:{\"to\":'/' + name + (_vm.$route.params.locale ? _vm.$route.fullPath.substr(_vm.$route.params.locale.length + 1) : _vm.$route.fullPath)}},[_vm._v(_vm._s(value))])}))]),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/issues\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('header.issues'))+\"\\n \")])]),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('header.github'))+\"\\n \")])])])])],1),_vm._v(\" \"),_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport marked from 'marked'\nimport highlightjs from 'highlight.js'\nimport store from './store'\nimport router from './router'\nimport i18n from './i18n'\nimport App from './views/App'\n\nVue.config.silent = false\nVue.config.devtools = true\n\n\nclass Renderer extends marked.Renderer {\n heading(text, level, raw) {\n let rawName = raw.toLowerCase().replace(/([\\u0000-\\u002F\\u003A-\\u0060\\u007B-\\u007F]+)/g, '-').replace(/^\\-+|\\-+$/, '')\n\n if (!this.options.headers) {\n this.options.headers = []\n }\n while (this.options.headers.length >= level) {\n this.options.headers.pop()\n }\n let parent = this.options.headers.filter(value => !!value).join('-')\n if (parent) {\n parent = parent + '-'\n }\n while (this.options.headers.length < (level - 1)) {\n this.options.headers.push('')\n }\n this.options.headers.push(rawName)\n return ''\n + text\n + '\\n'\n }\n}\n\nmarked.setOptions({\n renderer: new Renderer(),\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n smartLists: true,\n smartypants: false,\n highlight(code, lang) {\n if (lang) {\n return highlightjs.highlight(lang, code).value\n } else {\n return highlightjs.highlightAuto(code).value\n }\n }\n})\n\nVue.directive('markdown', function (el, binding, vnode) {\n if (!el.className || !/vue-markdown/.test(el.className)) {\n el.className += ' vue-markdown'\n }\n let text = ''\n for (let i = 0; i < vnode.children.length; i++) {\n text += vnode.children[i].text || ''\n }\n if (el.markdown === text) {\n return\n }\n\n el.markdown = text\n\n el.innerHTML = marked(text)\n let selectorList = el.querySelectorAll('a')\n for (let i = 0; i < selectorList.length; i++) {\n selectorList[i].onclick = function (e) {\n if (e.metaKey || e.ctrlKey || e.shiftKey) {\n return\n }\n if (e.defaultPrevented) {\n return\n }\n if (e.button !== undefined && e.button !== 0) {\n return\n }\n\n if (this.host !== window.location.host) {\n return\n }\n\n let href = this.getAttribute('href')\n if (!href) {\n return\n }\n\n if (href.charAt(0) !== '#') {\n return\n }\n\n e.preventDefault()\n router.push(href)\n }\n }\n})\n\n\n\nVue.filter('formatSize', function (size) {\n if (size > 1024 * 1024 * 1024 * 1024) {\n return (size / 1024 / 1024 / 1024 / 1024).toFixed(2) + ' TB'\n } else if (size > 1024 * 1024 * 1024) {\n return (size / 1024 / 1024 / 1024).toFixed(2) + ' GB'\n } else if (size > 1024 * 1024) {\n return (size / 1024 / 1024).toFixed(2) + ' MB'\n } else if (size > 1024) {\n return (size / 1024).toFixed(2) + ' KB'\n }\n return size.toString() + ' B'\n})\n\nVue.filter('toLocale', function (to) {\n return '/' + i18n.locale + to\n})\n\n\n\nnew Vue({\n store,\n router,\n i18n,\n ...App\n}).$mount('#app')\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{class:_vm.className},[_vm._t(\"default\"),_vm._v(\" \"),_c('label',{attrs:{\"for\":_vm.inputId || _vm.name}}),_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 name\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=7f0877af&\"\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,\"disabled\":_vm.$parent.disabled,\"webkitdirectory\":_vm.$parent.directory && _vm.$parent.features.directory,\"directory\":_vm.$parent.directory && _vm.$parent.features.directory,\"multiple\":_vm.$parent.multiple && _vm.$parent.features.html5},on:{\"change\":_vm.change}})}\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=5dd5f1e6&\"\nimport script from \"./FileUpload.vue?vue&type=script&lang=js&\"\nexport * from \"./FileUpload.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileUpload.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file