@rs-pk/asset-management 1.0.30 → 1.0.32

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.
@@ -21,6 +21,7 @@ var AssetListComponent = /** @class */ (function () {
21
21
  this.hasAccessPermission = true;
22
22
  this.hasArchivePermission = true;
23
23
  this.backgroundProcessingNum = BackgroudProcessingStatus;
24
+ this.processingCheckDelay = 5000;
24
25
  this.unsubscribe$ = new Subject();
25
26
  this.selectedAssets = [];
26
27
  }
@@ -42,17 +43,8 @@ var AssetListComponent = /** @class */ (function () {
42
43
  * @return {?}
43
44
  */
44
45
  function (changes) {
45
- var _this = this;
46
46
  if (changes.assets) {
47
- // Check if asset is uploading
48
- if (this.assets && this.assets.find((/**
49
- * @param {?} x
50
- * @return {?}
51
- */
52
- function (x) { return x.BackgroudProcessingStatus === _this.backgroundProcessingNum.InProcessing; }))) {
53
- this._resetUploadingAssets();
54
- }
55
- ;
47
+ this.checkProcessingAssets();
56
48
  this.paginator.pageIndex = this.assetService.pageIndex;
57
49
  this.paginator.pageSize = this.assetService.pageSize;
58
50
  this.paginator.length = this.assetService.fileTotal;
@@ -205,15 +197,8 @@ var AssetListComponent = /** @class */ (function () {
205
197
  * @param {?} res
206
198
  * @return {?}
207
199
  */
208
- function (res) {
209
- /** @type {?} */
210
- var pagination = res && res.Meta || {};
211
- /** @type {?} */
212
- var assets = res && res.Data && res.Data.Children || [];
213
- /** @type {?} */
214
- var totalFile = res && res.Data && res.Data.TotalFile || 0;
215
- _this.assetService.setAssetList(assets, pagination, totalFile);
216
- })).add((/**
200
+ function (res) { return _this.setAssetList(res); }))
201
+ .add((/**
217
202
  * @return {?}
218
203
  */
219
204
  function () {
@@ -223,31 +208,94 @@ var AssetListComponent = /** @class */ (function () {
223
208
  });
224
209
  }));
225
210
  };
211
+ /**
212
+ * @private
213
+ * @param {?} res
214
+ * @return {?}
215
+ */
216
+ AssetListComponent.prototype.setAssetList = /**
217
+ * @private
218
+ * @param {?} res
219
+ * @return {?}
220
+ */
221
+ function (res) {
222
+ /** @type {?} */
223
+ var pagination = res && res.Meta || {};
224
+ /** @type {?} */
225
+ var assets = res && res.Data && res.Data.Children || [];
226
+ /** @type {?} */
227
+ var totalFile = res && res.Data && res.Data.TotalFile || 0;
228
+ this.assetService.setAssetList(assets, pagination, totalFile);
229
+ };
230
+ // Called on every new asset list: while some files are still processed in the background,
231
+ // reload the list once after a delay. The reloaded list calls this again, until nothing is processing.
232
+ // Called on every new asset list: while some files are still processed in the background,
233
+ // reload the list once after a delay. The reloaded list calls this again, until nothing is processing.
226
234
  /**
227
235
  * @private
228
236
  * @return {?}
229
237
  */
230
- AssetListComponent.prototype._resetUploadingAssets = /**
238
+ AssetListComponent.prototype.checkProcessingAssets =
239
+ // Called on every new asset list: while some files are still processed in the background,
240
+ // reload the list once after a delay. The reloaded list calls this again, until nothing is processing.
241
+ /**
231
242
  * @private
232
243
  * @return {?}
233
244
  */
234
245
  function () {
235
246
  var _this = this;
247
+ this.stopProcessingCheck();
236
248
  /** @type {?} */
237
- var reload = setInterval((/**
249
+ var hasProcessingAssets = this.assets && this.assets.some((/**
250
+ * @param {?} asset
238
251
  * @return {?}
239
252
  */
240
- function () {
241
- _this.fetchChildrenAssets();
242
- if (_this.assets.find((/**
243
- * @param {?} x
253
+ function (asset) { return asset.BackgroudProcessingStatus === _this.backgroundProcessingNum.InProcessing; }));
254
+ if (hasProcessingAssets) {
255
+ this.processingCheckTimer = setTimeout((/**
244
256
  * @return {?}
245
257
  */
246
- function (x) { return x.BackgroudProcessingStatus === _this.backgroundProcessingNum.Processed; }))) {
247
- clearInterval(reload);
248
- }
249
- console.log('Upload Successfully!'); // interval will be cleared after completing this whole block
250
- }), 5000);
258
+ function () { return _this.reloadProcessingAssets(); }), this.processingCheckDelay);
259
+ }
260
+ };
261
+ // Silent reload, without the global loading bar
262
+ // Silent reload, without the global loading bar
263
+ /**
264
+ * @private
265
+ * @return {?}
266
+ */
267
+ AssetListComponent.prototype.reloadProcessingAssets =
268
+ // Silent reload, without the global loading bar
269
+ /**
270
+ * @private
271
+ * @return {?}
272
+ */
273
+ function () {
274
+ var _this = this;
275
+ if (!this.currentFolderId) {
276
+ return;
277
+ }
278
+ this.processingCheckRequest = this.assetService
279
+ .getChildrenAssets({ assetId: this.currentFolderId })
280
+ .subscribe((/**
281
+ * @param {?} res
282
+ * @return {?}
283
+ */
284
+ function (res) { return _this.setAssetList(res); }));
285
+ };
286
+ /**
287
+ * @private
288
+ * @return {?}
289
+ */
290
+ AssetListComponent.prototype.stopProcessingCheck = /**
291
+ * @private
292
+ * @return {?}
293
+ */
294
+ function () {
295
+ clearTimeout(this.processingCheckTimer);
296
+ if (this.processingCheckRequest) {
297
+ this.processingCheckRequest.unsubscribe();
298
+ }
251
299
  };
252
300
  /**
253
301
  * @return {?}
@@ -256,6 +304,7 @@ var AssetListComponent = /** @class */ (function () {
256
304
  * @return {?}
257
305
  */
258
306
  function () {
307
+ this.stopProcessingCheck();
259
308
  this.unsubscribe$.next();
260
309
  this.unsubscribe$.complete();
261
310
  };
@@ -297,6 +346,21 @@ if (false) {
297
346
  AssetListComponent.prototype.assets;
298
347
  /** @type {?} */
299
348
  AssetListComponent.prototype.backgroundProcessingNum;
349
+ /**
350
+ * @type {?}
351
+ * @private
352
+ */
353
+ AssetListComponent.prototype.processingCheckDelay;
354
+ /**
355
+ * @type {?}
356
+ * @private
357
+ */
358
+ AssetListComponent.prototype.processingCheckTimer;
359
+ /**
360
+ * @type {?}
361
+ * @private
362
+ */
363
+ AssetListComponent.prototype.processingCheckRequest;
300
364
  /**
301
365
  * @type {?}
302
366
  * @private
@@ -323,4 +387,4 @@ if (false) {
323
387
  */
324
388
  AssetListComponent.prototype.svc;
325
389
  }
326
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcnMtcGsvYXNzZXQtbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3BhcnRpYWwvYXNzZXQtbGlzdC9hc3NldC1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFLTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBYSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDM0UsT0FBTyxFQUFjLHlCQUF5QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFaEQ7SUFXRSw0QkFDVSxZQUEwQixFQUMxQixHQUEyQjtRQUQzQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixRQUFHLEdBQUgsR0FBRyxDQUF3QjtRQU41Qix3QkFBbUIsR0FBYSxJQUFJLENBQUM7UUFDckMsd0JBQW1CLEdBQWEsSUFBSSxDQUFDO1FBQ3JDLHlCQUFvQixHQUFhLElBQUksQ0FBQztRQVV4Qyw0QkFBdUIsR0FBRyx5QkFBeUIsQ0FBQztRQUVuRCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFbkMsbUJBQWMsR0FBc0IsRUFBRSxDQUFDO0lBVDVDLENBQUM7Ozs7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O2FBQ3ZCO1lBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsNkRBQTZEO1FBQ3BHLENBQUMsR0FBRSxJQUFJLENBQUM7SUFDVixDQUFDOzs7O0lBRUQsd0NBQVc7OztJQUFYO1FBQ0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7O2dCQTlJRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsa3FDQUEwQzs7aUJBRTNDOzs7O2dCQVJRLFlBQVk7Z0JBRlosc0JBQXNCOzs7MkJBWTVCLEtBQUs7c0NBQ0wsS0FBSztzQ0FDTCxLQUFLO3VDQUNMLEtBQUs7NEJBT0wsU0FBUyxTQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7eUJBQ3hDLEtBQUs7O0lBOEhSLHlCQUFDO0NBQUEsQUEvSUQsSUErSUM7U0ExSVksa0JBQWtCOzs7SUFDN0Isc0NBQTRCOztJQUM1QixpREFBOEM7O0lBQzlDLGlEQUE4Qzs7SUFDOUMsa0RBQStDOztJQU8vQyx1Q0FBbUU7O0lBQ25FLG9DQUE4Qjs7SUFFOUIscURBQTJEOzs7OztJQUUzRCwwQ0FBMkM7Ozs7O0lBQzNDLDZDQUFnQzs7Ozs7SUFDaEMsNENBQStDOzs7OztJQVg3QywwQ0FBa0M7Ozs7O0lBQ2xDLGlDQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IsIFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBc3NldE1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXNzZXQtbWFuYWdlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEFzc2V0TW9kZWwsIEJhY2tncm91ZFByb2Nlc3NpbmdTdGF0dXMgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgQXNzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXNzZXQuc2VydmljZSc7XG5pbXBvcnQgeyBBY3Rpb25UeXBlcyB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2FjdGlvbnMuYWN0aW9uJztcbmltcG9ydCB7IHNlbGVjdCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3JlZHVjZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYXNzZXQtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hc3NldC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXNzZXQtbGlzdC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBBc3NldExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgaXNEaWFsb2c/OiBib29sZWFuO1xuICBASW5wdXQoKSBoYXNNb2RpZnlQZXJtaXNzaW9uPzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGhhc0FjY2Vzc1Blcm1pc3Npb24/OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgaGFzQXJjaGl2ZVBlcm1pc3Npb24/OiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFzc2V0U2VydmljZTogQXNzZXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3ZjOiBBc3NldE1hbmFnZW1lbnRTZXJ2aWNlXG4gICkge31cblxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwgeyBzdGF0aWM6IHRydWUgfSkgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG4gIEBJbnB1dCgpIGFzc2V0czogQXNzZXRNb2RlbFtdO1xuXG4gIHB1YmxpYyBiYWNrZ3JvdW5kUHJvY2Vzc2luZ051bSA9IEJhY2tncm91ZFByb2Nlc3NpbmdTdGF0dXM7XG5cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIGN1cnJlbnRGb2xkZXJJZDogc3RyaW5nO1xuICBwcml2YXRlIHNlbGVjdGVkQXNzZXRzOiBBcnJheTxBc3NldE1vZGVsPiA9IFtdO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYmluZFN1YnNjcmliZXIoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5hc3NldHMpIHtcbiAgICAgIC8vIENoZWNrIGlmIGFzc2V0IGlzIHVwbG9hZGluZ1xuICAgICAgaWYgKHRoaXMuYXNzZXRzICYmIHRoaXMuYXNzZXRzLmZpbmQoeCA9PiB4LkJhY2tncm91ZFByb2Nlc3NpbmdTdGF0dXMgPT09IHRoaXMuYmFja2dyb3VuZFByb2Nlc3NpbmdOdW0uSW5Qcm9jZXNzaW5nKSkge1xuICAgICAgICB0aGlzLl9yZXNldFVwbG9hZGluZ0Fzc2V0cygpO1xuICAgICAgfTtcblxuICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID0gdGhpcy5hc3NldFNlcnZpY2UucGFnZUluZGV4O1xuICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZVNpemUgPSB0aGlzLmFzc2V0U2VydmljZS5wYWdlU2l6ZTtcbiAgICAgIHRoaXMucGFnaW5hdG9yLmxlbmd0aCA9IHRoaXMuYXNzZXRTZXJ2aWNlLmZpbGVUb3RhbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3RBc3NldChldmVudDogQXNzZXRNb2RlbCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZEFzc2V0cy5maW5kSW5kZXgoXG4gICAgICAoYXNzZXQpID0+IGFzc2V0LkFzc2V0SWQgPT09IGV2ZW50LkFzc2V0SWRcbiAgICApO1xuICAgIGNvbnN0IG5ld1NlbGVjdGVkQXNzZXRzOiBBc3NldE1vZGVsW10gPVxuICAgICAgaW5kZXggPiAtMVxuICAgICAgICA/IHRoaXMuc2VsZWN0ZWRBc3NldHMuZmlsdGVyKChhc3NldCwgaSkgPT4gaW5kZXggIT09IGkpXG4gICAgICAgIDogWy4uLnRoaXMuc2VsZWN0ZWRBc3NldHMsIGV2ZW50XTtcblxuICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9TRUxFQ1RFRF9BU1NFVFMsXG4gICAgICBwYXlsb2FkOiBuZXdTZWxlY3RlZEFzc2V0cyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYmluZFN1YnNjcmliZXIoKSB7XG4gICAgc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUuZGVsZXRlZEFzc2V0SWQpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgoaWQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRBc3NldHMgJiYgdGhpcy5zZWxlY3RlZEFzc2V0cy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZEFzc2V0cyA9IHRoaXMuc2VsZWN0ZWRBc3NldHMuZmlsdGVyKFxuICAgICAgICAgICAgKGFzc2V0KSA9PiBhc3NldC5Bc3NldElkICE9PSBpZFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX1NFTEVDVEVEX0FTU0VUUyxcbiAgICAgICAgICAgIHBheWxvYWQ6IG5ld1NlbGVjdGVkQXNzZXRzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLmN1cnJlbnRGb2xkZXJJZClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKChjdXJyZW50Rm9sZGVySWQpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50Rm9sZGVySWQgPSBjdXJyZW50Rm9sZGVySWQ7XG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfU0VMRUNURURfQVNTRVRTLFxuICAgICAgICAgIHBheWxvYWQ6IFtdLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUuc2VsZWN0ZWRBc3NldHMpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgoc2VsZWN0ZWRBc3NldHMpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFzc2V0cyA9IHNlbGVjdGVkQXNzZXRzO1xuICAgICAgfSk7XG5cbiAgICBzZWxlY3QoKHN0YXRlKSA9PiBzdGF0ZS5yZWxvYWRDdXJyZW50QXNzZXRzKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICAgIHN3aXRjaE1hcCgocmVzKSA9PiBvZihyZXMpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmV0Y2hDaGlsZHJlbkFzc2V0cygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcGFnZUNoYW5nZShldmVudD86IFBhZ2VFdmVudCkge1xuICAgIHRoaXMuYXNzZXRTZXJ2aWNlLnBhZ2VTaXplID0gZXZlbnQucGFnZVNpemU7XG4gICAgdGhpcy5hc3NldFNlcnZpY2UucGFnZUluZGV4ID0gZXZlbnQucGFnZUluZGV4O1xuICAgIHRoaXMuZmV0Y2hDaGlsZHJlbkFzc2V0cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaENoaWxkcmVuQXNzZXRzKCkge1xuICAgIGlmICghdGhpcy5jdXJyZW50Rm9sZGVySWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0dMT0JBTF9MT0FESU5HLFxuICAgICAgcGF5bG9hZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuYXNzZXRTZXJ2aWNlXG4gICAgICAuZ2V0Q2hpbGRyZW5Bc3NldHMoeyBhc3NldElkOiB0aGlzLmN1cnJlbnRGb2xkZXJJZCB9KVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBwYWdpbmF0aW9uID0gcmVzICYmIHJlcy5NZXRhIHx8IHt9O1xuICAgICAgICBjb25zdCBhc3NldHMgPSByZXMgJiYgcmVzLkRhdGEgJiYgcmVzLkRhdGEuQ2hpbGRyZW4gfHwgW107XG4gICAgICAgIGNvbnN0IHRvdGFsRmlsZSA9IHJlcyAmJiByZXMuRGF0YSAmJiByZXMuRGF0YS5Ub3RhbEZpbGUgfHwgMDtcbiAgICAgICAgdGhpcy5hc3NldFNlcnZpY2Uuc2V0QXNzZXRMaXN0KGFzc2V0cywgcGFnaW5hdGlvbiwgdG90YWxGaWxlKTtcbiAgICAgIH0pLmFkZCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfR0xPQkFMX0xPQURJTkcsXG4gICAgICAgICAgcGF5bG9hZDogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9yZXNldFVwbG9hZGluZ0Fzc2V0cyAoKSB7XG4gICAgY29uc3QgcmVsb2FkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy5mZXRjaENoaWxkcmVuQXNzZXRzKCk7XG4gICAgICBpZiAodGhpcy5hc3NldHMuZmluZCh4ID0+IHguQmFja2dyb3VkUHJvY2Vzc2luZ1N0YXR1cyA9PT0gdGhpcy5iYWNrZ3JvdW5kUHJvY2Vzc2luZ051bS5Qcm9jZXNzZWQpKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwocmVsb2FkKTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUubG9nKCdVcGxvYWQgU3VjY2Vzc2Z1bGx5IScpOyAvLyBpbnRlcnZhbCB3aWxsIGJlIGNsZWFyZWQgYWZ0ZXIgY29tcGxldGluZyB0aGlzIHdob2xlIGJsb2NrXG4gICAgfSwgNTAwMCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
390
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcnMtcGsvYXNzZXQtbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3BhcnRpYWwvYXNzZXQtbGlzdC9hc3NldC1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFLTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBYSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBYyx5QkFBeUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWhEO0lBV0UsNEJBQ1UsWUFBMEIsRUFDMUIsR0FBMkI7UUFEM0IsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsUUFBRyxHQUFILEdBQUcsQ0FBd0I7UUFONUIsd0JBQW1CLEdBQWEsSUFBSSxDQUFDO1FBQ3JDLHdCQUFtQixHQUFhLElBQUksQ0FBQztRQUNyQyx5QkFBb0IsR0FBYSxJQUFJLENBQUM7UUFVeEMsNEJBQXVCLEdBQUcseUJBQXlCLENBQUM7UUFFMUMseUJBQW9CLEdBQUcsSUFBSSxDQUFDO1FBR3JDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVuQyxtQkFBYyxH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LEFBdktELElBdUtDO1NBbEtZLGtCQUFrQjs7O0lBQzdCLHNDQUE0Qjs7SUFDNUIsaURBQThDOztJQUM5QyxpREFBOEM7O0lBQzlDLGtEQUErQzs7SUFPL0MsdUNBQW1FOztJQUNuRSxvQ0FBOEI7O0lBRTlCLHFEQUEyRDs7Ozs7SUFFM0Qsa0RBQTZDOzs7OztJQUM3QyxrREFBNkI7Ozs7O0lBQzdCLG9EQUE2Qzs7Ozs7SUFDN0MsMENBQTJDOzs7OztJQUMzQyw2Q0FBZ0M7Ozs7O0lBQ2hDLDRDQUErQzs7Ozs7SUFkN0MsMENBQWtDOzs7OztJQUNsQyxpQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yLCBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgb2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBc3NldE1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXNzZXQtbWFuYWdlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEFzc2V0TW9kZWwsIEJhY2tncm91ZFByb2Nlc3NpbmdTdGF0dXMgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgQXNzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXNzZXQuc2VydmljZSc7XG5pbXBvcnQgeyBBY3Rpb25UeXBlcyB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2FjdGlvbnMuYWN0aW9uJztcbmltcG9ydCB7IHNlbGVjdCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3JlZHVjZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYXNzZXQtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hc3NldC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXNzZXQtbGlzdC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBBc3NldExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgaXNEaWFsb2c/OiBib29sZWFuO1xuICBASW5wdXQoKSBoYXNNb2RpZnlQZXJtaXNzaW9uPzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGhhc0FjY2Vzc1Blcm1pc3Npb24/OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgaGFzQXJjaGl2ZVBlcm1pc3Npb24/OiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFzc2V0U2VydmljZTogQXNzZXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3ZjOiBBc3NldE1hbmFnZW1lbnRTZXJ2aWNlXG4gICkge31cblxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwgeyBzdGF0aWM6IHRydWUgfSkgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG4gIEBJbnB1dCgpIGFzc2V0czogQXNzZXRNb2RlbFtdO1xuXG4gIHB1YmxpYyBiYWNrZ3JvdW5kUHJvY2Vzc2luZ051bSA9IEJhY2tncm91ZFByb2Nlc3NpbmdTdGF0dXM7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9jZXNzaW5nQ2hlY2tEZWxheSA9IDUwMDA7XG4gIHByaXZhdGUgcHJvY2Vzc2luZ0NoZWNrVGltZXI7XG4gIHByaXZhdGUgcHJvY2Vzc2luZ0NoZWNrUmVxdWVzdDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgY3VycmVudEZvbGRlcklkOiBzdHJpbmc7XG4gIHByaXZhdGUgc2VsZWN0ZWRBc3NldHM6IEFycmF5PEFzc2V0TW9kZWw+ID0gW107XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5iaW5kU3Vic2NyaWJlcigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmFzc2V0cykge1xuICAgICAgdGhpcy5jaGVja1Byb2Nlc3NpbmdBc3NldHMoKTtcblxuICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID0gdGhpcy5hc3NldFNlcnZpY2UucGFnZUluZGV4O1xuICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZVNpemUgPSB0aGlzLmFzc2V0U2VydmljZS5wYWdlU2l6ZTtcbiAgICAgIHRoaXMucGFnaW5hdG9yLmxlbmd0aCA9IHRoaXMuYXNzZXRTZXJ2aWNlLmZpbGVUb3RhbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3RBc3NldChldmVudDogQXNzZXRNb2RlbCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZEFzc2V0cy5maW5kSW5kZXgoXG4gICAgICAoYXNzZXQpID0+IGFzc2V0LkFzc2V0SWQgPT09IGV2ZW50LkFzc2V0SWRcbiAgICApO1xuICAgIGNvbnN0IG5ld1NlbGVjdGVkQXNzZXRzOiBBc3NldE1vZGVsW10gPVxuICAgICAgaW5kZXggPiAtMVxuICAgICAgICA/IHRoaXMuc2VsZWN0ZWRBc3NldHMuZmlsdGVyKChhc3NldCwgaSkgPT4gaW5kZXggIT09IGkpXG4gICAgICAgIDogWy4uLnRoaXMuc2VsZWN0ZWRBc3NldHMsIGV2ZW50XTtcblxuICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9TRUxFQ1RFRF9BU1NFVFMsXG4gICAgICBwYXlsb2FkOiBuZXdTZWxlY3RlZEFzc2V0cyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYmluZFN1YnNjcmliZXIoKSB7XG4gICAgc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUuZGVsZXRlZEFzc2V0SWQpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgoaWQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRBc3NldHMgJiYgdGhpcy5zZWxlY3RlZEFzc2V0cy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZEFzc2V0cyA9IHRoaXMuc2VsZWN0ZWRBc3NldHMuZmlsdGVyKFxuICAgICAgICAgICAgKGFzc2V0KSA9PiBhc3NldC5Bc3NldElkICE9PSBpZFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX1NFTEVDVEVEX0FTU0VUUyxcbiAgICAgICAgICAgIHBheWxvYWQ6IG5ld1NlbGVjdGVkQXNzZXRzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLmN1cnJlbnRGb2xkZXJJZClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKChjdXJyZW50Rm9sZGVySWQpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50Rm9sZGVySWQgPSBjdXJyZW50Rm9sZGVySWQ7XG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfU0VMRUNURURfQVNTRVRTLFxuICAgICAgICAgIHBheWxvYWQ6IFtdLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUuc2VsZWN0ZWRBc3NldHMpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgoc2VsZWN0ZWRBc3NldHMpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFzc2V0cyA9IHNlbGVjdGVkQXNzZXRzO1xuICAgICAgfSk7XG5cbiAgICBzZWxlY3QoKHN0YXRlKSA9PiBzdGF0ZS5yZWxvYWRDdXJyZW50QXNzZXRzKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICAgIHN3aXRjaE1hcCgocmVzKSA9PiBvZihyZXMpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmV0Y2hDaGlsZHJlbkFzc2V0cygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcGFnZUNoYW5nZShldmVudD86IFBhZ2VFdmVudCkge1xuICAgIHRoaXMuYXNzZXRTZXJ2aWNlLnBhZ2VTaXplID0gZXZlbnQucGFnZVNpemU7XG4gICAgdGhpcy5hc3NldFNlcnZpY2UucGFnZUluZGV4ID0gZXZlbnQucGFnZUluZGV4O1xuICAgIHRoaXMuZmV0Y2hDaGlsZHJlbkFzc2V0cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaENoaWxkcmVuQXNzZXRzKCkge1xuICAgIGlmICghdGhpcy5jdXJyZW50Rm9sZGVySWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0dMT0JBTF9MT0FESU5HLFxuICAgICAgcGF5bG9hZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuYXNzZXRTZXJ2aWNlXG4gICAgICAuZ2V0Q2hpbGRyZW5Bc3NldHMoeyBhc3NldElkOiB0aGlzLmN1cnJlbnRGb2xkZXJJZCB9KVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4gdGhpcy5zZXRBc3NldExpc3QocmVzKSlcbiAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0dMT0JBTF9MT0FESU5HLFxuICAgICAgICAgIHBheWxvYWQ6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRBc3NldExpc3QocmVzKSB7XG4gICAgY29uc3QgcGFnaW5hdGlvbiA9IHJlcyAmJiByZXMuTWV0YSB8fCB7fTtcbiAgICBjb25zdCBhc3NldHMgPSByZXMgJiYgcmVzLkRhdGEgJiYgcmVzLkRhdGEuQ2hpbGRyZW4gfHwgW107XG4gICAgY29uc3QgdG90YWxGaWxlID0gcmVzICYmIHJlcy5EYXRhICYmIHJlcy5EYXRhLlRvdGFsRmlsZSB8fCAwO1xuICAgIHRoaXMuYXNzZXRTZXJ2aWNlLnNldEFzc2V0TGlzdChhc3NldHMsIHBhZ2luYXRpb24sIHRvdGFsRmlsZSk7XG4gIH1cblxuICAvLyBDYWxsZWQgb24gZXZlcnkgbmV3IGFzc2V0IGxpc3Q6IHdoaWxlIHNvbWUgZmlsZXMgYXJlIHN0aWxsIHByb2Nlc3NlZCBpbiB0aGUgYmFja2dyb3VuZCxcbiAgLy8gcmVsb2FkIHRoZSBsaXN0IG9uY2UgYWZ0ZXIgYSBkZWxheS4gVGhlIHJlbG9hZGVkIGxpc3QgY2FsbHMgdGhpcyBhZ2FpbiwgdW50aWwgbm90aGluZyBpcyBwcm9jZXNzaW5nLlxuICBwcml2YXRlIGNoZWNrUHJvY2Vzc2luZ0Fzc2V0cygpIHtcbiAgICB0aGlzLnN0b3BQcm9jZXNzaW5nQ2hlY2soKTtcblxuICAgIGNvbnN0IGhhc1Byb2Nlc3NpbmdBc3NldHMgPSB0aGlzLmFzc2V0cyAmJiB0aGlzLmFzc2V0cy5zb21lKFxuICAgICAgKGFzc2V0KSA9PiBhc3NldC5CYWNrZ3JvdWRQcm9jZXNzaW5nU3RhdHVzID09PSB0aGlzLmJhY2tncm91bmRQcm9jZXNzaW5nTnVtLkluUHJvY2Vzc2luZ1xuICAgICk7XG4gICAgaWYgKGhhc1Byb2Nlc3NpbmdBc3NldHMpIHtcbiAgICAgIHRoaXMucHJvY2Vzc2luZ0NoZWNrVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVsb2FkUHJvY2Vzc2luZ0Fzc2V0cygpLCB0aGlzLnByb2Nlc3NpbmdDaGVja0RlbGF5KTtcbiAgICB9XG4gIH1cblxuICAvLyBTaWxlbnQgcmVsb2FkLCB3aXRob3V0IHRoZSBnbG9iYWwgbG9hZGluZyBiYXJcbiAgcHJpdmF0ZSByZWxvYWRQcm9jZXNzaW5nQXNzZXRzKCkge1xuICAgIGlmICghdGhpcy5jdXJyZW50Rm9sZGVySWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wcm9jZXNzaW5nQ2hlY2tSZXF1ZXN0ID0gdGhpcy5hc3NldFNlcnZpY2VcbiAgICAgIC5nZXRDaGlsZHJlbkFzc2V0cyh7IGFzc2V0SWQ6IHRoaXMuY3VycmVudEZvbGRlcklkIH0pXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHRoaXMuc2V0QXNzZXRMaXN0KHJlcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wUHJvY2Vzc2luZ0NoZWNrKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnByb2Nlc3NpbmdDaGVja1RpbWVyKTtcbiAgICBpZiAodGhpcy5wcm9jZXNzaW5nQ2hlY2tSZXF1ZXN0KSB7XG4gICAgICB0aGlzLnByb2Nlc3NpbmdDaGVja1JlcXVlc3QudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN0b3BQcm9jZXNzaW5nQ2hlY2soKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
@@ -41,6 +41,16 @@ var FileItemComponent = /** @class */ (function () {
41
41
  function () {
42
42
  this.initDataFile();
43
43
  };
44
+ Object.defineProperty(FileItemComponent.prototype, "uploadErrors", {
45
+ get: /**
46
+ * @return {?}
47
+ */
48
+ function () {
49
+ return this.uploadAssetService.uploadErrors.get(this.file);
50
+ },
51
+ enumerable: true,
52
+ configurable: true
53
+ });
44
54
  /**
45
55
  * @private
46
56
  * @return {?}
@@ -163,8 +173,8 @@ var FileItemComponent = /** @class */ (function () {
163
173
  FileItemComponent.decorators = [
164
174
  { type: Component, args: [{
165
175
  selector: 'lib-file-item',
166
- template: "<div class=\"file-item__img\">\n <ng-container\n *ngIf=\"\n file.type.indexOf('image') > -1 || documentExts.indexOf(dataFile.ext) > -1;\n else defaultFile\n \"\n >\n <img\n [class.image]=\"file.type.indexOf('image') > -1\"\n *ngIf=\"documentExts.indexOf(dataFile.ext) > -1 || dataFile.data\"\n [src]=\"documentExts.indexOf(dataFile.ext) > -1 ? base64PNG[dataFile.ext] : dataFile.data\"\n />\n </ng-container>\n <ng-template #defaultFile>\n <mat-icon>attach_file</mat-icon>\n </ng-template>\n</div>\n<div class=\"file-item__content\">\n <input\n class=\"file-item__content--name\"\n matInput\n placeholder=\"Enter file name\"\n [value]=\"dataFile.name\"\n required\n (input)=\"onChange($event)\"\n />\n <div class=\"file-item__content--info\">\n <div class=\"file-item__content--info__item\">\n Extension: <span>{{ dataFile.ext }}</span>\n </div>\n <div class=\"file-item__content--info__item\">\n Size: <span>{{ dataFile.size | fileSize }}</span>\n </div>\n </div>\n <div *ngIf=\"dataFile.errors.ext\" class=\"file-item__error\">\n {{ uploadAssetService.messageErrors['ext'] }}\n {{ uploadAssetService.supportedTypes.join(', ') }}\n </div>\n <div *ngIf=\"dataFile.errors.size\" class=\"file-item__error\">\n {{ uploadAssetService.messageErrors['size'] }}\n {{ uploadAssetService.supportedSize | fileSize: 0 }}\n </div>\n <div *ngIf=\"dataFile.errors.maxLength\" class=\"file-item__error\">\n {{ uploadAssetService.messageErrors['maxLength'] }}\n </div>\n</div>\n<div class=\"file-item__action\">\n <mat-icon (click)=\"onRemove()\">delete_outline</mat-icon>\n</div>\n",
167
- styles: [":host::ng-deep{padding:10px 5%;display:flex;justify-content:space-between;align-items:center;background-color:#f9f9f9;border-radius:10px}:host::ng-deep .file-item__img{display:flex;justify-content:center;align-items:center;width:250px;height:150px;border-radius:10px}:host::ng-deep .file-item__img img{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain}:host::ng-deep .file-item__img img.image{background-image:url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAAUABQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/ivFPFOf+EjvxzjbBgdv+PeDp+OfxzSt4q18AkageASB9ntu3OM+Vn8c5rsdG0fT9d06DVdUgN1f3XmefP5ksO/ypXhj/dwvHGu2ONF+VF3bQSM0AeYUV7IPCWgjgWRA/wCvi4P85SaKAPGm5Vh7H+VeyeERjQLEDoPP/WeQ/wAzRRQB0tFFFAH/2Q==)}:host::ng-deep .file-item__img mat-icon{font-size:100px;width:auto;height:auto}:host::ng-deep .file-item__content{flex:1;padding-left:5%;padding-right:5%}:host::ng-deep .file-item__content--name{width:100%;padding:10px;border:1px solid #d8d8d8;border-radius:5px}:host::ng-deep .file-item__content--info{margin-top:10px;display:flex}:host::ng-deep .file-item__content--info__item:not(:last-child){margin-right:50px}:host::ng-deep .file-item__content--info__item span{color:#000;text-transform:uppercase}:host::ng-deep .file-item__error{margin-top:10px;color:#f44336}:host::ng-deep .file-item__action{color:#f44336;cursor:pointer}"]
176
+ template: "<div class=\"file-item__img\">\n <ng-container\n *ngIf=\"\n file.type.indexOf('image') > -1 || documentExts.indexOf(dataFile.ext) > -1;\n else defaultFile\n \"\n >\n <img\n [class.image]=\"file.type.indexOf('image') > -1\"\n *ngIf=\"documentExts.indexOf(dataFile.ext) > -1 || dataFile.data\"\n [src]=\"documentExts.indexOf(dataFile.ext) > -1 ? base64PNG[dataFile.ext] : dataFile.data\"\n />\n </ng-container>\n <ng-template #defaultFile>\n <mat-icon>attach_file</mat-icon>\n </ng-template>\n</div>\n<div class=\"file-item__content\">\n <input\n class=\"file-item__content--name\"\n matInput\n placeholder=\"Enter file name\"\n [value]=\"dataFile.name\"\n required\n (input)=\"onChange($event)\"\n />\n <div class=\"file-item__content--info\">\n <div class=\"file-item__content--info__item\">\n Extension: <span>{{ dataFile.ext }}</span>\n </div>\n <div class=\"file-item__content--info__item\">\n Size: <span>{{ dataFile.size | fileSize }}</span>\n </div>\n </div>\n <div *ngIf=\"dataFile.errors.ext\" class=\"file-item__error\">\n <mat-icon class=\"file-item__error--icon\">error_outline</mat-icon>\n <span>\n {{ uploadAssetService.messageErrors['ext'] }}\n {{ uploadAssetService.supportedTypes.join(', ') }}\n </span>\n </div>\n <div *ngIf=\"dataFile.errors.size\" class=\"file-item__error\">\n <mat-icon class=\"file-item__error--icon\">error_outline</mat-icon>\n <span>\n {{ uploadAssetService.messageErrors['size'] }}\n {{ uploadAssetService.supportedSize | fileSize: 0 }}\n </span>\n </div>\n <div *ngIf=\"dataFile.errors.maxLength\" class=\"file-item__error\">\n <mat-icon class=\"file-item__error--icon\">error_outline</mat-icon>\n <span>{{ uploadAssetService.messageErrors['maxLength'] }}</span>\n </div>\n <div *ngFor=\"let message of uploadErrors\" class=\"file-item__error\" role=\"alert\">\n <mat-icon class=\"file-item__error--icon\">error_outline</mat-icon>\n <span>{{ message }}</span>\n </div>\n</div>\n<div class=\"file-item__action\">\n <mat-icon (click)=\"onRemove()\">delete_outline</mat-icon>\n</div>\n",
177
+ styles: [":host::ng-deep{padding:10px 5%;display:flex;justify-content:space-between;align-items:center;background-color:#f9f9f9;border-radius:10px}:host::ng-deep .file-item__img{display:flex;justify-content:center;align-items:center;width:250px;height:150px;border-radius:10px}:host::ng-deep .file-item__img img{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain}:host::ng-deep .file-item__img img.image{background-image:url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAAUABQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/ivFPFOf+EjvxzjbBgdv+PeDp+OfxzSt4q18AkageASB9ntu3OM+Vn8c5rsdG0fT9d06DVdUgN1f3XmefP5ksO/ypXhj/dwvHGu2ONF+VF3bQSM0AeYUV7IPCWgjgWRA/wCvi4P85SaKAPGm5Vh7H+VeyeERjQLEDoPP/WeQ/wAzRRQB0tFFFAH/2Q==)}:host::ng-deep .file-item__img mat-icon{font-size:100px;width:auto;height:auto}:host::ng-deep .file-item__content{flex:1;padding-left:5%;padding-right:5%}:host::ng-deep .file-item__content--name{width:100%;padding:10px;border:1px solid #d8d8d8;border-radius:5px}:host::ng-deep .file-item__content--info{margin-top:10px;display:flex}:host::ng-deep .file-item__content--info__item:not(:last-child){margin-right:50px}:host::ng-deep .file-item__content--info__item span{color:#000;text-transform:uppercase}:host::ng-deep .file-item__error{display:flex;align-items:center;width:-moz-fit-content;width:fit-content;max-width:100%;margin-top:8px;padding:4px 10px;border-radius:6px;background-color:#fdecea;color:#d32f2f;font-size:13px;line-height:18px;word-break:break-word}:host::ng-deep .file-item__error--icon{flex-shrink:0;margin-right:6px;font-size:16px;width:16px;height:16px}:host::ng-deep .file-item__action{color:#f44336;cursor:pointer}"]
168
178
  }] }
169
179
  ];
170
180
  /** @nocollapse */
@@ -204,4 +214,4 @@ if (false) {
204
214
  /** @type {?} */
205
215
  FileItemComponent.prototype.uploadAssetService;
206
216
  }
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bycy1way9hc3NldC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvcGFydGlhbC9maWxlLWl0ZW0vZmlsZS1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pEO0lBNEJFLDJCQUNVLFlBQTBCLEVBQzNCLGtCQUF1QztRQUR0QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMzQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXFCO1FBeEJ6QyxpQkFBWSxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyQyxjQUFTLEdBQUc7WUFDakIsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDO1lBQ3ZELEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQztZQUN2RCxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7U0FDeEQsQ0FBQztRQUVRLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLGFBQVEsR0FBRztZQUNoQixJQUFJLEVB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WTtnQkFGWixtQkFBbUI7Ozt1QkFlekIsS0FBSzs2QkFDTCxNQUFNOzZCQUNOLE1BQU07NkJBQ04sTUFBTTs7SUF5RlQsd0JBQUM7Q0FBQSxBQXhHRCxJQXdHQztTQW5HWSxpQkFBaUI7OztJQUM1Qix5Q0FBNEM7O0lBQzVDLHNDQUlFOztJQUNGLGlDQUFvQjs7SUFDcEIsdUNBQTBDOztJQUMxQyx1Q0FBMEM7O0lBQzFDLHVDQUEwQzs7SUFDMUMscUNBVUU7Ozs7O0lBR0EseUNBQWtDOztJQUNsQywrQ0FBOEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3V0cHV0LCBJbnB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVcGxvYWRBc3NldHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXBsb2FkLWFzc2V0cy5zZXJ2aWNlJztcbmltcG9ydCB7IGltYWdlUGRmLCBpbWFnZVppcCwgaW1hZ2VDc3YgfSBmcm9tICcuLi8uLi8uLi9jb250YW5zdCc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1maWxlLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIGRvY3VtZW50RXh0cyA9IFsncGRmJywgJ3ppcCcsICdjc3YnXTtcbiAgcHVibGljIGJhc2U2NFBORyA9IHtcbiAgICBwZGY6IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoaW1hZ2VQZGYpLFxuICAgIHppcDogdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChpbWFnZVppcCksXG4gICAgY3N2OiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKGltYWdlQ3N2KSxcbiAgfTtcbiAgQElucHV0KCkgZmlsZTogRmlsZTtcbiAgQE91dHB1dCgpIGNoZWNrRXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBmaWxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZmlsZVJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHVibGljIGRhdGFGaWxlID0ge1xuICAgIG5hbWU6ICcnLFxuICAgIHNpemU6IDAsXG4gICAgZXh0OiAnJyxcbiAgICBkYXRhOiBudWxsLFxuICAgIGVycm9yczoge1xuICAgICAgbWF4TGVuZ3RoOiBmYWxzZSxcbiAgICAgIGV4dDogZmFsc2UsXG4gICAgICBzaXplOiBmYWxzZSxcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHVibGljIHVwbG9hZEFzc2V0U2VydmljZTogVXBsb2FkQXNzZXRzU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0RGF0YUZpbGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdERhdGFGaWxlKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGV0YWlsc0ZpbGUoKTtcbiAgICB0aGlzLnNldEVycm9yRmlsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREZXRhaWxzRmlsZSgpIHtcbiAgICBjb25zdCB7IG5hbWUsIHNpemUgfSA9IHRoaXMuZmlsZTtcbiAgICBjb25zdCB7IGdldEZpbGVzOiBmaWxlcyB9ID0gdGhpcy51cGxvYWRBc3NldFNlcnZpY2U7XG4gICAgY29uc3QgbmFtZXMgPSBmaWxlcy5maWx0ZXIoZmlsZSA9PiBmaWxlLm5hbWUgPT09IG5hbWUpO1xuICAgIGNvbnN0IG5hbWVTcGxpdCA9IG5hbWUuc3BsaXQoJy4nKTtcbiAgICBpZiAobmFtZXMubGVuZ3RoID4gMSkge1xuICAgICAgbmFtZVNwbGl0WzBdID0gYCR7bmFtZVNwbGl0WzBdfSgke25hbWVzLmxlbmd0aCAtIDF9KWA7XG4gICAgfVxuICAgIHRoaXMuZGF0YUZpbGUuZXh0ID0gbmFtZVNwbGl0LnNwbGljZShuYW1lU3BsaXQubGVuZ3RoIC0gMSwgMSlbMF07XG4gICAgdGhpcy5kYXRhRmlsZS5uYW1lID0gbmFtZVNwbGl0LmpvaW4oJy4nKTtcbiAgICB0aGlzLmRhdGFGaWxlLnNpemUgPSBzaXplO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRFcnJvckZpbGUoKSB7XG4gICAgY29uc3QgeyBzdXBwb3J0ZWRUeXBlcywgc3VwcG9ydGVkU2l6ZSwgZmlsZU5hbWVzIH0gPSB0aGlzLnVwbG9hZEFzc2V0U2VydmljZTtcbiAgICBjb25zdCB7IG5hbWUsIGV4dDogZXh0RmlsZSwgc2l6ZTogc2l6ZUZpbGUgfSA9IHRoaXMuZGF0YUZpbGU7XG4gICAgdGhpcy5kYXRhRmlsZS5lcnJvcnMgPSB7XG4gICAgICBtYXhMZW5ndGg6IG5hbWUubGVuZ3RoICsgZXh0RmlsZS5sZW5ndGggPiAxOTksXG4gICAgICBleHQ6IHN1cHBvcnRlZFR5cGVzLmluZGV4T2YoYC4ke2V4dEZpbGV9YCkgPCAwLFxuICAgICAgc2l6ZTogc3VwcG9ydGVkU2l6ZSA8IHNpemVGaWxlLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5maWxlLnR5cGUuaW5kZXhPZignaW1hZ2UnKSA+IC0xKSB7XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwodGhpcy5maWxlKTtcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAocmVhZGVyRXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcbiAgICAgICAgaW1nLnNyYyA9IHJlYWRlckV2ZW50LnRhcmdldC5yZXN1bHQgYXMgc3RyaW5nO1xuXG4gICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kYXRhRmlsZS5kYXRhID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChcbiAgICAgICAgICAgIHJlYWRlckV2ZW50LnRhcmdldC5yZXN1bHRcbiAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBmaWxlTmFtZXMucHVzaCh7XG4gICAgICBuYW1lLFxuICAgICAgdmFsaWQ6IHRoaXMuY2hlY2tFcnJvcnMoKVxuICAgIH0pO1xuICAgIHRoaXMudXBsb2FkQXNzZXRTZXJ2aWNlLnNldEVycm9yT2JzKHRoaXMudXBsb2FkQXNzZXRTZXJ2aWNlLmVycm9yRmlsZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0Vycm9ycygpIHtcbiAgICBjb25zdCB7IGV4dCwgc2l6ZSwgbWF4TGVuZ3RoIH0gPSB0aGlzLmRhdGFGaWxlLmVycm9ycztcbiAgICByZXR1cm4gKGV4dCB8fCBzaXplIHx8IG1heExlbmd0aCkgPyBmYWxzZSA6IHRydWU7XG4gIH1cblxuICBvbkNoYW5nZShldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmRhdGFGaWxlLm5hbWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLnRyaW0oKTtcbiAgICBjb25zdCB7IG5hbWUsIGV4dCB9ID0gdGhpcy5kYXRhRmlsZTtcbiAgICB0aGlzLmRhdGFGaWxlLmVycm9ycy5tYXhMZW5ndGggPSBuYW1lLmxlbmd0aCArIGV4dC5sZW5ndGggPiAxOTk7XG4gICAgdGhpcy5maWxlQ2hhbmdlLmVtaXQoe1xuICAgICAgbmFtZTogdGhpcy5kYXRhRmlsZS5uYW1lLFxuICAgICAgdmFsaWQ6IHRoaXMuY2hlY2tFcnJvcnMoKVxuICAgIH0pO1xuICB9XG5cbiAgb25SZW1vdmUoKSB7XG4gICAgdGhpcy5maWxlUmVtb3ZlLmVtaXQodHJ1ZSk7XG4gIH1cbn1cbiJdfQ==
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bycy1way9hc3NldC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvcGFydGlhbC9maWxlLWl0ZW0vZmlsZS1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pEO0lBNEJFLDJCQUNVLFlBQTBCLEVBQzNCLGtCQUF1QztRQUR0QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMzQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXFCO1FBeEJ6QyxpQkFBWSxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyQyxjQUFTLEdBQUc7WUFDakIsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDO1lBQ3ZELEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQztZQUN2RCxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7U0FDeEQsQ0FBQztRQUVRLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLGFBQVEsR0FBRztZQUNoQixJQUFJLEVB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LFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7Z0JBM0dGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsd29FQUF5Qzs7aUJBRTFDOzs7O2dCQUxRLFlBQVk7Z0JBRlosbUJBQW1COzs7dUJBZXpCLEtBQUs7NkJBQ0wsTUFBTTs2QkFDTixNQUFNOzZCQUNOLE1BQU07O0lBNkZULHdCQUFDO0NBQUEsQUE1R0QsSUE0R0M7U0F2R1ksaUJBQWlCOzs7SUFDNUIseUNBQTRDOztJQUM1QyxzQ0FJRTs7SUFDRixpQ0FBb0I7O0lBQ3BCLHVDQUEwQzs7SUFDMUMsdUNBQTBDOztJQUMxQyx1Q0FBMEM7O0lBQzFDLHFDQVVFOzs7OztJQUdBLHlDQUFrQzs7SUFDbEMsK0NBQThDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE91dHB1dCwgSW5wdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXBsb2FkQXNzZXRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3VwbG9hZC1hc3NldHMuc2VydmljZSc7XG5pbXBvcnQgeyBpbWFnZVBkZiwgaW1hZ2VaaXAsIGltYWdlQ3N2IH0gZnJvbSAnLi4vLi4vLi4vY29udGFuc3QnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZmlsZS1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtaXRlbS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBkb2N1bWVudEV4dHMgPSBbJ3BkZicsICd6aXAnLCAnY3N2J107XG4gIHB1YmxpYyBiYXNlNjRQTkcgPSB7XG4gICAgcGRmOiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKGltYWdlUGRmKSxcbiAgICB6aXA6IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoaW1hZ2VaaXApLFxuICAgIGNzdjogdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChpbWFnZUNzdiksXG4gIH07XG4gIEBJbnB1dCgpIGZpbGU6IEZpbGU7XG4gIEBPdXRwdXQoKSBjaGVja0Vycm9yID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZmlsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGZpbGVSZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHB1YmxpYyBkYXRhRmlsZSA9IHtcbiAgICBuYW1lOiAnJyxcbiAgICBzaXplOiAwLFxuICAgIGV4dDogJycsXG4gICAgZGF0YTogbnVsbCxcbiAgICBlcnJvcnM6IHtcbiAgICAgIG1heExlbmd0aDogZmFsc2UsXG4gICAgICBleHQ6IGZhbHNlLFxuICAgICAgc2l6ZTogZmFsc2UsXG4gICAgfSxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHB1YmxpYyB1cGxvYWRBc3NldFNlcnZpY2U6IFVwbG9hZEFzc2V0c1NlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdERhdGFGaWxlKCk7XG4gIH1cblxuICBnZXQgdXBsb2FkRXJyb3JzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy51cGxvYWRBc3NldFNlcnZpY2UudXBsb2FkRXJyb3JzLmdldCh0aGlzLmZpbGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0RGF0YUZpbGUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXREZXRhaWxzRmlsZSgpO1xuICAgIHRoaXMuc2V0RXJyb3JGaWxlKCk7XG4gIH1cblxuICBwcml2YXRlIHNldERldGFpbHNGaWxlKCkge1xuICAgIGNvbnN0IHsgbmFtZSwgc2l6ZSB9ID0gdGhpcy5maWxlO1xuICAgIGNvbnN0IHsgZ2V0RmlsZXM6IGZpbGVzIH0gPSB0aGlzLnVwbG9hZEFzc2V0U2VydmljZTtcbiAgICBjb25zdCBuYW1lcyA9IGZpbGVzLmZpbHRlcihmaWxlID0+IGZpbGUubmFtZSA9PT0gbmFtZSk7XG4gICAgY29uc3QgbmFtZVNwbGl0ID0gbmFtZS5zcGxpdCgnLicpO1xuICAgIGlmIChuYW1lcy5sZW5ndGggPiAxKSB7XG4gICAgICBuYW1lU3BsaXRbMF0gPSBgJHtuYW1lU3BsaXRbMF19KCR7bmFtZXMubGVuZ3RoIC0gMX0pYDtcbiAgICB9XG4gICAgdGhpcy5kYXRhRmlsZS5leHQgPSBuYW1lU3BsaXQuc3BsaWNlKG5hbWVTcGxpdC5sZW5ndGggLSAxLCAxKVswXTtcbiAgICB0aGlzLmRhdGFGaWxlLm5hbWUgPSBuYW1lU3BsaXQuam9pbignLicpO1xuICAgIHRoaXMuZGF0YUZpbGUuc2l6ZSA9IHNpemU7XG4gIH1cblxuICBwcml2YXRlIHNldEVycm9yRmlsZSgpIHtcbiAgICBjb25zdCB7IHN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0ZWRTaXplLCBmaWxlTmFtZXMgfSA9IHRoaXMudXBsb2FkQXNzZXRTZXJ2aWNlO1xuICAgIGNvbnN0IHsgbmFtZSwgZXh0OiBleHRGaWxlLCBzaXplOiBzaXplRmlsZSB9ID0gdGhpcy5kYXRhRmlsZTtcbiAgICB0aGlzLmRhdGFGaWxlLmVycm9ycyA9IHtcbiAgICAgIG1heExlbmd0aDogbmFtZS5sZW5ndGggKyBleHRGaWxlLmxlbmd0aCA+IDE5OSxcbiAgICAgIGV4dDogc3VwcG9ydGVkVHlwZXMuaW5kZXhPZihgLiR7ZXh0RmlsZX1gKSA8IDAsXG4gICAgICBzaXplOiBzdXBwb3J0ZWRTaXplIDwgc2l6ZUZpbGUsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmZpbGUudHlwZS5pbmRleE9mKCdpbWFnZScpID4gLTEpIHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTCh0aGlzLmZpbGUpO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9IChyZWFkZXJFdmVudDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuICAgICAgICBpbWcuc3JjID0gcmVhZGVyRXZlbnQudGFyZ2V0LnJlc3VsdCBhcyBzdHJpbmc7XG5cbiAgICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmRhdGFGaWxlLmRhdGEgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKFxuICAgICAgICAgICAgcmVhZGVyRXZlbnQudGFyZ2V0LnJlc3VsdFxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH1cblxuICAgIGZpbGVOYW1lcy5wdXNoKHtcbiAgICAgIG5hbWUsXG4gICAgICB2YWxpZDogdGhpcy5jaGVja0Vycm9ycygpXG4gICAgfSk7XG4gICAgdGhpcy51cGxvYWRBc3NldFNlcnZpY2Uuc2V0RXJyb3JPYnModGhpcy51cGxvYWRBc3NldFNlcnZpY2UuZXJyb3JGaWxlcyk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRXJyb3JzKCkge1xuICAgIGNvbnN0IHsgZXh0LCBzaXplLCBtYXhMZW5ndGggfSA9IHRoaXMuZGF0YUZpbGUuZXJyb3JzO1xuICAgIHJldHVybiAoZXh0IHx8IHNpemUgfHwgbWF4TGVuZ3RoKSA/IGZhbHNlIDogdHJ1ZTtcbiAgfVxuXG4gIG9uQ2hhbmdlKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMuZGF0YUZpbGUubmFtZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUudHJpbSgpO1xuICAgIGNvbnN0IHsgbmFtZSwgZXh0IH0gPSB0aGlzLmRhdGFGaWxlO1xuICAgIHRoaXMuZGF0YUZpbGUuZXJyb3JzLm1heExlbmd0aCA9IG5hbWUubGVuZ3RoICsgZXh0Lmxlbmd0aCA+IDE5OTtcbiAgICB0aGlzLmZpbGVDaGFuZ2UuZW1pdCh7XG4gICAgICBuYW1lOiB0aGlzLmRhdGFGaWxlLm5hbWUsXG4gICAgICB2YWxpZDogdGhpcy5jaGVja0Vycm9ycygpXG4gICAgfSk7XG4gIH1cblxuICBvblJlbW92ZSgpIHtcbiAgICB0aGlzLmZpbGVSZW1vdmUuZW1pdCh0cnVlKTtcbiAgfVxufVxuIl19
@@ -30,6 +30,9 @@ var UploadDialogComponent = /** @class */ (function () {
30
30
  this.uploadAssetsService = uploadAssetsService;
31
31
  this.isLoading = false;
32
32
  this.disabled = true;
33
+ this.errorMessages = [];
34
+ this.defaultErrorMessage = 'Something went wrong while uploading. Please try again.';
35
+ this.isDestroyed = false;
33
36
  this.destroy$ = new Subject();
34
37
  if (this.data.fileType) {
35
38
  this.uploadAssetsService.supportedTypes =
@@ -57,6 +60,7 @@ var UploadDialogComponent = /** @class */ (function () {
57
60
  */
58
61
  function (error) {
59
62
  _this.disabled = error;
63
+ _this.clearErrors();
60
64
  _this.changeDetectorRef.detectChanges();
61
65
  }));
62
66
  };
@@ -70,6 +74,7 @@ var UploadDialogComponent = /** @class */ (function () {
70
74
  */
71
75
  function (hasError) {
72
76
  this.disabled = hasError;
77
+ this.clearErrors();
73
78
  };
74
79
  /**
75
80
  * @return {?}
@@ -80,6 +85,8 @@ var UploadDialogComponent = /** @class */ (function () {
80
85
  function () {
81
86
  var _this = this;
82
87
  this.isLoading = true;
88
+ this.clearErrors();
89
+ this.dialogRef.disableClose = true;
83
90
  this.uploadAssetsService
84
91
  .uploadMultipleAssets(this.data.currentAssetId)
85
92
  .pipe(takeUntil(this.destroy$))
@@ -91,8 +98,129 @@ var UploadDialogComponent = /** @class */ (function () {
91
98
  if (res) {
92
99
  _this.closeDialog(true);
93
100
  }
101
+ }), (/**
102
+ * @param {?} err
103
+ * @return {?}
104
+ */
105
+ function (err) {
106
+ _this.setUploadErrors(_this.getErrorMessages(err));
107
+ _this.stopLoading();
108
+ }), (
109
+ // the request can complete without a truthy response (or be swallowed by an interceptor)
110
+ // the request can complete without a truthy response (or be swallowed by an interceptor)
111
+ /**
112
+ * @return {?}
113
+ */
114
+ function () { return _this.stopLoading(); }));
115
+ };
116
+ /**
117
+ * @private
118
+ * @return {?}
119
+ */
120
+ UploadDialogComponent.prototype.stopLoading = /**
121
+ * @private
122
+ * @return {?}
123
+ */
124
+ function () {
125
+ // takeUntil also completes the upload when the dialog is destroyed, its view can't be checked anymore
126
+ if (this.isDestroyed) {
127
+ return;
128
+ }
129
+ this.isLoading = false;
130
+ this.dialogRef.disableClose = false;
131
+ this.changeDetectorRef.detectChanges();
132
+ };
133
+ /**
134
+ * @private
135
+ * @return {?}
136
+ */
137
+ UploadDialogComponent.prototype.clearErrors = /**
138
+ * @private
139
+ * @return {?}
140
+ */
141
+ function () {
142
+ this.errorMessages = [];
143
+ this.uploadAssetsService.uploadErrors.clear();
144
+ };
145
+ // show each message on the file it mentions, the rest stay under the list
146
+ // show each message on the file it mentions, the rest stay under the list
147
+ /**
148
+ * @private
149
+ * @param {?} messages
150
+ * @return {?}
151
+ */
152
+ UploadDialogComponent.prototype.setUploadErrors =
153
+ // show each message on the file it mentions, the rest stay under the list
154
+ /**
155
+ * @private
156
+ * @param {?} messages
157
+ * @return {?}
158
+ */
159
+ function (messages) {
160
+ var _this = this;
161
+ var _a = this.uploadAssetsService, files = _a.getFiles, uploadErrors = _a.uploadErrors;
162
+ /** @type {?} */
163
+ var uploadNames = files.map((/**
164
+ * @param {?} file
165
+ * @param {?} index
166
+ * @return {?}
167
+ */
168
+ function (file, index) { return _this.uploadAssetsService.getUploadName(index); }));
169
+ this.errorMessages = messages.filter((/**
170
+ * @param {?} message
171
+ * @return {?}
172
+ */
173
+ function (message) {
174
+ /** @type {?} */
175
+ var index = uploadNames.findIndex((/**
176
+ * @param {?} name
177
+ * @return {?}
178
+ */
179
+ function (name) { return message.indexOf(name) > -1; }));
180
+ if (index < 0 && files.length === 1) {
181
+ index = 0;
182
+ }
183
+ if (index < 0) {
184
+ return true;
185
+ }
186
+ uploadErrors.set(files[index], __spread((uploadErrors.get(files[index]) || []), [message]));
187
+ return false;
94
188
  }));
95
189
  };
190
+ /**
191
+ * @private
192
+ * @param {?} err
193
+ * @return {?}
194
+ */
195
+ UploadDialogComponent.prototype.getErrorMessages = /**
196
+ * @private
197
+ * @param {?} err
198
+ * @return {?}
199
+ */
200
+ function (err) {
201
+ // HttpErrorResponse keeps the API body in `error`, an interceptor may already unwrap it
202
+ /** @type {?} */
203
+ var body = err && err.error && typeof err.error === 'object' ? err.error : err || {};
204
+ /** @type {?} */
205
+ var messages = (body.Messages || [])
206
+ .map((/**
207
+ * @param {?} message
208
+ * @return {?}
209
+ */
210
+ function (message) { return (typeof message === 'string' ? message : message && message.Text); }))
211
+ .filter(Boolean);
212
+ if (!messages.length && body.ResponseMessage) {
213
+ messages.push(body.ResponseMessage);
214
+ }
215
+ return messages.length
216
+ ? messages.filter((/**
217
+ * @param {?} message
218
+ * @param {?} index
219
+ * @return {?}
220
+ */
221
+ function (message, index) { return messages.indexOf(message) === index; }))
222
+ : [this.defaultErrorMessage];
223
+ };
96
224
  /**
97
225
  * @param {?=} res
98
226
  * @return {?}
@@ -111,15 +239,16 @@ var UploadDialogComponent = /** @class */ (function () {
111
239
  * @return {?}
112
240
  */
113
241
  function () {
242
+ this.isDestroyed = true;
114
243
  this.destroy$.next(true);
115
244
  this.destroy$.complete();
116
245
  };
117
246
  UploadDialogComponent.decorators = [
118
247
  { type: Component, args: [{
119
248
  selector: 'lib-upload-dialog',
120
- template: "<lib-modal heading=\"Add new assets\">\n <ng-container content>\n <lib-upload-file\n *ngIf=\"!uploadAssetsService?.getFiles?.length\"\n (revalidate)=\"onValidate($event)\"\n ></lib-upload-file>\n <lib-file-list\n *ngIf=\"uploadAssetsService?.getFiles?.length\"\n (revalidate)=\"onValidate($event)\"\n ></lib-file-list>\n </ng-container>\n <ng-container actions>\n <button mat-raised-button mat-dialog-close>Cancel</button>\n <button\n class=\"upload__action\"\n [class.loading]=\"isLoading\"\n mat-raised-button\n color=\"primary\"\n (click)=\"uploadFiles()\"\n [disabled]=\"disabled || isLoading\"\n >\n <ng-container *ngIf=\"isLoading\">\n <mat-spinner [diameter]=\"20\"></mat-spinner>\n </ng-container>\n <span>Upload</span>\n </button>\n </ng-container>\n</lib-modal>\n",
249
+ template: "<lib-modal heading=\"Add new assets\">\n <ng-container content>\n <lib-upload-file\n *ngIf=\"!uploadAssetsService?.getFiles?.length\"\n (revalidate)=\"onValidate($event)\"\n ></lib-upload-file>\n <lib-file-list\n *ngIf=\"uploadAssetsService?.getFiles?.length\"\n (revalidate)=\"onValidate($event)\"\n ></lib-file-list>\n <div *ngFor=\"let message of errorMessages\" class=\"upload__error\" role=\"alert\">\n <mat-icon class=\"upload__error--icon\">error_outline</mat-icon>\n <span>{{ message }}</span>\n </div>\n </ng-container>\n <ng-container actions>\n <button mat-raised-button mat-dialog-close [disabled]=\"isLoading\">Cancel</button>\n <button\n class=\"upload__action\"\n [class.loading]=\"isLoading\"\n mat-raised-button\n color=\"primary\"\n (click)=\"uploadFiles()\"\n [disabled]=\"disabled || isLoading\"\n >\n <ng-container *ngIf=\"isLoading\">\n <mat-spinner [diameter]=\"20\"></mat-spinner>\n </ng-container>\n <span>Upload</span>\n </button>\n </ng-container>\n</lib-modal>\n",
121
250
  providers: [UploadAssetsService],
122
- styles: [":host::ng-deep{display:block;width:1200px;max-width:100%;font-size:14px;line-height:16px;color:#979797;letter-spacing:.15px}:host::ng-deep .mat-dialog-title{position:relative;margin-bottom:0;padding-bottom:24px;color:#000}:host::ng-deep .mat-dialog-actions{justify-content:flex-end;padding:24px 0 0}:host::ng-deep .upload__action{min-width:100px}:host::ng-deep .upload__action.loading{padding:0 5px}:host::ng-deep .upload__action.loading .mat-button-wrapper{display:flex;width:100%;justify-content:center;align-items:center}:host::ng-deep .upload__action.loading .mat-spinner{margin-right:10px}"]
251
+ styles: [":host::ng-deep{display:block;width:1200px;max-width:100%;font-size:14px;line-height:16px;color:#979797;letter-spacing:.15px}:host::ng-deep .mat-dialog-title{position:relative;margin-bottom:0;padding-bottom:24px;color:#000}:host::ng-deep .mat-dialog-actions{justify-content:flex-end;padding:24px 0 0}:host::ng-deep .upload__error{display:flex;align-items:center;width:-moz-fit-content;width:fit-content;max-width:100%;margin-top:8px;padding:4px 10px;border-radius:6px;background-color:#fdecea;color:#d32f2f;font-size:13px;line-height:18px;word-break:break-word}:host::ng-deep .upload__error--icon{flex-shrink:0;margin-right:6px;font-size:16px;width:16px;height:16px}:host::ng-deep .upload__action{min-width:100px}:host::ng-deep .upload__action.loading{padding:0 5px}:host::ng-deep .upload__action.loading .mat-button-wrapper{display:flex;width:100%;justify-content:center;align-items:center}:host::ng-deep .upload__action.loading .mat-spinner{margin-right:10px}"]
123
252
  }] }
124
253
  ];
125
254
  /** @nocollapse */
@@ -137,6 +266,18 @@ if (false) {
137
266
  UploadDialogComponent.prototype.isLoading;
138
267
  /** @type {?} */
139
268
  UploadDialogComponent.prototype.disabled;
269
+ /** @type {?} */
270
+ UploadDialogComponent.prototype.errorMessages;
271
+ /**
272
+ * @type {?}
273
+ * @private
274
+ */
275
+ UploadDialogComponent.prototype.defaultErrorMessage;
276
+ /**
277
+ * @type {?}
278
+ * @private
279
+ */
280
+ UploadDialogComponent.prototype.isDestroyed;
140
281
  /**
141
282
  * @type {?}
142
283
  * @private
@@ -154,4 +295,4 @@ if (false) {
154
295
  /** @type {?} */
155
296
  UploadDialogComponent.prototype.uploadAssetsService;
156
297
  }
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcnMtcGsvYXNzZXQtbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3BhcnRpYWwvdXBsb2FkLWRpYWxvZy91cGxvYWQtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7QUFFOUUsb0JBSUM7OztJQUhDLCtCQUF1Qjs7SUFDdkIseUJBQWtCOztJQUNsQix3QkFBaUI7O0FBR25CO0lBVUUsK0JBQ2tDLElBQVcsRUFDcEMsU0FBOEMsRUFDN0MsaUJBQW9DLEVBQ3JDLG1CQUF3QztRQUhmLFNBQUksR0FBSixJQUFJLENBQU87UUFDcEMsY0FBUyxHQUFULFNBQVMsQ0FBcUM7UUFDN0Msc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNyQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBUDFDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNmLGFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQU9qRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjO2dCQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxPQUFPO29CQUM1QixDQUFDLFVBQUssSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsRUFDN0MsQ0FBQyxVQUFLLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNyQixJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7U0FDMUU7SUFFSCxDQUFDOzs7O0lBRUQsd0NBQVE7OztJQUFSO1FBQUEsaUJBUUM7UUFQQyxJQUFJLENBQUMsbUJBQW1CO2FBQ3JCLFdBQVcsRUFBRTthQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVM7Ozs7UUFBQyxVQUFBLEtBQUs7WUFDZCxLQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QixLQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekMsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOzs7OztJQUVELDBDQUFVOzs7O0lBQVYsVUFBVyxRQUFpQjtRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDOzs7O0lBRUQsMkNBQVc7OztJQUFYO1FBQUEsaUJBVUM7UUFUQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsbUJBQW1CO2FBQ3JCLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO2FBQzlDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVM7Ozs7UUFBQyxVQUFBLEdBQUc7WUFDWixJQUFJLEdBQUcsRUFBRTtnQkFDUCxLQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3hCO1FBQ0gsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOzs7OztJQUVELDJDQUFXOzs7O0lBQVgsVUFBWSxHQUFhO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7Ozs7SUFFRCwyQ0FBVzs7O0lBQVg7UUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7O2dCQTlERixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IscTNCQUE2QztvQkFFN0MsU0FBUyxFQUFFLENBQUMsbUJBQW1CLENBQUM7O2lCQUNqQzs7OztnREFNSSxNQUFNLFNBQUMsZUFBZTtnQkF2QmxCLFlBQVk7Z0JBR1osaUJBQWlCO2dCQUNqQixtQkFBbUI7O0lBdUU1Qiw0QkFBQztDQUFBLEFBL0RELElBK0RDO1NBekRZLHFCQUFxQjs7O0lBQ2hDLDBDQUF5Qjs7SUFDekIseUNBQXVCOzs7OztJQUN2Qix5Q0FBbUQ7O0lBRWpELHFDQUEyQzs7SUFDM0MsMENBQXFEOzs7OztJQUNyRCxrREFBNEM7O0lBQzVDLG9EQUErQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVwbG9hZEFzc2V0c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91cGxvYWQtYXNzZXRzLnNlcnZpY2UnO1xuXG5pbnRlcmZhY2UgSURhdGEge1xuICBjdXJyZW50QXNzZXRJZDogc3RyaW5nO1xuICBmaWxlVHlwZT86IHN0cmluZztcbiAgbWF4U2l6ZT86IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXVwbG9hZC1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vdXBsb2FkLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3VwbG9hZC1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbVXBsb2FkQXNzZXRzU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFVwbG9hZERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIGlzTG9hZGluZyA9IGZhbHNlO1xuICBwdWJsaWMgZGlzYWJsZWQgPSB0cnVlO1xuICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBJRGF0YSxcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VXBsb2FkRGlhbG9nQ29tcG9uZW50PixcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgdXBsb2FkQXNzZXRzU2VydmljZTogVXBsb2FkQXNzZXRzU2VydmljZVxuICApIHtcbiAgICBpZiAodGhpcy5kYXRhLmZpbGVUeXBlKSB7XG4gICAgICB0aGlzLnVwbG9hZEFzc2V0c1NlcnZpY2Uuc3VwcG9ydGVkVHlwZXMgPVxuICAgICAgICB0aGlzLmRhdGEuZmlsZVR5cGUgPT09ICdJbWFnZSdcbiAgICAgICAgICA/IFsuLi50aGlzLnVwbG9hZEFzc2V0c1NlcnZpY2UuaW1hZ2VFeHRlbnNpb25dXG4gICAgICAgICAgOiBbLi4udGhpcy51cGxvYWRBc3NldHNTZXJ2aWNlLmRvY3VtZW50RXh0ZW5zaW9uXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRhLm1heFNpemUpIHtcbiAgICAgIHRoaXMudXBsb2FkQXNzZXRzU2VydmljZS5zdXBwb3J0ZWRTaXplID0gdGhpcy5kYXRhLm1heFNpemUgKiAxMDI0ICogMTAyNDtcbiAgICB9XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudXBsb2FkQXNzZXRzU2VydmljZVxuICAgICAgLmdldEVycm9yT2JzKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoZXJyb3IgPT4ge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gZXJyb3I7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gIH1cblxuICBvblZhbGlkYXRlKGhhc0Vycm9yOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGhhc0Vycm9yO1xuICB9XG5cbiAgdXBsb2FkRmlsZXMoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMudXBsb2FkQXNzZXRzU2VydmljZVxuICAgICAgLnVwbG9hZE11bHRpcGxlQXNzZXRzKHRoaXMuZGF0YS5jdXJyZW50QXNzZXRJZClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgIHRoaXMuY2xvc2VEaWFsb2codHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgY2xvc2VEaWFsb2cocmVzPzogYm9vbGVhbikge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlcyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcnMtcGsvYXNzZXQtbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3BhcnRpYWwvdXBsb2FkLWRpYWxvZy91cGxvYWQtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7QUFFOUUsb0JBSUM7OztJQUhDLCtCQUF1Qjs7SUFDdkIseUJBQWtCOztJQUNsQix3QkFBaUI7O0FBR25CO0lBYUUsK0JBQ2tDLElBQVcsRUFDcEMsU0FBOEMsRUFDN0MsaUJBQW9DLEVBQ3JDLG1CQUF3QztRQUhmLFNBQUksR0FBSixJQUFJLENBQU87UUFDcEMsY0FBUyxHQUFULFNBQVMsQ0FBcUM7UUFDN0Msc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNyQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBVjFDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixrQkFBYSxHQUFhLEVBQUUsQ0FBQztRQUNuQix3QkFBbUIsR0FBRyx5REFBeUQsQ0FBQztRQUN6RixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixhQUFRLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFPakQsSUFBSSxJQUFJ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SUM7U0ExSFkscUJBQXFCOzs7SUFDaEMsMENBQXlCOztJQUN6Qix5Q0FBdUI7O0lBQ3ZCLDhDQUFvQzs7Ozs7SUFDcEMsb0RBQWlHOzs7OztJQUNqRyw0Q0FBNEI7Ozs7O0lBQzVCLHlDQUFtRDs7SUFFakQscUNBQTJDOztJQUMzQywwQ0FBcUQ7Ozs7O0lBQ3JELGtEQUE0Qzs7SUFDNUMsb0RBQStDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXBsb2FkQXNzZXRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3VwbG9hZC1hc3NldHMuc2VydmljZSc7XG5cbmludGVyZmFjZSBJRGF0YSB7XG4gIGN1cnJlbnRBc3NldElkOiBzdHJpbmc7XG4gIGZpbGVUeXBlPzogc3RyaW5nO1xuICBtYXhTaXplPzogbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItdXBsb2FkLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXBsb2FkLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtVcGxvYWRBc3NldHNTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgVXBsb2FkRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgaXNMb2FkaW5nID0gZmFsc2U7XG4gIHB1YmxpYyBkaXNhYmxlZCA9IHRydWU7XG4gIHB1YmxpYyBlcnJvck1lc3NhZ2VzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRFcnJvck1lc3NhZ2UgPSAnU29tZXRoaW5nIHdlbnQgd3Jvbmcgd2hpbGUgdXBsb2FkaW5nLiBQbGVhc2UgdHJ5IGFnYWluLic7XG4gIHByaXZhdGUgaXNEZXN0cm95ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogSURhdGEsXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFVwbG9hZERpYWxvZ0NvbXBvbmVudD4sXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIHVwbG9hZEFzc2V0c1NlcnZpY2U6IFVwbG9hZEFzc2V0c1NlcnZpY2VcbiAgKSB7XG4gICAgaWYgKHRoaXMuZGF0YS5maWxlVHlwZSkge1xuICAgICAgdGhpcy51cGxvYWRBc3NldHNTZXJ2aWNlLnN1cHBvcnRlZFR5cGVzID1cbiAgICAgICAgdGhpcy5kYXRhLmZpbGVUeXBlID09PSAnSW1hZ2UnXG4gICAgICAgICAgPyBbLi4udGhpcy51cGxvYWRBc3NldHNTZXJ2aWNlLmltYWdlRXh0ZW5zaW9uXVxuICAgICAgICAgIDogWy4uLnRoaXMudXBsb2FkQXNzZXRzU2VydmljZS5kb2N1bWVudEV4dGVuc2lvbl07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0YS5tYXhTaXplKSB7XG4gICAgICB0aGlzLnVwbG9hZEFzc2V0c1NlcnZpY2Uuc3VwcG9ydGVkU2l6ZSA9IHRoaXMuZGF0YS5tYXhTaXplICogMTAyNCAqIDEwMjQ7XG4gICAgfVxuXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnVwbG9hZEFzc2V0c1NlcnZpY2VcbiAgICAgIC5nZXRFcnJvck9icygpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKGVycm9yID0+IHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGVycm9yO1xuICAgICAgICB0aGlzLmNsZWFyRXJyb3JzKCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gIH1cblxuICBvblZhbGlkYXRlKGhhc0Vycm9yOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGhhc0Vycm9yO1xuICAgIHRoaXMuY2xlYXJFcnJvcnMoKTtcbiAgfVxuXG4gIHVwbG9hZEZpbGVzKCkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmNsZWFyRXJyb3JzKCk7XG4gICAgdGhpcy5kaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcbiAgICB0aGlzLnVwbG9hZEFzc2V0c1NlcnZpY2VcbiAgICAgIC51cGxvYWRNdWx0aXBsZUFzc2V0cyh0aGlzLmRhdGEuY3VycmVudEFzc2V0SWQpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICByZXMgPT4ge1xuICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEaWFsb2codHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0VXBsb2FkRXJyb3JzKHRoaXMuZ2V0RXJyb3JNZXNzYWdlcyhlcnIpKTtcbiAgICAgICAgICB0aGlzLnN0b3BMb2FkaW5nKCk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIHRoZSByZXF1ZXN0IGNhbiBjb21wbGV0ZSB3aXRob3V0IGEgdHJ1dGh5IHJlc3BvbnNlIChvciBiZSBzd2FsbG93ZWQgYnkgYW4gaW50ZXJjZXB0b3IpXG4gICAgICAgICgpID0+IHRoaXMuc3RvcExvYWRpbmcoKVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcExvYWRpbmcoKSB7XG4gICAgLy8gdGFrZVVudGlsIGFsc28gY29tcGxldGVzIHRoZSB1cGxvYWQgd2hlbiB0aGUgZGlhbG9nIGlzIGRlc3Ryb3llZCwgaXRzIHZpZXcgY2FuJ3QgYmUgY2hlY2tlZCBhbnltb3JlXG4gICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmRpYWxvZ1JlZi5kaXNhYmxlQ2xvc2UgPSBmYWxzZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJFcnJvcnMoKSB7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gW107XG4gICAgdGhpcy51cGxvYWRBc3NldHNTZXJ2aWNlLnVwbG9hZEVycm9ycy5jbGVhcigpO1xuICB9XG5cbiAgLy8gc2hvdyBlYWNoIG1lc3NhZ2Ugb24gdGhlIGZpbGUgaXQgbWVudGlvbnMsIHRoZSByZXN0IHN0YXkgdW5kZXIgdGhlIGxpc3RcbiAgcHJpdmF0ZSBzZXRVcGxvYWRFcnJvcnMobWVzc2FnZXM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgeyBnZXRGaWxlczogZmlsZXMsIHVwbG9hZEVycm9ycyB9ID0gdGhpcy51cGxvYWRBc3NldHNTZXJ2aWNlO1xuICAgIGNvbnN0IHVwbG9hZE5hbWVzID0gZmlsZXMubWFwKChmaWxlLCBpbmRleCkgPT4gdGhpcy51cGxvYWRBc3NldHNTZXJ2aWNlLmdldFVwbG9hZE5hbWUoaW5kZXgpKTtcblxuICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IG1lc3NhZ2VzLmZpbHRlcihtZXNzYWdlID0+IHtcbiAgICAgIGxldCBpbmRleCA9IHVwbG9hZE5hbWVzLmZpbmRJbmRleChuYW1lID0+IG1lc3NhZ2UuaW5kZXhPZihuYW1lKSA+IC0xKTtcbiAgICAgIGlmIChpbmRleCA8IDAgJiYgZmlsZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGluZGV4ID0gMDtcbiAgICAgIH1cbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICB1cGxvYWRFcnJvcnMuc2V0KGZpbGVzW2luZGV4XSwgWy4uLih1cGxvYWRFcnJvcnMuZ2V0KGZpbGVzW2luZGV4XSkgfHwgW10pLCBtZXNzYWdlXSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEVycm9yTWVzc2FnZXMoZXJyKTogc3RyaW5nW10ge1xuICAgIC8vIEh0dHBFcnJvclJlc3BvbnNlIGtlZXBzIHRoZSBBUEkgYm9keSBpbiBgZXJyb3JgLCBhbiBpbnRlcmNlcHRvciBtYXkgYWxyZWFkeSB1bndyYXAgaXRcbiAgICBjb25zdCBib2R5ID0gZXJyICYmIGVyci5lcnJvciAmJiB0eXBlb2YgZXJyLmVycm9yID09PSAnb2JqZWN0JyA/IGVyci5lcnJvciA6IGVyciB8fCB7fTtcbiAgICBjb25zdCBtZXNzYWdlczogc3RyaW5nW10gPSAoYm9keS5NZXNzYWdlcyB8fCBbXSlcbiAgICAgIC5tYXAobWVzc2FnZSA9PiAodHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnID8gbWVzc2FnZSA6IG1lc3NhZ2UgJiYgbWVzc2FnZS5UZXh0KSlcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICBpZiAoIW1lc3NhZ2VzLmxlbmd0aCAmJiBib2R5LlJlc3BvbnNlTWVzc2FnZSkge1xuICAgICAgbWVzc2FnZXMucHVzaChib2R5LlJlc3BvbnNlTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lc3NhZ2VzLmxlbmd0aFxuICAgICAgPyBtZXNzYWdlcy5maWx0ZXIoKG1lc3NhZ2UsIGluZGV4KSA9PiBtZXNzYWdlcy5pbmRleE9mKG1lc3NhZ2UpID09PSBpbmRleClcbiAgICAgIDogW3RoaXMuZGVmYXVsdEVycm9yTWVzc2FnZV07XG4gIH1cblxuICBjbG9zZURpYWxvZyhyZXM/OiBib29sZWFuKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UocmVzKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==