angularjs-file-upload-rails 2.2.0 → 2.4.1
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.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/app/assets/javascripts/angularjs-file-upload.js +1749 -1660
- data/lib/angularjs-file-upload/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 102d43f3e7aa540203d281869b3cc1ecb3849fcb
|
4
|
+
data.tar.gz: f5a75c88a7acb97333186448cc3162147804f6d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 564cbda51a4d9470dd66dec38a3deab6e0da80f0ab7c532107f74b360236f020574c08307acdb79d2556272daf68c87d0a5e0e7557c72d0e02c15848c4f2d09b
|
7
|
+
data.tar.gz: bfaea54de8ed0941fe33b49fc2e281b529a4cb9b57e59d7c8dc56ddda68d5379a67a892a2ff97026cf7d3448969078bd1c9eeda8329f3236b051b255ac4db4b3
|
data/README.md
CHANGED
@@ -9,7 +9,7 @@ A gem that uses [angular-file-upload](https://github.com/nervgh/angular-file-upl
|
|
9
9
|
Add this line to your application's Gemfile:
|
10
10
|
|
11
11
|
```ruby
|
12
|
-
gem 'angularjs-file-upload-rails', '~> 2.
|
12
|
+
gem 'angularjs-file-upload-rails', '~> 2.4.1'
|
13
13
|
```
|
14
14
|
|
15
15
|
And then execute:
|
@@ -42,9 +42,9 @@ read more about the options in [angular-file-upload-wiki](https://github.com/ner
|
|
42
42
|
\* *assuming that you have setup an ```angularjs``` correctly in your rails app
|
43
43
|
|
44
44
|
```ruby
|
45
|
-
gem 'angularjs-file-upload-rails', '~> 2.
|
45
|
+
gem 'angularjs-file-upload-rails', '~> 2.4.1'
|
46
46
|
gem 'carrierwave'
|
47
|
-
gem 'rails', '4.
|
47
|
+
gem 'rails', '4.2.5.1'
|
48
48
|
```
|
49
49
|
|
50
50
|
Setup your carrierwave gem as discribed in the [carrierwave-readme](https://github.com/carrierwaveuploader/carrierwave)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
angular-file-upload v2.
|
2
|
+
angular-file-upload v2.4.0
|
3
3
|
https://github.com/nervgh/angular-file-upload
|
4
4
|
*/
|
5
5
|
|
@@ -59,35 +59,63 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
59
59
|
/* 0 */
|
60
60
|
/***/ function(module, exports, __webpack_require__) {
|
61
61
|
|
62
|
-
|
63
|
-
|
64
|
-
var
|
65
|
-
|
66
|
-
var
|
67
|
-
|
68
|
-
var
|
69
|
-
|
70
|
-
var
|
71
|
-
|
72
|
-
var
|
73
|
-
|
74
|
-
var
|
75
|
-
|
76
|
-
var
|
77
|
-
|
78
|
-
var
|
79
|
-
|
80
|
-
var
|
81
|
-
|
82
|
-
var
|
83
|
-
|
84
|
-
var
|
85
|
-
|
86
|
-
var
|
87
|
-
|
88
|
-
var
|
89
|
-
|
90
|
-
|
62
|
+
'use strict';
|
63
|
+
|
64
|
+
var _config = __webpack_require__(1);
|
65
|
+
|
66
|
+
var _config2 = _interopRequireDefault(_config);
|
67
|
+
|
68
|
+
var _options = __webpack_require__(2);
|
69
|
+
|
70
|
+
var _options2 = _interopRequireDefault(_options);
|
71
|
+
|
72
|
+
var _FileUploader = __webpack_require__(3);
|
73
|
+
|
74
|
+
var _FileUploader2 = _interopRequireDefault(_FileUploader);
|
75
|
+
|
76
|
+
var _FileLikeObject = __webpack_require__(4);
|
77
|
+
|
78
|
+
var _FileLikeObject2 = _interopRequireDefault(_FileLikeObject);
|
79
|
+
|
80
|
+
var _FileItem = __webpack_require__(5);
|
81
|
+
|
82
|
+
var _FileItem2 = _interopRequireDefault(_FileItem);
|
83
|
+
|
84
|
+
var _FileDirective = __webpack_require__(6);
|
85
|
+
|
86
|
+
var _FileDirective2 = _interopRequireDefault(_FileDirective);
|
87
|
+
|
88
|
+
var _FileSelect = __webpack_require__(7);
|
89
|
+
|
90
|
+
var _FileSelect2 = _interopRequireDefault(_FileSelect);
|
91
|
+
|
92
|
+
var _Pipeline = __webpack_require__(8);
|
93
|
+
|
94
|
+
var _Pipeline2 = _interopRequireDefault(_Pipeline);
|
95
|
+
|
96
|
+
var _FileDrop = __webpack_require__(9);
|
97
|
+
|
98
|
+
var _FileDrop2 = _interopRequireDefault(_FileDrop);
|
99
|
+
|
100
|
+
var _FileOver = __webpack_require__(10);
|
101
|
+
|
102
|
+
var _FileOver2 = _interopRequireDefault(_FileOver);
|
103
|
+
|
104
|
+
var _FileSelect3 = __webpack_require__(11);
|
105
|
+
|
106
|
+
var _FileSelect4 = _interopRequireDefault(_FileSelect3);
|
107
|
+
|
108
|
+
var _FileDrop3 = __webpack_require__(12);
|
109
|
+
|
110
|
+
var _FileDrop4 = _interopRequireDefault(_FileDrop3);
|
111
|
+
|
112
|
+
var _FileOver3 = __webpack_require__(13);
|
113
|
+
|
114
|
+
var _FileOver4 = _interopRequireDefault(_FileOver3);
|
115
|
+
|
116
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
117
|
+
|
118
|
+
angular.module(_config2.default.name, []).value('fileUploaderOptions', _options2.default).factory('FileUploader', _FileUploader2.default).factory('FileLikeObject', _FileLikeObject2.default).factory('FileItem', _FileItem2.default).factory('FileDirective', _FileDirective2.default).factory('FileSelect', _FileSelect2.default).factory('FileDrop', _FileDrop2.default).factory('FileOver', _FileOver2.default).factory('Pipeline', _Pipeline2.default).directive('nvFileSelect', _FileSelect4.default).directive('nvFileDrop', _FileDrop4.default).directive('nvFileOver', _FileOver4.default).run(['FileUploader', 'FileLikeObject', 'FileItem', 'FileDirective', 'FileSelect', 'FileDrop', 'FileOver', 'Pipeline', function (FileUploader, FileLikeObject, FileItem, FileDirective, FileSelect, FileDrop, FileOver, Pipeline) {
|
91
119
|
// only for compatibility
|
92
120
|
FileUploader.FileLikeObject = FileLikeObject;
|
93
121
|
FileUploader.FileItem = FileItem;
|
@@ -95,6 +123,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
95
123
|
FileUploader.FileSelect = FileSelect;
|
96
124
|
FileUploader.FileDrop = FileDrop;
|
97
125
|
FileUploader.FileOver = FileOver;
|
126
|
+
FileUploader.Pipeline = Pipeline;
|
98
127
|
}]);
|
99
128
|
|
100
129
|
/***/ },
|
@@ -109,51 +138,65 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
109
138
|
/* 2 */
|
110
139
|
/***/ function(module, exports) {
|
111
140
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
141
|
+
'use strict';
|
142
|
+
|
143
|
+
Object.defineProperty(exports, "__esModule", {
|
144
|
+
value: true
|
145
|
+
});
|
146
|
+
exports.default = {
|
147
|
+
url: '/',
|
148
|
+
alias: 'file',
|
117
149
|
headers: {},
|
118
150
|
queue: [],
|
119
151
|
progress: 0,
|
120
152
|
autoUpload: false,
|
121
153
|
removeAfterUpload: false,
|
122
|
-
method:
|
154
|
+
method: 'POST',
|
123
155
|
filters: [],
|
124
156
|
formData: [],
|
125
157
|
queueLimit: Number.MAX_VALUE,
|
126
|
-
withCredentials: false
|
158
|
+
withCredentials: false,
|
159
|
+
disableMultipart: false
|
127
160
|
};
|
128
161
|
|
129
162
|
/***/ },
|
130
163
|
/* 3 */
|
131
164
|
/***/ function(module, exports, __webpack_require__) {
|
132
165
|
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
var
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
var
|
144
|
-
|
145
|
-
var
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
166
|
+
'use strict';
|
167
|
+
|
168
|
+
Object.defineProperty(exports, "__esModule", {
|
169
|
+
value: true
|
170
|
+
});
|
171
|
+
|
172
|
+
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
|
173
|
+
|
174
|
+
exports.default = __identity;
|
175
|
+
|
176
|
+
var _config = __webpack_require__(1);
|
177
|
+
|
178
|
+
var _config2 = _interopRequireDefault(_config);
|
179
|
+
|
180
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
181
|
+
|
182
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
183
|
+
|
184
|
+
var _angular = angular;
|
185
|
+
var bind = _angular.bind;
|
186
|
+
var copy = _angular.copy;
|
187
|
+
var extend = _angular.extend;
|
188
|
+
var forEach = _angular.forEach;
|
189
|
+
var isObject = _angular.isObject;
|
190
|
+
var isNumber = _angular.isNumber;
|
191
|
+
var isDefined = _angular.isDefined;
|
192
|
+
var isArray = _angular.isArray;
|
193
|
+
var isUndefined = _angular.isUndefined;
|
194
|
+
var element = _angular.element;
|
195
|
+
function __identity(fileUploaderOptions, $rootScope, $http, $window, $timeout, FileLikeObject, FileItem, Pipeline) {
|
153
196
|
var File = $window.File;
|
154
197
|
var FormData = $window.FormData;
|
155
|
-
|
156
|
-
var FileUploader =
|
198
|
+
|
199
|
+
var FileUploader = function () {
|
157
200
|
/**********************
|
158
201
|
* PUBLIC
|
159
202
|
**********************/
|
@@ -162,856 +205,840 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
162
205
|
* @param {Object} [options]
|
163
206
|
* @constructor
|
164
207
|
*/
|
165
|
-
|
208
|
+
|
166
209
|
function FileUploader(options) {
|
167
210
|
_classCallCheck(this, FileUploader);
|
168
|
-
|
211
|
+
|
169
212
|
var settings = copy(fileUploaderOptions);
|
170
|
-
|
213
|
+
|
171
214
|
extend(this, settings, options, {
|
172
215
|
isUploading: false,
|
173
216
|
_nextIndex: 0,
|
174
|
-
_failFilterIndex: -1,
|
175
217
|
_directives: { select: [], drop: [], over: [] }
|
176
218
|
});
|
177
|
-
|
219
|
+
|
178
220
|
// add default filters
|
179
|
-
this.filters.unshift({ name:
|
180
|
-
this.filters.unshift({ name:
|
221
|
+
this.filters.unshift({ name: 'queueLimit', fn: this._queueLimitFilter });
|
222
|
+
this.filters.unshift({ name: 'folder', fn: this._folderFilter });
|
181
223
|
}
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
* @param {*} value
|
314
|
-
* @returns {Boolean}
|
315
|
-
* @private
|
316
|
-
*/
|
317
|
-
|
318
|
-
value: function isFile(value) {
|
319
|
-
return this.constructor.isFile(value);
|
320
|
-
}
|
321
|
-
},
|
322
|
-
isFileLikeObject: {
|
323
|
-
/**
|
324
|
-
* Returns "true" if value an instance of FileLikeObject
|
325
|
-
* @param {*} value
|
326
|
-
* @returns {Boolean}
|
327
|
-
* @private
|
328
|
-
*/
|
329
|
-
|
330
|
-
value: function isFileLikeObject(value) {
|
331
|
-
return this.constructor.isFileLikeObject(value);
|
332
|
-
}
|
333
|
-
},
|
334
|
-
isArrayLikeObject: {
|
335
|
-
/**
|
336
|
-
* Returns "true" if value is array like object
|
337
|
-
* @param {*} value
|
338
|
-
* @returns {Boolean}
|
339
|
-
*/
|
340
|
-
|
341
|
-
value: function isArrayLikeObject(value) {
|
342
|
-
return this.constructor.isArrayLikeObject(value);
|
343
|
-
}
|
344
|
-
},
|
345
|
-
getIndexOfItem: {
|
346
|
-
/**
|
347
|
-
* Returns a index of item from the queue
|
348
|
-
* @param {Item|Number} value
|
349
|
-
* @returns {Number}
|
350
|
-
*/
|
351
|
-
|
352
|
-
value: function getIndexOfItem(value) {
|
353
|
-
return isNumber(value) ? value : this.queue.indexOf(value);
|
354
|
-
}
|
355
|
-
},
|
356
|
-
getNotUploadedItems: {
|
357
|
-
/**
|
358
|
-
* Returns not uploaded items
|
359
|
-
* @returns {Array}
|
360
|
-
*/
|
361
|
-
|
362
|
-
value: function getNotUploadedItems() {
|
363
|
-
return this.queue.filter(function (item) {
|
364
|
-
return !item.isUploaded;
|
365
|
-
});
|
366
|
-
}
|
367
|
-
},
|
368
|
-
getReadyItems: {
|
369
|
-
/**
|
370
|
-
* Returns items ready for upload
|
371
|
-
* @returns {Array}
|
372
|
-
*/
|
373
|
-
|
374
|
-
value: function getReadyItems() {
|
375
|
-
return this.queue.filter(function (item) {
|
376
|
-
return item.isReady && !item.isUploading;
|
377
|
-
}).sort(function (item1, item2) {
|
378
|
-
return item1.index - item2.index;
|
379
|
-
});
|
380
|
-
}
|
381
|
-
},
|
382
|
-
destroy: {
|
383
|
-
/**
|
384
|
-
* Destroys instance of FileUploader
|
385
|
-
*/
|
386
|
-
|
387
|
-
value: function destroy() {
|
388
|
-
var _this = this;
|
389
|
-
|
390
|
-
forEach(this._directives, function (key) {
|
391
|
-
forEach(_this._directives[key], function (object) {
|
392
|
-
object.destroy();
|
393
|
-
});
|
394
|
-
});
|
395
|
-
}
|
396
|
-
},
|
397
|
-
onAfterAddingAll: {
|
398
|
-
/**
|
399
|
-
* Callback
|
400
|
-
* @param {Array} fileItems
|
401
|
-
*/
|
402
|
-
|
403
|
-
value: function onAfterAddingAll(fileItems) {}
|
404
|
-
},
|
405
|
-
onAfterAddingFile: {
|
406
|
-
/**
|
407
|
-
* Callback
|
408
|
-
* @param {FileItem} fileItem
|
409
|
-
*/
|
410
|
-
|
411
|
-
value: function onAfterAddingFile(fileItem) {}
|
412
|
-
},
|
413
|
-
onWhenAddingFileFailed: {
|
414
|
-
/**
|
415
|
-
* Callback
|
416
|
-
* @param {File|Object} item
|
417
|
-
* @param {Object} filter
|
418
|
-
* @param {Object} options
|
419
|
-
*/
|
420
|
-
|
421
|
-
value: function onWhenAddingFileFailed(item, filter, options) {}
|
422
|
-
},
|
423
|
-
onBeforeUploadItem: {
|
424
|
-
/**
|
425
|
-
* Callback
|
426
|
-
* @param {FileItem} fileItem
|
427
|
-
*/
|
428
|
-
|
429
|
-
value: function onBeforeUploadItem(fileItem) {}
|
430
|
-
},
|
431
|
-
onProgressItem: {
|
432
|
-
/**
|
433
|
-
* Callback
|
434
|
-
* @param {FileItem} fileItem
|
435
|
-
* @param {Number} progress
|
436
|
-
*/
|
437
|
-
|
438
|
-
value: function onProgressItem(fileItem, progress) {}
|
439
|
-
},
|
440
|
-
onProgressAll: {
|
441
|
-
/**
|
442
|
-
* Callback
|
443
|
-
* @param {Number} progress
|
444
|
-
*/
|
445
|
-
|
446
|
-
value: function onProgressAll(progress) {}
|
447
|
-
},
|
448
|
-
onSuccessItem: {
|
449
|
-
/**
|
450
|
-
* Callback
|
451
|
-
* @param {FileItem} item
|
452
|
-
* @param {*} response
|
453
|
-
* @param {Number} status
|
454
|
-
* @param {Object} headers
|
455
|
-
*/
|
456
|
-
|
457
|
-
value: function onSuccessItem(item, response, status, headers) {}
|
458
|
-
},
|
459
|
-
onErrorItem: {
|
460
|
-
/**
|
461
|
-
* Callback
|
462
|
-
* @param {FileItem} item
|
463
|
-
* @param {*} response
|
464
|
-
* @param {Number} status
|
465
|
-
* @param {Object} headers
|
466
|
-
*/
|
467
|
-
|
468
|
-
value: function onErrorItem(item, response, status, headers) {}
|
469
|
-
},
|
470
|
-
onCancelItem: {
|
471
|
-
/**
|
472
|
-
* Callback
|
473
|
-
* @param {FileItem} item
|
474
|
-
* @param {*} response
|
475
|
-
* @param {Number} status
|
476
|
-
* @param {Object} headers
|
477
|
-
*/
|
478
|
-
|
479
|
-
value: function onCancelItem(item, response, status, headers) {}
|
480
|
-
},
|
481
|
-
onCompleteItem: {
|
482
|
-
/**
|
483
|
-
* Callback
|
484
|
-
* @param {FileItem} item
|
485
|
-
* @param {*} response
|
486
|
-
* @param {Number} status
|
487
|
-
* @param {Object} headers
|
488
|
-
*/
|
489
|
-
|
490
|
-
value: function onCompleteItem(item, response, status, headers) {}
|
491
|
-
},
|
492
|
-
onCompleteAll: {
|
493
|
-
/**
|
494
|
-
* Callback
|
495
|
-
*/
|
496
|
-
|
497
|
-
value: function onCompleteAll() {}
|
498
|
-
},
|
499
|
-
_getTotalProgress: {
|
500
|
-
/**********************
|
501
|
-
* PRIVATE
|
502
|
-
**********************/
|
503
|
-
/**
|
504
|
-
* Returns the total progress
|
505
|
-
* @param {Number} [value]
|
506
|
-
* @returns {Number}
|
507
|
-
* @private
|
508
|
-
*/
|
509
|
-
|
510
|
-
value: function _getTotalProgress(value) {
|
511
|
-
if (this.removeAfterUpload) {
|
512
|
-
return value || 0;
|
513
|
-
}var notUploaded = this.getNotUploadedItems().length;
|
514
|
-
var uploaded = notUploaded ? this.queue.length - notUploaded : this.queue.length;
|
515
|
-
var ratio = 100 / this.queue.length;
|
516
|
-
var current = (value || 0) * ratio / 100;
|
517
|
-
|
518
|
-
return Math.round(uploaded * ratio + current);
|
519
|
-
}
|
520
|
-
},
|
521
|
-
_getFilters: {
|
522
|
-
/**
|
523
|
-
* Returns array of filters
|
524
|
-
* @param {Array<Function>|String} filters
|
525
|
-
* @returns {Array<Function>}
|
526
|
-
* @private
|
527
|
-
*/
|
528
|
-
|
529
|
-
value: function _getFilters(filters) {
|
530
|
-
if (!filters) {
|
531
|
-
return this.filters;
|
532
|
-
}if (isArray(filters)) {
|
533
|
-
return filters;
|
534
|
-
}var names = filters.match(/[^\s,]+/g);
|
535
|
-
return this.filters.filter(function (filter) {
|
536
|
-
return names.indexOf(filter.name) !== -1;
|
537
|
-
});
|
538
|
-
}
|
539
|
-
},
|
540
|
-
_render: {
|
541
|
-
/**
|
542
|
-
* Updates html
|
543
|
-
* @private
|
544
|
-
*/
|
545
|
-
|
546
|
-
value: function _render() {
|
547
|
-
if (!$rootScope.$$phase) $rootScope.$apply();
|
548
|
-
}
|
549
|
-
},
|
550
|
-
_folderFilter: {
|
551
|
-
/**
|
552
|
-
* Returns "true" if item is a file (not folder)
|
553
|
-
* @param {File|FileLikeObject} item
|
554
|
-
* @returns {Boolean}
|
555
|
-
* @private
|
556
|
-
*/
|
557
|
-
|
558
|
-
value: function _folderFilter(item) {
|
559
|
-
return !!(item.size || item.type);
|
560
|
-
}
|
561
|
-
},
|
562
|
-
_queueLimitFilter: {
|
563
|
-
/**
|
564
|
-
* Returns "true" if the limit has not been reached
|
565
|
-
* @returns {Boolean}
|
566
|
-
* @private
|
567
|
-
*/
|
568
|
-
|
569
|
-
value: function _queueLimitFilter() {
|
570
|
-
return this.queue.length < this.queueLimit;
|
571
|
-
}
|
572
|
-
},
|
573
|
-
_isValidFile: {
|
574
|
-
/**
|
575
|
-
* Returns "true" if file pass all filters
|
576
|
-
* @param {File|Object} file
|
577
|
-
* @param {Array<Function>} filters
|
578
|
-
* @param {Object} options
|
579
|
-
* @returns {Boolean}
|
580
|
-
* @private
|
581
|
-
*/
|
582
|
-
|
583
|
-
value: function _isValidFile(file, filters, options) {
|
584
|
-
var _this = this;
|
585
|
-
|
586
|
-
this._failFilterIndex = -1;
|
587
|
-
return !filters.length ? true : filters.every(function (filter) {
|
588
|
-
_this._failFilterIndex++;
|
589
|
-
return filter.fn.call(_this, file, options);
|
590
|
-
});
|
591
|
-
}
|
592
|
-
},
|
593
|
-
_isSuccessCode: {
|
594
|
-
/**
|
595
|
-
* Checks whether upload successful
|
596
|
-
* @param {Number} status
|
597
|
-
* @returns {Boolean}
|
598
|
-
* @private
|
599
|
-
*/
|
600
|
-
|
601
|
-
value: function _isSuccessCode(status) {
|
602
|
-
return status >= 200 && status < 300 || status === 304;
|
603
|
-
}
|
604
|
-
},
|
605
|
-
_transformResponse: {
|
606
|
-
/**
|
607
|
-
* Transforms the server response
|
608
|
-
* @param {*} response
|
609
|
-
* @param {Object} headers
|
610
|
-
* @returns {*}
|
611
|
-
* @private
|
612
|
-
*/
|
613
|
-
|
614
|
-
value: function _transformResponse(response, headers) {
|
615
|
-
var headersGetter = this._headersGetter(headers);
|
616
|
-
forEach($http.defaults.transformResponse, function (transformFn) {
|
617
|
-
response = transformFn(response, headersGetter);
|
618
|
-
});
|
619
|
-
return response;
|
620
|
-
}
|
621
|
-
},
|
622
|
-
_parseHeaders: {
|
623
|
-
/**
|
624
|
-
* Parsed response headers
|
625
|
-
* @param headers
|
626
|
-
* @returns {Object}
|
627
|
-
* @see https://github.com/angular/angular.js/blob/master/src/ng/http.js
|
628
|
-
* @private
|
629
|
-
*/
|
630
|
-
|
631
|
-
value: function _parseHeaders(headers) {
|
632
|
-
var parsed = {},
|
633
|
-
key,
|
634
|
-
val,
|
635
|
-
i;
|
636
|
-
|
637
|
-
if (!headers) {
|
638
|
-
return parsed;
|
639
|
-
}forEach(headers.split("\n"), function (line) {
|
640
|
-
i = line.indexOf(":");
|
641
|
-
key = line.slice(0, i).trim().toLowerCase();
|
642
|
-
val = line.slice(i + 1).trim();
|
643
|
-
|
644
|
-
if (key) {
|
645
|
-
parsed[key] = parsed[key] ? parsed[key] + ", " + val : val;
|
646
|
-
}
|
647
|
-
});
|
648
|
-
|
649
|
-
return parsed;
|
650
|
-
}
|
651
|
-
},
|
652
|
-
_headersGetter: {
|
653
|
-
/**
|
654
|
-
* Returns function that returns headers
|
655
|
-
* @param {Object} parsedHeaders
|
656
|
-
* @returns {Function}
|
657
|
-
* @private
|
658
|
-
*/
|
659
|
-
|
660
|
-
value: function _headersGetter(parsedHeaders) {
|
661
|
-
return function (name) {
|
662
|
-
if (name) {
|
663
|
-
return parsedHeaders[name.toLowerCase()] || null;
|
664
|
-
}
|
665
|
-
return parsedHeaders;
|
666
|
-
};
|
667
|
-
}
|
668
|
-
},
|
669
|
-
_xhrTransport: {
|
670
|
-
/**
|
671
|
-
* The XMLHttpRequest transport
|
672
|
-
* @param {FileItem} item
|
673
|
-
* @private
|
674
|
-
*/
|
675
|
-
|
676
|
-
value: function _xhrTransport(item) {
|
677
|
-
var _this = this;
|
678
|
-
|
679
|
-
var xhr = item._xhr = new XMLHttpRequest();
|
680
|
-
var form = new FormData();
|
681
|
-
|
682
|
-
this._onBeforeUploadItem(item);
|
683
|
-
|
684
|
-
forEach(item.formData, function (obj) {
|
685
|
-
forEach(obj, function (value, key) {
|
686
|
-
form.append(key, value);
|
687
|
-
});
|
688
|
-
});
|
689
|
-
|
690
|
-
if (typeof item._file.size != "number") {
|
691
|
-
throw new TypeError("The file specified is no longer valid");
|
692
|
-
}
|
693
|
-
|
694
|
-
form.append(item.alias, item._file, item.file.name);
|
695
|
-
|
696
|
-
xhr.upload.onprogress = function (event) {
|
697
|
-
var progress = Math.round(event.lengthComputable ? event.loaded * 100 / event.total : 0);
|
698
|
-
_this._onProgressItem(item, progress);
|
699
|
-
};
|
700
|
-
|
701
|
-
xhr.onload = function () {
|
702
|
-
var headers = _this._parseHeaders(xhr.getAllResponseHeaders());
|
703
|
-
var response = _this._transformResponse(xhr.response, headers);
|
704
|
-
var gist = _this._isSuccessCode(xhr.status) ? "Success" : "Error";
|
705
|
-
var method = "_on" + gist + "Item";
|
706
|
-
_this[method](item, response, xhr.status, headers);
|
707
|
-
_this._onCompleteItem(item, response, xhr.status, headers);
|
708
|
-
};
|
709
|
-
|
710
|
-
xhr.onerror = function () {
|
711
|
-
var headers = _this._parseHeaders(xhr.getAllResponseHeaders());
|
712
|
-
var response = _this._transformResponse(xhr.response, headers);
|
713
|
-
_this._onErrorItem(item, response, xhr.status, headers);
|
714
|
-
_this._onCompleteItem(item, response, xhr.status, headers);
|
715
|
-
};
|
716
|
-
|
717
|
-
xhr.onabort = function () {
|
718
|
-
var headers = _this._parseHeaders(xhr.getAllResponseHeaders());
|
719
|
-
var response = _this._transformResponse(xhr.response, headers);
|
720
|
-
_this._onCancelItem(item, response, xhr.status, headers);
|
721
|
-
_this._onCompleteItem(item, response, xhr.status, headers);
|
224
|
+
/**
|
225
|
+
* Adds items to the queue
|
226
|
+
* @param {File|HTMLInputElement|Object|FileList|Array<Object>} files
|
227
|
+
* @param {Object} [options]
|
228
|
+
* @param {Array<Function>|String} filters
|
229
|
+
*/
|
230
|
+
|
231
|
+
|
232
|
+
FileUploader.prototype.addToQueue = function addToQueue(files, options, filters) {
|
233
|
+
var _this = this;
|
234
|
+
|
235
|
+
var incomingQueue = this.isArrayLikeObject(files) ? Array.prototype.slice.call(files) : [files];
|
236
|
+
var arrayOfFilters = this._getFilters(filters);
|
237
|
+
var count = this.queue.length;
|
238
|
+
var addedFileItems = [];
|
239
|
+
|
240
|
+
var next = function next() {
|
241
|
+
var something = incomingQueue.shift();
|
242
|
+
|
243
|
+
if (isUndefined(something)) {
|
244
|
+
return done();
|
245
|
+
}
|
246
|
+
|
247
|
+
var fileLikeObject = _this.isFile(something) ? something : new FileLikeObject(something);
|
248
|
+
var pipes = _this._convertFiltersToPipes(arrayOfFilters);
|
249
|
+
var pipeline = new Pipeline(pipes);
|
250
|
+
var onThrown = function onThrown(err) {
|
251
|
+
var originalFilter = err.pipe.originalFilter;
|
252
|
+
|
253
|
+
var _err$args = _slicedToArray(err.args, 2);
|
254
|
+
|
255
|
+
var fileLikeObject = _err$args[0];
|
256
|
+
var options = _err$args[1];
|
257
|
+
|
258
|
+
_this._onWhenAddingFileFailed(fileLikeObject, originalFilter, options);
|
259
|
+
next();
|
260
|
+
};
|
261
|
+
var onSuccessful = function onSuccessful(fileLikeObject, options) {
|
262
|
+
var fileItem = new FileItem(_this, fileLikeObject, options);
|
263
|
+
addedFileItems.push(fileItem);
|
264
|
+
_this.queue.push(fileItem);
|
265
|
+
_this._onAfterAddingFile(fileItem);
|
266
|
+
next();
|
267
|
+
};
|
268
|
+
pipeline.onThrown = onThrown;
|
269
|
+
pipeline.onSuccessful = onSuccessful;
|
270
|
+
pipeline.exec(fileLikeObject, options);
|
271
|
+
};
|
272
|
+
|
273
|
+
var done = function done() {
|
274
|
+
if (_this.queue.length !== count) {
|
275
|
+
_this._onAfterAddingAll(addedFileItems);
|
276
|
+
_this.progress = _this._getTotalProgress();
|
277
|
+
}
|
278
|
+
|
279
|
+
_this._render();
|
280
|
+
if (_this.autoUpload) _this.uploadAll();
|
281
|
+
};
|
282
|
+
|
283
|
+
next();
|
284
|
+
};
|
285
|
+
/**
|
286
|
+
* Remove items from the queue. Remove last: index = -1
|
287
|
+
* @param {FileItem|Number} value
|
288
|
+
*/
|
289
|
+
|
290
|
+
|
291
|
+
FileUploader.prototype.removeFromQueue = function removeFromQueue(value) {
|
292
|
+
var index = this.getIndexOfItem(value);
|
293
|
+
var item = this.queue[index];
|
294
|
+
if (item.isUploading) item.cancel();
|
295
|
+
this.queue.splice(index, 1);
|
296
|
+
item._destroy();
|
297
|
+
this.progress = this._getTotalProgress();
|
298
|
+
};
|
299
|
+
/**
|
300
|
+
* Clears the queue
|
301
|
+
*/
|
302
|
+
|
303
|
+
|
304
|
+
FileUploader.prototype.clearQueue = function clearQueue() {
|
305
|
+
while (this.queue.length) {
|
306
|
+
this.queue[0].remove();
|
307
|
+
}
|
308
|
+
this.progress = 0;
|
309
|
+
};
|
310
|
+
/**
|
311
|
+
* Uploads a item from the queue
|
312
|
+
* @param {FileItem|Number} value
|
313
|
+
*/
|
314
|
+
|
315
|
+
|
316
|
+
FileUploader.prototype.uploadItem = function uploadItem(value) {
|
317
|
+
var index = this.getIndexOfItem(value);
|
318
|
+
var item = this.queue[index];
|
319
|
+
var transport = this.isHTML5 ? '_xhrTransport' : '_iframeTransport';
|
320
|
+
|
321
|
+
item._prepareToUploading();
|
322
|
+
if (this.isUploading) return;
|
323
|
+
|
324
|
+
this._onBeforeUploadItem(item);
|
325
|
+
if (item.isCancel) return;
|
326
|
+
|
327
|
+
item.isUploading = true;
|
328
|
+
this.isUploading = true;
|
329
|
+
this[transport](item);
|
330
|
+
this._render();
|
331
|
+
};
|
332
|
+
/**
|
333
|
+
* Cancels uploading of item from the queue
|
334
|
+
* @param {FileItem|Number} value
|
335
|
+
*/
|
336
|
+
|
337
|
+
|
338
|
+
FileUploader.prototype.cancelItem = function cancelItem(value) {
|
339
|
+
var _this2 = this;
|
340
|
+
|
341
|
+
var index = this.getIndexOfItem(value);
|
342
|
+
var item = this.queue[index];
|
343
|
+
var prop = this.isHTML5 ? '_xhr' : '_form';
|
344
|
+
if (!item) return;
|
345
|
+
item.isCancel = true;
|
346
|
+
if (item.isUploading) {
|
347
|
+
// It will call this._onCancelItem() & this._onCompleteItem() asynchronously
|
348
|
+
item[prop].abort();
|
349
|
+
} else {
|
350
|
+
(function () {
|
351
|
+
var dummy = [undefined, 0, {}];
|
352
|
+
var onNextTick = function onNextTick() {
|
353
|
+
_this2._onCancelItem.apply(_this2, [item].concat(dummy));
|
354
|
+
_this2._onCompleteItem.apply(_this2, [item].concat(dummy));
|
722
355
|
};
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
356
|
+
$timeout(onNextTick); // Trigger callbacks asynchronously (setImmediate emulation)
|
357
|
+
})();
|
358
|
+
}
|
359
|
+
};
|
360
|
+
/**
|
361
|
+
* Uploads all not uploaded items of queue
|
362
|
+
*/
|
363
|
+
|
364
|
+
|
365
|
+
FileUploader.prototype.uploadAll = function uploadAll() {
|
366
|
+
var items = this.getNotUploadedItems().filter(function (item) {
|
367
|
+
return !item.isUploading;
|
368
|
+
});
|
369
|
+
if (!items.length) return;
|
370
|
+
|
371
|
+
forEach(items, function (item) {
|
372
|
+
return item._prepareToUploading();
|
373
|
+
});
|
374
|
+
items[0].upload();
|
375
|
+
};
|
376
|
+
/**
|
377
|
+
* Cancels all uploads
|
378
|
+
*/
|
379
|
+
|
380
|
+
|
381
|
+
FileUploader.prototype.cancelAll = function cancelAll() {
|
382
|
+
var items = this.getNotUploadedItems();
|
383
|
+
forEach(items, function (item) {
|
384
|
+
return item.cancel();
|
385
|
+
});
|
386
|
+
};
|
387
|
+
/**
|
388
|
+
* Returns "true" if value an instance of File
|
389
|
+
* @param {*} value
|
390
|
+
* @returns {Boolean}
|
391
|
+
* @private
|
392
|
+
*/
|
393
|
+
|
394
|
+
|
395
|
+
FileUploader.prototype.isFile = function isFile(value) {
|
396
|
+
return this.constructor.isFile(value);
|
397
|
+
};
|
398
|
+
/**
|
399
|
+
* Returns "true" if value an instance of FileLikeObject
|
400
|
+
* @param {*} value
|
401
|
+
* @returns {Boolean}
|
402
|
+
* @private
|
403
|
+
*/
|
404
|
+
|
405
|
+
|
406
|
+
FileUploader.prototype.isFileLikeObject = function isFileLikeObject(value) {
|
407
|
+
return this.constructor.isFileLikeObject(value);
|
408
|
+
};
|
409
|
+
/**
|
410
|
+
* Returns "true" if value is array like object
|
411
|
+
* @param {*} value
|
412
|
+
* @returns {Boolean}
|
413
|
+
*/
|
414
|
+
|
415
|
+
|
416
|
+
FileUploader.prototype.isArrayLikeObject = function isArrayLikeObject(value) {
|
417
|
+
return this.constructor.isArrayLikeObject(value);
|
418
|
+
};
|
419
|
+
/**
|
420
|
+
* Returns a index of item from the queue
|
421
|
+
* @param {Item|Number} value
|
422
|
+
* @returns {Number}
|
423
|
+
*/
|
424
|
+
|
425
|
+
|
426
|
+
FileUploader.prototype.getIndexOfItem = function getIndexOfItem(value) {
|
427
|
+
return isNumber(value) ? value : this.queue.indexOf(value);
|
428
|
+
};
|
429
|
+
/**
|
430
|
+
* Returns not uploaded items
|
431
|
+
* @returns {Array}
|
432
|
+
*/
|
433
|
+
|
434
|
+
|
435
|
+
FileUploader.prototype.getNotUploadedItems = function getNotUploadedItems() {
|
436
|
+
return this.queue.filter(function (item) {
|
437
|
+
return !item.isUploaded;
|
438
|
+
});
|
439
|
+
};
|
440
|
+
/**
|
441
|
+
* Returns items ready for upload
|
442
|
+
* @returns {Array}
|
443
|
+
*/
|
444
|
+
|
445
|
+
|
446
|
+
FileUploader.prototype.getReadyItems = function getReadyItems() {
|
447
|
+
return this.queue.filter(function (item) {
|
448
|
+
return item.isReady && !item.isUploading;
|
449
|
+
}).sort(function (item1, item2) {
|
450
|
+
return item1.index - item2.index;
|
451
|
+
});
|
452
|
+
};
|
453
|
+
/**
|
454
|
+
* Destroys instance of FileUploader
|
455
|
+
*/
|
456
|
+
|
457
|
+
|
458
|
+
FileUploader.prototype.destroy = function destroy() {
|
459
|
+
var _this3 = this;
|
460
|
+
|
461
|
+
forEach(this._directives, function (key) {
|
462
|
+
forEach(_this3._directives[key], function (object) {
|
463
|
+
object.destroy();
|
464
|
+
});
|
465
|
+
});
|
466
|
+
};
|
467
|
+
/**
|
468
|
+
* Callback
|
469
|
+
* @param {Array} fileItems
|
470
|
+
*/
|
471
|
+
|
472
|
+
|
473
|
+
FileUploader.prototype.onAfterAddingAll = function onAfterAddingAll(fileItems) {};
|
474
|
+
/**
|
475
|
+
* Callback
|
476
|
+
* @param {FileItem} fileItem
|
477
|
+
*/
|
478
|
+
|
479
|
+
|
480
|
+
FileUploader.prototype.onAfterAddingFile = function onAfterAddingFile(fileItem) {};
|
481
|
+
/**
|
482
|
+
* Callback
|
483
|
+
* @param {File|Object} item
|
484
|
+
* @param {Object} filter
|
485
|
+
* @param {Object} options
|
486
|
+
*/
|
487
|
+
|
488
|
+
|
489
|
+
FileUploader.prototype.onWhenAddingFileFailed = function onWhenAddingFileFailed(item, filter, options) {};
|
490
|
+
/**
|
491
|
+
* Callback
|
492
|
+
* @param {FileItem} fileItem
|
493
|
+
*/
|
494
|
+
|
495
|
+
|
496
|
+
FileUploader.prototype.onBeforeUploadItem = function onBeforeUploadItem(fileItem) {};
|
497
|
+
/**
|
498
|
+
* Callback
|
499
|
+
* @param {FileItem} fileItem
|
500
|
+
* @param {Number} progress
|
501
|
+
*/
|
502
|
+
|
503
|
+
|
504
|
+
FileUploader.prototype.onProgressItem = function onProgressItem(fileItem, progress) {};
|
505
|
+
/**
|
506
|
+
* Callback
|
507
|
+
* @param {Number} progress
|
508
|
+
*/
|
509
|
+
|
510
|
+
|
511
|
+
FileUploader.prototype.onProgressAll = function onProgressAll(progress) {};
|
512
|
+
/**
|
513
|
+
* Callback
|
514
|
+
* @param {FileItem} item
|
515
|
+
* @param {*} response
|
516
|
+
* @param {Number} status
|
517
|
+
* @param {Object} headers
|
518
|
+
*/
|
519
|
+
|
520
|
+
|
521
|
+
FileUploader.prototype.onSuccessItem = function onSuccessItem(item, response, status, headers) {};
|
522
|
+
/**
|
523
|
+
* Callback
|
524
|
+
* @param {FileItem} item
|
525
|
+
* @param {*} response
|
526
|
+
* @param {Number} status
|
527
|
+
* @param {Object} headers
|
528
|
+
*/
|
529
|
+
|
530
|
+
|
531
|
+
FileUploader.prototype.onErrorItem = function onErrorItem(item, response, status, headers) {};
|
532
|
+
/**
|
533
|
+
* Callback
|
534
|
+
* @param {FileItem} item
|
535
|
+
* @param {*} response
|
536
|
+
* @param {Number} status
|
537
|
+
* @param {Object} headers
|
538
|
+
*/
|
539
|
+
|
540
|
+
|
541
|
+
FileUploader.prototype.onCancelItem = function onCancelItem(item, response, status, headers) {};
|
542
|
+
/**
|
543
|
+
* Callback
|
544
|
+
* @param {FileItem} item
|
545
|
+
* @param {*} response
|
546
|
+
* @param {Number} status
|
547
|
+
* @param {Object} headers
|
548
|
+
*/
|
549
|
+
|
550
|
+
|
551
|
+
FileUploader.prototype.onCompleteItem = function onCompleteItem(item, response, status, headers) {};
|
552
|
+
/**
|
553
|
+
* Callback
|
554
|
+
*/
|
555
|
+
|
556
|
+
|
557
|
+
FileUploader.prototype.onCompleteAll = function onCompleteAll() {};
|
558
|
+
/**********************
|
559
|
+
* PRIVATE
|
560
|
+
**********************/
|
561
|
+
/**
|
562
|
+
* Returns the total progress
|
563
|
+
* @param {Number} [value]
|
564
|
+
* @returns {Number}
|
565
|
+
* @private
|
566
|
+
*/
|
567
|
+
|
568
|
+
|
569
|
+
FileUploader.prototype._getTotalProgress = function _getTotalProgress(value) {
|
570
|
+
if (this.removeAfterUpload) return value || 0;
|
571
|
+
|
572
|
+
var notUploaded = this.getNotUploadedItems().length;
|
573
|
+
var uploaded = notUploaded ? this.queue.length - notUploaded : this.queue.length;
|
574
|
+
var ratio = 100 / this.queue.length;
|
575
|
+
var current = (value || 0) * ratio / 100;
|
576
|
+
|
577
|
+
return Math.round(uploaded * ratio + current);
|
578
|
+
};
|
579
|
+
/**
|
580
|
+
* Returns array of filters
|
581
|
+
* @param {Array<Function>|String} filters
|
582
|
+
* @returns {Array<Function>}
|
583
|
+
* @private
|
584
|
+
*/
|
585
|
+
|
586
|
+
|
587
|
+
FileUploader.prototype._getFilters = function _getFilters(filters) {
|
588
|
+
if (!filters) return this.filters;
|
589
|
+
if (isArray(filters)) return filters;
|
590
|
+
var names = filters.match(/[^\s,]+/g);
|
591
|
+
return this.filters.filter(function (filter) {
|
592
|
+
return names.indexOf(filter.name) !== -1;
|
593
|
+
});
|
594
|
+
};
|
595
|
+
/**
|
596
|
+
* @param {Array<Function>} filters
|
597
|
+
* @returns {Array<Function>}
|
598
|
+
* @private
|
599
|
+
*/
|
600
|
+
|
601
|
+
|
602
|
+
FileUploader.prototype._convertFiltersToPipes = function _convertFiltersToPipes(filters) {
|
603
|
+
var _this4 = this;
|
604
|
+
|
605
|
+
return filters.map(function (filter) {
|
606
|
+
var fn = bind(_this4, filter.fn);
|
607
|
+
fn.isAsync = filter.fn.length === 3;
|
608
|
+
fn.originalFilter = filter;
|
609
|
+
return fn;
|
610
|
+
});
|
611
|
+
};
|
612
|
+
/**
|
613
|
+
* Updates html
|
614
|
+
* @private
|
615
|
+
*/
|
616
|
+
|
617
|
+
|
618
|
+
FileUploader.prototype._render = function _render() {
|
619
|
+
if (!$rootScope.$$phase) $rootScope.$apply();
|
620
|
+
};
|
621
|
+
/**
|
622
|
+
* Returns "true" if item is a file (not folder)
|
623
|
+
* @param {File|FileLikeObject} item
|
624
|
+
* @returns {Boolean}
|
625
|
+
* @private
|
626
|
+
*/
|
627
|
+
|
628
|
+
|
629
|
+
FileUploader.prototype._folderFilter = function _folderFilter(item) {
|
630
|
+
return !!(item.size || item.type);
|
631
|
+
};
|
632
|
+
/**
|
633
|
+
* Returns "true" if the limit has not been reached
|
634
|
+
* @returns {Boolean}
|
635
|
+
* @private
|
636
|
+
*/
|
637
|
+
|
638
|
+
|
639
|
+
FileUploader.prototype._queueLimitFilter = function _queueLimitFilter() {
|
640
|
+
return this.queue.length < this.queueLimit;
|
641
|
+
};
|
642
|
+
/**
|
643
|
+
* Checks whether upload successful
|
644
|
+
* @param {Number} status
|
645
|
+
* @returns {Boolean}
|
646
|
+
* @private
|
647
|
+
*/
|
648
|
+
|
649
|
+
|
650
|
+
FileUploader.prototype._isSuccessCode = function _isSuccessCode(status) {
|
651
|
+
return status >= 200 && status < 300 || status === 304;
|
652
|
+
};
|
653
|
+
/**
|
654
|
+
* Transforms the server response
|
655
|
+
* @param {*} response
|
656
|
+
* @param {Object} headers
|
657
|
+
* @returns {*}
|
658
|
+
* @private
|
659
|
+
*/
|
660
|
+
|
661
|
+
|
662
|
+
FileUploader.prototype._transformResponse = function _transformResponse(response, headers) {
|
663
|
+
var headersGetter = this._headersGetter(headers);
|
664
|
+
forEach($http.defaults.transformResponse, function (transformFn) {
|
665
|
+
response = transformFn(response, headersGetter);
|
666
|
+
});
|
667
|
+
return response;
|
668
|
+
};
|
669
|
+
/**
|
670
|
+
* Parsed response headers
|
671
|
+
* @param headers
|
672
|
+
* @returns {Object}
|
673
|
+
* @see https://github.com/angular/angular.js/blob/master/src/ng/http.js
|
674
|
+
* @private
|
675
|
+
*/
|
676
|
+
|
677
|
+
|
678
|
+
FileUploader.prototype._parseHeaders = function _parseHeaders(headers) {
|
679
|
+
var parsed = {},
|
680
|
+
key,
|
681
|
+
val,
|
682
|
+
i;
|
683
|
+
|
684
|
+
if (!headers) return parsed;
|
685
|
+
|
686
|
+
forEach(headers.split('\n'), function (line) {
|
687
|
+
i = line.indexOf(':');
|
688
|
+
key = line.slice(0, i).trim().toLowerCase();
|
689
|
+
val = line.slice(i + 1).trim();
|
690
|
+
|
691
|
+
if (key) {
|
692
|
+
parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
|
734
693
|
}
|
735
|
-
}
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
|
769
|
-
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
iframe.bind("load", function () {
|
774
|
-
var html = "";
|
775
|
-
var status = 200;
|
776
|
-
|
777
|
-
try {
|
778
|
-
// Fix for legacy IE browsers that loads internal error page
|
779
|
-
// when failed WS response received. In consequence iframe
|
780
|
-
// content access denied error is thrown becouse trying to
|
781
|
-
// access cross domain page. When such thing occurs notifying
|
782
|
-
// with empty response object. See more info at:
|
783
|
-
// http://stackoverflow.com/questions/151362/access-is-denied-error-on-accessing-iframe-document-object
|
784
|
-
// Note that if non standard 4xx or 5xx error code returned
|
785
|
-
// from WS then response content can be accessed without error
|
786
|
-
// but 'XHR' status becomes 200. In order to avoid confusion
|
787
|
-
// returning response via same 'success' event handler.
|
788
|
-
|
789
|
-
// fixed angular.contents() for iframes
|
790
|
-
html = iframe[0].contentDocument.body.innerHTML;
|
791
|
-
} catch (e) {
|
792
|
-
// in case we run into the access-is-denied error or we have another error on the server side
|
793
|
-
// (intentional 500,40... errors), we at least say 'something went wrong' -> 500
|
794
|
-
status = 500;
|
795
|
-
}
|
796
|
-
|
797
|
-
var xhr = { response: html, status: status, dummy: true };
|
798
|
-
var headers = {};
|
799
|
-
var response = _this._transformResponse(xhr.response, headers);
|
800
|
-
|
801
|
-
_this._onSuccessItem(item, response, xhr.status, headers);
|
802
|
-
_this._onCompleteItem(item, response, xhr.status, headers);
|
694
|
+
});
|
695
|
+
|
696
|
+
return parsed;
|
697
|
+
};
|
698
|
+
/**
|
699
|
+
* Returns function that returns headers
|
700
|
+
* @param {Object} parsedHeaders
|
701
|
+
* @returns {Function}
|
702
|
+
* @private
|
703
|
+
*/
|
704
|
+
|
705
|
+
|
706
|
+
FileUploader.prototype._headersGetter = function _headersGetter(parsedHeaders) {
|
707
|
+
return function (name) {
|
708
|
+
if (name) {
|
709
|
+
return parsedHeaders[name.toLowerCase()] || null;
|
710
|
+
}
|
711
|
+
return parsedHeaders;
|
712
|
+
};
|
713
|
+
};
|
714
|
+
/**
|
715
|
+
* The XMLHttpRequest transport
|
716
|
+
* @param {FileItem} item
|
717
|
+
* @private
|
718
|
+
*/
|
719
|
+
|
720
|
+
|
721
|
+
FileUploader.prototype._xhrTransport = function _xhrTransport(item) {
|
722
|
+
var _this5 = this;
|
723
|
+
|
724
|
+
var xhr = item._xhr = new XMLHttpRequest();
|
725
|
+
var sendable;
|
726
|
+
|
727
|
+
if (!item.disableMultipart) {
|
728
|
+
sendable = new FormData();
|
729
|
+
forEach(item.formData, function (obj) {
|
730
|
+
forEach(obj, function (value, key) {
|
731
|
+
sendable.append(key, value);
|
803
732
|
});
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
iframe.unbind("load").prop("src", "javascript:false;");
|
811
|
-
form.replaceWith(input);
|
812
|
-
|
813
|
-
_this._onCancelItem(item, response, xhr.status, headers);
|
814
|
-
_this._onCompleteItem(item, response, xhr.status, headers);
|
815
|
-
};
|
816
|
-
|
817
|
-
input.after(form);
|
818
|
-
form.append(input).append(iframe);
|
819
|
-
|
820
|
-
form[0].submit();
|
821
|
-
this._render();
|
822
|
-
}
|
823
|
-
},
|
824
|
-
_onWhenAddingFileFailed: {
|
825
|
-
/**
|
826
|
-
* Inner callback
|
827
|
-
* @param {File|Object} item
|
828
|
-
* @param {Object} filter
|
829
|
-
* @param {Object} options
|
830
|
-
* @private
|
831
|
-
*/
|
832
|
-
|
833
|
-
value: function _onWhenAddingFileFailed(item, filter, options) {
|
834
|
-
this.onWhenAddingFileFailed(item, filter, options);
|
835
|
-
}
|
836
|
-
},
|
837
|
-
_onAfterAddingFile: {
|
838
|
-
/**
|
839
|
-
* Inner callback
|
840
|
-
* @param {FileItem} item
|
841
|
-
*/
|
842
|
-
|
843
|
-
value: function _onAfterAddingFile(item) {
|
844
|
-
this.onAfterAddingFile(item);
|
845
|
-
}
|
846
|
-
},
|
847
|
-
_onAfterAddingAll: {
|
848
|
-
/**
|
849
|
-
* Inner callback
|
850
|
-
* @param {Array<FileItem>} items
|
851
|
-
*/
|
852
|
-
|
853
|
-
value: function _onAfterAddingAll(items) {
|
854
|
-
this.onAfterAddingAll(items);
|
855
|
-
}
|
856
|
-
},
|
857
|
-
_onBeforeUploadItem: {
|
858
|
-
/**
|
859
|
-
* Inner callback
|
860
|
-
* @param {FileItem} item
|
861
|
-
* @private
|
862
|
-
*/
|
863
|
-
|
864
|
-
value: function _onBeforeUploadItem(item) {
|
865
|
-
item._onBeforeUpload();
|
866
|
-
this.onBeforeUploadItem(item);
|
867
|
-
}
|
868
|
-
},
|
869
|
-
_onProgressItem: {
|
870
|
-
/**
|
871
|
-
* Inner callback
|
872
|
-
* @param {FileItem} item
|
873
|
-
* @param {Number} progress
|
874
|
-
* @private
|
875
|
-
*/
|
876
|
-
|
877
|
-
value: function _onProgressItem(item, progress) {
|
878
|
-
var total = this._getTotalProgress(progress);
|
879
|
-
this.progress = total;
|
880
|
-
item._onProgress(progress);
|
881
|
-
this.onProgressItem(item, progress);
|
882
|
-
this.onProgressAll(total);
|
883
|
-
this._render();
|
884
|
-
}
|
885
|
-
},
|
886
|
-
_onSuccessItem: {
|
887
|
-
/**
|
888
|
-
* Inner callback
|
889
|
-
* @param {FileItem} item
|
890
|
-
* @param {*} response
|
891
|
-
* @param {Number} status
|
892
|
-
* @param {Object} headers
|
893
|
-
* @private
|
894
|
-
*/
|
895
|
-
|
896
|
-
value: function _onSuccessItem(item, response, status, headers) {
|
897
|
-
item._onSuccess(response, status, headers);
|
898
|
-
this.onSuccessItem(item, response, status, headers);
|
899
|
-
}
|
900
|
-
},
|
901
|
-
_onErrorItem: {
|
902
|
-
/**
|
903
|
-
* Inner callback
|
904
|
-
* @param {FileItem} item
|
905
|
-
* @param {*} response
|
906
|
-
* @param {Number} status
|
907
|
-
* @param {Object} headers
|
908
|
-
* @private
|
909
|
-
*/
|
910
|
-
|
911
|
-
value: function _onErrorItem(item, response, status, headers) {
|
912
|
-
item._onError(response, status, headers);
|
913
|
-
this.onErrorItem(item, response, status, headers);
|
914
|
-
}
|
915
|
-
},
|
916
|
-
_onCancelItem: {
|
917
|
-
/**
|
918
|
-
* Inner callback
|
919
|
-
* @param {FileItem} item
|
920
|
-
* @param {*} response
|
921
|
-
* @param {Number} status
|
922
|
-
* @param {Object} headers
|
923
|
-
* @private
|
924
|
-
*/
|
925
|
-
|
926
|
-
value: function _onCancelItem(item, response, status, headers) {
|
927
|
-
item._onCancel(response, status, headers);
|
928
|
-
this.onCancelItem(item, response, status, headers);
|
929
|
-
}
|
930
|
-
},
|
931
|
-
_onCompleteItem: {
|
932
|
-
/**
|
933
|
-
* Inner callback
|
934
|
-
* @param {FileItem} item
|
935
|
-
* @param {*} response
|
936
|
-
* @param {Number} status
|
937
|
-
* @param {Object} headers
|
938
|
-
* @private
|
939
|
-
*/
|
940
|
-
|
941
|
-
value: function _onCompleteItem(item, response, status, headers) {
|
942
|
-
item._onComplete(response, status, headers);
|
943
|
-
this.onCompleteItem(item, response, status, headers);
|
944
|
-
|
945
|
-
var nextItem = this.getReadyItems()[0];
|
946
|
-
this.isUploading = false;
|
947
|
-
|
948
|
-
if (isDefined(nextItem)) {
|
949
|
-
nextItem.upload();
|
950
|
-
return;
|
951
|
-
}
|
952
|
-
|
953
|
-
this.onCompleteAll();
|
954
|
-
this.progress = this._getTotalProgress();
|
955
|
-
this._render();
|
956
|
-
}
|
733
|
+
});
|
734
|
+
|
735
|
+
sendable.append(item.alias, item._file, item.file.name);
|
736
|
+
} else {
|
737
|
+
sendable = item._file;
|
957
738
|
}
|
958
|
-
|
959
|
-
|
960
|
-
|
961
|
-
* STATIC
|
962
|
-
**********************/
|
963
|
-
/**
|
964
|
-
* Returns "true" if value an instance of File
|
965
|
-
* @param {*} value
|
966
|
-
* @returns {Boolean}
|
967
|
-
* @private
|
968
|
-
*/
|
969
|
-
|
970
|
-
value: function isFile(value) {
|
971
|
-
return File && value instanceof File;
|
972
|
-
}
|
973
|
-
},
|
974
|
-
isFileLikeObject: {
|
975
|
-
/**
|
976
|
-
* Returns "true" if value an instance of FileLikeObject
|
977
|
-
* @param {*} value
|
978
|
-
* @returns {Boolean}
|
979
|
-
* @private
|
980
|
-
*/
|
981
|
-
|
982
|
-
value: function isFileLikeObject(value) {
|
983
|
-
return value instanceof FileLikeObject;
|
984
|
-
}
|
985
|
-
},
|
986
|
-
isArrayLikeObject: {
|
987
|
-
/**
|
988
|
-
* Returns "true" if value is array like object
|
989
|
-
* @param {*} value
|
990
|
-
* @returns {Boolean}
|
991
|
-
*/
|
992
|
-
|
993
|
-
value: function isArrayLikeObject(value) {
|
994
|
-
return isObject(value) && "length" in value;
|
995
|
-
}
|
996
|
-
},
|
997
|
-
inherit: {
|
998
|
-
/**
|
999
|
-
* Inherits a target (Class_1) by a source (Class_2)
|
1000
|
-
* @param {Function} target
|
1001
|
-
* @param {Function} source
|
1002
|
-
*/
|
1003
|
-
|
1004
|
-
value: function inherit(target, source) {
|
1005
|
-
target.prototype = Object.create(source.prototype);
|
1006
|
-
target.prototype.constructor = target;
|
1007
|
-
target.super_ = source;
|
1008
|
-
}
|
739
|
+
|
740
|
+
if (typeof item._file.size != 'number') {
|
741
|
+
throw new TypeError('The file specified is no longer valid');
|
1009
742
|
}
|
1010
|
-
|
1011
|
-
|
743
|
+
|
744
|
+
xhr.upload.onprogress = function (event) {
|
745
|
+
var progress = Math.round(event.lengthComputable ? event.loaded * 100 / event.total : 0);
|
746
|
+
_this5._onProgressItem(item, progress);
|
747
|
+
};
|
748
|
+
|
749
|
+
xhr.onload = function () {
|
750
|
+
var headers = _this5._parseHeaders(xhr.getAllResponseHeaders());
|
751
|
+
var response = _this5._transformResponse(xhr.response, headers);
|
752
|
+
var gist = _this5._isSuccessCode(xhr.status) ? 'Success' : 'Error';
|
753
|
+
var method = '_on' + gist + 'Item';
|
754
|
+
_this5[method](item, response, xhr.status, headers);
|
755
|
+
_this5._onCompleteItem(item, response, xhr.status, headers);
|
756
|
+
};
|
757
|
+
|
758
|
+
xhr.onerror = function () {
|
759
|
+
var headers = _this5._parseHeaders(xhr.getAllResponseHeaders());
|
760
|
+
var response = _this5._transformResponse(xhr.response, headers);
|
761
|
+
_this5._onErrorItem(item, response, xhr.status, headers);
|
762
|
+
_this5._onCompleteItem(item, response, xhr.status, headers);
|
763
|
+
};
|
764
|
+
|
765
|
+
xhr.onabort = function () {
|
766
|
+
var headers = _this5._parseHeaders(xhr.getAllResponseHeaders());
|
767
|
+
var response = _this5._transformResponse(xhr.response, headers);
|
768
|
+
_this5._onCancelItem(item, response, xhr.status, headers);
|
769
|
+
_this5._onCompleteItem(item, response, xhr.status, headers);
|
770
|
+
};
|
771
|
+
|
772
|
+
xhr.open(item.method, item.url, true);
|
773
|
+
|
774
|
+
xhr.withCredentials = item.withCredentials;
|
775
|
+
|
776
|
+
forEach(item.headers, function (value, name) {
|
777
|
+
xhr.setRequestHeader(name, value);
|
778
|
+
});
|
779
|
+
|
780
|
+
xhr.send(sendable);
|
781
|
+
};
|
782
|
+
/**
|
783
|
+
* The IFrame transport
|
784
|
+
* @param {FileItem} item
|
785
|
+
* @private
|
786
|
+
*/
|
787
|
+
|
788
|
+
|
789
|
+
FileUploader.prototype._iframeTransport = function _iframeTransport(item) {
|
790
|
+
var _this6 = this;
|
791
|
+
|
792
|
+
var form = element('<form style="display: none;" />');
|
793
|
+
var iframe = element('<iframe name="iframeTransport' + Date.now() + '">');
|
794
|
+
var input = item._input;
|
795
|
+
|
796
|
+
if (item._form) item._form.replaceWith(input); // remove old form
|
797
|
+
item._form = form; // save link to new form
|
798
|
+
|
799
|
+
input.prop('name', item.alias);
|
800
|
+
|
801
|
+
forEach(item.formData, function (obj) {
|
802
|
+
forEach(obj, function (value, key) {
|
803
|
+
var element_ = element('<input type="hidden" name="' + key + '" />');
|
804
|
+
element_.val(value);
|
805
|
+
form.append(element_);
|
806
|
+
});
|
807
|
+
});
|
808
|
+
|
809
|
+
form.prop({
|
810
|
+
action: item.url,
|
811
|
+
method: 'POST',
|
812
|
+
target: iframe.prop('name'),
|
813
|
+
enctype: 'multipart/form-data',
|
814
|
+
encoding: 'multipart/form-data' // old IE
|
815
|
+
});
|
816
|
+
|
817
|
+
iframe.bind('load', function () {
|
818
|
+
var html = '';
|
819
|
+
var status = 200;
|
820
|
+
|
821
|
+
try {
|
822
|
+
// Fix for legacy IE browsers that loads internal error page
|
823
|
+
// when failed WS response received. In consequence iframe
|
824
|
+
// content access denied error is thrown becouse trying to
|
825
|
+
// access cross domain page. When such thing occurs notifying
|
826
|
+
// with empty response object. See more info at:
|
827
|
+
// http://stackoverflow.com/questions/151362/access-is-denied-error-on-accessing-iframe-document-object
|
828
|
+
// Note that if non standard 4xx or 5xx error code returned
|
829
|
+
// from WS then response content can be accessed without error
|
830
|
+
// but 'XHR' status becomes 200. In order to avoid confusion
|
831
|
+
// returning response via same 'success' event handler.
|
832
|
+
|
833
|
+
// fixed angular.contents() for iframes
|
834
|
+
html = iframe[0].contentDocument.body.innerHTML;
|
835
|
+
} catch (e) {
|
836
|
+
// in case we run into the access-is-denied error or we have another error on the server side
|
837
|
+
// (intentional 500,40... errors), we at least say 'something went wrong' -> 500
|
838
|
+
status = 500;
|
839
|
+
}
|
840
|
+
|
841
|
+
var xhr = { response: html, status: status, dummy: true };
|
842
|
+
var headers = {};
|
843
|
+
var response = _this6._transformResponse(xhr.response, headers);
|
844
|
+
|
845
|
+
_this6._onSuccessItem(item, response, xhr.status, headers);
|
846
|
+
_this6._onCompleteItem(item, response, xhr.status, headers);
|
847
|
+
});
|
848
|
+
|
849
|
+
form.abort = function () {
|
850
|
+
var xhr = { status: 0, dummy: true };
|
851
|
+
var headers = {};
|
852
|
+
var response;
|
853
|
+
|
854
|
+
iframe.unbind('load').prop('src', 'javascript:false;');
|
855
|
+
form.replaceWith(input);
|
856
|
+
|
857
|
+
_this6._onCancelItem(item, response, xhr.status, headers);
|
858
|
+
_this6._onCompleteItem(item, response, xhr.status, headers);
|
859
|
+
};
|
860
|
+
|
861
|
+
input.after(form);
|
862
|
+
form.append(input).append(iframe);
|
863
|
+
|
864
|
+
form[0].submit();
|
865
|
+
};
|
866
|
+
/**
|
867
|
+
* Inner callback
|
868
|
+
* @param {File|Object} item
|
869
|
+
* @param {Object} filter
|
870
|
+
* @param {Object} options
|
871
|
+
* @private
|
872
|
+
*/
|
873
|
+
|
874
|
+
|
875
|
+
FileUploader.prototype._onWhenAddingFileFailed = function _onWhenAddingFileFailed(item, filter, options) {
|
876
|
+
this.onWhenAddingFileFailed(item, filter, options);
|
877
|
+
};
|
878
|
+
/**
|
879
|
+
* Inner callback
|
880
|
+
* @param {FileItem} item
|
881
|
+
*/
|
882
|
+
|
883
|
+
|
884
|
+
FileUploader.prototype._onAfterAddingFile = function _onAfterAddingFile(item) {
|
885
|
+
this.onAfterAddingFile(item);
|
886
|
+
};
|
887
|
+
/**
|
888
|
+
* Inner callback
|
889
|
+
* @param {Array<FileItem>} items
|
890
|
+
*/
|
891
|
+
|
892
|
+
|
893
|
+
FileUploader.prototype._onAfterAddingAll = function _onAfterAddingAll(items) {
|
894
|
+
this.onAfterAddingAll(items);
|
895
|
+
};
|
896
|
+
/**
|
897
|
+
* Inner callback
|
898
|
+
* @param {FileItem} item
|
899
|
+
* @private
|
900
|
+
*/
|
901
|
+
|
902
|
+
|
903
|
+
FileUploader.prototype._onBeforeUploadItem = function _onBeforeUploadItem(item) {
|
904
|
+
item._onBeforeUpload();
|
905
|
+
this.onBeforeUploadItem(item);
|
906
|
+
};
|
907
|
+
/**
|
908
|
+
* Inner callback
|
909
|
+
* @param {FileItem} item
|
910
|
+
* @param {Number} progress
|
911
|
+
* @private
|
912
|
+
*/
|
913
|
+
|
914
|
+
|
915
|
+
FileUploader.prototype._onProgressItem = function _onProgressItem(item, progress) {
|
916
|
+
var total = this._getTotalProgress(progress);
|
917
|
+
this.progress = total;
|
918
|
+
item._onProgress(progress);
|
919
|
+
this.onProgressItem(item, progress);
|
920
|
+
this.onProgressAll(total);
|
921
|
+
this._render();
|
922
|
+
};
|
923
|
+
/**
|
924
|
+
* Inner callback
|
925
|
+
* @param {FileItem} item
|
926
|
+
* @param {*} response
|
927
|
+
* @param {Number} status
|
928
|
+
* @param {Object} headers
|
929
|
+
* @private
|
930
|
+
*/
|
931
|
+
|
932
|
+
|
933
|
+
FileUploader.prototype._onSuccessItem = function _onSuccessItem(item, response, status, headers) {
|
934
|
+
item._onSuccess(response, status, headers);
|
935
|
+
this.onSuccessItem(item, response, status, headers);
|
936
|
+
};
|
937
|
+
/**
|
938
|
+
* Inner callback
|
939
|
+
* @param {FileItem} item
|
940
|
+
* @param {*} response
|
941
|
+
* @param {Number} status
|
942
|
+
* @param {Object} headers
|
943
|
+
* @private
|
944
|
+
*/
|
945
|
+
|
946
|
+
|
947
|
+
FileUploader.prototype._onErrorItem = function _onErrorItem(item, response, status, headers) {
|
948
|
+
item._onError(response, status, headers);
|
949
|
+
this.onErrorItem(item, response, status, headers);
|
950
|
+
};
|
951
|
+
/**
|
952
|
+
* Inner callback
|
953
|
+
* @param {FileItem} item
|
954
|
+
* @param {*} response
|
955
|
+
* @param {Number} status
|
956
|
+
* @param {Object} headers
|
957
|
+
* @private
|
958
|
+
*/
|
959
|
+
|
960
|
+
|
961
|
+
FileUploader.prototype._onCancelItem = function _onCancelItem(item, response, status, headers) {
|
962
|
+
item._onCancel(response, status, headers);
|
963
|
+
this.onCancelItem(item, response, status, headers);
|
964
|
+
};
|
965
|
+
/**
|
966
|
+
* Inner callback
|
967
|
+
* @param {FileItem} item
|
968
|
+
* @param {*} response
|
969
|
+
* @param {Number} status
|
970
|
+
* @param {Object} headers
|
971
|
+
* @private
|
972
|
+
*/
|
973
|
+
|
974
|
+
|
975
|
+
FileUploader.prototype._onCompleteItem = function _onCompleteItem(item, response, status, headers) {
|
976
|
+
item._onComplete(response, status, headers);
|
977
|
+
this.onCompleteItem(item, response, status, headers);
|
978
|
+
|
979
|
+
var nextItem = this.getReadyItems()[0];
|
980
|
+
this.isUploading = false;
|
981
|
+
|
982
|
+
if (isDefined(nextItem)) {
|
983
|
+
nextItem.upload();
|
984
|
+
return;
|
985
|
+
}
|
986
|
+
|
987
|
+
this.onCompleteAll();
|
988
|
+
this.progress = this._getTotalProgress();
|
989
|
+
this._render();
|
990
|
+
};
|
991
|
+
/**********************
|
992
|
+
* STATIC
|
993
|
+
**********************/
|
994
|
+
/**
|
995
|
+
* Returns "true" if value an instance of File
|
996
|
+
* @param {*} value
|
997
|
+
* @returns {Boolean}
|
998
|
+
* @private
|
999
|
+
*/
|
1000
|
+
|
1001
|
+
|
1002
|
+
FileUploader.isFile = function isFile(value) {
|
1003
|
+
return File && value instanceof File;
|
1004
|
+
};
|
1005
|
+
/**
|
1006
|
+
* Returns "true" if value an instance of FileLikeObject
|
1007
|
+
* @param {*} value
|
1008
|
+
* @returns {Boolean}
|
1009
|
+
* @private
|
1010
|
+
*/
|
1011
|
+
|
1012
|
+
|
1013
|
+
FileUploader.isFileLikeObject = function isFileLikeObject(value) {
|
1014
|
+
return value instanceof FileLikeObject;
|
1015
|
+
};
|
1016
|
+
/**
|
1017
|
+
* Returns "true" if value is array like object
|
1018
|
+
* @param {*} value
|
1019
|
+
* @returns {Boolean}
|
1020
|
+
*/
|
1021
|
+
|
1022
|
+
|
1023
|
+
FileUploader.isArrayLikeObject = function isArrayLikeObject(value) {
|
1024
|
+
return isObject(value) && 'length' in value;
|
1025
|
+
};
|
1026
|
+
/**
|
1027
|
+
* Inherits a target (Class_1) by a source (Class_2)
|
1028
|
+
* @param {Function} target
|
1029
|
+
* @param {Function} source
|
1030
|
+
*/
|
1031
|
+
|
1032
|
+
|
1033
|
+
FileUploader.inherit = function inherit(target, source) {
|
1034
|
+
target.prototype = Object.create(source.prototype);
|
1035
|
+
target.prototype.constructor = target;
|
1036
|
+
target.super_ = source;
|
1037
|
+
};
|
1038
|
+
|
1012
1039
|
return FileUploader;
|
1013
|
-
}
|
1014
|
-
|
1040
|
+
}();
|
1041
|
+
|
1015
1042
|
/**********************
|
1016
1043
|
* PUBLIC
|
1017
1044
|
**********************/
|
@@ -1020,6 +1047,8 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
1020
1047
|
* @returns {Boolean}
|
1021
1048
|
* @readonly
|
1022
1049
|
*/
|
1050
|
+
|
1051
|
+
|
1023
1052
|
FileUploader.prototype.isHTML5 = !!(File && FormData);
|
1024
1053
|
/**********************
|
1025
1054
|
* STATIC
|
@@ -1028,108 +1057,111 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
1028
1057
|
* @borrows FileUploader.prototype.isHTML5
|
1029
1058
|
*/
|
1030
1059
|
FileUploader.isHTML5 = FileUploader.prototype.isHTML5;
|
1031
|
-
|
1060
|
+
|
1032
1061
|
return FileUploader;
|
1033
|
-
}
|
1034
|
-
|
1035
|
-
|
1062
|
+
}
|
1063
|
+
|
1064
|
+
__identity.$inject = ['fileUploaderOptions', '$rootScope', '$http', '$window', '$timeout', 'FileLikeObject', 'FileItem', 'Pipeline'];
|
1036
1065
|
|
1037
1066
|
/***/ },
|
1038
1067
|
/* 4 */
|
1039
1068
|
/***/ function(module, exports, __webpack_require__) {
|
1040
1069
|
|
1041
|
-
|
1042
|
-
|
1043
|
-
|
1044
|
-
|
1045
|
-
|
1046
|
-
|
1047
|
-
|
1048
|
-
|
1049
|
-
|
1050
|
-
|
1051
|
-
|
1052
|
-
|
1053
|
-
|
1054
|
-
|
1055
|
-
|
1056
|
-
|
1070
|
+
'use strict';
|
1071
|
+
|
1072
|
+
Object.defineProperty(exports, "__esModule", {
|
1073
|
+
value: true
|
1074
|
+
});
|
1075
|
+
exports.default = __identity;
|
1076
|
+
|
1077
|
+
var _config = __webpack_require__(1);
|
1078
|
+
|
1079
|
+
var _config2 = _interopRequireDefault(_config);
|
1080
|
+
|
1081
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
1082
|
+
|
1083
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
1084
|
+
|
1085
|
+
var _angular = angular;
|
1086
|
+
var copy = _angular.copy;
|
1087
|
+
var isElement = _angular.isElement;
|
1088
|
+
var isString = _angular.isString;
|
1089
|
+
function __identity() {
|
1090
|
+
|
1091
|
+
return function () {
|
1057
1092
|
/**
|
1058
1093
|
* Creates an instance of FileLikeObject
|
1059
1094
|
* @param {File|HTMLInputElement|Object} fileOrInput
|
1060
1095
|
* @constructor
|
1061
1096
|
*/
|
1062
|
-
|
1097
|
+
|
1063
1098
|
function FileLikeObject(fileOrInput) {
|
1064
1099
|
_classCallCheck(this, FileLikeObject);
|
1065
|
-
|
1100
|
+
|
1066
1101
|
var isInput = isElement(fileOrInput);
|
1067
1102
|
var fakePathOrObject = isInput ? fileOrInput.value : fileOrInput;
|
1068
|
-
var postfix = isString(fakePathOrObject) ?
|
1069
|
-
var method =
|
1103
|
+
var postfix = isString(fakePathOrObject) ? 'FakePath' : 'Object';
|
1104
|
+
var method = '_createFrom' + postfix;
|
1070
1105
|
this[method](fakePathOrObject);
|
1071
1106
|
}
|
1072
|
-
|
1073
|
-
|
1074
|
-
|
1075
|
-
|
1076
|
-
|
1077
|
-
|
1078
|
-
|
1079
|
-
|
1080
|
-
|
1081
|
-
|
1082
|
-
|
1083
|
-
|
1084
|
-
|
1085
|
-
|
1086
|
-
|
1087
|
-
|
1088
|
-
|
1089
|
-
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1093
|
-
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1097
|
-
|
1098
|
-
|
1099
|
-
this.name = object.name;
|
1100
|
-
}
|
1101
|
-
}
|
1102
|
-
});
|
1103
|
-
|
1107
|
+
/**
|
1108
|
+
* Creates file like object from fake path string
|
1109
|
+
* @param {String} path
|
1110
|
+
* @private
|
1111
|
+
*/
|
1112
|
+
|
1113
|
+
|
1114
|
+
FileLikeObject.prototype._createFromFakePath = function _createFromFakePath(path) {
|
1115
|
+
this.lastModifiedDate = null;
|
1116
|
+
this.size = null;
|
1117
|
+
this.type = 'like/' + path.slice(path.lastIndexOf('.') + 1).toLowerCase();
|
1118
|
+
this.name = path.slice(path.lastIndexOf('/') + path.lastIndexOf('\\') + 2);
|
1119
|
+
};
|
1120
|
+
/**
|
1121
|
+
* Creates file like object from object
|
1122
|
+
* @param {File|FileLikeObject} object
|
1123
|
+
* @private
|
1124
|
+
*/
|
1125
|
+
|
1126
|
+
|
1127
|
+
FileLikeObject.prototype._createFromObject = function _createFromObject(object) {
|
1128
|
+
this.lastModifiedDate = copy(object.lastModifiedDate);
|
1129
|
+
this.size = object.size;
|
1130
|
+
this.type = object.type;
|
1131
|
+
this.name = object.name;
|
1132
|
+
};
|
1133
|
+
|
1104
1134
|
return FileLikeObject;
|
1105
|
-
}
|
1106
|
-
|
1107
|
-
return FileLikeObject;
|
1108
|
-
};
|
1109
|
-
|
1110
|
-
module.exports.$inject = [];
|
1135
|
+
}();
|
1136
|
+
}
|
1111
1137
|
|
1112
1138
|
/***/ },
|
1113
1139
|
/* 5 */
|
1114
1140
|
/***/ function(module, exports, __webpack_require__) {
|
1115
1141
|
|
1116
|
-
|
1117
|
-
|
1118
|
-
|
1119
|
-
|
1120
|
-
|
1121
|
-
|
1122
|
-
|
1123
|
-
|
1124
|
-
|
1125
|
-
|
1126
|
-
|
1127
|
-
|
1128
|
-
|
1129
|
-
|
1130
|
-
|
1131
|
-
|
1132
|
-
|
1142
|
+
'use strict';
|
1143
|
+
|
1144
|
+
Object.defineProperty(exports, "__esModule", {
|
1145
|
+
value: true
|
1146
|
+
});
|
1147
|
+
exports.default = __identity;
|
1148
|
+
|
1149
|
+
var _config = __webpack_require__(1);
|
1150
|
+
|
1151
|
+
var _config2 = _interopRequireDefault(_config);
|
1152
|
+
|
1153
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
1154
|
+
|
1155
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
1156
|
+
|
1157
|
+
var _angular = angular;
|
1158
|
+
var copy = _angular.copy;
|
1159
|
+
var extend = _angular.extend;
|
1160
|
+
var element = _angular.element;
|
1161
|
+
var isElement = _angular.isElement;
|
1162
|
+
function __identity($compile, FileLikeObject) {
|
1163
|
+
|
1164
|
+
return function () {
|
1133
1165
|
/**
|
1134
1166
|
* Creates an instance of FileItem
|
1135
1167
|
* @param {FileUploader} uploader
|
@@ -1137,14 +1169,14 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
1137
1169
|
* @param {Object} options
|
1138
1170
|
* @constructor
|
1139
1171
|
*/
|
1140
|
-
|
1172
|
+
|
1141
1173
|
function FileItem(uploader, some, options) {
|
1142
1174
|
_classCallCheck(this, FileItem);
|
1143
|
-
|
1175
|
+
|
1144
1176
|
var isInput = isElement(some);
|
1145
1177
|
var input = isInput ? element(some) : null;
|
1146
1178
|
var file = !isInput ? some : null;
|
1147
|
-
|
1179
|
+
|
1148
1180
|
extend(this, {
|
1149
1181
|
url: uploader.url,
|
1150
1182
|
alias: uploader.alias,
|
@@ -1152,291 +1184,274 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
1152
1184
|
formData: copy(uploader.formData),
|
1153
1185
|
removeAfterUpload: uploader.removeAfterUpload,
|
1154
1186
|
withCredentials: uploader.withCredentials,
|
1187
|
+
disableMultipart: uploader.disableMultipart,
|
1155
1188
|
method: uploader.method
|
1156
1189
|
}, options, {
|
1157
1190
|
uploader: uploader,
|
1158
1191
|
file: new FileLikeObject(some),
|
1159
1192
|
isReady: false,
|
1160
1193
|
isUploading: false,
|
1161
|
-
isUploaded: false,
|
1162
|
-
isSuccess: false,
|
1163
|
-
isCancel: false,
|
1164
|
-
isError: false,
|
1165
|
-
progress: 0,
|
1166
|
-
index: null,
|
1167
|
-
_file: file,
|
1168
|
-
_input: input
|
1169
|
-
});
|
1170
|
-
|
1171
|
-
if (input) this._replaceNode(input);
|
1172
|
-
}
|
1173
|
-
|
1174
|
-
|
1175
|
-
|
1176
|
-
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
1180
|
-
|
1181
|
-
|
1182
|
-
|
1183
|
-
|
1184
|
-
|
1185
|
-
|
1186
|
-
|
1187
|
-
this.uploader._onCompleteItem(this, "", 0, []);
|
1188
|
-
this.uploader._onErrorItem(this, "", 0, []);
|
1189
|
-
}
|
1190
|
-
}
|
1191
|
-
},
|
1192
|
-
cancel: {
|
1193
|
-
/**
|
1194
|
-
* Cancels uploading of FileItem
|
1195
|
-
*/
|
1196
|
-
|
1197
|
-
value: function cancel() {
|
1198
|
-
this.uploader.cancelItem(this);
|
1199
|
-
}
|
1200
|
-
},
|
1201
|
-
remove: {
|
1202
|
-
/**
|
1203
|
-
* Removes a FileItem
|
1204
|
-
*/
|
1205
|
-
|
1206
|
-
value: function remove() {
|
1207
|
-
this.uploader.removeFromQueue(this);
|
1208
|
-
}
|
1209
|
-
},
|
1210
|
-
onBeforeUpload: {
|
1211
|
-
/**
|
1212
|
-
* Callback
|
1213
|
-
* @private
|
1214
|
-
*/
|
1215
|
-
|
1216
|
-
value: function onBeforeUpload() {}
|
1217
|
-
},
|
1218
|
-
onProgress: {
|
1219
|
-
/**
|
1220
|
-
* Callback
|
1221
|
-
* @param {Number} progress
|
1222
|
-
* @private
|
1223
|
-
*/
|
1224
|
-
|
1225
|
-
value: function onProgress(progress) {}
|
1226
|
-
},
|
1227
|
-
onSuccess: {
|
1228
|
-
/**
|
1229
|
-
* Callback
|
1230
|
-
* @param {*} response
|
1231
|
-
* @param {Number} status
|
1232
|
-
* @param {Object} headers
|
1233
|
-
*/
|
1234
|
-
|
1235
|
-
value: function onSuccess(response, status, headers) {}
|
1236
|
-
},
|
1237
|
-
onError: {
|
1238
|
-
/**
|
1239
|
-
* Callback
|
1240
|
-
* @param {*} response
|
1241
|
-
* @param {Number} status
|
1242
|
-
* @param {Object} headers
|
1243
|
-
*/
|
1244
|
-
|
1245
|
-
value: function onError(response, status, headers) {}
|
1246
|
-
},
|
1247
|
-
onCancel: {
|
1248
|
-
/**
|
1249
|
-
* Callback
|
1250
|
-
* @param {*} response
|
1251
|
-
* @param {Number} status
|
1252
|
-
* @param {Object} headers
|
1253
|
-
*/
|
1254
|
-
|
1255
|
-
value: function onCancel(response, status, headers) {}
|
1256
|
-
},
|
1257
|
-
onComplete: {
|
1258
|
-
/**
|
1259
|
-
* Callback
|
1260
|
-
* @param {*} response
|
1261
|
-
* @param {Number} status
|
1262
|
-
* @param {Object} headers
|
1263
|
-
*/
|
1264
|
-
|
1265
|
-
value: function onComplete(response, status, headers) {}
|
1266
|
-
},
|
1267
|
-
_onBeforeUpload: {
|
1268
|
-
/**********************
|
1269
|
-
* PRIVATE
|
1270
|
-
**********************/
|
1271
|
-
/**
|
1272
|
-
* Inner callback
|
1273
|
-
*/
|
1274
|
-
|
1275
|
-
value: function _onBeforeUpload() {
|
1276
|
-
this.isReady = true;
|
1277
|
-
this.isUploading = true;
|
1278
|
-
this.isUploaded = false;
|
1279
|
-
this.isSuccess = false;
|
1280
|
-
this.isCancel = false;
|
1281
|
-
this.isError = false;
|
1282
|
-
this.progress = 0;
|
1283
|
-
this.onBeforeUpload();
|
1284
|
-
}
|
1285
|
-
},
|
1286
|
-
_onProgress: {
|
1287
|
-
/**
|
1288
|
-
* Inner callback
|
1289
|
-
* @param {Number} progress
|
1290
|
-
* @private
|
1291
|
-
*/
|
1292
|
-
|
1293
|
-
value: function _onProgress(progress) {
|
1294
|
-
this.progress = progress;
|
1295
|
-
this.onProgress(progress);
|
1296
|
-
}
|
1297
|
-
},
|
1298
|
-
_onSuccess: {
|
1299
|
-
/**
|
1300
|
-
* Inner callback
|
1301
|
-
* @param {*} response
|
1302
|
-
* @param {Number} status
|
1303
|
-
* @param {Object} headers
|
1304
|
-
* @private
|
1305
|
-
*/
|
1306
|
-
|
1307
|
-
value: function _onSuccess(response, status, headers) {
|
1308
|
-
this.isReady = false;
|
1309
|
-
this.isUploading = false;
|
1310
|
-
this.isUploaded = true;
|
1311
|
-
this.isSuccess = true;
|
1312
|
-
this.isCancel = false;
|
1313
|
-
this.isError = false;
|
1314
|
-
this.progress = 100;
|
1315
|
-
this.index = null;
|
1316
|
-
this.onSuccess(response, status, headers);
|
1317
|
-
}
|
1318
|
-
},
|
1319
|
-
_onError: {
|
1320
|
-
/**
|
1321
|
-
* Inner callback
|
1322
|
-
* @param {*} response
|
1323
|
-
* @param {Number} status
|
1324
|
-
* @param {Object} headers
|
1325
|
-
* @private
|
1326
|
-
*/
|
1327
|
-
|
1328
|
-
value: function _onError(response, status, headers) {
|
1329
|
-
this.isReady = false;
|
1330
|
-
this.isUploading = false;
|
1331
|
-
this.isUploaded = true;
|
1332
|
-
this.isSuccess = false;
|
1333
|
-
this.isCancel = false;
|
1334
|
-
this.isError = true;
|
1335
|
-
this.progress = 0;
|
1336
|
-
this.index = null;
|
1337
|
-
this.onError(response, status, headers);
|
1338
|
-
}
|
1339
|
-
},
|
1340
|
-
_onCancel: {
|
1341
|
-
/**
|
1342
|
-
* Inner callback
|
1343
|
-
* @param {*} response
|
1344
|
-
* @param {Number} status
|
1345
|
-
* @param {Object} headers
|
1346
|
-
* @private
|
1347
|
-
*/
|
1348
|
-
|
1349
|
-
value: function _onCancel(response, status, headers) {
|
1350
|
-
this.isReady = false;
|
1351
|
-
this.isUploading = false;
|
1352
|
-
this.isUploaded = false;
|
1353
|
-
this.isSuccess = false;
|
1354
|
-
this.isCancel = true;
|
1355
|
-
this.isError = false;
|
1356
|
-
this.progress = 0;
|
1357
|
-
this.index = null;
|
1358
|
-
this.onCancel(response, status, headers);
|
1359
|
-
}
|
1360
|
-
},
|
1361
|
-
_onComplete: {
|
1362
|
-
/**
|
1363
|
-
* Inner callback
|
1364
|
-
* @param {*} response
|
1365
|
-
* @param {Number} status
|
1366
|
-
* @param {Object} headers
|
1367
|
-
* @private
|
1368
|
-
*/
|
1369
|
-
|
1370
|
-
value: function _onComplete(response, status, headers) {
|
1371
|
-
this.onComplete(response, status, headers);
|
1372
|
-
if (this.removeAfterUpload) this.remove();
|
1373
|
-
}
|
1374
|
-
},
|
1375
|
-
_destroy: {
|
1376
|
-
/**
|
1377
|
-
* Destroys a FileItem
|
1378
|
-
*/
|
1379
|
-
|
1380
|
-
value: function _destroy() {
|
1381
|
-
if (this._input) this._input.remove();
|
1382
|
-
if (this._form) this._form.remove();
|
1383
|
-
delete this._form;
|
1384
|
-
delete this._input;
|
1385
|
-
}
|
1386
|
-
},
|
1387
|
-
_prepareToUploading: {
|
1388
|
-
/**
|
1389
|
-
* Prepares to uploading
|
1390
|
-
* @private
|
1391
|
-
*/
|
1392
|
-
|
1393
|
-
value: function _prepareToUploading() {
|
1394
|
-
this.index = this.index || ++this.uploader._nextIndex;
|
1395
|
-
this.isReady = true;
|
1396
|
-
}
|
1397
|
-
},
|
1398
|
-
_replaceNode: {
|
1399
|
-
/**
|
1400
|
-
* Replaces input element on his clone
|
1401
|
-
* @param {JQLite|jQuery} input
|
1402
|
-
* @private
|
1403
|
-
*/
|
1404
|
-
|
1405
|
-
value: function _replaceNode(input) {
|
1406
|
-
var clone = $compile(input.clone())(input.scope());
|
1407
|
-
clone.prop("value", null); // FF fix
|
1408
|
-
input.css("display", "none");
|
1409
|
-
input.after(clone); // remove jquery dependency
|
1410
|
-
}
|
1194
|
+
isUploaded: false,
|
1195
|
+
isSuccess: false,
|
1196
|
+
isCancel: false,
|
1197
|
+
isError: false,
|
1198
|
+
progress: 0,
|
1199
|
+
index: null,
|
1200
|
+
_file: file,
|
1201
|
+
_input: input
|
1202
|
+
});
|
1203
|
+
|
1204
|
+
if (input) this._replaceNode(input);
|
1205
|
+
}
|
1206
|
+
/**********************
|
1207
|
+
* PUBLIC
|
1208
|
+
**********************/
|
1209
|
+
/**
|
1210
|
+
* Uploads a FileItem
|
1211
|
+
*/
|
1212
|
+
|
1213
|
+
|
1214
|
+
FileItem.prototype.upload = function upload() {
|
1215
|
+
try {
|
1216
|
+
this.uploader.uploadItem(this);
|
1217
|
+
} catch (e) {
|
1218
|
+
this.uploader._onCompleteItem(this, '', 0, []);
|
1219
|
+
this.uploader._onErrorItem(this, '', 0, []);
|
1411
1220
|
}
|
1412
|
-
}
|
1413
|
-
|
1221
|
+
};
|
1222
|
+
/**
|
1223
|
+
* Cancels uploading of FileItem
|
1224
|
+
*/
|
1225
|
+
|
1226
|
+
|
1227
|
+
FileItem.prototype.cancel = function cancel() {
|
1228
|
+
this.uploader.cancelItem(this);
|
1229
|
+
};
|
1230
|
+
/**
|
1231
|
+
* Removes a FileItem
|
1232
|
+
*/
|
1233
|
+
|
1234
|
+
|
1235
|
+
FileItem.prototype.remove = function remove() {
|
1236
|
+
this.uploader.removeFromQueue(this);
|
1237
|
+
};
|
1238
|
+
/**
|
1239
|
+
* Callback
|
1240
|
+
* @private
|
1241
|
+
*/
|
1242
|
+
|
1243
|
+
|
1244
|
+
FileItem.prototype.onBeforeUpload = function onBeforeUpload() {};
|
1245
|
+
/**
|
1246
|
+
* Callback
|
1247
|
+
* @param {Number} progress
|
1248
|
+
* @private
|
1249
|
+
*/
|
1250
|
+
|
1251
|
+
|
1252
|
+
FileItem.prototype.onProgress = function onProgress(progress) {};
|
1253
|
+
/**
|
1254
|
+
* Callback
|
1255
|
+
* @param {*} response
|
1256
|
+
* @param {Number} status
|
1257
|
+
* @param {Object} headers
|
1258
|
+
*/
|
1259
|
+
|
1260
|
+
|
1261
|
+
FileItem.prototype.onSuccess = function onSuccess(response, status, headers) {};
|
1262
|
+
/**
|
1263
|
+
* Callback
|
1264
|
+
* @param {*} response
|
1265
|
+
* @param {Number} status
|
1266
|
+
* @param {Object} headers
|
1267
|
+
*/
|
1268
|
+
|
1269
|
+
|
1270
|
+
FileItem.prototype.onError = function onError(response, status, headers) {};
|
1271
|
+
/**
|
1272
|
+
* Callback
|
1273
|
+
* @param {*} response
|
1274
|
+
* @param {Number} status
|
1275
|
+
* @param {Object} headers
|
1276
|
+
*/
|
1277
|
+
|
1278
|
+
|
1279
|
+
FileItem.prototype.onCancel = function onCancel(response, status, headers) {};
|
1280
|
+
/**
|
1281
|
+
* Callback
|
1282
|
+
* @param {*} response
|
1283
|
+
* @param {Number} status
|
1284
|
+
* @param {Object} headers
|
1285
|
+
*/
|
1286
|
+
|
1287
|
+
|
1288
|
+
FileItem.prototype.onComplete = function onComplete(response, status, headers) {};
|
1289
|
+
/**********************
|
1290
|
+
* PRIVATE
|
1291
|
+
**********************/
|
1292
|
+
/**
|
1293
|
+
* Inner callback
|
1294
|
+
*/
|
1295
|
+
|
1296
|
+
|
1297
|
+
FileItem.prototype._onBeforeUpload = function _onBeforeUpload() {
|
1298
|
+
this.isReady = true;
|
1299
|
+
this.isUploading = false;
|
1300
|
+
this.isUploaded = false;
|
1301
|
+
this.isSuccess = false;
|
1302
|
+
this.isCancel = false;
|
1303
|
+
this.isError = false;
|
1304
|
+
this.progress = 0;
|
1305
|
+
this.onBeforeUpload();
|
1306
|
+
};
|
1307
|
+
/**
|
1308
|
+
* Inner callback
|
1309
|
+
* @param {Number} progress
|
1310
|
+
* @private
|
1311
|
+
*/
|
1312
|
+
|
1313
|
+
|
1314
|
+
FileItem.prototype._onProgress = function _onProgress(progress) {
|
1315
|
+
this.progress = progress;
|
1316
|
+
this.onProgress(progress);
|
1317
|
+
};
|
1318
|
+
/**
|
1319
|
+
* Inner callback
|
1320
|
+
* @param {*} response
|
1321
|
+
* @param {Number} status
|
1322
|
+
* @param {Object} headers
|
1323
|
+
* @private
|
1324
|
+
*/
|
1325
|
+
|
1326
|
+
|
1327
|
+
FileItem.prototype._onSuccess = function _onSuccess(response, status, headers) {
|
1328
|
+
this.isReady = false;
|
1329
|
+
this.isUploading = false;
|
1330
|
+
this.isUploaded = true;
|
1331
|
+
this.isSuccess = true;
|
1332
|
+
this.isCancel = false;
|
1333
|
+
this.isError = false;
|
1334
|
+
this.progress = 100;
|
1335
|
+
this.index = null;
|
1336
|
+
this.onSuccess(response, status, headers);
|
1337
|
+
};
|
1338
|
+
/**
|
1339
|
+
* Inner callback
|
1340
|
+
* @param {*} response
|
1341
|
+
* @param {Number} status
|
1342
|
+
* @param {Object} headers
|
1343
|
+
* @private
|
1344
|
+
*/
|
1345
|
+
|
1346
|
+
|
1347
|
+
FileItem.prototype._onError = function _onError(response, status, headers) {
|
1348
|
+
this.isReady = false;
|
1349
|
+
this.isUploading = false;
|
1350
|
+
this.isUploaded = true;
|
1351
|
+
this.isSuccess = false;
|
1352
|
+
this.isCancel = false;
|
1353
|
+
this.isError = true;
|
1354
|
+
this.progress = 0;
|
1355
|
+
this.index = null;
|
1356
|
+
this.onError(response, status, headers);
|
1357
|
+
};
|
1358
|
+
/**
|
1359
|
+
* Inner callback
|
1360
|
+
* @param {*} response
|
1361
|
+
* @param {Number} status
|
1362
|
+
* @param {Object} headers
|
1363
|
+
* @private
|
1364
|
+
*/
|
1365
|
+
|
1366
|
+
|
1367
|
+
FileItem.prototype._onCancel = function _onCancel(response, status, headers) {
|
1368
|
+
this.isReady = false;
|
1369
|
+
this.isUploading = false;
|
1370
|
+
this.isUploaded = false;
|
1371
|
+
this.isSuccess = false;
|
1372
|
+
this.isCancel = true;
|
1373
|
+
this.isError = false;
|
1374
|
+
this.progress = 0;
|
1375
|
+
this.index = null;
|
1376
|
+
this.onCancel(response, status, headers);
|
1377
|
+
};
|
1378
|
+
/**
|
1379
|
+
* Inner callback
|
1380
|
+
* @param {*} response
|
1381
|
+
* @param {Number} status
|
1382
|
+
* @param {Object} headers
|
1383
|
+
* @private
|
1384
|
+
*/
|
1385
|
+
|
1386
|
+
|
1387
|
+
FileItem.prototype._onComplete = function _onComplete(response, status, headers) {
|
1388
|
+
this.onComplete(response, status, headers);
|
1389
|
+
if (this.removeAfterUpload) this.remove();
|
1390
|
+
};
|
1391
|
+
/**
|
1392
|
+
* Destroys a FileItem
|
1393
|
+
*/
|
1394
|
+
|
1395
|
+
|
1396
|
+
FileItem.prototype._destroy = function _destroy() {
|
1397
|
+
if (this._input) this._input.remove();
|
1398
|
+
if (this._form) this._form.remove();
|
1399
|
+
delete this._form;
|
1400
|
+
delete this._input;
|
1401
|
+
};
|
1402
|
+
/**
|
1403
|
+
* Prepares to uploading
|
1404
|
+
* @private
|
1405
|
+
*/
|
1406
|
+
|
1407
|
+
|
1408
|
+
FileItem.prototype._prepareToUploading = function _prepareToUploading() {
|
1409
|
+
this.index = this.index || ++this.uploader._nextIndex;
|
1410
|
+
this.isReady = true;
|
1411
|
+
};
|
1412
|
+
/**
|
1413
|
+
* Replaces input element on his clone
|
1414
|
+
* @param {JQLite|jQuery} input
|
1415
|
+
* @private
|
1416
|
+
*/
|
1417
|
+
|
1418
|
+
|
1419
|
+
FileItem.prototype._replaceNode = function _replaceNode(input) {
|
1420
|
+
var clone = $compile(input.clone())(input.scope());
|
1421
|
+
clone.prop('value', null); // FF fix
|
1422
|
+
input.css('display', 'none');
|
1423
|
+
input.after(clone); // remove jquery dependency
|
1424
|
+
};
|
1425
|
+
|
1414
1426
|
return FileItem;
|
1415
|
-
}
|
1416
|
-
|
1417
|
-
|
1418
|
-
|
1419
|
-
|
1420
|
-
module.exports.$inject = ["$compile", "FileLikeObject"];
|
1427
|
+
}();
|
1428
|
+
}
|
1429
|
+
|
1430
|
+
__identity.$inject = ['$compile', 'FileLikeObject'];
|
1421
1431
|
|
1422
1432
|
/***/ },
|
1423
1433
|
/* 6 */
|
1424
1434
|
/***/ function(module, exports, __webpack_require__) {
|
1425
1435
|
|
1426
|
-
|
1427
|
-
|
1428
|
-
|
1429
|
-
|
1430
|
-
|
1431
|
-
|
1432
|
-
|
1433
|
-
|
1434
|
-
|
1435
|
-
|
1436
|
-
|
1437
|
-
|
1438
|
-
|
1439
|
-
|
1436
|
+
'use strict';
|
1437
|
+
|
1438
|
+
Object.defineProperty(exports, "__esModule", {
|
1439
|
+
value: true
|
1440
|
+
});
|
1441
|
+
exports.default = __identity;
|
1442
|
+
|
1443
|
+
var _config = __webpack_require__(1);
|
1444
|
+
|
1445
|
+
var _config2 = _interopRequireDefault(_config);
|
1446
|
+
|
1447
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
1448
|
+
|
1449
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
1450
|
+
|
1451
|
+
var _angular = angular;
|
1452
|
+
var extend = _angular.extend;
|
1453
|
+
function __identity() {
|
1454
|
+
var FileDirective = function () {
|
1440
1455
|
/**
|
1441
1456
|
* Creates instance of {FileDirective} object
|
1442
1457
|
* @param {Object} options
|
@@ -1446,551 +1461,625 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
1446
1461
|
* @param {String} options.prop
|
1447
1462
|
* @constructor
|
1448
1463
|
*/
|
1449
|
-
|
1464
|
+
|
1450
1465
|
function FileDirective(options) {
|
1451
1466
|
_classCallCheck(this, FileDirective);
|
1452
|
-
|
1467
|
+
|
1453
1468
|
extend(this, options);
|
1454
1469
|
this.uploader._directives[this.prop].push(this);
|
1455
1470
|
this._saveLinks();
|
1456
1471
|
this.bind();
|
1457
1472
|
}
|
1458
|
-
|
1459
|
-
|
1460
|
-
|
1461
|
-
|
1462
|
-
|
1463
|
-
|
1464
|
-
|
1465
|
-
|
1466
|
-
|
1467
|
-
var prop = this.events[key];
|
1468
|
-
this.element.bind(key, this[prop]);
|
1469
|
-
}
|
1470
|
-
}
|
1471
|
-
},
|
1472
|
-
unbind: {
|
1473
|
-
/**
|
1474
|
-
* Unbinds events handles
|
1475
|
-
*/
|
1476
|
-
|
1477
|
-
value: function unbind() {
|
1478
|
-
for (var key in this.events) {
|
1479
|
-
this.element.unbind(key, this.events[key]);
|
1480
|
-
}
|
1481
|
-
}
|
1482
|
-
},
|
1483
|
-
destroy: {
|
1484
|
-
/**
|
1485
|
-
* Destroys directive
|
1486
|
-
*/
|
1487
|
-
|
1488
|
-
value: function destroy() {
|
1489
|
-
var index = this.uploader._directives[this.prop].indexOf(this);
|
1490
|
-
this.uploader._directives[this.prop].splice(index, 1);
|
1491
|
-
this.unbind();
|
1492
|
-
// this.element = null;
|
1493
|
-
}
|
1494
|
-
},
|
1495
|
-
_saveLinks: {
|
1496
|
-
/**
|
1497
|
-
* Saves links to functions
|
1498
|
-
* @private
|
1499
|
-
*/
|
1500
|
-
|
1501
|
-
value: function _saveLinks() {
|
1502
|
-
for (var key in this.events) {
|
1503
|
-
var prop = this.events[key];
|
1504
|
-
this[prop] = this[prop].bind(this);
|
1505
|
-
}
|
1506
|
-
}
|
1473
|
+
/**
|
1474
|
+
* Binds events handles
|
1475
|
+
*/
|
1476
|
+
|
1477
|
+
|
1478
|
+
FileDirective.prototype.bind = function bind() {
|
1479
|
+
for (var key in this.events) {
|
1480
|
+
var prop = this.events[key];
|
1481
|
+
this.element.bind(key, this[prop]);
|
1507
1482
|
}
|
1508
|
-
}
|
1509
|
-
|
1483
|
+
};
|
1484
|
+
/**
|
1485
|
+
* Unbinds events handles
|
1486
|
+
*/
|
1487
|
+
|
1488
|
+
|
1489
|
+
FileDirective.prototype.unbind = function unbind() {
|
1490
|
+
for (var key in this.events) {
|
1491
|
+
this.element.unbind(key, this.events[key]);
|
1492
|
+
}
|
1493
|
+
};
|
1494
|
+
/**
|
1495
|
+
* Destroys directive
|
1496
|
+
*/
|
1497
|
+
|
1498
|
+
|
1499
|
+
FileDirective.prototype.destroy = function destroy() {
|
1500
|
+
var index = this.uploader._directives[this.prop].indexOf(this);
|
1501
|
+
this.uploader._directives[this.prop].splice(index, 1);
|
1502
|
+
this.unbind();
|
1503
|
+
// this.element = null;
|
1504
|
+
};
|
1505
|
+
/**
|
1506
|
+
* Saves links to functions
|
1507
|
+
* @private
|
1508
|
+
*/
|
1509
|
+
|
1510
|
+
|
1511
|
+
FileDirective.prototype._saveLinks = function _saveLinks() {
|
1512
|
+
for (var key in this.events) {
|
1513
|
+
var prop = this.events[key];
|
1514
|
+
this[prop] = this[prop].bind(this);
|
1515
|
+
}
|
1516
|
+
};
|
1517
|
+
|
1510
1518
|
return FileDirective;
|
1511
|
-
}
|
1512
|
-
|
1519
|
+
}();
|
1520
|
+
|
1513
1521
|
/**
|
1514
1522
|
* Map of events
|
1515
1523
|
* @type {Object}
|
1516
1524
|
*/
|
1525
|
+
|
1526
|
+
|
1517
1527
|
FileDirective.prototype.events = {};
|
1518
|
-
|
1528
|
+
|
1519
1529
|
return FileDirective;
|
1520
|
-
}
|
1521
|
-
|
1522
|
-
module.exports.$inject = [];
|
1530
|
+
}
|
1523
1531
|
|
1524
1532
|
/***/ },
|
1525
1533
|
/* 7 */
|
1526
1534
|
/***/ function(module, exports, __webpack_require__) {
|
1527
1535
|
|
1528
|
-
|
1529
|
-
|
1530
|
-
|
1531
|
-
|
1532
|
-
|
1533
|
-
|
1534
|
-
|
1535
|
-
|
1536
|
-
|
1537
|
-
|
1538
|
-
|
1539
|
-
|
1540
|
-
|
1541
|
-
|
1542
|
-
|
1543
|
-
|
1544
|
-
|
1545
|
-
|
1536
|
+
'use strict';
|
1537
|
+
|
1538
|
+
Object.defineProperty(exports, "__esModule", {
|
1539
|
+
value: true
|
1540
|
+
});
|
1541
|
+
exports.default = __identity;
|
1542
|
+
|
1543
|
+
var _config = __webpack_require__(1);
|
1544
|
+
|
1545
|
+
var _config2 = _interopRequireDefault(_config);
|
1546
|
+
|
1547
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
1548
|
+
|
1549
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
1550
|
+
|
1551
|
+
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
1552
|
+
|
1553
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
1554
|
+
|
1555
|
+
var _angular = angular;
|
1556
|
+
var extend = _angular.extend;
|
1557
|
+
function __identity($compile, FileDirective) {
|
1558
|
+
|
1559
|
+
return function (_FileDirective) {
|
1560
|
+
_inherits(FileSelect, _FileDirective);
|
1561
|
+
|
1546
1562
|
/**
|
1547
1563
|
* Creates instance of {FileSelect} object
|
1548
1564
|
* @param {Object} options
|
1549
1565
|
* @constructor
|
1550
1566
|
*/
|
1551
|
-
|
1567
|
+
|
1552
1568
|
function FileSelect(options) {
|
1553
1569
|
_classCallCheck(this, FileSelect);
|
1554
|
-
|
1570
|
+
|
1555
1571
|
var extendedOptions = extend(options, {
|
1556
1572
|
// Map of events
|
1557
1573
|
events: {
|
1558
|
-
$destroy:
|
1559
|
-
change:
|
1574
|
+
$destroy: 'destroy',
|
1575
|
+
change: 'onChange'
|
1560
1576
|
},
|
1561
1577
|
// Name of property inside uploader._directive object
|
1562
|
-
prop:
|
1578
|
+
prop: 'select'
|
1563
1579
|
});
|
1564
|
-
|
1565
|
-
|
1566
|
-
|
1567
|
-
if (!
|
1568
|
-
|
1580
|
+
|
1581
|
+
var _this = _possibleConstructorReturn(this, _FileDirective.call(this, extendedOptions));
|
1582
|
+
|
1583
|
+
if (!_this.uploader.isHTML5) {
|
1584
|
+
_this.element.removeAttr('multiple');
|
1569
1585
|
}
|
1570
|
-
|
1586
|
+
_this.element.prop('value', null); // FF fix
|
1587
|
+
return _this;
|
1571
1588
|
}
|
1572
|
-
|
1573
|
-
|
1574
|
-
|
1575
|
-
|
1576
|
-
|
1577
|
-
|
1578
|
-
|
1579
|
-
|
1580
|
-
|
1581
|
-
|
1582
|
-
|
1583
|
-
|
1584
|
-
|
1585
|
-
|
1586
|
-
|
1587
|
-
|
1588
|
-
|
1589
|
-
|
1590
|
-
|
1591
|
-
|
1592
|
-
|
1593
|
-
|
1594
|
-
|
1595
|
-
|
1596
|
-
|
1597
|
-
|
1598
|
-
|
1599
|
-
|
1600
|
-
|
1601
|
-
|
1602
|
-
|
1603
|
-
|
1604
|
-
|
1605
|
-
|
1606
|
-
|
1607
|
-
|
1608
|
-
|
1609
|
-
|
1610
|
-
var filters = this.getFilters();
|
1611
|
-
|
1612
|
-
if (!this.uploader.isHTML5) this.destroy();
|
1613
|
-
this.uploader.addToQueue(files, options, filters);
|
1614
|
-
if (this.isEmptyAfterSelection()) {
|
1615
|
-
this.element.prop("value", null);
|
1616
|
-
this.element.replaceWith(this.element = this.element.clone(true)); // IE fix
|
1617
|
-
}
|
1618
|
-
}
|
1589
|
+
/**
|
1590
|
+
* Returns options
|
1591
|
+
* @return {Object|undefined}
|
1592
|
+
*/
|
1593
|
+
|
1594
|
+
|
1595
|
+
FileSelect.prototype.getOptions = function getOptions() {};
|
1596
|
+
/**
|
1597
|
+
* Returns filters
|
1598
|
+
* @return {Array<Function>|String|undefined}
|
1599
|
+
*/
|
1600
|
+
|
1601
|
+
|
1602
|
+
FileSelect.prototype.getFilters = function getFilters() {};
|
1603
|
+
/**
|
1604
|
+
* If returns "true" then HTMLInputElement will be cleared
|
1605
|
+
* @returns {Boolean}
|
1606
|
+
*/
|
1607
|
+
|
1608
|
+
|
1609
|
+
FileSelect.prototype.isEmptyAfterSelection = function isEmptyAfterSelection() {
|
1610
|
+
return !!this.element.attr('multiple');
|
1611
|
+
};
|
1612
|
+
/**
|
1613
|
+
* Event handler
|
1614
|
+
*/
|
1615
|
+
|
1616
|
+
|
1617
|
+
FileSelect.prototype.onChange = function onChange() {
|
1618
|
+
var files = this.uploader.isHTML5 ? this.element[0].files : this.element[0];
|
1619
|
+
var options = this.getOptions();
|
1620
|
+
var filters = this.getFilters();
|
1621
|
+
|
1622
|
+
if (!this.uploader.isHTML5) this.destroy();
|
1623
|
+
this.uploader.addToQueue(files, options, filters);
|
1624
|
+
if (this.isEmptyAfterSelection()) {
|
1625
|
+
this.element.prop('value', null);
|
1626
|
+
this.element.replaceWith($compile(this.element.clone())(this.scope)); // IE fix
|
1619
1627
|
}
|
1620
|
-
}
|
1621
|
-
|
1628
|
+
};
|
1629
|
+
|
1622
1630
|
return FileSelect;
|
1623
|
-
}
|
1624
|
-
|
1625
|
-
|
1626
|
-
|
1627
|
-
|
1628
|
-
module.exports.$inject = ["FileDirective"];
|
1631
|
+
}(FileDirective);
|
1632
|
+
}
|
1633
|
+
|
1634
|
+
__identity.$inject = ['$compile', 'FileDirective'];
|
1629
1635
|
|
1630
1636
|
/***/ },
|
1631
1637
|
/* 8 */
|
1632
|
-
/***/ function(module, exports
|
1633
|
-
|
1634
|
-
"use strict";
|
1635
|
-
|
1636
|
-
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
1637
|
-
|
1638
|
-
var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
1639
|
-
|
1640
|
-
var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
1641
|
-
|
1642
|
-
var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
|
1643
|
-
|
1644
|
-
var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
|
1638
|
+
/***/ function(module, exports) {
|
1645
1639
|
|
1646
|
-
|
1640
|
+
'use strict';
|
1641
|
+
|
1642
|
+
Object.defineProperty(exports, "__esModule", {
|
1643
|
+
value: true
|
1644
|
+
});
|
1645
|
+
exports.default = __identity;
|
1646
|
+
|
1647
|
+
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
|
1648
|
+
|
1649
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
1650
|
+
|
1651
|
+
var _angular = angular;
|
1652
|
+
var bind = _angular.bind;
|
1653
|
+
var isUndefined = _angular.isUndefined;
|
1654
|
+
function __identity($q) {
|
1655
|
+
|
1656
|
+
return function () {
|
1657
|
+
/**
|
1658
|
+
* @param {Array<Function>} pipes
|
1659
|
+
*/
|
1660
|
+
|
1661
|
+
function Pipeline() {
|
1662
|
+
var pipes = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0];
|
1663
|
+
|
1664
|
+
_classCallCheck(this, Pipeline);
|
1665
|
+
|
1666
|
+
this.pipes = pipes;
|
1667
|
+
}
|
1668
|
+
|
1669
|
+
Pipeline.prototype.next = function next(args) {
|
1670
|
+
var pipe = this.pipes.shift();
|
1671
|
+
if (isUndefined(pipe)) {
|
1672
|
+
this.onSuccessful.apply(this, _toConsumableArray(args));
|
1673
|
+
return;
|
1674
|
+
}
|
1675
|
+
var err = new Error('The filter has not passed');
|
1676
|
+
err.pipe = pipe;
|
1677
|
+
err.args = args;
|
1678
|
+
if (pipe.isAsync) {
|
1679
|
+
var deferred = $q.defer();
|
1680
|
+
var onFulfilled = bind(this, this.next, args);
|
1681
|
+
var onRejected = bind(this, this.onThrown, err);
|
1682
|
+
deferred.promise.then(onFulfilled, onRejected);
|
1683
|
+
pipe.apply(undefined, _toConsumableArray(args).concat([deferred]));
|
1684
|
+
} else {
|
1685
|
+
var isDone = Boolean(pipe.apply(undefined, _toConsumableArray(args)));
|
1686
|
+
if (isDone) {
|
1687
|
+
this.next(args);
|
1688
|
+
} else {
|
1689
|
+
this.onThrown(err);
|
1690
|
+
}
|
1691
|
+
}
|
1692
|
+
};
|
1693
|
+
|
1694
|
+
Pipeline.prototype.exec = function exec() {
|
1695
|
+
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
1696
|
+
args[_key] = arguments[_key];
|
1697
|
+
}
|
1698
|
+
|
1699
|
+
this.next(args);
|
1700
|
+
};
|
1701
|
+
|
1702
|
+
Pipeline.prototype.onThrown = function onThrown(err) {};
|
1703
|
+
|
1704
|
+
Pipeline.prototype.onSuccessful = function onSuccessful() {};
|
1705
|
+
|
1706
|
+
return Pipeline;
|
1707
|
+
}();
|
1708
|
+
}
|
1709
|
+
|
1710
|
+
__identity.$inject = ['$q'];
|
1647
1711
|
|
1648
|
-
|
1649
|
-
|
1712
|
+
/***/ },
|
1713
|
+
/* 9 */
|
1714
|
+
/***/ function(module, exports, __webpack_require__) {
|
1650
1715
|
|
1651
|
-
|
1652
|
-
|
1716
|
+
'use strict';
|
1717
|
+
|
1718
|
+
Object.defineProperty(exports, "__esModule", {
|
1719
|
+
value: true
|
1720
|
+
});
|
1721
|
+
exports.default = __identity;
|
1722
|
+
|
1723
|
+
var _config = __webpack_require__(1);
|
1724
|
+
|
1725
|
+
var _config2 = _interopRequireDefault(_config);
|
1726
|
+
|
1727
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
1728
|
+
|
1729
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
1730
|
+
|
1731
|
+
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
1732
|
+
|
1733
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
1734
|
+
|
1735
|
+
var _angular = angular;
|
1736
|
+
var extend = _angular.extend;
|
1737
|
+
var forEach = _angular.forEach;
|
1738
|
+
function __identity(FileDirective) {
|
1739
|
+
|
1740
|
+
return function (_FileDirective) {
|
1741
|
+
_inherits(FileDrop, _FileDirective);
|
1742
|
+
|
1653
1743
|
/**
|
1654
1744
|
* Creates instance of {FileDrop} object
|
1655
1745
|
* @param {Object} options
|
1656
1746
|
* @constructor
|
1657
1747
|
*/
|
1658
|
-
|
1748
|
+
|
1659
1749
|
function FileDrop(options) {
|
1660
1750
|
_classCallCheck(this, FileDrop);
|
1661
|
-
|
1751
|
+
|
1662
1752
|
var extendedOptions = extend(options, {
|
1663
1753
|
// Map of events
|
1664
1754
|
events: {
|
1665
|
-
$destroy:
|
1666
|
-
drop:
|
1667
|
-
dragover:
|
1668
|
-
dragleave:
|
1755
|
+
$destroy: 'destroy',
|
1756
|
+
drop: 'onDrop',
|
1757
|
+
dragover: 'onDragOver',
|
1758
|
+
dragleave: 'onDragLeave'
|
1669
1759
|
},
|
1670
1760
|
// Name of property inside uploader._directive object
|
1671
|
-
prop:
|
1761
|
+
prop: 'drop'
|
1672
1762
|
});
|
1673
|
-
|
1674
|
-
|
1763
|
+
|
1764
|
+
return _possibleConstructorReturn(this, _FileDirective.call(this, extendedOptions));
|
1675
1765
|
}
|
1676
|
-
|
1677
|
-
|
1678
|
-
|
1679
|
-
|
1680
|
-
|
1681
|
-
|
1682
|
-
|
1683
|
-
|
1684
|
-
|
1685
|
-
|
1686
|
-
|
1687
|
-
|
1688
|
-
|
1689
|
-
|
1690
|
-
|
1691
|
-
|
1692
|
-
|
1693
|
-
|
1694
|
-
|
1695
|
-
|
1696
|
-
|
1697
|
-
|
1698
|
-
|
1699
|
-
|
1700
|
-
|
1701
|
-
|
1702
|
-
|
1703
|
-
|
1704
|
-
|
1705
|
-
|
1706
|
-
|
1707
|
-
|
1708
|
-
|
1709
|
-
|
1710
|
-
|
1711
|
-
|
1712
|
-
|
1713
|
-
|
1714
|
-
|
1715
|
-
|
1716
|
-
|
1717
|
-
|
1718
|
-
|
1719
|
-
|
1720
|
-
|
1721
|
-
|
1722
|
-
|
1723
|
-
|
1724
|
-
|
1725
|
-
|
1726
|
-
|
1727
|
-
|
1728
|
-
|
1729
|
-
|
1730
|
-
|
1731
|
-
|
1732
|
-
|
1733
|
-
|
1734
|
-
|
1735
|
-
|
1736
|
-
|
1737
|
-
|
1738
|
-
|
1739
|
-
|
1740
|
-
|
1741
|
-
|
1742
|
-
|
1743
|
-
|
1744
|
-
|
1745
|
-
|
1746
|
-
|
1747
|
-
|
1748
|
-
|
1749
|
-
|
1750
|
-
|
1751
|
-
|
1752
|
-
|
1753
|
-
|
1754
|
-
|
1755
|
-
|
1756
|
-
|
1757
|
-
_haveFiles: {
|
1758
|
-
/**
|
1759
|
-
* Returns "true" if types contains files
|
1760
|
-
* @param {Object} types
|
1761
|
-
*/
|
1762
|
-
|
1763
|
-
value: function _haveFiles(types) {
|
1764
|
-
if (!types) {
|
1765
|
-
return false;
|
1766
|
-
}if (types.indexOf) {
|
1767
|
-
return types.indexOf("Files") !== -1;
|
1768
|
-
} else if (types.contains) {
|
1769
|
-
return types.contains("Files");
|
1770
|
-
} else {
|
1771
|
-
return false;
|
1772
|
-
}
|
1773
|
-
}
|
1774
|
-
},
|
1775
|
-
_addOverClass: {
|
1776
|
-
/**
|
1777
|
-
* Callback
|
1778
|
-
*/
|
1779
|
-
|
1780
|
-
value: function _addOverClass(item) {
|
1781
|
-
item.addOverClass();
|
1782
|
-
}
|
1783
|
-
},
|
1784
|
-
_removeOverClass: {
|
1785
|
-
/**
|
1786
|
-
* Callback
|
1787
|
-
*/
|
1788
|
-
|
1789
|
-
value: function _removeOverClass(item) {
|
1790
|
-
item.removeOverClass();
|
1791
|
-
}
|
1766
|
+
/**
|
1767
|
+
* Returns options
|
1768
|
+
* @return {Object|undefined}
|
1769
|
+
*/
|
1770
|
+
|
1771
|
+
|
1772
|
+
FileDrop.prototype.getOptions = function getOptions() {};
|
1773
|
+
/**
|
1774
|
+
* Returns filters
|
1775
|
+
* @return {Array<Function>|String|undefined}
|
1776
|
+
*/
|
1777
|
+
|
1778
|
+
|
1779
|
+
FileDrop.prototype.getFilters = function getFilters() {};
|
1780
|
+
/**
|
1781
|
+
* Event handler
|
1782
|
+
*/
|
1783
|
+
|
1784
|
+
|
1785
|
+
FileDrop.prototype.onDrop = function onDrop(event) {
|
1786
|
+
var transfer = this._getTransfer(event);
|
1787
|
+
if (!transfer) return;
|
1788
|
+
var options = this.getOptions();
|
1789
|
+
var filters = this.getFilters();
|
1790
|
+
this._preventAndStop(event);
|
1791
|
+
forEach(this.uploader._directives.over, this._removeOverClass, this);
|
1792
|
+
this.uploader.addToQueue(transfer.files, options, filters);
|
1793
|
+
};
|
1794
|
+
/**
|
1795
|
+
* Event handler
|
1796
|
+
*/
|
1797
|
+
|
1798
|
+
|
1799
|
+
FileDrop.prototype.onDragOver = function onDragOver(event) {
|
1800
|
+
var transfer = this._getTransfer(event);
|
1801
|
+
if (!this._haveFiles(transfer.types)) return;
|
1802
|
+
transfer.dropEffect = 'copy';
|
1803
|
+
this._preventAndStop(event);
|
1804
|
+
forEach(this.uploader._directives.over, this._addOverClass, this);
|
1805
|
+
};
|
1806
|
+
/**
|
1807
|
+
* Event handler
|
1808
|
+
*/
|
1809
|
+
|
1810
|
+
|
1811
|
+
FileDrop.prototype.onDragLeave = function onDragLeave(event) {
|
1812
|
+
if (event.currentTarget === this.element[0]) return;
|
1813
|
+
this._preventAndStop(event);
|
1814
|
+
forEach(this.uploader._directives.over, this._removeOverClass, this);
|
1815
|
+
};
|
1816
|
+
/**
|
1817
|
+
* Helper
|
1818
|
+
*/
|
1819
|
+
|
1820
|
+
|
1821
|
+
FileDrop.prototype._getTransfer = function _getTransfer(event) {
|
1822
|
+
return event.dataTransfer ? event.dataTransfer : event.originalEvent.dataTransfer; // jQuery fix;
|
1823
|
+
};
|
1824
|
+
/**
|
1825
|
+
* Helper
|
1826
|
+
*/
|
1827
|
+
|
1828
|
+
|
1829
|
+
FileDrop.prototype._preventAndStop = function _preventAndStop(event) {
|
1830
|
+
event.preventDefault();
|
1831
|
+
event.stopPropagation();
|
1832
|
+
};
|
1833
|
+
/**
|
1834
|
+
* Returns "true" if types contains files
|
1835
|
+
* @param {Object} types
|
1836
|
+
*/
|
1837
|
+
|
1838
|
+
|
1839
|
+
FileDrop.prototype._haveFiles = function _haveFiles(types) {
|
1840
|
+
if (!types) return false;
|
1841
|
+
if (types.indexOf) {
|
1842
|
+
return types.indexOf('Files') !== -1;
|
1843
|
+
} else if (types.contains) {
|
1844
|
+
return types.contains('Files');
|
1845
|
+
} else {
|
1846
|
+
return false;
|
1792
1847
|
}
|
1793
|
-
}
|
1794
|
-
|
1848
|
+
};
|
1849
|
+
/**
|
1850
|
+
* Callback
|
1851
|
+
*/
|
1852
|
+
|
1853
|
+
|
1854
|
+
FileDrop.prototype._addOverClass = function _addOverClass(item) {
|
1855
|
+
item.addOverClass();
|
1856
|
+
};
|
1857
|
+
/**
|
1858
|
+
* Callback
|
1859
|
+
*/
|
1860
|
+
|
1861
|
+
|
1862
|
+
FileDrop.prototype._removeOverClass = function _removeOverClass(item) {
|
1863
|
+
item.removeOverClass();
|
1864
|
+
};
|
1865
|
+
|
1795
1866
|
return FileDrop;
|
1796
|
-
}
|
1797
|
-
|
1798
|
-
|
1799
|
-
|
1800
|
-
|
1801
|
-
module.exports.$inject = ["FileDirective"];
|
1867
|
+
}(FileDirective);
|
1868
|
+
}
|
1869
|
+
|
1870
|
+
__identity.$inject = ['FileDirective'];
|
1802
1871
|
|
1803
1872
|
/***/ },
|
1804
|
-
/*
|
1873
|
+
/* 10 */
|
1805
1874
|
/***/ function(module, exports, __webpack_require__) {
|
1806
1875
|
|
1807
|
-
|
1808
|
-
|
1809
|
-
|
1810
|
-
|
1811
|
-
|
1812
|
-
|
1813
|
-
|
1814
|
-
|
1815
|
-
|
1816
|
-
|
1817
|
-
|
1818
|
-
|
1819
|
-
|
1820
|
-
|
1821
|
-
|
1822
|
-
|
1823
|
-
|
1824
|
-
|
1876
|
+
'use strict';
|
1877
|
+
|
1878
|
+
Object.defineProperty(exports, "__esModule", {
|
1879
|
+
value: true
|
1880
|
+
});
|
1881
|
+
exports.default = __identity;
|
1882
|
+
|
1883
|
+
var _config = __webpack_require__(1);
|
1884
|
+
|
1885
|
+
var _config2 = _interopRequireDefault(_config);
|
1886
|
+
|
1887
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
1888
|
+
|
1889
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
1890
|
+
|
1891
|
+
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
1892
|
+
|
1893
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
1894
|
+
|
1895
|
+
var _angular = angular;
|
1896
|
+
var extend = _angular.extend;
|
1897
|
+
function __identity(FileDirective) {
|
1898
|
+
|
1899
|
+
return function (_FileDirective) {
|
1900
|
+
_inherits(FileOver, _FileDirective);
|
1901
|
+
|
1825
1902
|
/**
|
1826
1903
|
* Creates instance of {FileDrop} object
|
1827
1904
|
* @param {Object} options
|
1828
1905
|
* @constructor
|
1829
1906
|
*/
|
1830
|
-
|
1907
|
+
|
1831
1908
|
function FileOver(options) {
|
1832
1909
|
_classCallCheck(this, FileOver);
|
1833
|
-
|
1910
|
+
|
1834
1911
|
var extendedOptions = extend(options, {
|
1835
1912
|
// Map of events
|
1836
1913
|
events: {
|
1837
|
-
$destroy:
|
1914
|
+
$destroy: 'destroy'
|
1838
1915
|
},
|
1839
1916
|
// Name of property inside uploader._directive object
|
1840
|
-
prop:
|
1917
|
+
prop: 'over',
|
1841
1918
|
// Over class
|
1842
|
-
overClass:
|
1919
|
+
overClass: 'nv-file-over'
|
1843
1920
|
});
|
1844
|
-
|
1845
|
-
|
1921
|
+
|
1922
|
+
return _possibleConstructorReturn(this, _FileDirective.call(this, extendedOptions));
|
1846
1923
|
}
|
1847
|
-
|
1848
|
-
|
1849
|
-
|
1850
|
-
|
1851
|
-
|
1852
|
-
|
1853
|
-
|
1854
|
-
|
1855
|
-
|
1856
|
-
|
1857
|
-
|
1858
|
-
|
1859
|
-
|
1860
|
-
|
1861
|
-
|
1862
|
-
|
1863
|
-
|
1864
|
-
|
1865
|
-
|
1866
|
-
|
1867
|
-
|
1868
|
-
|
1869
|
-
|
1870
|
-
|
1871
|
-
|
1872
|
-
|
1873
|
-
*/
|
1874
|
-
|
1875
|
-
value: function getOverClass() {
|
1876
|
-
return this.overClass;
|
1877
|
-
}
|
1878
|
-
}
|
1879
|
-
});
|
1880
|
-
|
1924
|
+
/**
|
1925
|
+
* Adds over class
|
1926
|
+
*/
|
1927
|
+
|
1928
|
+
|
1929
|
+
FileOver.prototype.addOverClass = function addOverClass() {
|
1930
|
+
this.element.addClass(this.getOverClass());
|
1931
|
+
};
|
1932
|
+
/**
|
1933
|
+
* Removes over class
|
1934
|
+
*/
|
1935
|
+
|
1936
|
+
|
1937
|
+
FileOver.prototype.removeOverClass = function removeOverClass() {
|
1938
|
+
this.element.removeClass(this.getOverClass());
|
1939
|
+
};
|
1940
|
+
/**
|
1941
|
+
* Returns over class
|
1942
|
+
* @returns {String}
|
1943
|
+
*/
|
1944
|
+
|
1945
|
+
|
1946
|
+
FileOver.prototype.getOverClass = function getOverClass() {
|
1947
|
+
return this.overClass;
|
1948
|
+
};
|
1949
|
+
|
1881
1950
|
return FileOver;
|
1882
|
-
}
|
1883
|
-
|
1884
|
-
|
1885
|
-
|
1886
|
-
|
1887
|
-
module.exports.$inject = ["FileDirective"];
|
1951
|
+
}(FileDirective);
|
1952
|
+
}
|
1953
|
+
|
1954
|
+
__identity.$inject = ['FileDirective'];
|
1888
1955
|
|
1889
1956
|
/***/ },
|
1890
|
-
/*
|
1957
|
+
/* 11 */
|
1891
1958
|
/***/ function(module, exports, __webpack_require__) {
|
1892
1959
|
|
1893
|
-
|
1894
|
-
|
1895
|
-
|
1896
|
-
|
1897
|
-
|
1898
|
-
|
1899
|
-
|
1900
|
-
|
1960
|
+
'use strict';
|
1961
|
+
|
1962
|
+
Object.defineProperty(exports, "__esModule", {
|
1963
|
+
value: true
|
1964
|
+
});
|
1965
|
+
exports.default = __identity;
|
1966
|
+
|
1967
|
+
var _config = __webpack_require__(1);
|
1968
|
+
|
1969
|
+
var _config2 = _interopRequireDefault(_config);
|
1970
|
+
|
1971
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
1972
|
+
|
1973
|
+
function __identity($parse, FileUploader, FileSelect) {
|
1974
|
+
|
1901
1975
|
return {
|
1902
|
-
link: function (scope, element, attributes) {
|
1976
|
+
link: function link(scope, element, attributes) {
|
1903
1977
|
var uploader = scope.$eval(attributes.uploader);
|
1904
|
-
|
1978
|
+
|
1905
1979
|
if (!(uploader instanceof FileUploader)) {
|
1906
|
-
throw new TypeError("
|
1980
|
+
throw new TypeError('"Uploader" must be an instance of FileUploader');
|
1907
1981
|
}
|
1908
|
-
|
1982
|
+
|
1909
1983
|
var object = new FileSelect({
|
1910
1984
|
uploader: uploader,
|
1911
|
-
element: element
|
1985
|
+
element: element,
|
1986
|
+
scope: scope
|
1912
1987
|
});
|
1913
|
-
|
1988
|
+
|
1914
1989
|
object.getOptions = $parse(attributes.options).bind(object, scope);
|
1915
1990
|
object.getFilters = function () {
|
1916
1991
|
return attributes.filters;
|
1917
1992
|
};
|
1918
1993
|
}
|
1919
1994
|
};
|
1920
|
-
}
|
1921
|
-
|
1922
|
-
|
1995
|
+
}
|
1996
|
+
|
1997
|
+
__identity.$inject = ['$parse', 'FileUploader', 'FileSelect'];
|
1923
1998
|
|
1924
1999
|
/***/ },
|
1925
|
-
/*
|
2000
|
+
/* 12 */
|
1926
2001
|
/***/ function(module, exports, __webpack_require__) {
|
1927
2002
|
|
1928
|
-
|
1929
|
-
|
1930
|
-
|
1931
|
-
|
1932
|
-
|
1933
|
-
|
1934
|
-
|
1935
|
-
|
2003
|
+
'use strict';
|
2004
|
+
|
2005
|
+
Object.defineProperty(exports, "__esModule", {
|
2006
|
+
value: true
|
2007
|
+
});
|
2008
|
+
exports.default = __identity;
|
2009
|
+
|
2010
|
+
var _config = __webpack_require__(1);
|
2011
|
+
|
2012
|
+
var _config2 = _interopRequireDefault(_config);
|
2013
|
+
|
2014
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
2015
|
+
|
2016
|
+
function __identity($parse, FileUploader, FileDrop) {
|
2017
|
+
|
1936
2018
|
return {
|
1937
|
-
link: function (scope, element, attributes) {
|
2019
|
+
link: function link(scope, element, attributes) {
|
1938
2020
|
var uploader = scope.$eval(attributes.uploader);
|
1939
|
-
|
2021
|
+
|
1940
2022
|
if (!(uploader instanceof FileUploader)) {
|
1941
|
-
throw new TypeError("
|
2023
|
+
throw new TypeError('"Uploader" must be an instance of FileUploader');
|
1942
2024
|
}
|
1943
|
-
|
2025
|
+
|
1944
2026
|
if (!uploader.isHTML5) return;
|
1945
|
-
|
2027
|
+
|
1946
2028
|
var object = new FileDrop({
|
1947
2029
|
uploader: uploader,
|
1948
2030
|
element: element
|
1949
2031
|
});
|
1950
|
-
|
2032
|
+
|
1951
2033
|
object.getOptions = $parse(attributes.options).bind(object, scope);
|
1952
2034
|
object.getFilters = function () {
|
1953
2035
|
return attributes.filters;
|
1954
2036
|
};
|
1955
2037
|
}
|
1956
2038
|
};
|
1957
|
-
}
|
1958
|
-
|
1959
|
-
|
2039
|
+
}
|
2040
|
+
|
2041
|
+
__identity.$inject = ['$parse', 'FileUploader', 'FileDrop'];
|
1960
2042
|
|
1961
2043
|
/***/ },
|
1962
|
-
/*
|
2044
|
+
/* 13 */
|
1963
2045
|
/***/ function(module, exports, __webpack_require__) {
|
1964
2046
|
|
1965
|
-
|
1966
|
-
|
1967
|
-
|
1968
|
-
|
1969
|
-
|
1970
|
-
|
1971
|
-
|
1972
|
-
|
2047
|
+
'use strict';
|
2048
|
+
|
2049
|
+
Object.defineProperty(exports, "__esModule", {
|
2050
|
+
value: true
|
2051
|
+
});
|
2052
|
+
exports.default = __identity;
|
2053
|
+
|
2054
|
+
var _config = __webpack_require__(1);
|
2055
|
+
|
2056
|
+
var _config2 = _interopRequireDefault(_config);
|
2057
|
+
|
2058
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
2059
|
+
|
2060
|
+
function __identity(FileUploader, FileOver) {
|
2061
|
+
|
1973
2062
|
return {
|
1974
|
-
link: function (scope, element, attributes) {
|
2063
|
+
link: function link(scope, element, attributes) {
|
1975
2064
|
var uploader = scope.$eval(attributes.uploader);
|
1976
|
-
|
2065
|
+
|
1977
2066
|
if (!(uploader instanceof FileUploader)) {
|
1978
|
-
throw new TypeError("
|
2067
|
+
throw new TypeError('"Uploader" must be an instance of FileUploader');
|
1979
2068
|
}
|
1980
|
-
|
2069
|
+
|
1981
2070
|
var object = new FileOver({
|
1982
2071
|
uploader: uploader,
|
1983
2072
|
element: element
|
1984
2073
|
});
|
1985
|
-
|
2074
|
+
|
1986
2075
|
object.getOverClass = function () {
|
1987
2076
|
return attributes.overClass || object.overClass;
|
1988
2077
|
};
|
1989
2078
|
}
|
1990
2079
|
};
|
1991
|
-
}
|
1992
|
-
|
1993
|
-
|
2080
|
+
}
|
2081
|
+
|
2082
|
+
__identity.$inject = ['FileUploader', 'FileOver'];
|
1994
2083
|
|
1995
2084
|
/***/ }
|
1996
2085
|
/******/ ])
|