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