/*! * Name: vue-upload-component * Version: 2.7.0 * Author: LianYue */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.VueUploadComponent=t()}(this,function(){"use strict";function e(e){if(Array.isArray(e)){for(var t=0,i=Array(e.length);t1&&void 0!==arguments[1]?arguments[1]:this.addIndex,r=e,n=r instanceof Array;n||(r=[r]);for(var o=[],a=0;a1&&o.length+this.files.length>=this.maximum)break;if(o.push(s),1===this.maximum)break}}if(!o.length)return!1;1===this.maximum&&this.clear();var d=void 0;!0===t||0===t?d=o.concat(this.files):t?(d=o.concat([])).splice(t,0,o):d=this.files.concat(o),this.files=d;for(var l=0;l0&&r.length>=i.maximum)return t(i.add(r));i.getEntry(s).then(function(t){r.push.apply(r,e(t)),o(a+1)})}(0)})}if(t.files.length){for(var s=0;s0&&r.length>=this.maximum));s++);return Promise.resolve(this.add(r))}return Promise.resolve([])},getEntry:function(t){var i=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return new Promise(function(n,o){if(t.isFile)t.file(function(e){n([{size:e.size,name:r+e.name,type:e.type,file:e}])});else if(t.isDirectory&&i.dropDirectory){var a=[],s=t.createReader();!function o(){s.readEntries(function(s){!function u(d){return!s[d]&&0===d||i.maximum>0&&a.length>=i.maximum?n(a):s[d]?void i.getEntry(s[d],r+t.name+"/").then(function(t){a.push.apply(a,e(t)),u(d+1)}):o()}(0)})}()}else n([])})},replace:function(e,t){var i=this.get(e),r=this.get(t);if(!i||!r||i===r)return!1;var n=this.files.concat([]),o=n.indexOf(i),a=n.indexOf(r);return-1!==o&&-1!==a&&(n[o]=r,n[a]=i,this.files=n,this.emitInput(),!0)},remove:function(e){var t=this.get(e);if(t){if(this.emitFilter(void 0,t))return!1;var i=this.files.concat([]),r=i.indexOf(t);if(-1===r)return console.error("remove",t),!1;i.splice(r,1),this.files=i,delete this.maps[t.id],this.emitInput(),this.emitFile(void 0,t)}return t},update:function(e,t){var r=this.get(e);if(r){var n=i({},r,t);if(!r.fileObject||!r.active||n.active||n.error||n.success||(n.error="abort"),this.emitFilter(n,r))return!1;var o=this.files.concat([]),a=o.indexOf(r);return-1===a?(console.error("update",r),!1):(o.splice(a,1,n),this.files=o,delete this.maps[r.id],this.maps[n.id]=n,this.emitInput(),this.emitFile(n,r),n)}return!1},emitFilter:function(e,t){var i=!1;return this.$emit("input-filter",e,t,function(){return i=!0}),i},emitFile:function(e,t){this.$emit("input-file",e,t),!(e&&e.fileObject&&e.active)||t&&t.active?e&&e.fileObject&&e.active||!t||!t.fileObject||!t.active||this.uploading--:(this.uploading++,this.$nextTick(function(){var t=this;setTimeout(function(){t.upload(e).then(function(){(e=t.get(e))&&e.fileObject&&t.update(e,{active:!1,success:!e.error})}).catch(function(i){t.update(e,{active:!1,success:!1,error:i.code||i.error||i.message||i})})},parseInt(50*Math.random()+50,10))})),!this.active||Boolean(e)===Boolean(t)&&e.active===t.active||this.watchActive(!0)},emitInput:function(){this.$emit("input",this.files)},upload:function(e){var t=this.get(e);if(!t)return Promise.reject("not_exists");if(!t.fileObject)return Promise.reject("file_object");if(t.error)return Promise.reject(t.error);if(t.success)return Promise.resolve(t);var i=this.extensions;return i&&(i.length||void 0===i.length)&&("object"===(void 0===i?"undefined":r(i))&&i instanceof RegExp||("string"==typeof i&&(i=i.split(",").map(function(e){return e.trim()}).filter(function(e){return e})),i=new RegExp("\\.("+i.join("|").replace(/\./g,"\\.")+")$","i")),-1===t.name.search(i))?Promise.reject("extension"):this.size>0&&t.size>=0&&t.size>this.size?Promise.reject("size"):this.features.html5&&t.putAction?this.uploadPut(t):this.features.html5?this.uploadHtml5(t):this.uploadHtml4(t)},uploadPut:function(e){var t=[],i=void 0;for(var r in e.data)null!==(i=e.data[r])&&void 0!==i&&t.push(encodeURIComponent(r)+"="+encodeURIComponent(i));var n=t.length?(-1===e.putAction.indexOf("?")?"?":"&")+t.join("&"):"",o=new XMLHttpRequest;return o.open("PUT",e.putAction+n),this.uploadXhr(o,e,e.file)},uploadHtml5:function(e){var t=new window.FormData,i=void 0;for(var n in e.data)(i=e.data[n])&&"object"===(void 0===i?"undefined":r(i))&&"function"!=typeof i.toString?i instanceof File?t.append(n,i,i.name):t.append(n,JSON.stringify(i)):null!==i&&void 0!==i&&t.append(n,i);t.append(this.name,e.file,e.file.filename||e.name);var o=new XMLHttpRequest;return o.open("POST",e.postAction),this.uploadXhr(o,e,t)},uploadXhr:function(e,t,i){var r=this,n=t,o=0,a=0;e.upload.onprogress=function(e){if(n=r.get(n),e.lengthComputable&&n&&n.fileObject&&n.active){var t=Math.round(Date.now()/1e3);t!==o&&(o=t,n=r.update(n,{progress:(e.loaded/e.total*100).toFixed(2),speed:e.loaded-a}),a=e.loaded)}};var s=setInterval(function(){if(!(n=r.get(n))||!n.fileObject||n.success||n.error||!n.active){s&&(clearInterval(s),s=!1);try{e.abort(),e.timeout=1}catch(e){}}},100);return new Promise(function(t,o){var a=void 0,u=function(i){if(!a){if(a=!0,s&&(clearInterval(s),s=!1),!(n=r.get(n)))return o("not_exists");if(!n.fileObject)return o("file_object");if(n.error)return o(n.error);if(!n.active)return o("abort");if(n.success)return t(n);var u={};switch(i.type){case"timeout":case"abort":u.error=i.type;break;case"error":e.status?e.status>=500?u.error="server":e.status>=400&&(u.error="denied"):u.error="network";break;default:e.status>=500?u.error="server":e.status>=400?u.error="denied":u.progress="100.00"}if(e.responseText){var d=e.getResponseHeader("Content-Type");d&&-1!==d.indexOf("/json")?u.response=JSON.parse(e.responseText):u.response=e.responseText}return(n=r.update(n,u)).error?o(n.error):t(n)}};e.onload=u,e.onerror=u,e.onabort=u,e.ontimeout=u,n.timeout&&(e.timeout=n.timeout);for(var d in n.headers)e.setRequestHeader(d,n.headers[d]);n=r.update(n,{xhr:e}),e.send(i)})},uploadHtml4:function(e){var t=this,i=e,n=function(e){27===e.keyCode&&e.preventDefault()},o=document.createElement("iframe");o.id="upload-iframe-"+i.id,o.name="upload-iframe-"+i.id,o.src="about:blank",o.setAttribute("style","width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;");var a=document.createElement("form");a.action=i.postAction,a.name="upload-form-"+i.id,a.setAttribute("method","POST"),a.setAttribute("target","upload-iframe-"+i.id),a.setAttribute("enctype","multipart/form-data");var s=void 0,u=void 0;for(var d in i.data)(s=i.data[d])&&"object"===(void 0===s?"undefined":r(s))&&"function"!=typeof s.toString&&(s=JSON.stringify(s)),null!==s&&void 0!==s&&((u=document.createElement("input")).type="hidden",u.name=d,a.appendChild(u));a.appendChild(i.el),document.body.appendChild(o).appendChild(a);var l=function(){var e=void 0;try{o.contentWindow&&(e=o.contentWindow.document)}catch(e){}if(!e)try{e=o.contentDocument?o.contentDocument:o.document}catch(t){e=o.document}return e&&e.body?e.body.innerHTML:null};return new Promise(function(e,r){setTimeout(function(){if(!(i=t.update(i,{iframe:o})))return r("not_exists");var s=setInterval(function(){(i=t.get(i))&&i.fileObject&&!i.success&&!i.error&&i.active||(s&&(clearInterval(s),s=!1),o.onabort({type:i?"abort":"not_exists"}))},100),u=void 0,d=function(o){if(!u){if(u=!0,s&&(clearInterval(s),s=!1),document.body.removeEventListener("keydown",n),!(i=t.get(i)))return r("not_exists");if(!i.fileObject)return r("file_object");if(i.error)return r(i.error);if(!i.active)return r("abort");if(i.success)return e(i);var a=l(),d={};switch(o.type){case"abort":d.error="abort";break;case"error":i.error?d.error=i.error:d.error=null===a?"network":"denied";break;default:i.error?d.error=i.error:null===d?d.error="network":d.progress="100.00"}if(null!==a){if(a&&"{"===a.substr(0,1)&&"}"===a.substr(a.length-1,1))try{a=JSON.parse(a)}catch(e){}d.response=a}return(i=t.update(i,d)).error?r(i.error):e(i)}};o.onload=d,o.onerror=d,o.onabort=d,document.body.addEventListener("keydown",n),a.submit()},50)}).then(function(e){return o.parentNode&&o.parentNode.removeChild(o),e}).catch(function(e){return o.parentNode&&o.parentNode.removeChild(o),e})},watchActive:function(e){for(var t=void 0,i=0;t=this.files[i];)if(i++,t.fileObject)if(e&&!this.destroy){if(this.uploading>=this.thread||this.uploading&&!this.features.html5)break;t.active||t.error||t.success||this.update(t,{active:!0})}else t.active&&this.update(t,{active:!1});else;0===this.uploading&&(this.active=!1)},watchDrop:function(e){var t=e;if(this.features.drop){if(this.dropElement)try{document.removeEventListener("dragenter",this.onDragenter,!1),document.removeEventListener("dragleave",this.onDragleave,!1),this.dropElement.removeEventListener("dragover",this.onDragover,!1),this.dropElement.removeEventListener("drop",this.onDrop,!1)}catch(e){}t?"string"==typeof t?t=document.querySelector(t)||this.$root.$el.querySelector(t):!0===t&&(t=this.$parent.$el):t=!1,this.dropElement=t,this.dropElement&&(document.addEventListener("dragenter",this.onDragenter,!1),document.addEventListener("dragleave",this.onDragleave,!1),this.dropElement.addEventListener("dragover",this.onDragover,!1),this.dropElement.addEventListener("drop",this.onDrop,!1))}},onDragenter:function(e){e.preventDefault(),this.dropActive||(this.dropActive=!0)},onDragleave:function(e){e.preventDefault(),("HTML"===e.target.nodeName||0===e.screenX&&0===e.screenY&&!e.fromElement&&e.offsetX<=0)&&(this.dropActive=!1)},onDragover:function(e){e.preventDefault()},onDrop:function(e){e.preventDefault(),this.dropActive=!1,this.addDataTransfer(e.dataTransfer)}}},o=Object.freeze({default:n});return o&&n||o}); //# sourceMappingURL=vue-upload-component.min.js.map