ng2-file-upload 8.0.0 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/ng2-file-upload.mjs +17 -17
- package/fesm2022/ng2-file-upload.mjs.map +1 -1
- package/index.d.ts +195 -7
- package/package.json +3 -3
- package/file-upload/file-drop.directive.d.ts +0 -20
- package/file-upload/file-item.class.d.ts +0 -44
- package/file-upload/file-like-object.class.d.ts +0 -14
- package/file-upload/file-select.directive.d.ts +0 -15
- package/file-upload/file-type.class.d.ts +0 -10
- package/file-upload/file-upload.module.d.ts +0 -9
- package/file-upload/file-uploader.class.d.ts +0 -98
@@ -1,5 +1,5 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
|
-
import { EventEmitter,
|
2
|
+
import { EventEmitter, inject, ElementRef, HostListener, Output, Input, Directive, NgModule } from '@angular/core';
|
3
3
|
import { CommonModule } from '@angular/common';
|
4
4
|
|
5
5
|
class FileLikeObject {
|
@@ -717,11 +717,11 @@ class FileUploader {
|
|
717
717
|
}
|
718
718
|
|
719
719
|
class FileDropDirective {
|
720
|
-
constructor(
|
720
|
+
constructor() {
|
721
721
|
this.fileOver = new EventEmitter();
|
722
722
|
// eslint-disable-next-line @angular-eslint/no-output-on-prefix
|
723
723
|
this.onFileDrop = new EventEmitter();
|
724
|
-
this.element =
|
724
|
+
this.element = inject(ElementRef);
|
725
725
|
}
|
726
726
|
getOptions() {
|
727
727
|
return this.uploader?.options;
|
@@ -782,13 +782,13 @@ class FileDropDirective {
|
|
782
782
|
return false;
|
783
783
|
}
|
784
784
|
}
|
785
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
786
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
785
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: FileDropDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
786
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.7", type: FileDropDirective, isStandalone: false, selector: "[ng2FileDrop]", inputs: { uploader: "uploader" }, outputs: { fileOver: "fileOver", onFileDrop: "onFileDrop" }, host: { listeners: { "drop": "onDrop($event)", "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)" } }, ngImport: i0 }); }
|
787
787
|
}
|
788
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
788
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: FileDropDirective, decorators: [{
|
789
789
|
type: Directive,
|
790
790
|
args: [{ selector: '[ng2FileDrop]', standalone: false }]
|
791
|
-
}],
|
791
|
+
}], propDecorators: { uploader: [{
|
792
792
|
type: Input
|
793
793
|
}], fileOver: [{
|
794
794
|
type: Output
|
@@ -806,10 +806,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
|
|
806
806
|
}] } });
|
807
807
|
|
808
808
|
class FileSelectDirective {
|
809
|
-
constructor(
|
809
|
+
constructor() {
|
810
810
|
// eslint-disable-next-line @angular-eslint/no-output-on-prefix
|
811
811
|
this.onFileSelected = new EventEmitter();
|
812
|
-
this.element =
|
812
|
+
this.element = inject(ElementRef);
|
813
813
|
}
|
814
814
|
getOptions() {
|
815
815
|
return this.uploader?.options;
|
@@ -830,13 +830,13 @@ class FileSelectDirective {
|
|
830
830
|
this.element.nativeElement.value = '';
|
831
831
|
}
|
832
832
|
}
|
833
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
834
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
833
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: FileSelectDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
834
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.7", type: FileSelectDirective, isStandalone: false, selector: "[ng2FileSelect]", inputs: { uploader: "uploader" }, outputs: { onFileSelected: "onFileSelected" }, host: { listeners: { "change": "onChange()" } }, ngImport: i0 }); }
|
835
835
|
}
|
836
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
836
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: FileSelectDirective, decorators: [{
|
837
837
|
type: Directive,
|
838
838
|
args: [{ selector: '[ng2FileSelect]', standalone: false }]
|
839
|
-
}],
|
839
|
+
}], propDecorators: { uploader: [{
|
840
840
|
type: Input
|
841
841
|
}], onFileSelected: [{
|
842
842
|
type: Output
|
@@ -846,11 +846,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
|
|
846
846
|
}] } });
|
847
847
|
|
848
848
|
class FileUploadModule {
|
849
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
850
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
851
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
849
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: FileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
850
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.7", ngImport: i0, type: FileUploadModule, declarations: [FileDropDirective, FileSelectDirective], imports: [CommonModule], exports: [FileDropDirective, FileSelectDirective] }); }
|
851
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: FileUploadModule, imports: [CommonModule] }); }
|
852
852
|
}
|
853
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
853
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: FileUploadModule, decorators: [{
|
854
854
|
type: NgModule,
|
855
855
|
args: [{
|
856
856
|
imports: [CommonModule],
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ng2-file-upload.mjs","sources":["../../../../libs/ng2-file-upload/file-upload/file-like-object.class.ts","../../../../libs/ng2-file-upload/file-upload/file-item.class.ts","../../../../libs/ng2-file-upload/file-upload/file-type.class.ts","../../../../libs/ng2-file-upload/file-upload/file-uploader.class.ts","../../../../libs/ng2-file-upload/file-upload/file-drop.directive.ts","../../../../libs/ng2-file-upload/file-upload/file-select.directive.ts","../../../../libs/ng2-file-upload/file-upload/file-upload.module.ts","../../../../libs/ng2-file-upload/ng2-file-upload.ts"],"sourcesContent":["export class FileLikeObject {\n lastModifiedDate: any;\n size: any;\n type?: string;\n name?: string;\n rawFile: HTMLInputElement | File;\n\n constructor(fileOrInput: HTMLInputElement | File) {\n this.rawFile = fileOrInput;\n const fakePathOrObject = fileOrInput instanceof HTMLInputElement ? fileOrInput.value : fileOrInput;\n const postfix = typeof fakePathOrObject === 'string' ? 'FakePath' : 'Object';\n const method = `_createFrom${postfix}`;\n (this as any)[ method ](fakePathOrObject);\n }\n\n _createFromFakePath(path: string): void {\n this.lastModifiedDate = void 0;\n this.size = void 0;\n this.type = `like/${path.slice(path.lastIndexOf('.') + 1).toLowerCase()}`;\n this.name = path.slice(path.lastIndexOf('/') + path.lastIndexOf('\\\\') + 2);\n }\n\n _createFromObject(object: { size: number, type: string, name: string }): void {\n this.size = object.size;\n this.type = object.type;\n this.name = object.name;\n }\n}\n","import { FileLikeObject } from './file-like-object.class';\nimport { FileUploader, ParsedResponseHeaders, FileUploaderOptions } from './file-uploader.class';\n\nexport class FileItem {\n file: FileLikeObject;\n _file: File;\n alias?: string;\n url = '/';\n method?: string;\n headers: any = [];\n withCredentials = true;\n formData: any = [];\n isReady = false;\n isUploading = false;\n isUploaded = false;\n isSuccess = false;\n isCancel = false;\n isError = false;\n progress = 0;\n index?: number;\n _xhr?: XMLHttpRequest;\n _form: any;\n\n protected uploader: FileUploader;\n protected some: File;\n protected options: FileUploaderOptions;\n\n constructor(uploader: FileUploader, some: File, options: FileUploaderOptions) {\n this.uploader = uploader;\n this.some = some;\n this.options = options;\n this.file = new FileLikeObject(some);\n this._file = some;\n if (uploader.options) {\n this.method = uploader.options.method || 'POST';\n this.alias = uploader.options.itemAlias || 'file';\n }\n this.url = uploader.options.url;\n }\n\n upload(): void {\n try {\n this.uploader.uploadItem(this);\n } catch (e) {\n this.uploader._onCompleteItem(this, '', 0, {});\n this.uploader._onErrorItem(this, '', 0, {});\n }\n }\n\n cancel(): void {\n this.uploader.cancelItem(this);\n }\n\n remove(): void {\n this.uploader.removeFromQueue(this);\n }\n\n onBeforeUpload(): void {\n return void 0;\n }\n\n onBuildForm(form: any): any {\n return { form };\n }\n\n onProgress(progress: number): any {\n return { progress };\n }\n\n onSuccess(response: string, status: number, headers: ParsedResponseHeaders): any {\n return { response, status, headers };\n }\n\n onError(response: string, status: number, headers: ParsedResponseHeaders): any {\n return { response, status, headers };\n }\n\n onCancel(response: string, status: number, headers: ParsedResponseHeaders): any {\n return { response, status, headers };\n }\n\n onComplete(response: string, status: number, headers: ParsedResponseHeaders): any {\n return { response, status, headers };\n }\n\n _onBeforeUpload(): void {\n this.isReady = true;\n this.isUploading = true;\n this.isUploaded = false;\n this.isSuccess = false;\n this.isCancel = false;\n this.isError = false;\n this.progress = 0;\n this.onBeforeUpload();\n }\n\n _onBuildForm(form: any): void {\n this.onBuildForm(form);\n }\n\n _onProgress(progress: number): void {\n this.progress = progress;\n this.onProgress(progress);\n }\n\n _onSuccess(response: string, status: number, headers: ParsedResponseHeaders): void {\n this.isReady = false;\n this.isUploading = false;\n this.isUploaded = true;\n this.isSuccess = true;\n this.isCancel = false;\n this.isError = false;\n this.progress = 100;\n this.index = undefined;\n this.onSuccess(response, status, headers);\n }\n\n _onError(response: string, status: number, headers: ParsedResponseHeaders): void {\n this.isReady = false;\n this.isUploading = false;\n this.isUploaded = true;\n this.isSuccess = false;\n this.isCancel = false;\n this.isError = true;\n this.progress = 0;\n this.index = undefined;\n this.onError(response, status, headers);\n }\n\n _onCancel(response: string, status: number, headers: ParsedResponseHeaders): void {\n this.isReady = false;\n this.isUploading = false;\n this.isUploaded = false;\n this.isSuccess = false;\n this.isCancel = true;\n this.isError = false;\n this.progress = 0;\n this.index = undefined;\n this.onCancel(response, status, headers);\n }\n\n _onComplete(response: string, status: number, headers: ParsedResponseHeaders): void {\n this.onComplete(response, status, headers);\n\n if (this.uploader.options.removeAfterUpload) {\n this.remove();\n }\n }\n\n _prepareToUploading(): void {\n this.index = this.index || ++this.uploader._nextIndex;\n this.isReady = true;\n }\n}\n","import { FileLikeObject } from '../index';\n\nexport class FileType {\n /* MS office */\n // tslint:disable-next-line:variable-name\n static mime_doc: string[] = [\n 'application/msword',\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n 'application/vnd.ms-word.document.macroEnabled.12',\n 'application/vnd.ms-word.template.macroEnabled.12'\n ];\n // tslint:disable-next-line:variable-name\n static mime_xsl: string[] = [\n 'application/vnd.ms-excel',\n 'application/vnd.ms-excel',\n 'application/vnd.ms-excel',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n 'application/vnd.ms-excel.sheet.macroEnabled.12',\n 'application/vnd.ms-excel.template.macroEnabled.12',\n 'application/vnd.ms-excel.addin.macroEnabled.12',\n 'application/vnd.ms-excel.sheet.binary.macroEnabled.12'\n ];\n // tslint:disable-next-line:variable-name\n static mime_ppt: string[] = [\n 'application/vnd.ms-powerpoint',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'application/vnd.openxmlformats-officedocument.presentationml.template',\n 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',\n 'application/vnd.ms-powerpoint.addin.macroEnabled.12',\n 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'\n ];\n\n /* PSD */\n // tslint:disable-next-line:variable-name\n static mime_psd: string[] = [\n 'image/photoshop',\n 'image/x-photoshop',\n 'image/psd',\n 'application/photoshop',\n 'application/psd',\n 'zz-application/zz-winassoc-psd'\n ];\n\n /* Compressed files */\n // tslint:disable-next-line:variable-name\n static mime_compress: string[] = [\n 'application/x-gtar',\n 'application/x-gcompress',\n 'application/compress',\n 'application/x-tar',\n 'application/x-rar-compressed',\n 'application/octet-stream',\n 'application/x-zip-compressed',\n 'application/zip-compressed',\n 'application/x-7z-compressed',\n 'application/gzip',\n 'application/x-bzip2'\n ];\n\n static getMimeClass(file: FileLikeObject): string {\n let mimeClass = 'application';\n if (file?.type && this.mime_psd.indexOf(file.type) !== -1) {\n mimeClass = 'image';\n } else if (file?.type?.match('image.*')) {\n mimeClass = 'image';\n } else if (file?.type?.match('video.*')) {\n mimeClass = 'video';\n } else if (file?.type?.match('audio.*')) {\n mimeClass = 'audio';\n } else if (file?.type === 'application/pdf') {\n mimeClass = 'pdf';\n } else if (file?.type && this.mime_compress.indexOf(file.type) !== -1) {\n mimeClass = 'compress';\n } else if (file?.type && this.mime_doc.indexOf(file.type) !== -1) {\n mimeClass = 'doc';\n } else if (file?.type && this.mime_xsl.indexOf(file.type) !== -1) {\n mimeClass = 'xls';\n } else if (file?.type && this.mime_ppt.indexOf(file.type) !== -1) {\n mimeClass = 'ppt';\n }\n if (mimeClass === 'application' && file?.name) {\n mimeClass = this.fileTypeDetection(file.name);\n }\n\n return mimeClass;\n }\n\n static fileTypeDetection(inputFilename: string): string {\n const types: { [ key: string ]: string } = {\n jpg: 'image',\n jpeg: 'image',\n tif: 'image',\n psd: 'image',\n bmp: 'image',\n png: 'image',\n nef: 'image',\n tiff: 'image',\n cr2: 'image',\n dwg: 'image',\n cdr: 'image',\n ai: 'image',\n indd: 'image',\n pin: 'image',\n cdp: 'image',\n skp: 'image',\n stp: 'image',\n '3dm': 'image',\n mp3: 'audio',\n wav: 'audio',\n wma: 'audio',\n mod: 'audio',\n m4a: 'audio',\n compress: 'compress',\n zip: 'compress',\n rar: 'compress',\n '7z': 'compress',\n lz: 'compress',\n z01: 'compress',\n bz2: 'compress',\n gz: 'compress',\n pdf: 'pdf',\n xls: 'xls',\n xlsx: 'xls',\n ods: 'xls',\n mp4: 'video',\n avi: 'video',\n wmv: 'video',\n mpg: 'video',\n mts: 'video',\n flv: 'video',\n '3gp': 'video',\n vob: 'video',\n m4v: 'video',\n mpeg: 'video',\n m2ts: 'video',\n mov: 'video',\n doc: 'doc',\n docx: 'doc',\n eps: 'doc',\n txt: 'doc',\n odt: 'doc',\n rtf: 'doc',\n ppt: 'ppt',\n pptx: 'ppt',\n pps: 'ppt',\n ppsx: 'ppt',\n odp: 'ppt'\n };\n\n const chunks = inputFilename.split('.');\n if (chunks.length < 2) {\n return 'application';\n }\n const extension = chunks[ chunks.length - 1 ].toLowerCase();\n if (types[ extension ] === undefined) {\n return 'application';\n } else {\n return types[ extension ];\n }\n }\n}\n","import { EventEmitter } from '@angular/core';\nimport { FileLikeObject } from './file-like-object.class';\nimport { FileItem } from './file-item.class';\nimport { FileType } from './file-type.class';\n\nfunction isFile(value: any): boolean {\n return (File && value instanceof File);\n}\n\nexport interface Headers {\n name: string;\n value: string;\n}\n\nexport interface ParsedResponseHeaders { [ headerFieldName: string ]: string }\n\nexport interface FilterFunction {\n name: string;\n fn(item: FileLikeObject, options?: FileUploaderOptions): boolean;\n}\n\nexport interface FileUploaderOptions {\n allowedMimeType?: string[];\n allowedFileType?: string[];\n autoUpload?: boolean;\n isHTML5?: boolean;\n filters?: FilterFunction[];\n headers?: Headers[];\n method?: string;\n authToken?: string;\n maxFileSize?: number;\n queueLimit?: number;\n removeAfterUpload?: boolean;\n url: string;\n disableMultipart?: boolean;\n itemAlias?: string;\n authTokenHeader?: string;\n additionalParameter?: { [ key: string ]: any };\n parametersBeforeFiles?: boolean;\n // eslint-disable-next-line @typescript-eslint/ban-types\n formatDataFunction?: Function;\n formatDataFunctionIsAsync?: boolean;\n}\n\nexport class FileUploader {\n\n authToken?: string;\n isUploading = false;\n queue: FileItem[] = [];\n progress = 0;\n _nextIndex = 0;\n autoUpload: any;\n authTokenHeader?: string;\n response: EventEmitter<any>;\n\n options: FileUploaderOptions = {\n autoUpload: false,\n isHTML5: true,\n filters: [],\n removeAfterUpload: false,\n disableMultipart: false,\n formatDataFunction: (item: FileItem) => item._file,\n formatDataFunctionIsAsync: false,\n url: ''\n };\n\n protected _failFilterIndex?: number;\n\n constructor(options: FileUploaderOptions) {\n this.setOptions(options);\n this.response = new EventEmitter<string>();\n }\n\n setOptions(options: FileUploaderOptions): void {\n this.options = Object.assign(this.options, options);\n\n this.authToken = this.options.authToken;\n this.authTokenHeader = this.options.authTokenHeader || 'Authorization';\n this.autoUpload = this.options.autoUpload;\n this.options.filters?.unshift({ name: 'queueLimit', fn: this._queueLimitFilter });\n\n if (this.options.maxFileSize) {\n this.options.filters?.unshift({ name: 'fileSize', fn: this._fileSizeFilter });\n }\n\n if (this.options.allowedFileType) {\n this.options.filters?.unshift({ name: 'fileType', fn: this._fileTypeFilter });\n }\n\n if (this.options.allowedMimeType) {\n this.options.filters?.unshift({ name: 'mimeType', fn: this._mimeTypeFilter });\n }\n\n for (let i = 0; i < this.queue.length; i++) {\n this.queue[ i ].url = this.options.url;\n }\n }\n\n addToQueue(files: File[], _options?: FileUploaderOptions, filters?: [] | string): void {\n let options = _options;\n const list: File[] = [];\n for (const file of files) {\n list.push(file);\n }\n const arrayOfFilters = this._getFilters(filters);\n const count = this.queue.length;\n const addedFileItems: FileItem[] = [];\n list.map((some: File) => {\n if (!options) {\n options = this.options;\n }\n\n const temp = new FileLikeObject(some);\n if (this._isValidFile(temp, arrayOfFilters, options)) {\n const fileItem = new FileItem(this, some, options);\n addedFileItems.push(fileItem);\n this.queue.push(fileItem);\n this._onAfterAddingFile(fileItem);\n } else {\n if (typeof this._failFilterIndex === 'number' && this._failFilterIndex >= 0) {\n const filter = arrayOfFilters[ this._failFilterIndex ];\n this._onWhenAddingFileFailed(temp, filter, options);\n }\n }\n });\n if (this.queue.length !== count) {\n this._onAfterAddingAll(addedFileItems);\n this.progress = this._getTotalProgress();\n }\n this._render();\n if (this.options.autoUpload) {\n this.uploadAll();\n }\n }\n\n removeFromQueue(value: FileItem): void {\n const index = this.getIndexOfItem(value);\n const item = this.queue[ index ];\n if (item.isUploading) {\n item.cancel();\n }\n this.queue.splice(index, 1);\n this.progress = this._getTotalProgress();\n }\n\n clearQueue(): void {\n while (this.queue.length) {\n this.queue[ 0 ].remove();\n }\n this.progress = 0;\n }\n\n uploadItem(value: FileItem): void {\n const index = this.getIndexOfItem(value);\n const item = this.queue[ index ];\n const transport = this.options.isHTML5 ? '_xhrTransport' : '_iframeTransport';\n item._prepareToUploading();\n if (this.isUploading) {\n return;\n }\n this.isUploading = true;\n (this as any)[ transport ](item);\n }\n\n cancelItem(value: FileItem): void {\n const index = this.getIndexOfItem(value);\n const item = this.queue[ index ];\n const prop = this.options.isHTML5 ? item._xhr : item._form;\n if (item && item.isUploading) {\n prop.abort();\n }\n }\n\n uploadAll(): void {\n const items = this.getNotUploadedItems().filter((item: FileItem) => !item.isUploading);\n if (!items.length) {\n return;\n }\n items.map((item: FileItem) => item._prepareToUploading());\n items[ 0 ].upload();\n }\n\n cancelAll(): void {\n const items = this.getNotUploadedItems();\n items.map((item: FileItem) => item.cancel());\n }\n\n isFile(value: any): boolean {\n return isFile(value);\n }\n\n isFileLikeObject(value: any): boolean {\n return value instanceof FileLikeObject;\n }\n\n getIndexOfItem(value: any): number {\n return typeof value === 'number' ? value : this.queue.indexOf(value);\n }\n\n getNotUploadedItems(): any[] {\n return this.queue.filter((item: FileItem) => !item.isUploaded);\n }\n\n getReadyItems(): any[] {\n return this.queue\n .filter((item: FileItem) => (item.isReady && !item.isUploading))\n .sort((item1: any, item2: any) => item1.index - item2.index);\n }\n\n onAfterAddingAll(fileItems: any): any {\n return { fileItems };\n }\n\n onBuildItemForm(fileItem: FileItem, form: any): any {\n return { fileItem, form };\n }\n\n onAfterAddingFile(fileItem: FileItem): any {\n return { fileItem };\n }\n\n onWhenAddingFileFailed(item: FileLikeObject, filter: any, options: any): any {\n return { item, filter, options };\n }\n\n onBeforeUploadItem(fileItem: FileItem): any {\n return { fileItem };\n }\n\n onProgressItem(fileItem: FileItem, progress: any): any {\n return { fileItem, progress };\n }\n\n onProgressAll(progress: any): any {\n return { progress };\n }\n\n onSuccessItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any {\n return { item, response, status, headers };\n }\n\n onErrorItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any {\n return { item, response, status, headers };\n }\n\n onCancelItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any {\n return { item, response, status, headers };\n }\n\n onCompleteItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any {\n return { item, response, status, headers };\n }\n\n onCompleteAll(): any {\n return void 0;\n }\n\n _mimeTypeFilter(item: FileLikeObject): boolean {\n return !(item?.type && this.options.allowedMimeType && this.options.allowedMimeType?.indexOf(item.type) === -1);\n }\n\n _fileSizeFilter(item: FileLikeObject): boolean {\n return !(this.options.maxFileSize && item.size > this.options.maxFileSize);\n }\n\n _fileTypeFilter(item: FileLikeObject): boolean {\n return !(this.options.allowedFileType &&\n this.options.allowedFileType.indexOf(FileType.getMimeClass(item)) === -1);\n }\n\n _onErrorItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void {\n item._onError(response, status, headers);\n this.onErrorItem(item, response, status, headers);\n }\n\n _onCompleteItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void {\n item._onComplete(response, status, headers);\n this.onCompleteItem(item, response, status, headers);\n const nextItem = this.getReadyItems()[ 0 ];\n this.isUploading = false;\n if (nextItem) {\n nextItem.upload();\n\n return;\n }\n this.onCompleteAll();\n this.progress = this._getTotalProgress();\n this._render();\n }\n\n protected _headersGetter(parsedHeaders: ParsedResponseHeaders): any {\n return (name: any): any => {\n if (name) {\n return parsedHeaders[ name.toLowerCase() ] || undefined;\n }\n\n return parsedHeaders;\n };\n }\n\n protected _xhrTransport(item: FileItem): any {\n // tslint:disable-next-line:no-this-assignment\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n const xhr = item._xhr = new XMLHttpRequest();\n let sendable: any;\n this._onBeforeUploadItem(item);\n\n if (typeof item._file.size !== 'number') {\n throw new TypeError('The file specified is no longer valid');\n }\n if (!this.options.disableMultipart) {\n sendable = new FormData();\n this._onBuildItemForm(item, sendable);\n const appendFile = () => sendable.append(item.alias, item._file, item.file.name);\n if (!this.options.parametersBeforeFiles) {\n appendFile();\n }\n\n // For AWS, Additional Parameters must come BEFORE Files\n if (this.options.additionalParameter !== undefined) {\n Object.keys(this.options.additionalParameter).forEach((key: string) => {\n let paramVal = this.options.additionalParameter?.[ key ];\n // Allow an additional parameter to include the filename\n if (typeof paramVal === 'string' && paramVal.indexOf('{{file_name}}') >= 0 && item.file?.name) {\n paramVal = paramVal.replace('{{file_name}}', item.file.name);\n }\n sendable.append(key, paramVal);\n });\n }\n\n if (appendFile && this.options.parametersBeforeFiles) {\n appendFile();\n }\n } else {\n if (this.options.formatDataFunction) {\n sendable = this.options.formatDataFunction(item);\n }\n }\n\n xhr.upload.onprogress = (event: any) => {\n const progress = Math.round(event.lengthComputable ? event.loaded * 100 / event.total : 0);\n this._onProgressItem(item, progress);\n };\n xhr.onload = () => {\n const headers = this._parseHeaders(xhr.getAllResponseHeaders());\n const response = this._transformResponse(xhr.response);\n const gist = this._isSuccessCode(xhr.status) ? 'Success' : 'Error';\n const method = `_on${gist}Item`;\n (this as any)[ method ](item, response, xhr.status, headers);\n this._onCompleteItem(item, response, xhr.status, headers);\n };\n xhr.onerror = () => {\n const headers = this._parseHeaders(xhr.getAllResponseHeaders());\n const response = this._transformResponse(xhr.response);\n this._onErrorItem(item, response, xhr.status, headers);\n this._onCompleteItem(item, response, xhr.status, headers);\n };\n xhr.onabort = () => {\n const headers = this._parseHeaders(xhr.getAllResponseHeaders());\n const response = this._transformResponse(xhr.response);\n this._onCancelItem(item, response, xhr.status, headers);\n this._onCompleteItem(item, response, xhr.status, headers);\n };\n if (item.method && item.url) {\n xhr.open(item.method, item.url, true);\n }\n xhr.withCredentials = item.withCredentials;\n if (this.options.headers) {\n for (const header of this.options.headers) {\n xhr.setRequestHeader(header.name, header.value);\n }\n }\n if (item.headers.length) {\n for (const header of item.headers) {\n xhr.setRequestHeader(header.name, header.value);\n }\n }\n if (this.authToken && this.authTokenHeader) {\n xhr.setRequestHeader(this.authTokenHeader, this.authToken);\n }\n xhr.onreadystatechange = function () {\n if (xhr.readyState == XMLHttpRequest.DONE) {\n that.response.emit(xhr.responseText);\n }\n };\n if (this.options.formatDataFunctionIsAsync) {\n sendable.then(\n (result: any) => xhr.send(JSON.stringify(result))\n );\n } else {\n xhr.send(sendable);\n }\n this._render();\n }\n\n protected _getTotalProgress(value = 0): number {\n if (this.options.removeAfterUpload) {\n return value;\n }\n const notUploaded = this.getNotUploadedItems().length;\n const uploaded = notUploaded ? this.queue.length - notUploaded : this.queue.length;\n const ratio = 100 / this.queue.length;\n const current = value * ratio / 100;\n return Math.round(uploaded * ratio + current);\n }\n\n protected _getFilters(filters?: FilterFunction[] | string): FilterFunction[] | [] {\n if (!filters) {\n return this.options?.filters || [];\n }\n if (Array.isArray(filters)) {\n return filters;\n }\n if (typeof filters === 'string') {\n const names = filters.match(/[^\\s,]+/g);\n\n return this.options?.filters || []\n .filter((filter: any) => names?.indexOf(filter.name) !== -1);\n }\n\n return this.options?.filters || [];\n }\n\n protected _render(): any {\n return void 0;\n }\n\n protected _queueLimitFilter(): boolean {\n return this.options.queueLimit === undefined || this.queue.length < this.options.queueLimit;\n }\n\n protected _isValidFile(file: FileLikeObject, filters: FilterFunction[], options: FileUploaderOptions): boolean {\n this._failFilterIndex = -1;\n\n return !filters.length ? true : filters.every((filter: FilterFunction) => {\n if (typeof this._failFilterIndex === 'number') {\n this._failFilterIndex++;\n }\n\n return filter.fn.call(this, file, options);\n });\n }\n\n protected _isSuccessCode(status: number): boolean {\n return (status >= 200 && status < 300) || status === 304;\n }\n\n protected _transformResponse(response: string): string {\n return response;\n }\n\n protected _parseHeaders(headers: string): ParsedResponseHeaders {\n const parsed: any = {};\n let key: any;\n let val: any;\n let i: any;\n if (!headers) {\n return parsed;\n }\n headers.split('\\n').map((line: any) => {\n i = line.indexOf(':');\n key = line.slice(0, i).trim().toLowerCase();\n val = line.slice(i + 1).trim();\n if (key) {\n parsed[ key ] = parsed[ key ] ? parsed[ key ] + ', ' + val : val;\n }\n });\n\n return parsed;\n }\n\n protected _onWhenAddingFileFailed(item: FileLikeObject, filter: any, options: any): void {\n this.onWhenAddingFileFailed(item, filter, options);\n }\n\n protected _onAfterAddingFile(item: FileItem): void {\n this.onAfterAddingFile(item);\n }\n\n protected _onAfterAddingAll(items: any): void {\n this.onAfterAddingAll(items);\n }\n\n protected _onBeforeUploadItem(item: FileItem): void {\n item._onBeforeUpload();\n this.onBeforeUploadItem(item);\n }\n\n protected _onBuildItemForm(item: FileItem, form: any): void {\n item._onBuildForm(form);\n this.onBuildItemForm(item, form);\n }\n\n protected _onProgressItem(item: FileItem, progress: any): void {\n const total = this._getTotalProgress(progress);\n this.progress = total;\n item._onProgress(progress);\n this.onProgressItem(item, progress);\n this.onProgressAll(total);\n this._render();\n }\n\n protected _onSuccessItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void {\n item._onSuccess(response, status, headers);\n this.onSuccessItem(item, response, status, headers);\n }\n\n protected _onCancelItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void {\n item._onCancel(response, status, headers);\n this.onCancelItem(item, response, status, headers);\n }\n}\n","import { Directive, EventEmitter, ElementRef, HostListener, Input, Output } from '@angular/core';\n\nimport { FileUploader, FileUploaderOptions } from './file-uploader.class';\n\n@Directive({ selector: '[ng2FileDrop]', standalone: false })\nexport class FileDropDirective {\n @Input() uploader?: FileUploader;\n @Output() fileOver: EventEmitter<any> = new EventEmitter();\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onFileDrop: EventEmitter<File[]> = new EventEmitter<File[]>();\n\n protected element: ElementRef;\n\n constructor(element: ElementRef) {\n this.element = element;\n }\n\n getOptions(): FileUploaderOptions | void {\n return this.uploader?.options;\n }\n\n getFilters(): string {\n return '';\n }\n\n @HostListener('drop', [ '$event' ])\n onDrop(event: MouseEvent): void {\n const transfer = this._getTransfer(event);\n if (!transfer) {\n return;\n }\n\n const options = this.getOptions();\n const filters = this.getFilters();\n this._preventAndStop(event);\n if (options) {\n this.uploader?.addToQueue(transfer.files, options, filters);\n }\n this.fileOver.emit(false);\n this.onFileDrop.emit(transfer.files);\n }\n\n @HostListener('dragover', [ '$event' ])\n onDragOver(event: MouseEvent): void {\n const transfer = this._getTransfer(event);\n if (!this._haveFiles(transfer.types)) {\n return;\n }\n\n transfer.dropEffect = 'copy';\n this._preventAndStop(event);\n this.fileOver.emit(true);\n }\n\n @HostListener('dragleave', [ '$event' ])\n onDragLeave(event: MouseEvent): void {\n if ((this as any).element) {\n if (event.currentTarget === (this as any).element[ 0 ]) {\n return;\n }\n }\n\n this._preventAndStop(event);\n this.fileOver.emit(false);\n }\n\n protected _getTransfer(event: any): any {\n return event.dataTransfer ? event.dataTransfer : event.originalEvent.dataTransfer; // jQuery fix;\n }\n\n protected _preventAndStop(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n protected _haveFiles(types: any): boolean {\n if (!types) {\n return false;\n }\n\n if (types.indexOf) {\n return types.indexOf('Files') !== -1;\n } else if (types.contains) {\n return types.contains('Files');\n } else {\n return false;\n }\n }\n}\n","import { Directive, EventEmitter, ElementRef, Input, HostListener, Output } from '@angular/core';\n\nimport { FileUploader, FileUploaderOptions } from './file-uploader.class';\n\n@Directive({ selector: '[ng2FileSelect]', standalone: false })\nexport class FileSelectDirective {\n @Input() uploader?: FileUploader;\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onFileSelected: EventEmitter<File[]> = new EventEmitter<File[]>();\n\n protected element: ElementRef;\n\n constructor(element: ElementRef) {\n this.element = element;\n }\n\n getOptions(): FileUploaderOptions | undefined {\n return this.uploader?.options;\n }\n\n getFilters(): string {\n return '';\n }\n\n isEmptyAfterSelection(): boolean {\n return !!this.element.nativeElement.attributes.multiple;\n }\n\n @HostListener('change')\n onChange(): void {\n const files = this.element.nativeElement.files;\n const options = this.getOptions();\n const filters = this.getFilters();\n this.uploader?.addToQueue(files, options, filters);\n\n this.onFileSelected.emit(files);\n if (this.isEmptyAfterSelection()) {\n this.element.nativeElement.value = '';\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FileDropDirective } from './file-drop.directive';\nimport { FileSelectDirective } from './file-select.directive';\n\n@NgModule({\n imports: [ CommonModule ],\n declarations: [ FileDropDirective, FileSelectDirective ],\n exports: [ FileDropDirective, FileSelectDirective ]\n})\nexport class FileUploadModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ng2-file-upload.mjs","sources":["../tmp-esm2022/file-upload/file-like-object.class.js","../tmp-esm2022/file-upload/file-item.class.js","../tmp-esm2022/file-upload/file-type.class.js","../tmp-esm2022/file-upload/file-uploader.class.js","../tmp-esm2022/file-upload/file-drop.directive.js","../tmp-esm2022/file-upload/file-select.directive.js","../tmp-esm2022/file-upload/file-upload.module.js","../tmp-esm2022/ng2-file-upload.js"],"sourcesContent":["export class FileLikeObject {\n constructor(fileOrInput) {\n this.rawFile = fileOrInput;\n const fakePathOrObject = fileOrInput instanceof HTMLInputElement ? fileOrInput.value : fileOrInput;\n const postfix = typeof fakePathOrObject === 'string' ? 'FakePath' : 'Object';\n const method = `_createFrom${postfix}`;\n this[method](fakePathOrObject);\n }\n _createFromFakePath(path) {\n this.lastModifiedDate = void 0;\n this.size = void 0;\n this.type = `like/${path.slice(path.lastIndexOf('.') + 1).toLowerCase()}`;\n this.name = path.slice(path.lastIndexOf('/') + path.lastIndexOf('\\\\') + 2);\n }\n _createFromObject(object) {\n this.size = object.size;\n this.type = object.type;\n this.name = object.name;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1saWtlLW9iamVjdC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmcyLWZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkL2ZpbGUtbGlrZS1vYmplY3QuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGNBQWM7SUFPekIsWUFBWSxXQUFvQztRQUM5QyxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQztRQUMzQixNQUFNLGdCQUFnQixHQUFJLFdBQVcsWUFBWSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQ3BHLE1BQU0sT0FBTyxHQUFHLE9BQU8sZ0JBQWdCLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUM3RSxNQUFNLE1BQU0sR0FBRyxjQUFjLE9BQU8sRUFBRSxDQUFDO1FBQ3RDLElBQVksQ0FBRSxNQUFNLENBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFZO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztRQUMxRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFvRDtRQUNwRSxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztJQUMxQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRmlsZUxpa2VPYmplY3Qge1xuICBsYXN0TW9kaWZpZWREYXRlOiBhbnk7XG4gIHNpemU6IGFueTtcbiAgdHlwZT86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgcmF3RmlsZTogSFRNTElucHV0RWxlbWVudCB8IEZpbGU7XG5cbiAgY29uc3RydWN0b3IoZmlsZU9ySW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBGaWxlKSB7XG4gICAgdGhpcy5yYXdGaWxlID0gZmlsZU9ySW5wdXQ7XG4gICAgY29uc3QgZmFrZVBhdGhPck9iamVjdCA9ICBmaWxlT3JJbnB1dCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgPyBmaWxlT3JJbnB1dC52YWx1ZSA6IGZpbGVPcklucHV0O1xuICAgIGNvbnN0IHBvc3RmaXggPSB0eXBlb2YgZmFrZVBhdGhPck9iamVjdCA9PT0gJ3N0cmluZycgPyAnRmFrZVBhdGgnIDogJ09iamVjdCc7XG4gICAgY29uc3QgbWV0aG9kID0gYF9jcmVhdGVGcm9tJHtwb3N0Zml4fWA7XG4gICAgKHRoaXMgYXMgYW55KVsgbWV0aG9kIF0oZmFrZVBhdGhPck9iamVjdCk7XG4gIH1cblxuICBfY3JlYXRlRnJvbUZha2VQYXRoKHBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubGFzdE1vZGlmaWVkRGF0ZSA9IHZvaWQgMDtcbiAgICB0aGlzLnNpemUgPSB2b2lkIDA7XG4gICAgdGhpcy50eXBlID0gYGxpa2UvJHtwYXRoLnNsaWNlKHBhdGgubGFzdEluZGV4T2YoJy4nKSArIDEpLnRvTG93ZXJDYXNlKCl9YDtcbiAgICB0aGlzLm5hbWUgPSBwYXRoLnNsaWNlKHBhdGgubGFzdEluZGV4T2YoJy8nKSArIHBhdGgubGFzdEluZGV4T2YoJ1xcXFwnKSArIDIpO1xuICB9XG5cbiAgX2NyZWF0ZUZyb21PYmplY3Qob2JqZWN0OiB7IHNpemU6IG51bWJlciwgdHlwZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcgfSk6IHZvaWQge1xuICAgIHRoaXMuc2l6ZSA9IG9iamVjdC5zaXplO1xuICAgIHRoaXMudHlwZSA9IG9iamVjdC50eXBlO1xuICAgIHRoaXMubmFtZSA9IG9iamVjdC5uYW1lO1xuICB9XG59XG4iXX0=","import { FileLikeObject } from './file-like-object.class';\nexport class FileItem {\n constructor(uploader, some, options) {\n this.url = '/';\n this.headers = [];\n this.withCredentials = true;\n this.formData = [];\n this.isReady = false;\n this.isUploading = false;\n this.isUploaded = false;\n this.isSuccess = false;\n this.isCancel = false;\n this.isError = false;\n this.progress = 0;\n this.uploader = uploader;\n this.some = some;\n this.options = options;\n this.file = new FileLikeObject(some);\n this._file = some;\n if (uploader.options) {\n this.method = uploader.options.method || 'POST';\n this.alias = uploader.options.itemAlias || 'file';\n }\n this.url = uploader.options.url;\n }\n upload() {\n try {\n this.uploader.uploadItem(this);\n }\n catch (e) {\n this.uploader._onCompleteItem(this, '', 0, {});\n this.uploader._onErrorItem(this, '', 0, {});\n }\n }\n cancel() {\n this.uploader.cancelItem(this);\n }\n remove() {\n this.uploader.removeFromQueue(this);\n }\n onBeforeUpload() {\n return void 0;\n }\n onBuildForm(form) {\n return { form };\n }\n onProgress(progress) {\n return { progress };\n }\n onSuccess(response, status, headers) {\n return { response, status, headers };\n }\n onError(response, status, headers) {\n return { response, status, headers };\n }\n onCancel(response, status, headers) {\n return { response, status, headers };\n }\n onComplete(response, status, headers) {\n return { response, status, headers };\n }\n _onBeforeUpload() {\n this.isReady = true;\n this.isUploading = true;\n this.isUploaded = false;\n this.isSuccess = false;\n this.isCancel = false;\n this.isError = false;\n this.progress = 0;\n this.onBeforeUpload();\n }\n _onBuildForm(form) {\n this.onBuildForm(form);\n }\n _onProgress(progress) {\n this.progress = progress;\n this.onProgress(progress);\n }\n _onSuccess(response, status, headers) {\n this.isReady = false;\n this.isUploading = false;\n this.isUploaded = true;\n this.isSuccess = true;\n this.isCancel = false;\n this.isError = false;\n this.progress = 100;\n this.index = undefined;\n this.onSuccess(response, status, headers);\n }\n _onError(response, status, headers) {\n this.isReady = false;\n this.isUploading = false;\n this.isUploaded = true;\n this.isSuccess = false;\n this.isCancel = false;\n this.isError = true;\n this.progress = 0;\n this.index = undefined;\n this.onError(response, status, headers);\n }\n _onCancel(response, status, headers) {\n this.isReady = false;\n this.isUploading = false;\n this.isUploaded = false;\n this.isSuccess = false;\n this.isCancel = true;\n this.isError = false;\n this.progress = 0;\n this.index = undefined;\n this.onCancel(response, status, headers);\n }\n _onComplete(response, status, headers) {\n this.onComplete(response, status, headers);\n if (this.uploader.options.removeAfterUpload) {\n this.remove();\n }\n }\n _prepareToUploading() {\n this.index = this.index || ++this.uploader._nextIndex;\n this.isReady = true;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pdGVtLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZzItZmlsZS11cGxvYWQvZmlsZS11cGxvYWQvZmlsZS1pdGVtLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUcxRCxNQUFNLE9BQU8sUUFBUTtJQXdCbEIsWUFBWSxRQUFzQixFQUFFLElBQVUsRUFBRSxPQUE0QjtRQXBCNUUsUUFBRyxHQUFHLEdBQUcsQ0FBQztRQUVWLFlBQU8sR0FBUSxFQUFFLENBQUM7UUFDbEIsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDdkIsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUNuQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsYUFBUSxHQUFHLENBQUMsQ0FBQztRQVVaLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUM7WUFDaEQsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFNB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QUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVBLFFBQVEsQ0FBQyxRQUFnQixFQUFFLE1BQWMsRUFBRSxPQUE4QjtRQUN4RSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVBLFNBQVMsQ0FBQyxRQUFnQixFQUFFLE1BQWMsRUFBRSxPQUE4QjtRQUN6RSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVBLFdBQVcsQ0FBQyxRQUFnQixFQUFFLE1BQWMsRUFBRSxPQUE4QjtRQUMzRSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFM0MsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQztJQUVBLG1CQUFtQjtRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztRQUN0RCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN0QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWxlTGlrZU9iamVjdCB9IGZyb20gJy4vZmlsZS1saWtlLW9iamVjdC5jbGFzcyc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkZXIsIFBhcnNlZFJlc3BvbnNlSGVhZGVycywgRmlsZVVwbG9hZGVyT3B0aW9ucyB9IGZyb20gJy4vZmlsZS11cGxvYWRlci5jbGFzcyc7XG5cbmV4cG9ydCBjbGFzcyBGaWxlSXRlbSB7XG4gICBmaWxlOiBGaWxlTGlrZU9iamVjdDtcbiAgIF9maWxlOiBGaWxlO1xuICAgYWxpYXM/OiBzdHJpbmc7XG4gICB1cmwgPSAnLyc7XG4gICBtZXRob2Q/OiBzdHJpbmc7XG4gICBoZWFkZXJzOiBhbnkgPSBbXTtcbiAgIHdpdGhDcmVkZW50aWFscyA9IHRydWU7XG4gICBmb3JtRGF0YTogYW55ID0gW107XG4gICBpc1JlYWR5ID0gZmFsc2U7XG4gICBpc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgaXNVcGxvYWRlZCA9IGZhbHNlO1xuICAgaXNTdWNjZXNzID0gZmFsc2U7XG4gICBpc0NhbmNlbCA9IGZhbHNlO1xuICAgaXNFcnJvciA9IGZhbHNlO1xuICAgcHJvZ3Jlc3MgPSAwO1xuICAgaW5kZXg/OiBudW1iZXI7XG4gICBfeGhyPzogWE1MSHR0cFJlcXVlc3Q7XG4gICBfZm9ybTogYW55O1xuXG4gIHByb3RlY3RlZCB1cGxvYWRlcjogRmlsZVVwbG9hZGVyO1xuICBwcm90ZWN0ZWQgc29tZTogRmlsZTtcbiAgcHJvdGVjdGVkIG9wdGlvbnM6IEZpbGVVcGxvYWRlck9wdGlvbnM7XG5cbiAgIGNvbnN0cnVjdG9yKHVwbG9hZGVyOiBGaWxlVXBsb2FkZXIsIHNvbWU6IEZpbGUsIG9wdGlvbnM6IEZpbGVVcGxvYWRlck9wdGlvbnMpIHtcbiAgICB0aGlzLnVwbG9hZGVyID0gdXBsb2FkZXI7XG4gICAgdGhpcy5zb21lID0gc29tZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuZmlsZSA9IG5ldyBGaWxlTGlrZU9iamVjdChzb21lKTtcbiAgICB0aGlzLl9maWxlID0gc29tZTtcbiAgICBpZiAodXBsb2FkZXIub3B0aW9ucykge1xuICAgICAgdGhpcy5tZXRob2QgPSB1cGxvYWRlci5vcHRpb25zLm1ldGhvZCB8fCAnUE9TVCc7XG4gICAgICB0aGlzLmFsaWFzID0gdXBsb2FkZXIub3B0aW9ucy5pdGVtQWxpYXMgfHwgJ2ZpbGUnO1xuICAgIH1cbiAgICB0aGlzLnVybCA9IHVwbG9hZGVyLm9wdGlvbnMudXJsO1xuICB9XG5cbiAgIHVwbG9hZCgpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy51cGxvYWRlci51cGxvYWRJdGVtKHRoaXMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMudXBsb2FkZXIuX29uQ29tcGxldGVJdGVtKHRoaXMsICcnLCAwLCB7fSk7XG4gICAgICB0aGlzLnVwbG9hZGVyLl9vbkVycm9ySXRlbSh0aGlzLCAnJywgMCwge30pO1xuICAgIH1cbiAgfVxuXG4gICBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy51cGxvYWRlci5jYW5jZWxJdGVtKHRoaXMpO1xuICB9XG5cbiAgIHJlbW92ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnVwbG9hZGVyLnJlbW92ZUZyb21RdWV1ZSh0aGlzKTtcbiAgfVxuXG4gICBvbkJlZm9yZVVwbG9hZCgpOiB2b2lkIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgIG9uQnVpbGRGb3JtKGZvcm06IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHsgZm9ybSB9O1xuICB9XG5cbiAgIG9uUHJvZ3Jlc3MocHJvZ3Jlc3M6IG51bWJlcik6IGFueSB7XG4gICAgcmV0dXJuIHsgcHJvZ3Jlc3MgfTtcbiAgfVxuXG4gICBvblN1Y2Nlc3MocmVzcG9uc2U6IHN0cmluZywgc3RhdHVzOiBudW1iZXIsIGhlYWRlcnM6IFBhcnNlZFJlc3BvbnNlSGVhZGVycyk6IGFueSB7XG4gICAgcmV0dXJuIHsgcmVzcG9uc2UsIHN0YXR1cywgaGVhZGVycyB9O1xuICB9XG5cbiAgIG9uRXJyb3IocmVzcG9uc2U6IHN0cmluZywgc3RhdHVzOiBudW1iZXIsIGhlYWRlcnM6IFBhcnNlZFJlc3BvbnNlSGVhZGVycyk6IGFueSB7XG4gICAgcmV0dXJuIHsgcmVzcG9uc2UsIHN0YXR1cywgaGVhZGVycyB9O1xuICB9XG5cbiAgIG9uQ2FuY2VsKHJlc3BvbnNlOiBzdHJpbmcsIHN0YXR1czogbnVtYmVyLCBoZWFkZXJzOiBQYXJzZWRSZXNwb25zZUhlYWRlcnMpOiBhbnkge1xuICAgIHJldHVybiB7IHJlc3BvbnNlLCBzdGF0dXMsIGhlYWRlcnMgfTtcbiAgfVxuXG4gICBvbkNvbXBsZXRlKHJlc3BvbnNlOiBzdHJpbmcsIHN0YXR1czogbnVtYmVyLCBoZWFkZXJzOiBQYXJzZWRSZXNwb25zZUhlYWRlcnMpOiBhbnkge1xuICAgIHJldHVybiB7IHJlc3BvbnNlLCBzdGF0dXMsIGhlYWRlcnMgfTtcbiAgfVxuXG4gICBfb25CZWZvcmVVcGxvYWQoKTogdm9pZCB7XG4gICAgdGhpcy5pc1JlYWR5ID0gdHJ1ZTtcbiAgICB0aGlzLmlzVXBsb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmlzVXBsb2FkZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzU3VjY2VzcyA9IGZhbHNlO1xuICAgIHRoaXMuaXNDYW5jZWwgPSBmYWxzZTtcbiAgICB0aGlzLmlzRXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLnByb2dyZXNzID0gMDtcbiAgICB0aGlzLm9uQmVmb3JlVXBsb2FkKCk7XG4gIH1cblxuICAgX29uQnVpbGRGb3JtKGZvcm06IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25CdWlsZEZvcm0oZm9ybSk7XG4gIH1cblxuICAgX29uUHJvZ3Jlc3MocHJvZ3Jlc3M6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucHJvZ3Jlc3MgPSBwcm9ncmVzcztcbiAgICB0aGlzLm9uUHJvZ3Jlc3MocHJvZ3Jlc3MpO1xuICB9XG5cbiAgIF9vblN1Y2Nlc3MocmVzcG9uc2U6IHN0cmluZywgc3RhdHVzOiBudW1iZXIsIGhlYWRlcnM6IFBhcnNlZFJlc3BvbnNlSGVhZGVycyk6IHZvaWQge1xuICAgIHRoaXMuaXNSZWFkeSA9IGZhbHNlO1xuICAgIHRoaXMuaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmlzVXBsb2FkZWQgPSB0cnVlO1xuICAgIHRoaXMuaXNTdWNjZXNzID0gdHJ1ZTtcbiAgICB0aGlzLmlzQ2FuY2VsID0gZmFsc2U7XG4gICAgdGhpcy5pc0Vycm9yID0gZmFsc2U7XG4gICAgdGhpcy5wcm9ncmVzcyA9IDEwMDtcbiAgICB0aGlzLmluZGV4ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub25TdWNjZXNzKHJlc3BvbnNlLCBzdGF0dXMsIGhlYWRlcnMpO1xuICB9XG5cbiAgIF9vbkVycm9yKHJlc3BvbnNlOiBzdHJpbmcsIHN0YXR1czogbnVtYmVyLCBoZWFkZXJzOiBQYXJzZWRSZXNwb25zZUhlYWRlcnMpOiB2b2lkIHtcbiAgICB0aGlzLmlzUmVhZHkgPSBmYWxzZTtcbiAgICB0aGlzLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5pc1VwbG9hZGVkID0gdHJ1ZTtcbiAgICB0aGlzLmlzU3VjY2VzcyA9IGZhbHNlO1xuICAgIHRoaXMuaXNDYW5jZWwgPSBmYWxzZTtcbiAgICB0aGlzLmlzRXJyb3IgPSB0cnVlO1xuICAgIHRoaXMucHJvZ3Jlc3MgPSAwO1xuICAgIHRoaXMuaW5kZXggPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vbkVycm9yKHJlc3BvbnNlLCBzdGF0dXMsIGhlYWRlcnMpO1xuICB9XG5cbiAgIF9vbkNhbmNlbChyZXNwb25zZTogc3RyaW5nLCBzdGF0dXM6IG51bWJlciwgaGVhZGVyczogUGFyc2VkUmVzcG9uc2VIZWFkZXJzKTogdm9pZCB7XG4gICAgdGhpcy5pc1JlYWR5ID0gZmFsc2U7XG4gICAgdGhpcy5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuaXNVcGxvYWRlZCA9IGZhbHNlO1xuICAgIHRoaXMuaXNTdWNjZXNzID0gZmFsc2U7XG4gICAgdGhpcy5pc0NhbmNlbCA9IHRydWU7XG4gICAgdGhpcy5pc0Vycm9yID0gZmFsc2U7XG4gICAgdGhpcy5wcm9ncmVzcyA9IDA7XG4gICAgdGhpcy5pbmRleCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9uQ2FuY2VsKHJlc3BvbnNlLCBzdGF0dXMsIGhlYWRlcnMpO1xuICB9XG5cbiAgIF9vbkNvbXBsZXRlKHJlc3BvbnNlOiBzdHJpbmcsIHN0YXR1czogbnVtYmVyLCBoZWFkZXJzOiBQYXJzZWRSZXNwb25zZUhlYWRlcnMpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ29tcGxldGUocmVzcG9uc2UsIHN0YXR1cywgaGVhZGVycyk7XG5cbiAgICBpZiAodGhpcy51cGxvYWRlci5vcHRpb25zLnJlbW92ZUFmdGVyVXBsb2FkKSB7XG4gICAgICB0aGlzLnJlbW92ZSgpO1xuICAgIH1cbiAgfVxuXG4gICBfcHJlcGFyZVRvVXBsb2FkaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuaW5kZXggPSB0aGlzLmluZGV4IHx8ICsrdGhpcy51cGxvYWRlci5fbmV4dEluZGV4O1xuICAgIHRoaXMuaXNSZWFkeSA9IHRydWU7XG4gIH1cbn1cbiJdfQ==","export class FileType {\n /* MS office */\n // tslint:disable-next-line:variable-name\n static { this.mime_doc = [\n 'application/msword',\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n 'application/vnd.ms-word.document.macroEnabled.12',\n 'application/vnd.ms-word.template.macroEnabled.12'\n ]; }\n // tslint:disable-next-line:variable-name\n static { this.mime_xsl = [\n 'application/vnd.ms-excel',\n 'application/vnd.ms-excel',\n 'application/vnd.ms-excel',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n 'application/vnd.ms-excel.sheet.macroEnabled.12',\n 'application/vnd.ms-excel.template.macroEnabled.12',\n 'application/vnd.ms-excel.addin.macroEnabled.12',\n 'application/vnd.ms-excel.sheet.binary.macroEnabled.12'\n ]; }\n // tslint:disable-next-line:variable-name\n static { this.mime_ppt = [\n 'application/vnd.ms-powerpoint',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'application/vnd.openxmlformats-officedocument.presentationml.template',\n 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',\n 'application/vnd.ms-powerpoint.addin.macroEnabled.12',\n 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'\n ]; }\n /* PSD */\n // tslint:disable-next-line:variable-name\n static { this.mime_psd = [\n 'image/photoshop',\n 'image/x-photoshop',\n 'image/psd',\n 'application/photoshop',\n 'application/psd',\n 'zz-application/zz-winassoc-psd'\n ]; }\n /* Compressed files */\n // tslint:disable-next-line:variable-name\n static { this.mime_compress = [\n 'application/x-gtar',\n 'application/x-gcompress',\n 'application/compress',\n 'application/x-tar',\n 'application/x-rar-compressed',\n 'application/octet-stream',\n 'application/x-zip-compressed',\n 'application/zip-compressed',\n 'application/x-7z-compressed',\n 'application/gzip',\n 'application/x-bzip2'\n ]; }\n static getMimeClass(file) {\n let mimeClass = 'application';\n if (file?.type && this.mime_psd.indexOf(file.type) !== -1) {\n mimeClass = 'image';\n }\n else if (file?.type?.match('image.*')) {\n mimeClass = 'image';\n }\n else if (file?.type?.match('video.*')) {\n mimeClass = 'video';\n }\n else if (file?.type?.match('audio.*')) {\n mimeClass = 'audio';\n }\n else if (file?.type === 'application/pdf') {\n mimeClass = 'pdf';\n }\n else if (file?.type && this.mime_compress.indexOf(file.type) !== -1) {\n mimeClass = 'compress';\n }\n else if (file?.type && this.mime_doc.indexOf(file.type) !== -1) {\n mimeClass = 'doc';\n }\n else if (file?.type && this.mime_xsl.indexOf(file.type) !== -1) {\n mimeClass = 'xls';\n }\n else if (file?.type && this.mime_ppt.indexOf(file.type) !== -1) {\n mimeClass = 'ppt';\n }\n if (mimeClass === 'application' && file?.name) {\n mimeClass = this.fileTypeDetection(file.name);\n }\n return mimeClass;\n }\n static fileTypeDetection(inputFilename) {\n const types = {\n jpg: 'image',\n jpeg: 'image',\n tif: 'image',\n psd: 'image',\n bmp: 'image',\n png: 'image',\n nef: 'image',\n tiff: 'image',\n cr2: 'image',\n dwg: 'image',\n cdr: 'image',\n ai: 'image',\n indd: 'image',\n pin: 'image',\n cdp: 'image',\n skp: 'image',\n stp: 'image',\n '3dm': 'image',\n mp3: 'audio',\n wav: 'audio',\n wma: 'audio',\n mod: 'audio',\n m4a: 'audio',\n compress: 'compress',\n zip: 'compress',\n rar: 'compress',\n '7z': 'compress',\n lz: 'compress',\n z01: 'compress',\n bz2: 'compress',\n gz: 'compress',\n pdf: 'pdf',\n xls: 'xls',\n xlsx: 'xls',\n ods: 'xls',\n mp4: 'video',\n avi: 'video',\n wmv: 'video',\n mpg: 'video',\n mts: 'video',\n flv: 'video',\n '3gp': 'video',\n vob: 'video',\n m4v: 'video',\n mpeg: 'video',\n m2ts: 'video',\n mov: 'video',\n doc: 'doc',\n docx: 'doc',\n eps: 'doc',\n txt: 'doc',\n odt: 'doc',\n rtf: 'doc',\n ppt: 'ppt',\n pptx: 'ppt',\n pps: 'ppt',\n ppsx: 'ppt',\n odp: 'ppt'\n };\n const chunks = inputFilename.split('.');\n if (chunks.length < 2) {\n return 'application';\n }\n const extension = chunks[chunks.length - 1].toLowerCase();\n if (types[extension] === undefined) {\n return 'application';\n }\n else {\n return types[extension];\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZzItZmlsZS11cGxvYWQvZmlsZS11cGxvYWQvZmlsZS10eXBlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxRQUFRO0lBQ25CLGlCQUFpQjtJQUNqQix5Q0FBeUM7YUFDbEMsYUFBUSxHQUFhO1FBQzFCLG9CQUFvQjtRQUNwQixvQkFBb0I7UUFDcEIseUVBQXlFO1FBQ3pFLHlFQUF5RTtRQUN6RSxrREFBa0Q7UUFDbEQsa0RBQWtEO0tBQ25ELENBQUM7SUFDRix5Q0FBeUM7YUFDbEMsYUFBUSxHQUFhO1FBQzFCLDBCQUEwQjtRQUMxQiwwQkFBMEI7UUFDMUIsMEJBQTBCO1FBQzFCLG1FQUFtRTtRQUNuRSxzRUFBc0U7UUFDdEUsZ0RBQWdEO1FBQ2hELG1EQUFtRDtRQUNuRCxnREFBZ0Q7UUFDaEQsdURBQXVEO0tBQ3hELENBQUM7SUFDRix5Q0FBeUM7YUFDbEMsYUFBUSxHQUFhO1FBQzFCLCtCQUErQjtRQUMvQiwrQkFBK0I7UUFDL0IsK0JBQStCO1FBQy9CLCtCQUErQjtRQUMvQiwyRUFBMkU7UUFDM0UsdUVBQXVFO1FBQ3ZFLHdFQUF3RTtRQUN4RSxxREFBcUQ7UUFDckQsNERBQTREO1FBQzVELDREQUE0RDtRQUM1RCx5REFBeUQ7S0FDMUQsQ0FBQztJQUVGLFNBQVM7SUFDVCx5Q0FBeUM7YUFDbEMsYUFBUSxHQUFhO1FBQzFCLGlCQUFpQjtRQUNqQixtQkFBbUI7UUFDbkIsV0FBVztRQUNYLHVCQUF1QjtRQUN2QixpQkFBaUI7UUFDakIsZ0NBQWdDO0tBQ2pDLENBQUM7SUFFRixzQkFBc0I7SUFDdEIseUNBQXlDO2FBQ2xDLGtCQUFhLEdBQWE7UUFDL0Isb0JBQW9CO1FBQ3BCLHlCQUF5QjtRQUN6QixzQkFBc0I7UUFDdEIsbUJBQW1CO1FBQ25CLDhCQUE4QjtRQUM5QiwwQkFBMEI7UUFDMUIs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RSxDQUFDO1lBQ3RCLE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM1RCxJQUFJLEtBQUssQ0FBRSxTQUFTLENBQUUsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNyQyxPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sS0FBSyxDQUFFLFNBQVMsQ0FBRSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsZUxpa2VPYmplY3QgfSBmcm9tICcuLi9pbmRleCc7XG5cbmV4cG9ydCBjbGFzcyBGaWxlVHlwZSB7XG4gIC8qICBNUyBvZmZpY2UgICovXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHN0YXRpYyBtaW1lX2RvYzogc3RyaW5nW10gPSBbXG4gICAgJ2FwcGxpY2F0aW9uL21zd29yZCcsXG4gICAgJ2FwcGxpY2F0aW9uL21zd29yZCcsXG4gICAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JyxcbiAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwudGVtcGxhdGUnLFxuICAgICdhcHBsaWNhdGlvbi92bmQubXMtd29yZC5kb2N1bWVudC5tYWNyb0VuYWJsZWQuMTInLFxuICAgICdhcHBsaWNhdGlvbi92bmQubXMtd29yZC50ZW1wbGF0ZS5tYWNyb0VuYWJsZWQuMTInXG4gIF07XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHN0YXRpYyBtaW1lX3hzbDogc3RyaW5nW10gPSBbXG4gICAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCcsXG4gICAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCcsXG4gICAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCcsXG4gICAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyxcbiAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGVtcGxhdGUnLFxuICAgICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQubWFjcm9FbmFibGVkLjEyJyxcbiAgICAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnRlbXBsYXRlLm1hY3JvRW5hYmxlZC4xMicsXG4gICAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb0VuYWJsZWQuMTInLFxuICAgICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQuYmluYXJ5Lm1hY3JvRW5hYmxlZC4xMidcbiAgXTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgc3RhdGljIG1pbWVfcHB0OiBzdHJpbmdbXSA9IFtcbiAgICAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnLFxuICAgICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcsXG4gICAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JyxcbiAgICAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnLFxuICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uJyxcbiAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnRlbXBsYXRlJyxcbiAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlc2hvdycsXG4gICAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LmFkZGluLm1hY3JvRW5hYmxlZC4xMicsXG4gICAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnByZXNlbnRhdGlvbi5tYWNyb0VuYWJsZWQuMTInLFxuICAgICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5wcmVzZW50YXRpb24ubWFjcm9FbmFibGVkLjEyJyxcbiAgICAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQuc2xpZGVzaG93Lm1hY3JvRW5hYmxlZC4xMidcbiAgXTtcblxuICAvKiBQU0QgKi9cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgc3RhdGljIG1pbWVfcHNkOiBzdHJpbmdbXSA9IFtcbiAgICAnaW1hZ2UvcGhvdG9zaG9wJyxcbiAgICAnaW1hZ2UveC1waG90b3Nob3AnLFxuICAgICdpbWFnZS9wc2QnLFxuICAgICdhcHBsaWNhdGlvbi9waG90b3Nob3AnLFxuICAgICdhcHBsaWNhdGlvbi9wc2QnLFxuICAgICd6ei1hcHBsaWNhdGlvbi96ei13aW5hc3NvYy1wc2QnXG4gIF07XG5cbiAgLyogQ29tcHJlc3NlZCBmaWxlcyAqL1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBzdGF0aWMgbWltZV9jb21wcmVzczogc3RyaW5nW10gPSBbXG4gICAgJ2FwcGxpY2F0aW9uL3gtZ3RhcicsXG4gICAgJ2FwcGxpY2F0aW9uL3gtZ2NvbXByZXNzJyxcbiAgICAnYXBwbGljYXRpb24vY29tcHJlc3MnLFxuICAgICdhcHBsaWNhdGlvbi94LXRhcicsXG4gICAgJ2FwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQnLFxuICAgICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLFxuICAgICdhcHBsaWNhdGlvbi94LXppcC1jb21wcmVzc2VkJyxcbiAgICAnYXBwbGljYXRpb24vemlwLWNvbXByZXNzZWQnLFxuICAgICdhcHBsaWNhdGlvbi94LTd6LWNvbXByZXNzZWQnLFxuICAgICdhcHBsaWNhdGlvbi9nemlwJyxcbiAgICAnYXBwbGljYXRpb24veC1iemlwMidcbiAgXTtcblxuICBzdGF0aWMgZ2V0TWltZUNsYXNzKGZpbGU6IEZpbGVMaWtlT2JqZWN0KTogc3RyaW5nIHtcbiAgICBsZXQgbWltZUNsYXNzID0gJ2FwcGxpY2F0aW9uJztcbiAgICBpZiAoZmlsZT8udHlwZSAmJiB0aGlzLm1pbWVfcHNkLmluZGV4T2YoZmlsZS50eXBlKSAhPT0gLTEpIHtcbiAgICAgIG1pbWVDbGFzcyA9ICdpbWFnZSc7XG4gICAgfSBlbHNlIGlmIChmaWxlPy50eXBlPy5tYXRjaCgnaW1hZ2UuKicpKSB7XG4gICAgICBtaW1lQ2xhc3MgPSAnaW1hZ2UnO1xuICAgIH0gZWxzZSBpZiAoZmlsZT8udHlwZT8ubWF0Y2goJ3ZpZGVvLionKSkge1xuICAgICAgbWltZUNsYXNzID0gJ3ZpZGVvJztcbiAgICB9IGVsc2UgaWYgKGZpbGU/LnR5cGU/Lm1hdGNoKCdhdWRpby4qJykpIHtcbiAgICAgIG1pbWVDbGFzcyA9ICdhdWRpbyc7XG4gICAgfSBlbHNlIGlmIChmaWxlPy50eXBlID09PSAnYXBwbGljYXRpb24vcGRmJykge1xuICAgICAgbWltZUNsYXNzID0gJ3BkZic7XG4gICAgfSBlbHNlIGlmIChmaWxlPy50eXBlICYmIHRoaXMubWltZV9jb21wcmVzcy5pbmRleE9mKGZpbGUudHlwZSkgIT09IC0xKSB7XG4gICAgICBtaW1lQ2xhc3MgPSAnY29tcHJlc3MnO1xuICAgIH0gZWxzZSBpZiAoZmlsZT8udHlwZSAmJiB0aGlzLm1pbWVfZG9jLmluZGV4T2YoZmlsZS50eXBlKSAhPT0gLTEpIHtcbiAgICAgIG1pbWVDbGFzcyA9ICdkb2MnO1xuICAgIH0gZWxzZSBpZiAoZmlsZT8udHlwZSAmJiB0aGlzLm1pbWVfeHNsLmluZGV4T2YoZmlsZS50eXBlKSAhPT0gLTEpIHtcbiAgICAgIG1pbWVDbGFzcyA9ICd4bHMnO1xuICAgIH0gZWxzZSBpZiAoZmlsZT8udHlwZSAmJiB0aGlzLm1pbWVfcHB0LmluZGV4T2YoZmlsZS50eXBlKSAhPT0gLTEpIHtcbiAgICAgIG1pbWVDbGFzcyA9ICdwcHQnO1xuICAgIH1cbiAgICBpZiAobWltZUNsYXNzID09PSAnYXBwbGljYXRpb24nICYmIGZpbGU/Lm5hbWUpIHtcbiAgICAgIG1pbWVDbGFzcyA9IHRoaXMuZmlsZVR5cGVEZXRlY3Rpb24oZmlsZS5uYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWltZUNsYXNzO1xuICB9XG5cbiAgc3RhdGljIGZpbGVUeXBlRGV0ZWN0aW9uKGlucHV0RmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdHlwZXM6IHsgWyBrZXk6IHN0cmluZyBdOiBzdHJpbmcgfSA9IHtcbiAgICAgIGpwZzogJ2ltYWdlJyxcbiAgICAgIGpwZWc6ICdpbWFnZScsXG4gICAgICB0aWY6ICdpbWFnZScsXG4gICAgICBwc2Q6ICdpbWFnZScsXG4gICAgICBibXA6ICdpbWFnZScsXG4gICAgICBwbmc6ICdpbWFnZScsXG4gICAgICBuZWY6ICdpbWFnZScsXG4gICAgICB0aWZmOiAnaW1hZ2UnLFxuICAgICAgY3IyOiAnaW1hZ2UnLFxuICAgICAgZHdnOiAnaW1hZ2UnLFxuICAgICAgY2RyOiAnaW1hZ2UnLFxuICAgICAgYWk6ICdpbWFnZScsXG4gICAgICBpbmRkOiAnaW1hZ2UnLFxuICAgICAgcGluOiAnaW1hZ2UnLFxuICAgICAgY2RwOiAnaW1hZ2UnLFxuICAgICAgc2twOiAnaW1hZ2UnLFxuICAgICAgc3RwOiAnaW1hZ2UnLFxuICAgICAgJzNkbSc6ICdpbWFnZScsXG4gICAgICBtcDM6ICdhdWRpbycsXG4gICAgICB3YXY6ICdhdWRpbycsXG4gICAgICB3bWE6ICdhdWRpbycsXG4gICAgICBtb2Q6ICdhdWRpbycsXG4gICAgICBtNGE6ICdhdWRpbycsXG4gICAgICBjb21wcmVzczogJ2NvbXByZXNzJyxcbiAgICAgIHppcDogJ2NvbXByZXNzJyxcbiAgICAgIHJhcjogJ2NvbXByZXNzJyxcbiAgICAgICc3eic6ICdjb21wcmVzcycsXG4gICAgICBsejogJ2NvbXByZXNzJyxcbiAgICAgIHowMTogJ2NvbXByZXNzJyxcbiAgICAgIGJ6MjogJ2NvbXByZXNzJyxcbiAgICAgIGd6OiAnY29tcHJlc3MnLFxuICAgICAgcGRmOiAncGRmJyxcbiAgICAgIHhsczogJ3hscycsXG4gICAgICB4bHN4OiAneGxzJyxcbiAgICAgIG9kczogJ3hscycsXG4gICAgICBtcDQ6ICd2aWRlbycsXG4gICAgICBhdmk6ICd2aWRlbycsXG4gICAgICB3bXY6ICd2aWRlbycsXG4gICAgICBtcGc6ICd2aWRlbycsXG4gICAgICBtdHM6ICd2aWRlbycsXG4gICAgICBmbHY6ICd2aWRlbycsXG4gICAgICAnM2dwJzogJ3ZpZGVvJyxcbiAgICAgIHZvYjogJ3ZpZGVvJyxcbiAgICAgIG00djogJ3ZpZGVvJyxcbiAgICAgIG1wZWc6ICd2aWRlbycsXG4gICAgICBtMnRzOiAndmlkZW8nLFxuICAgICAgbW92OiAndmlkZW8nLFxuICAgICAgZG9jOiAnZG9jJyxcbiAgICAgIGRvY3g6ICdkb2MnLFxuICAgICAgZXBzOiAnZG9jJyxcbiAgICAgIHR4dDogJ2RvYycsXG4gICAgICBvZHQ6ICdkb2MnLFxuICAgICAgcnRmOiAnZG9jJyxcbiAgICAgIHBwdDogJ3BwdCcsXG4gICAgICBwcHR4OiAncHB0JyxcbiAgICAgIHBwczogJ3BwdCcsXG4gICAgICBwcHN4OiAncHB0JyxcbiAgICAgIG9kcDogJ3BwdCdcbiAgICB9O1xuXG4gICAgY29uc3QgY2h1bmtzID0gaW5wdXRGaWxlbmFtZS5zcGxpdCgnLicpO1xuICAgIGlmIChjaHVua3MubGVuZ3RoIDwgMikge1xuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbic7XG4gICAgfVxuICAgIGNvbnN0IGV4dGVuc2lvbiA9IGNodW5rc1sgY2h1bmtzLmxlbmd0aCAtIDEgXS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmICh0eXBlc1sgZXh0ZW5zaW9uIF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0eXBlc1sgZXh0ZW5zaW9uIF07XG4gICAgfVxuICB9XG59XG4iXX0=","import { EventEmitter } from '@angular/core';\nimport { FileLikeObject } from './file-like-object.class';\nimport { FileItem } from './file-item.class';\nimport { FileType } from './file-type.class';\nfunction isFile(value) {\n return (File && value instanceof File);\n}\nexport class FileUploader {\n constructor(options) {\n this.isUploading = false;\n this.queue = [];\n this.progress = 0;\n this._nextIndex = 0;\n this.options = {\n autoUpload: false,\n isHTML5: true,\n filters: [],\n removeAfterUpload: false,\n disableMultipart: false,\n formatDataFunction: (item) => item._file,\n formatDataFunctionIsAsync: false,\n url: ''\n };\n this.setOptions(options);\n this.response = new EventEmitter();\n }\n setOptions(options) {\n this.options = Object.assign(this.options, options);\n this.authToken = this.options.authToken;\n this.authTokenHeader = this.options.authTokenHeader || 'Authorization';\n this.autoUpload = this.options.autoUpload;\n this.options.filters?.unshift({ name: 'queueLimit', fn: this._queueLimitFilter });\n if (this.options.maxFileSize) {\n this.options.filters?.unshift({ name: 'fileSize', fn: this._fileSizeFilter });\n }\n if (this.options.allowedFileType) {\n this.options.filters?.unshift({ name: 'fileType', fn: this._fileTypeFilter });\n }\n if (this.options.allowedMimeType) {\n this.options.filters?.unshift({ name: 'mimeType', fn: this._mimeTypeFilter });\n }\n for (let i = 0; i < this.queue.length; i++) {\n this.queue[i].url = this.options.url;\n }\n }\n addToQueue(files, _options, filters) {\n let options = _options;\n const list = [];\n for (const file of files) {\n list.push(file);\n }\n const arrayOfFilters = this._getFilters(filters);\n const count = this.queue.length;\n const addedFileItems = [];\n list.map((some) => {\n if (!options) {\n options = this.options;\n }\n const temp = new FileLikeObject(some);\n if (this._isValidFile(temp, arrayOfFilters, options)) {\n const fileItem = new FileItem(this, some, options);\n addedFileItems.push(fileItem);\n this.queue.push(fileItem);\n this._onAfterAddingFile(fileItem);\n }\n else {\n if (typeof this._failFilterIndex === 'number' && this._failFilterIndex >= 0) {\n const filter = arrayOfFilters[this._failFilterIndex];\n this._onWhenAddingFileFailed(temp, filter, options);\n }\n }\n });\n if (this.queue.length !== count) {\n this._onAfterAddingAll(addedFileItems);\n this.progress = this._getTotalProgress();\n }\n this._render();\n if (this.options.autoUpload) {\n this.uploadAll();\n }\n }\n removeFromQueue(value) {\n const index = this.getIndexOfItem(value);\n const item = this.queue[index];\n if (item.isUploading) {\n item.cancel();\n }\n this.queue.splice(index, 1);\n this.progress = this._getTotalProgress();\n }\n clearQueue() {\n while (this.queue.length) {\n this.queue[0].remove();\n }\n this.progress = 0;\n }\n uploadItem(value) {\n const index = this.getIndexOfItem(value);\n const item = this.queue[index];\n const transport = this.options.isHTML5 ? '_xhrTransport' : '_iframeTransport';\n item._prepareToUploading();\n if (this.isUploading) {\n return;\n }\n this.isUploading = true;\n this[transport](item);\n }\n cancelItem(value) {\n const index = this.getIndexOfItem(value);\n const item = this.queue[index];\n const prop = this.options.isHTML5 ? item._xhr : item._form;\n if (item && item.isUploading) {\n prop.abort();\n }\n }\n uploadAll() {\n const items = this.getNotUploadedItems().filter((item) => !item.isUploading);\n if (!items.length) {\n return;\n }\n items.map((item) => item._prepareToUploading());\n items[0].upload();\n }\n cancelAll() {\n const items = this.getNotUploadedItems();\n items.map((item) => item.cancel());\n }\n isFile(value) {\n return isFile(value);\n }\n isFileLikeObject(value) {\n return value instanceof FileLikeObject;\n }\n getIndexOfItem(value) {\n return typeof value === 'number' ? value : this.queue.indexOf(value);\n }\n getNotUploadedItems() {\n return this.queue.filter((item) => !item.isUploaded);\n }\n getReadyItems() {\n return this.queue\n .filter((item) => (item.isReady && !item.isUploading))\n .sort((item1, item2) => item1.index - item2.index);\n }\n onAfterAddingAll(fileItems) {\n return { fileItems };\n }\n onBuildItemForm(fileItem, form) {\n return { fileItem, form };\n }\n onAfterAddingFile(fileItem) {\n return { fileItem };\n }\n onWhenAddingFileFailed(item, filter, options) {\n return { item, filter, options };\n }\n onBeforeUploadItem(fileItem) {\n return { fileItem };\n }\n onProgressItem(fileItem, progress) {\n return { fileItem, progress };\n }\n onProgressAll(progress) {\n return { progress };\n }\n onSuccessItem(item, response, status, headers) {\n return { item, response, status, headers };\n }\n onErrorItem(item, response, status, headers) {\n return { item, response, status, headers };\n }\n onCancelItem(item, response, status, headers) {\n return { item, response, status, headers };\n }\n onCompleteItem(item, response, status, headers) {\n return { item, response, status, headers };\n }\n onCompleteAll() {\n return void 0;\n }\n _mimeTypeFilter(item) {\n return !(item?.type && this.options.allowedMimeType && this.options.allowedMimeType?.indexOf(item.type) === -1);\n }\n _fileSizeFilter(item) {\n return !(this.options.maxFileSize && item.size > this.options.maxFileSize);\n }\n _fileTypeFilter(item) {\n return !(this.options.allowedFileType &&\n this.options.allowedFileType.indexOf(FileType.getMimeClass(item)) === -1);\n }\n _onErrorItem(item, response, status, headers) {\n item._onError(response, status, headers);\n this.onErrorItem(item, response, status, headers);\n }\n _onCompleteItem(item, response, status, headers) {\n item._onComplete(response, status, headers);\n this.onCompleteItem(item, response, status, headers);\n const nextItem = this.getReadyItems()[0];\n this.isUploading = false;\n if (nextItem) {\n nextItem.upload();\n return;\n }\n this.onCompleteAll();\n this.progress = this._getTotalProgress();\n this._render();\n }\n _headersGetter(parsedHeaders) {\n return (name) => {\n if (name) {\n return parsedHeaders[name.toLowerCase()] || undefined;\n }\n return parsedHeaders;\n };\n }\n _xhrTransport(item) {\n // tslint:disable-next-line:no-this-assignment\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n const xhr = item._xhr = new XMLHttpRequest();\n let sendable;\n this._onBeforeUploadItem(item);\n if (typeof item._file.size !== 'number') {\n throw new TypeError('The file specified is no longer valid');\n }\n if (!this.options.disableMultipart) {\n sendable = new FormData();\n this._onBuildItemForm(item, sendable);\n const appendFile = () => sendable.append(item.alias, item._file, item.file.name);\n if (!this.options.parametersBeforeFiles) {\n appendFile();\n }\n // For AWS, Additional Parameters must come BEFORE Files\n if (this.options.additionalParameter !== undefined) {\n Object.keys(this.options.additionalParameter).forEach((key) => {\n let paramVal = this.options.additionalParameter?.[key];\n // Allow an additional parameter to include the filename\n if (typeof paramVal === 'string' && paramVal.indexOf('{{file_name}}') >= 0 && item.file?.name) {\n paramVal = paramVal.replace('{{file_name}}', item.file.name);\n }\n sendable.append(key, paramVal);\n });\n }\n if (appendFile && this.options.parametersBeforeFiles) {\n appendFile();\n }\n }\n else {\n if (this.options.formatDataFunction) {\n sendable = this.options.formatDataFunction(item);\n }\n }\n xhr.upload.onprogress = (event) => {\n const progress = Math.round(event.lengthComputable ? event.loaded * 100 / event.total : 0);\n this._onProgressItem(item, progress);\n };\n xhr.onload = () => {\n const headers = this._parseHeaders(xhr.getAllResponseHeaders());\n const response = this._transformResponse(xhr.response);\n const gist = this._isSuccessCode(xhr.status) ? 'Success' : 'Error';\n const method = `_on${gist}Item`;\n this[method](item, response, xhr.status, headers);\n this._onCompleteItem(item, response, xhr.status, headers);\n };\n xhr.onerror = () => {\n const headers = this._parseHeaders(xhr.getAllResponseHeaders());\n const response = this._transformResponse(xhr.response);\n this._onErrorItem(item, response, xhr.status, headers);\n this._onCompleteItem(item, response, xhr.status, headers);\n };\n xhr.onabort = () => {\n const headers = this._parseHeaders(xhr.getAllResponseHeaders());\n const response = this._transformResponse(xhr.response);\n this._onCancelItem(item, response, xhr.status, headers);\n this._onCompleteItem(item, response, xhr.status, headers);\n };\n if (item.method && item.url) {\n xhr.open(item.method, item.url, true);\n }\n xhr.withCredentials = item.withCredentials;\n if (this.options.headers) {\n for (const header of this.options.headers) {\n xhr.setRequestHeader(header.name, header.value);\n }\n }\n if (item.headers.length) {\n for (const header of item.headers) {\n xhr.setRequestHeader(header.name, header.value);\n }\n }\n if (this.authToken && this.authTokenHeader) {\n xhr.setRequestHeader(this.authTokenHeader, this.authToken);\n }\n xhr.onreadystatechange = function () {\n if (xhr.readyState == XMLHttpRequest.DONE) {\n that.response.emit(xhr.responseText);\n }\n };\n if (this.options.formatDataFunctionIsAsync) {\n sendable.then((result) => xhr.send(JSON.stringify(result)));\n }\n else {\n xhr.send(sendable);\n }\n this._render();\n }\n _getTotalProgress(value = 0) {\n if (this.options.removeAfterUpload) {\n return value;\n }\n const notUploaded = this.getNotUploadedItems().length;\n const uploaded = notUploaded ? this.queue.length - notUploaded : this.queue.length;\n const ratio = 100 / this.queue.length;\n const current = value * ratio / 100;\n return Math.round(uploaded * ratio + current);\n }\n _getFilters(filters) {\n if (!filters) {\n return this.options?.filters || [];\n }\n if (Array.isArray(filters)) {\n return filters;\n }\n if (typeof filters === 'string') {\n const names = filters.match(/[^\\s,]+/g);\n return this.options?.filters || []\n .filter((filter) => names?.indexOf(filter.name) !== -1);\n }\n return this.options?.filters || [];\n }\n _render() {\n return void 0;\n }\n _queueLimitFilter() {\n return this.options.queueLimit === undefined || this.queue.length < this.options.queueLimit;\n }\n _isValidFile(file, filters, options) {\n this._failFilterIndex = -1;\n return !filters.length ? true : filters.every((filter) => {\n if (typeof this._failFilterIndex === 'number') {\n this._failFilterIndex++;\n }\n return filter.fn.call(this, file, options);\n });\n }\n _isSuccessCode(status) {\n return (status >= 200 && status < 300) || status === 304;\n }\n _transformResponse(response) {\n return response;\n }\n _parseHeaders(headers) {\n const parsed = {};\n let key;\n let val;\n let i;\n if (!headers) {\n return parsed;\n }\n headers.split('\\n').map((line) => {\n i = line.indexOf(':');\n key = line.slice(0, i).trim().toLowerCase();\n val = line.slice(i + 1).trim();\n if (key) {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n return parsed;\n }\n _onWhenAddingFileFailed(item, filter, options) {\n this.onWhenAddingFileFailed(item, filter, options);\n }\n _onAfterAddingFile(item) {\n this.onAfterAddingFile(item);\n }\n _onAfterAddingAll(items) {\n this.onAfterAddingAll(items);\n }\n _onBeforeUploadItem(item) {\n item._onBeforeUpload();\n this.onBeforeUploadItem(item);\n }\n _onBuildItemForm(item, form) {\n item._onBuildForm(form);\n this.onBuildItemForm(item, form);\n }\n _onProgressItem(item, progress) {\n const total = this._getTotalProgress(progress);\n this.progress = total;\n item._onProgress(progress);\n this.onProgressItem(item, progress);\n this.onProgressAll(total);\n this._render();\n }\n _onSuccessItem(item, response, status, headers) {\n item._onSuccess(response, status, headers);\n this.onSuccessItem(item, response, status, headers);\n }\n _onCancelItem(item, response, status, headers) {\n item._onCancel(response, status, headers);\n this.onCancelItem(item, response, status, headers);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWRlci5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmcyLWZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU3QyxTQUFTLE1BQU0sQ0FBQyxLQUFVO0lBQ3hCLE9BQU8sQ0FBQyxJQUFJLElBQUksS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFxQ0QsTUFBTSxPQUFPLFlBQVk7SUF3QnZCLFlBQVksT0FBNEI7UUFyQnhDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLFVBQUssR0FBZSxFQUFFLENBQUM7UUFDdkIsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUNiLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFLZixZQUFPLEdBQXdCO1lBQzdCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsT0FBTyxFQUFFLEVBQUU7WUFDWCxpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLGdCQUFnQixFQUFFLEtBQUs7WUFDdkIsa0JBQWtCLEVBQUUsQ0FBQyxJQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQ2xELHlCQUF5QixFQUFFLEtBQUs7WUFDaEMsR0FBRyxFQUFFLEVBQUU7U0FDUixDQUFDO1FBS0EsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFDN0MsQ0FB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R0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRVMsY0FBYyxDQUFDLElBQWMsRUFBRSxRQUFnQixFQUFFLE1BQWMsRUFBRSxPQUE4QjtRQUN2RyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRVMsYUFBYSxDQUFDLElBQWMsRUFBRSxRQUFnQixFQUFFLE1BQWMsRUFBRSxPQUE4QjtRQUN0RyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpbGVMaWtlT2JqZWN0IH0gZnJvbSAnLi9maWxlLWxpa2Utb2JqZWN0LmNsYXNzJztcbmltcG9ydCB7IEZpbGVJdGVtIH0gZnJvbSAnLi9maWxlLWl0ZW0uY2xhc3MnO1xuaW1wb3J0IHsgRmlsZVR5cGUgfSBmcm9tICcuL2ZpbGUtdHlwZS5jbGFzcyc7XG5cbmZ1bmN0aW9uIGlzRmlsZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiAoRmlsZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIEZpbGUpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhlYWRlcnMge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkUmVzcG9uc2VIZWFkZXJzIHsgWyBoZWFkZXJGaWVsZE5hbWU6IHN0cmluZyBdOiBzdHJpbmcgfVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckZ1bmN0aW9uIHtcbiAgbmFtZTogc3RyaW5nO1xuICBmbihpdGVtOiBGaWxlTGlrZU9iamVjdCwgb3B0aW9ucz86IEZpbGVVcGxvYWRlck9wdGlvbnMpOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVVcGxvYWRlck9wdGlvbnMge1xuICBhbGxvd2VkTWltZVR5cGU/OiBzdHJpbmdbXTtcbiAgYWxsb3dlZEZpbGVUeXBlPzogc3RyaW5nW107XG4gIGF1dG9VcGxvYWQ/OiBib29sZWFuO1xuICBpc0hUTUw1PzogYm9vbGVhbjtcbiAgZmlsdGVycz86IEZpbHRlckZ1bmN0aW9uW107XG4gIGhlYWRlcnM/OiBIZWFkZXJzW107XG4gIG1ldGhvZD86IHN0cmluZztcbiAgYXV0aFRva2VuPzogc3RyaW5nO1xuICBtYXhGaWxlU2l6ZT86IG51bWJlcjtcbiAgcXVldWVMaW1pdD86IG51bWJlcjtcbiAgcmVtb3ZlQWZ0ZXJVcGxvYWQ/OiBib29sZWFuO1xuICB1cmw6IHN0cmluZztcbiAgZGlzYWJsZU11bHRpcGFydD86IGJvb2xlYW47XG4gIGl0ZW1BbGlhcz86IHN0cmluZztcbiAgYXV0aFRva2VuSGVhZGVyPzogc3RyaW5nO1xuICBhZGRpdGlvbmFsUGFyYW1ldGVyPzogeyBbIGtleTogc3RyaW5nIF06IGFueSB9O1xuICBwYXJhbWV0ZXJzQmVmb3JlRmlsZXM/OiBib29sZWFuO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgZm9ybWF0RGF0YUZ1bmN0aW9uPzogRnVuY3Rpb247XG4gIGZvcm1hdERhdGFGdW5jdGlvbklzQXN5bmM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZGVyIHtcblxuICBhdXRoVG9rZW4/OiBzdHJpbmc7XG4gIGlzVXBsb2FkaW5nID0gZmFsc2U7XG4gIHF1ZXVlOiBGaWxlSXRlbVtdID0gW107XG4gIHByb2dyZXNzID0gMDtcbiAgX25leHRJbmRleCA9IDA7XG4gIGF1dG9VcGxvYWQ6IGFueTtcbiAgYXV0aFRva2VuSGVhZGVyPzogc3RyaW5nO1xuICByZXNwb25zZTogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgb3B0aW9uczogRmlsZVVwbG9hZGVyT3B0aW9ucyA9IHtcbiAgICBhdXRvVXBsb2FkOiBmYWxzZSxcbiAgICBpc0hUTUw1OiB0cnVlLFxuICAgIGZpbHRlcnM6IFtdLFxuICAgIHJlbW92ZUFmdGVyVXBsb2FkOiBmYWxzZSxcbiAgICBkaXNhYmxlTXVsdGlwYXJ0OiBmYWxzZSxcbiAgICBmb3JtYXREYXRhRnVuY3Rpb246IChpdGVtOiBGaWxlSXRlbSkgPT4gaXRlbS5fZmlsZSxcbiAgICBmb3JtYXREYXRhRnVuY3Rpb25Jc0FzeW5jOiBmYWxzZSxcbiAgICB1cmw6ICcnXG4gIH07XG5cbiAgcHJvdGVjdGVkIF9mYWlsRmlsdGVySW5kZXg/OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogRmlsZVVwbG9hZGVyT3B0aW9ucykge1xuICAgIHRoaXMuc2V0T3B0aW9ucyhvcHRpb25zKTtcbiAgICB0aGlzLnJlc3BvbnNlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIH1cblxuICBzZXRPcHRpb25zKG9wdGlvbnM6IEZpbGVVcGxvYWRlck9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHRoaXMub3B0aW9ucywgb3B0aW9ucyk7XG5cbiAgICB0aGlzLmF1dGhUb2tlbiA9IHRoaXMub3B0aW9ucy5hdXRoVG9rZW47XG4gICAgdGhpcy5hdXRoVG9rZW5IZWFkZXIgPSB0aGlzLm9wdGlvbnMuYXV0aFRva2VuSGVhZGVyIHx8ICdBdXRob3JpemF0aW9uJztcbiAgICB0aGlzLmF1dG9VcGxvYWQgPSB0aGlzLm9wdGlvbnMuYXV0b1VwbG9hZDtcbiAgICB0aGlzLm9wdGlvbnMuZmlsdGVycz8udW5zaGlmdCh7IG5hbWU6ICdxdWV1ZUxpbWl0JywgZm46IHRoaXMuX3F1ZXVlTGltaXRGaWx0ZXIgfSk7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLm1heEZpbGVTaXplKSB7XG4gICAgICB0aGlzLm9wdGlvbnMuZmlsdGVycz8udW5zaGlmdCh7IG5hbWU6ICdmaWxlU2l6ZScsIGZuOiB0aGlzLl9maWxlU2l6ZUZpbHRlciB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmFsbG93ZWRGaWxlVHlwZSkge1xuICAgICAgdGhpcy5vcHRpb25zLmZpbHRlcnM/LnVuc2hpZnQoeyBuYW1lOiAnZmlsZVR5cGUnLCBmbjogdGhpcy5fZmlsZVR5cGVGaWx0ZXIgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hbGxvd2VkTWltZVR5cGUpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5maWx0ZXJzPy51bnNoaWZ0KHsgbmFtZTogJ21pbWVUeXBlJywgZm46IHRoaXMuX21pbWVUeXBlRmlsdGVyIH0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5xdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5xdWV1ZVsgaSBdLnVybCA9IHRoaXMub3B0aW9ucy51cmw7XG4gICAgfVxuICB9XG5cbiAgYWRkVG9RdWV1ZShmaWxlczogRmlsZVtdLCBfb3B0aW9ucz86IEZpbGVVcGxvYWRlck9wdGlvbnMsIGZpbHRlcnM/OiBbXSB8IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBvcHRpb25zID0gX29wdGlvbnM7XG4gICAgY29uc3QgbGlzdDogRmlsZVtdID0gW107XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBsaXN0LnB1c2goZmlsZSk7XG4gICAgfVxuICAgIGNvbnN0IGFycmF5T2ZGaWx0ZXJzID0gdGhpcy5fZ2V0RmlsdGVycyhmaWx0ZXJzKTtcbiAgICBjb25zdCBjb3VudCA9IHRoaXMucXVldWUubGVuZ3RoO1xuICAgIGNvbnN0IGFkZGVkRmlsZUl0ZW1zOiBGaWxlSXRlbVtdID0gW107XG4gICAgbGlzdC5tYXAoKHNvbWU6IEZpbGUpID0+IHtcbiAgICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0ZW1wID0gbmV3IEZpbGVMaWtlT2JqZWN0KHNvbWUpO1xuICAgICAgaWYgKHRoaXMuX2lzVmFsaWRGaWxlKHRlbXAsIGFycmF5T2ZGaWx0ZXJzLCBvcHRpb25zKSkge1xuICAgICAgICBjb25zdCBmaWxlSXRlbSA9IG5ldyBGaWxlSXRlbSh0aGlzLCBzb21lLCBvcHRpb25zKTtcbiAgICAgICAgYWRkZWRGaWxlSXRlbXMucHVzaChmaWxlSXRlbSk7XG4gICAgICAgIHRoaXMucXVldWUucHVzaChmaWxlSXRlbSk7XG4gICAgICAgIHRoaXMuX29uQWZ0ZXJBZGRpbmdGaWxlKGZpbGVJdGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5fZmFpbEZpbHRlckluZGV4ID09PSAnbnVtYmVyJyAmJiB0aGlzLl9mYWlsRmlsdGVySW5kZXggPj0gMCkge1xuICAgICAgICAgIGNvbnN0IGZpbHRlciA9IGFycmF5T2ZGaWx0ZXJzWyB0aGlzLl9mYWlsRmlsdGVySW5kZXggXTtcbiAgICAgICAgICB0aGlzLl9vbldoZW5BZGRpbmdGaWxlRmFpbGVkKHRlbXAsIGZpbHRlciwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAodGhpcy5xdWV1ZS5sZW5ndGggIT09IGNvdW50KSB7XG4gICAgICB0aGlzLl9vbkFmdGVyQWRkaW5nQWxsKGFkZGVkRmlsZUl0ZW1zKTtcbiAgICAgIHRoaXMucHJvZ3Jlc3MgPSB0aGlzLl9nZXRUb3RhbFByb2dyZXNzKCk7XG4gICAgfVxuICAgIHRoaXMuX3JlbmRlcigpO1xuICAgIGlmICh0aGlzLm9wdGlvbnMuYXV0b1VwbG9hZCkge1xuICAgICAgdGhpcy51cGxvYWRBbGwoKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVGcm9tUXVldWUodmFsdWU6IEZpbGVJdGVtKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEluZGV4T2ZJdGVtKHZhbHVlKTtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5xdWV1ZVsgaW5kZXggXTtcbiAgICBpZiAoaXRlbS5pc1VwbG9hZGluZykge1xuICAgICAgaXRlbS5jYW5jZWwoKTtcbiAgICB9XG4gICAgdGhpcy5xdWV1ZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMucHJvZ3Jlc3MgPSB0aGlzLl9nZXRUb3RhbFByb2dyZXNzKCk7XG4gIH1cblxuICBjbGVhclF1ZXVlKCk6IHZvaWQge1xuICAgIHdoaWxlICh0aGlzLnF1ZXVlLmxlbmd0aCkge1xuICAgICAgdGhpcy5xdWV1ZVsgMCBdLnJlbW92ZSgpO1xuICAgIH1cbiAgICB0aGlzLnByb2dyZXNzID0gMDtcbiAgfVxuXG4gIHVwbG9hZEl0ZW0odmFsdWU6IEZpbGVJdGVtKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEluZGV4T2ZJdGVtKHZhbHVlKTtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5xdWV1ZVsgaW5kZXggXTtcbiAgICBjb25zdCB0cmFuc3BvcnQgPSB0aGlzLm9wdGlvbnMuaXNIVE1MNSA/ICdfeGhyVHJhbnNwb3J0JyA6ICdfaWZyYW1lVHJhbnNwb3J0JztcbiAgICBpdGVtLl9wcmVwYXJlVG9VcGxvYWRpbmcoKTtcbiAgICBpZiAodGhpcy5pc1VwbG9hZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzVXBsb2FkaW5nID0gdHJ1ZTtcbiAgICAodGhpcyBhcyBhbnkpWyB0cmFuc3BvcnQgXShpdGVtKTtcbiAgfVxuXG4gIGNhbmNlbEl0ZW0odmFsdWU6IEZpbGVJdGVtKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEluZGV4T2ZJdGVtKHZhbHVlKTtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5xdWV1ZVsgaW5kZXggXTtcbiAgICBjb25zdCBwcm9wID0gdGhpcy5vcHRpb25zLmlzSFRNTDUgPyBpdGVtLl94aHIgOiBpdGVtLl9mb3JtO1xuICAgIGlmIChpdGVtICYmIGl0ZW0uaXNVcGxvYWRpbmcpIHtcbiAgICAgIHByb3AuYWJvcnQoKTtcbiAgICB9XG4gIH1cblxuICB1cGxvYWRBbGwoKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldE5vdFVwbG9hZGVkSXRlbXMoKS5maWx0ZXIoKGl0ZW06IEZpbGVJdGVtKSA9PiAhaXRlbS5pc1VwbG9hZGluZyk7XG4gICAgaWYgKCFpdGVtcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaXRlbXMubWFwKChpdGVtOiBGaWxlSXRlbSkgPT4gaXRlbS5fcHJlcGFyZVRvVXBsb2FkaW5nKCkpO1xuICAgIGl0ZW1zWyAwIF0udXBsb2FkKCk7XG4gIH1cblxuICBjYW5jZWxBbGwoKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldE5vdFVwbG9hZGVkSXRlbXMoKTtcbiAgICBpdGVtcy5tYXAoKGl0ZW06IEZpbGVJdGVtKSA9PiBpdGVtLmNhbmNlbCgpKTtcbiAgfVxuXG4gIGlzRmlsZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzRmlsZSh2YWx1ZSk7XG4gIH1cblxuICBpc0ZpbGVMaWtlT2JqZWN0KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBGaWxlTGlrZU9iamVjdDtcbiAgfVxuXG4gIGdldEluZGV4T2ZJdGVtKHZhbHVlOiBhbnkpOiBudW1iZXIge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gdmFsdWUgOiB0aGlzLnF1ZXVlLmluZGV4T2YodmFsdWUpO1xuICB9XG5cbiAgZ2V0Tm90VXBsb2FkZWRJdGVtcygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMucXVldWUuZmlsdGVyKChpdGVtOiBGaWxlSXRlbSkgPT4gIWl0ZW0uaXNVcGxvYWRlZCk7XG4gIH1cblxuICBnZXRSZWFkeUl0ZW1zKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5xdWV1ZVxuICAgICAgLmZpbHRlcigoaXRlbTogRmlsZUl0ZW0pID0+IChpdGVtLmlzUmVhZHkgJiYgIWl0ZW0uaXNVcGxvYWRpbmcpKVxuICAgICAgLnNvcnQoKGl0ZW0xOiBhbnksIGl0ZW0yOiBhbnkpID0+IGl0ZW0xLmluZGV4IC0gaXRlbTIuaW5kZXgpO1xuICB9XG5cbiAgb25BZnRlckFkZGluZ0FsbChmaWxlSXRlbXM6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHsgZmlsZUl0ZW1zIH07XG4gIH1cblxuICBvbkJ1aWxkSXRlbUZvcm0oZmlsZUl0ZW06IEZpbGVJdGVtLCBmb3JtOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB7IGZpbGVJdGVtLCBmb3JtIH07XG4gIH1cblxuICBvbkFmdGVyQWRkaW5nRmlsZShmaWxlSXRlbTogRmlsZUl0ZW0pOiBhbnkge1xuICAgIHJldHVybiB7IGZpbGVJdGVtIH07XG4gIH1cblxuICBvbldoZW5BZGRpbmdGaWxlRmFpbGVkKGl0ZW06IEZpbGVMaWtlT2JqZWN0LCBmaWx0ZXI6IGFueSwgb3B0aW9uczogYW55KTogYW55IHtcbiAgICByZXR1cm4geyBpdGVtLCBmaWx0ZXIsIG9wdGlvbnMgfTtcbiAgfVxuXG4gIG9uQmVmb3JlVXBsb2FkSXRlbShmaWxlSXRlbTogRmlsZUl0ZW0pOiBhbnkge1xuICAgIHJldHVybiB7IGZpbGVJdGVtIH07XG4gIH1cblxuICBvblByb2dyZXNzSXRlbShmaWxlSXRlbTogRmlsZUl0ZW0sIHByb2dyZXNzOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB7IGZpbGVJdGVtLCBwcm9ncmVzcyB9O1xuICB9XG5cbiAgb25Qcm9ncmVzc0FsbChwcm9ncmVzczogYW55KTogYW55IHtcbiAgICByZXR1cm4geyBwcm9ncmVzcyB9O1xuICB9XG5cbiAgb25TdWNjZXNzSXRlbShpdGVtOiBGaWxlSXRlbSwgcmVzcG9uc2U6IHN0cmluZywgc3RhdHVzOiBudW1iZXIsIGhlYWRlcnM6IFBhcnNlZFJlc3BvbnNlSGVhZGVycyk6IGFueSB7XG4gICAgcmV0dXJuIHsgaXRlbSwgcmVzcG9uc2UsIHN0YXR1cywgaGVhZGVycyB9O1xuICB9XG5cbiAgb25FcnJvckl0ZW0oaXRlbTogRmlsZUl0ZW0sIHJlc3BvbnNlOiBzdHJpbmcsIHN0YXR1czogbnVtYmVyLCBoZWFkZXJzOiBQYXJzZWRSZXNwb25zZUhlYWRlcnMpOiBhbnkge1xuICAgIHJldHVybiB7IGl0ZW0sIHJlc3BvbnNlLCBzdGF0dXMsIGhlYWRlcnMgfTtcbiAgfVxuXG4gIG9uQ2FuY2VsSXRlbShpdGVtOiBGaWxlSXRlbSwgcmVzcG9uc2U6IHN0cmluZywgc3RhdHVzOiBudW1iZXIsIGhlYWRlcnM6IFBhcnNlZFJlc3BvbnNlSGVhZGVycyk6IGFueSB7XG4gICAgcmV0dXJuIHsgaXRlbSwgcmVzcG9uc2UsIHN0YXR1cywgaGVhZGVycyB9O1xuICB9XG5cbiAgb25Db21wbGV0ZUl0ZW0oaXRlbTogRmlsZUl0ZW0sIHJlc3BvbnNlOiBzdHJpbmcsIHN0YXR1czogbnVtYmVyLCBoZWFkZXJzOiBQYXJzZWRSZXNwb25zZUhlYWRlcnMpOiBhbnkge1xuICAgIHJldHVybiB7IGl0ZW0sIHJlc3BvbnNlLCBzdGF0dXMsIGhlYWRlcnMgfTtcbiAgfVxuXG4gIG9uQ29tcGxldGVBbGwoKTogYW55IHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgX21pbWVUeXBlRmlsdGVyKGl0ZW06IEZpbGVMaWtlT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEoaXRlbT8udHlwZSAmJiB0aGlzLm9wdGlvbnMuYWxsb3dlZE1pbWVUeXBlICYmIHRoaXMub3B0aW9ucy5hbGxvd2VkTWltZVR5cGU/LmluZGV4T2YoaXRlbS50eXBlKSA9PT0gLTEpO1xuICB9XG5cbiAgX2ZpbGVTaXplRmlsdGVyKGl0ZW06IEZpbGVMaWtlT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEodGhpcy5vcHRpb25zLm1heEZpbGVTaXplICYmIGl0ZW0uc2l6ZSA+IHRoaXMub3B0aW9ucy5tYXhGaWxlU2l6ZSk7XG4gIH1cblxuICBfZmlsZVR5cGVGaWx0ZXIoaXRlbTogRmlsZUxpa2VPYmplY3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISh0aGlzLm9wdGlvbnMuYWxsb3dlZEZpbGVUeXBlICYmXG4gICAgICB0aGlzLm9wdGlvbnMuYWxsb3dlZEZpbGVUeXBlLmluZGV4T2YoRmlsZVR5cGUuZ2V0TWltZUNsYXNzKGl0ZW0pKSA9PT0gLTEpO1xuICB9XG5cbiAgX29uRXJyb3JJdGVtKGl0ZW06IEZpbGVJdGVtLCByZXNwb25zZTogc3RyaW5nLCBzdGF0dXM6IG51bWJlciwgaGVhZGVyczogUGFyc2VkUmVzcG9uc2VIZWFkZXJzKTogdm9pZCB7XG4gICAgaXRlbS5fb25FcnJvcihyZXNwb25zZSwgc3RhdHVzLCBoZWFkZXJzKTtcbiAgICB0aGlzLm9uRXJyb3JJdGVtKGl0ZW0sIHJlc3BvbnNlLCBzdGF0dXMsIGhlYWRlcnMpO1xuICB9XG5cbiAgX29uQ29tcGxldGVJdGVtKGl0ZW06IEZpbGVJdGVtLCByZXNwb25zZTogc3RyaW5nLCBzdGF0dXM6IG51bWJlciwgaGVhZGVyczogUGFyc2VkUmVzcG9uc2VIZWFkZXJzKTogdm9pZCB7XG4gICAgaXRlbS5fb25Db21wbGV0ZShyZXNwb25zZSwgc3RhdHVzLCBoZWFkZXJzKTtcbiAgICB0aGlzLm9uQ29tcGxldGVJdGVtKGl0ZW0sIHJlc3BvbnNlLCBzdGF0dXMsIGhlYWRlcnMpO1xuICAgIGNvbnN0IG5leHRJdGVtID0gdGhpcy5nZXRSZWFkeUl0ZW1zKClbIDAgXTtcbiAgICB0aGlzLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgaWYgKG5leHRJdGVtKSB7XG4gICAgICBuZXh0SXRlbS51cGxvYWQoKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9uQ29tcGxldGVBbGwoKTtcbiAgICB0aGlzLnByb2dyZXNzID0gdGhpcy5fZ2V0VG90YWxQcm9ncmVzcygpO1xuICAgIHRoaXMuX3JlbmRlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9oZWFkZXJzR2V0dGVyKHBhcnNlZEhlYWRlcnM6IFBhcnNlZFJlc3BvbnNlSGVhZGVycyk6IGFueSB7XG4gICAgcmV0dXJuIChuYW1lOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlZEhlYWRlcnNbIG5hbWUudG9Mb3dlckNhc2UoKSBdIHx8IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBhcnNlZEhlYWRlcnM7XG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfeGhyVHJhbnNwb3J0KGl0ZW06IEZpbGVJdGVtKTogYW55IHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tdGhpcy1hc3NpZ25tZW50XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG4gICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgY29uc3QgeGhyID0gaXRlbS5feGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgbGV0IHNlbmRhYmxlOiBhbnk7XG4gICAgdGhpcy5fb25CZWZvcmVVcGxvYWRJdGVtKGl0ZW0pO1xuXG4gICAgaWYgKHR5cGVvZiBpdGVtLl9maWxlLnNpemUgIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgZmlsZSBzcGVjaWZpZWQgaXMgbm8gbG9uZ2VyIHZhbGlkJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5vcHRpb25zLmRpc2FibGVNdWx0aXBhcnQpIHtcbiAgICAgIHNlbmRhYmxlID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICB0aGlzLl9vbkJ1aWxkSXRlbUZvcm0oaXRlbSwgc2VuZGFibGUpO1xuICAgICAgY29uc3QgYXBwZW5kRmlsZSA9ICgpID0+IHNlbmRhYmxlLmFwcGVuZChpdGVtLmFsaWFzLCBpdGVtLl9maWxlLCBpdGVtLmZpbGUubmFtZSk7XG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5wYXJhbWV0ZXJzQmVmb3JlRmlsZXMpIHtcbiAgICAgICAgYXBwZW5kRmlsZSgpO1xuICAgICAgfVxuXG4gICAgICAvLyBGb3IgQVdTLCBBZGRpdGlvbmFsIFBhcmFtZXRlcnMgbXVzdCBjb21lIEJFRk9SRSBGaWxlc1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5hZGRpdGlvbmFsUGFyYW1ldGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5vcHRpb25zLmFkZGl0aW9uYWxQYXJhbWV0ZXIpLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHBhcmFtVmFsID0gdGhpcy5vcHRpb25zLmFkZGl0aW9uYWxQYXJhbWV0ZXI/Llsga2V5IF07XG4gICAgICAgICAgLy8gQWxsb3cgYW4gYWRkaXRpb25hbCBwYXJhbWV0ZXIgdG8gaW5jbHVkZSB0aGUgZmlsZW5hbWVcbiAgICAgICAgICBpZiAodHlwZW9mIHBhcmFtVmFsID09PSAnc3RyaW5nJyAmJiBwYXJhbVZhbC5pbmRleE9mKCd7e2ZpbGVfbmFtZX19JykgPj0gMCAmJiBpdGVtLmZpbGU/Lm5hbWUpIHtcbiAgICAgICAgICAgIHBhcmFtVmFsID0gcGFyYW1WYWwucmVwbGFjZSgne3tmaWxlX25hbWV9fScsIGl0ZW0uZmlsZS5uYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2VuZGFibGUuYXBwZW5kKGtleSwgcGFyYW1WYWwpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFwcGVuZEZpbGUgJiYgdGhpcy5vcHRpb25zLnBhcmFtZXRlcnNCZWZvcmVGaWxlcykge1xuICAgICAgICBhcHBlbmRGaWxlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZm9ybWF0RGF0YUZ1bmN0aW9uKSB7XG4gICAgICAgIHNlbmRhYmxlID0gdGhpcy5vcHRpb25zLmZvcm1hdERhdGFGdW5jdGlvbihpdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIudXBsb2FkLm9ucHJvZ3Jlc3MgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QgcHJvZ3Jlc3MgPSBNYXRoLnJvdW5kKGV2ZW50Lmxlbmd0aENvbXB1dGFibGUgPyBldmVudC5sb2FkZWQgKiAxMDAgLyBldmVudC50b3RhbCA6IDApO1xuICAgICAgdGhpcy5fb25Qcm9ncmVzc0l0ZW0oaXRlbSwgcHJvZ3Jlc3MpO1xuICAgIH07XG4gICAgeGhyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLl9wYXJzZUhlYWRlcnMoeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5fdHJhbnNmb3JtUmVzcG9uc2UoeGhyLnJlc3BvbnNlKTtcbiAgICAgIGNvbnN0IGdpc3QgPSB0aGlzLl9pc1N1Y2Nlc3NDb2RlKHhoci5zdGF0dXMpID8gJ1N1Y2Nlc3MnIDogJ0Vycm9yJztcbiAgICAgIGNvbnN0IG1ldGhvZCA9IGBfb24ke2dpc3R9SXRlbWA7XG4gICAgICAodGhpcyBhcyBhbnkpWyBtZXRob2QgXShpdGVtLCByZXNwb25zZSwgeGhyLnN0YXR1cywgaGVhZGVycyk7XG4gICAgICB0aGlzLl9vbkNvbXBsZXRlSXRlbShpdGVtLCByZXNwb25zZSwgeGhyLnN0YXR1cywgaGVhZGVycyk7XG4gICAgfTtcbiAgICB4aHIub25lcnJvciA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLl9wYXJzZUhlYWRlcnMoeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5fdHJhbnNmb3JtUmVzcG9uc2UoeGhyLnJlc3BvbnNlKTtcbiAgICAgIHRoaXMuX29uRXJyb3JJdGVtKGl0ZW0sIHJlc3BvbnNlLCB4aHIuc3RhdHVzLCBoZWFkZXJzKTtcbiAgICAgIHRoaXMuX29uQ29tcGxldGVJdGVtKGl0ZW0sIHJlc3BvbnNlLCB4aHIuc3RhdHVzLCBoZWFkZXJzKTtcbiAgICB9O1xuICAgIHhoci5vbmFib3J0ID0gKCkgPT4ge1xuICAgICAgY29uc3QgaGVhZGVycyA9IHRoaXMuX3BhcnNlSGVhZGVycyh4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSB0aGlzLl90cmFuc2Zvcm1SZXNwb25zZSh4aHIucmVzcG9uc2UpO1xuICAgICAgdGhpcy5fb25DYW5jZWxJdGVtKGl0ZW0sIHJlc3BvbnNlLCB4aHIuc3RhdHVzLCBoZWFkZXJzKTtcbiAgICAgIHRoaXMuX29uQ29tcGxldGVJdGVtKGl0ZW0sIHJlc3BvbnNlLCB4aHIuc3RhdHVzLCBoZWFkZXJzKTtcbiAgICB9O1xuICAgIGlmIChpdGVtLm1ldGhvZCAmJiBpdGVtLnVybCkge1xuICAgICAgeGhyLm9wZW4oaXRlbS5tZXRob2QsIGl0ZW0udXJsLCB0cnVlKTtcbiAgICB9XG4gICAgeGhyLndpdGhDcmVkZW50aWFscyA9IGl0ZW0ud2l0aENyZWRlbnRpYWxzO1xuICAgIGlmICh0aGlzLm9wdGlvbnMuaGVhZGVycykge1xuICAgICAgZm9yIChjb25zdCBoZWFkZXIgb2YgdGhpcy5vcHRpb25zLmhlYWRlcnMpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoaGVhZGVyLm5hbWUsIGhlYWRlci52YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpdGVtLmhlYWRlcnMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IGhlYWRlciBvZiBpdGVtLmhlYWRlcnMpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoaGVhZGVyLm5hbWUsIGhlYWRlci52YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmF1dGhUb2tlbiAmJiB0aGlzLmF1dGhUb2tlbkhlYWRlcikge1xuICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIodGhpcy5hdXRoVG9rZW5IZWFkZXIsIHRoaXMuYXV0aFRva2VuKTtcbiAgICB9XG4gICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKSB7XG4gICAgICAgIHRoYXQucmVzcG9uc2UuZW1pdCh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZm9ybWF0RGF0YUZ1bmN0aW9uSXNBc3luYykge1xuICAgICAgc2VuZGFibGUudGhlbihcbiAgICAgICAgKHJlc3VsdDogYW55KSA9PiB4aHIuc2VuZChKU09OLnN0cmluZ2lmeShyZXN1bHQpKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgeGhyLnNlbmQoc2VuZGFibGUpO1xuICAgIH1cbiAgICB0aGlzLl9yZW5kZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfZ2V0VG90YWxQcm9ncmVzcyh2YWx1ZSA9IDApOiBudW1iZXIge1xuICAgIGlmICh0aGlzLm9wdGlvbnMucmVtb3ZlQWZ0ZXJVcGxvYWQpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgY29uc3Qgbm90VXBsb2FkZWQgPSB0aGlzLmdldE5vdFVwbG9hZGVkSXRlbXMoKS5sZW5ndGg7XG4gICAgY29uc3QgdXBsb2FkZWQgPSBub3RVcGxvYWRlZCA/IHRoaXMucXVldWUubGVuZ3RoIC0gbm90VXBsb2FkZWQgOiB0aGlzLnF1ZXVlLmxlbmd0aDtcbiAgICBjb25zdCByYXRpbyA9IDEwMCAvIHRoaXMucXVldWUubGVuZ3RoO1xuICAgIGNvbnN0IGN1cnJlbnQgPSB2YWx1ZSAqIHJhdGlvIC8gMTAwO1xuICAgIHJldHVybiBNYXRoLnJvdW5kKHVwbG9hZGVkICogcmF0aW8gKyBjdXJyZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfZ2V0RmlsdGVycyhmaWx0ZXJzPzogRmlsdGVyRnVuY3Rpb25bXSB8IHN0cmluZyk6IEZpbHRlckZ1bmN0aW9uW10gfCBbXSB7XG4gICAgaWYgKCFmaWx0ZXJzKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zPy5maWx0ZXJzIHx8IFtdO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShmaWx0ZXJzKSkge1xuICAgICAgcmV0dXJuIGZpbHRlcnM7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZmlsdGVycyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IG5hbWVzID0gZmlsdGVycy5tYXRjaCgvW15cXHMsXSsvZyk7XG5cbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnM/LmZpbHRlcnMgfHwgW11cbiAgICAgICAgLmZpbHRlcigoZmlsdGVyOiBhbnkpID0+IG5hbWVzPy5pbmRleE9mKGZpbHRlci5uYW1lKSAhPT0gLTEpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm9wdGlvbnM/LmZpbHRlcnMgfHwgW107XG4gIH1cblxuICBwcm90ZWN0ZWQgX3JlbmRlcigpOiBhbnkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3F1ZXVlTGltaXRGaWx0ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5xdWV1ZUxpbWl0ID09PSB1bmRlZmluZWQgfHwgdGhpcy5xdWV1ZS5sZW5ndGggPCB0aGlzLm9wdGlvbnMucXVldWVMaW1pdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBfaXNWYWxpZEZpbGUoZmlsZTogRmlsZUxpa2VPYmplY3QsIGZpbHRlcnM6IEZpbHRlckZ1bmN0aW9uW10sIG9wdGlvbnM6IEZpbGVVcGxvYWRlck9wdGlvbnMpOiBib29sZWFuIHtcbiAgICB0aGlzLl9mYWlsRmlsdGVySW5kZXggPSAtMTtcblxuICAgIHJldHVybiAhZmlsdGVycy5sZW5ndGggPyB0cnVlIDogZmlsdGVycy5ldmVyeSgoZmlsdGVyOiBGaWx0ZXJGdW5jdGlvbikgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLl9mYWlsRmlsdGVySW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgIHRoaXMuX2ZhaWxGaWx0ZXJJbmRleCsrO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmlsdGVyLmZuLmNhbGwodGhpcywgZmlsZSwgb3B0aW9ucyk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2lzU3VjY2Vzc0NvZGUoc3RhdHVzOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwKSB8fCBzdGF0dXMgPT09IDMwNDtcbiAgfVxuXG4gIHByb3RlY3RlZCBfdHJhbnNmb3JtUmVzcG9uc2UocmVzcG9uc2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9wYXJzZUhlYWRlcnMoaGVhZGVyczogc3RyaW5nKTogUGFyc2VkUmVzcG9uc2VIZWFkZXJzIHtcbiAgICBjb25zdCBwYXJzZWQ6IGFueSA9IHt9O1xuICAgIGxldCBrZXk6IGFueTtcbiAgICBsZXQgdmFsOiBhbnk7XG4gICAgbGV0IGk6IGFueTtcbiAgICBpZiAoIWhlYWRlcnMpIHtcbiAgICAgIHJldHVybiBwYXJzZWQ7XG4gICAgfVxuICAgIGhlYWRlcnMuc3BsaXQoJ1xcbicpLm1hcCgobGluZTogYW55KSA9PiB7XG4gICAgICBpID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAgICBrZXkgPSBsaW5lLnNsaWNlKDAsIGkpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgdmFsID0gbGluZS5zbGljZShpICsgMSkudHJpbSgpO1xuICAgICAgaWYgKGtleSkge1xuICAgICAgICBwYXJzZWRbIGtleSBdID0gcGFyc2VkWyBrZXkgXSA/IHBhcnNlZFsga2V5IF0gKyAnLCAnICsgdmFsIDogdmFsO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBhcnNlZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBfb25XaGVuQWRkaW5nRmlsZUZhaWxlZChpdGVtOiBGaWxlTGlrZU9iamVjdCwgZmlsdGVyOiBhbnksIG9wdGlvbnM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25XaGVuQWRkaW5nRmlsZUZhaWxlZChpdGVtLCBmaWx0ZXIsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9vbkFmdGVyQWRkaW5nRmlsZShpdGVtOiBGaWxlSXRlbSk6IHZvaWQge1xuICAgIHRoaXMub25BZnRlckFkZGluZ0ZpbGUoaXRlbSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX29uQWZ0ZXJBZGRpbmdBbGwoaXRlbXM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25BZnRlckFkZGluZ0FsbChpdGVtcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX29uQmVmb3JlVXBsb2FkSXRlbShpdGVtOiBGaWxlSXRlbSk6IHZvaWQge1xuICAgIGl0ZW0uX29uQmVmb3JlVXBsb2FkKCk7XG4gICAgdGhpcy5vbkJlZm9yZVVwbG9hZEl0ZW0oaXRlbSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX29uQnVpbGRJdGVtRm9ybShpdGVtOiBGaWxlSXRlbSwgZm9ybTogYW55KTogdm9pZCB7XG4gICAgaXRlbS5fb25CdWlsZEZvcm0oZm9ybSk7XG4gICAgdGhpcy5vbkJ1aWxkSXRlbUZvcm0oaXRlbSwgZm9ybSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX29uUHJvZ3Jlc3NJdGVtKGl0ZW06IEZpbGVJdGVtLCBwcm9ncmVzczogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLl9nZXRUb3RhbFByb2dyZXNzKHByb2dyZXNzKTtcbiAgICB0aGlzLnByb2dyZXNzID0gdG90YWw7XG4gICAgaXRlbS5fb25Qcm9ncmVzcyhwcm9ncmVzcyk7XG4gICAgdGhpcy5vblByb2dyZXNzSXRlbShpdGVtLCBwcm9ncmVzcyk7XG4gICAgdGhpcy5vblByb2dyZXNzQWxsKHRvdGFsKTtcbiAgICB0aGlzLl9yZW5kZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfb25TdWNjZXNzSXRlbShpdGVtOiBGaWxlSXRlbSwgcmVzcG9uc2U6IHN0cmluZywgc3RhdHVzOiBudW1iZXIsIGhlYWRlcnM6IFBhcnNlZFJlc3BvbnNlSGVhZGVycyk6IHZvaWQge1xuICAgIGl0ZW0uX29uU3VjY2VzcyhyZXNwb25zZSwgc3RhdHVzLCBoZWFkZXJzKTtcbiAgICB0aGlzLm9uU3VjY2Vzc0l0ZW0oaXRlbSwgcmVzcG9uc2UsIHN0YXR1cywgaGVhZGVycyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX29uQ2FuY2VsSXRlbShpdGVtOiBGaWxlSXRlbSwgcmVzcG9uc2U6IHN0cmluZywgc3RhdHVzOiBudW1iZXIsIGhlYWRlcnM6IFBhcnNlZFJlc3BvbnNlSGVhZGVycyk6IHZvaWQge1xuICAgIGl0ZW0uX29uQ2FuY2VsKHJlc3BvbnNlLCBzdGF0dXMsIGhlYWRlcnMpO1xuICAgIHRoaXMub25DYW5jZWxJdGVtKGl0ZW0sIHJlc3BvbnNlLCBzdGF0dXMsIGhlYWRlcnMpO1xuICB9XG59XG4iXX0=","import { Directive, EventEmitter, ElementRef, HostListener, Input, Output, inject } from '@angular/core';\nimport { FileUploader } from './file-uploader.class';\nimport * as i0 from \"@angular/core\";\nexport class FileDropDirective {\n constructor() {\n this.fileOver = new EventEmitter();\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n this.onFileDrop = new EventEmitter();\n this.element = inject(ElementRef);\n }\n getOptions() {\n return this.uploader?.options;\n }\n getFilters() {\n return '';\n }\n onDrop(event) {\n const transfer = this._getTransfer(event);\n if (!transfer) {\n return;\n }\n const options = this.getOptions();\n const filters = this.getFilters();\n this._preventAndStop(event);\n if (options) {\n this.uploader?.addToQueue(transfer.files, options, filters);\n }\n this.fileOver.emit(false);\n this.onFileDrop.emit(transfer.files);\n }\n onDragOver(event) {\n const transfer = this._getTransfer(event);\n if (!this._haveFiles(transfer.types)) {\n return;\n }\n transfer.dropEffect = 'copy';\n this._preventAndStop(event);\n this.fileOver.emit(true);\n }\n onDragLeave(event) {\n if (this.element) {\n if (event.currentTarget === this.element[0]) {\n return;\n }\n }\n this._preventAndStop(event);\n this.fileOver.emit(false);\n }\n _getTransfer(event) {\n return event.dataTransfer ? event.dataTransfer : event.originalEvent.dataTransfer; // jQuery fix;\n }\n _preventAndStop(event) {\n event.preventDefault();\n event.stopPropagation();\n }\n _haveFiles(types) {\n if (!types) {\n return false;\n }\n if (types.indexOf) {\n return types.indexOf('Files') !== -1;\n }\n else if (types.contains) {\n return types.contains('Files');\n }\n else {\n return false;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: FileDropDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: FileDropDirective, isStandalone: false, selector: \"[ng2FileDrop]\", inputs: { uploader: \"uploader\" }, outputs: { fileOver: \"fileOver\", onFileDrop: \"onFileDrop\" }, host: { listeners: { \"drop\": \"onDrop($event)\", \"dragover\": \"onDragOver($event)\", \"dragleave\": \"onDragLeave($event)\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: FileDropDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[ng2FileDrop]', standalone: false }]\n }], propDecorators: { uploader: [{\n type: Input\n }], fileOver: [{\n type: Output\n }], onFileDrop: [{\n type: Output\n }], onDrop: [{\n type: HostListener,\n args: ['drop', ['$event']]\n }], onDragOver: [{\n type: HostListener,\n args: ['dragover', ['$event']]\n }], onDragLeave: [{\n type: HostListener,\n args: ['dragleave', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmcyLWZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkL2ZpbGUtZHJvcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RyxPQUFPLEVBQUUsWUFBWSxFQUF1QixNQUFNLHVCQUF1QixDQUFDOztBQUcxRSxNQUFNLE9BQU8saUJBQWlCO0lBRDlCO1FBR2EsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVELCtEQUErRDtRQUNwRCxlQUFVLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFFL0QsWUFBTyxHQUFjLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztLQXlFbkQ7SUF2RUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUM7SUFDaEMsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFHRCxNQUFNLENBQUMsS0FBaUI7UUFDdEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBR0QsVUFBVSxDQUFDLEtBQWlCO1FBQzFCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDckMsT0FBTztRQUNULENBQUM7UUFFRCxRQUFRLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFHRCxXQUFXLENBQUMsS0FBaUI7UUFDM0IsSUFBSyxJQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsSUFBSSxLQUFLLENBQUMsYUFBYSxLQUFNLElBQVksQ0FBQyxPQUFPLENBQUUsQ0FBQyxDQUFFLEVBQUUsQ0FBQztnQkFDdkQsT0FBTztZQUNULENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRVMsWUFBWSxDQUFDLEtBQVU7UUFDL0IsT0FBTyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDLGNBQWM7SUFDbkcsQ0FBQztJQUVTLGVBQWUsQ0FBQyxLQUFpQjtRQUN6QyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFUyxVQUFVLENBQUMsS0FBVTtRQUM3QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzFCLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7OEdBOUVVLGlCQUFpQjtrR0FBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUQ3QixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFOzhCQUUvQyxRQUFRO3NCQUFqQixLQUFLO2dCQUNLLFFBQVE7c0JBQWxCLE1BQU07Z0JBRUksVUFBVTtzQkFBcEIsTUFBTTtnQkFhUCxNQUFNO3NCQURMLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUUsUUFBUSxDQUFFO2dCQWtCbEMsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFFLFFBQVEsQ0FBRTtnQkFhdEMsV0FBVztzQkFEVixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFFLFFBQVEsQ0FBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGaWxlVXBsb2FkZXIsIEZpbGVVcGxvYWRlck9wdGlvbnMgfSBmcm9tICcuL2ZpbGUtdXBsb2FkZXIuY2xhc3MnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbbmcyRmlsZURyb3BdJywgc3RhbmRhbG9uZTogZmFsc2UgfSlcbmV4cG9ydCBjbGFzcyBGaWxlRHJvcERpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpICB1cGxvYWRlcj86IEZpbGVVcGxvYWRlcjtcbiAgQE91dHB1dCgpICBmaWxlT3ZlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICBAT3V0cHV0KCkgIG9uRmlsZURyb3A6IEV2ZW50RW1pdHRlcjxGaWxlW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlW10+KCk7XG5cbiAgcHJvdGVjdGVkIGVsZW1lbnQ6IEVsZW1lbnRSZWY9IGluamVjdChFbGVtZW50UmVmKTtcblxuICBnZXRPcHRpb25zKCk6IEZpbGVVcGxvYWRlck9wdGlvbnMgfCB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy51cGxvYWRlcj8ub3B0aW9ucztcbiAgfVxuXG4gIGdldEZpbHRlcnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyAnJGV2ZW50JyBdKVxuICBvbkRyb3AoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0cmFuc2ZlciA9IHRoaXMuX2dldFRyYW5zZmVyKGV2ZW50KTtcbiAgICBpZiAoIXRyYW5zZmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucygpO1xuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmdldEZpbHRlcnMoKTtcbiAgICB0aGlzLl9wcmV2ZW50QW5kU3RvcChldmVudCk7XG4gICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgIHRoaXMudXBsb2FkZXI/LmFkZFRvUXVldWUodHJhbnNmZXIuZmlsZXMsIG9wdGlvbnMsIGZpbHRlcnMpO1xuICAgIH1cbiAgICB0aGlzLmZpbGVPdmVyLmVtaXQoZmFsc2UpO1xuICAgIHRoaXMub25GaWxlRHJvcC5lbWl0KHRyYW5zZmVyLmZpbGVzKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyAnJGV2ZW50JyBdKVxuICBvbkRyYWdPdmVyKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdHJhbnNmZXIgPSB0aGlzLl9nZXRUcmFuc2ZlcihldmVudCk7XG4gICAgaWYgKCF0aGlzLl9oYXZlRmlsZXModHJhbnNmZXIudHlwZXMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5JztcbiAgICB0aGlzLl9wcmV2ZW50QW5kU3RvcChldmVudCk7XG4gICAgdGhpcy5maWxlT3Zlci5lbWl0KHRydWUpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyAnJGV2ZW50JyBdKVxuICBvbkRyYWdMZWF2ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICgodGhpcyBhcyBhbnkpLmVsZW1lbnQpIHtcbiAgICAgIGlmIChldmVudC5jdXJyZW50VGFyZ2V0ID09PSAodGhpcyBhcyBhbnkpLmVsZW1lbnRbIDAgXSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fcHJldmVudEFuZFN0b3AoZXZlbnQpO1xuICAgIHRoaXMuZmlsZU92ZXIuZW1pdChmYWxzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2dldFRyYW5zZmVyKGV2ZW50OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBldmVudC5kYXRhVHJhbnNmZXIgPyBldmVudC5kYXRhVHJhbnNmZXIgOiBldmVudC5vcmlnaW5hbEV2ZW50LmRhdGFUcmFuc2ZlcjsgLy8galF1ZXJ5IGZpeDtcbiAgfVxuXG4gIHByb3RlY3RlZCBfcHJldmVudEFuZFN0b3AoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9oYXZlRmlsZXModHlwZXM6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghdHlwZXMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZXMuaW5kZXhPZikge1xuICAgICAgcmV0dXJuIHR5cGVzLmluZGV4T2YoJ0ZpbGVzJykgIT09IC0xO1xuICAgIH0gZWxzZSBpZiAodHlwZXMuY29udGFpbnMpIHtcbiAgICAgIHJldHVybiB0eXBlcy5jb250YWlucygnRmlsZXMnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIl19","import { Directive, EventEmitter, ElementRef, Input, HostListener, Output, inject } from '@angular/core';\nimport { FileUploader } from './file-uploader.class';\nimport * as i0 from \"@angular/core\";\nexport class FileSelectDirective {\n constructor() {\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n this.onFileSelected = new EventEmitter();\n this.element = inject(ElementRef);\n }\n getOptions() {\n return this.uploader?.options;\n }\n getFilters() {\n return '';\n }\n isEmptyAfterSelection() {\n return !!this.element.nativeElement.attributes.multiple;\n }\n onChange() {\n const files = this.element.nativeElement.files;\n const options = this.getOptions();\n const filters = this.getFilters();\n this.uploader?.addToQueue(files, options, filters);\n this.onFileSelected.emit(files);\n if (this.isEmptyAfterSelection()) {\n this.element.nativeElement.value = '';\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: FileSelectDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: FileSelectDirective, isStandalone: false, selector: \"[ng2FileSelect]\", inputs: { uploader: \"uploader\" }, outputs: { onFileSelected: \"onFileSelected\" }, host: { listeners: { \"change\": \"onChange()\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: FileSelectDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[ng2FileSelect]', standalone: false }]\n }], propDecorators: { uploader: [{\n type: Input\n }], onFileSelected: [{\n type: Output\n }], onChange: [{\n type: HostListener,\n args: ['change']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zZWxlY3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZzItZmlsZS11cGxvYWQvZmlsZS11cGxvYWQvZmlsZS1zZWxlY3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekcsT0FBTyxFQUFFLFlBQVksRUFBdUIsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHMUUsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUdFLCtEQUErRDtRQUNyRCxtQkFBYyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRWxFLFlBQU8sR0FBYyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0EwQm5EO0lBeEJDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7SUFDMUQsQ0FBQztJQUdELFFBQVE7UUFDTixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDOzhHQTlCVSxtQkFBbUI7a0dBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFOzhCQUVsRCxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLGNBQWM7c0JBQXZCLE1BQU07Z0JBaUJQLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsIElucHV0LCBIb3N0TGlzdGVuZXIsIE91dHB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEZpbGVVcGxvYWRlciwgRmlsZVVwbG9hZGVyT3B0aW9ucyB9IGZyb20gJy4vZmlsZS11cGxvYWRlci5jbGFzcyc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tuZzJGaWxlU2VsZWN0XScsIHN0YW5kYWxvbmU6IGZhbHNlIH0pXG5leHBvcnQgY2xhc3MgRmlsZVNlbGVjdERpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIHVwbG9hZGVyPzogRmlsZVVwbG9hZGVyO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgQE91dHB1dCgpIG9uRmlsZVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8RmlsZVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZVtdPigpO1xuXG4gIHByb3RlY3RlZCBlbGVtZW50OiBFbGVtZW50UmVmPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgZ2V0T3B0aW9ucygpOiBGaWxlVXBsb2FkZXJPcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy51cGxvYWRlcj8ub3B0aW9ucztcbiAgfVxuXG4gIGdldEZpbHRlcnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBpc0VtcHR5QWZ0ZXJTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYXR0cmlidXRlcy5tdWx0aXBsZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NoYW5nZScpXG4gIG9uQ2hhbmdlKCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbGVzID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZmlsZXM7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucygpO1xuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmdldEZpbHRlcnMoKTtcbiAgICB0aGlzLnVwbG9hZGVyPy5hZGRUb1F1ZXVlKGZpbGVzLCBvcHRpb25zLCBmaWx0ZXJzKTtcblxuICAgIHRoaXMub25GaWxlU2VsZWN0ZWQuZW1pdChmaWxlcyk7XG4gICAgaWYgKHRoaXMuaXNFbXB0eUFmdGVyU2VsZWN0aW9uKCkpIHtcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgfVxuICB9XG59XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FileDropDirective } from './file-drop.directive';\nimport { FileSelectDirective } from './file-select.directive';\nimport * as i0 from \"@angular/core\";\nexport class FileUploadModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: FileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: FileUploadModule, declarations: [FileDropDirective, FileSelectDirective], imports: [CommonModule], exports: [FileDropDirective, FileSelectDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: FileUploadModule, imports: [CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: FileUploadModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [FileDropDirective, FileSelectDirective],\n exports: [FileDropDirective, FileSelectDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZzItZmlsZS11cGxvYWQvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQU85RCxNQUFNLE9BQU8sZ0JBQWdCOzhHQUFoQixnQkFBZ0I7K0dBQWhCLGdCQUFnQixpQkFIWCxpQkFBaUIsRUFBRSxtQkFBbUIsYUFEM0MsWUFBWSxhQUVaLGlCQUFpQixFQUFFLG1CQUFtQjsrR0FFdEMsZ0JBQWdCLFlBSmhCLFlBQVk7OzJGQUlaLGdCQUFnQjtrQkFMNUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBRSxZQUFZLENBQUU7b0JBQ3pCLFlBQVksRUFBRSxDQUFFLGlCQUFpQixFQUFFLG1CQUFtQixDQUFFO29CQUN4RCxPQUFPLEVBQUUsQ0FBRSxpQkFBaUIsRUFBRSxtQkFBbUIsQ0FBRTtpQkFDcEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRmlsZURyb3BEaXJlY3RpdmUgfSBmcm9tICcuL2ZpbGUtZHJvcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRmlsZVNlbGVjdERpcmVjdGl2ZSB9IGZyb20gJy4vZmlsZS1zZWxlY3QuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogWyBDb21tb25Nb2R1bGUgXSxcbiAgZGVjbGFyYXRpb25zOiBbIEZpbGVEcm9wRGlyZWN0aXZlLCBGaWxlU2VsZWN0RGlyZWN0aXZlIF0sXG4gIGV4cG9ydHM6IFsgRmlsZURyb3BEaXJlY3RpdmUsIEZpbGVTZWxlY3REaXJlY3RpdmUgXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkTW9kdWxlIHtcbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyLWZpbGUtdXBsb2FkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9uZzItZmlsZS11cGxvYWQvbmcyLWZpbGUtdXBsb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
@@ -1,7 +1,195 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
import * as i0 from '@angular/core';
|
2
|
+
import { EventEmitter, ElementRef } from '@angular/core';
|
3
|
+
import * as i3 from '@angular/common';
|
4
|
+
|
5
|
+
declare class FileLikeObject {
|
6
|
+
lastModifiedDate: any;
|
7
|
+
size: any;
|
8
|
+
type?: string;
|
9
|
+
name?: string;
|
10
|
+
rawFile: HTMLInputElement | File;
|
11
|
+
constructor(fileOrInput: HTMLInputElement | File);
|
12
|
+
_createFromFakePath(path: string): void;
|
13
|
+
_createFromObject(object: {
|
14
|
+
size: number;
|
15
|
+
type: string;
|
16
|
+
name: string;
|
17
|
+
}): void;
|
18
|
+
}
|
19
|
+
|
20
|
+
declare class FileItem {
|
21
|
+
file: FileLikeObject;
|
22
|
+
_file: File;
|
23
|
+
alias?: string;
|
24
|
+
url: string;
|
25
|
+
method?: string;
|
26
|
+
headers: any;
|
27
|
+
withCredentials: boolean;
|
28
|
+
formData: any;
|
29
|
+
isReady: boolean;
|
30
|
+
isUploading: boolean;
|
31
|
+
isUploaded: boolean;
|
32
|
+
isSuccess: boolean;
|
33
|
+
isCancel: boolean;
|
34
|
+
isError: boolean;
|
35
|
+
progress: number;
|
36
|
+
index?: number;
|
37
|
+
_xhr?: XMLHttpRequest;
|
38
|
+
_form: any;
|
39
|
+
protected uploader: FileUploader;
|
40
|
+
protected some: File;
|
41
|
+
protected options: FileUploaderOptions;
|
42
|
+
constructor(uploader: FileUploader, some: File, options: FileUploaderOptions);
|
43
|
+
upload(): void;
|
44
|
+
cancel(): void;
|
45
|
+
remove(): void;
|
46
|
+
onBeforeUpload(): void;
|
47
|
+
onBuildForm(form: any): any;
|
48
|
+
onProgress(progress: number): any;
|
49
|
+
onSuccess(response: string, status: number, headers: ParsedResponseHeaders): any;
|
50
|
+
onError(response: string, status: number, headers: ParsedResponseHeaders): any;
|
51
|
+
onCancel(response: string, status: number, headers: ParsedResponseHeaders): any;
|
52
|
+
onComplete(response: string, status: number, headers: ParsedResponseHeaders): any;
|
53
|
+
_onBeforeUpload(): void;
|
54
|
+
_onBuildForm(form: any): void;
|
55
|
+
_onProgress(progress: number): void;
|
56
|
+
_onSuccess(response: string, status: number, headers: ParsedResponseHeaders): void;
|
57
|
+
_onError(response: string, status: number, headers: ParsedResponseHeaders): void;
|
58
|
+
_onCancel(response: string, status: number, headers: ParsedResponseHeaders): void;
|
59
|
+
_onComplete(response: string, status: number, headers: ParsedResponseHeaders): void;
|
60
|
+
_prepareToUploading(): void;
|
61
|
+
}
|
62
|
+
|
63
|
+
interface Headers {
|
64
|
+
name: string;
|
65
|
+
value: string;
|
66
|
+
}
|
67
|
+
interface ParsedResponseHeaders {
|
68
|
+
[headerFieldName: string]: string;
|
69
|
+
}
|
70
|
+
interface FilterFunction {
|
71
|
+
name: string;
|
72
|
+
fn(item: FileLikeObject, options?: FileUploaderOptions): boolean;
|
73
|
+
}
|
74
|
+
interface FileUploaderOptions {
|
75
|
+
allowedMimeType?: string[];
|
76
|
+
allowedFileType?: string[];
|
77
|
+
autoUpload?: boolean;
|
78
|
+
isHTML5?: boolean;
|
79
|
+
filters?: FilterFunction[];
|
80
|
+
headers?: Headers[];
|
81
|
+
method?: string;
|
82
|
+
authToken?: string;
|
83
|
+
maxFileSize?: number;
|
84
|
+
queueLimit?: number;
|
85
|
+
removeAfterUpload?: boolean;
|
86
|
+
url: string;
|
87
|
+
disableMultipart?: boolean;
|
88
|
+
itemAlias?: string;
|
89
|
+
authTokenHeader?: string;
|
90
|
+
additionalParameter?: {
|
91
|
+
[key: string]: any;
|
92
|
+
};
|
93
|
+
parametersBeforeFiles?: boolean;
|
94
|
+
formatDataFunction?: Function;
|
95
|
+
formatDataFunctionIsAsync?: boolean;
|
96
|
+
}
|
97
|
+
declare class FileUploader {
|
98
|
+
authToken?: string;
|
99
|
+
isUploading: boolean;
|
100
|
+
queue: FileItem[];
|
101
|
+
progress: number;
|
102
|
+
_nextIndex: number;
|
103
|
+
autoUpload: any;
|
104
|
+
authTokenHeader?: string;
|
105
|
+
response: EventEmitter<any>;
|
106
|
+
options: FileUploaderOptions;
|
107
|
+
protected _failFilterIndex?: number;
|
108
|
+
constructor(options: FileUploaderOptions);
|
109
|
+
setOptions(options: FileUploaderOptions): void;
|
110
|
+
addToQueue(files: File[], _options?: FileUploaderOptions, filters?: [] | string): void;
|
111
|
+
removeFromQueue(value: FileItem): void;
|
112
|
+
clearQueue(): void;
|
113
|
+
uploadItem(value: FileItem): void;
|
114
|
+
cancelItem(value: FileItem): void;
|
115
|
+
uploadAll(): void;
|
116
|
+
cancelAll(): void;
|
117
|
+
isFile(value: any): boolean;
|
118
|
+
isFileLikeObject(value: any): boolean;
|
119
|
+
getIndexOfItem(value: any): number;
|
120
|
+
getNotUploadedItems(): any[];
|
121
|
+
getReadyItems(): any[];
|
122
|
+
onAfterAddingAll(fileItems: any): any;
|
123
|
+
onBuildItemForm(fileItem: FileItem, form: any): any;
|
124
|
+
onAfterAddingFile(fileItem: FileItem): any;
|
125
|
+
onWhenAddingFileFailed(item: FileLikeObject, filter: any, options: any): any;
|
126
|
+
onBeforeUploadItem(fileItem: FileItem): any;
|
127
|
+
onProgressItem(fileItem: FileItem, progress: any): any;
|
128
|
+
onProgressAll(progress: any): any;
|
129
|
+
onSuccessItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any;
|
130
|
+
onErrorItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any;
|
131
|
+
onCancelItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any;
|
132
|
+
onCompleteItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any;
|
133
|
+
onCompleteAll(): any;
|
134
|
+
_mimeTypeFilter(item: FileLikeObject): boolean;
|
135
|
+
_fileSizeFilter(item: FileLikeObject): boolean;
|
136
|
+
_fileTypeFilter(item: FileLikeObject): boolean;
|
137
|
+
_onErrorItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void;
|
138
|
+
_onCompleteItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void;
|
139
|
+
protected _headersGetter(parsedHeaders: ParsedResponseHeaders): any;
|
140
|
+
protected _xhrTransport(item: FileItem): any;
|
141
|
+
protected _getTotalProgress(value?: number): number;
|
142
|
+
protected _getFilters(filters?: FilterFunction[] | string): FilterFunction[] | [];
|
143
|
+
protected _render(): any;
|
144
|
+
protected _queueLimitFilter(): boolean;
|
145
|
+
protected _isValidFile(file: FileLikeObject, filters: FilterFunction[], options: FileUploaderOptions): boolean;
|
146
|
+
protected _isSuccessCode(status: number): boolean;
|
147
|
+
protected _transformResponse(response: string): string;
|
148
|
+
protected _parseHeaders(headers: string): ParsedResponseHeaders;
|
149
|
+
protected _onWhenAddingFileFailed(item: FileLikeObject, filter: any, options: any): void;
|
150
|
+
protected _onAfterAddingFile(item: FileItem): void;
|
151
|
+
protected _onAfterAddingAll(items: any): void;
|
152
|
+
protected _onBeforeUploadItem(item: FileItem): void;
|
153
|
+
protected _onBuildItemForm(item: FileItem, form: any): void;
|
154
|
+
protected _onProgressItem(item: FileItem, progress: any): void;
|
155
|
+
protected _onSuccessItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void;
|
156
|
+
protected _onCancelItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void;
|
157
|
+
}
|
158
|
+
|
159
|
+
declare class FileDropDirective {
|
160
|
+
uploader?: FileUploader;
|
161
|
+
fileOver: EventEmitter<any>;
|
162
|
+
onFileDrop: EventEmitter<File[]>;
|
163
|
+
protected element: ElementRef;
|
164
|
+
getOptions(): FileUploaderOptions | void;
|
165
|
+
getFilters(): string;
|
166
|
+
onDrop(event: MouseEvent): void;
|
167
|
+
onDragOver(event: MouseEvent): void;
|
168
|
+
onDragLeave(event: MouseEvent): void;
|
169
|
+
protected _getTransfer(event: any): any;
|
170
|
+
protected _preventAndStop(event: MouseEvent): void;
|
171
|
+
protected _haveFiles(types: any): boolean;
|
172
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FileDropDirective, never>;
|
173
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<FileDropDirective, "[ng2FileDrop]", never, { "uploader": { "alias": "uploader"; "required": false; }; }, { "fileOver": "fileOver"; "onFileDrop": "onFileDrop"; }, never, never, false, never>;
|
174
|
+
}
|
175
|
+
|
176
|
+
declare class FileSelectDirective {
|
177
|
+
uploader?: FileUploader;
|
178
|
+
onFileSelected: EventEmitter<File[]>;
|
179
|
+
protected element: ElementRef;
|
180
|
+
getOptions(): FileUploaderOptions | undefined;
|
181
|
+
getFilters(): string;
|
182
|
+
isEmptyAfterSelection(): boolean;
|
183
|
+
onChange(): void;
|
184
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FileSelectDirective, never>;
|
185
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<FileSelectDirective, "[ng2FileSelect]", never, { "uploader": { "alias": "uploader"; "required": false; }; }, { "onFileSelected": "onFileSelected"; }, never, never, false, never>;
|
186
|
+
}
|
187
|
+
|
188
|
+
declare class FileUploadModule {
|
189
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FileUploadModule, never>;
|
190
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<FileUploadModule, [typeof FileDropDirective, typeof FileSelectDirective], [typeof i3.CommonModule], [typeof FileDropDirective, typeof FileSelectDirective]>;
|
191
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<FileUploadModule>;
|
192
|
+
}
|
193
|
+
|
194
|
+
export { FileDropDirective, FileItem, FileLikeObject, FileSelectDirective, FileUploadModule, FileUploader };
|
195
|
+
export type { FileUploaderOptions, FilterFunction, Headers, ParsedResponseHeaders };
|
package/package.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "ng2-file-upload",
|
3
|
-
"version": "
|
3
|
+
"version": "9.0.0",
|
4
4
|
"description": "Angular file uploader",
|
5
5
|
"author": "Dmitriy Shekhovtsov <valorkin@gmail.com>",
|
6
6
|
"license": "MIT",
|
7
7
|
"peerDependencies": {
|
8
|
-
"@angular/core": "^
|
9
|
-
"@angular/common": "^
|
8
|
+
"@angular/core": "^20.0.0",
|
9
|
+
"@angular/common": "^20.0.0"
|
10
10
|
},
|
11
11
|
"sideEffects": false,
|
12
12
|
"publishConfig": {
|
@@ -1,20 +0,0 @@
|
|
1
|
-
import { EventEmitter, ElementRef } from '@angular/core';
|
2
|
-
import { FileUploader, FileUploaderOptions } from './file-uploader.class';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export declare class FileDropDirective {
|
5
|
-
uploader?: FileUploader;
|
6
|
-
fileOver: EventEmitter<any>;
|
7
|
-
onFileDrop: EventEmitter<File[]>;
|
8
|
-
protected element: ElementRef;
|
9
|
-
constructor(element: ElementRef);
|
10
|
-
getOptions(): FileUploaderOptions | void;
|
11
|
-
getFilters(): string;
|
12
|
-
onDrop(event: MouseEvent): void;
|
13
|
-
onDragOver(event: MouseEvent): void;
|
14
|
-
onDragLeave(event: MouseEvent): void;
|
15
|
-
protected _getTransfer(event: any): any;
|
16
|
-
protected _preventAndStop(event: MouseEvent): void;
|
17
|
-
protected _haveFiles(types: any): boolean;
|
18
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<FileDropDirective, never>;
|
19
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<FileDropDirective, "[ng2FileDrop]", never, { "uploader": { "alias": "uploader"; "required": false; }; }, { "fileOver": "fileOver"; "onFileDrop": "onFileDrop"; }, never, never, false, never>;
|
20
|
-
}
|
@@ -1,44 +0,0 @@
|
|
1
|
-
import { FileLikeObject } from './file-like-object.class';
|
2
|
-
import { FileUploader, ParsedResponseHeaders, FileUploaderOptions } from './file-uploader.class';
|
3
|
-
export declare class FileItem {
|
4
|
-
file: FileLikeObject;
|
5
|
-
_file: File;
|
6
|
-
alias?: string;
|
7
|
-
url: string;
|
8
|
-
method?: string;
|
9
|
-
headers: any;
|
10
|
-
withCredentials: boolean;
|
11
|
-
formData: any;
|
12
|
-
isReady: boolean;
|
13
|
-
isUploading: boolean;
|
14
|
-
isUploaded: boolean;
|
15
|
-
isSuccess: boolean;
|
16
|
-
isCancel: boolean;
|
17
|
-
isError: boolean;
|
18
|
-
progress: number;
|
19
|
-
index?: number;
|
20
|
-
_xhr?: XMLHttpRequest;
|
21
|
-
_form: any;
|
22
|
-
protected uploader: FileUploader;
|
23
|
-
protected some: File;
|
24
|
-
protected options: FileUploaderOptions;
|
25
|
-
constructor(uploader: FileUploader, some: File, options: FileUploaderOptions);
|
26
|
-
upload(): void;
|
27
|
-
cancel(): void;
|
28
|
-
remove(): void;
|
29
|
-
onBeforeUpload(): void;
|
30
|
-
onBuildForm(form: any): any;
|
31
|
-
onProgress(progress: number): any;
|
32
|
-
onSuccess(response: string, status: number, headers: ParsedResponseHeaders): any;
|
33
|
-
onError(response: string, status: number, headers: ParsedResponseHeaders): any;
|
34
|
-
onCancel(response: string, status: number, headers: ParsedResponseHeaders): any;
|
35
|
-
onComplete(response: string, status: number, headers: ParsedResponseHeaders): any;
|
36
|
-
_onBeforeUpload(): void;
|
37
|
-
_onBuildForm(form: any): void;
|
38
|
-
_onProgress(progress: number): void;
|
39
|
-
_onSuccess(response: string, status: number, headers: ParsedResponseHeaders): void;
|
40
|
-
_onError(response: string, status: number, headers: ParsedResponseHeaders): void;
|
41
|
-
_onCancel(response: string, status: number, headers: ParsedResponseHeaders): void;
|
42
|
-
_onComplete(response: string, status: number, headers: ParsedResponseHeaders): void;
|
43
|
-
_prepareToUploading(): void;
|
44
|
-
}
|
@@ -1,14 +0,0 @@
|
|
1
|
-
export declare class FileLikeObject {
|
2
|
-
lastModifiedDate: any;
|
3
|
-
size: any;
|
4
|
-
type?: string;
|
5
|
-
name?: string;
|
6
|
-
rawFile: HTMLInputElement | File;
|
7
|
-
constructor(fileOrInput: HTMLInputElement | File);
|
8
|
-
_createFromFakePath(path: string): void;
|
9
|
-
_createFromObject(object: {
|
10
|
-
size: number;
|
11
|
-
type: string;
|
12
|
-
name: string;
|
13
|
-
}): void;
|
14
|
-
}
|
@@ -1,15 +0,0 @@
|
|
1
|
-
import { EventEmitter, ElementRef } from '@angular/core';
|
2
|
-
import { FileUploader, FileUploaderOptions } from './file-uploader.class';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export declare class FileSelectDirective {
|
5
|
-
uploader?: FileUploader;
|
6
|
-
onFileSelected: EventEmitter<File[]>;
|
7
|
-
protected element: ElementRef;
|
8
|
-
constructor(element: ElementRef);
|
9
|
-
getOptions(): FileUploaderOptions | undefined;
|
10
|
-
getFilters(): string;
|
11
|
-
isEmptyAfterSelection(): boolean;
|
12
|
-
onChange(): void;
|
13
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<FileSelectDirective, never>;
|
14
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<FileSelectDirective, "[ng2FileSelect]", never, { "uploader": { "alias": "uploader"; "required": false; }; }, { "onFileSelected": "onFileSelected"; }, never, never, false, never>;
|
15
|
-
}
|
@@ -1,10 +0,0 @@
|
|
1
|
-
import { FileLikeObject } from '../index';
|
2
|
-
export declare class FileType {
|
3
|
-
static mime_doc: string[];
|
4
|
-
static mime_xsl: string[];
|
5
|
-
static mime_ppt: string[];
|
6
|
-
static mime_psd: string[];
|
7
|
-
static mime_compress: string[];
|
8
|
-
static getMimeClass(file: FileLikeObject): string;
|
9
|
-
static fileTypeDetection(inputFilename: string): string;
|
10
|
-
}
|
@@ -1,9 +0,0 @@
|
|
1
|
-
import * as i0 from "@angular/core";
|
2
|
-
import * as i1 from "./file-drop.directive";
|
3
|
-
import * as i2 from "./file-select.directive";
|
4
|
-
import * as i3 from "@angular/common";
|
5
|
-
export declare class FileUploadModule {
|
6
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<FileUploadModule, never>;
|
7
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<FileUploadModule, [typeof i1.FileDropDirective, typeof i2.FileSelectDirective], [typeof i3.CommonModule], [typeof i1.FileDropDirective, typeof i2.FileSelectDirective]>;
|
8
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<FileUploadModule>;
|
9
|
-
}
|
@@ -1,98 +0,0 @@
|
|
1
|
-
import { EventEmitter } from '@angular/core';
|
2
|
-
import { FileLikeObject } from './file-like-object.class';
|
3
|
-
import { FileItem } from './file-item.class';
|
4
|
-
export interface Headers {
|
5
|
-
name: string;
|
6
|
-
value: string;
|
7
|
-
}
|
8
|
-
export interface ParsedResponseHeaders {
|
9
|
-
[headerFieldName: string]: string;
|
10
|
-
}
|
11
|
-
export interface FilterFunction {
|
12
|
-
name: string;
|
13
|
-
fn(item: FileLikeObject, options?: FileUploaderOptions): boolean;
|
14
|
-
}
|
15
|
-
export interface FileUploaderOptions {
|
16
|
-
allowedMimeType?: string[];
|
17
|
-
allowedFileType?: string[];
|
18
|
-
autoUpload?: boolean;
|
19
|
-
isHTML5?: boolean;
|
20
|
-
filters?: FilterFunction[];
|
21
|
-
headers?: Headers[];
|
22
|
-
method?: string;
|
23
|
-
authToken?: string;
|
24
|
-
maxFileSize?: number;
|
25
|
-
queueLimit?: number;
|
26
|
-
removeAfterUpload?: boolean;
|
27
|
-
url: string;
|
28
|
-
disableMultipart?: boolean;
|
29
|
-
itemAlias?: string;
|
30
|
-
authTokenHeader?: string;
|
31
|
-
additionalParameter?: {
|
32
|
-
[key: string]: any;
|
33
|
-
};
|
34
|
-
parametersBeforeFiles?: boolean;
|
35
|
-
formatDataFunction?: Function;
|
36
|
-
formatDataFunctionIsAsync?: boolean;
|
37
|
-
}
|
38
|
-
export declare class FileUploader {
|
39
|
-
authToken?: string;
|
40
|
-
isUploading: boolean;
|
41
|
-
queue: FileItem[];
|
42
|
-
progress: number;
|
43
|
-
_nextIndex: number;
|
44
|
-
autoUpload: any;
|
45
|
-
authTokenHeader?: string;
|
46
|
-
response: EventEmitter<any>;
|
47
|
-
options: FileUploaderOptions;
|
48
|
-
protected _failFilterIndex?: number;
|
49
|
-
constructor(options: FileUploaderOptions);
|
50
|
-
setOptions(options: FileUploaderOptions): void;
|
51
|
-
addToQueue(files: File[], _options?: FileUploaderOptions, filters?: [] | string): void;
|
52
|
-
removeFromQueue(value: FileItem): void;
|
53
|
-
clearQueue(): void;
|
54
|
-
uploadItem(value: FileItem): void;
|
55
|
-
cancelItem(value: FileItem): void;
|
56
|
-
uploadAll(): void;
|
57
|
-
cancelAll(): void;
|
58
|
-
isFile(value: any): boolean;
|
59
|
-
isFileLikeObject(value: any): boolean;
|
60
|
-
getIndexOfItem(value: any): number;
|
61
|
-
getNotUploadedItems(): any[];
|
62
|
-
getReadyItems(): any[];
|
63
|
-
onAfterAddingAll(fileItems: any): any;
|
64
|
-
onBuildItemForm(fileItem: FileItem, form: any): any;
|
65
|
-
onAfterAddingFile(fileItem: FileItem): any;
|
66
|
-
onWhenAddingFileFailed(item: FileLikeObject, filter: any, options: any): any;
|
67
|
-
onBeforeUploadItem(fileItem: FileItem): any;
|
68
|
-
onProgressItem(fileItem: FileItem, progress: any): any;
|
69
|
-
onProgressAll(progress: any): any;
|
70
|
-
onSuccessItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any;
|
71
|
-
onErrorItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any;
|
72
|
-
onCancelItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any;
|
73
|
-
onCompleteItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any;
|
74
|
-
onCompleteAll(): any;
|
75
|
-
_mimeTypeFilter(item: FileLikeObject): boolean;
|
76
|
-
_fileSizeFilter(item: FileLikeObject): boolean;
|
77
|
-
_fileTypeFilter(item: FileLikeObject): boolean;
|
78
|
-
_onErrorItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void;
|
79
|
-
_onCompleteItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void;
|
80
|
-
protected _headersGetter(parsedHeaders: ParsedResponseHeaders): any;
|
81
|
-
protected _xhrTransport(item: FileItem): any;
|
82
|
-
protected _getTotalProgress(value?: number): number;
|
83
|
-
protected _getFilters(filters?: FilterFunction[] | string): FilterFunction[] | [];
|
84
|
-
protected _render(): any;
|
85
|
-
protected _queueLimitFilter(): boolean;
|
86
|
-
protected _isValidFile(file: FileLikeObject, filters: FilterFunction[], options: FileUploaderOptions): boolean;
|
87
|
-
protected _isSuccessCode(status: number): boolean;
|
88
|
-
protected _transformResponse(response: string): string;
|
89
|
-
protected _parseHeaders(headers: string): ParsedResponseHeaders;
|
90
|
-
protected _onWhenAddingFileFailed(item: FileLikeObject, filter: any, options: any): void;
|
91
|
-
protected _onAfterAddingFile(item: FileItem): void;
|
92
|
-
protected _onAfterAddingAll(items: any): void;
|
93
|
-
protected _onBeforeUploadItem(item: FileItem): void;
|
94
|
-
protected _onBuildItemForm(item: FileItem, form: any): void;
|
95
|
-
protected _onProgressItem(item: FileItem, progress: any): void;
|
96
|
-
protected _onSuccessItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void;
|
97
|
-
protected _onCancelItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void;
|
98
|
-
}
|