!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("rxjs"),require("@angular/core"),require("@angular/common")):"function"==typeof define&&define.amd?define("@bastienmoulia/ngx-file-drop",["exports","rxjs","@angular/core","@angular/common"],t):t((e.bastienmoulia=e.bastienmoulia||{},e.bastienmoulia["ngx-file-drop"]={}),e.rxjs,e.ng.core,e.ng.common)}(this,function(e,r,i,t){"use strict";var p=function d(e,t){this.relativePath=e,this.fileEntry=t},l=function u(e){this.files=e},n=(Object.defineProperty(o.prototype,"disabled",{get:function(){return this._disabled},set:function(e){this._disabled=null!=e&&""+e!="false"},enumerable:!0,configurable:!0}),o.prototype.ngOnDestroy=function(){this.dropEventTimerSubscription&&(this.dropEventTimerSubscription.unsubscribe(),this.dropEventTimerSubscription=null),this.globalDragStartListener(),this.globalDragEndListener(),this.files=[],this.helperFormEl=null,this.fileInputPlaceholderEl=null},o.prototype.onDragOver=function(e){this.isDropzoneDisabled()||(this.isDraggingOverDropZone||(this.isDraggingOverDropZone=!0,this.onFileOver.emit(e)),this.preventAndStop(e))},o.prototype.onDragLeave=function(e){this.isDropzoneDisabled()||(this.isDraggingOverDropZone&&(this.isDraggingOverDropZone=!1,this.onFileLeave.emit(e)),this.preventAndStop(e))},o.prototype.dropFiles=function(e){if(!this.isDropzoneDisabled()&&(this.isDraggingOverDropZone=!1,e.dataTransfer)){e.dataTransfer.dropEffect="copy";var t=void 0;t=e.dataTransfer.items?e.dataTransfer.items:e.dataTransfer.files,this.preventAndStop(e),this.checkFiles(t)}},o.prototype.onBrowseButtonClick=function(e){this.fileSelector&&this.fileSelector.nativeElement&&this.fileSelector.nativeElement.click()},o.prototype.uploadFiles=function(e){if(!this.isDropzoneDisabled()&&e.target){var t=e.target.files||[];this.checkFiles(t),this.resetFileInput()}},o.prototype.checkFiles=function(o){for(var e=this,t=function(e){var t=o[e],n=null;if(s.canGetAsEntry(t)&&(n=t.webkitGetAsEntry()),n)n.isFile?(i=new p(n.name,n),s.addToQueue(i)):n.isDirectory&&s.traverseFileTree(n,n.name);else if(t){var r={name:t.name,isDirectory:!1,isFile:!0,file:function(e){e(t)}},i=new p(r.name,r);s.addToQueue(i)}},s=this,n=0;n<o.length;n++)t(n);this.dropEventTimerSubscription&&this.dropEventTimerSubscription.unsubscribe(),this.dropEventTimerSubscription=r.timer(200,200).subscribe(function(){0<e.files.length&&0===e.numOfActiveReadEntries&&(e.onFileDrop.emit(new l(e.files)),e.files=[])})},o.prototype.traverseFileTree=function(i,o){var s=this;if(i.isFile){var e=new p(o,i);this.files.push(e)}else{o+="/";var t=i.createReader(),l=[],a=function(){s.numOfActiveReadEntries++,t.readEntries(function(e){if(e.length)l=l.concat(e),a();else if(0===l.length){var t=new p(o,i);s.zone.run(function(){s.addToQueue(t)})}else for(var n=function(e){s.zone.run(function(){s.traverseFileTree(l[e],o+l[e].name)})},r=0;r<l.length;r++)n(r);s.numOfActiveReadEntries--})};a()}},o.prototype.resetFileInput=function(){if(this.fileSelector&&this.fileSelector.nativeElement){var e=this.fileSelector.nativeElement,t=e.parentElement,n=this.getHelperFormElement(),r=this.getFileInputPlaceholderElement();t!==n&&(this.renderer.insertBefore(t,r,e),this.renderer.appendChild(n,e),n.reset(),this.renderer.insertBefore(t,e,r),this.renderer.removeChild(t,r))}},o.prototype.getHelperFormElement=function(){return this.helperFormEl||(this.helperFormEl=this.renderer.createElement("form")),this.helperFormEl},o.prototype.getFileInputPlaceholderElement=function(){return this.fileInputPlaceholderEl||(this.fileInputPlaceholderEl=this.renderer.createElement("div")),this.fileInputPlaceholderEl},o.prototype.canGetAsEntry=function(e){return!!e.webkitGetAsEntry},o.prototype.isDropzoneDisabled=function(){return this.globalDraggingInProgress||this.disabled},o.prototype.addToQueue=function(e){this.files.push(e)},o.prototype.preventAndStop=function(e){e.stopPropagation(),e.preventDefault()},o.decorators=[{type:i.Component,args:[{selector:"file-drop",template:'<div [className]="dropZoneClassName"\n     [class.ngx-file-drop__drop-zone--over]="isDraggingOverDropZone"\n     (drop)="dropFiles($event)"\n     (dragover)="onDragOver($event)"\n     (dragleave)="onDragLeave($event)">\n    <div [className]="contentClassName">\n        <ng-content></ng-content>\n        <div *ngIf="dropZoneLabel" class="ngx-file-drop__drop-zone-label">{{dropZoneLabel}}</div>\n        <input type="file" #fileSelector [accept]="accept" (change)="uploadFiles($event)" [multiple]="multiple" class="ngx-file-drop__file-input" />\n        <div *ngIf="showBrowseBtn">\n            <input type="button" [className]="browseBtnClassName" value="{{browseBtnLabel}}" (click)="onBrowseButtonClick($event)" />\n        </div>\n    </div>\n</div>\n',styles:[".ngx-file-drop__drop-zone{height:100px;margin:auto;border:2px dotted #0782d0;border-radius:30px}.ngx-file-drop__drop-zone--over{background-color:rgba(147,147,147,.5)}.ngx-file-drop__content{display:flex;align-items:center;justify-content:center;height:100px;color:#0782d0}.ngx-file-drop__drop-zone-label{text-align:center}.ngx-file-drop__file-input{display:none}"]}]}],o.ctorParameters=function(){return[{type:i.NgZone},{type:i.Renderer2}]},o.propDecorators={accept:[{type:i.Input}],multiple:[{type:i.Input}],dropZoneLabel:[{type:i.Input}],dropZoneClassName:[{type:i.Input}],contentClassName:[{type:i.Input}],disabled:[{type:i.Input}],showBrowseBtn:[{type:i.Input}],browseBtnClassName:[{type:i.Input}],browseBtnLabel:[{type:i.Input}],onFileDrop:[{type:i.Output}],onFileOver:[{type:i.Output}],onFileLeave:[{type:i.Output}],fileSelector:[{type:i.ViewChild,args:["fileSelector"]}]},o);function o(e,t){var n=this;this.zone=e,this.renderer=t,this.accept="*",this.multiple=!0,this.dropZoneLabel="",this.dropZoneClassName="ngx-file-drop__drop-zone",this.contentClassName="ngx-file-drop__content",this.showBrowseBtn=!1,this.browseBtnClassName="btn btn-primary btn-xs ngx-file-drop__browse-btn",this.browseBtnLabel="Browse files",this.onFileDrop=new i.EventEmitter,this.onFileOver=new i.EventEmitter,this.onFileLeave=new i.EventEmitter,this.isDraggingOverDropZone=!1,this.globalDraggingInProgress=!1,this.files=[],this.numOfActiveReadEntries=0,this.helperFormEl=null,this.fileInputPlaceholderEl=null,this.dropEventTimerSubscription=null,this._disabled=!1,this.globalDragStartListener=this.renderer.listen("document","dragstart",function(e){n.globalDraggingInProgress=!0}),this.globalDragEndListener=this.renderer.listen("document","dragend",function(e){n.globalDraggingInProgress=!1})}var s=(a.decorators=[{type:i.NgModule,args:[{declarations:[n],exports:[n],imports:[t.CommonModule],providers:[],bootstrap:[n]}]}],a);function a(){}e.FileComponent=n,e.FileDropModule=s,e.UploadFile=p,e.UploadEvent=l,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=bastienmoulia-ngx-file-drop.umd.min.js.map