UNPKG

10.1 kBJavaScriptView Raw
1!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("ngx-uploader",["exports","@angular/core","rxjs","rxjs/operators"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["ngx-uploader"]={},e.ng.core,e.rxjs,e.rxjs.operators)}(this,(function(e,t,n,r){"use strict";var i;(i=e.UploadStatus||(e.UploadStatus={}))[i.Queue=0]="Queue",i[i.Uploading=1]="Uploading",i[i.Done=2]="Done",i[i.Cancelled=3]="Cancelled";Object.create;function o(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s}Object.create;function s(e){if(0===e)return"0 Byte";var t=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,t)).toFixed(2))+" "+["Bytes","KB","MB","GB","TB","PB"][t]}var u=function(){function i(e,i,o,s){var u=this;void 0===e&&(e=Number.POSITIVE_INFINITY),void 0===i&&(i=["*"]),void 0===o&&(o=Number.POSITIVE_INFINITY),void 0===s&&(s=Number.POSITIVE_INFINITY),this.queue=[],this.serviceEvents=new t.EventEmitter,this.uploadScheduler=new n.Subject,this.subs=[],this.contentTypes=i,this.maxUploads=o,this.maxFileSize=s,this.uploadScheduler.pipe(r.mergeMap((function(e){return u.startUpload(e)}),e)).subscribe((function(e){return u.serviceEvents.emit(e)}))}return i.prototype.handleFiles=function(e){var t,n=this,r=[].reduce.call(e,(function(e,t,r){var i=e.length+n.queue.length+1;if(n.isContentTypeAllowed(t.type)&&i<=n.maxUploads&&n.isFileSizeAllowed(t.size))e=e.concat(t);else{var o=n.makeUploadFile(t,r);n.serviceEvents.emit({type:"rejected",file:o})}return e}),[]);(t=this.queue).push.apply(t,function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(o(arguments[t]));return e}([].map.call(r,(function(e,t){var r=n.makeUploadFile(e,t);return n.serviceEvents.emit({type:"addedToQueue",file:r}),r})))),this.serviceEvents.emit({type:"allAddedToQueue"})},i.prototype.initInputEvents=function(t){var n=this;return t.subscribe((function(t){switch(t.type){case"uploadFile":var r=n.queue.findIndex((function(e){return e===t.file}));-1!==r&&t.file&&n.uploadScheduler.next({file:n.queue[r],event:t});break;case"uploadAll":n.queue.filter((function(t){return t.progress.status===e.UploadStatus.Queue})).forEach((function(e){return n.uploadScheduler.next({file:e,event:t})}));break;case"cancel":var i=t.id||null;if(!i)return;n.subs.filter((function(e){return e.id===i})).forEach((function(t){if(t.sub){t.sub.unsubscribe();var r=n.queue.findIndex((function(e){return e.id===i}));-1!==r&&(n.queue[r].progress.status=e.UploadStatus.Cancelled,n.serviceEvents.emit({type:"cancelled",file:n.queue[r]}))}}));break;case"cancelAll":n.subs.forEach((function(t){t.sub&&t.sub.unsubscribe();var r=n.queue.find((function(e){return e.id===t.id}));r&&(r.progress.status=e.UploadStatus.Cancelled,n.serviceEvents.emit({type:"cancelled",file:r}))}));break;case"remove":if(!t.id)return;var o=n.queue.findIndex((function(e){return e.id===t.id}));if(-1!==o){var s=n.queue[o];n.queue.splice(o,1),n.serviceEvents.emit({type:"removed",file:s})}break;case"removeAll":n.queue.length&&(n.queue=[],n.serviceEvents.emit({type:"removedAll"}))}}))},i.prototype.startUpload=function(e){var t=this;return new n.Observable((function(n){var i=t.uploadFile(e.file,e.event).pipe(r.finalize((function(){n.closed||n.complete()}))).subscribe((function(e){n.next(e)}),(function(e){n.error(e),n.complete()}),(function(){n.complete()}));t.subs.push({id:e.file.id,sub:i})}))},i.prototype.uploadFile=function(t,r){var i=this;return new n.Observable((function(n){var o=r.url||"",u=r.method||"POST",a=r.data||{},p=r.headers||{},l=new XMLHttpRequest,d=(new Date).getTime(),c=t.progress.data&&t.progress.data.startTime||d,f=0,h=null;l.upload.addEventListener("progress",(function(r){if(r.lengthComputable){var o=Math.round(100*r.loaded/r.total),u=(new Date).getTime()-d;f=Math.round(r.loaded/u*1e3),c=t.progress.data&&t.progress.data.startTime||(new Date).getTime(),h=Math.ceil((r.total-r.loaded)/f),t.progress={status:e.UploadStatus.Uploading,data:{percentage:o,speed:f,speedHuman:s(f)+"/s",startTime:c,endTime:null,eta:h,etaHuman:i.secondsToHuman(h)}},n.next({type:"uploading",file:t})}}),!1),l.upload.addEventListener("error",(function(e){n.error(e),n.complete()})),l.onreadystatechange=function(){if(l.readyState===XMLHttpRequest.DONE){var r=Math.round(t.size/((new Date).getTime()-c)*1e3);t.progress={status:e.UploadStatus.Done,data:{percentage:100,speed:r,speedHuman:s(r)+"/s",startTime:c,endTime:(new Date).getTime(),eta:h,etaHuman:i.secondsToHuman(h||0)}},t.responseStatus=l.status;try{t.response=JSON.parse(l.response)}catch(e){t.response=l.response}t.responseHeaders=i.parseResponseHeaders(l.getAllResponseHeaders()),n.next({type:"done",file:t}),n.complete()}},l.open(u,o,!0),l.withCredentials=!!r.withCredentials;try{var v=t.nativeFile,m=i.queue.findIndex((function(e){return e.nativeFile===v}));i.queue[m].progress.status===e.UploadStatus.Cancelled&&n.complete(),Object.keys(p).forEach((function(e){return l.setRequestHeader(e,p[e])}));var y=void 0;!1!==r.includeWebKitFormBoundary?(Object.keys(a).forEach((function(e){return t.form.append(e,a[e])})),t.form.append(r.fieldName||"file",v,v.name),y=t.form):y=v,i.serviceEvents.emit({type:"start",file:t}),l.send(y)}catch(e){n.complete()}return function(){l.abort()}}))},i.prototype.secondsToHuman=function(e){return new Date(1e3*e).toISOString().substr(11,8)},i.prototype.generateId=function(){return Math.random().toString(36).substring(7)},i.prototype.setContentTypes=function(e){void 0!==e&&e instanceof Array?void 0!==e.find((function(e){return"*"===e}))?this.contentTypes=["*"]:this.contentTypes=e:this.contentTypes=["*"]},i.prototype.allContentTypesAllowed=function(){return void 0!==this.contentTypes.find((function(e){return"*"===e}))},i.prototype.isContentTypeAllowed=function(e){return!!this.allContentTypesAllowed()||void 0!==this.contentTypes.find((function(t){return t===e}))},i.prototype.isFileSizeAllowed=function(e){return!this.maxFileSize||e<=this.maxFileSize},i.prototype.makeUploadFile=function(t,n){return{fileIndex:n,id:this.generateId(),name:t.name,size:t.size,type:t.type,form:new FormData,progress:{status:e.UploadStatus.Queue,data:{percentage:0,speed:0,speedHuman:s(0)+"/s",startTime:null,endTime:null,eta:null,etaHuman:null}},lastModifiedDate:new Date(t.lastModified),sub:void 0,nativeFile:t}},i.prototype.parseResponseHeaders=function(e){if(e)return e.split("\n").map((function(e){return e.split(/: */,2)})).filter((function(e){return e[0]})).reduce((function(e,t){return e[t[0]]=t[1],e}),{})},i}(),a=function(){function e(e){this.elementRef=e,this.stopEvent=function(e){e.stopPropagation(),e.preventDefault()},this.uploadOutput=new t.EventEmitter}return e.prototype.ngOnInit=function(){var e=this;this._sub=[];var n=this.options&&this.options.concurrency||Number.POSITIVE_INFINITY,r=this.options&&this.options.allowedContentTypes||["*"],i=this.options&&this.options.maxUploads||Number.POSITIVE_INFINITY,o=this.options&&this.options.maxFileSize||Number.POSITIVE_INFINITY;this.upload=new u(n,r,i,o),this.el=this.elementRef.nativeElement,this._sub.push(this.upload.serviceEvents.subscribe((function(t){e.uploadOutput.emit(t)}))),this.uploadInput instanceof t.EventEmitter&&this._sub.push(this.upload.initInputEvents(this.uploadInput)),this.el.addEventListener("drop",this.stopEvent,!1),this.el.addEventListener("dragenter",this.stopEvent,!1),this.el.addEventListener("dragover",this.stopEvent,!1)},e.prototype.ngOnDestroy=function(){this._sub.forEach((function(e){return e.unsubscribe()}))},e.prototype.onDrop=function(e){e.stopPropagation(),e.preventDefault();this.uploadOutput.emit({type:"drop"}),this.upload.handleFiles(e.dataTransfer.files)},e.prototype.onDragOver=function(e){if(e){this.uploadOutput.emit({type:"dragOver"})}},e.prototype.onDragLeave=function(e){if(e){this.uploadOutput.emit({type:"dragOut"})}},e}();a.decorators=[{type:t.Directive,args:[{selector:"[ngFileDrop]"}]}],a.ctorParameters=function(){return[{type:t.ElementRef}]},a.propDecorators={options:[{type:t.Input}],uploadInput:[{type:t.Input}],uploadOutput:[{type:t.Output}],onDrop:[{type:t.HostListener,args:["drop",["$event"]]}],onDragOver:[{type:t.HostListener,args:["dragover",["$event"]]}],onDragLeave:[{type:t.HostListener,args:["dragleave",["$event"]]}]};var p=function(){function e(e){var n=this;this.elementRef=e,this.fileListener=function(){n.el.files&&n.upload.handleFiles(n.el.files)},this.uploadOutput=new t.EventEmitter}return e.prototype.ngOnInit=function(){var e=this;this._sub=[];var n=this.options&&this.options.concurrency||Number.POSITIVE_INFINITY,r=this.options&&this.options.allowedContentTypes||["*"],i=this.options&&this.options.maxUploads||Number.POSITIVE_INFINITY,o=this.options&&this.options.maxFileSize||Number.POSITIVE_INFINITY;this.upload=new u(n,r,i,o),this.el=this.elementRef.nativeElement,this.el.addEventListener("change",this.fileListener,!1),this._sub.push(this.upload.serviceEvents.subscribe((function(t){e.uploadOutput.emit(t)}))),this.uploadInput instanceof t.EventEmitter&&this._sub.push(this.upload.initInputEvents(this.uploadInput))},e.prototype.ngOnDestroy=function(){this.el&&(this.el.removeEventListener("change",this.fileListener,!1),this._sub.forEach((function(e){return e.unsubscribe()})))},e}();p.decorators=[{type:t.Directive,args:[{selector:"[ngFileSelect]"}]}],p.ctorParameters=function(){return[{type:t.ElementRef}]},p.propDecorators={options:[{type:t.Input}],uploadInput:[{type:t.Input}],uploadOutput:[{type:t.Output}]};var l=function(){};l.decorators=[{type:t.NgModule,args:[{declarations:[a,p],exports:[a,p]}]}],e.NgFileDropDirective=a,e.NgFileSelectDirective=p,e.NgUploaderService=u,e.NgxUploaderModule=l,e.humanizeBytes=s,Object.defineProperty(e,"__esModule",{value:!0})}));
2//# sourceMappingURL=ngx-uploader.umd.min.js.map
\No newline at end of file