ng2-file-upload 8.0.0 → 10.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/package.json +5 -5
- package/types/ng2-file-upload.d.ts +195 -0
- 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
- package/index.d.ts +0 -7
|
@@ -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: "21.0.9", ngImport: i0, type: FileDropDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
786
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.9", 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: "21.0.9", 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: "21.0.9", ngImport: i0, type: FileSelectDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
834
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.9", 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: "21.0.9", 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: "21.0.9", ngImport: i0, type: FileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
850
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.9", ngImport: i0, type: FileUploadModule, declarations: [FileDropDirective, FileSelectDirective], imports: [CommonModule], exports: [FileDropDirective, FileSelectDirective] }); }
|
|
851
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: FileUploadModule, imports: [CommonModule] }); }
|
|
852
852
|
}
|
|
853
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
853
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", 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":["../../../../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\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, inject } 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= inject(ElementRef);\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, inject } 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= inject(ElementRef);\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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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ng2-file-upload",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.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": "^21.x.x",
|
|
9
|
+
"@angular/common": "^21.x.x"
|
|
10
10
|
},
|
|
11
11
|
"sideEffects": false,
|
|
12
12
|
"publishConfig": {
|
|
@@ -29,13 +29,13 @@
|
|
|
29
29
|
"angular2"
|
|
30
30
|
],
|
|
31
31
|
"module": "fesm2022/ng2-file-upload.mjs",
|
|
32
|
-
"typings": "
|
|
32
|
+
"typings": "types/ng2-file-upload.d.ts",
|
|
33
33
|
"exports": {
|
|
34
34
|
"./package.json": {
|
|
35
35
|
"default": "./package.json"
|
|
36
36
|
},
|
|
37
37
|
".": {
|
|
38
|
-
"types": "./
|
|
38
|
+
"types": "./types/ng2-file-upload.d.ts",
|
|
39
39
|
"default": "./fesm2022/ng2-file-upload.mjs"
|
|
40
40
|
}
|
|
41
41
|
},
|
|
@@ -0,0 +1,195 @@
|
|
|
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 };
|
|
@@ -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
|
-
}
|
package/index.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export * from './file-upload/file-drop.directive';
|
|
2
|
-
export * from './file-upload/file-uploader.class';
|
|
3
|
-
export * from './file-upload/file-item.class';
|
|
4
|
-
export * from './file-upload/file-like-object.class';
|
|
5
|
-
export * from './file-upload/file-like-object.class';
|
|
6
|
-
export { FileUploadModule } from './file-upload/file-upload.module';
|
|
7
|
-
export { FileSelectDirective } from './file-upload/file-select.directive';
|