ng2-file-upload 2.0.0-3 → 4.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/esm2020/file-upload/file-drop.directive.mjs +92 -0
- package/esm2020/file-upload/file-item.class.mjs +123 -0
- package/esm2020/file-upload/file-like-object.class.mjs +21 -0
- package/esm2020/file-upload/file-select.directive.mjs +43 -0
- package/esm2020/file-upload/file-type.class.mjs +171 -0
- package/esm2020/file-upload/file-upload.module.mjs +21 -0
- package/esm2020/file-upload/file-uploader.class.mjs +404 -0
- package/esm2020/index.mjs +8 -0
- package/esm2020/ng2-file-upload.mjs +5 -0
- package/fesm2015/{ng2-file-upload.js → ng2-file-upload.mjs} +120 -106
- package/fesm2015/ng2-file-upload.mjs.map +1 -0
- package/fesm2020/ng2-file-upload.mjs +867 -0
- package/fesm2020/ng2-file-upload.mjs.map +1 -0
- package/file-upload/file-drop.directive.d.ts +3 -0
- package/file-upload/file-select.directive.d.ts +3 -0
- package/file-upload/file-upload.module.d.ts +9 -0
- package/package.json +23 -11
- package/bundles/ng2-file-upload.umd.js +0 -1233
- package/bundles/ng2-file-upload.umd.js.map +0 -1
- package/bundles/ng2-file-upload.umd.min.js +0 -2
- package/bundles/ng2-file-upload.umd.min.js.map +0 -1
- package/esm2015/file-upload/file-drop.directive.js +0 -86
- package/esm2015/file-upload/file-drop.directive.js.map +0 -1
- package/esm2015/file-upload/file-drop.directive.metadata.json +0 -1
- package/esm2015/file-upload/file-item.class.js +0 -123
- package/esm2015/file-upload/file-item.class.js.map +0 -1
- package/esm2015/file-upload/file-item.class.metadata.json +0 -1
- package/esm2015/file-upload/file-like-object.class.js +0 -21
- package/esm2015/file-upload/file-like-object.class.js.map +0 -1
- package/esm2015/file-upload/file-like-object.class.metadata.json +0 -1
- package/esm2015/file-upload/file-select.directive.js +0 -42
- package/esm2015/file-upload/file-select.directive.js.map +0 -1
- package/esm2015/file-upload/file-select.directive.metadata.json +0 -1
- package/esm2015/file-upload/file-type.class.js +0 -172
- package/esm2015/file-upload/file-type.class.js.map +0 -1
- package/esm2015/file-upload/file-type.class.metadata.json +0 -1
- package/esm2015/file-upload/file-upload.module.js +0 -14
- package/esm2015/file-upload/file-upload.module.js.map +0 -1
- package/esm2015/file-upload/file-upload.module.metadata.json +0 -1
- package/esm2015/file-upload/file-uploader.class.js +0 -408
- package/esm2015/file-upload/file-uploader.class.js.map +0 -1
- package/esm2015/file-upload/file-uploader.class.metadata.json +0 -1
- package/esm2015/index.js +0 -8
- package/esm2015/index.js.map +0 -1
- package/esm2015/index.metadata.json +0 -1
- package/esm2015/ng2-file-upload.js +0 -5
- package/esm2015/ng2-file-upload.js.map +0 -1
- package/esm2015/ng2-file-upload.metadata.json +0 -1
- package/fesm2015/ng2-file-upload.js.map +0 -1
- package/ng2-file-upload.d.ts +0 -4
- package/ng2-file-upload.metadata.json +0 -1
@@ -1,408 +0,0 @@
|
|
1
|
-
import { EventEmitter } from '@angular/core';
|
2
|
-
import { FileLikeObject } from './file-like-object.class';
|
3
|
-
import { FileItem } from './file-item.class';
|
4
|
-
import { FileType } from './file-type.class';
|
5
|
-
function isFile(value) {
|
6
|
-
return (File && value instanceof File);
|
7
|
-
}
|
8
|
-
export class FileUploader {
|
9
|
-
constructor(options) {
|
10
|
-
this.isUploading = false;
|
11
|
-
this.queue = [];
|
12
|
-
this.progress = 0;
|
13
|
-
this._nextIndex = 0;
|
14
|
-
this.options = {
|
15
|
-
autoUpload: false,
|
16
|
-
isHTML5: true,
|
17
|
-
filters: [],
|
18
|
-
removeAfterUpload: false,
|
19
|
-
disableMultipart: false,
|
20
|
-
formatDataFunction: (item) => item._file,
|
21
|
-
formatDataFunctionIsAsync: false,
|
22
|
-
url: ''
|
23
|
-
};
|
24
|
-
this.setOptions(options);
|
25
|
-
this.response = new EventEmitter();
|
26
|
-
}
|
27
|
-
setOptions(options) {
|
28
|
-
var _a, _b, _c, _d;
|
29
|
-
this.options = Object.assign(this.options, options);
|
30
|
-
this.authToken = this.options.authToken;
|
31
|
-
this.authTokenHeader = this.options.authTokenHeader || 'Authorization';
|
32
|
-
this.autoUpload = this.options.autoUpload;
|
33
|
-
(_a = this.options.filters) === null || _a === void 0 ? void 0 : _a.unshift({ name: 'queueLimit', fn: this._queueLimitFilter });
|
34
|
-
if (this.options.maxFileSize) {
|
35
|
-
(_b = this.options.filters) === null || _b === void 0 ? void 0 : _b.unshift({ name: 'fileSize', fn: this._fileSizeFilter });
|
36
|
-
}
|
37
|
-
if (this.options.allowedFileType) {
|
38
|
-
(_c = this.options.filters) === null || _c === void 0 ? void 0 : _c.unshift({ name: 'fileType', fn: this._fileTypeFilter });
|
39
|
-
}
|
40
|
-
if (this.options.allowedMimeType) {
|
41
|
-
(_d = this.options.filters) === null || _d === void 0 ? void 0 : _d.unshift({ name: 'mimeType', fn: this._mimeTypeFilter });
|
42
|
-
}
|
43
|
-
for (let i = 0; i < this.queue.length; i++) {
|
44
|
-
this.queue[i].url = this.options.url;
|
45
|
-
}
|
46
|
-
}
|
47
|
-
addToQueue(files, _options, filters) {
|
48
|
-
let options = _options;
|
49
|
-
const list = [];
|
50
|
-
for (const file of files) {
|
51
|
-
list.push(file);
|
52
|
-
}
|
53
|
-
const arrayOfFilters = this._getFilters(filters);
|
54
|
-
const count = this.queue.length;
|
55
|
-
const addedFileItems = [];
|
56
|
-
list.map((some) => {
|
57
|
-
if (!options) {
|
58
|
-
options = this.options;
|
59
|
-
}
|
60
|
-
const temp = new FileLikeObject(some);
|
61
|
-
if (this._isValidFile(temp, arrayOfFilters, options)) {
|
62
|
-
const fileItem = new FileItem(this, some, options);
|
63
|
-
addedFileItems.push(fileItem);
|
64
|
-
this.queue.push(fileItem);
|
65
|
-
this._onAfterAddingFile(fileItem);
|
66
|
-
}
|
67
|
-
else {
|
68
|
-
if (this._failFilterIndex) {
|
69
|
-
const filter = arrayOfFilters[this._failFilterIndex];
|
70
|
-
this._onWhenAddingFileFailed(temp, filter, options);
|
71
|
-
}
|
72
|
-
}
|
73
|
-
});
|
74
|
-
if (this.queue.length !== count) {
|
75
|
-
this._onAfterAddingAll(addedFileItems);
|
76
|
-
this.progress = this._getTotalProgress();
|
77
|
-
}
|
78
|
-
this._render();
|
79
|
-
if (this.options.autoUpload) {
|
80
|
-
this.uploadAll();
|
81
|
-
}
|
82
|
-
}
|
83
|
-
removeFromQueue(value) {
|
84
|
-
const index = this.getIndexOfItem(value);
|
85
|
-
const item = this.queue[index];
|
86
|
-
if (item.isUploading) {
|
87
|
-
item.cancel();
|
88
|
-
}
|
89
|
-
this.queue.splice(index, 1);
|
90
|
-
this.progress = this._getTotalProgress();
|
91
|
-
}
|
92
|
-
clearQueue() {
|
93
|
-
while (this.queue.length) {
|
94
|
-
this.queue[0].remove();
|
95
|
-
}
|
96
|
-
this.progress = 0;
|
97
|
-
}
|
98
|
-
uploadItem(value) {
|
99
|
-
const index = this.getIndexOfItem(value);
|
100
|
-
const item = this.queue[index];
|
101
|
-
const transport = this.options.isHTML5 ? '_xhrTransport' : '_iframeTransport';
|
102
|
-
item._prepareToUploading();
|
103
|
-
if (this.isUploading) {
|
104
|
-
return;
|
105
|
-
}
|
106
|
-
this.isUploading = true;
|
107
|
-
this[transport](item);
|
108
|
-
}
|
109
|
-
cancelItem(value) {
|
110
|
-
const index = this.getIndexOfItem(value);
|
111
|
-
const item = this.queue[index];
|
112
|
-
const prop = this.options.isHTML5 ? item._xhr : item._form;
|
113
|
-
if (item && item.isUploading) {
|
114
|
-
prop.abort();
|
115
|
-
}
|
116
|
-
}
|
117
|
-
uploadAll() {
|
118
|
-
const items = this.getNotUploadedItems().filter((item) => !item.isUploading);
|
119
|
-
if (!items.length) {
|
120
|
-
return;
|
121
|
-
}
|
122
|
-
items.map((item) => item._prepareToUploading());
|
123
|
-
items[0].upload();
|
124
|
-
}
|
125
|
-
cancelAll() {
|
126
|
-
const items = this.getNotUploadedItems();
|
127
|
-
items.map((item) => item.cancel());
|
128
|
-
}
|
129
|
-
isFile(value) {
|
130
|
-
return isFile(value);
|
131
|
-
}
|
132
|
-
isFileLikeObject(value) {
|
133
|
-
return value instanceof FileLikeObject;
|
134
|
-
}
|
135
|
-
getIndexOfItem(value) {
|
136
|
-
return typeof value === 'number' ? value : this.queue.indexOf(value);
|
137
|
-
}
|
138
|
-
getNotUploadedItems() {
|
139
|
-
return this.queue.filter((item) => !item.isUploaded);
|
140
|
-
}
|
141
|
-
getReadyItems() {
|
142
|
-
return this.queue
|
143
|
-
.filter((item) => (item.isReady && !item.isUploading))
|
144
|
-
.sort((item1, item2) => item1.index - item2.index);
|
145
|
-
}
|
146
|
-
onAfterAddingAll(fileItems) {
|
147
|
-
return { fileItems };
|
148
|
-
}
|
149
|
-
onBuildItemForm(fileItem, form) {
|
150
|
-
return { fileItem, form };
|
151
|
-
}
|
152
|
-
onAfterAddingFile(fileItem) {
|
153
|
-
return { fileItem };
|
154
|
-
}
|
155
|
-
onWhenAddingFileFailed(item, filter, options) {
|
156
|
-
return { item, filter, options };
|
157
|
-
}
|
158
|
-
onBeforeUploadItem(fileItem) {
|
159
|
-
return { fileItem };
|
160
|
-
}
|
161
|
-
onProgressItem(fileItem, progress) {
|
162
|
-
return { fileItem, progress };
|
163
|
-
}
|
164
|
-
onProgressAll(progress) {
|
165
|
-
return { progress };
|
166
|
-
}
|
167
|
-
onSuccessItem(item, response, status, headers) {
|
168
|
-
return { item, response, status, headers };
|
169
|
-
}
|
170
|
-
onErrorItem(item, response, status, headers) {
|
171
|
-
return { item, response, status, headers };
|
172
|
-
}
|
173
|
-
onCancelItem(item, response, status, headers) {
|
174
|
-
return { item, response, status, headers };
|
175
|
-
}
|
176
|
-
onCompleteItem(item, response, status, headers) {
|
177
|
-
return { item, response, status, headers };
|
178
|
-
}
|
179
|
-
onCompleteAll() {
|
180
|
-
return void 0;
|
181
|
-
}
|
182
|
-
_mimeTypeFilter(item) {
|
183
|
-
var _a;
|
184
|
-
return !((item === null || item === void 0 ? void 0 : item.type) && this.options.allowedMimeType && ((_a = this.options.allowedMimeType) === null || _a === void 0 ? void 0 : _a.indexOf(item.type)) === -1);
|
185
|
-
}
|
186
|
-
_fileSizeFilter(item) {
|
187
|
-
return !(this.options.maxFileSize && item.size > this.options.maxFileSize);
|
188
|
-
}
|
189
|
-
_fileTypeFilter(item) {
|
190
|
-
return !(this.options.allowedFileType &&
|
191
|
-
this.options.allowedFileType.indexOf(FileType.getMimeClass(item)) === -1);
|
192
|
-
}
|
193
|
-
_onErrorItem(item, response, status, headers) {
|
194
|
-
item._onError(response, status, headers);
|
195
|
-
this.onErrorItem(item, response, status, headers);
|
196
|
-
}
|
197
|
-
_onCompleteItem(item, response, status, headers) {
|
198
|
-
item._onComplete(response, status, headers);
|
199
|
-
this.onCompleteItem(item, response, status, headers);
|
200
|
-
const nextItem = this.getReadyItems()[0];
|
201
|
-
this.isUploading = false;
|
202
|
-
if (nextItem) {
|
203
|
-
nextItem.upload();
|
204
|
-
return;
|
205
|
-
}
|
206
|
-
this.onCompleteAll();
|
207
|
-
this.progress = this._getTotalProgress();
|
208
|
-
this._render();
|
209
|
-
}
|
210
|
-
_headersGetter(parsedHeaders) {
|
211
|
-
return (name) => {
|
212
|
-
if (name) {
|
213
|
-
return parsedHeaders[name.toLowerCase()] || undefined;
|
214
|
-
}
|
215
|
-
return parsedHeaders;
|
216
|
-
};
|
217
|
-
}
|
218
|
-
_xhrTransport(item) {
|
219
|
-
// tslint:disable-next-line:no-this-assignment
|
220
|
-
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
221
|
-
const that = this;
|
222
|
-
const xhr = item._xhr = new XMLHttpRequest();
|
223
|
-
let sendable;
|
224
|
-
this._onBeforeUploadItem(item);
|
225
|
-
if (typeof item._file.size !== 'number') {
|
226
|
-
throw new TypeError('The file specified is no longer valid');
|
227
|
-
}
|
228
|
-
if (!this.options.disableMultipart) {
|
229
|
-
sendable = new FormData();
|
230
|
-
this._onBuildItemForm(item, sendable);
|
231
|
-
const appendFile = () => sendable.append(item.alias, item._file, item.file.name);
|
232
|
-
if (!this.options.parametersBeforeFiles) {
|
233
|
-
appendFile();
|
234
|
-
}
|
235
|
-
// For AWS, Additional Parameters must come BEFORE Files
|
236
|
-
if (this.options.additionalParameter !== undefined) {
|
237
|
-
Object.keys(this.options.additionalParameter).forEach((key) => {
|
238
|
-
var _a, _b;
|
239
|
-
let paramVal = (_a = this.options.additionalParameter) === null || _a === void 0 ? void 0 : _a[key];
|
240
|
-
// Allow an additional parameter to include the filename
|
241
|
-
if (typeof paramVal === 'string' && paramVal.indexOf('{{file_name}}') >= 0 && ((_b = item.file) === null || _b === void 0 ? void 0 : _b.name)) {
|
242
|
-
paramVal = paramVal.replace('{{file_name}}', item.file.name);
|
243
|
-
}
|
244
|
-
sendable.append(key, paramVal);
|
245
|
-
});
|
246
|
-
}
|
247
|
-
if (appendFile && this.options.parametersBeforeFiles) {
|
248
|
-
appendFile();
|
249
|
-
}
|
250
|
-
}
|
251
|
-
else {
|
252
|
-
if (this.options.formatDataFunction) {
|
253
|
-
sendable = this.options.formatDataFunction(item);
|
254
|
-
}
|
255
|
-
}
|
256
|
-
xhr.upload.onprogress = (event) => {
|
257
|
-
const progress = Math.round(event.lengthComputable ? event.loaded * 100 / event.total : 0);
|
258
|
-
this._onProgressItem(item, progress);
|
259
|
-
};
|
260
|
-
xhr.onload = () => {
|
261
|
-
const headers = this._parseHeaders(xhr.getAllResponseHeaders());
|
262
|
-
const response = this._transformResponse(xhr.response, headers);
|
263
|
-
const gist = this._isSuccessCode(xhr.status) ? 'Success' : 'Error';
|
264
|
-
const method = `_on${gist}Item`;
|
265
|
-
this[method](item, response, xhr.status, headers);
|
266
|
-
this._onCompleteItem(item, response, xhr.status, headers);
|
267
|
-
};
|
268
|
-
xhr.onerror = () => {
|
269
|
-
const headers = this._parseHeaders(xhr.getAllResponseHeaders());
|
270
|
-
const response = this._transformResponse(xhr.response, headers);
|
271
|
-
this._onErrorItem(item, response, xhr.status, headers);
|
272
|
-
this._onCompleteItem(item, response, xhr.status, headers);
|
273
|
-
};
|
274
|
-
xhr.onabort = () => {
|
275
|
-
const headers = this._parseHeaders(xhr.getAllResponseHeaders());
|
276
|
-
const response = this._transformResponse(xhr.response, headers);
|
277
|
-
this._onCancelItem(item, response, xhr.status, headers);
|
278
|
-
this._onCompleteItem(item, response, xhr.status, headers);
|
279
|
-
};
|
280
|
-
if (item.method && item.url) {
|
281
|
-
xhr.open(item.method, item.url, true);
|
282
|
-
}
|
283
|
-
xhr.withCredentials = item.withCredentials;
|
284
|
-
if (this.options.headers) {
|
285
|
-
for (const header of this.options.headers) {
|
286
|
-
xhr.setRequestHeader(header.name, header.value);
|
287
|
-
}
|
288
|
-
}
|
289
|
-
if (item.headers.length) {
|
290
|
-
for (const header of item.headers) {
|
291
|
-
xhr.setRequestHeader(header.name, header.value);
|
292
|
-
}
|
293
|
-
}
|
294
|
-
if (this.authToken && this.authTokenHeader) {
|
295
|
-
xhr.setRequestHeader(this.authTokenHeader, this.authToken);
|
296
|
-
}
|
297
|
-
xhr.onreadystatechange = function () {
|
298
|
-
if (xhr.readyState == XMLHttpRequest.DONE) {
|
299
|
-
that.response.emit(xhr.responseText);
|
300
|
-
}
|
301
|
-
};
|
302
|
-
if (this.options.formatDataFunctionIsAsync) {
|
303
|
-
sendable.then((result) => xhr.send(JSON.stringify(result)));
|
304
|
-
}
|
305
|
-
else {
|
306
|
-
xhr.send(sendable);
|
307
|
-
}
|
308
|
-
this._render();
|
309
|
-
}
|
310
|
-
_getTotalProgress(value = 0) {
|
311
|
-
if (this.options.removeAfterUpload) {
|
312
|
-
return value;
|
313
|
-
}
|
314
|
-
const notUploaded = this.getNotUploadedItems().length;
|
315
|
-
const uploaded = notUploaded ? this.queue.length - notUploaded : this.queue.length;
|
316
|
-
const ratio = 100 / this.queue.length;
|
317
|
-
const current = value * ratio / 100;
|
318
|
-
return Math.round(uploaded * ratio + current);
|
319
|
-
}
|
320
|
-
_getFilters(filters) {
|
321
|
-
var _a, _b, _c;
|
322
|
-
if (!filters) {
|
323
|
-
return ((_a = this.options) === null || _a === void 0 ? void 0 : _a.filters) || [];
|
324
|
-
}
|
325
|
-
if (Array.isArray(filters)) {
|
326
|
-
return filters;
|
327
|
-
}
|
328
|
-
if (typeof filters === 'string') {
|
329
|
-
const names = filters.match(/[^\s,]+/g);
|
330
|
-
return ((_b = this.options) === null || _b === void 0 ? void 0 : _b.filters) || []
|
331
|
-
.filter((filter) => (names === null || names === void 0 ? void 0 : names.indexOf(filter.name)) !== -1);
|
332
|
-
}
|
333
|
-
return ((_c = this.options) === null || _c === void 0 ? void 0 : _c.filters) || [];
|
334
|
-
}
|
335
|
-
_render() {
|
336
|
-
return void 0;
|
337
|
-
}
|
338
|
-
_queueLimitFilter() {
|
339
|
-
return this.options.queueLimit === undefined || this.queue.length < this.options.queueLimit;
|
340
|
-
}
|
341
|
-
_isValidFile(file, filters, options) {
|
342
|
-
this._failFilterIndex = -1;
|
343
|
-
return !filters.length ? true : filters.every((filter) => {
|
344
|
-
if (this._failFilterIndex) {
|
345
|
-
this._failFilterIndex++;
|
346
|
-
}
|
347
|
-
return filter.fn.call(this, file, options);
|
348
|
-
});
|
349
|
-
}
|
350
|
-
_isSuccessCode(status) {
|
351
|
-
return (status >= 200 && status < 300) || status === 304;
|
352
|
-
}
|
353
|
-
_transformResponse(response, headers) {
|
354
|
-
return response;
|
355
|
-
}
|
356
|
-
_parseHeaders(headers) {
|
357
|
-
const parsed = {};
|
358
|
-
let key;
|
359
|
-
let val;
|
360
|
-
let i;
|
361
|
-
if (!headers) {
|
362
|
-
return parsed;
|
363
|
-
}
|
364
|
-
headers.split('\n').map((line) => {
|
365
|
-
i = line.indexOf(':');
|
366
|
-
key = line.slice(0, i).trim().toLowerCase();
|
367
|
-
val = line.slice(i + 1).trim();
|
368
|
-
if (key) {
|
369
|
-
parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
|
370
|
-
}
|
371
|
-
});
|
372
|
-
return parsed;
|
373
|
-
}
|
374
|
-
_onWhenAddingFileFailed(item, filter, options) {
|
375
|
-
this.onWhenAddingFileFailed(item, filter, options);
|
376
|
-
}
|
377
|
-
_onAfterAddingFile(item) {
|
378
|
-
this.onAfterAddingFile(item);
|
379
|
-
}
|
380
|
-
_onAfterAddingAll(items) {
|
381
|
-
this.onAfterAddingAll(items);
|
382
|
-
}
|
383
|
-
_onBeforeUploadItem(item) {
|
384
|
-
item._onBeforeUpload();
|
385
|
-
this.onBeforeUploadItem(item);
|
386
|
-
}
|
387
|
-
_onBuildItemForm(item, form) {
|
388
|
-
item._onBuildForm(form);
|
389
|
-
this.onBuildItemForm(item, form);
|
390
|
-
}
|
391
|
-
_onProgressItem(item, progress) {
|
392
|
-
const total = this._getTotalProgress(progress);
|
393
|
-
this.progress = total;
|
394
|
-
item._onProgress(progress);
|
395
|
-
this.onProgressItem(item, progress);
|
396
|
-
this.onProgressAll(total);
|
397
|
-
this._render();
|
398
|
-
}
|
399
|
-
_onSuccessItem(item, response, status, headers) {
|
400
|
-
item._onSuccess(response, status, headers);
|
401
|
-
this.onSuccessItem(item, response, status, headers);
|
402
|
-
}
|
403
|
-
_onCancelItem(item, response, status, headers) {
|
404
|
-
item._onCancel(response, status, headers);
|
405
|
-
this.onCancelItem(item, response, status, headers);
|
406
|
-
}
|
407
|
-
}
|
408
|
-
//# sourceMappingURL=file-uploader.class.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"file-uploader.class.js","sourceRoot":"","sources":["../../../../../libs/ng2-file-upload/file-upload/file-uploader.class.ts"],"names":[],"mappings":"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","sourcesContent":["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 (this._failFilterIndex) {\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, headers);\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, headers);\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, headers);\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 (this._failFilterIndex) {\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, headers: ParsedResponseHeaders): 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"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"Headers":{"__symbolic":"interface"},"ParsedResponseHeaders":{"__symbolic":"interface"},"FilterFunction":{"__symbolic":"interface"},"FileUploaderOptions":{"__symbolic":"interface"},"FileUploader":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"}]}],"setOptions":[{"__symbolic":"method"}],"addToQueue":[{"__symbolic":"method"}],"removeFromQueue":[{"__symbolic":"method"}],"clearQueue":[{"__symbolic":"method"}],"uploadItem":[{"__symbolic":"method"}],"cancelItem":[{"__symbolic":"method"}],"uploadAll":[{"__symbolic":"method"}],"cancelAll":[{"__symbolic":"method"}],"isFile":[{"__symbolic":"method"}],"isFileLikeObject":[{"__symbolic":"method"}],"getIndexOfItem":[{"__symbolic":"method"}],"getNotUploadedItems":[{"__symbolic":"method"}],"getReadyItems":[{"__symbolic":"method"}],"onAfterAddingAll":[{"__symbolic":"method"}],"onBuildItemForm":[{"__symbolic":"method"}],"onAfterAddingFile":[{"__symbolic":"method"}],"onWhenAddingFileFailed":[{"__symbolic":"method"}],"onBeforeUploadItem":[{"__symbolic":"method"}],"onProgressItem":[{"__symbolic":"method"}],"onProgressAll":[{"__symbolic":"method"}],"onSuccessItem":[{"__symbolic":"method"}],"onErrorItem":[{"__symbolic":"method"}],"onCancelItem":[{"__symbolic":"method"}],"onCompleteItem":[{"__symbolic":"method"}],"onCompleteAll":[{"__symbolic":"method"}],"_mimeTypeFilter":[{"__symbolic":"method"}],"_fileSizeFilter":[{"__symbolic":"method"}],"_fileTypeFilter":[{"__symbolic":"method"}],"_onErrorItem":[{"__symbolic":"method"}],"_onCompleteItem":[{"__symbolic":"method"}],"_headersGetter":[{"__symbolic":"method"}],"_xhrTransport":[{"__symbolic":"method"}],"_getTotalProgress":[{"__symbolic":"method"}],"_getFilters":[{"__symbolic":"method"}],"_render":[{"__symbolic":"method"}],"_queueLimitFilter":[{"__symbolic":"method"}],"_isValidFile":[{"__symbolic":"method"}],"_isSuccessCode":[{"__symbolic":"method"}],"_transformResponse":[{"__symbolic":"method"}],"_parseHeaders":[{"__symbolic":"method"}],"_onWhenAddingFileFailed":[{"__symbolic":"method"}],"_onAfterAddingFile":[{"__symbolic":"method"}],"_onAfterAddingAll":[{"__symbolic":"method"}],"_onBeforeUploadItem":[{"__symbolic":"method"}],"_onBuildItemForm":[{"__symbolic":"method"}],"_onProgressItem":[{"__symbolic":"method"}],"_onSuccessItem":[{"__symbolic":"method"}],"_onCancelItem":[{"__symbolic":"method"}]}}}}]
|
package/esm2015/index.js
DELETED
@@ -1,8 +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';
|
8
|
-
//# sourceMappingURL=index.js.map
|
package/esm2015/index.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/ng2-file-upload/index.ts"],"names":[],"mappings":"AAAA,cAAe,mCAAmC,CAAC;AACnD,cAAe,mCAAmC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC","sourcesContent":["export * from './file-upload/file-drop.directive';\nexport * from './file-upload/file-uploader.class';\nexport * from './file-upload/file-item.class';\nexport * from './file-upload/file-like-object.class';\nexport * from './file-upload/file-like-object.class';\n\nexport { FileUploadModule } from './file-upload/file-upload.module';\nexport { FileSelectDirective } from './file-upload/file-select.directive';\n"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{},"exports":[{"from":"./file-upload/file-drop.directive"},{"from":"./file-upload/file-uploader.class"},{"from":"./file-upload/file-item.class"},{"from":"./file-upload/file-like-object.class"},{"from":"./file-upload/file-like-object.class"},{"from":"./file-upload/file-upload.module","export":["FileUploadModule"]},{"from":"./file-upload/file-select.directive","export":["FileSelectDirective"]}]}]
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"ng2-file-upload.js","sourceRoot":"","sources":["../../../../libs/ng2-file-upload/ng2-file-upload.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC","sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{},"exports":[{"from":"./index"}]}]
|