diff --git a/node_modules/ngx-file-drop/esm2022/lib/dom.types.mjs b/node_modules/ngx-file-drop/esm2022/lib/dom.types.mjs
index 825469b..85bdc89 100644
--- a/node_modules/ngx-file-drop/esm2022/lib/dom.types.mjs
+++ b/node_modules/ngx-file-drop/esm2022/lib/dom.types.mjs
@@ -1,2 +1,4 @@
-export {};
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZpbGUtZHJvcC9zcmMvbGliL2RvbS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVN5c3RlbUVudHJ5IHtcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgaXNEaXJlY3Rvcnk6IGJvb2xlYW5cclxuICBpc0ZpbGU6IGJvb2xlYW5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWxlU3lzdGVtRW50cnlNZXRhZGF0YSB7XHJcbiAgbW9kaWZpY2F0aW9uVGltZT86IERhdGUsXHJcbiAgc2l6ZT86IG51bWJlclxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIge1xyXG4gIHJlYWRFbnRyaWVzKFxyXG4gICAgc3VjY2Vzc0NhbGxiYWNrOiAocmVzdWx0OiBGaWxlU3lzdGVtRW50cnlbXSkgPT4gdm9pZCxcclxuICApOiB2b2lkXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVN5c3RlbUZsYWdzIHtcclxuICBjcmVhdGU/OiBib29sZWFuXHJcbiAgZXhjbHVzaXZlPzogYm9vbGVhblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSBleHRlbmRzIEZpbGVTeXN0ZW1FbnRyeSB7XHJcbiAgaXNEaXJlY3Rvcnk6IHRydWVcclxuICBpc0ZpbGU6IGZhbHNlXHJcbiAgY3JlYXRlUmVhZGVyKCk6IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXJcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWxlU3lzdGVtRmlsZUVudHJ5IGV4dGVuZHMgRmlsZVN5c3RlbUVudHJ5IHtcclxuICBpc0RpcmVjdG9yeTogZmFsc2VcclxuICBpc0ZpbGU6IHRydWVcclxuICBmaWxlPFQ+KGNhbGxiYWNrOiAoZmlsZTogRmlsZSkgPT4gVCk6IFRcclxufVxyXG4iXX0=
\ No newline at end of file
+export function isDataTransferItem(item) {
+    return "webkitGetAsEntry" in item && "getAsFile" in item;
+}
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZpbGUtZHJvcC9zcmMvbGliL2RvbS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQ0EsTUFBTSxVQUFVLGtCQUFrQixDQUFDLElBQTZCO0lBQzlELE9BQU8sa0JBQWtCLElBQUksSUFBSSxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUM7QUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGludGVyZmFjZSBGaWxlU3lzdGVtRW50cnkge1xuICBuYW1lOiBzdHJpbmcsXG4gIGlzRGlyZWN0b3J5OiBib29sZWFuXG4gIGlzRmlsZTogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVTeXN0ZW1FbnRyeU1ldGFkYXRhIHtcbiAgbW9kaWZpY2F0aW9uVGltZT86IERhdGUsXG4gIHNpemU/OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyIHtcbiAgcmVhZEVudHJpZXMoXG4gICAgc3VjY2Vzc0NhbGxiYWNrOiAocmVzdWx0OiBGaWxlU3lzdGVtRW50cnlbXSkgPT4gdm9pZCxcbiAgKTogdm9pZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVTeXN0ZW1GbGFncyB7XG4gIGNyZWF0ZT86IGJvb2xlYW5cbiAgZXhjbHVzaXZlPzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSBleHRlbmRzIEZpbGVTeXN0ZW1FbnRyeSB7XG4gIGlzRGlyZWN0b3J5OiB0cnVlXG4gIGlzRmlsZTogZmFsc2VcbiAgY3JlYXRlUmVhZGVyKCk6IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlU3lzdGVtRmlsZUVudHJ5IGV4dGVuZHMgRmlsZVN5c3RlbUVudHJ5IHtcbiAgaXNEaXJlY3Rvcnk6IGZhbHNlXG4gIGlzRmlsZTogdHJ1ZVxuICBmaWxlPFQ+KGNhbGxiYWNrOiAoZmlsZTogRmlsZSkgPT4gVCk6IFRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0YVRyYW5zZmVySXRlbShpdGVtOiBEYXRhVHJhbnNmZXJJdGVtIHwgRmlsZSk6IGl0ZW0gaXMgRGF0YVRyYW5zZmVySXRlbSB7XG4gIHJldHVybiBcIndlYmtpdEdldEFzRW50cnlcIiBpbiBpdGVtICYmIFwiZ2V0QXNGaWxlXCIgaW4gaXRlbTtcbn1cbiJdfQ==
\ No newline at end of file
diff --git a/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop-entry.mjs b/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop-entry.mjs
index 2cd97e8..c89ace2 100644
--- a/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop-entry.mjs
+++ b/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop-entry.mjs
@@ -9,4 +9,4 @@ export class NgxFileDropEntry {
         this.fileEntry = fileEntry;
     }
 }
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZpbGUtZHJvcC1lbnRyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1maWxlLWRyb3Avc3JjL2xpYi9uZ3gtZmlsZS1kcm9wLWVudHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCLFlBQ1csWUFBb0IsRUFDcEIsU0FBMEI7UUFEMUIsaUJBQVksR0FBWixZQUFZLENBQVE7UUFDcEIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7SUFFckMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsZVN5c3RlbUVudHJ5LCBGaWxlU3lzdGVtRmlsZUVudHJ5LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkgfSBmcm9tICcuL2RvbS50eXBlcyc7XHJcblxyXG4vKipcclxuICogZmlsZUVudHJ5IGlzIGFuIGluc3RhbmNlIG9mIHtAbGluayBGaWxlU3lzdGVtRmlsZUVudHJ5fSBvciB7QGxpbmsgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5fS5cclxuICogV2hpY2ggb25lIGlzIGl0IGNhbiBiZSBjaGVja2VkIHVzaW5nIHtAbGluayBGaWxlU3lzdGVtRW50cnkuaXNGaWxlfSBvciB7QGxpbmsgRmlsZVN5c3RlbUVudHJ5LmlzRGlyZWN0b3J5fVxyXG4gKiBwcm9wZXJ0aWVzIG9mIHRoZSBnaXZlbiB7QGxpbmsgRmlsZVN5c3RlbUVudHJ5fS5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBOZ3hGaWxlRHJvcEVudHJ5IHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyByZWxhdGl2ZVBhdGg6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgZmlsZUVudHJ5OiBGaWxlU3lzdGVtRW50cnlcclxuICAgICkge1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZpbGUtZHJvcC1lbnRyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1maWxlLWRyb3Avc3JjL2xpYi9uZ3gtZmlsZS1kcm9wLWVudHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCLFlBQ1csWUFBb0IsRUFDcEIsU0FBMEI7UUFEMUIsaUJBQVksR0FBWixZQUFZLENBQVE7UUFDcEIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7SUFFckMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsZVN5c3RlbUVudHJ5LCBGaWxlU3lzdGVtRmlsZUVudHJ5LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkgfSBmcm9tICcuL2RvbS50eXBlcyc7XG5cbi8qKlxuICogZmlsZUVudHJ5IGlzIGFuIGluc3RhbmNlIG9mIHtAbGluayBGaWxlU3lzdGVtRmlsZUVudHJ5fSBvciB7QGxpbmsgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5fS5cbiAqIFdoaWNoIG9uZSBpcyBpdCBjYW4gYmUgY2hlY2tlZCB1c2luZyB7QGxpbmsgRmlsZVN5c3RlbUVudHJ5LmlzRmlsZX0gb3Ige0BsaW5rIEZpbGVTeXN0ZW1FbnRyeS5pc0RpcmVjdG9yeX1cbiAqIHByb3BlcnRpZXMgb2YgdGhlIGdpdmVuIHtAbGluayBGaWxlU3lzdGVtRW50cnl9LlxuICovXG5leHBvcnQgY2xhc3MgTmd4RmlsZURyb3BFbnRyeSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWxhdGl2ZVBhdGg6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGZpbGVFbnRyeTogRmlsZVN5c3RlbUVudHJ5XG4gICAgKSB7XG4gICAgfVxufVxuIl19
\ No newline at end of file
diff --git a/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop.component.mjs b/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop.component.mjs
index 7ef2b4b..c180621 100644
--- a/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop.component.mjs
+++ b/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop.component.mjs
@@ -1,6 +1,7 @@
 import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef, ViewChild } from '@angular/core';
 import { timer } from 'rxjs';
 import { NgxFileDropEntry } from './ngx-file-drop-entry';
+import { isDataTransferItem } from './dom.types';
 import { NgxFileDropContentTemplateDirective } from './ngx-templates.directive';
 import * as i0 from "@angular/core";
 import * as i1 from "@angular/common";
@@ -134,17 +135,8 @@ export class NgxFileDropComponent {
         if (!item) {
             return;
         }
-        // if ("getAsFile" in item) {
-        //   const file = item.getAsFile();
-        //   if (file) {
-        //     this.addToQueue(
-        //       this.getFakeDropEntry(file)
-        //     );
-        //     return;
-        //   }
-        // }
-        if ("webkitGetAsEntry" in item) {
-            let entry = item.webkitGetAsEntry();
+        if (isDataTransferItem(item)) {
+            const entry = item.webkitGetAsEntry();
             if (entry) {
                 if (entry.isFile) {
                     const toUpload = new NgxFileDropEntry(entry.name, entry);
@@ -155,6 +147,11 @@ export class NgxFileDropComponent {
                 }
                 return;
             }
+            const file = item.getAsFile();
+            if (file) {
+                this.addToQueue(this.getFakeDropEntry(file));
+            }
+            return;
         }
         this.addToQueue(this.getFakeDropEntry(item));
     }
@@ -266,11 +263,11 @@ export class NgxFileDropComponent {
         event.preventDefault();
     }
     static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: NgxFileDropComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
-    static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: NgxFileDropComponent, selector: "ngx-file-drop", inputs: { accept: "accept", directory: "directory", multiple: "multiple", dropZoneLabel: "dropZoneLabel", dropZoneClassName: "dropZoneClassName", useDragEnter: "useDragEnter", contentClassName: "contentClassName", showBrowseBtn: "showBrowseBtn", browseBtnClassName: "browseBtnClassName", browseBtnLabel: "browseBtnLabel", disabled: "disabled" }, outputs: { onFileDrop: "onFileDrop", onFileOver: "onFileOver", onFileLeave: "onFileLeave" }, queries: [{ propertyName: "contentTemplate", first: true, predicate: NgxFileDropContentTemplateDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "fileSelector", first: true, predicate: ["fileSelector"], descendants: true, static: true }], ngImport: i0, template: "<div [className]=\"dropZoneClassName\"\r\n     [class.ngx-file-drop__drop-zone--over]=\"isDraggingOverDropZone\"\r\n     (drop)=\"dropFiles($event)\"\r\n     (dragover)=\"onDragOver($event)\"\r\n     (dragenter)=\"onDragEnter($event)\"\r\n     (dragleave)=\"onDragLeave($event)\">\r\n  <div [className]=\"contentClassName\">\r\n    <input \r\n      type=\"file\" \r\n      #fileSelector \r\n      [accept]=\"accept\" \r\n      [attr.directory]=\"directory || undefined\" \r\n      [attr.webkitdirectory]=\"directory || undefined\"\r\n      [attr.mozdirectory]=\"directory || undefined\"\r\n      [attr.msdirectory]=\"directory || undefined\"\r\n      [attr.odirectory]=\"directory || undefined\"\r\n      [multiple]=\"multiple\"\r\n      (change)=\"uploadFiles($event)\" \r\n      class=\"ngx-file-drop__file-input\" \r\n    />\r\n\r\n    <ng-template #defaultContentTemplate>\r\n      <div *ngIf=\"dropZoneLabel\" class=\"ngx-file-drop__drop-zone-label\">{{dropZoneLabel}}</div>\r\n      <div *ngIf=\"showBrowseBtn\">\r\n        <input type=\"button\" [className]=\"browseBtnClassName\" value=\"{{browseBtnLabel}}\" (click)=\"openFileSelector($event)\" />\r\n      </div>\r\n    </ng-template>\r\n\r\n    <ng-template\r\n      [ngTemplateOutlet]=\"contentTemplate || defaultContentTemplate\"\r\n      [ngTemplateOutletContext]=\"{ openFileSelector: openFileSelector }\">\r\n    </ng-template>\r\n  </div>\r\n</div>\r\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:#93939380}.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}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
+    static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: NgxFileDropComponent, selector: "ngx-file-drop", inputs: { accept: "accept", directory: "directory", multiple: "multiple", dropZoneLabel: "dropZoneLabel", dropZoneClassName: "dropZoneClassName", useDragEnter: "useDragEnter", contentClassName: "contentClassName", showBrowseBtn: "showBrowseBtn", browseBtnClassName: "browseBtnClassName", browseBtnLabel: "browseBtnLabel", disabled: "disabled" }, outputs: { onFileDrop: "onFileDrop", onFileOver: "onFileOver", onFileLeave: "onFileLeave" }, queries: [{ propertyName: "contentTemplate", first: true, predicate: NgxFileDropContentTemplateDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "fileSelector", first: true, predicate: ["fileSelector"], descendants: true, static: true }], ngImport: i0, template: "<div [className]=\"dropZoneClassName\"\n     [class.ngx-file-drop__drop-zone--over]=\"isDraggingOverDropZone\"\n     (drop)=\"dropFiles($event)\"\n     (dragover)=\"onDragOver($event)\"\n     (dragenter)=\"onDragEnter($event)\"\n     (dragleave)=\"onDragLeave($event)\">\n  <div [className]=\"contentClassName\">\n    <input \n      type=\"file\" \n      #fileSelector \n      [accept]=\"accept\" \n      [attr.directory]=\"directory || undefined\" \n      [attr.webkitdirectory]=\"directory || undefined\"\n      [attr.mozdirectory]=\"directory || undefined\"\n      [attr.msdirectory]=\"directory || undefined\"\n      [attr.odirectory]=\"directory || undefined\"\n      [multiple]=\"multiple\"\n      (change)=\"uploadFiles($event)\" \n      class=\"ngx-file-drop__file-input\" \n    />\n\n    <ng-template #defaultContentTemplate>\n      <div *ngIf=\"dropZoneLabel\" class=\"ngx-file-drop__drop-zone-label\">{{dropZoneLabel}}</div>\n      <div *ngIf=\"showBrowseBtn\">\n        <input type=\"button\" [className]=\"browseBtnClassName\" value=\"{{browseBtnLabel}}\" (click)=\"openFileSelector($event)\" />\n      </div>\n    </ng-template>\n\n    <ng-template\n      [ngTemplateOutlet]=\"contentTemplate || defaultContentTemplate\"\n      [ngTemplateOutletContext]=\"{ openFileSelector: openFileSelector }\">\n    </ng-template>\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:#93939380}.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}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
 }
 i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: NgxFileDropComponent, decorators: [{
             type: Component,
-            args: [{ selector: 'ngx-file-drop', template: "<div [className]=\"dropZoneClassName\"\r\n     [class.ngx-file-drop__drop-zone--over]=\"isDraggingOverDropZone\"\r\n     (drop)=\"dropFiles($event)\"\r\n     (dragover)=\"onDragOver($event)\"\r\n     (dragenter)=\"onDragEnter($event)\"\r\n     (dragleave)=\"onDragLeave($event)\">\r\n  <div [className]=\"contentClassName\">\r\n    <input \r\n      type=\"file\" \r\n      #fileSelector \r\n      [accept]=\"accept\" \r\n      [attr.directory]=\"directory || undefined\" \r\n      [attr.webkitdirectory]=\"directory || undefined\"\r\n      [attr.mozdirectory]=\"directory || undefined\"\r\n      [attr.msdirectory]=\"directory || undefined\"\r\n      [attr.odirectory]=\"directory || undefined\"\r\n      [multiple]=\"multiple\"\r\n      (change)=\"uploadFiles($event)\" \r\n      class=\"ngx-file-drop__file-input\" \r\n    />\r\n\r\n    <ng-template #defaultContentTemplate>\r\n      <div *ngIf=\"dropZoneLabel\" class=\"ngx-file-drop__drop-zone-label\">{{dropZoneLabel}}</div>\r\n      <div *ngIf=\"showBrowseBtn\">\r\n        <input type=\"button\" [className]=\"browseBtnClassName\" value=\"{{browseBtnLabel}}\" (click)=\"openFileSelector($event)\" />\r\n      </div>\r\n    </ng-template>\r\n\r\n    <ng-template\r\n      [ngTemplateOutlet]=\"contentTemplate || defaultContentTemplate\"\r\n      [ngTemplateOutletContext]=\"{ openFileSelector: openFileSelector }\">\r\n    </ng-template>\r\n  </div>\r\n</div>\r\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:#93939380}.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}\n"] }]
+            args: [{ selector: 'ngx-file-drop', template: "<div [className]=\"dropZoneClassName\"\n     [class.ngx-file-drop__drop-zone--over]=\"isDraggingOverDropZone\"\n     (drop)=\"dropFiles($event)\"\n     (dragover)=\"onDragOver($event)\"\n     (dragenter)=\"onDragEnter($event)\"\n     (dragleave)=\"onDragLeave($event)\">\n  <div [className]=\"contentClassName\">\n    <input \n      type=\"file\" \n      #fileSelector \n      [accept]=\"accept\" \n      [attr.directory]=\"directory || undefined\" \n      [attr.webkitdirectory]=\"directory || undefined\"\n      [attr.mozdirectory]=\"directory || undefined\"\n      [attr.msdirectory]=\"directory || undefined\"\n      [attr.odirectory]=\"directory || undefined\"\n      [multiple]=\"multiple\"\n      (change)=\"uploadFiles($event)\" \n      class=\"ngx-file-drop__file-input\" \n    />\n\n    <ng-template #defaultContentTemplate>\n      <div *ngIf=\"dropZoneLabel\" class=\"ngx-file-drop__drop-zone-label\">{{dropZoneLabel}}</div>\n      <div *ngIf=\"showBrowseBtn\">\n        <input type=\"button\" [className]=\"browseBtnClassName\" value=\"{{browseBtnLabel}}\" (click)=\"openFileSelector($event)\" />\n      </div>\n    </ng-template>\n\n    <ng-template\n      [ngTemplateOutlet]=\"contentTemplate || defaultContentTemplate\"\n      [ngTemplateOutletContext]=\"{ openFileSelector: openFileSelector }\">\n    </ng-template>\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:#93939380}.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}\n"] }]
         }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { accept: [{
                 type: Input
             }], directory: [{
@@ -306,4 +303,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor
             }], disabled: [{
                 type: Input
             }] } });
-//# sourceMappingURL=data:application/json;base64,[encoded data, 28624 characters]
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,[encoded data, 27608 characters]
\ No newline at end of file
diff --git a/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop.module.mjs b/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop.module.mjs
index 20a8d2d..7023af4 100644
--- a/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop.module.mjs
+++ b/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop.module.mjs
@@ -30,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor
                     ],
                 }]
         }] });
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZpbGUtZHJvcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlsZS1kcm9wL3NyYy9saWIvbmd4LWZpbGUtZHJvcC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBbUJoRixNQUFNLE9BQU8saUJBQWlCOzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixjQUgxQixvQkFBb0Isa0JBWnBCLG9CQUFvQjtZQUNwQixtQ0FBbUMsYUFHbkMsWUFBWSxhQUdaLG9CQUFvQjtZQUNwQixtQ0FBbUM7K0dBTzFCLGlCQUFpQixZQVgxQixZQUFZOzsyRkFXSCxpQkFBaUI7a0JBakI3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixvQkFBb0I7d0JBQ3BCLG1DQUFtQztxQkFDcEM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG9CQUFvQjt3QkFDcEIsbUNBQW1DO3FCQUNwQztvQkFDRCxTQUFTLEVBQUUsRUFBRTtvQkFDYixTQUFTLEVBQUU7d0JBQ1Qsb0JBQW9CO3FCQUNyQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5neEZpbGVEcm9wQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtZmlsZS1kcm9wLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5neEZpbGVEcm9wQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9uZ3gtdGVtcGxhdGVzLmRpcmVjdGl2ZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgTmd4RmlsZURyb3BDb21wb25lbnQsXHJcbiAgICBOZ3hGaWxlRHJvcENvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgTmd4RmlsZURyb3BDb21wb25lbnQsXHJcbiAgICBOZ3hGaWxlRHJvcENvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW10sXHJcbiAgYm9vdHN0cmFwOiBbXHJcbiAgICBOZ3hGaWxlRHJvcENvbXBvbmVudFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hGaWxlRHJvcE1vZHVsZSB7fVxyXG4iXX0=
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZpbGUtZHJvcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlsZS1kcm9wL3NyYy9saWIvbmd4LWZpbGUtZHJvcC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBbUJoRixNQUFNLE9BQU8saUJBQWlCOzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixjQUgxQixvQkFBb0Isa0JBWnBCLG9CQUFvQjtZQUNwQixtQ0FBbUMsYUFHbkMsWUFBWSxhQUdaLG9CQUFvQjtZQUNwQixtQ0FBbUM7K0dBTzFCLGlCQUFpQixZQVgxQixZQUFZOzsyRkFXSCxpQkFBaUI7a0JBakI3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixvQkFBb0I7d0JBQ3BCLG1DQUFtQztxQkFDcEM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG9CQUFvQjt3QkFDcEIsbUNBQW1DO3FCQUNwQztvQkFDRCxTQUFTLEVBQUUsRUFBRTtvQkFDYixTQUFTLEVBQUU7d0JBQ1Qsb0JBQW9CO3FCQUNyQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmd4RmlsZURyb3BDb21wb25lbnQgfSBmcm9tICcuL25neC1maWxlLWRyb3AuY29tcG9uZW50JztcbmltcG9ydCB7IE5neEZpbGVEcm9wQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9uZ3gtdGVtcGxhdGVzLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIE5neEZpbGVEcm9wQ29tcG9uZW50LFxuICAgIE5neEZpbGVEcm9wQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlLFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBOZ3hGaWxlRHJvcENvbXBvbmVudCxcbiAgICBOZ3hGaWxlRHJvcENvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXSxcbiAgYm9vdHN0cmFwOiBbXG4gICAgTmd4RmlsZURyb3BDb21wb25lbnRcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd4RmlsZURyb3BNb2R1bGUge31cbiJdfQ==
\ No newline at end of file
diff --git a/node_modules/ngx-file-drop/esm2022/lib/ngx-templates.directive.mjs b/node_modules/ngx-file-drop/esm2022/lib/ngx-templates.directive.mjs
index 6690f3c..efc36be 100644
--- a/node_modules/ngx-file-drop/esm2022/lib/ngx-templates.directive.mjs
+++ b/node_modules/ngx-file-drop/esm2022/lib/ngx-templates.directive.mjs
@@ -11,4 +11,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor
             type: Directive,
             args: [{ selector: '[ngx-file-drop-content-tmp]' }]
         }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRlbXBsYXRlcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlsZS1kcm9wL3NyYy9saWIvbmd4LXRlbXBsYXRlcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFHdkQsTUFBTSxPQUFPLG1DQUFtQztJQUM5QyxZQUFtQixRQUEwQjtRQUExQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUFJLENBQUM7OEdBRHZDLG1DQUFtQztrR0FBbkMsbUNBQW1DOzsyRkFBbkMsbUNBQW1DO2tCQUQvQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDZCQUE2QixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW25neC1maWxlLWRyb3AtY29udGVudC10bXBdJyB9KVxyXG5leHBvcnQgY2xhc3MgTmd4RmlsZURyb3BDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PikgeyB9XHJcbn1cclxuIl19
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRlbXBsYXRlcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlsZS1kcm9wL3NyYy9saWIvbmd4LXRlbXBsYXRlcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFHdkQsTUFBTSxPQUFPLG1DQUFtQztJQUM5QyxZQUFtQixRQUEwQjtRQUExQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUFJLENBQUM7OEdBRHZDLG1DQUFtQztrR0FBbkMsbUNBQW1DOzsyRkFBbkMsbUNBQW1DO2tCQUQvQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDZCQUE2QixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbbmd4LWZpbGUtZHJvcC1jb250ZW50LXRtcF0nIH0pXG5leHBvcnQgY2xhc3MgTmd4RmlsZURyb3BDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHsgfVxufVxuIl19
\ No newline at end of file
diff --git a/node_modules/ngx-file-drop/esm2022/public-api.mjs b/node_modules/ngx-file-drop/esm2022/public-api.mjs
index dff97b4..0c806ee 100644
--- a/node_modules/ngx-file-drop/esm2022/public-api.mjs
+++ b/node_modules/ngx-file-drop/esm2022/public-api.mjs
@@ -2,4 +2,4 @@ export { NgxFileDropComponent } from './lib/ngx-file-drop.component';
 export { NgxFileDropModule } from './lib/ngx-file-drop.module';
 export { NgxFileDropEntry } from './lib/ngx-file-drop-entry';
 export { NgxFileDropContentTemplateDirective } from './lib/ngx-templates.directive';
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1maWxlLWRyb3Avc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBOZ3hGaWxlRHJvcENvbXBvbmVudCB9IGZyb20gJy4vbGliL25neC1maWxlLWRyb3AuY29tcG9uZW50JztcclxuZXhwb3J0IHsgTmd4RmlsZURyb3BNb2R1bGUgfSBmcm9tICcuL2xpYi9uZ3gtZmlsZS1kcm9wLm1vZHVsZSc7XHJcbmV4cG9ydCB7IE5neEZpbGVEcm9wRW50cnkgfSBmcm9tICcuL2xpYi9uZ3gtZmlsZS1kcm9wLWVudHJ5JztcclxuZXhwb3J0IHsgRmlsZVN5c3RlbUVudHJ5LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnksIEZpbGVTeXN0ZW1GaWxlRW50cnkgfSBmcm9tICcuL2xpYi9kb20udHlwZXMnO1xyXG5leHBvcnQgeyBOZ3hGaWxlRHJvcENvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vbGliL25neC10ZW1wbGF0ZXMuZGlyZWN0aXZlJztcclxuIl19
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1maWxlLWRyb3Avc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBOZ3hGaWxlRHJvcENvbXBvbmVudCB9IGZyb20gJy4vbGliL25neC1maWxlLWRyb3AuY29tcG9uZW50JztcbmV4cG9ydCB7IE5neEZpbGVEcm9wTW9kdWxlIH0gZnJvbSAnLi9saWIvbmd4LWZpbGUtZHJvcC5tb2R1bGUnO1xuZXhwb3J0IHsgTmd4RmlsZURyb3BFbnRyeSB9IGZyb20gJy4vbGliL25neC1maWxlLWRyb3AtZW50cnknO1xuZXhwb3J0IHsgRmlsZVN5c3RlbUVudHJ5LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnksIEZpbGVTeXN0ZW1GaWxlRW50cnkgfSBmcm9tICcuL2xpYi9kb20udHlwZXMnO1xuZXhwb3J0IHsgTmd4RmlsZURyb3BDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9uZ3gtdGVtcGxhdGVzLmRpcmVjdGl2ZSc7XG4iXX0=
\ No newline at end of file
diff --git a/node_modules/ngx-file-drop/fesm2022/ngx-file-drop.mjs b/node_modules/ngx-file-drop/fesm2022/ngx-file-drop.mjs
index 0cdc4a2..54fd9d8 100644
--- a/node_modules/ngx-file-drop/fesm2022/ngx-file-drop.mjs
+++ b/node_modules/ngx-file-drop/fesm2022/ngx-file-drop.mjs
@@ -16,6 +16,10 @@ class NgxFileDropEntry {
     }
 }

+function isDataTransferItem(item) {
+    return "webkitGetAsEntry" in item && "getAsFile" in item;
+}
+
 class NgxFileDropContentTemplateDirective {
     constructor(template) {
         this.template = template;
@@ -158,17 +162,8 @@ class NgxFileDropComponent {
         if (!item) {
             return;
         }
-        // if ("getAsFile" in item) {
-        //   const file = item.getAsFile();
-        //   if (file) {
-        //     this.addToQueue(
-        //       this.getFakeDropEntry(file)
-        //     );
-        //     return;
-        //   }
-        // }
-        if ("webkitGetAsEntry" in item) {
-            let entry = item.webkitGetAsEntry();
+        if (isDataTransferItem(item)) {
+            const entry = item.webkitGetAsEntry();
             if (entry) {
                 if (entry.isFile) {
                     const toUpload = new NgxFileDropEntry(entry.name, entry);
@@ -179,6 +174,11 @@ class NgxFileDropComponent {
                 }
                 return;
             }
+            const file = item.getAsFile();
+            if (file) {
+                this.addToQueue(this.getFakeDropEntry(file));
+            }
+            return;
         }
         this.addToQueue(this.getFakeDropEntry(item));
     }
@@ -290,11 +290,11 @@ class NgxFileDropComponent {
         event.preventDefault();
     }
     static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: NgxFileDropComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
-    static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: NgxFileDropComponent, selector: "ngx-file-drop", inputs: { accept: "accept", directory: "directory", multiple: "multiple", dropZoneLabel: "dropZoneLabel", dropZoneClassName: "dropZoneClassName", useDragEnter: "useDragEnter", contentClassName: "contentClassName", showBrowseBtn: "showBrowseBtn", browseBtnClassName: "browseBtnClassName", browseBtnLabel: "browseBtnLabel", disabled: "disabled" }, outputs: { onFileDrop: "onFileDrop", onFileOver: "onFileOver", onFileLeave: "onFileLeave" }, queries: [{ propertyName: "contentTemplate", first: true, predicate: NgxFileDropContentTemplateDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "fileSelector", first: true, predicate: ["fileSelector"], descendants: true, static: true }], ngImport: i0, template: "<div [className]=\"dropZoneClassName\"\r\n     [class.ngx-file-drop__drop-zone--over]=\"isDraggingOverDropZone\"\r\n     (drop)=\"dropFiles($event)\"\r\n     (dragover)=\"onDragOver($event)\"\r\n     (dragenter)=\"onDragEnter($event)\"\r\n     (dragleave)=\"onDragLeave($event)\">\r\n  <div [className]=\"contentClassName\">\r\n    <input \r\n      type=\"file\" \r\n      #fileSelector \r\n      [accept]=\"accept\" \r\n      [attr.directory]=\"directory || undefined\" \r\n      [attr.webkitdirectory]=\"directory || undefined\"\r\n      [attr.mozdirectory]=\"directory || undefined\"\r\n      [attr.msdirectory]=\"directory || undefined\"\r\n      [attr.odirectory]=\"directory || undefined\"\r\n      [multiple]=\"multiple\"\r\n      (change)=\"uploadFiles($event)\" \r\n      class=\"ngx-file-drop__file-input\" \r\n    />\r\n\r\n    <ng-template #defaultContentTemplate>\r\n      <div *ngIf=\"dropZoneLabel\" class=\"ngx-file-drop__drop-zone-label\">{{dropZoneLabel}}</div>\r\n      <div *ngIf=\"showBrowseBtn\">\r\n        <input type=\"button\" [className]=\"browseBtnClassName\" value=\"{{browseBtnLabel}}\" (click)=\"openFileSelector($event)\" />\r\n      </div>\r\n    </ng-template>\r\n\r\n    <ng-template\r\n      [ngTemplateOutlet]=\"contentTemplate || defaultContentTemplate\"\r\n      [ngTemplateOutletContext]=\"{ openFileSelector: openFileSelector }\">\r\n    </ng-template>\r\n  </div>\r\n</div>\r\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:#93939380}.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}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
+    static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: NgxFileDropComponent, selector: "ngx-file-drop", inputs: { accept: "accept", directory: "directory", multiple: "multiple", dropZoneLabel: "dropZoneLabel", dropZoneClassName: "dropZoneClassName", useDragEnter: "useDragEnter", contentClassName: "contentClassName", showBrowseBtn: "showBrowseBtn", browseBtnClassName: "browseBtnClassName", browseBtnLabel: "browseBtnLabel", disabled: "disabled" }, outputs: { onFileDrop: "onFileDrop", onFileOver: "onFileOver", onFileLeave: "onFileLeave" }, queries: [{ propertyName: "contentTemplate", first: true, predicate: NgxFileDropContentTemplateDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "fileSelector", first: true, predicate: ["fileSelector"], descendants: true, static: true }], ngImport: i0, template: "<div [className]=\"dropZoneClassName\"\n     [class.ngx-file-drop__drop-zone--over]=\"isDraggingOverDropZone\"\n     (drop)=\"dropFiles($event)\"\n     (dragover)=\"onDragOver($event)\"\n     (dragenter)=\"onDragEnter($event)\"\n     (dragleave)=\"onDragLeave($event)\">\n  <div [className]=\"contentClassName\">\n    <input \n      type=\"file\" \n      #fileSelector \n      [accept]=\"accept\" \n      [attr.directory]=\"directory || undefined\" \n      [attr.webkitdirectory]=\"directory || undefined\"\n      [attr.mozdirectory]=\"directory || undefined\"\n      [attr.msdirectory]=\"directory || undefined\"\n      [attr.odirectory]=\"directory || undefined\"\n      [multiple]=\"multiple\"\n      (change)=\"uploadFiles($event)\" \n      class=\"ngx-file-drop__file-input\" \n    />\n\n    <ng-template #defaultContentTemplate>\n      <div *ngIf=\"dropZoneLabel\" class=\"ngx-file-drop__drop-zone-label\">{{dropZoneLabel}}</div>\n      <div *ngIf=\"showBrowseBtn\">\n        <input type=\"button\" [className]=\"browseBtnClassName\" value=\"{{browseBtnLabel}}\" (click)=\"openFileSelector($event)\" />\n      </div>\n    </ng-template>\n\n    <ng-template\n      [ngTemplateOutlet]=\"contentTemplate || defaultContentTemplate\"\n      [ngTemplateOutletContext]=\"{ openFileSelector: openFileSelector }\">\n    </ng-template>\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:#93939380}.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}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
 }
 i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: NgxFileDropComponent, decorators: [{
             type: Component,
-            args: [{ selector: 'ngx-file-drop', template: "<div [className]=\"dropZoneClassName\"\r\n     [class.ngx-file-drop__drop-zone--over]=\"isDraggingOverDropZone\"\r\n     (drop)=\"dropFiles($event)\"\r\n     (dragover)=\"onDragOver($event)\"\r\n     (dragenter)=\"onDragEnter($event)\"\r\n     (dragleave)=\"onDragLeave($event)\">\r\n  <div [className]=\"contentClassName\">\r\n    <input \r\n      type=\"file\" \r\n      #fileSelector \r\n      [accept]=\"accept\" \r\n      [attr.directory]=\"directory || undefined\" \r\n      [attr.webkitdirectory]=\"directory || undefined\"\r\n      [attr.mozdirectory]=\"directory || undefined\"\r\n      [attr.msdirectory]=\"directory || undefined\"\r\n      [attr.odirectory]=\"directory || undefined\"\r\n      [multiple]=\"multiple\"\r\n      (change)=\"uploadFiles($event)\" \r\n      class=\"ngx-file-drop__file-input\" \r\n    />\r\n\r\n    <ng-template #defaultContentTemplate>\r\n      <div *ngIf=\"dropZoneLabel\" class=\"ngx-file-drop__drop-zone-label\">{{dropZoneLabel}}</div>\r\n      <div *ngIf=\"showBrowseBtn\">\r\n        <input type=\"button\" [className]=\"browseBtnClassName\" value=\"{{browseBtnLabel}}\" (click)=\"openFileSelector($event)\" />\r\n      </div>\r\n    </ng-template>\r\n\r\n    <ng-template\r\n      [ngTemplateOutlet]=\"contentTemplate || defaultContentTemplate\"\r\n      [ngTemplateOutletContext]=\"{ openFileSelector: openFileSelector }\">\r\n    </ng-template>\r\n  </div>\r\n</div>\r\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:#93939380}.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}\n"] }]
+            args: [{ selector: 'ngx-file-drop', template: "<div [className]=\"dropZoneClassName\"\n     [class.ngx-file-drop__drop-zone--over]=\"isDraggingOverDropZone\"\n     (drop)=\"dropFiles($event)\"\n     (dragover)=\"onDragOver($event)\"\n     (dragenter)=\"onDragEnter($event)\"\n     (dragleave)=\"onDragLeave($event)\">\n  <div [className]=\"contentClassName\">\n    <input \n      type=\"file\" \n      #fileSelector \n      [accept]=\"accept\" \n      [attr.directory]=\"directory || undefined\" \n      [attr.webkitdirectory]=\"directory || undefined\"\n      [attr.mozdirectory]=\"directory || undefined\"\n      [attr.msdirectory]=\"directory || undefined\"\n      [attr.odirectory]=\"directory || undefined\"\n      [multiple]=\"multiple\"\n      (change)=\"uploadFiles($event)\" \n      class=\"ngx-file-drop__file-input\" \n    />\n\n    <ng-template #defaultContentTemplate>\n      <div *ngIf=\"dropZoneLabel\" class=\"ngx-file-drop__drop-zone-label\">{{dropZoneLabel}}</div>\n      <div *ngIf=\"showBrowseBtn\">\n        <input type=\"button\" [className]=\"browseBtnClassName\" value=\"{{browseBtnLabel}}\" (click)=\"openFileSelector($event)\" />\n      </div>\n    </ng-template>\n\n    <ng-template\n      [ngTemplateOutlet]=\"contentTemplate || defaultContentTemplate\"\n      [ngTemplateOutletContext]=\"{ openFileSelector: openFileSelector }\">\n    </ng-template>\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:#93939380}.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}\n"] }]
         }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { accept: [{
                 type: Input
             }], directory: [{
diff --git a/node_modules/ngx-file-drop/fesm2022/ngx-file-drop.mjs.map b/node_modules/ngx-file-drop/fesm2022/ngx-file-drop.mjs.map
index ab987c7..e9e2202 100644
--- a/node_modules/ngx-file-drop/fesm2022/ngx-file-drop.mjs.map
+++ b/node_modules/ngx-file-drop/fesm2022/ngx-file-drop.mjs.map
@@ -1 +1 @@
-{"version":3,"file":"ngx-file-drop.mjs","sources":["../../../projects/ngx-file-drop/src/lib/ngx-file-drop-entry.ts","../../../projects/ngx-file-drop/src/lib/ngx-templates.directive.ts","../../../projects/ngx-file-drop/src/lib/ngx-file-drop.component.ts","../../../projects/ngx-file-drop/src/lib/ngx-file-drop.component.html","../../../projects/ngx-file-drop/src/lib/ngx-file-drop.module.ts","../../../projects/ngx-file-drop/src/ngx-file-drop.ts"],"sourcesContent":["import { FileSystemEntry, FileSystemFileEntry, FileSystemDirectoryEntry } from './dom.types';\r\n\r\n/**\r\n * fileEntry is an instance of {@link FileSystemFileEntry} or {@link FileSystemDirectoryEntry}.\r\n * Which one is it can be checked using {@link FileSystemEntry.isFile} or {@link FileSystemEntry.isDirectory}\r\n * properties of the given {@link FileSystemEntry}.\r\n */\r\nexport class NgxFileDropEntry {\r\n    constructor(\r\n        public relativePath: string,\r\n        public fileEntry: FileSystemEntry\r\n    ) {\r\n    }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({ selector: '[ngx-file-drop-content-tmp]' })\r\nexport class NgxFileDropContentTemplateDirective {\r\n  constructor(public template: TemplateRef<any>) { }\r\n}\r\n","import {\r\n  Component,\r\n  ContentChild,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  NgZone,\r\n  OnDestroy,\r\n  Output,\r\n  Renderer2,\r\n  TemplateRef,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport { Subscription, timer } from 'rxjs';\r\n\r\nimport { NgxFileDropEntry } from './ngx-file-drop-entry';\r\nimport { FileSystemDirectoryEntry, FileSystemEntry, FileSystemFileEntry } from './dom.types';\r\nimport { NgxFileDropContentTemplateDirective } from './ngx-templates.directive';\r\n\r\n@Component({\r\n  selector: 'ngx-file-drop',\r\n  templateUrl: './ngx-file-drop.component.html',\r\n  styleUrls: ['./ngx-file-drop.component.scss'],\r\n})\r\nexport class NgxFileDropComponent implements OnDestroy {\r\n\r\n  @Input()\r\n  public accept: string = '*';\r\n\r\n  @Input()\r\n  public directory: boolean = false;\r\n\r\n  @Input()\r\n  public multiple: boolean = true;\r\n\r\n  @Input()\r\n  public dropZoneLabel: string = '';\r\n\r\n  @Input()\r\n  public dropZoneClassName: string = 'ngx-file-drop__drop-zone';\r\n\r\n  @Input()\r\n  public useDragEnter: boolean = false;\r\n\r\n  @Input()\r\n  public contentClassName: string = 'ngx-file-drop__content';\r\n\r\n  @Input()\r\n  public showBrowseBtn: boolean = false;\r\n\r\n  @Input()\r\n  public browseBtnClassName: string = 'btn btn-primary btn-xs ngx-file-drop__browse-btn';\r\n\r\n  @Input()\r\n  public browseBtnLabel: string = 'Browse files';\r\n\r\n  @Output()\r\n  public onFileDrop: EventEmitter<NgxFileDropEntry[]> = new EventEmitter();\r\n\r\n  @Output()\r\n  public onFileOver: EventEmitter<any> = new EventEmitter();\r\n\r\n  @Output()\r\n  public onFileLeave: EventEmitter<any> = new EventEmitter();\r\n\r\n  // custom templates\r\n  @ContentChild(NgxFileDropContentTemplateDirective, { read: TemplateRef }) contentTemplate?: TemplateRef<any>;\r\n\r\n  @ViewChild('fileSelector', { static: true })\r\n  public fileSelector?: ElementRef;\r\n\r\n  public isDraggingOverDropZone: boolean = false;\r\n\r\n  private globalDraggingInProgress: boolean = false;\r\n  private readonly globalDragStartListener: () => void;\r\n  private readonly globalDragEndListener: () => void;\r\n\r\n  private files: NgxFileDropEntry[] = [];\r\n  private numOfActiveReadEntries: number = 0;\r\n\r\n  private helperFormEl: HTMLFormElement | null = null;\r\n  private fileInputPlaceholderEl: HTMLDivElement | null = null;\r\n\r\n  private dropEventTimerSubscription: Subscription | null = null;\r\n\r\n  private _disabled: boolean = false;\r\n\r\n  public get disabled(): boolean { return this._disabled; }\r\n\r\n  @Input()\r\n  public set disabled(value: boolean) {\r\n    this._disabled = (value != null && `${value}` !== 'false');\r\n  }\r\n\r\n  constructor(\r\n    private zone: NgZone,\r\n    private renderer: Renderer2\r\n  ) {\r\n    this.globalDragStartListener = this.renderer.listen('document', 'dragstart', (evt: Event) => {\r\n      this.globalDraggingInProgress = true;\r\n    });\r\n    this.globalDragEndListener = this.renderer.listen('document', 'dragend', (evt: Event) => {\r\n      this.globalDraggingInProgress = false;\r\n    });\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    if (this.dropEventTimerSubscription) {\r\n      this.dropEventTimerSubscription.unsubscribe();\r\n      this.dropEventTimerSubscription = null;\r\n    }\r\n    this.globalDragStartListener();\r\n    this.globalDragEndListener();\r\n    this.files = [];\r\n    this.helperFormEl = null;\r\n    this.fileInputPlaceholderEl = null;\r\n  }\r\n\r\n  public onDragOver(event: DragEvent): void {\r\n    if (this.useDragEnter) {\r\n      this.preventAndStop(event);\r\n      if (event.dataTransfer) {\r\n        event.dataTransfer.dropEffect = 'copy';\r\n      }\r\n    } else if (!this.isDropzoneDisabled() && !this.useDragEnter && event.dataTransfer) {\r\n      if (!this.isDraggingOverDropZone) {\r\n        this.isDraggingOverDropZone = true;\r\n        this.onFileOver.emit(event);\r\n      }\r\n      this.preventAndStop(event);\r\n      event.dataTransfer.dropEffect = 'copy';\r\n    }\r\n  }\r\n\r\n  public onDragEnter(event: Event): void {\r\n    if (!this.isDropzoneDisabled() && this.useDragEnter) {\r\n      if (!this.isDraggingOverDropZone) {\r\n        this.isDraggingOverDropZone = true;\r\n        this.onFileOver.emit(event);\r\n      }\r\n      this.preventAndStop(event);\r\n    }\r\n  }\r\n\r\n  public onDragLeave(event: Event): void {\r\n    if (!this.isDropzoneDisabled()) {\r\n      if (this.isDraggingOverDropZone) {\r\n        this.isDraggingOverDropZone = false;\r\n        this.onFileLeave.emit(event);\r\n      }\r\n      this.preventAndStop(event);\r\n    }\r\n  }\r\n\r\n  public dropFiles(event: DragEvent): void {\r\n    if (this.isDropzoneDisabled()) {\r\n      return;\r\n    }\r\n    this.isDraggingOverDropZone = false;\r\n    if (event.dataTransfer) {\r\n      let items: FileList | DataTransferItemList;\r\n      if (event.dataTransfer.items) {\r\n        items = event.dataTransfer.items;\r\n      } else {\r\n        items = event.dataTransfer.files;\r\n      }\r\n      this.preventAndStop(event);\r\n      this.checkFiles(items);\r\n    }\r\n  }\r\n\r\n  public openFileSelector = (event?: MouseEvent): void => {\r\n    if (this.fileSelector && this.fileSelector.nativeElement) {\r\n      (this.fileSelector.nativeElement as HTMLInputElement).click();\r\n    }\r\n  };\r\n\r\n  /**\r\n   * Processes the change event of the file input and adds the given files.\r\n   * @param Event event\r\n   */\r\n  public uploadFiles(event: Event): void {\r\n    if (this.isDropzoneDisabled()) {\r\n      return;\r\n    }\r\n    if (event.target) {\r\n      const items = (event.target as HTMLInputElement).files || ([] as any);\r\n      this.checkFiles(items);\r\n      this.resetFileInput();\r\n    }\r\n  }\r\n\r\n  private getFakeDropEntry(file: File): NgxFileDropEntry {\r\n    const fakeFileEntry: FileSystemFileEntry = {\r\n      name: file.name,\r\n      isDirectory: false,\r\n      isFile: true,\r\n      file: <T>(callback: (filea: File) => T) => callback(file),\r\n    };\r\n    return new NgxFileDropEntry(fakeFileEntry.name, fakeFileEntry);\r\n  }\r\n\r\n  private checkFile(item: DataTransferItem | File): void {\r\n    if (!item) {\r\n      return;\r\n    }\r\n    // if (\"getAsFile\" in item) {\r\n    //   const file = item.getAsFile();\r\n    //   if (file) {\r\n    //     this.addToQueue(\r\n    //       this.getFakeDropEntry(file)\r\n    //     );\r\n    //     return;\r\n    //   }\r\n    // }\r\n    if (\"webkitGetAsEntry\" in item) {\r\n      let entry = item.webkitGetAsEntry();\r\n      if (entry) {\r\n        if (entry.isFile) {\r\n          const toUpload: NgxFileDropEntry = new NgxFileDropEntry(entry.name, entry);\r\n          this.addToQueue(toUpload);\r\n\r\n        } else if (entry.isDirectory) {\r\n          this.traverseFileTree(entry, entry.name);\r\n        }\r\n        return;\r\n      }\r\n    }\r\n    this.addToQueue(this.getFakeDropEntry((item as File)));\r\n  }\r\n\r\n  private checkFiles(items: FileList | DataTransferItemList): void {\r\n    for (let i = 0; i < items.length; i++) {\r\n      this.checkFile(items[i]);\r\n    }\r\n\r\n    if (this.dropEventTimerSubscription) {\r\n      this.dropEventTimerSubscription.unsubscribe();\r\n    }\r\n    this.dropEventTimerSubscription = timer(200, 200)\r\n      .subscribe(() => {\r\n        if (this.files.length > 0 && this.numOfActiveReadEntries === 0) {\r\n          const files = this.files;\r\n          this.files = [];\r\n          this.onFileDrop.emit(files);\r\n        }\r\n      });\r\n  }\r\n\r\n  private traverseFileTree(item: FileSystemEntry, path: string): void {\r\n    if (item.isFile) {\r\n      const toUpload: NgxFileDropEntry = new NgxFileDropEntry(path, item);\r\n      this.files.push(toUpload);\r\n\r\n    } else {\r\n      path = path + '/';\r\n      const dirReader = (item as FileSystemDirectoryEntry).createReader();\r\n      let entries: FileSystemEntry[] = [];\r\n\r\n      const readEntries = () => {\r\n        this.numOfActiveReadEntries++;\r\n        dirReader.readEntries((result) => {\r\n          if (!result.length) {\r\n            // add empty folders\r\n            if (entries.length === 0) {\r\n              const toUpload: NgxFileDropEntry = new NgxFileDropEntry(path, item);\r\n              this.zone.run(() => {\r\n                this.addToQueue(toUpload);\r\n              });\r\n\r\n            } else {\r\n              for (let i = 0; i < entries.length; i++) {\r\n                this.zone.run(() => {\r\n                  this.traverseFileTree(entries[i], path + entries[i].name);\r\n                });\r\n              }\r\n            }\r\n\r\n          } else {\r\n            // continue with the reading\r\n            entries = entries.concat(result);\r\n            readEntries();\r\n          }\r\n\r\n          this.numOfActiveReadEntries--;\r\n        });\r\n      };\r\n\r\n      readEntries();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Clears any added files from the file input element so the same file can subsequently be added multiple times.\r\n   */\r\n  private resetFileInput(): void {\r\n    if (this.fileSelector && this.fileSelector.nativeElement) {\r\n      const fileInputEl = this.fileSelector.nativeElement as HTMLInputElement;\r\n      const fileInputContainerEl = fileInputEl.parentElement;\r\n      const helperFormEl = this.getHelperFormElement();\r\n      const fileInputPlaceholderEl = this.getFileInputPlaceholderElement();\r\n\r\n      // Just a quick check so we do not mess up the DOM (will never happen though).\r\n      if (fileInputContainerEl !== helperFormEl) {\r\n        // Insert the form input placeholder in the DOM before the form input element.\r\n        this.renderer.insertBefore(fileInputContainerEl, fileInputPlaceholderEl, fileInputEl);\r\n        // Add the form input as child of the temporary form element, removing the form input from the DOM.\r\n        this.renderer.appendChild(helperFormEl, fileInputEl);\r\n        // Reset the form, thus clearing the input element of any files.\r\n        helperFormEl.reset();\r\n        // Add the file input back to the DOM in place of the file input placeholder element.\r\n        this.renderer.insertBefore(fileInputContainerEl, fileInputEl, fileInputPlaceholderEl);\r\n        // Remove the input placeholder from the DOM\r\n        this.renderer.removeChild(fileInputContainerEl, fileInputPlaceholderEl);\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Get a cached HTML form element as a helper element to clear the file input element.\r\n   */\r\n  private getHelperFormElement(): HTMLFormElement {\r\n    if (!this.helperFormEl) {\r\n      this.helperFormEl = this.renderer.createElement('form') as HTMLFormElement;\r\n    }\r\n\r\n    return this.helperFormEl;\r\n  }\r\n\r\n  /**\r\n   * Get a cached HTML div element to be used as placeholder for the file input element when clearing said element.\r\n   */\r\n  private getFileInputPlaceholderElement(): HTMLDivElement {\r\n    if (!this.fileInputPlaceholderEl) {\r\n      this.fileInputPlaceholderEl = this.renderer.createElement('div') as HTMLDivElement;\r\n    }\r\n\r\n    return this.fileInputPlaceholderEl;\r\n  }\r\n\r\n  private isDropzoneDisabled(): boolean {\r\n    return (this.globalDraggingInProgress || this.disabled);\r\n  }\r\n\r\n  private addToQueue(item: NgxFileDropEntry): void {\r\n    this.files.push(item);\r\n  }\r\n\r\n  private preventAndStop(event: Event): void {\r\n    event.stopPropagation();\r\n    event.preventDefault();\r\n  }\r\n}\r\n","<div [className]=\"dropZoneClassName\"\r\n     [class.ngx-file-drop__drop-zone--over]=\"isDraggingOverDropZone\"\r\n     (drop)=\"dropFiles($event)\"\r\n     (dragover)=\"onDragOver($event)\"\r\n     (dragenter)=\"onDragEnter($event)\"\r\n     (dragleave)=\"onDragLeave($event)\">\r\n  <div [className]=\"contentClassName\">\r\n    <input \r\n      type=\"file\" \r\n      #fileSelector \r\n      [accept]=\"accept\" \r\n      [attr.directory]=\"directory || undefined\" \r\n      [attr.webkitdirectory]=\"directory || undefined\"\r\n      [attr.mozdirectory]=\"directory || undefined\"\r\n      [attr.msdirectory]=\"directory || undefined\"\r\n      [attr.odirectory]=\"directory || undefined\"\r\n      [multiple]=\"multiple\"\r\n      (change)=\"uploadFiles($event)\" \r\n      class=\"ngx-file-drop__file-input\" \r\n    />\r\n\r\n    <ng-template #defaultContentTemplate>\r\n      <div *ngIf=\"dropZoneLabel\" class=\"ngx-file-drop__drop-zone-label\">{{dropZoneLabel}}</div>\r\n      <div *ngIf=\"showBrowseBtn\">\r\n        <input type=\"button\" [className]=\"browseBtnClassName\" value=\"{{browseBtnLabel}}\" (click)=\"openFileSelector($event)\" />\r\n      </div>\r\n    </ng-template>\r\n\r\n    <ng-template\r\n      [ngTemplateOutlet]=\"contentTemplate || defaultContentTemplate\"\r\n      [ngTemplateOutletContext]=\"{ openFileSelector: openFileSelector }\">\r\n    </ng-template>\r\n  </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgxFileDropComponent } from './ngx-file-drop.component';\r\nimport { NgxFileDropContentTemplateDirective } from './ngx-templates.directive';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    NgxFileDropComponent,\r\n    NgxFileDropContentTemplateDirective,\r\n  ],\r\n  imports: [\r\n    CommonModule\r\n  ],\r\n  exports: [\r\n    NgxFileDropComponent,\r\n    NgxFileDropContentTemplateDirective,\r\n  ],\r\n  providers: [],\r\n  bootstrap: [\r\n    NgxFileDropComponent\r\n  ],\r\n})\r\nexport class NgxFileDropModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"ngx-file-drop.mjs","sources":["../../../projects/ngx-file-drop/src/lib/ngx-file-drop-entry.ts","../../../projects/ngx-file-drop/src/lib/dom.types.ts","../../../projects/ngx-file-drop/src/lib/ngx-templates.directive.ts","../../../projects/ngx-file-drop/src/lib/ngx-file-drop.component.ts","../../../projects/ngx-file-drop/src/lib/ngx-file-drop.component.html","../../../projects/ngx-file-drop/src/lib/ngx-file-drop.module.ts","../../../projects/ngx-file-drop/src/ngx-file-drop.ts"],"sourcesContent":["import { FileSystemEntry, FileSystemFileEntry, FileSystemDirectoryEntry } from './dom.types';\n\n/**\n * fileEntry is an instance of {@link FileSystemFileEntry} or {@link FileSystemDirectoryEntry}.\n * Which one is it can be checked using {@link FileSystemEntry.isFile} or {@link FileSystemEntry.isDirectory}\n * properties of the given {@link FileSystemEntry}.\n */\nexport class NgxFileDropEntry {\n    constructor(\n        public relativePath: string,\n        public fileEntry: FileSystemEntry\n    ) {\n    }\n}\n","\nexport interface FileSystemEntry {\n  name: string,\n  isDirectory: boolean\n  isFile: boolean\n}\n\nexport interface FileSystemEntryMetadata {\n  modificationTime?: Date,\n  size?: number\n}\n\nexport interface FileSystemDirectoryReader {\n  readEntries(\n    successCallback: (result: FileSystemEntry[]) => void,\n  ): void\n}\n\nexport interface FileSystemFlags {\n  create?: boolean\n  exclusive?: boolean\n}\n\nexport interface FileSystemDirectoryEntry extends FileSystemEntry {\n  isDirectory: true\n  isFile: false\n  createReader(): FileSystemDirectoryReader\n}\n\nexport interface FileSystemFileEntry extends FileSystemEntry {\n  isDirectory: false\n  isFile: true\n  file<T>(callback: (file: File) => T): T\n}\n\nexport function isDataTransferItem(item: DataTransferItem | File): item is DataTransferItem {\n  return \"webkitGetAsEntry\" in item && \"getAsFile\" in item;\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[ngx-file-drop-content-tmp]' })\nexport class NgxFileDropContentTemplateDirective {\n  constructor(public template: TemplateRef<any>) { }\n}\n","import {\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n  Renderer2,\n  TemplateRef,\n  ViewChild\n} from '@angular/core';\nimport { Subscription, timer } from 'rxjs';\n\nimport { NgxFileDropEntry } from './ngx-file-drop-entry';\nimport { FileSystemDirectoryEntry, FileSystemEntry, FileSystemFileEntry, isDataTransferItem } from './dom.types';\nimport { NgxFileDropContentTemplateDirective } from './ngx-templates.directive';\n\n@Component({\n  selector: 'ngx-file-drop',\n  templateUrl: './ngx-file-drop.component.html',\n  styleUrls: ['./ngx-file-drop.component.scss'],\n})\nexport class NgxFileDropComponent implements OnDestroy {\n\n  @Input()\n  public accept: string = '*';\n\n  @Input()\n  public directory: boolean = false;\n\n  @Input()\n  public multiple: boolean = true;\n\n  @Input()\n  public dropZoneLabel: string = '';\n\n  @Input()\n  public dropZoneClassName: string = 'ngx-file-drop__drop-zone';\n\n  @Input()\n  public useDragEnter: boolean = false;\n\n  @Input()\n  public contentClassName: string = 'ngx-file-drop__content';\n\n  @Input()\n  public showBrowseBtn: boolean = false;\n\n  @Input()\n  public browseBtnClassName: string = 'btn btn-primary btn-xs ngx-file-drop__browse-btn';\n\n  @Input()\n  public browseBtnLabel: string = 'Browse files';\n\n  @Output()\n  public onFileDrop: EventEmitter<NgxFileDropEntry[]> = new EventEmitter();\n\n  @Output()\n  public onFileOver: EventEmitter<any> = new EventEmitter();\n\n  @Output()\n  public onFileLeave: EventEmitter<any> = new EventEmitter();\n\n  // custom templates\n  @ContentChild(NgxFileDropContentTemplateDirective, { read: TemplateRef }) contentTemplate?: TemplateRef<any>;\n\n  @ViewChild('fileSelector', { static: true })\n  public fileSelector?: ElementRef;\n\n  public isDraggingOverDropZone: boolean = false;\n\n  private globalDraggingInProgress: boolean = false;\n  private readonly globalDragStartListener: () => void;\n  private readonly globalDragEndListener: () => void;\n\n  private files: NgxFileDropEntry[] = [];\n  private numOfActiveReadEntries: number = 0;\n\n  private helperFormEl: HTMLFormElement | null = null;\n  private fileInputPlaceholderEl: HTMLDivElement | null = null;\n\n  private dropEventTimerSubscription: Subscription | null = null;\n\n  private _disabled: boolean = false;\n\n  public get disabled(): boolean { return this._disabled; }\n\n  @Input()\n  public set disabled(value: boolean) {\n    this._disabled = (value != null && `${value}` !== 'false');\n  }\n\n  constructor(\n    private zone: NgZone,\n    private renderer: Renderer2\n  ) {\n    this.globalDragStartListener = this.renderer.listen('document', 'dragstart', (evt: Event) => {\n      this.globalDraggingInProgress = true;\n    });\n    this.globalDragEndListener = this.renderer.listen('document', 'dragend', (evt: Event) => {\n      this.globalDraggingInProgress = false;\n    });\n  }\n\n  public ngOnDestroy(): void {\n    if (this.dropEventTimerSubscription) {\n      this.dropEventTimerSubscription.unsubscribe();\n      this.dropEventTimerSubscription = null;\n    }\n    this.globalDragStartListener();\n    this.globalDragEndListener();\n    this.files = [];\n    this.helperFormEl = null;\n    this.fileInputPlaceholderEl = null;\n  }\n\n  public onDragOver(event: DragEvent): void {\n    if (this.useDragEnter) {\n      this.preventAndStop(event);\n      if (event.dataTransfer) {\n        event.dataTransfer.dropEffect = 'copy';\n      }\n    } else if (!this.isDropzoneDisabled() && !this.useDragEnter && event.dataTransfer) {\n      if (!this.isDraggingOverDropZone) {\n        this.isDraggingOverDropZone = true;\n        this.onFileOver.emit(event);\n      }\n      this.preventAndStop(event);\n      event.dataTransfer.dropEffect = 'copy';\n    }\n  }\n\n  public onDragEnter(event: Event): void {\n    if (!this.isDropzoneDisabled() && this.useDragEnter) {\n      if (!this.isDraggingOverDropZone) {\n        this.isDraggingOverDropZone = true;\n        this.onFileOver.emit(event);\n      }\n      this.preventAndStop(event);\n    }\n  }\n\n  public onDragLeave(event: Event): void {\n    if (!this.isDropzoneDisabled()) {\n      if (this.isDraggingOverDropZone) {\n        this.isDraggingOverDropZone = false;\n        this.onFileLeave.emit(event);\n      }\n      this.preventAndStop(event);\n    }\n  }\n\n  public dropFiles(event: DragEvent): void {\n    if (this.isDropzoneDisabled()) {\n      return;\n    }\n    this.isDraggingOverDropZone = false;\n    if (event.dataTransfer) {\n      let items: FileList | DataTransferItemList;\n      if (event.dataTransfer.items) {\n        items = event.dataTransfer.items;\n      } else {\n        items = event.dataTransfer.files;\n      }\n      this.preventAndStop(event);\n      this.checkFiles(items);\n    }\n  }\n\n  public openFileSelector = (event?: MouseEvent): void => {\n    if (this.fileSelector && this.fileSelector.nativeElement) {\n      (this.fileSelector.nativeElement as HTMLInputElement).click();\n    }\n  };\n\n  /**\n   * Processes the change event of the file input and adds the given files.\n   * @param Event event\n   */\n  public uploadFiles(event: Event): void {\n    if (this.isDropzoneDisabled()) {\n      return;\n    }\n    if (event.target) {\n      const items = (event.target as HTMLInputElement).files || ([] as any);\n      this.checkFiles(items);\n      this.resetFileInput();\n    }\n  }\n\n  private getFakeDropEntry(file: File): NgxFileDropEntry {\n    const fakeFileEntry: FileSystemFileEntry = {\n      name: file.name,\n      isDirectory: false,\n      isFile: true,\n      file: <T>(callback: (filea: File) => T) => callback(file),\n    };\n    return new NgxFileDropEntry(fakeFileEntry.name, fakeFileEntry);\n  }\n\n  private checkFile(item: DataTransferItem | File): void {\n    if (!item) {\n      return;\n    }\n    if (isDataTransferItem(item)) {\n      const entry = item.webkitGetAsEntry();\n      if (entry) {\n        if (entry.isFile) {\n          const toUpload: NgxFileDropEntry = new NgxFileDropEntry(entry.name, entry);\n          this.addToQueue(toUpload);\n\n        } else if (entry.isDirectory) {\n          this.traverseFileTree(entry, entry.name);\n        }\n        return;\n      }\n\n      const file = item.getAsFile();\n      if (file) {\n        this.addToQueue(this.getFakeDropEntry(file));\n      }\n      return;\n    }\n    this.addToQueue(this.getFakeDropEntry(item));\n  }\n\n  private checkFiles(items: FileList | DataTransferItemList): void {\n    for (let i = 0; i < items.length; i++) {\n      this.checkFile(items[i]);\n    }\n\n    if (this.dropEventTimerSubscription) {\n      this.dropEventTimerSubscription.unsubscribe();\n    }\n    this.dropEventTimerSubscription = timer(200, 200)\n      .subscribe(() => {\n        if (this.files.length > 0 && this.numOfActiveReadEntries === 0) {\n          const files = this.files;\n          this.files = [];\n          this.onFileDrop.emit(files);\n        }\n      });\n  }\n\n  private traverseFileTree(item: FileSystemEntry, path: string): void {\n    if (item.isFile) {\n      const toUpload: NgxFileDropEntry = new NgxFileDropEntry(path, item);\n      this.files.push(toUpload);\n\n    } else {\n      path = path + '/';\n      const dirReader = (item as FileSystemDirectoryEntry).createReader();\n      let entries: FileSystemEntry[] = [];\n\n      const readEntries = () => {\n        this.numOfActiveReadEntries++;\n        dirReader.readEntries((result) => {\n          if (!result.length) {\n            // add empty folders\n            if (entries.length === 0) {\n              const toUpload: NgxFileDropEntry = new NgxFileDropEntry(path, item);\n              this.zone.run(() => {\n                this.addToQueue(toUpload);\n              });\n\n            } else {\n              for (let i = 0; i < entries.length; i++) {\n                this.zone.run(() => {\n                  this.traverseFileTree(entries[i], path + entries[i].name);\n                });\n              }\n            }\n\n          } else {\n            // continue with the reading\n            entries = entries.concat(result);\n            readEntries();\n          }\n\n          this.numOfActiveReadEntries--;\n        });\n      };\n\n      readEntries();\n    }\n  }\n\n  /**\n   * Clears any added files from the file input element so the same file can subsequently be added multiple times.\n   */\n  private resetFileInput(): void {\n    if (this.fileSelector && this.fileSelector.nativeElement) {\n      const fileInputEl = this.fileSelector.nativeElement as HTMLInputElement;\n      const fileInputContainerEl = fileInputEl.parentElement;\n      const helperFormEl = this.getHelperFormElement();\n      const fileInputPlaceholderEl = this.getFileInputPlaceholderElement();\n\n      // Just a quick check so we do not mess up the DOM (will never happen though).\n      if (fileInputContainerEl !== helperFormEl) {\n        // Insert the form input placeholder in the DOM before the form input element.\n        this.renderer.insertBefore(fileInputContainerEl, fileInputPlaceholderEl, fileInputEl);\n        // Add the form input as child of the temporary form element, removing the form input from the DOM.\n        this.renderer.appendChild(helperFormEl, fileInputEl);\n        // Reset the form, thus clearing the input element of any files.\n        helperFormEl.reset();\n        // Add the file input back to the DOM in place of the file input placeholder element.\n        this.renderer.insertBefore(fileInputContainerEl, fileInputEl, fileInputPlaceholderEl);\n        // Remove the input placeholder from the DOM\n        this.renderer.removeChild(fileInputContainerEl, fileInputPlaceholderEl);\n      }\n    }\n  }\n\n  /**\n   * Get a cached HTML form element as a helper element to clear the file input element.\n   */\n  private getHelperFormElement(): HTMLFormElement {\n    if (!this.helperFormEl) {\n      this.helperFormEl = this.renderer.createElement('form') as HTMLFormElement;\n    }\n\n    return this.helperFormEl;\n  }\n\n  /**\n   * Get a cached HTML div element to be used as placeholder for the file input element when clearing said element.\n   */\n  private getFileInputPlaceholderElement(): HTMLDivElement {\n    if (!this.fileInputPlaceholderEl) {\n      this.fileInputPlaceholderEl = this.renderer.createElement('div') as HTMLDivElement;\n    }\n\n    return this.fileInputPlaceholderEl;\n  }\n\n  private isDropzoneDisabled(): boolean {\n    return (this.globalDraggingInProgress || this.disabled);\n  }\n\n  private addToQueue(item: NgxFileDropEntry): void {\n    this.files.push(item);\n  }\n\n  private preventAndStop(event: Event): void {\n    event.stopPropagation();\n    event.preventDefault();\n  }\n}\n","<div [className]=\"dropZoneClassName\"\n     [class.ngx-file-drop__drop-zone--over]=\"isDraggingOverDropZone\"\n     (drop)=\"dropFiles($event)\"\n     (dragover)=\"onDragOver($event)\"\n     (dragenter)=\"onDragEnter($event)\"\n     (dragleave)=\"onDragLeave($event)\">\n  <div [className]=\"contentClassName\">\n    <input \n      type=\"file\" \n      #fileSelector \n      [accept]=\"accept\" \n      [attr.directory]=\"directory || undefined\" \n      [attr.webkitdirectory]=\"directory || undefined\"\n      [attr.mozdirectory]=\"directory || undefined\"\n      [attr.msdirectory]=\"directory || undefined\"\n      [attr.odirectory]=\"directory || undefined\"\n      [multiple]=\"multiple\"\n      (change)=\"uploadFiles($event)\" \n      class=\"ngx-file-drop__file-input\" \n    />\n\n    <ng-template #defaultContentTemplate>\n      <div *ngIf=\"dropZoneLabel\" class=\"ngx-file-drop__drop-zone-label\">{{dropZoneLabel}}</div>\n      <div *ngIf=\"showBrowseBtn\">\n        <input type=\"button\" [className]=\"browseBtnClassName\" value=\"{{browseBtnLabel}}\" (click)=\"openFileSelector($event)\" />\n      </div>\n    </ng-template>\n\n    <ng-template\n      [ngTemplateOutlet]=\"contentTemplate || defaultContentTemplate\"\n      [ngTemplateOutletContext]=\"{ openFileSelector: openFileSelector }\">\n    </ng-template>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgxFileDropComponent } from './ngx-file-drop.component';\nimport { NgxFileDropContentTemplateDirective } from './ngx-templates.directive';\n\n@NgModule({\n  declarations: [\n    NgxFileDropComponent,\n    NgxFileDropContentTemplateDirective,\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    NgxFileDropComponent,\n    NgxFileDropContentTemplateDirective,\n  ],\n  providers: [],\n  bootstrap: [\n    NgxFileDropComponent\n  ],\n})\nexport class NgxFileDropModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/ngx-file-drop/lib/dom.types.d.ts b/node_modules/ngx-file-drop/lib/dom.types.d.ts
index 2539d26..0a2315c 100644
--- a/node_modules/ngx-file-drop/lib/dom.types.d.ts
+++ b/node_modules/ngx-file-drop/lib/dom.types.d.ts
@@ -24,3 +24,4 @@ export interface FileSystemFileEntry extends FileSystemEntry {
     isFile: true;
     file<T>(callback: (file: File) => T): T;
 }
+export declare function isDataTransferItem(item: DataTransferItem | File): item is DataTransferItem;
