@fundamental-ngx/platform 0.43.6 → 0.43.7

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.
Files changed (44) hide show
  1. package/esm2020/form/multi-combobox/commons/base-multi-combobox.mjs +8 -2
  2. package/esm2020/search-field/search-field.component.mjs +3 -3
  3. package/esm2020/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +1 -1
  4. package/esm2020/table/components/table-toolbar/table-toolbar.component.mjs +3 -3
  5. package/esm2020/table/table.component.mjs +30 -5
  6. package/esm2020/table-helpers/directives/table-draggable.directive.mjs +8 -2
  7. package/esm2020/table-helpers/table.mjs +2 -1
  8. package/esm2020/upload-collection/upload-collection/upload-collection.component.mjs +1 -1
  9. package/esm2020/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +1 -1
  10. package/fesm2015/fundamental-ngx-platform-form.mjs +7 -1
  11. package/fesm2015/fundamental-ngx-platform-form.mjs.map +1 -1
  12. package/fesm2015/fundamental-ngx-platform-search-field.mjs +2 -2
  13. package/fesm2015/fundamental-ngx-platform-search-field.mjs.map +1 -1
  14. package/fesm2015/fundamental-ngx-platform-smart-filter-bar.mjs +1 -1
  15. package/fesm2015/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  16. package/fesm2015/fundamental-ngx-platform-table-helpers.mjs +8 -1
  17. package/fesm2015/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  18. package/fesm2015/fundamental-ngx-platform-table.mjs +31 -4
  19. package/fesm2015/fundamental-ngx-platform-table.mjs.map +1 -1
  20. package/fesm2015/fundamental-ngx-platform-upload-collection.mjs +1 -1
  21. package/fesm2015/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
  22. package/fesm2015/fundamental-ngx-platform-variant-management.mjs +1 -1
  23. package/fesm2015/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  24. package/fesm2020/fundamental-ngx-platform-form.mjs +7 -1
  25. package/fesm2020/fundamental-ngx-platform-form.mjs.map +1 -1
  26. package/fesm2020/fundamental-ngx-platform-search-field.mjs +2 -2
  27. package/fesm2020/fundamental-ngx-platform-search-field.mjs.map +1 -1
  28. package/fesm2020/fundamental-ngx-platform-smart-filter-bar.mjs +1 -1
  29. package/fesm2020/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  30. package/fesm2020/fundamental-ngx-platform-table-helpers.mjs +8 -1
  31. package/fesm2020/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  32. package/fesm2020/fundamental-ngx-platform-table.mjs +29 -4
  33. package/fesm2020/fundamental-ngx-platform-table.mjs.map +1 -1
  34. package/fesm2020/fundamental-ngx-platform-upload-collection.mjs +1 -1
  35. package/fesm2020/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
  36. package/fesm2020/fundamental-ngx-platform-variant-management.mjs +1 -1
  37. package/fesm2020/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  38. package/fundamental-ngx-platform-v0.43.7.tgz +0 -0
  39. package/package.json +4 -4
  40. package/schematics/ng-add/index.js +1 -1
  41. package/table/components/table-toolbar/table-toolbar.component.d.ts +2 -2
  42. package/table/table.component.d.ts +15 -1
  43. package/table-helpers/table.d.ts +21 -19
  44. package/fundamental-ngx-platform-v0.43.6.tgz +0 -0
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/member-ordering */
1
2
  import { ChangeDetectorRef, Directive, EventEmitter, forwardRef, HostBinding, inject, Input, NgZone, Output } from '@angular/core';
2
3
  import { take } from 'rxjs/operators';
3
4
  import { FDP_TABLE_DRAGGABLE_DIRECTIVE } from '../constants';
@@ -22,7 +23,9 @@ export class TableDraggableDirective extends TableDraggable {
22
23
  /** @hidden */
23
24
  this._ngZone = inject(NgZone);
24
25
  /** @hidden */
25
- this._cdr = inject(ChangeDetectorRef);
26
+ this._cdr = inject(ChangeDetectorRef, {
27
+ host: true
28
+ });
26
29
  /** @hidden */
27
30
  this.dragDropInProgress = false;
28
31
  }
@@ -77,6 +80,8 @@ export class TableDraggableDirective extends TableDraggable {
77
80
  });
78
81
  this._onZoneFree(() => {
79
82
  if (this.isTreeTable && event.draggedItemIndex !== event.replacedItemIndex) {
83
+ event.draggedItemIndex = this._table._tableRowsInViewPortPlaceholder[event.draggedItemIndex];
84
+ event.replacedItemIndex = this._table._tableRowsInViewPortPlaceholder[event.replacedItemIndex];
80
85
  const dragRow = this._table._tableRows.find((row) => row === this._table._tableRowsVisible[event.draggedItemIndex]);
81
86
  const dropRow = this._table._tableRows.find((row) => row === this._table._tableRowsVisible[event.replacedItemIndex]);
82
87
  if (!dragRow || !dropRow || this._isDroppedInsideItself(dropRow, dragRow)) {
@@ -93,6 +98,7 @@ export class TableDraggableDirective extends TableDraggable {
93
98
  }
94
99
  this._cdr.detectChanges();
95
100
  this._emitRowsRearrangeEvent(dragRow, dropRow, event);
101
+ this._table.refreshDndList();
96
102
  }
97
103
  });
98
104
  }
@@ -238,4 +244,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
238
244
  }], rowsRearrange: [{
239
245
  type: Output
240
246
  }] } });
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZHJhZ2dhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi90YWJsZS1oZWxwZXJzL2RpcmVjdGl2ZXMvdGFibGUtZHJhZ2dhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFRdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVELE9BQU8sRUFBWSx1QkFBdUIsRUFBMEIsTUFBTSxXQUFXLENBQUM7QUFDdEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQWN0RCxNQUFNLE9BQU8sdUJBQWlDLFNBQVEsY0FBaUI7SUFYdkU7O1FBWUksNEVBQTRFO1FBRTVFLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUUzQixvQ0FBb0M7UUFHcEMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEI7O1dBRUc7UUFFSCxhQUFRLEdBQWtCLE1BQU0sQ0FBQztRQWFqQyx5SEFBeUg7UUFFaEgsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBOEIsQ0FBQztRQVV4RSxjQUFjO1FBQ0csWUFBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUxQyxjQUFjO1FBQ0csU0FBSSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWxELGNBQWM7UUFDZCx1QkFBa0IsR0FBRyxLQUFLLENBQUM7S0FpTzlCO0lBaFBHLGNBQWM7SUFDZCxJQUFJLGNBQWM7UUFDZCxPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3hELENBQUM7SUFjRCw0QkFBNEI7SUFDNUIsUUFBUSxDQUFDLEtBQVk7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNULElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFDbkMsQ0FBQztJQUVELDBEQUEwRDtJQUMxRCxtQkFBbUIsQ0FBQyxHQUFXLEVBQUUsS0FBWSxFQUFFLGVBQXVCLEVBQUUsSUFBdUI7UUFDM0YsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdEIsT0FBTztTQUNWO1FBQ0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksYUFBYSxDQUFDO1FBQ2xCLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFHLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTdGLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUM5QyxNQUFNLGFBQWEsR0FBNkI7Z0JBQzVDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQjtnQkFDcEMsZ0JBQWdCLEVBQUUsZUFBZTtnQkFDakMsaUJBQWlCLEVBQUUsYUFBYTtnQkFDaEMsUUFBUSxFQUFFLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUTtnQkFDN0MsSUFBSTthQUNQLENBQUM7WUFDRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDckMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWCxLQUFLLENBQUMsTUFBc0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMxQyxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVELDBEQUEwRDtJQUMxRCxhQUFhO1FBQ1Qsc0RBQXNEO1FBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ2hDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELHFEQUFxRDtJQUNyRCxnQkFBZ0IsQ0FBQyxLQUE0QjtRQUN6QyxzREFBc0Q7UUFDdEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLGdCQUFnQixLQUFLLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtnQkFDeEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN2QyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQ3pFLENBQUM7Z0JBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN2QyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQzFFLENBQUM7Z0JBRUYsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFO29CQUN2RSxPQUFPO2lCQUNWO2dCQUVELElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFcEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7b0JBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUN2RDtxQkFBTTtvQkFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLENBQUM7aUJBQ3BDO2dCQUVELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ3pEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsdUJBQXVCLENBQUMsR0FBYSxFQUFFLE9BQWlCLEVBQUUsS0FBNEI7UUFDbEYsTUFBTSxJQUFJLEdBQVUsRUFBRSxDQUFDO1FBRXZCLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN4QyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNuQixJQUFJLHVCQUF1QixDQUN2QixHQUFHLENBQUMsS0FBSyxFQUNULE9BQU8sQ0FBQyxLQUFLLEVBQ2IsS0FBSyxDQUFDLGdCQUFnQixFQUN0QixLQUFLLENBQUMsaUJBQWlCLEVBQ3ZCLEtBQUssQ0FBQyxRQUFRLEVBQ2QsS0FBSyxDQUFDLElBQUksRUFDVixJQUFJLENBQ1AsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWM7SUFDTixzQkFBc0IsQ0FBQyxPQUFpQixFQUFFLE9BQWlCO1FBQy9ELE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxPQUFPLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELGNBQWM7SUFDTixzQ0FBc0MsQ0FBQyxPQUFpQjtRQUM1RCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBRWpDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDWixPQUFPO1NBQ1Y7UUFFRCxNQUFNLGlCQUFpQixHQUFHLGVBQWUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3RSxNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFekUsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMvRCxTQUFTLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ04sZ0NBQWdDLENBQUMsT0FBaUIsRUFBRSxPQUFpQixFQUFFLElBQXdCO1FBQ25HLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNoQiw2Q0FBNkM7WUFDN0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMvRTtRQUNELE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFM0QsSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFO1lBQ2xCLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUNqQixPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN6QztZQUVELE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9CLE9BQU8sQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1NBQy9CO2FBQU07WUFDSCxPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDaEMsT0FBTyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtnQkFDaEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO2FBQ3RDO1NBQ0o7UUFFRCxNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3JCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjO0lBQ04sMEJBQTBCLENBQUMsT0FBaUIsRUFBRSxPQUFpQixFQUFFLEtBQTRCO1FBQ2pHLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7WUFDeEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDeEQ7YUFBTTtZQUNILElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDbkQ7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNOLDJCQUEyQixDQUFDLE9BQWlCLEVBQUUsT0FBaUI7UUFDcEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFFdkMsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sZUFBZSxHQUFHLGVBQWUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV6RSxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTVFLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FBQztRQUNqRSxNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFekUsTUFBTSxrQkFBa0IsR0FBRyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUV0RCxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztRQUNoSCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBRXRFLE9BQU87WUFDSCxPQUFPO1lBQ1AsVUFBVTtZQUNWLGdCQUFnQjtZQUNoQixZQUFZO1NBQ2YsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjO0lBQ04sc0JBQXNCLENBQUMsT0FBaUIsRUFBRSxPQUFpQixFQUFFLEtBQTRCO1FBQzdGLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FDNUYsT0FBTyxFQUNQLE9BQU8sQ0FDVixDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUc7WUFDckIsR0FBRyxPQUFPO1lBQ1YsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNuRCxHQUFHLFVBQVU7WUFDYixHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1lBQ25ELEdBQUcsZ0JBQWdCO1NBQ3RCLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYztJQUNOLHdCQUF3QixDQUFDLE9BQWlCLEVBQUUsT0FBaUI7UUFDakUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUM1RixPQUFPLEVBQ1AsT0FBTyxDQUNWLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsWUFBWSxFQUFFLEdBQUcsVUFBVSxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsY0FBYztJQUNOLFdBQVcsQ0FBQyxRQUFvQjtRQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3ZELFFBQVEsRUFBRSxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztvSEE5UVEsdUJBQXVCO3dHQUF2Qix1QkFBdUIsMFlBUHJCO1FBQ1A7WUFDSSxPQUFPLEVBQUUsNkJBQTZCO1lBQ3RDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7U0FDekQ7S0FDSjsyRkFFUSx1QkFBdUI7a0JBWG5DLFNBQVM7bUJBQUM7b0JBQ1AsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsd0RBQXdEO29CQUNsRSxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSw2QkFBNkI7NEJBQ3RDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDO3lCQUN6RDtxQkFDSjtpQkFDSjs4QkFJRyxtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBTU4sV0FBVztzQkFGVixXQUFXO3VCQUFDLHNCQUFzQjs7c0JBQ2xDLEtBQUs7Z0JBT04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLGFBQWE7c0JBRFosS0FBSztnQkFRTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBS0csYUFBYTtzQkFEckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBEcmFnb3ZlclByZWRpY2F0ZSxcbiAgICBEcm9wUHJlZGljYXRlLFxuICAgIEZkRG5kRHJvcEV2ZW50TW9kZSxcbiAgICBGZERuZERyb3BUeXBlLFxuICAgIEZkRHJvcEV2ZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGRFBfVEFCTEVfRFJBR0dBQkxFX0RJUkVDVElWRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUYWJsZVJvd1R5cGUgfSBmcm9tICcuLi9lbnVtcyc7XG5pbXBvcnQgeyBmaW5kUm93Q2hpbGRyZW4sIGdldFJvd1BhcmVudHMgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IFRhYmxlUm93LCBUYWJsZVJvd3NSZWFycmFuZ2VFdmVudCwgVXBkYXRlZERuZFJvd3NQb3NpdGlvbiB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBUYWJsZURyYWdnYWJsZSB9IGZyb20gJy4uL21vZGVscy9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi4vdGFibGUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnZmRwLXRhYmxlW2lzVHJlZVRhYmxlXSwgZmRwLXRhYmxlW2VuYWJsZVJvd1Jlb3JkZXJpbmddJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRFBfVEFCTEVfRFJBR0dBQkxFX0RJUkVDVElWRSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRhYmxlRHJhZ2dhYmxlRGlyZWN0aXZlKVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZURyYWdnYWJsZURpcmVjdGl2ZTxUID0gYW55PiBleHRlbmRzIFRhYmxlRHJhZ2dhYmxlPFQ+IHtcbiAgICAvKiogV2hldGhlciB0byBhbGxvdyBmb3Igcm93IHJlb3JkZXJpbmcgb24gdHJlZSB0YWJsZXMgdmlhIGRyYWcgYW5kIGRyb3AuICovXG4gICAgQElucHV0KClcbiAgICBlbmFibGVSb3dSZW9yZGVyaW5nID0gdHJ1ZTtcblxuICAgIC8qKiBXaGV0aGVyIHRyZWUgbW9kZSBpcyBlbmFibGVkLiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtdGFibGUtLXRyZWUnKVxuICAgIEBJbnB1dCgpXG4gICAgaXNUcmVlVGFibGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFJvdyBkcm9wIG1vZGUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkcm9wTW9kZTogRmREbmREcm9wVHlwZSA9ICdhdXRvJztcblxuICAgIC8qKiBQcmVkaWNhdGUgZnVuY3Rpb24gdGhhdCBjaGVja3Mgd2hldGhlciB0aGUgaXRlbSBjYW4gYmUgZHJvcHBlZCBvdmVyIGFub3RoZXIgaXRlbS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRyb3BQcmVkaWNhdGU6IERyb3BQcmVkaWNhdGU8VGFibGVSb3c8VD4+O1xuXG4gICAgLyoqXG4gICAgICogUHJlZGljYXRlIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIHdoZXRoZXIgdGhlIGl0ZW0gY2FuIGJlIGRyYWdnZWQgb3ZlciBhbm90aGVyIGl0ZW0uXG4gICAgICogSWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYCwgZHJhZ2dlZCBvdmVyIGl0ZW0gd2lsbCBub3QgYmUgaGlnaGxpZ2h0ZWQsIGFuZCBkcm9wIGV2ZW50IHdpbGwgYmUgY2FuY2VsZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkcmFnb3ZlclByZWRpY2F0ZTogRHJhZ292ZXJQcmVkaWNhdGU8VGFibGVSb3c8VD4+O1xuXG4gICAgLyoqIEV2ZW50IGZpcmVkIHdoZW4gdHJlZSByb3dzIHJlYXJyYW5nZWQgdGhyb3VnaCBkcmFnICYgZHJvcC4gQ29uc2lkZXIgdGhhdCByb3dzIHJlYXJyYW5nZWQgd2l0aCB0aGVpciBjaGlsZHJlbiByb3dzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IHJvd3NSZWFycmFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlUm93c1JlYXJyYW5nZUV2ZW50PFQ+PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3Jvd3NEcmFnZ2FibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVHJlZVRhYmxlICYmIHRoaXMuZW5hYmxlUm93UmVvcmRlcmluZztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RhYmxlOiBUYWJsZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGRyYWdEcm9wSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gICAgLyoqIFNldHMgdGFibGUgcmVmZXJlbmNlLiAqL1xuICAgIHNldFRhYmxlKHRhYmxlOiBUYWJsZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZSA9IHRhYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYXRlcyBkcmFnJmRyb3Agc2VxdWVuY2UuXG4gICAgICovXG4gICAgZHJhZ0Ryb3BTdGFydCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kcmFnRHJvcEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgY2FsbGVkIHdoZW4gZG5kIHBlcmZvcm1lZCB3aXRoIHRoZSBrZXlib2FyZC4gKi9cbiAgICBkcmFnUm93RnJvbUtleWJvYXJkKGRpcjogc3RyaW5nLCBldmVudDogRXZlbnQsIGN1cnJlbnRSb3dJbmRleDogbnVtYmVyLCBtb2RlOiAnc2hpZnQnIHwgJ2dyb3VwJyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3Jvd3NEcmFnZ2FibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBsZXQgcmVwbGFjZWRJbmRleDtcbiAgICAgICAgZGlyID09PSAndXAnID8gKHJlcGxhY2VkSW5kZXggPSBjdXJyZW50Um93SW5kZXggLSAxKSA6IChyZXBsYWNlZEluZGV4ID0gY3VycmVudFJvd0luZGV4ICsgMSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlW3JlcGxhY2VkSW5kZXhdKSB7XG4gICAgICAgICAgICBjb25zdCBkcmFnRHJvcEV2ZW50OiBGZERyb3BFdmVudDxUYWJsZVJvdzxUPj4gPSB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGRyYWdnZWRJdGVtSW5kZXg6IGN1cnJlbnRSb3dJbmRleCxcbiAgICAgICAgICAgICAgICByZXBsYWNlZEl0ZW1JbmRleDogcmVwbGFjZWRJbmRleCxcbiAgICAgICAgICAgICAgICBpbnNlcnRBdDogZGlyID09PSAnZG93bicgPyAnYWZ0ZXInIDogJ2JlZm9yZScsXG4gICAgICAgICAgICAgICAgbW9kZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuZHJhZ0Ryb3BJdGVtRHJvcChkcmFnRHJvcEV2ZW50KTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmZvY3VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBNZXRob2QgY2FsbGVkIHdoZW4gZHJhZyZkcm9wIGV2ZW50IGJlaW5nIGNhbmNlbGxlZC4gKi9cbiAgICBkcm9wQ2FuY2VsbGVkKCk6IHZvaWQge1xuICAgICAgICAvKiogQWZ0ZXIgdGltZW91dCB0byBtYWtlIGNsaWNrIGV2ZW50IGhhbmRsZWQgZmlyc3QgKi9cbiAgICAgICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMuZHJhZ0Ryb3BJblByb2dyZXNzID0gZmFsc2UpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCBjYWxsZWQgd2hlbiBkcmFnZ2VkIGl0ZW0gYmVpbmcgZHJvcHBlZC4gKi9cbiAgICBkcmFnRHJvcEl0ZW1Ecm9wKGV2ZW50OiBGZERyb3BFdmVudDxUYWJsZVJvdz4pOiB2b2lkIHtcbiAgICAgICAgLyoqIEFmdGVyIHRpbWVvdXQgdG8gbWFrZSBjbGljayBldmVudCBoYW5kbGVkIGZpcnN0ICovXG4gICAgICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLmRyYWdEcm9wSW5Qcm9ncmVzcyA9IGZhbHNlKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX29uWm9uZUZyZWUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNUcmVlVGFibGUgJiYgZXZlbnQuZHJhZ2dlZEl0ZW1JbmRleCAhPT0gZXZlbnQucmVwbGFjZWRJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkcmFnUm93ID0gdGhpcy5fdGFibGUuX3RhYmxlUm93cy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAocm93KSA9PiByb3cgPT09IHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlW2V2ZW50LmRyYWdnZWRJdGVtSW5kZXhdXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkcm9wUm93ID0gdGhpcy5fdGFibGUuX3RhYmxlUm93cy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAocm93KSA9PiByb3cgPT09IHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlW2V2ZW50LnJlcGxhY2VkSXRlbUluZGV4XVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWRyYWdSb3cgfHwgIWRyb3BSb3cgfHwgdGhpcy5faXNEcm9wcGVkSW5zaWRlSXRzZWxmKGRyb3BSb3csIGRyYWdSb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9kcmFnRHJvcFVwZGF0ZURyYWdQYXJlbnRSb3dBdHRyaWJ1dGVzKGRyYWdSb3cpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RyYWdEcm9wUmVhcnJhbmdlVHJlZVJvd3MoZHJhZ1JvdywgZHJvcFJvdywgZXZlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RyYWdEcm9wVXBkYXRlRHJvcFJvd0F0dHJpYnV0ZXMoZHJhZ1JvdywgZHJvcFJvdywgZXZlbnQubW9kZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWRyb3BSb3cuZXhwYW5kZWQgJiYgZXZlbnQubW9kZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90YWJsZS50b2dnbGVFeHBhbmRhYmxlVGFibGVSb3coZHJvcFJvdywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFibGUub25UYWJsZVJvd3NDaGFuZ2VkKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Um93c1JlYXJyYW5nZUV2ZW50KGRyYWdSb3csIGRyb3BSb3csIGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENyZWF0ZSB0YWJsZSByb3dzIHJlYXJyYW5nZSBldmVudFxuICAgICAqL1xuICAgIF9lbWl0Um93c1JlYXJyYW5nZUV2ZW50KHJvdzogVGFibGVSb3csIGRyb3BSb3c6IFRhYmxlUm93LCBldmVudDogRmREcm9wRXZlbnQ8VGFibGVSb3c+KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJvd3M6IGFueVtdID0gW107XG5cbiAgICAgICAgdGhpcy5fdGFibGUuX3RhYmxlUm93cy5mb3JFYWNoKChyLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgci5pbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgcm93cy5wdXNoKHIudmFsdWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnJvd3NSZWFycmFuZ2UuZW1pdChcbiAgICAgICAgICAgIG5ldyBUYWJsZVJvd3NSZWFycmFuZ2VFdmVudChcbiAgICAgICAgICAgICAgICByb3cudmFsdWUsXG4gICAgICAgICAgICAgICAgZHJvcFJvdy52YWx1ZSxcbiAgICAgICAgICAgICAgICBldmVudC5kcmFnZ2VkSXRlbUluZGV4LFxuICAgICAgICAgICAgICAgIGV2ZW50LnJlcGxhY2VkSXRlbUluZGV4LFxuICAgICAgICAgICAgICAgIGV2ZW50Lmluc2VydEF0LFxuICAgICAgICAgICAgICAgIGV2ZW50Lm1vZGUsXG4gICAgICAgICAgICAgICAgcm93c1xuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNEcm9wcGVkSW5zaWRlSXRzZWxmKGRyb3BSb3c6IFRhYmxlUm93LCBkcmFnUm93OiBUYWJsZVJvdyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBkcm9wUm93UGFyZW50cyA9IGdldFJvd1BhcmVudHMoZHJvcFJvdyk7XG4gICAgICAgIHJldHVybiAhIWRyb3BSb3dQYXJlbnRzLmZpbmQoKHJvdykgPT4gcm93ID09PSBkcmFnUm93KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RyYWdEcm9wVXBkYXRlRHJhZ1BhcmVudFJvd0F0dHJpYnV0ZXMoZHJhZ1JvdzogVGFibGVSb3cpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyZW50Um93ID0gZHJhZ1Jvdy5wYXJlbnQ7XG5cbiAgICAgICAgaWYgKCFwYXJlbnRSb3cpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcmVudFJvd0NoaWxkcmVuID0gZmluZFJvd0NoaWxkcmVuKHBhcmVudFJvdywgdGhpcy5fdGFibGUuX3RhYmxlUm93cyk7XG4gICAgICAgIGNvbnN0IGRyYWdSb3dDaGlsZHJlbiA9IGZpbmRSb3dDaGlsZHJlbihkcmFnUm93LCB0aGlzLl90YWJsZS5fdGFibGVSb3dzKTtcblxuICAgICAgICBpZiAocGFyZW50Um93Q2hpbGRyZW4ubGVuZ3RoIC0gKGRyYWdSb3dDaGlsZHJlbi5sZW5ndGggKyAxKSA9PT0gMCkge1xuICAgICAgICAgICAgcGFyZW50Um93LnNldFJvd1R5cGUoVGFibGVSb3dUeXBlLklURU0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kcmFnRHJvcFVwZGF0ZURyb3BSb3dBdHRyaWJ1dGVzKGRyYWdSb3c6IFRhYmxlUm93LCBkcm9wUm93OiBUYWJsZVJvdywgbW9kZTogRmREbmREcm9wRXZlbnRNb2RlKTogdm9pZCB7XG4gICAgICAgIGlmIChkcmFnUm93LnBhcmVudCkge1xuICAgICAgICAgICAgLy8gUmVtb3ZlIGNoaWxkIHJvdyBmcm9tIHByZXZpb3VzIHBhcmVudCByb3cuXG4gICAgICAgICAgICBkcmFnUm93LnBhcmVudC5jaGlsZHJlbi5zcGxpY2UoZHJhZ1Jvdy5wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihkcmFnUm93KSwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgZHJhZ1Jvdy5sZXZlbCA9IGRyb3BSb3cubGV2ZWwgKyAobW9kZSA9PT0gJ2dyb3VwJyA/IDEgOiAwKTtcblxuICAgICAgICBpZiAobW9kZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICAgICAgZHJhZ1Jvdy5wYXJlbnQgPSBkcm9wUm93O1xuICAgICAgICAgICAgaWYgKCFkcm9wUm93LmlzVHJlZSkge1xuICAgICAgICAgICAgICAgIGRyb3BSb3cuc2V0Um93VHlwZShUYWJsZVJvd1R5cGUuVFJFRSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRyb3BSb3cuY2hpbGRyZW4ucHVzaChkcmFnUm93KTtcbiAgICAgICAgICAgIGRyb3BSb3cubGFzdENoaWxkID0gZHJhZ1JvdztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRyYWdSb3cucGFyZW50ID0gZHJvcFJvdy5wYXJlbnQ7XG4gICAgICAgICAgICBkcm9wUm93LnBhcmVudD8uY2hpbGRyZW4ucHVzaChkcmFnUm93KTtcbiAgICAgICAgICAgIGlmIChkcm9wUm93LnBhcmVudCkge1xuICAgICAgICAgICAgICAgIGRyb3BSb3cucGFyZW50Lmxhc3RDaGlsZCA9IGRyYWdSb3c7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGZpbmRSb3dDaGlsZHJlbihkcmFnUm93LCB0aGlzLl90YWJsZS5fdGFibGVSb3dzKTtcbiAgICAgICAgY2hpbGRyZW4uZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICByb3cubGV2ZWwgPSBnZXRSb3dQYXJlbnRzKHJvdykubGVuZ3RoO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RyYWdEcm9wUmVhcnJhbmdlVHJlZVJvd3MoZHJhZ1JvdzogVGFibGVSb3csIGRyb3BSb3c6IFRhYmxlUm93LCBldmVudDogRmREcm9wRXZlbnQ8VGFibGVSb3c+KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5tb2RlID09PSAnc2hpZnQnKSB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVTaGlmdERyb3BBY3Rpb24oZHJhZ1JvdywgZHJvcFJvdywgZXZlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlUmVwbGFjZURyb3BBY3Rpb24oZHJhZ1JvdywgZHJvcFJvdyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldE5ld0RyYWdEcm9wUm93c1Bvc2l0aW9uKGRyYWdSb3c6IFRhYmxlUm93LCBkcm9wUm93OiBUYWJsZVJvdyk6IFVwZGF0ZWREbmRSb3dzUG9zaXRpb24ge1xuICAgICAgICBjb25zdCBhbGxSb3dzID0gdGhpcy5fdGFibGUuX3RhYmxlUm93cztcblxuICAgICAgICBjb25zdCBkcmFnUm93SW5kZXggPSBhbGxSb3dzLmZpbmRJbmRleCgocm93KSA9PiByb3cgPT09IGRyYWdSb3cpO1xuICAgICAgICBjb25zdCBkcmFnUm93Q2hpbGRyZW4gPSBmaW5kUm93Q2hpbGRyZW4oZHJhZ1JvdywgdGhpcy5fdGFibGUuX3RhYmxlUm93cyk7XG5cbiAgICAgICAgY29uc3Qgcm93c1RvTW92ZSA9IGFsbFJvd3Muc3BsaWNlKGRyYWdSb3dJbmRleCwgZHJhZ1Jvd0NoaWxkcmVuLmxlbmd0aCArIDEpO1xuXG4gICAgICAgIGNvbnN0IGRyb3BSb3dJbmRleCA9IGFsbFJvd3MuZmluZEluZGV4KChyb3cpID0+IHJvdyA9PT0gZHJvcFJvdyk7XG4gICAgICAgIGNvbnN0IGRyb3BSb3dDaGlsZHJlbiA9IGZpbmRSb3dDaGlsZHJlbihkcm9wUm93LCB0aGlzLl90YWJsZS5fdGFibGVSb3dzKTtcblxuICAgICAgICBjb25zdCBkcm9wUm93SXRlbXNMZW5ndGggPSBkcm9wUm93Q2hpbGRyZW4ubGVuZ3RoICsgMTtcblxuICAgICAgICBjb25zdCByb3dzQWZ0ZXJEcm9wUm93ID0gYWxsUm93cy5zcGxpY2UoZHJvcFJvd0luZGV4ICsgZHJvcFJvd0l0ZW1zTGVuZ3RoLCBhbGxSb3dzLmxlbmd0aCArIGRyb3BSb3dJdGVtc0xlbmd0aCk7XG4gICAgICAgIGNvbnN0IGRyb3BSb3dJdGVtcyA9IGFsbFJvd3Muc3BsaWNlKGRyb3BSb3dJbmRleCwgZHJvcFJvd0l0ZW1zTGVuZ3RoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWxsUm93cyxcbiAgICAgICAgICAgIHJvd3NUb01vdmUsXG4gICAgICAgICAgICByb3dzQWZ0ZXJEcm9wUm93LFxuICAgICAgICAgICAgZHJvcFJvd0l0ZW1zXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVTaGlmdERyb3BBY3Rpb24oZHJhZ1JvdzogVGFibGVSb3csIGRyb3BSb3c6IFRhYmxlUm93LCBldmVudDogRmREcm9wRXZlbnQ8VGFibGVSb3c+KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgYWxsUm93cywgcm93c1RvTW92ZSwgcm93c0FmdGVyRHJvcFJvdywgZHJvcFJvd0l0ZW1zIH0gPSB0aGlzLl9nZXROZXdEcmFnRHJvcFJvd3NQb3NpdGlvbihcbiAgICAgICAgICAgIGRyYWdSb3csXG4gICAgICAgICAgICBkcm9wUm93XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fdGFibGUuX3RhYmxlUm93cyA9IFtcbiAgICAgICAgICAgIC4uLmFsbFJvd3MsXG4gICAgICAgICAgICAuLi4oZXZlbnQuaW5zZXJ0QXQgPT09ICdhZnRlcicgPyBkcm9wUm93SXRlbXMgOiBbXSksXG4gICAgICAgICAgICAuLi5yb3dzVG9Nb3ZlLFxuICAgICAgICAgICAgLi4uKGV2ZW50Lmluc2VydEF0ID09PSAnYWZ0ZXInID8gW10gOiBkcm9wUm93SXRlbXMpLFxuICAgICAgICAgICAgLi4ucm93c0FmdGVyRHJvcFJvd1xuICAgICAgICBdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlUmVwbGFjZURyb3BBY3Rpb24oZHJhZ1JvdzogVGFibGVSb3csIGRyb3BSb3c6IFRhYmxlUm93KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgYWxsUm93cywgcm93c1RvTW92ZSwgcm93c0FmdGVyRHJvcFJvdywgZHJvcFJvd0l0ZW1zIH0gPSB0aGlzLl9nZXROZXdEcmFnRHJvcFJvd3NQb3NpdGlvbihcbiAgICAgICAgICAgIGRyYWdSb3csXG4gICAgICAgICAgICBkcm9wUm93XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fdGFibGUuX3RhYmxlUm93cyA9IFsuLi5hbGxSb3dzLCAuLi5kcm9wUm93SXRlbXMsIC4uLnJvd3NUb01vdmUsIC4uLnJvd3NBZnRlckRyb3BSb3ddO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb25ab25lRnJlZShjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9uZ1pvbmUub25NaWNyb3Rhc2tFbXB0eS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
247
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZHJhZ2dhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi90YWJsZS1oZWxwZXJzL2RpcmVjdGl2ZXMvdGFibGUtZHJhZ2dhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBUXZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1RCxPQUFPLEVBQVksdUJBQXVCLEVBQTBCLE1BQU0sV0FBVyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFjdEQsTUFBTSxPQUFPLHVCQUFpQyxTQUFRLGNBQWlCO0lBWHZFOztRQVlJLDRFQUE0RTtRQUU1RSx3QkFBbUIsR0FBRyxJQUFJLENBQUM7UUFFM0Isb0NBQW9DO1FBR3BDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCOztXQUVHO1FBRUgsYUFBUSxHQUFrQixNQUFNLENBQUM7UUFhakMseUhBQXlIO1FBRWhILGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQThCLENBQUM7UUFVeEUsY0FBYztRQUNHLFlBQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFMUMsY0FBYztRQUNHLFNBQUksR0FBRyxNQUFNLENBQUMsaUJB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QURoQixLQUFLO2dCQUtHLGFBQWE7c0JBRHJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nICovXG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgRHJhZ292ZXJQcmVkaWNhdGUsXG4gICAgRHJvcFByZWRpY2F0ZSxcbiAgICBGZERuZERyb3BFdmVudE1vZGUsXG4gICAgRmREbmREcm9wVHlwZSxcbiAgICBGZERyb3BFdmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRkRQX1RBQkxFX0RSQUdHQUJMRV9ESVJFQ1RJVkUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVGFibGVSb3dUeXBlIH0gZnJvbSAnLi4vZW51bXMnO1xuaW1wb3J0IHsgZmluZFJvd0NoaWxkcmVuLCBnZXRSb3dQYXJlbnRzIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBUYWJsZVJvdywgVGFibGVSb3dzUmVhcnJhbmdlRXZlbnQsIFVwZGF0ZWREbmRSb3dzUG9zaXRpb24gfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgVGFibGVEcmFnZ2FibGUgfSBmcm9tICcuLi9tb2RlbHMvZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJy4uL3RhYmxlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2ZkcC10YWJsZVtpc1RyZWVUYWJsZV0sIGZkcC10YWJsZVtlbmFibGVSb3dSZW9yZGVyaW5nXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRQX1RBQkxFX0RSQUdHQUJMRV9ESVJFQ1RJVkUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUYWJsZURyYWdnYWJsZURpcmVjdGl2ZSlcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVEcmFnZ2FibGVEaXJlY3RpdmU8VCA9IGFueT4gZXh0ZW5kcyBUYWJsZURyYWdnYWJsZTxUPiB7XG4gICAgLyoqIFdoZXRoZXIgdG8gYWxsb3cgZm9yIHJvdyByZW9yZGVyaW5nIG9uIHRyZWUgdGFibGVzIHZpYSBkcmFnIGFuZCBkcm9wLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZW5hYmxlUm93UmVvcmRlcmluZyA9IHRydWU7XG5cbiAgICAvKiogV2hldGhlciB0cmVlIG1vZGUgaXMgZW5hYmxlZC4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXRhYmxlLS10cmVlJylcbiAgICBASW5wdXQoKVxuICAgIGlzVHJlZVRhYmxlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBSb3cgZHJvcCBtb2RlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZHJvcE1vZGU6IEZkRG5kRHJvcFR5cGUgPSAnYXV0byc7XG5cbiAgICAvKiogUHJlZGljYXRlIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIHdoZXRoZXIgdGhlIGl0ZW0gY2FuIGJlIGRyb3BwZWQgb3ZlciBhbm90aGVyIGl0ZW0uICovXG4gICAgQElucHV0KClcbiAgICBkcm9wUHJlZGljYXRlOiBEcm9wUHJlZGljYXRlPFRhYmxlUm93PFQ+PjtcblxuICAgIC8qKlxuICAgICAqIFByZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IGNoZWNrcyB3aGV0aGVyIHRoZSBpdGVtIGNhbiBiZSBkcmFnZ2VkIG92ZXIgYW5vdGhlciBpdGVtLlxuICAgICAqIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGBmYWxzZWAsIGRyYWdnZWQgb3ZlciBpdGVtIHdpbGwgbm90IGJlIGhpZ2hsaWdodGVkLCBhbmQgZHJvcCBldmVudCB3aWxsIGJlIGNhbmNlbGVkLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZHJhZ292ZXJQcmVkaWNhdGU6IERyYWdvdmVyUHJlZGljYXRlPFRhYmxlUm93PFQ+PjtcblxuICAgIC8qKiBFdmVudCBmaXJlZCB3aGVuIHRyZWUgcm93cyByZWFycmFuZ2VkIHRocm91Z2ggZHJhZyAmIGRyb3AuIENvbnNpZGVyIHRoYXQgcm93cyByZWFycmFuZ2VkIHdpdGggdGhlaXIgY2hpbGRyZW4gcm93cy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSByb3dzUmVhcnJhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVJvd3NSZWFycmFuZ2VFdmVudDxUPj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9yb3dzRHJhZ2dhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1RyZWVUYWJsZSAmJiB0aGlzLmVuYWJsZVJvd1Jlb3JkZXJpbmc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90YWJsZTogVGFibGU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX25nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYsIHtcbiAgICAgICAgaG9zdDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBkcmFnRHJvcEluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAgIC8qKiBTZXRzIHRhYmxlIHJlZmVyZW5jZS4gKi9cbiAgICBzZXRUYWJsZSh0YWJsZTogVGFibGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGUgPSB0YWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZXMgZHJhZyZkcm9wIHNlcXVlbmNlLlxuICAgICAqL1xuICAgIGRyYWdEcm9wU3RhcnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BJblByb2dyZXNzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIGNhbGxlZCB3aGVuIGRuZCBwZXJmb3JtZWQgd2l0aCB0aGUga2V5Ym9hcmQuICovXG4gICAgZHJhZ1Jvd0Zyb21LZXlib2FyZChkaXI6IHN0cmluZywgZXZlbnQ6IEV2ZW50LCBjdXJyZW50Um93SW5kZXg6IG51bWJlciwgbW9kZTogJ3NoaWZ0JyB8ICdncm91cCcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9yb3dzRHJhZ2dhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgbGV0IHJlcGxhY2VkSW5kZXg7XG4gICAgICAgIGRpciA9PT0gJ3VwJyA/IChyZXBsYWNlZEluZGV4ID0gY3VycmVudFJvd0luZGV4IC0gMSkgOiAocmVwbGFjZWRJbmRleCA9IGN1cnJlbnRSb3dJbmRleCArIDEpO1xuXG4gICAgICAgIGlmICh0aGlzLl90YWJsZS5fdGFibGVSb3dzVmlzaWJsZVtyZXBsYWNlZEluZGV4XSkge1xuICAgICAgICAgICAgY29uc3QgZHJhZ0Ryb3BFdmVudDogRmREcm9wRXZlbnQ8VGFibGVSb3c8VD4+ID0ge1xuICAgICAgICAgICAgICAgIGl0ZW1zOiB0aGlzLl90YWJsZS5fdGFibGVSb3dzVmlzaWJsZSxcbiAgICAgICAgICAgICAgICBkcmFnZ2VkSXRlbUluZGV4OiBjdXJyZW50Um93SW5kZXgsXG4gICAgICAgICAgICAgICAgcmVwbGFjZWRJdGVtSW5kZXg6IHJlcGxhY2VkSW5kZXgsXG4gICAgICAgICAgICAgICAgaW5zZXJ0QXQ6IGRpciA9PT0gJ2Rvd24nID8gJ2FmdGVyJyA6ICdiZWZvcmUnLFxuICAgICAgICAgICAgICAgIG1vZGVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLmRyYWdEcm9wSXRlbURyb3AoZHJhZ0Ryb3BFdmVudCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5mb2N1cygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIGNhbGxlZCB3aGVuIGRyYWcmZHJvcCBldmVudCBiZWluZyBjYW5jZWxsZWQuICovXG4gICAgZHJvcENhbmNlbGxlZCgpOiB2b2lkIHtcbiAgICAgICAgLyoqIEFmdGVyIHRpbWVvdXQgdG8gbWFrZSBjbGljayBldmVudCBoYW5kbGVkIGZpcnN0ICovXG4gICAgICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLmRyYWdEcm9wSW5Qcm9ncmVzcyA9IGZhbHNlKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgY2FsbGVkIHdoZW4gZHJhZ2dlZCBpdGVtIGJlaW5nIGRyb3BwZWQuICovXG4gICAgZHJhZ0Ryb3BJdGVtRHJvcChldmVudDogRmREcm9wRXZlbnQ8VGFibGVSb3c+KTogdm9pZCB7XG4gICAgICAgIC8qKiBBZnRlciB0aW1lb3V0IHRvIG1ha2UgY2xpY2sgZXZlbnQgaGFuZGxlZCBmaXJzdCAqL1xuICAgICAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiAodGhpcy5kcmFnRHJvcEluUHJvZ3Jlc3MgPSBmYWxzZSkpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9vblpvbmVGcmVlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVHJlZVRhYmxlICYmIGV2ZW50LmRyYWdnZWRJdGVtSW5kZXggIT09IGV2ZW50LnJlcGxhY2VkSXRlbUluZGV4KSB7XG4gICAgICAgICAgICAgICAgZXZlbnQuZHJhZ2dlZEl0ZW1JbmRleCA9IHRoaXMuX3RhYmxlLl90YWJsZVJvd3NJblZpZXdQb3J0UGxhY2Vob2xkZXJbZXZlbnQuZHJhZ2dlZEl0ZW1JbmRleF07XG4gICAgICAgICAgICAgICAgZXZlbnQucmVwbGFjZWRJdGVtSW5kZXggPSB0aGlzLl90YWJsZS5fdGFibGVSb3dzSW5WaWV3UG9ydFBsYWNlaG9sZGVyW2V2ZW50LnJlcGxhY2VkSXRlbUluZGV4XTtcbiAgICAgICAgICAgICAgICBjb25zdCBkcmFnUm93ID0gdGhpcy5fdGFibGUuX3RhYmxlUm93cy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAocm93KSA9PiByb3cgPT09IHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlW2V2ZW50LmRyYWdnZWRJdGVtSW5kZXhdXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkcm9wUm93ID0gdGhpcy5fdGFibGUuX3RhYmxlUm93cy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAocm93KSA9PiByb3cgPT09IHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlW2V2ZW50LnJlcGxhY2VkSXRlbUluZGV4XVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWRyYWdSb3cgfHwgIWRyb3BSb3cgfHwgdGhpcy5faXNEcm9wcGVkSW5zaWRlSXRzZWxmKGRyb3BSb3csIGRyYWdSb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fZHJhZ0Ryb3BVcGRhdGVEcmFnUGFyZW50Um93QXR0cmlidXRlcyhkcmFnUm93KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9kcmFnRHJvcFJlYXJyYW5nZVRyZWVSb3dzKGRyYWdSb3csIGRyb3BSb3csIGV2ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9kcmFnRHJvcFVwZGF0ZURyb3BSb3dBdHRyaWJ1dGVzKGRyYWdSb3csIGRyb3BSb3csIGV2ZW50Lm1vZGUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFkcm9wUm93LmV4cGFuZGVkICYmIGV2ZW50Lm1vZGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFibGUudG9nZ2xlRXhwYW5kYWJsZVRhYmxlUm93KGRyb3BSb3csIHRydWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlLm9uVGFibGVSb3dzQ2hhbmdlZCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdFJvd3NSZWFycmFuZ2VFdmVudChkcmFnUm93LCBkcm9wUm93LCBldmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFibGUucmVmcmVzaERuZExpc3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENyZWF0ZSB0YWJsZSByb3dzIHJlYXJyYW5nZSBldmVudFxuICAgICAqL1xuICAgIF9lbWl0Um93c1JlYXJyYW5nZUV2ZW50KHJvdzogVGFibGVSb3csIGRyb3BSb3c6IFRhYmxlUm93LCBldmVudDogRmREcm9wRXZlbnQ8VGFibGVSb3c+KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJvd3M6IGFueVtdID0gW107XG5cbiAgICAgICAgdGhpcy5fdGFibGUuX3RhYmxlUm93cy5mb3JFYWNoKChyLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgci5pbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgcm93cy5wdXNoKHIudmFsdWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnJvd3NSZWFycmFuZ2UuZW1pdChcbiAgICAgICAgICAgIG5ldyBUYWJsZVJvd3NSZWFycmFuZ2VFdmVudChcbiAgICAgICAgICAgICAgICByb3cudmFsdWUsXG4gICAgICAgICAgICAgICAgZHJvcFJvdy52YWx1ZSxcbiAgICAgICAgICAgICAgICBldmVudC5kcmFnZ2VkSXRlbUluZGV4LFxuICAgICAgICAgICAgICAgIGV2ZW50LnJlcGxhY2VkSXRlbUluZGV4LFxuICAgICAgICAgICAgICAgIGV2ZW50Lmluc2VydEF0LFxuICAgICAgICAgICAgICAgIGV2ZW50Lm1vZGUsXG4gICAgICAgICAgICAgICAgcm93c1xuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNEcm9wcGVkSW5zaWRlSXRzZWxmKGRyb3BSb3c6IFRhYmxlUm93LCBkcmFnUm93OiBUYWJsZVJvdyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBkcm9wUm93UGFyZW50cyA9IGdldFJvd1BhcmVudHMoZHJvcFJvdyk7XG4gICAgICAgIHJldHVybiAhIWRyb3BSb3dQYXJlbnRzLmZpbmQoKHJvdykgPT4gcm93ID09PSBkcmFnUm93KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RyYWdEcm9wVXBkYXRlRHJhZ1BhcmVudFJvd0F0dHJpYnV0ZXMoZHJhZ1JvdzogVGFibGVSb3cpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyZW50Um93ID0gZHJhZ1Jvdy5wYXJlbnQ7XG5cbiAgICAgICAgaWYgKCFwYXJlbnRSb3cpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcmVudFJvd0NoaWxkcmVuID0gZmluZFJvd0NoaWxkcmVuKHBhcmVudFJvdywgdGhpcy5fdGFibGUuX3RhYmxlUm93cyk7XG4gICAgICAgIGNvbnN0IGRyYWdSb3dDaGlsZHJlbiA9IGZpbmRSb3dDaGlsZHJlbihkcmFnUm93LCB0aGlzLl90YWJsZS5fdGFibGVSb3dzKTtcblxuICAgICAgICBpZiAocGFyZW50Um93Q2hpbGRyZW4ubGVuZ3RoIC0gKGRyYWdSb3dDaGlsZHJlbi5sZW5ndGggKyAxKSA9PT0gMCkge1xuICAgICAgICAgICAgcGFyZW50Um93LnNldFJvd1R5cGUoVGFibGVSb3dUeXBlLklURU0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kcmFnRHJvcFVwZGF0ZURyb3BSb3dBdHRyaWJ1dGVzKGRyYWdSb3c6IFRhYmxlUm93LCBkcm9wUm93OiBUYWJsZVJvdywgbW9kZTogRmREbmREcm9wRXZlbnRNb2RlKTogdm9pZCB7XG4gICAgICAgIGlmIChkcmFnUm93LnBhcmVudCkge1xuICAgICAgICAgICAgLy8gUmVtb3ZlIGNoaWxkIHJvdyBmcm9tIHByZXZpb3VzIHBhcmVudCByb3cuXG4gICAgICAgICAgICBkcmFnUm93LnBhcmVudC5jaGlsZHJlbi5zcGxpY2UoZHJhZ1Jvdy5wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihkcmFnUm93KSwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgZHJhZ1Jvdy5sZXZlbCA9IGRyb3BSb3cubGV2ZWwgKyAobW9kZSA9PT0gJ2dyb3VwJyA/IDEgOiAwKTtcblxuICAgICAgICBpZiAobW9kZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICAgICAgZHJhZ1Jvdy5wYXJlbnQgPSBkcm9wUm93O1xuICAgICAgICAgICAgaWYgKCFkcm9wUm93LmlzVHJlZSkge1xuICAgICAgICAgICAgICAgIGRyb3BSb3cuc2V0Um93VHlwZShUYWJsZVJvd1R5cGUuVFJFRSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRyb3BSb3cuY2hpbGRyZW4ucHVzaChkcmFnUm93KTtcbiAgICAgICAgICAgIGRyb3BSb3cubGFzdENoaWxkID0gZHJhZ1JvdztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRyYWdSb3cucGFyZW50ID0gZHJvcFJvdy5wYXJlbnQ7XG4gICAgICAgICAgICBkcm9wUm93LnBhcmVudD8uY2hpbGRyZW4ucHVzaChkcmFnUm93KTtcbiAgICAgICAgICAgIGlmIChkcm9wUm93LnBhcmVudCkge1xuICAgICAgICAgICAgICAgIGRyb3BSb3cucGFyZW50Lmxhc3RDaGlsZCA9IGRyYWdSb3c7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGZpbmRSb3dDaGlsZHJlbihkcmFnUm93LCB0aGlzLl90YWJsZS5fdGFibGVSb3dzKTtcbiAgICAgICAgY2hpbGRyZW4uZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICByb3cubGV2ZWwgPSBnZXRSb3dQYXJlbnRzKHJvdykubGVuZ3RoO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RyYWdEcm9wUmVhcnJhbmdlVHJlZVJvd3MoZHJhZ1JvdzogVGFibGVSb3csIGRyb3BSb3c6IFRhYmxlUm93LCBldmVudDogRmREcm9wRXZlbnQ8VGFibGVSb3c+KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5tb2RlID09PSAnc2hpZnQnKSB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVTaGlmdERyb3BBY3Rpb24oZHJhZ1JvdywgZHJvcFJvdywgZXZlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlUmVwbGFjZURyb3BBY3Rpb24oZHJhZ1JvdywgZHJvcFJvdyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldE5ld0RyYWdEcm9wUm93c1Bvc2l0aW9uKGRyYWdSb3c6IFRhYmxlUm93LCBkcm9wUm93OiBUYWJsZVJvdyk6IFVwZGF0ZWREbmRSb3dzUG9zaXRpb24ge1xuICAgICAgICBjb25zdCBhbGxSb3dzID0gdGhpcy5fdGFibGUuX3RhYmxlUm93cztcblxuICAgICAgICBjb25zdCBkcmFnUm93SW5kZXggPSBhbGxSb3dzLmZpbmRJbmRleCgocm93KSA9PiByb3cgPT09IGRyYWdSb3cpO1xuICAgICAgICBjb25zdCBkcmFnUm93Q2hpbGRyZW4gPSBmaW5kUm93Q2hpbGRyZW4oZHJhZ1JvdywgdGhpcy5fdGFibGUuX3RhYmxlUm93cyk7XG5cbiAgICAgICAgY29uc3Qgcm93c1RvTW92ZSA9IGFsbFJvd3Muc3BsaWNlKGRyYWdSb3dJbmRleCwgZHJhZ1Jvd0NoaWxkcmVuLmxlbmd0aCArIDEpO1xuXG4gICAgICAgIGNvbnN0IGRyb3BSb3dJbmRleCA9IGFsbFJvd3MuZmluZEluZGV4KChyb3cpID0+IHJvdyA9PT0gZHJvcFJvdyk7XG4gICAgICAgIGNvbnN0IGRyb3BSb3dDaGlsZHJlbiA9IGZpbmRSb3dDaGlsZHJlbihkcm9wUm93LCB0aGlzLl90YWJsZS5fdGFibGVSb3dzKTtcblxuICAgICAgICBjb25zdCBkcm9wUm93SXRlbXNMZW5ndGggPSBkcm9wUm93Q2hpbGRyZW4ubGVuZ3RoICsgMTtcblxuICAgICAgICBjb25zdCByb3dzQWZ0ZXJEcm9wUm93ID0gYWxsUm93cy5zcGxpY2UoZHJvcFJvd0luZGV4ICsgZHJvcFJvd0l0ZW1zTGVuZ3RoLCBhbGxSb3dzLmxlbmd0aCArIGRyb3BSb3dJdGVtc0xlbmd0aCk7XG4gICAgICAgIGNvbnN0IGRyb3BSb3dJdGVtcyA9IGFsbFJvd3Muc3BsaWNlKGRyb3BSb3dJbmRleCwgZHJvcFJvd0l0ZW1zTGVuZ3RoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWxsUm93cyxcbiAgICAgICAgICAgIHJvd3NUb01vdmUsXG4gICAgICAgICAgICByb3dzQWZ0ZXJEcm9wUm93LFxuICAgICAgICAgICAgZHJvcFJvd0l0ZW1zXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVTaGlmdERyb3BBY3Rpb24oZHJhZ1JvdzogVGFibGVSb3csIGRyb3BSb3c6IFRhYmxlUm93LCBldmVudDogRmREcm9wRXZlbnQ8VGFibGVSb3c+KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgYWxsUm93cywgcm93c1RvTW92ZSwgcm93c0FmdGVyRHJvcFJvdywgZHJvcFJvd0l0ZW1zIH0gPSB0aGlzLl9nZXROZXdEcmFnRHJvcFJvd3NQb3NpdGlvbihcbiAgICAgICAgICAgIGRyYWdSb3csXG4gICAgICAgICAgICBkcm9wUm93XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fdGFibGUuX3RhYmxlUm93cyA9IFtcbiAgICAgICAgICAgIC4uLmFsbFJvd3MsXG4gICAgICAgICAgICAuLi4oZXZlbnQuaW5zZXJ0QXQgPT09ICdhZnRlcicgPyBkcm9wUm93SXRlbXMgOiBbXSksXG4gICAgICAgICAgICAuLi5yb3dzVG9Nb3ZlLFxuICAgICAgICAgICAgLi4uKGV2ZW50Lmluc2VydEF0ID09PSAnYWZ0ZXInID8gW10gOiBkcm9wUm93SXRlbXMpLFxuICAgICAgICAgICAgLi4ucm93c0FmdGVyRHJvcFJvd1xuICAgICAgICBdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlUmVwbGFjZURyb3BBY3Rpb24oZHJhZ1JvdzogVGFibGVSb3csIGRyb3BSb3c6IFRhYmxlUm93KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgYWxsUm93cywgcm93c1RvTW92ZSwgcm93c0FmdGVyRHJvcFJvdywgZHJvcFJvd0l0ZW1zIH0gPSB0aGlzLl9nZXROZXdEcmFnRHJvcFJvd3NQb3NpdGlvbihcbiAgICAgICAgICAgIGRyYWdSb3csXG4gICAgICAgICAgICBkcm9wUm93XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fdGFibGUuX3RhYmxlUm93cyA9IFsuLi5hbGxSb3dzLCAuLi5kcm9wUm93SXRlbXMsIC4uLnJvd3NUb01vdmUsIC4uLnJvd3NBZnRlckRyb3BSb3ddO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb25ab25lRnJlZShjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9uZ1pvbmUub25NaWNyb3Rhc2tFbXB0eS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/member-ordering */
1
2
  import { EventEmitter } from '@angular/core';
2
3
  export class Table {
3
4
  constructor() {
@@ -11,4 +12,4 @@ export class Table {
11
12
  this.openTableColumnSettings = new EventEmitter();
12
13
  }
13
14
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvdGFibGUtaGVscGVycy90YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsWUFBWSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBZW5FLE1BQU0sT0FBZ0IsS0FBSztJQUEzQjtRQTBDSSwrQ0FBK0M7UUFDdEMsMEJBQXFCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFOUUsaURBQWlEO1FBQ3hDLDRCQUF1QixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWhGLGdEQUFnRDtRQUN2QywyQkFBc0IsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUUvRSxpREFBaUQ7UUFDeEMsNEJBQXVCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7SUFzSHBGLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlYXJjaElucHV0IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zZWFyY2gtZmllbGQnO1xuaW1wb3J0IHsgUHJlc2V0TWFuYWdlZENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgVGFibGVTdGF0ZSB9IGZyb20gJy4vaW50ZXJmYWNlcy90YWJsZS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29sbGVjdGlvblNvcnQgfSBmcm9tICcuL2ludGVyZmFjZXMvY29sbGVjdGlvbi1zb3J0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uRmlsdGVyIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbGxlY3Rpb24tZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uR3JvdXAgfSBmcm9tICcuL2ludGVyZmFjZXMvY29sbGVjdGlvbi1ncm91cC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFibGVTY3JvbGxhYmxlIH0gZnJvbSAnLi9zZXJ2aWNlcy90YWJsZS1zY3JvbGwtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi90YWJsZS1jb2x1bW4nO1xuaW1wb3J0IHsgVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi9kb21haW4nO1xuaW1wb3J0IHsgUGxhdGZvcm1UYWJsZU1hbmFnZWRQcmVzZXQsIFNhdmVSb3dzRXZlbnQsIFRhYmxlSW5pdGlhbFN0YXRlLCBUYWJsZVJvdyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGU8VCA9IGFueT4gaW1wbGVtZW50cyBQcmVzZXRNYW5hZ2VkQ29tcG9uZW50PFBsYXRmb3JtVGFibGVNYW5hZ2VkUHJlc2V0PiB7XG4gICAgYWJzdHJhY3QgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gICAgYWJzdHJhY3QgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAgIGFic3RyYWN0IF9sb2FkUHJldmlvdXNQYWdlczogYm9vbGVhbjtcblxuICAgIGFic3RyYWN0IHBhZ2VTY3JvbGxpbmc6IGJvb2xlYW47XG5cbiAgICBhYnN0cmFjdCBsb2FkUGFnZXNCZWZvcmU6IGJvb2xlYW47XG5cbiAgICBhYnN0cmFjdCBwYWdlU2l6ZTogTnVsbGFibGU8bnVtYmVyPjtcblxuICAgIGFic3RyYWN0IGZyZWV6ZUNvbHVtbnNUbzogc3RyaW5nO1xuXG4gICAgYWJzdHJhY3QgZnJlZXplRW5kQ29sdW1uc1RvOiBzdHJpbmc7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGN1cnJlbnQgcHJlc2V0IGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gY2hhbmdlZC4gKi9cbiAgICBhYnN0cmFjdCBwcmVzZXRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8UGxhdGZvcm1UYWJsZU1hbmFnZWRQcmVzZXQ+O1xuXG4gICAgLyoqIFN1bSBvZiB3aWR0aHMgb2YgZml4ZWQgY29sdW1ucyAoc2VtYW50aWMgaGlnaGxpZ2h0aW5nLCBzZWxlY3Rpb24pICovXG4gICAgYWJzdHJhY3QgZ2V0IF9maXhlZENvbHVtbnNQYWRkaW5nKCk6IG51bWJlcjtcblxuICAgIC8qKiBGcmVlemFibGUgY29sdW1uIG5hbWVzIGFuZCB0aGVpciByZXNwZWN0aXZlIGluZGV4ZXMgKi9cbiAgICBhYnN0cmFjdCBnZXQgX2ZyZWV6YWJsZUNvbHVtbnMoKTogUmVhZG9ubHlNYXA8c3RyaW5nLCBudW1iZXI+O1xuXG4gICAgLyoqIFdpZHRoIG9mIHRoZSB0YWJsZSBlbGVtZW50IGluIHB4ICovXG4gICAgYWJzdHJhY3QgZ2V0IF90YWJsZVdpZHRoUHgoKTogbnVtYmVyO1xuXG4gICAgYWJzdHJhY3QgZ2V0IGxvYWRpbmdTdGF0ZSgpOiBib29sZWFuO1xuXG4gICAgYWJzdHJhY3QgaW5pdGlhbFN0YXRlOiBUYWJsZUluaXRpYWxTdGF0ZSB8IG51bGw7XG5cbiAgICAvKiogVGFibGUgY29sdW1ucyBkZWZpbml0aW9uIGxpc3QgKi9cbiAgICBhYnN0cmFjdCByZWFkb25seSB0YWJsZUNvbHVtbnNTdHJlYW06IE9ic2VydmFibGU8VGFibGVDb2x1bW5bXT47XG5cbiAgICBhYnN0cmFjdCByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3I7XG5cbiAgICBhYnN0cmFjdCByZWFkb25seSB0YWJsZUNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAgIGFic3RyYWN0IHJlYWRvbmx5IHRhYmxlU2Nyb2xsYWJsZTogVGFibGVTY3JvbGxhYmxlO1xuXG4gICAgLyoqIFRvb2xiYXIgU29ydCBTZXR0aW5ncyBidXR0b24gY2xpY2sgZXZlbnQgKi9cbiAgICByZWFkb25seSBvcGVuVGFibGVTb3J0U2V0dGluZ3M6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBUb29sYmFyIEZpbHRlciBTZXR0aW5ncyBidXR0b24gY2xpY2sgZXZlbnQgKi9cbiAgICByZWFkb25seSBvcGVuVGFibGVGaWx0ZXJTZXR0aW5nczogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIFRvb2xiYXIgR3JvdXAgU2V0dGluZ3MgYnV0dG9uIGNsaWNrIGV2ZW50ICovXG4gICAgcmVhZG9ubHkgb3BlblRhYmxlR3JvdXBTZXR0aW5nczogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIFRvb2xiYXIgQ29sdW1uIFNldHRpbmdzIGJ1dHRvbiBjbGljayBldmVudCAqL1xuICAgIHJlYWRvbmx5IG9wZW5UYWJsZUNvbHVtblNldHRpbmdzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZmlyZWQgd2hlbiBlbXB0eSByb3cgYWRkZWQuICovXG4gICAgcmVhZG9ubHkgZW1wdHlSb3dBZGRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+O1xuXG4gICAgLyoqIEV2ZW50IGZpcmVkIHdoZW4gc2F2ZSBidXR0b24gcHJlc3NlZC4gKi9cbiAgICByZWFkb25seSBzYXZlOiBFdmVudEVtaXR0ZXI8U2F2ZVJvd3NFdmVudDxUPj47XG5cbiAgICAvKiogRXZlbnQgZmlyZWQgd2hlbiBjYW5jZWwgYnV0dG9uIHByZXNzZWQuICovXG4gICAgcmVhZG9ubHkgY2FuY2VsOiBFdmVudEVtaXR0ZXI8dm9pZD47XG5cbiAgICBhYnN0cmFjdCBfdGFibGVSb3dzVmlzaWJsZTogVGFibGVSb3c8VD5bXTtcblxuICAgIGFic3RyYWN0IF90YWJsZVJvd3M6IFRhYmxlUm93PFQ+W107XG5cbiAgICAvKiogR2V0IHRhYmxlIHN0YXRlICovXG4gICAgYWJzdHJhY3QgZ2V0VGFibGVTdGF0ZSgpOiBUYWJsZVN0YXRlO1xuXG4gICAgLyoqIFNldCB0YWJsZSBzdGF0ZSAqL1xuICAgIGFic3RyYWN0IHNldFRhYmxlU3RhdGUodGFibGVTdGF0ZTogVGFibGVTdGF0ZSk6IHZvaWQ7XG5cbiAgICAvKiogR2V0IHRhYmxlIGNvbHVtbnMgZGVmaW5pdGlvbiBsaXN0ICovXG4gICAgYWJzdHJhY3QgZ2V0VGFibGVDb2x1bW5zKCk6IFRhYmxlQ29sdW1uW107XG5cbiAgICAvKiogR2V0IGEgbGlzdCBvZiB2aXNpYmxlIHRhYmxlIGNvbHVtbnMuICovXG4gICAgYWJzdHJhY3QgZ2V0VmlzaWJsZVRhYmxlQ29sdW1ucygpOiBUYWJsZUNvbHVtbltdO1xuXG4gICAgLyoqIFNldCBTb3J0aW5nIHJ1bGVzICovXG4gICAgYWJzdHJhY3Qgc29ydChzb3J0UnVsZXM6IENvbGxlY3Rpb25Tb3J0W10pOiB2b2lkO1xuXG4gICAgLyoqIEFkZCBTb3J0aW5nIHJ1bGVzIHRvIHRoZSBleGlzdGluZyBvbmVzICovXG4gICAgYWJzdHJhY3QgYWRkU29ydChzb3J0UnVsZXM6IENvbGxlY3Rpb25Tb3J0W10pOiB2b2lkO1xuXG4gICAgLyoqIFNldCBGaWx0ZXJpbmcgcnVsZXMgKi9cbiAgICBhYnN0cmFjdCBmaWx0ZXIoZmlsdGVyUnVsZXM6IENvbGxlY3Rpb25GaWx0ZXJbXSk6IHZvaWQ7XG5cbiAgICAvKiogQWRkIEZpbHRlciBydWxlcyB0byB0aGUgZXhpc3Rpbmcgb25lcyAqL1xuICAgIGFic3RyYWN0IGFkZEZpbHRlcihmaWx0ZXJSdWxlczogQ29sbGVjdGlvbkZpbHRlcltdKTogdm9pZDtcblxuICAgIC8qKiBTZXQgZ3JvdXBpbmcgcnVsZXMgKi9cbiAgICBhYnN0cmFjdCBncm91cChncm91cFJ1bGVzOiBDb2xsZWN0aW9uR3JvdXBbXSk6IHZvaWQ7XG5cbiAgICAvKiogQWRkIEdyb3VwIHJ1bGVzIHRvIHRoZSBleGlzdGluZyBvbmVzICovXG4gICAgYWJzdHJhY3QgYWRkR3JvdXAoZ3JvdXBSdWxlczogQ29sbGVjdGlvbkdyb3VwW10pOiB2b2lkO1xuXG4gICAgLyoqIFNldCB0YWJsZSBjb2x1bW5zICovXG4gICAgYWJzdHJhY3Qgc2V0Q29sdW1ucyhjb2x1bW5zOiBzdHJpbmdbXSk6IHZvaWQ7XG5cbiAgICAvKiogVG9nZ2xlIHJvdyBjaGVja2VkIHN0YXRlLiAqL1xuICAgIGFic3RyYWN0IHRvZ2dsZVNlbGVjdGFibGVSb3cocm93SW5kZXg6IG51bWJlcik6IHZvaWQ7XG5cbiAgICAvKiogRnJlZXplIHRhYmxlIGNvbHVtbnMgdG8gaW5jbHVkaW5nICovXG4gICAgYWJzdHJhY3QgZnJlZXplVG9Db2x1bW4oY29sdW1uS2V5OiBzdHJpbmcsIGVuZD86IGJvb2xlYW4pOiB2b2lkO1xuXG4gICAgLyoqIFVuZnJlZXplIGNvbHVtbiAqL1xuICAgIGFic3RyYWN0IHVuZnJlZXplKGNvbHVtbktleTogc3RyaW5nKTogdm9pZDtcblxuICAgIC8qKiBTZWFyY2ggaW4gYWxsIHRhYmxlIGNvbHVtbnMgKi9cbiAgICBhYnN0cmFjdCBzZWFyY2goc2VhcmNoSW5wdXQ6IFNlYXJjaElucHV0KTogdm9pZDtcblxuICAgIC8qKiBUb29sYmFyIFNvcnQgU2V0dGluZ3MgYnV0dG9uIHZpc2liaWxpdHkgKi9cbiAgICBhYnN0cmFjdCBzaG93U29ydFNldHRpbmdzSW5Ub29sYmFyKHNob3dTb3J0U2V0dGluZ3M6IGJvb2xlYW4pOiB2b2lkO1xuXG4gICAgLyoqIFRvb2xiYXIgRmlsdGVyIFNldHRpbmdzIGJ1dHRvbiB2aXNpYmlsaXR5ICovXG4gICAgYWJzdHJhY3Qgc2hvd0ZpbHRlclNldHRpbmdzSW5Ub29sYmFyKHNob3dGaWx0ZXJTZXR0aW5nczogYm9vbGVhbik6IHZvaWQ7XG5cbiAgICAvKiogVG9vbGJhciBHcm91cCBTZXR0aW5ncyBidXR0b24gdmlzaWJpbGl0eSAqL1xuICAgIGFic3RyYWN0IHNob3dHcm91cFNldHRpbmdzSW5Ub29sYmFyKHNob3dHcm91cFNldHRpbmdzOiBib29sZWFuKTogdm9pZDtcblxuICAgIC8qKiBUb29sYmFyIENvbHVtbnMgU2V0dGluZ3MgYnV0dG9uIHZpc2liaWxpdHkgKi9cbiAgICBhYnN0cmFjdCBzaG93Q29sdW1uU2V0dGluZ3NJblRvb2xiYXIoc2hvd0NvbHVtblNldHRpbmdzOiBib29sZWFuKTogdm9pZDtcblxuICAgIC8qKiBEaXNhYmxlIGZpbHRlcmluZyBieSBoZWFkZXIgY29sdW1uIG1lbnUgKi9cbiAgICBhYnN0cmFjdCBzZXRIZWFkZXJDb2x1bW5GaWx0ZXJpbmdEaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQ7XG5cbiAgICAvKiogU2V0IGN1cnJlbnQgcGFnZSAqL1xuICAgIGFic3RyYWN0IHNldEN1cnJlbnRQYWdlKGN1cnJlbnRQYWdlOiBudW1iZXIpOiB2b2lkO1xuXG4gICAgLyoqIEdldHMgdGhlIG1heCBhbGxvd2VkIHdpZHRoIGZvciBhbGwgZnJlZXphYmxlIGNvbHVtbnMgKi9cbiAgICBhYnN0cmFjdCBnZXRNYXhBbGxvd2VkRnJlZXphYmxlQ29sdW1uc1dpZHRoKCk6IG51bWJlcjtcblxuICAgIC8qKiBHZXQgdGFibGUgZGF0YSBzb3VyY2UgKi9cbiAgICBhYnN0cmFjdCBnZXREYXRhU291cmNlKCk6IFRhYmxlRGF0YVNvdXJjZTxUPjtcblxuICAgIC8qKiBNYW51YWxseSB0cmlnZ2VycyBjb2x1bW5zIHdpZHRoIHJlY2FsY3VsYXRpb24gKi9cbiAgICBhYnN0cmFjdCByZWNhbGN1bGF0ZVRhYmxlQ29sdW1uV2lkdGgoKTogdm9pZDtcblxuICAgIC8qKiBGZXRjaCBkYXRhIHNvdXJjZSBkYXRhLiAqL1xuICAgIGFic3RyYWN0IGZldGNoKCk6IHZvaWQ7XG5cbiAgICAvKiogQWRkcyBlbXB0eSByb3cgZm9yIGVkaXRpbmcgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcm93cyBhcnJheS4gKi9cbiAgICBhYnN0cmFjdCBhZGRSb3coKTogdm9pZDtcblxuICAgIC8qKiBFbWl0cyBzYXZlIGV2ZW50IGFuZCByZXNldHMgZWRpdGFibGUgcm93cyBhcnJheS4gKi9cbiAgICBhYnN0cmFjdCBzYXZlUm93cygpOiB2b2lkO1xuXG4gICAgLyoqIENhbmNlbHMgZWRpdGluZyBhbmQgZGlzY2FyZHMgbmV3bHkgYWRkZWQgcm93cyAqL1xuICAgIGFic3RyYWN0IGNhbmNlbEVkaXRpbmcoKTogdm9pZDtcblxuICAgIC8qKiBFeHBhbmQgYWxsIHRoZSByb3dzIG9mIHRoZSB0YWJsZSAqL1xuICAgIGFic3RyYWN0IGV4cGFuZEFsbCgpOiB2b2lkO1xuXG4gICAgLyoqIENvbGxhcHNlIGFsbCB0aGUgcm93cyBvZiB0aGUgdGFibGUgKi9cbiAgICBhYnN0cmFjdCBjb2xsYXBzZUFsbCgpOiB2b2lkO1xuXG4gICAgLyoqIFNldHMgc2VsZWN0ZWQgcHJlc2V0LiAqL1xuICAgIGFic3RyYWN0IHNldFByZXNldChkYXRhOiBQbGF0Zm9ybVRhYmxlTWFuYWdlZFByZXNldCk6IHZvaWQ7XG5cbiAgICAvKiogUmV0dXJucyBjdXJyZW50IHByZXNldC4gKi9cbiAgICBhYnN0cmFjdCBnZXRDdXJyZW50UHJlc2V0KCk6IFBsYXRmb3JtVGFibGVNYW5hZ2VkUHJlc2V0O1xuXG4gICAgYWJzdHJhY3QgZ2V0Um93c0luVmlld3BvcnQoKTogbnVtYmVyW107XG5cbiAgICBhYnN0cmFjdCBzZXRSb3dzSW5WaWV3cG9ydChzdGFydEluZGV4OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKTogdm9pZDtcblxuICAgIGFic3RyYWN0IHRvZ2dsZUV4cGFuZGFibGVUYWJsZVJvdyhyb3c6IFRhYmxlUm93PFQ+LCBmb3JjZUZldGNoPzogYm9vbGVhbik7XG5cbiAgICBhYnN0cmFjdCBvblRhYmxlUm93c0NoYW5nZWQoKTogdm9pZDtcbn1cbiJdfQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvdGFibGUtaGVscGVycy90YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFjLFlBQVksRUFBWSxNQUFNLGVBQWUsQ0FBQztBQWVuRSxNQUFNLE9BQWdCLEtBQUs7SUFBM0I7UUEwSkksK0NBQStDO1FBQ3RDLDBCQUFxQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTlFLGlEQUFpRDtRQUN4Qyw0QkFBdUIsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVoRixnREFBZ0Q7UUFDdkMsMkJBQXNCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFL0UsaURBQWlEO1FBQ3hDLDRCQUF1QixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO0lBVXBGLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmcgKi9cbmltcG9ydCB7IEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlYXJjaElucHV0IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zZWFyY2gtZmllbGQnO1xuaW1wb3J0IHsgUHJlc2V0TWFuYWdlZENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL2RvbWFpbic7XG5pbXBvcnQgeyBDb2xsZWN0aW9uRmlsdGVyIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbGxlY3Rpb24tZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uR3JvdXAgfSBmcm9tICcuL2ludGVyZmFjZXMvY29sbGVjdGlvbi1ncm91cC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29sbGVjdGlvblNvcnQgfSBmcm9tICcuL2ludGVyZmFjZXMvY29sbGVjdGlvbi1zb3J0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBUYWJsZVN0YXRlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3RhYmxlLXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybVRhYmxlTWFuYWdlZFByZXNldCwgU2F2ZVJvd3NFdmVudCwgVGFibGVJbml0aWFsU3RhdGUsIFRhYmxlUm93IH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgVGFibGVTY3JvbGxhYmxlIH0gZnJvbSAnLi9zZXJ2aWNlcy90YWJsZS1zY3JvbGwtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi90YWJsZS1jb2x1bW4nO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGU8VCA9IGFueT4gaW1wbGVtZW50cyBQcmVzZXRNYW5hZ2VkQ29tcG9uZW50PFBsYXRmb3JtVGFibGVNYW5hZ2VkUHJlc2V0PiB7XG4gICAgYWJzdHJhY3QgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gICAgYWJzdHJhY3QgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAgIGFic3RyYWN0IF9sb2FkUHJldmlvdXNQYWdlczogYm9vbGVhbjtcblxuICAgIGFic3RyYWN0IHBhZ2VTY3JvbGxpbmc6IGJvb2xlYW47XG5cbiAgICBhYnN0cmFjdCBsb2FkUGFnZXNCZWZvcmU6IGJvb2xlYW47XG5cbiAgICBhYnN0cmFjdCBwYWdlU2l6ZTogTnVsbGFibGU8bnVtYmVyPjtcblxuICAgIGFic3RyYWN0IGZyZWV6ZUNvbHVtbnNUbzogc3RyaW5nO1xuXG4gICAgYWJzdHJhY3QgZnJlZXplRW5kQ29sdW1uc1RvOiBzdHJpbmc7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGN1cnJlbnQgcHJlc2V0IGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gY2hhbmdlZC4gKi9cbiAgICBhYnN0cmFjdCBwcmVzZXRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8UGxhdGZvcm1UYWJsZU1hbmFnZWRQcmVzZXQ+O1xuXG4gICAgLyoqIFN1bSBvZiB3aWR0aHMgb2YgZml4ZWQgY29sdW1ucyAoc2VtYW50aWMgaGlnaGxpZ2h0aW5nLCBzZWxlY3Rpb24pICovXG4gICAgYWJzdHJhY3QgZ2V0IF9maXhlZENvbHVtbnNQYWRkaW5nKCk6IG51bWJlcjtcblxuICAgIC8qKiBGcmVlemFibGUgY29sdW1uIG5hbWVzIGFuZCB0aGVpciByZXNwZWN0aXZlIGluZGV4ZXMgKi9cbiAgICBhYnN0cmFjdCBnZXQgX2ZyZWV6YWJsZUNvbHVtbnMoKTogUmVhZG9ubHlNYXA8c3RyaW5nLCBudW1iZXI+O1xuXG4gICAgLyoqIFdpZHRoIG9mIHRoZSB0YWJsZSBlbGVtZW50IGluIHB4ICovXG4gICAgYWJzdHJhY3QgZ2V0IF90YWJsZVdpZHRoUHgoKTogbnVtYmVyO1xuXG4gICAgYWJzdHJhY3QgZ2V0IGxvYWRpbmdTdGF0ZSgpOiBib29sZWFuO1xuXG4gICAgYWJzdHJhY3QgaW5pdGlhbFN0YXRlOiBUYWJsZUluaXRpYWxTdGF0ZSB8IG51bGw7XG5cbiAgICAvKiogVGFibGUgY29sdW1ucyBkZWZpbml0aW9uIGxpc3QgKi9cbiAgICBhYnN0cmFjdCByZWFkb25seSB0YWJsZUNvbHVtbnNTdHJlYW06IE9ic2VydmFibGU8VGFibGVDb2x1bW5bXT47XG5cbiAgICBhYnN0cmFjdCByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3I7XG5cbiAgICBhYnN0cmFjdCByZWFkb25seSB0YWJsZUNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAgIGFic3RyYWN0IHJlYWRvbmx5IHRhYmxlU2Nyb2xsYWJsZTogVGFibGVTY3JvbGxhYmxlO1xuXG4gICAgYWJzdHJhY3QgX3RhYmxlUm93c1Zpc2libGU6IFRhYmxlUm93PFQ+W107XG5cbiAgICBhYnN0cmFjdCBfdGFibGVSb3dzOiBUYWJsZVJvdzxUPltdO1xuXG4gICAgYWJzdHJhY3QgX3RhYmxlUm93c0luVmlld1BvcnRQbGFjZWhvbGRlcjogbnVtYmVyW107XG5cbiAgICAvKiogR2V0IHRhYmxlIHN0YXRlICovXG4gICAgYWJzdHJhY3QgZ2V0VGFibGVTdGF0ZSgpOiBUYWJsZVN0YXRlO1xuXG4gICAgLyoqIFNldCB0YWJsZSBzdGF0ZSAqL1xuICAgIGFic3RyYWN0IHNldFRhYmxlU3RhdGUodGFibGVTdGF0ZTogVGFibGVTdGF0ZSk6IHZvaWQ7XG5cbiAgICAvKiogR2V0IHRhYmxlIGNvbHVtbnMgZGVmaW5pdGlvbiBsaXN0ICovXG4gICAgYWJzdHJhY3QgZ2V0VGFibGVDb2x1bW5zKCk6IFRhYmxlQ29sdW1uW107XG5cbiAgICAvKiogR2V0IGEgbGlzdCBvZiB2aXNpYmxlIHRhYmxlIGNvbHVtbnMuICovXG4gICAgYWJzdHJhY3QgZ2V0VmlzaWJsZVRhYmxlQ29sdW1ucygpOiBUYWJsZUNvbHVtbltdO1xuXG4gICAgLyoqIFNldCBTb3J0aW5nIHJ1bGVzICovXG4gICAgYWJzdHJhY3Qgc29ydChzb3J0UnVsZXM6IENvbGxlY3Rpb25Tb3J0W10pOiB2b2lkO1xuXG4gICAgLyoqIEFkZCBTb3J0aW5nIHJ1bGVzIHRvIHRoZSBleGlzdGluZyBvbmVzICovXG4gICAgYWJzdHJhY3QgYWRkU29ydChzb3J0UnVsZXM6IENvbGxlY3Rpb25Tb3J0W10pOiB2b2lkO1xuXG4gICAgLyoqIFNldCBGaWx0ZXJpbmcgcnVsZXMgKi9cbiAgICBhYnN0cmFjdCBmaWx0ZXIoZmlsdGVyUnVsZXM6IENvbGxlY3Rpb25GaWx0ZXJbXSk6IHZvaWQ7XG5cbiAgICAvKiogQWRkIEZpbHRlciBydWxlcyB0byB0aGUgZXhpc3Rpbmcgb25lcyAqL1xuICAgIGFic3RyYWN0IGFkZEZpbHRlcihmaWx0ZXJSdWxlczogQ29sbGVjdGlvbkZpbHRlcltdKTogdm9pZDtcblxuICAgIC8qKiBTZXQgZ3JvdXBpbmcgcnVsZXMgKi9cbiAgICBhYnN0cmFjdCBncm91cChncm91cFJ1bGVzOiBDb2xsZWN0aW9uR3JvdXBbXSk6IHZvaWQ7XG5cbiAgICAvKiogQWRkIEdyb3VwIHJ1bGVzIHRvIHRoZSBleGlzdGluZyBvbmVzICovXG4gICAgYWJzdHJhY3QgYWRkR3JvdXAoZ3JvdXBSdWxlczogQ29sbGVjdGlvbkdyb3VwW10pOiB2b2lkO1xuXG4gICAgLyoqIFNldCB0YWJsZSBjb2x1bW5zICovXG4gICAgYWJzdHJhY3Qgc2V0Q29sdW1ucyhjb2x1bW5zOiBzdHJpbmdbXSk6IHZvaWQ7XG5cbiAgICAvKiogVG9nZ2xlIHJvdyBjaGVja2VkIHN0YXRlLiAqL1xuICAgIGFic3RyYWN0IHRvZ2dsZVNlbGVjdGFibGVSb3cocm93SW5kZXg6IG51bWJlcik6IHZvaWQ7XG5cbiAgICAvKiogRnJlZXplIHRhYmxlIGNvbHVtbnMgdG8gaW5jbHVkaW5nICovXG4gICAgYWJzdHJhY3QgZnJlZXplVG9Db2x1bW4oY29sdW1uS2V5OiBzdHJpbmcsIGVuZD86IGJvb2xlYW4pOiB2b2lkO1xuXG4gICAgLyoqIFVuZnJlZXplIGNvbHVtbiAqL1xuICAgIGFic3RyYWN0IHVuZnJlZXplKGNvbHVtbktleTogc3RyaW5nKTogdm9pZDtcblxuICAgIC8qKiBTZWFyY2ggaW4gYWxsIHRhYmxlIGNvbHVtbnMgKi9cbiAgICBhYnN0cmFjdCBzZWFyY2goc2VhcmNoSW5wdXQ6IFNlYXJjaElucHV0KTogdm9pZDtcblxuICAgIC8qKiBUb29sYmFyIFNvcnQgU2V0dGluZ3MgYnV0dG9uIHZpc2liaWxpdHkgKi9cbiAgICBhYnN0cmFjdCBzaG93U29ydFNldHRpbmdzSW5Ub29sYmFyKHNob3dTb3J0U2V0dGluZ3M6IGJvb2xlYW4pOiB2b2lkO1xuXG4gICAgLyoqIFRvb2xiYXIgRmlsdGVyIFNldHRpbmdzIGJ1dHRvbiB2aXNpYmlsaXR5ICovXG4gICAgYWJzdHJhY3Qgc2hvd0ZpbHRlclNldHRpbmdzSW5Ub29sYmFyKHNob3dGaWx0ZXJTZXR0aW5nczogYm9vbGVhbik6IHZvaWQ7XG5cbiAgICAvKiogVG9vbGJhciBHcm91cCBTZXR0aW5ncyBidXR0b24gdmlzaWJpbGl0eSAqL1xuICAgIGFic3RyYWN0IHNob3dHcm91cFNldHRpbmdzSW5Ub29sYmFyKHNob3dHcm91cFNldHRpbmdzOiBib29sZWFuKTogdm9pZDtcblxuICAgIC8qKiBUb29sYmFyIENvbHVtbnMgU2V0dGluZ3MgYnV0dG9uIHZpc2liaWxpdHkgKi9cbiAgICBhYnN0cmFjdCBzaG93Q29sdW1uU2V0dGluZ3NJblRvb2xiYXIoc2hvd0NvbHVtblNldHRpbmdzOiBib29sZWFuKTogdm9pZDtcblxuICAgIC8qKiBEaXNhYmxlIGZpbHRlcmluZyBieSBoZWFkZXIgY29sdW1uIG1lbnUgKi9cbiAgICBhYnN0cmFjdCBzZXRIZWFkZXJDb2x1bW5GaWx0ZXJpbmdEaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQ7XG5cbiAgICAvKiogU2V0IGN1cnJlbnQgcGFnZSAqL1xuICAgIGFic3RyYWN0IHNldEN1cnJlbnRQYWdlKGN1cnJlbnRQYWdlOiBudW1iZXIpOiB2b2lkO1xuXG4gICAgLyoqIEdldHMgdGhlIG1heCBhbGxvd2VkIHdpZHRoIGZvciBhbGwgZnJlZXphYmxlIGNvbHVtbnMgKi9cbiAgICBhYnN0cmFjdCBnZXRNYXhBbGxvd2VkRnJlZXphYmxlQ29sdW1uc1dpZHRoKCk6IG51bWJlcjtcblxuICAgIC8qKiBHZXQgdGFibGUgZGF0YSBzb3VyY2UgKi9cbiAgICBhYnN0cmFjdCBnZXREYXRhU291cmNlKCk6IFRhYmxlRGF0YVNvdXJjZTxUPjtcblxuICAgIC8qKiBNYW51YWxseSB0cmlnZ2VycyBjb2x1bW5zIHdpZHRoIHJlY2FsY3VsYXRpb24gKi9cbiAgICBhYnN0cmFjdCByZWNhbGN1bGF0ZVRhYmxlQ29sdW1uV2lkdGgoKTogdm9pZDtcblxuICAgIC8qKiBGZXRjaCBkYXRhIHNvdXJjZSBkYXRhLiAqL1xuICAgIGFic3RyYWN0IGZldGNoKCk6IHZvaWQ7XG5cbiAgICAvKiogQWRkcyBlbXB0eSByb3cgZm9yIGVkaXRpbmcgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcm93cyBhcnJheS4gKi9cbiAgICBhYnN0cmFjdCBhZGRSb3coKTogdm9pZDtcblxuICAgIC8qKiBFbWl0cyBzYXZlIGV2ZW50IGFuZCByZXNldHMgZWRpdGFibGUgcm93cyBhcnJheS4gKi9cbiAgICBhYnN0cmFjdCBzYXZlUm93cygpOiB2b2lkO1xuXG4gICAgLyoqIENhbmNlbHMgZWRpdGluZyBhbmQgZGlzY2FyZHMgbmV3bHkgYWRkZWQgcm93cyAqL1xuICAgIGFic3RyYWN0IGNhbmNlbEVkaXRpbmcoKTogdm9pZDtcblxuICAgIC8qKiBFeHBhbmQgYWxsIHRoZSByb3dzIG9mIHRoZSB0YWJsZSAqL1xuICAgIGFic3RyYWN0IGV4cGFuZEFsbCgpOiB2b2lkO1xuXG4gICAgLyoqIENvbGxhcHNlIGFsbCB0aGUgcm93cyBvZiB0aGUgdGFibGUgKi9cbiAgICBhYnN0cmFjdCBjb2xsYXBzZUFsbCgpOiB2b2lkO1xuXG4gICAgLyoqIFNldHMgc2VsZWN0ZWQgcHJlc2V0LiAqL1xuICAgIGFic3RyYWN0IHNldFByZXNldChkYXRhOiBQbGF0Zm9ybVRhYmxlTWFuYWdlZFByZXNldCk6IHZvaWQ7XG5cbiAgICAvKiogUmV0dXJucyBjdXJyZW50IHByZXNldC4gKi9cbiAgICBhYnN0cmFjdCBnZXRDdXJyZW50UHJlc2V0KCk6IFBsYXRmb3JtVGFibGVNYW5hZ2VkUHJlc2V0O1xuXG4gICAgYWJzdHJhY3QgZ2V0Um93c0luVmlld3BvcnQoKTogbnVtYmVyW107XG5cbiAgICBhYnN0cmFjdCBzZXRSb3dzSW5WaWV3cG9ydChzdGFydEluZGV4OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKTogdm9pZDtcblxuICAgIGFic3RyYWN0IHRvZ2dsZUV4cGFuZGFibGVUYWJsZVJvdyhyb3c6IFRhYmxlUm93PFQ+LCBmb3JjZUZldGNoPzogYm9vbGVhbik7XG5cbiAgICBhYnN0cmFjdCBvblRhYmxlUm93c0NoYW5nZWQoKTogdm9pZDtcblxuICAgIGFic3RyYWN0IHJlZnJlc2hEbmRMaXN0KCk6IHZvaWQ7XG5cbiAgICAvKiogVG9vbGJhciBTb3J0IFNldHRpbmdzIGJ1dHRvbiBjbGljayBldmVudCAqL1xuICAgIHJlYWRvbmx5IG9wZW5UYWJsZVNvcnRTZXR0aW5nczogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIFRvb2xiYXIgRmlsdGVyIFNldHRpbmdzIGJ1dHRvbiBjbGljayBldmVudCAqL1xuICAgIHJlYWRvbmx5IG9wZW5UYWJsZUZpbHRlclNldHRpbmdzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogVG9vbGJhciBHcm91cCBTZXR0aW5ncyBidXR0b24gY2xpY2sgZXZlbnQgKi9cbiAgICByZWFkb25seSBvcGVuVGFibGVHcm91cFNldHRpbmdzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogVG9vbGJhciBDb2x1bW4gU2V0dGluZ3MgYnV0dG9uIGNsaWNrIGV2ZW50ICovXG4gICAgcmVhZG9ubHkgb3BlblRhYmxlQ29sdW1uU2V0dGluZ3M6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBmaXJlZCB3aGVuIGVtcHR5IHJvdyBhZGRlZC4gKi9cbiAgICByZWFkb25seSBlbXB0eVJvd0FkZGVkOiBFdmVudEVtaXR0ZXI8dm9pZD47XG5cbiAgICAvKiogRXZlbnQgZmlyZWQgd2hlbiBzYXZlIGJ1dHRvbiBwcmVzc2VkLiAqL1xuICAgIHJlYWRvbmx5IHNhdmU6IEV2ZW50RW1pdHRlcjxTYXZlUm93c0V2ZW50PFQ+PjtcblxuICAgIC8qKiBFdmVudCBmaXJlZCB3aGVuIGNhbmNlbCBidXR0b24gcHJlc3NlZC4gKi9cbiAgICByZWFkb25seSBjYW5jZWw6IEV2ZW50RW1pdHRlcjx2b2lkPjtcbn1cbiJdfQ==
@@ -832,7 +832,7 @@ export class UploadCollectionComponent {
832
832
  }
833
833
  }
834
834
  UploadCollectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UploadCollectionComponent, deps: [{ token: i1.DialogService }, { token: i2.FilesValidatorService }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
835
- UploadCollectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: UploadCollectionComponent, selector: "fdp-upload-collection", inputs: { id: "id", itemsPerPage: "itemsPerPage", dataSource: "dataSource", fileTypes: "fileTypes", maxFileSize: "maxFileSize", maxFilenameLength: "maxFilenameLength", mimeTypes: "mimeTypes", noDataText: "noDataText", noDataDescription: "noDataDescription", disabled: "disabled", readonly: "readonly", hierarchy: "hierarchy", enablePagination: "enablePagination", terminationEnabled: "terminationEnabled", multiple: "multiple", showSearch: "showSearch", sameFileNameAllowed: "sameFileNameAllowed" }, outputs: { typeMismatch: "typeMismatch", filenameLengthExceed: "filenameLengthExceed", fileSizeExceed: "fileSizeExceed" }, viewQueries: [{ propertyName: "_uploadFilesRef", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "_updateVersionRef", first: true, predicate: ["updateVersionInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div [id]=\"id\" class=\"fdp-upload-collection\">\n <!-- Message strip -->\n <fd-message-strip *ngIf=\"_message\" [type]=\"_message.messageStripType\" (onDismiss)=\"_messageStripDismiss()\">\n <ng-container\n [ngTemplateOutlet]=\"message\"\n [ngTemplateOutletContext]=\"{\n messageType: _message.messageType,\n payload: _message.payload,\n messageStripType: _message.messageStripType,\n count: _message.count\n }\"\n ></ng-container>\n </fd-message-strip>\n\n <!-- Toolbar -->\n <fd-toolbar class=\"fdp-upload-collection__toolbar\">\n <div style=\"flex: 1 auto\">\n <fd-breadcrumb [id]=\"id + '-breadcrumb'\">\n <fd-breadcrumb-item>\n <ng-template #multipleBreadcrumbs>\n <a href=\"#\" fd-link (click)=\"_breadcrumbGoTo($event)\">\n {{ 'platformUploadCollection.breadcrumbLabelAllFiles' | fdTranslate }}\n </a>\n </ng-template>\n <ng-template #singleBreadcrumb>\n <span>\n {{\n 'platformUploadCollection.breadcrumbLabelAllFilesWithTotal'\n | fdTranslate : { total: _totalItems }\n }}\n </span>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"_breadcrumbList.length > 0 ? multipleBreadcrumbs : singleBreadcrumb\"\n ></ng-container>\n </fd-breadcrumb-item>\n <fd-breadcrumb-item *ngFor=\"let item of _breadcrumbList; let i = index\">\n <ng-template #clickableBreadcrumb>\n <a href=\"#\" fd-link (click)=\"_breadcrumbGoTo($event, i)\">{{ item.folderName }}</a>\n </ng-template>\n <ng-template #textBreadcrumb>\n <span>{{ item.folderName }} ({{ _totalItems }})</span>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"item.clikable ? clickableBreadcrumb : textBreadcrumb\"\n ></ng-container>\n </fd-breadcrumb-item>\n </fd-breadcrumb>\n </div>\n\n <fd-toolbar-spacer style=\"max-width: 3rem\"></fd-toolbar-spacer>\n <ng-container *ngIf=\"readonly || selectedItems.length === 0\">\n <fd-input-group\n *ngIf=\"showSearch\"\n [(ngModel)]=\"_searchText\"\n (ngModelChange)=\"_searchInputChanged()\"\n glyph=\"search\"\n [ariaLabelledBy]=\"id + '-breadcrumb'\"\n [placeholder]=\"'platformUploadCollection.searchPlaceholder' | fdTranslate\"\n ></fd-input-group>\n\n <ng-container *ngIf=\"!readonly\">\n <button\n fd-toolbar-item\n fd-button\n (click)=\"_openUploadFiles()\"\n fdType=\"ghost\"\n [disabled]=\"disabled\"\n [label]=\"'platformUploadCollection.addBtnLabel' | fdTranslate\"\n [title]=\"'platformUploadCollection.addBtnLabel' | fdTranslate\"\n ></button>\n\n <button\n fd-toolbar-item\n fd-button\n (click)=\"_openNewFolderDialog()\"\n *ngIf=\"hierarchy\"\n [disabled]=\"disabled\"\n fdType=\"transparent\"\n [label]=\"'platformUploadCollection.newFolderBtnLabel' | fdTranslate\"\n [title]=\"'platformUploadCollection.newFolderBtnLabel' | fdTranslate\"\n ></button>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!readonly && selectedItems.length > 0\">\n <button\n fd-toolbar-item\n fd-button\n (click)=\"_moveToClicked(true)\"\n fdType=\"ghost\"\n [disabled]=\"disabled\"\n [label]=\"'platformUploadCollection.moveToBtnLabel' | fdTranslate\"\n [title]=\"'platformUploadCollection.moveToBtnLabel' | fdTranslate\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n (click)=\"_downloadClicked(true)\"\n fdType=\"ghost\"\n [disabled]=\"disabled\"\n *ngIf=\"_showIfSelectedOnlyFiles()\"\n [label]=\"'platformUploadCollection.downloadBtnLabel' | fdTranslate\"\n [title]=\"'platformUploadCollection.downloadBtnLabel' | fdTranslate\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n (click)=\"_remove(true)\"\n fdType=\"ghost\"\n [disabled]=\"disabled\"\n [label]=\"'platformUploadCollection.removeBtnLabel' | fdTranslate\"\n [title]=\"'platformUploadCollection.removeBtnLabel' | fdTranslate\"\n ></button>\n </ng-container>\n </fd-toolbar>\n\n <div class=\"fdp-upload-collection__table--wrapper\">\n <div\n class=\"fdp-upload-collection__table\"\n fdpUploadCollectionDragnDrop\n [fileTypes]=\"fileTypes\"\n [maxFilenameLength]=\"maxFilenameLength\"\n [maxFileSize]=\"maxFileSize\"\n [mimeTypes]=\"mimeTypes\"\n [dragndrop]=\"!readonly\"\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n (fileChanged)=\"_handleDrop($event)\"\n (cancel)=\"_dragDropCancel()\"\n (onDropzone)=\"_onDropzone($event)\"\n >\n <!-- Table -->\n <fdp-table\n *ngIf=\"_visibleList$.value.length > 0\"\n [dataSource]=\"_visibleList$\"\n [loading]=\"dataSource.isDataLoading\"\n selectionMode=\"multiple\"\n emptyTableMessage=\"\"\n [noHorizontalBorders]=\"true\"\n [trackBy]=\"_trackByDocumentId\"\n (rowSelectionChange)=\"_onRowSelectionChange($event)\"\n >\n <fdp-column name=\"name\" label=\"Name\" width=\"8rem\">\n <fdp-table-cell *fdpCellDef=\"let item\">\n <div class=\"fdp-upload-collection__vertical-align-center\">\n <fd-icon\n class=\"fdp-upload-collection__fd-icon\"\n *ngIf=\"item.type === 'folder'\"\n glyph=\"folder-blank\"\n [title]=\"'platformUploadCollection.folderIconTitle' | fdTranslate\"\n ></fd-icon>\n <fd-icon\n class=\"fdp-upload-collection__fd-icon\"\n *ngIf=\"item.type === 'file'\"\n [glyph]=\"_getIconByType(item)\"\n [title]=\"'platformUploadCollection.fileIconTitle' | fdTranslate\"\n ></fd-icon>\n\n <ng-container *ngIf=\"disabled || readonly || !_isSelectedItem(item); else editMode\">\n <span\n [class.fdp-upload-collection__cursor]=\"item.type === 'folder'\"\n (click)=\"_openFolder(item)\"\n >{{ item.name }}</span\n >\n </ng-container>\n </div>\n\n <ng-template #editMode>\n <div fd-form-item>\n <fd-form-input-message-group [triggers]=\"[]\" [isOpen]=\"!!item.sameFilenameState\">\n <div class=\"fdp-upload-collection__vertical-align-center\">\n <input\n fd-form-control\n [value]=\"_getItemName(item)\"\n (blur)=\"_fileNameChange($event, item)\"\n (input)=\"_checkName($event, item)\"\n type=\"text\"\n [placeholder]=\"\n 'platformUploadCollection.editFileNameInputPlaceholder' | fdTranslate\n \"\n [state]=\"item.sameFilenameState\"\n />\n <span class=\"fdp-upload-collection__item_extension\">{{\n _getItemExtension(item)\n }}</span>\n </div>\n\n <fd-form-message [type]=\"item.sameFilenameState\">\n {{\n (item.type === 'file'\n ? 'platformUploadCollection.editFileNameFileAlreadyExistsError'\n : 'platformUploadCollection.editFileNameFolderAlreadyExistsError'\n ) | fdTranslate\n }}\n </fd-form-message>\n </fd-form-input-message-group>\n </div>\n </ng-template>\n </fdp-table-cell>\n </fdp-column>\n\n <fdp-column name=\"uploadedBy\" label=\"Uploaded by\" width=\"5rem\">\n <fdp-table-cell *fdpCellDef=\"let item\">{{ item.uploadedBy.name }}</fdp-table-cell>\n </fdp-column>\n\n <fdp-column name=\"uploadedOn\" label=\"Uploaded on\" width=\"5rem\">\n <fdp-table-cell *fdpCellDef=\"let item\">{{ item.uploadedOn | date : 'shortDate' }}</fdp-table-cell>\n </fdp-column>\n\n <fdp-column name=\"size\" label=\"File size\" width=\"5rem\">\n <fdp-table-cell *fdpCellDef=\"let item\">{{ item.fileSize | convertBytes }}</fdp-table-cell>\n </fdp-column>\n\n <fdp-column name=\"version\" label=\"Version\" width=\"5rem\">\n <fdp-table-cell *fdpCellDef=\"let item\">{{ item.version || '' }}</fdp-table-cell>\n </fdp-column>\n\n <fdp-column name=\"status\" label=\"Status\" width=\"5rem\">\n <fdp-table-cell *fdpCellDef=\"let item\">\n <fd-busy-indicator\n *ngIf=\"item.status === _uploadCollectionItemStatus.LOADING\"\n [loading]=\"true\"\n ariaLabel=\"Status: Loading\"\n ariaLive=\"polite\"\n size=\"s\"\n ></fd-busy-indicator>\n <span\n *ngIf=\"item.status === _uploadCollectionItemStatus.SUCCESSFUL\"\n fd-object-status\n status=\"positive\"\n >\n {{ 'platformUploadCollection.itemStatusSuccessful' | fdTranslate }}\n </span>\n <span\n *ngIf=\"item.status === _uploadCollectionItemStatus.UNSUCCESSFUL\"\n fd-object-status\n status=\"negative\"\n >\n {{ 'platformUploadCollection.itemStatusUnsuccessful' | fdTranslate }}\n </span>\n </fdp-table-cell>\n </fdp-column>\n\n <fdp-column name=\"action\" *ngIf=\"!readonly\" width=\"5rem\" align=\"end\">\n <fdp-table-header *fdpHeaderCellDef>Action</fdp-table-header>\n <fdp-table-cell *fdpCellDef=\"let item\">\n <div class=\"fdp-upload-collection__actions\">\n <div class=\"fdp-upload-collection__actions--status\">\n <button\n fd-button\n [label]=\"'platformUploadCollection.uploadNewFileAfterFailAction' | fdTranslate\"\n [title]=\"'platformUploadCollection.uploadNewFileAfterFailAction' | fdTranslate\"\n (click)=\"_runUploadNewFileAfterFail(item)\"\n fdType=\"ghost\"\n [disabled]=\"disabled\"\n *ngIf=\"item.status === _uploadCollectionItemStatus.UNSUCCESSFUL\"\n ></button>\n\n <button\n fd-button\n [label]=\"'platformUploadCollection.cancelUploadNewFileAction' | fdTranslate\"\n [title]=\"'platformUploadCollection.cancelUploadNewFileAction' | fdTranslate\"\n fdType=\"ghost\"\n [disabled]=\"disabled\"\n (click)=\"_cancelUploadNewFile(item)\"\n *ngIf=\"terminationEnabled && item.status === _uploadCollectionItemStatus.LOADING\"\n ></button>\n </div>\n\n <fdp-menu-button\n icon=\"overflow\"\n [disabled]=\"disabled\"\n type=\"transparent\"\n [title]=\"'platformUploadCollection.itemMenuBtnTitle' | fdTranslate\"\n [fdpMenuTriggerFor]=\"menuActions\"\n (buttonClicked)=\"_actionButton(item)\"\n >\n </fdp-menu-button>\n </div>\n </fdp-table-cell>\n </fdp-column>\n </fdp-table>\n\n <!-- Dragdrop area -->\n <div\n class=\"fdp-upload-collection__dragdrop-area\"\n *ngIf=\"_showDragDropArea\"\n [class.active]=\"_onDragDropArea\"\n >\n <fd-icon class=\"fdp-upload-collection__dragdrop-area--icon\" glyph=\"upload-to-cloud\"></fd-icon>\n <p class=\"fdp-upload-collection__dragdrop-area--text\">\n {{ 'platformUploadCollection.dragDropAreaText' | fdTranslate }}\n </p>\n </div>\n\n <!-- No data -->\n <div\n class=\"fdp-upload-collection__no-data\"\n *ngIf=\"_visibleList$.value.length === 0\"\n [class.invisible]=\"_showDragDropArea\"\n >\n <fd-icon glyph=\"document\"></fd-icon>\n <h3>{{ noDataText || ('platformUploadCollection.noDataText' | fdTranslate) }}</h3>\n <p>{{ noDataDescription || ('platformUploadCollection.noDataDescription' | fdTranslate) }}</p>\n </div>\n </div>\n\n <!-- Table footer -->\n <div class=\"fdp-upload-collection__table-footer\" *ngIf=\"enablePagination\">\n <!-- Pagination -->\n <div class=\"fdp-upload-collection__pagination\">\n <span [id]=\"id + '-pagination'\" class=\"fdp-upload-collection__pagination--total\">\n {{\n 'platformUploadCollection.paginationTotal'\n | fdTranslate : { from: _countShowedItems, to: _countNotShowedItems, total: _totalItems }\n }}\n </span>\n <fd-pagination\n [totalItems]=\"_totalItems\"\n [displayTotalItems]=\"false\"\n (pageChangeStart)=\"_pageChanged($event)\"\n [itemsPerPage]=\"_itemsPerPage\"\n [currentPage]=\"_currentPage\"\n [attr.aria-labelledby]=\"id + '-pagination'\"\n ></fd-pagination>\n </div>\n\n <!-- Results per page -->\n <div class=\"fdp-upload-collection__results\">\n <span class=\"fdp-upload-collection__results--title\">\n <span [id]=\"id + '-results'\">\n {{ 'platformUploadCollection.resultsPerPage' | fdTranslate }}\n </span>\n <span *ngIf=\"_itemsPerPageOptions.length === 0\">{{ _itemsPerPage }}</span>\n </span>\n <fdp-menu-button\n *ngIf=\"_itemsPerPageOptions.length > 0\"\n type=\"ghost\"\n [ariaLabelledBy]=\"id + '-results'\"\n [fdpMenuTriggerFor]=\"itemsPerPageMenu\"\n [label]=\"_itemsPerPage + ''\"\n >\n </fdp-menu-button>\n </div>\n </div>\n </div>\n</div>\n\n<fdp-menu #itemsPerPageMenu xPosition=\"before\">\n <fdp-menu-item\n *ngFor=\"let value of _itemsPerPageOptions\"\n (itemSelect)=\"_itemsPerPageChange(value.label)\"\n [attr.title]=\"'Results per page: ' + value.label\"\n >\n <span>{{ value.label }}</span>\n </fdp-menu-item>\n</fdp-menu>\n\n<fdp-menu #menuActions xPosition=\"before\">\n <fdp-menu-item (itemSelect)=\"_moveToClicked()\">\n <fd-icon\n class=\"fdp-upload-collection__fd-icon\"\n glyph=\"folder-blank\"\n [title]=\"'platformUploadCollection.moveToBtnLabel' | fdTranslate\"\n ></fd-icon>\n <span>\n {{ 'platformUploadCollection.moveToBtnLabel' | fdTranslate }}\n </span>\n </fdp-menu-item>\n <ng-container *ngIf=\"_activeItem?.type === 'file'\">\n <fdp-menu-item (itemSelect)=\"_downloadClicked()\">\n <fd-icon\n class=\"fdp-upload-collection__fd-icon\"\n glyph=\"download\"\n [title]=\"'platformUploadCollection.downloadBtnLabel' | fdTranslate\"\n ></fd-icon>\n <span>\n {{ 'platformUploadCollection.downloadBtnLabel' | fdTranslate }}\n </span>\n </fdp-menu-item>\n <fdp-menu-item (itemSelect)=\"_openUpdateFileVersion()\">\n <fd-icon\n class=\"fdp-upload-collection__fd-icon\"\n glyph=\"drill-up\"\n [title]=\"'platformUploadCollection.updateVersionBtnLabel' | fdTranslate\"\n ></fd-icon>\n <span>\n {{ 'platformUploadCollection.updateVersionBtnLabel' | fdTranslate }}\n </span>\n </fdp-menu-item>\n </ng-container>\n <fdp-menu-item (itemSelect)=\"_remove()\">\n <fd-icon\n class=\"fdp-upload-collection__fd-icon\"\n glyph=\"delete\"\n [title]=\"'platformUploadCollection.removeBtnLabel' | fdTranslate\"\n ></fd-icon>\n <span>\n {{ 'platformUploadCollection.removeBtnLabel' | fdTranslate }}\n </span>\n </fdp-menu-item>\n</fdp-menu>\n\n<input\n #fileInput\n class=\"fdp-upload-collection__hidden\"\n type=\"file\"\n (fileSelected)=\"_selectHandler($event)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n fdFileSelect\n/>\n\n<input\n #updateVersionInput\n class=\"fdp-upload-collection__hidden\"\n type=\"file\"\n (fileSelected)=\"_selectHandler($event)\"\n [disabled]=\"disabled\"\n [multiple]=\"false\"\n fdFileSelect\n/>\n\n<ng-template\n let-messageType=\"messageType\"\n let-payload=\"payload\"\n let-messageStripType=\"messageStripType\"\n let-count=\"count\"\n #message\n>\n <ng-container *ngIf=\"_message\" [ngSwitch]=\"messageType\">\n <ng-container\n *ngSwitchCase=\"_messageType.CREATE\"\n [ngTemplateOutlet]=\"messageNewFolder\"\n [ngTemplateOutletContext]=\"{\n messageStripType: _message.messageStripType,\n payload: _message.payload\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.UPDATE_VERSION\"\n [ngTemplateOutlet]=\"messageUpdateVersion\"\n [ngTemplateOutletContext]=\"{\n messageStripType: _message.messageStripType,\n payload: _message.payload\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.FILE_RENAME\"\n [ngTemplateOutlet]=\"messageFileRename\"\n [ngTemplateOutletContext]=\"{\n messageStripType: _message.messageStripType,\n payload: _message.payload\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.REMOVE\"\n [ngTemplateOutlet]=\"messageRemove\"\n [ngTemplateOutletContext]=\"{\n payload: _message.payload,\n messageStripType: _message.messageStripType,\n count: _message.count\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.MOVE\"\n [ngTemplateOutlet]=\"messageMove\"\n [ngTemplateOutletContext]=\"{\n payload: _message.payload,\n messageStripType: _message.messageStripType,\n count: _message.count\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.TYPE_MISMATCH\"\n [ngTemplateOutlet]=\"messageTypeMismatch\"\n [ngTemplateOutletContext]=\"{\n payload: _message.payload,\n messageStripType: _message.messageStripType,\n count: _message.count\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.FILE_SIZE\"\n [ngTemplateOutlet]=\"messageFileSize\"\n [ngTemplateOutletContext]=\"{\n payload: _message.payload,\n messageStripType: _message.messageStripType,\n count: _message.count\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.FILE_NAME_LENGTH\"\n [ngTemplateOutlet]=\"messageFilenameLength\"\n [ngTemplateOutletContext]=\"{\n payload: _message.payload,\n messageStripType: _message.messageStripType,\n count: _message.count\n }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #messageNewFolder let-payload=\"payload\" let-messageStripType=\"messageStripType\">\n <ng-container *ngIf=\"messageStripType === 'error'; else foldersCreated\">\n {{ 'platformUploadCollection.messageCreateFailed' | fdTranslate : { folderName: payload.folder.name } }}\n </ng-container>\n <ng-template #foldersCreated>\n {{ 'platformUploadCollection.messageCreateSuccess' | fdTranslate : { folderName: payload.folder.name } }}\n </ng-template>\n</ng-template>\n\n<ng-template #messageUpdateVersion let-payload=\"payload\" let-messageStripType=\"messageStripType\">\n <ng-container *ngIf=\"messageStripType === 'error'; else versionUpdated\">\n {{ 'platformUploadCollection.messageUpdateVersionFailed' | fdTranslate : { folderName: payload.item.name } }}\n </ng-container>\n <ng-template #versionUpdated>\n {{ 'platformUploadCollection.messageUpdateVersionSuccess' | fdTranslate : { folderName: payload.item.name } }}\n </ng-template>\n</ng-template>\n\n<ng-template #messageFileRename let-payload=\"payload\" let-messageStripType=\"messageStripType\">\n <ng-container *ngIf=\"messageStripType === 'error'; else fileRenamed\">\n {{\n 'platformUploadCollection.messageFileRenameFailed'\n | fdTranslate : { from: payload.item.name, to: payload.fileName }\n }}\n </ng-container>\n <ng-template #fileRenamed>\n {{\n 'platformUploadCollection.messageFileRenameSuccess'\n | fdTranslate : { from: payload.item.name, to: payload.fileName }\n }}\n </ng-template>\n</ng-template>\n\n<ng-template #messageRemove let-payload=\"payload\" let-messageStripType=\"messageStripType\" let-count=\"count\">\n <ng-container *ngIf=\"payload.items.length > 1 && count.folder && count.file\">\n <ng-container *ngIf=\"messageStripType === 'error'; else foldersAndFilesRemoved\">\n {{\n 'platformUploadCollection.messageRemoveFoldersAndFilesFailed'\n | fdTranslate : { foldersCount: count.folder, filesCount: count.file }\n }}\n </ng-container>\n <ng-template #foldersAndFilesRemoved>\n {{\n 'platformUploadCollection.messageRemoveFoldersAndFilesSuccess'\n | fdTranslate : { foldersCount: count.folder, filesCount: count.file }\n }}\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length > 1 && count.folder && !count.file\">\n <ng-container *ngIf=\"messageStripType === 'error'; else foldersRemoved\">\n {{ 'platformUploadCollection.messageRemoveFoldersFailed' | fdTranslate : { foldersCount: count.folder } }}\n </ng-container>\n <ng-template #foldersRemoved>\n {{ 'platformUploadCollection.messageRemoveFoldersSuccess' | fdTranslate : { foldersCount: count.folder } }}\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length > 1 && count.file && !count.folder\">\n <ng-container *ngIf=\"messageStripType === 'error'; else filesRemoved\">\n {{ 'platformUploadCollection.messageRemoveFilesFailed' | fdTranslate : { filesCount: count.file } }}\n </ng-container>\n <ng-template #filesRemoved>\n {{ 'platformUploadCollection.messageRemoveFilesSuccess' | fdTranslate : { filesCount: count.file } }}\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length === 1\">\n <ng-container *ngIf=\"messageStripType === 'error'; else oneItemRemoved\">\n {{\n 'platformUploadCollection.messageRemoveFileOrFolderFailed'\n | fdTranslate : { name: payload.items[0].name }\n }}\n </ng-container>\n <ng-template #oneItemRemoved>\n {{\n 'platformUploadCollection.messageRemoveFileOrFolderSuccess'\n | fdTranslate : { name: payload.items[0].name }\n }}\n </ng-template>\n </ng-container>\n</ng-template>\n\n<ng-template #messageMove let-payload=\"payload\" let-messageStripType=\"messageStripType\" let-count=\"count\">\n <ng-container *ngIf=\"payload.items.length > 1 && count.folder && count.file\">\n <ng-container *ngIf=\"messageStripType === 'error'; else filesAndFoldersMovedTo\">\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFoldersAndFilesFailed'\n : 'platformUploadCollection.messageMoveRootFoldersAndFilesFailed'\n ) | fdTranslate : { foldersCount: count.folder, filesCount: count.file, to: payload.to?.name }\n }}\n </ng-container>\n <ng-template #filesAndFoldersMovedTo>\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFoldersAndFilesSuccess'\n : 'platformUploadCollection.messageMoveRootFoldersAndFilesSuccess'\n ) | fdTranslate : { foldersCount: count.folder, filesCount: count.file, to: payload.to?.name }\n }}\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length > 1 && count.folder && !count.file\">\n <ng-container *ngIf=\"messageStripType === 'error'; else foldersMovedTo\">\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFoldersFailed'\n : 'platformUploadCollection.messageMoveRootFoldersFailed'\n ) | fdTranslate : { foldersCount: count.folder, to: payload.to?.name }\n }}\n </ng-container>\n <ng-template #foldersMovedTo>\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFoldersSuccess'\n : 'platformUploadCollection.messageMoveRootFoldersSuccess'\n ) | fdTranslate : { foldersCount: count.folder, to: payload.to?.name }\n }}\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length > 1 && count.file && !count.folder\">\n <ng-container *ngIf=\"messageStripType === 'error'; else filesMovedTo\">\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFilesFailed'\n : 'platformUploadCollection.messageMoveRootFilesFailed'\n ) | fdTranslate : { filesCount: count.file, to: payload.to?.name }\n }}\n </ng-container>\n <ng-template #filesMovedTo>\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFilesSuccess'\n : 'platformUploadCollection.messageMoveRootFilesSuccess'\n ) | fdTranslate : { filesCount: count.file, to: payload.to?.name }\n }}\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length === 1\">\n <ng-container *ngIf=\"messageStripType === 'error'; else oneItemMovedTo\">\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFileOrFolderFailed'\n : 'platformUploadCollection.messageMoveRootFileOrFolderFailed'\n ) | fdTranslate : { name: payload.items[0].name, to: payload.to?.name }\n }}\n </ng-container>\n <ng-template #oneItemMovedTo>\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFileOrFolderSuccess'\n : 'platformUploadCollection.messageMoveRootFileOrFolderSuccess'\n ) | fdTranslate : { name: payload.items[0].name, to: payload.to?.name }\n }}\n </ng-template>\n </ng-container>\n</ng-template>\n\n<ng-template #messageTypeMismatch let-payload=\"payload\" let-messageStripType=\"messageStripType\" let-count=\"count\">\n <ng-container *ngIf=\"payload.items.length > 1\">\n {{\n 'platformUploadCollection.messageFileTypeMismatchPlural'\n | fdTranslate : { filesCount: payload.items.length, allowedTypes: _getAllowedTypes() }\n }}\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length === 1\">\n {{\n 'platformUploadCollection.messageFileTypeMismatchSingular'\n | fdTranslate : { fileName: payload.items[0].name, allowedTypes: _getAllowedTypes() }\n }}\n </ng-container>\n</ng-template>\n\n<ng-template #messageFileSize let-payload=\"payload\" let-messageStripType=\"messageStripType\" let-count=\"count\">\n <ng-container *ngIf=\"payload.items.length > 1\">\n {{\n 'platformUploadCollection.messageFileSizeExceededPlural'\n | fdTranslate : { filesCount: payload.items.length, maxFileSize: maxFileSize || 0 }\n }}\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length === 1\">\n {{\n 'platformUploadCollection.messageFileSizeExceededSingular'\n | fdTranslate : { fileName: payload.items[0].name, maxFileSize: maxFileSize || 0 }\n }}\n </ng-container>\n</ng-template>\n\n<ng-template #messageFilenameLength let-payload=\"payload\" let-messageStripType=\"messageStripType\" let-count=\"count\">\n <ng-container *ngIf=\"payload.items.length > 1\">\n {{\n 'platformUploadCollection.messageFileNameLengthExceededPlural'\n | fdTranslate : { filesCount: payload.items.length, maxFilenameLength: maxFilenameLength || 0 }\n }}\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length === 1\">\n {{\n 'platformUploadCollection.messageFileNameLengthExceededSingular'\n | fdTranslate : { fileName: payload.items[0].name, maxFilenameLength: maxFilenameLength || 0 }\n }}\n </ng-container>\n</ng-template>\n", styles: [".fdp-upload-collection__fd-icon{color:#0854a0!important;color:var(--sapHighlightColor)!important;margin-right:.625rem!important;font-size:1rem!important}.fdp-upload-collection fd-message-strip{margin-bottom:.625rem}.fdp-upload-collection__toolbar .fd-toolbar{margin-bottom:.625rem;border:0}.fdp-upload-collection__toolbar .fd-toolbar fd-input-group .sap-icon--search{color:#0854a0;color:var(--sapHighlightColor)}.fdp-upload-collection__no-data{text-align:center;min-height:230px;display:flex;align-items:center;flex-direction:column;justify-content:center}.fdp-upload-collection__no-data fd-icon{font-size:3rem;line-height:3rem;margin:0;color:#6a6d70;color:var(--sapContent_LabelColor)}.fdp-upload-collection__no-data h3{font-size:1.125rem;font-size:var(--sapFontHeader4Size);line-height:1rem;margin:8px 0}.fdp-upload-collection__no-data p{font-size:.875rem;font-size:var(--sapFontSize);line-height:1rem;color:#6a6d70;color:var(--sapContent_LabelColor);margin:0}.fdp-upload-collection__no-data.invisible{opacity:0}.fdp-upload-collection__table{position:relative}.fdp-upload-collection__table-footer{display:flex;justify-content:space-between;align-items:center;margin-top:.625rem}.fdp-upload-collection__table-footer .fdp-upload-collection__results--title,.fdp-upload-collection__table-footer .fdp-upload-collection__pagination--total{line-height:1.4;line-height:var(--sapContent_LineHeight);color:#32363a;color:var(--sapTextColor);font-family:\"72\",\"72full\",Arial,Helvetica,sans-serif;font-family:var(--sapFontFamily);font-weight:400;-webkit-font-smoothing:antialiased;box-sizing:border-box;padding:0;margin:0;border:0;font-size:.875rem;font-size:var(--sapFontSize);color:#6a6d70;color:var(--sapContent_LabelColor);margin-right:.5rem}.fdp-upload-collection__table-footer .fdp-upload-collection__results--title:before,.fdp-upload-collection__table-footer .fdp-upload-collection__results--title:after,.fdp-upload-collection__table-footer .fdp-upload-collection__pagination--total:before,.fdp-upload-collection__table-footer .fdp-upload-collection__pagination--total:after{box-sizing:inherit;font-size:inherit}[dir=rtl] .fdp-upload-collection__table-footer .fdp-upload-collection__results--title,.fdp-upload-collection__table-footer .fdp-upload-collection__results--title[dir=rtl],[dir=rtl] .fdp-upload-collection__table-footer .fdp-upload-collection__pagination--total,.fdp-upload-collection__table-footer .fdp-upload-collection__pagination--total[dir=rtl]{margin-right:0;margin-left:.5rem}.fdp-upload-collection__table-footer .fdp-upload-collection__pagination--total{width:100%;align-self:center}.fdp-upload-collection__table-footer .fdp-upload-collection__pagination{font-size:.875rem;font-size:var(--sapFontSize);line-height:1.4;line-height:var(--sapContent_LineHeight);color:#32363a;color:var(--sapTextColor);font-family:\"72\",\"72full\",Arial,Helvetica,sans-serif;font-family:var(--sapFontFamily);font-weight:400;-webkit-font-smoothing:antialiased;box-sizing:border-box;padding:0;margin:0;border:0;display:flex}.fdp-upload-collection__table-footer .fdp-upload-collection__pagination:before,.fdp-upload-collection__table-footer .fdp-upload-collection__pagination:after{box-sizing:inherit;font-size:inherit}.fdp-upload-collection__hidden{display:none}.fdp-upload-collection__vertical-align-center{display:flex;align-items:center}.fdp-upload-collection__cursor{cursor:pointer}.fdp-upload-collection__item_extension{white-space:nowrap}.fdp-upload-collection__actions{display:flex;justify-content:space-between;align-items:center}.fdp-upload-collection__actions .sap-icon--slim-arrow-down{display:none}.fdp-upload-collection__dragdrop-area{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;background:rgba(255,255,255,.5);outline:2px dashed transparent;outline-color:#89919a;outline-color:var(--sapField_BorderColor);outline-offset:-4px;box-sizing:border-box}.fdp-upload-collection__dragdrop-area fd-icon{font-size:3rem;line-height:3rem;margin-bottom:1rem;color:#6a6d70;color:var(--sapContent_LabelColor)}.fdp-upload-collection__dragdrop-area p{font-size:1rem;line-height:1.125rem;color:#6a6d70;color:var(--sapContent_LabelColor)}.fdp-upload-collection__dragdrop-area.active{outline-color:#0854a0;outline-color:var(--sapContent_DragAndDropActiveColor);background:rgba(8,84,160,.08)}.fdp-upload-collection__dragdrop-area.active fd-icon,.fdp-upload-collection__dragdrop-area.active p{color:#0854a0;color:var(--sapContent_DragAndDropActiveColor)}.fdp-upload-collection .fd-form-item{align-items:center;flex-direction:row}.fdp-upload-collection-dialig-no-bg{background-color:transparent!important}[dir=rtl] .fdp-upload-collection fd-icon{margin-right:0;margin-left:.625rem}.fd-menu__list .disabled{background-color:#fff!important;background-color:var(--sapList_Background)!important;cursor:not-allowed}.fd-menu__list .disabled .fd-menu__title{color:#32363a!important;color:var(--sapList_TextColor)!important}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4.TableComponent, selector: "fdp-table", inputs: ["name", "id", "enableDragResize", "fixed", "freezeColumnsTo", "freezeEndColumnsTo", "pageScrolling", "pageSize", "pageScrollingThreshold", "bodyHeight", "emptyTableMessage", "noVisibleColumnsMessage", "noHorizontalBorders", "noVerticalBorders", "noBorders", "noBodyBorders", "noOuterBorders", "noBorderX", "noBorderY", "relationKey", "expandedStateKey", "hasChildrenKey", "rowNavigatable", "highlightNavigatedRow", "rowsActivable", "selectedKey", "selectableKey", "trackBy", "rowComparator", "rowsClass", "editableRowSkeleton", "expandOnInit", "rowHeight", "loadPagesBefore", "selectionMode", "enableTristateMode", "semanticHighlighting", "forceCheckedAllState", "loading"], outputs: ["presetChanged", "rowSelectionChange", "sortChange", "filterChange", "groupChange", "columnsChange", "pageChange", "columnFreeze", "rowToggleOpenState", "rowActivate", "rowNavigate", "emptyRowAdded", "save", "cancel", "tableScrolled", "tableRowsSet", "allRowsExpanded", "allRowsCollapsed"] }, { kind: "component", type: i4.TableColumnComponent, selector: "fdp-column", inputs: ["name", "key", "label", "align", "sortable", "filterable", "visible", "dataType", "groupable", "freezable", "endFreezable", "width", "noWrap", "applyText", "role"] }, { kind: "directive", type: i5.TableInitialStateDirective, selector: "[fdpTableInitialState], fdp-table", inputs: ["initialVisibleColumns", "initialSortBy", "initialFilterBy", "initialGroupBy", "initialPage", "state"] }, { kind: "directive", type: i5.FdpTableCell, selector: "fdp-table-cell" }, { kind: "directive", type: i5.FdpTableHeader, selector: "fdp-table-header" }, { kind: "directive", type: i5.FdpCellDef, selector: "[fdpCellDef]", inputs: ["fdpCellDefAs"] }, { kind: "directive", type: i5.FdpHeaderCellDef, selector: "[fdpHeaderCellDef]" }, { kind: "component", type: i6.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i6.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i6.ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: i7.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i8.InputGroupComponent, selector: "fd-input-group", inputs: ["inputTemplate", "placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledby", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i9.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i9.InputFormControlDirective, selector: "input[fd-form-control]" }, { kind: "component", type: i9.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i9.FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "component", type: i9.FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen"], outputs: ["isOpenChange"] }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i11.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i12.BreadcrumbComponent, selector: "fd-breadcrumb", inputs: ["containerElement", "reverse", "tabIndex"], outputs: ["visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i12.BreadcrumbItemComponent, selector: "fd-breadcrumb-item" }, { kind: "component", type: i13.LinkComponent, selector: "[fdLink], [fd-link], [fd-breadcrumb-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i14.PaginationComponent, selector: "fd-pagination", inputs: ["id", "mobile", "totalItems", "currentPage", "itemsPerPage", "itemsPerPageTemplate", "itemsPerPageLabel", "itemsPerPageOptions", "displayTotalItems", "displayTextTemplate", "firstLabel", "previousLabel", "nextLabel", "lastLabel", "ariaLabel", "pageLabel", "currentPageAriaLabel", "labelBeforeInputMobile", "labelAfterInputMobile", "inputAriaLabel"], outputs: ["pageChangeStart", "itemsPerPageChange"] }, { kind: "component", type: i15.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i16.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large"] }, { kind: "component", type: i17.MenuComponent, selector: "fdp-menu", inputs: ["id", "openByArrowKeys", "xPosition"], outputs: ["close"] }, { kind: "component", type: i17.MenuItemComponent, selector: "fdp-menu-item", inputs: ["disabled", "cascadeDirection"], outputs: ["itemSelect"] }, { kind: "directive", type: i17.MenuTriggerDirective, selector: "[fdpMenuTriggerFor]", inputs: ["fdpMenuTriggerFor"] }, { kind: "component", type: i18.MessageStripComponent, selector: "fd-message-strip", inputs: ["class", "dismissible", "noIcon", "type", "id", "ariaLabelledBy", "ariaLabel", "dismissLabel", "width", "minWidth", "marginBottom"], outputs: ["onDismiss"] }, { kind: "directive", type: i19.FileUploaderSelectDirective, selector: "[fdFileSelect]", inputs: ["multiple"], outputs: ["fileSelected"] }, { kind: "component", type: i20.MenuButtonComponent, selector: "fdp-menu-button", inputs: ["label", "title", "icon", "type"], outputs: ["buttonClicked"] }, { kind: "directive", type: i21.UploadCollectionDragnDropDirective, selector: "[fdpUploadCollectionDragnDrop]", inputs: ["multiple", "fileTypes", "maxFileSize", "maxFilenameLength", "mimeTypes", "disabled", "dragndrop"], outputs: ["fileChanged", "cancel", "onDropzone"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i22.FdTranslatePipe, name: "fdTranslate" }, { kind: "pipe", type: i23.ConvertBytesPipe, name: "convertBytes" }], encapsulation: i0.ViewEncapsulation.None });
835
+ UploadCollectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: UploadCollectionComponent, selector: "fdp-upload-collection", inputs: { id: "id", itemsPerPage: "itemsPerPage", dataSource: "dataSource", fileTypes: "fileTypes", maxFileSize: "maxFileSize", maxFilenameLength: "maxFilenameLength", mimeTypes: "mimeTypes", noDataText: "noDataText", noDataDescription: "noDataDescription", disabled: "disabled", readonly: "readonly", hierarchy: "hierarchy", enablePagination: "enablePagination", terminationEnabled: "terminationEnabled", multiple: "multiple", showSearch: "showSearch", sameFileNameAllowed: "sameFileNameAllowed" }, outputs: { typeMismatch: "typeMismatch", filenameLengthExceed: "filenameLengthExceed", fileSizeExceed: "fileSizeExceed" }, viewQueries: [{ propertyName: "_uploadFilesRef", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "_updateVersionRef", first: true, predicate: ["updateVersionInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div [id]=\"id\" class=\"fdp-upload-collection\">\n <!-- Message strip -->\n <fd-message-strip *ngIf=\"_message\" [type]=\"_message.messageStripType\" (onDismiss)=\"_messageStripDismiss()\">\n <ng-container\n [ngTemplateOutlet]=\"message\"\n [ngTemplateOutletContext]=\"{\n messageType: _message.messageType,\n payload: _message.payload,\n messageStripType: _message.messageStripType,\n count: _message.count\n }\"\n ></ng-container>\n </fd-message-strip>\n\n <!-- Toolbar -->\n <fd-toolbar class=\"fdp-upload-collection__toolbar\">\n <div style=\"flex: 1 auto\">\n <fd-breadcrumb [id]=\"id + '-breadcrumb'\">\n <fd-breadcrumb-item>\n <ng-template #multipleBreadcrumbs>\n <a href=\"#\" fd-link (click)=\"_breadcrumbGoTo($event)\">\n {{ 'platformUploadCollection.breadcrumbLabelAllFiles' | fdTranslate }}\n </a>\n </ng-template>\n <ng-template #singleBreadcrumb>\n <span>\n {{\n 'platformUploadCollection.breadcrumbLabelAllFilesWithTotal'\n | fdTranslate : { total: _totalItems }\n }}\n </span>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"_breadcrumbList.length > 0 ? multipleBreadcrumbs : singleBreadcrumb\"\n ></ng-container>\n </fd-breadcrumb-item>\n <fd-breadcrumb-item *ngFor=\"let item of _breadcrumbList; let i = index\">\n <ng-template #clickableBreadcrumb>\n <a href=\"#\" fd-link (click)=\"_breadcrumbGoTo($event, i)\">{{ item.folderName }}</a>\n </ng-template>\n <ng-template #textBreadcrumb>\n <span>{{ item.folderName }} ({{ _totalItems }})</span>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"item.clikable ? clickableBreadcrumb : textBreadcrumb\"\n ></ng-container>\n </fd-breadcrumb-item>\n </fd-breadcrumb>\n </div>\n\n <fd-toolbar-spacer style=\"max-width: 3rem\"></fd-toolbar-spacer>\n <ng-container *ngIf=\"readonly || selectedItems.length === 0\">\n <fd-input-group\n *ngIf=\"showSearch\"\n [(ngModel)]=\"_searchText\"\n (ngModelChange)=\"_searchInputChanged()\"\n glyph=\"search\"\n [ariaLabelledBy]=\"id + '-breadcrumb'\"\n [placeholder]=\"'platformUploadCollection.searchPlaceholder' | fdTranslate\"\n ></fd-input-group>\n\n <ng-container *ngIf=\"!readonly\">\n <button\n fd-toolbar-item\n fd-button\n (click)=\"_openUploadFiles()\"\n fdType=\"ghost\"\n [disabled]=\"disabled\"\n [label]=\"'platformUploadCollection.addBtnLabel' | fdTranslate\"\n [title]=\"'platformUploadCollection.addBtnLabel' | fdTranslate\"\n ></button>\n\n <button\n fd-toolbar-item\n fd-button\n (click)=\"_openNewFolderDialog()\"\n *ngIf=\"hierarchy\"\n [disabled]=\"disabled\"\n fdType=\"transparent\"\n [label]=\"'platformUploadCollection.newFolderBtnLabel' | fdTranslate\"\n [title]=\"'platformUploadCollection.newFolderBtnLabel' | fdTranslate\"\n ></button>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!readonly && selectedItems.length > 0\">\n <button\n fd-toolbar-item\n fd-button\n (click)=\"_moveToClicked(true)\"\n fdType=\"ghost\"\n [disabled]=\"disabled\"\n [label]=\"'platformUploadCollection.moveToBtnLabel' | fdTranslate\"\n [title]=\"'platformUploadCollection.moveToBtnLabel' | fdTranslate\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n (click)=\"_downloadClicked(true)\"\n fdType=\"ghost\"\n [disabled]=\"disabled\"\n *ngIf=\"_showIfSelectedOnlyFiles()\"\n [label]=\"'platformUploadCollection.downloadBtnLabel' | fdTranslate\"\n [title]=\"'platformUploadCollection.downloadBtnLabel' | fdTranslate\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n (click)=\"_remove(true)\"\n fdType=\"ghost\"\n [disabled]=\"disabled\"\n [label]=\"'platformUploadCollection.removeBtnLabel' | fdTranslate\"\n [title]=\"'platformUploadCollection.removeBtnLabel' | fdTranslate\"\n ></button>\n </ng-container>\n </fd-toolbar>\n\n <div class=\"fdp-upload-collection__table--wrapper\">\n <div\n class=\"fdp-upload-collection__table\"\n fdpUploadCollectionDragnDrop\n [fileTypes]=\"fileTypes\"\n [maxFilenameLength]=\"maxFilenameLength\"\n [maxFileSize]=\"maxFileSize\"\n [mimeTypes]=\"mimeTypes\"\n [dragndrop]=\"!readonly\"\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n (fileChanged)=\"_handleDrop($event)\"\n (cancel)=\"_dragDropCancel()\"\n (onDropzone)=\"_onDropzone($event)\"\n >\n <!-- Table -->\n <fdp-table\n *ngIf=\"_visibleList$.value.length > 0\"\n [dataSource]=\"_visibleList$\"\n [loading]=\"dataSource.isDataLoading\"\n selectionMode=\"multiple\"\n emptyTableMessage=\"\"\n [noHorizontalBorders]=\"true\"\n [trackBy]=\"_trackByDocumentId\"\n (rowSelectionChange)=\"_onRowSelectionChange($event)\"\n >\n <fdp-column name=\"name\" label=\"Name\" width=\"8rem\">\n <fdp-table-cell *fdpCellDef=\"let item\">\n <div class=\"fdp-upload-collection__vertical-align-center\">\n <fd-icon\n class=\"fdp-upload-collection__fd-icon\"\n *ngIf=\"item.type === 'folder'\"\n glyph=\"folder-blank\"\n [title]=\"'platformUploadCollection.folderIconTitle' | fdTranslate\"\n ></fd-icon>\n <fd-icon\n class=\"fdp-upload-collection__fd-icon\"\n *ngIf=\"item.type === 'file'\"\n [glyph]=\"_getIconByType(item)\"\n [title]=\"'platformUploadCollection.fileIconTitle' | fdTranslate\"\n ></fd-icon>\n\n <ng-container *ngIf=\"disabled || readonly || !_isSelectedItem(item); else editMode\">\n <span\n [class.fdp-upload-collection__cursor]=\"item.type === 'folder'\"\n (click)=\"_openFolder(item)\"\n >{{ item.name }}</span\n >\n </ng-container>\n </div>\n\n <ng-template #editMode>\n <div fd-form-item>\n <fd-form-input-message-group [triggers]=\"[]\" [isOpen]=\"!!item.sameFilenameState\">\n <div class=\"fdp-upload-collection__vertical-align-center\">\n <input\n fd-form-control\n [value]=\"_getItemName(item)\"\n (blur)=\"_fileNameChange($event, item)\"\n (input)=\"_checkName($event, item)\"\n type=\"text\"\n [placeholder]=\"\n 'platformUploadCollection.editFileNameInputPlaceholder' | fdTranslate\n \"\n [state]=\"item.sameFilenameState\"\n />\n <span class=\"fdp-upload-collection__item_extension\">{{\n _getItemExtension(item)\n }}</span>\n </div>\n\n <fd-form-message [type]=\"item.sameFilenameState\">\n {{\n (item.type === 'file'\n ? 'platformUploadCollection.editFileNameFileAlreadyExistsError'\n : 'platformUploadCollection.editFileNameFolderAlreadyExistsError'\n ) | fdTranslate\n }}\n </fd-form-message>\n </fd-form-input-message-group>\n </div>\n </ng-template>\n </fdp-table-cell>\n </fdp-column>\n\n <fdp-column name=\"uploadedBy\" label=\"Uploaded by\" width=\"5rem\">\n <fdp-table-cell *fdpCellDef=\"let item\">{{ item.uploadedBy.name }}</fdp-table-cell>\n </fdp-column>\n\n <fdp-column name=\"uploadedOn\" label=\"Uploaded on\" width=\"5rem\">\n <fdp-table-cell *fdpCellDef=\"let item\">{{ item.uploadedOn | date : 'shortDate' }}</fdp-table-cell>\n </fdp-column>\n\n <fdp-column name=\"size\" label=\"File size\" width=\"5rem\">\n <fdp-table-cell *fdpCellDef=\"let item\">{{ item.fileSize | convertBytes }}</fdp-table-cell>\n </fdp-column>\n\n <fdp-column name=\"version\" label=\"Version\" width=\"5rem\">\n <fdp-table-cell *fdpCellDef=\"let item\">{{ item.version || '' }}</fdp-table-cell>\n </fdp-column>\n\n <fdp-column name=\"status\" label=\"Status\" width=\"5rem\">\n <fdp-table-cell *fdpCellDef=\"let item\">\n <fd-busy-indicator\n *ngIf=\"item.status === _uploadCollectionItemStatus.LOADING\"\n [loading]=\"true\"\n ariaLabel=\"Status: Loading\"\n ariaLive=\"polite\"\n size=\"s\"\n ></fd-busy-indicator>\n <span\n *ngIf=\"item.status === _uploadCollectionItemStatus.SUCCESSFUL\"\n fd-object-status\n status=\"positive\"\n >\n {{ 'platformUploadCollection.itemStatusSuccessful' | fdTranslate }}\n </span>\n <span\n *ngIf=\"item.status === _uploadCollectionItemStatus.UNSUCCESSFUL\"\n fd-object-status\n status=\"negative\"\n >\n {{ 'platformUploadCollection.itemStatusUnsuccessful' | fdTranslate }}\n </span>\n </fdp-table-cell>\n </fdp-column>\n\n <fdp-column name=\"action\" *ngIf=\"!readonly\" width=\"5rem\" align=\"end\">\n <fdp-table-header *fdpHeaderCellDef>Action</fdp-table-header>\n <fdp-table-cell *fdpCellDef=\"let item\">\n <div class=\"fdp-upload-collection__actions\">\n <div class=\"fdp-upload-collection__actions--status\">\n <button\n fd-button\n [label]=\"'platformUploadCollection.uploadNewFileAfterFailAction' | fdTranslate\"\n [title]=\"'platformUploadCollection.uploadNewFileAfterFailAction' | fdTranslate\"\n (click)=\"_runUploadNewFileAfterFail(item)\"\n fdType=\"ghost\"\n [disabled]=\"disabled\"\n *ngIf=\"item.status === _uploadCollectionItemStatus.UNSUCCESSFUL\"\n ></button>\n\n <button\n fd-button\n [label]=\"'platformUploadCollection.cancelUploadNewFileAction' | fdTranslate\"\n [title]=\"'platformUploadCollection.cancelUploadNewFileAction' | fdTranslate\"\n fdType=\"ghost\"\n [disabled]=\"disabled\"\n (click)=\"_cancelUploadNewFile(item)\"\n *ngIf=\"terminationEnabled && item.status === _uploadCollectionItemStatus.LOADING\"\n ></button>\n </div>\n\n <fdp-menu-button\n icon=\"overflow\"\n [disabled]=\"disabled\"\n type=\"transparent\"\n [title]=\"'platformUploadCollection.itemMenuBtnTitle' | fdTranslate\"\n [fdpMenuTriggerFor]=\"menuActions\"\n (buttonClicked)=\"_actionButton(item)\"\n >\n </fdp-menu-button>\n </div>\n </fdp-table-cell>\n </fdp-column>\n </fdp-table>\n\n <!-- Dragdrop area -->\n <div\n class=\"fdp-upload-collection__dragdrop-area\"\n *ngIf=\"_showDragDropArea\"\n [class.active]=\"_onDragDropArea\"\n >\n <fd-icon class=\"fdp-upload-collection__dragdrop-area--icon\" glyph=\"upload-to-cloud\"></fd-icon>\n <p class=\"fdp-upload-collection__dragdrop-area--text\">\n {{ 'platformUploadCollection.dragDropAreaText' | fdTranslate }}\n </p>\n </div>\n\n <!-- No data -->\n <div\n class=\"fdp-upload-collection__no-data\"\n *ngIf=\"_visibleList$.value.length === 0\"\n [class.invisible]=\"_showDragDropArea\"\n >\n <fd-icon glyph=\"document\"></fd-icon>\n <h3>{{ noDataText || ('platformUploadCollection.noDataText' | fdTranslate) }}</h3>\n <p>{{ noDataDescription || ('platformUploadCollection.noDataDescription' | fdTranslate) }}</p>\n </div>\n </div>\n\n <!-- Table footer -->\n <div class=\"fdp-upload-collection__table-footer\" *ngIf=\"enablePagination\">\n <!-- Pagination -->\n <div class=\"fdp-upload-collection__pagination\">\n <span [id]=\"id + '-pagination'\" class=\"fdp-upload-collection__pagination--total\">\n {{\n 'platformUploadCollection.paginationTotal'\n | fdTranslate : { from: _countShowedItems, to: _countNotShowedItems, total: _totalItems }\n }}\n </span>\n <fd-pagination\n [totalItems]=\"_totalItems\"\n [displayTotalItems]=\"false\"\n (pageChangeStart)=\"_pageChanged($event)\"\n [itemsPerPage]=\"_itemsPerPage\"\n [currentPage]=\"_currentPage\"\n [attr.aria-labelledby]=\"id + '-pagination'\"\n ></fd-pagination>\n </div>\n\n <!-- Results per page -->\n <div class=\"fdp-upload-collection__results\">\n <span class=\"fdp-upload-collection__results--title\">\n <span [id]=\"id + '-results'\">\n {{ 'platformUploadCollection.resultsPerPage' | fdTranslate }}\n </span>\n <span *ngIf=\"_itemsPerPageOptions.length === 0\">{{ _itemsPerPage }}</span>\n </span>\n <fdp-menu-button\n *ngIf=\"_itemsPerPageOptions.length > 0\"\n type=\"ghost\"\n [ariaLabelledBy]=\"id + '-results'\"\n [fdpMenuTriggerFor]=\"itemsPerPageMenu\"\n [label]=\"_itemsPerPage + ''\"\n >\n </fdp-menu-button>\n </div>\n </div>\n </div>\n</div>\n\n<fdp-menu #itemsPerPageMenu xPosition=\"before\">\n <fdp-menu-item\n *ngFor=\"let value of _itemsPerPageOptions\"\n (itemSelect)=\"_itemsPerPageChange(value.label)\"\n [attr.title]=\"'Results per page: ' + value.label\"\n >\n <span>{{ value.label }}</span>\n </fdp-menu-item>\n</fdp-menu>\n\n<fdp-menu #menuActions xPosition=\"before\">\n <fdp-menu-item (itemSelect)=\"_moveToClicked()\">\n <fd-icon\n class=\"fdp-upload-collection__fd-icon\"\n glyph=\"folder-blank\"\n [title]=\"'platformUploadCollection.moveToBtnLabel' | fdTranslate\"\n ></fd-icon>\n <span>\n {{ 'platformUploadCollection.moveToBtnLabel' | fdTranslate }}\n </span>\n </fdp-menu-item>\n <ng-container *ngIf=\"_activeItem?.type === 'file'\">\n <fdp-menu-item (itemSelect)=\"_downloadClicked()\">\n <fd-icon\n class=\"fdp-upload-collection__fd-icon\"\n glyph=\"download\"\n [title]=\"'platformUploadCollection.downloadBtnLabel' | fdTranslate\"\n ></fd-icon>\n <span>\n {{ 'platformUploadCollection.downloadBtnLabel' | fdTranslate }}\n </span>\n </fdp-menu-item>\n <fdp-menu-item (itemSelect)=\"_openUpdateFileVersion()\">\n <fd-icon\n class=\"fdp-upload-collection__fd-icon\"\n glyph=\"drill-up\"\n [title]=\"'platformUploadCollection.updateVersionBtnLabel' | fdTranslate\"\n ></fd-icon>\n <span>\n {{ 'platformUploadCollection.updateVersionBtnLabel' | fdTranslate }}\n </span>\n </fdp-menu-item>\n </ng-container>\n <fdp-menu-item (itemSelect)=\"_remove()\">\n <fd-icon\n class=\"fdp-upload-collection__fd-icon\"\n glyph=\"delete\"\n [title]=\"'platformUploadCollection.removeBtnLabel' | fdTranslate\"\n ></fd-icon>\n <span>\n {{ 'platformUploadCollection.removeBtnLabel' | fdTranslate }}\n </span>\n </fdp-menu-item>\n</fdp-menu>\n\n<input\n #fileInput\n class=\"fdp-upload-collection__hidden\"\n type=\"file\"\n (fileSelected)=\"_selectHandler($event)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n fdFileSelect\n/>\n\n<input\n #updateVersionInput\n class=\"fdp-upload-collection__hidden\"\n type=\"file\"\n (fileSelected)=\"_selectHandler($event)\"\n [disabled]=\"disabled\"\n [multiple]=\"false\"\n fdFileSelect\n/>\n\n<ng-template\n let-messageType=\"messageType\"\n let-payload=\"payload\"\n let-messageStripType=\"messageStripType\"\n let-count=\"count\"\n #message\n>\n <ng-container *ngIf=\"_message\" [ngSwitch]=\"messageType\">\n <ng-container\n *ngSwitchCase=\"_messageType.CREATE\"\n [ngTemplateOutlet]=\"messageNewFolder\"\n [ngTemplateOutletContext]=\"{\n messageStripType: _message.messageStripType,\n payload: _message.payload\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.UPDATE_VERSION\"\n [ngTemplateOutlet]=\"messageUpdateVersion\"\n [ngTemplateOutletContext]=\"{\n messageStripType: _message.messageStripType,\n payload: _message.payload\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.FILE_RENAME\"\n [ngTemplateOutlet]=\"messageFileRename\"\n [ngTemplateOutletContext]=\"{\n messageStripType: _message.messageStripType,\n payload: _message.payload\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.REMOVE\"\n [ngTemplateOutlet]=\"messageRemove\"\n [ngTemplateOutletContext]=\"{\n payload: _message.payload,\n messageStripType: _message.messageStripType,\n count: _message.count\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.MOVE\"\n [ngTemplateOutlet]=\"messageMove\"\n [ngTemplateOutletContext]=\"{\n payload: _message.payload,\n messageStripType: _message.messageStripType,\n count: _message.count\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.TYPE_MISMATCH\"\n [ngTemplateOutlet]=\"messageTypeMismatch\"\n [ngTemplateOutletContext]=\"{\n payload: _message.payload,\n messageStripType: _message.messageStripType,\n count: _message.count\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.FILE_SIZE\"\n [ngTemplateOutlet]=\"messageFileSize\"\n [ngTemplateOutletContext]=\"{\n payload: _message.payload,\n messageStripType: _message.messageStripType,\n count: _message.count\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.FILE_NAME_LENGTH\"\n [ngTemplateOutlet]=\"messageFilenameLength\"\n [ngTemplateOutletContext]=\"{\n payload: _message.payload,\n messageStripType: _message.messageStripType,\n count: _message.count\n }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #messageNewFolder let-payload=\"payload\" let-messageStripType=\"messageStripType\">\n <ng-container *ngIf=\"messageStripType === 'error'; else foldersCreated\">\n {{ 'platformUploadCollection.messageCreateFailed' | fdTranslate : { folderName: payload.folder.name } }}\n </ng-container>\n <ng-template #foldersCreated>\n {{ 'platformUploadCollection.messageCreateSuccess' | fdTranslate : { folderName: payload.folder.name } }}\n </ng-template>\n</ng-template>\n\n<ng-template #messageUpdateVersion let-payload=\"payload\" let-messageStripType=\"messageStripType\">\n <ng-container *ngIf=\"messageStripType === 'error'; else versionUpdated\">\n {{ 'platformUploadCollection.messageUpdateVersionFailed' | fdTranslate : { folderName: payload.item.name } }}\n </ng-container>\n <ng-template #versionUpdated>\n {{ 'platformUploadCollection.messageUpdateVersionSuccess' | fdTranslate : { folderName: payload.item.name } }}\n </ng-template>\n</ng-template>\n\n<ng-template #messageFileRename let-payload=\"payload\" let-messageStripType=\"messageStripType\">\n <ng-container *ngIf=\"messageStripType === 'error'; else fileRenamed\">\n {{\n 'platformUploadCollection.messageFileRenameFailed'\n | fdTranslate : { from: payload.item.name, to: payload.fileName }\n }}\n </ng-container>\n <ng-template #fileRenamed>\n {{\n 'platformUploadCollection.messageFileRenameSuccess'\n | fdTranslate : { from: payload.item.name, to: payload.fileName }\n }}\n </ng-template>\n</ng-template>\n\n<ng-template #messageRemove let-payload=\"payload\" let-messageStripType=\"messageStripType\" let-count=\"count\">\n <ng-container *ngIf=\"payload.items.length > 1 && count.folder && count.file\">\n <ng-container *ngIf=\"messageStripType === 'error'; else foldersAndFilesRemoved\">\n {{\n 'platformUploadCollection.messageRemoveFoldersAndFilesFailed'\n | fdTranslate : { foldersCount: count.folder, filesCount: count.file }\n }}\n </ng-container>\n <ng-template #foldersAndFilesRemoved>\n {{\n 'platformUploadCollection.messageRemoveFoldersAndFilesSuccess'\n | fdTranslate : { foldersCount: count.folder, filesCount: count.file }\n }}\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length > 1 && count.folder && !count.file\">\n <ng-container *ngIf=\"messageStripType === 'error'; else foldersRemoved\">\n {{ 'platformUploadCollection.messageRemoveFoldersFailed' | fdTranslate : { foldersCount: count.folder } }}\n </ng-container>\n <ng-template #foldersRemoved>\n {{ 'platformUploadCollection.messageRemoveFoldersSuccess' | fdTranslate : { foldersCount: count.folder } }}\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length > 1 && count.file && !count.folder\">\n <ng-container *ngIf=\"messageStripType === 'error'; else filesRemoved\">\n {{ 'platformUploadCollection.messageRemoveFilesFailed' | fdTranslate : { filesCount: count.file } }}\n </ng-container>\n <ng-template #filesRemoved>\n {{ 'platformUploadCollection.messageRemoveFilesSuccess' | fdTranslate : { filesCount: count.file } }}\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length === 1\">\n <ng-container *ngIf=\"messageStripType === 'error'; else oneItemRemoved\">\n {{\n 'platformUploadCollection.messageRemoveFileOrFolderFailed'\n | fdTranslate : { name: payload.items[0].name }\n }}\n </ng-container>\n <ng-template #oneItemRemoved>\n {{\n 'platformUploadCollection.messageRemoveFileOrFolderSuccess'\n | fdTranslate : { name: payload.items[0].name }\n }}\n </ng-template>\n </ng-container>\n</ng-template>\n\n<ng-template #messageMove let-payload=\"payload\" let-messageStripType=\"messageStripType\" let-count=\"count\">\n <ng-container *ngIf=\"payload.items.length > 1 && count.folder && count.file\">\n <ng-container *ngIf=\"messageStripType === 'error'; else filesAndFoldersMovedTo\">\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFoldersAndFilesFailed'\n : 'platformUploadCollection.messageMoveRootFoldersAndFilesFailed'\n ) | fdTranslate : { foldersCount: count.folder, filesCount: count.file, to: payload.to?.name }\n }}\n </ng-container>\n <ng-template #filesAndFoldersMovedTo>\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFoldersAndFilesSuccess'\n : 'platformUploadCollection.messageMoveRootFoldersAndFilesSuccess'\n ) | fdTranslate : { foldersCount: count.folder, filesCount: count.file, to: payload.to?.name }\n }}\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length > 1 && count.folder && !count.file\">\n <ng-container *ngIf=\"messageStripType === 'error'; else foldersMovedTo\">\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFoldersFailed'\n : 'platformUploadCollection.messageMoveRootFoldersFailed'\n ) | fdTranslate : { foldersCount: count.folder, to: payload.to?.name }\n }}\n </ng-container>\n <ng-template #foldersMovedTo>\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFoldersSuccess'\n : 'platformUploadCollection.messageMoveRootFoldersSuccess'\n ) | fdTranslate : { foldersCount: count.folder, to: payload.to?.name }\n }}\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length > 1 && count.file && !count.folder\">\n <ng-container *ngIf=\"messageStripType === 'error'; else filesMovedTo\">\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFilesFailed'\n : 'platformUploadCollection.messageMoveRootFilesFailed'\n ) | fdTranslate : { filesCount: count.file, to: payload.to?.name }\n }}\n </ng-container>\n <ng-template #filesMovedTo>\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFilesSuccess'\n : 'platformUploadCollection.messageMoveRootFilesSuccess'\n ) | fdTranslate : { filesCount: count.file, to: payload.to?.name }\n }}\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length === 1\">\n <ng-container *ngIf=\"messageStripType === 'error'; else oneItemMovedTo\">\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFileOrFolderFailed'\n : 'platformUploadCollection.messageMoveRootFileOrFolderFailed'\n ) | fdTranslate : { name: payload.items[0].name, to: payload.to?.name }\n }}\n </ng-container>\n <ng-template #oneItemMovedTo>\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFileOrFolderSuccess'\n : 'platformUploadCollection.messageMoveRootFileOrFolderSuccess'\n ) | fdTranslate : { name: payload.items[0].name, to: payload.to?.name }\n }}\n </ng-template>\n </ng-container>\n</ng-template>\n\n<ng-template #messageTypeMismatch let-payload=\"payload\" let-messageStripType=\"messageStripType\" let-count=\"count\">\n <ng-container *ngIf=\"payload.items.length > 1\">\n {{\n 'platformUploadCollection.messageFileTypeMismatchPlural'\n | fdTranslate : { filesCount: payload.items.length, allowedTypes: _getAllowedTypes() }\n }}\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length === 1\">\n {{\n 'platformUploadCollection.messageFileTypeMismatchSingular'\n | fdTranslate : { fileName: payload.items[0].name, allowedTypes: _getAllowedTypes() }\n }}\n </ng-container>\n</ng-template>\n\n<ng-template #messageFileSize let-payload=\"payload\" let-messageStripType=\"messageStripType\" let-count=\"count\">\n <ng-container *ngIf=\"payload.items.length > 1\">\n {{\n 'platformUploadCollection.messageFileSizeExceededPlural'\n | fdTranslate : { filesCount: payload.items.length, maxFileSize: maxFileSize || 0 }\n }}\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length === 1\">\n {{\n 'platformUploadCollection.messageFileSizeExceededSingular'\n | fdTranslate : { fileName: payload.items[0].name, maxFileSize: maxFileSize || 0 }\n }}\n </ng-container>\n</ng-template>\n\n<ng-template #messageFilenameLength let-payload=\"payload\" let-messageStripType=\"messageStripType\" let-count=\"count\">\n <ng-container *ngIf=\"payload.items.length > 1\">\n {{\n 'platformUploadCollection.messageFileNameLengthExceededPlural'\n | fdTranslate : { filesCount: payload.items.length, maxFilenameLength: maxFilenameLength || 0 }\n }}\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length === 1\">\n {{\n 'platformUploadCollection.messageFileNameLengthExceededSingular'\n | fdTranslate : { fileName: payload.items[0].name, maxFilenameLength: maxFilenameLength || 0 }\n }}\n </ng-container>\n</ng-template>\n", styles: [".fdp-upload-collection__fd-icon{color:#0854a0!important;color:var(--sapHighlightColor)!important;margin-right:.625rem!important;font-size:1rem!important}.fdp-upload-collection fd-message-strip{margin-bottom:.625rem}.fdp-upload-collection__toolbar .fd-toolbar{margin-bottom:.625rem;border:0}.fdp-upload-collection__toolbar .fd-toolbar fd-input-group .sap-icon--search{color:#0854a0;color:var(--sapHighlightColor)}.fdp-upload-collection__no-data{text-align:center;min-height:230px;display:flex;align-items:center;flex-direction:column;justify-content:center}.fdp-upload-collection__no-data fd-icon{font-size:3rem;line-height:3rem;margin:0;color:#6a6d70;color:var(--sapContent_LabelColor)}.fdp-upload-collection__no-data h3{font-size:1.125rem;font-size:var(--sapFontHeader4Size);line-height:1rem;margin:8px 0}.fdp-upload-collection__no-data p{font-size:.875rem;font-size:var(--sapFontSize);line-height:1rem;color:#6a6d70;color:var(--sapContent_LabelColor);margin:0}.fdp-upload-collection__no-data.invisible{opacity:0}.fdp-upload-collection__table{position:relative}.fdp-upload-collection__table-footer{display:flex;justify-content:space-between;align-items:center;margin-top:.625rem}.fdp-upload-collection__table-footer .fdp-upload-collection__results--title,.fdp-upload-collection__table-footer .fdp-upload-collection__pagination--total{line-height:1.4;line-height:var(--sapContent_LineHeight);color:#32363a;color:var(--sapTextColor);font-family:\"72\",\"72full\",Arial,Helvetica,sans-serif;font-family:var(--sapFontFamily);font-weight:400;-webkit-font-smoothing:antialiased;box-sizing:border-box;padding:0;margin:0;border:0;font-size:.875rem;font-size:var(--sapFontSize);color:#6a6d70;color:var(--sapContent_LabelColor);margin-right:.5rem}.fdp-upload-collection__table-footer .fdp-upload-collection__results--title:before,.fdp-upload-collection__table-footer .fdp-upload-collection__results--title:after,.fdp-upload-collection__table-footer .fdp-upload-collection__pagination--total:before,.fdp-upload-collection__table-footer .fdp-upload-collection__pagination--total:after{box-sizing:inherit;font-size:inherit}[dir=rtl] .fdp-upload-collection__table-footer .fdp-upload-collection__results--title,.fdp-upload-collection__table-footer .fdp-upload-collection__results--title[dir=rtl],[dir=rtl] .fdp-upload-collection__table-footer .fdp-upload-collection__pagination--total,.fdp-upload-collection__table-footer .fdp-upload-collection__pagination--total[dir=rtl]{margin-right:0;margin-left:.5rem}.fdp-upload-collection__table-footer .fdp-upload-collection__pagination--total{width:100%;align-self:center}.fdp-upload-collection__table-footer .fdp-upload-collection__pagination{font-size:.875rem;font-size:var(--sapFontSize);line-height:1.4;line-height:var(--sapContent_LineHeight);color:#32363a;color:var(--sapTextColor);font-family:\"72\",\"72full\",Arial,Helvetica,sans-serif;font-family:var(--sapFontFamily);font-weight:400;-webkit-font-smoothing:antialiased;box-sizing:border-box;padding:0;margin:0;border:0;display:flex}.fdp-upload-collection__table-footer .fdp-upload-collection__pagination:before,.fdp-upload-collection__table-footer .fdp-upload-collection__pagination:after{box-sizing:inherit;font-size:inherit}.fdp-upload-collection__hidden{display:none}.fdp-upload-collection__vertical-align-center{display:flex;align-items:center}.fdp-upload-collection__cursor{cursor:pointer}.fdp-upload-collection__item_extension{white-space:nowrap}.fdp-upload-collection__actions{display:flex;justify-content:space-between;align-items:center}.fdp-upload-collection__actions .sap-icon--slim-arrow-down{display:none}.fdp-upload-collection__dragdrop-area{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;background:rgba(255,255,255,.5);outline:2px dashed transparent;outline-color:#89919a;outline-color:var(--sapField_BorderColor);outline-offset:-4px;box-sizing:border-box}.fdp-upload-collection__dragdrop-area fd-icon{font-size:3rem;line-height:3rem;margin-bottom:1rem;color:#6a6d70;color:var(--sapContent_LabelColor)}.fdp-upload-collection__dragdrop-area p{font-size:1rem;line-height:1.125rem;color:#6a6d70;color:var(--sapContent_LabelColor)}.fdp-upload-collection__dragdrop-area.active{outline-color:#0854a0;outline-color:var(--sapContent_DragAndDropActiveColor);background:rgba(8,84,160,.08)}.fdp-upload-collection__dragdrop-area.active fd-icon,.fdp-upload-collection__dragdrop-area.active p{color:#0854a0;color:var(--sapContent_DragAndDropActiveColor)}.fdp-upload-collection .fd-form-item{align-items:center;flex-direction:row}.fdp-upload-collection-dialig-no-bg{background-color:transparent!important}[dir=rtl] .fdp-upload-collection fd-icon{margin-right:0;margin-left:.625rem}.fd-menu__list .disabled{background-color:#fff!important;background-color:var(--sapList_Background)!important;cursor:not-allowed}.fd-menu__list .disabled .fd-menu__title{color:#32363a!important;color:var(--sapList_TextColor)!important}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4.TableComponent, selector: "fdp-table", inputs: ["name", "id", "enableDragResize", "fixed", "freezeColumnsTo", "freezeEndColumnsTo", "pageScrolling", "pageSize", "pageScrollingThreshold", "bodyHeight", "emptyTableMessage", "noVisibleColumnsMessage", "noHorizontalBorders", "noVerticalBorders", "noBorders", "noBodyBorders", "noOuterBorders", "noBorderX", "noBorderY", "relationKey", "expandedStateKey", "hasChildrenKey", "rowNavigatable", "highlightNavigatedRow", "rowsActivable", "selectedKey", "selectableKey", "trackBy", "rowComparator", "rowsClass", "editableRowSkeleton", "expandOnInit", "rowHeight", "loadPagesBefore", "selectionMode", "enableTristateMode", "semanticHighlighting", "forceCheckedAllState", "ariaLabelledBy", "loading"], outputs: ["presetChanged", "rowSelectionChange", "sortChange", "filterChange", "groupChange", "columnsChange", "pageChange", "columnFreeze", "rowToggleOpenState", "rowActivate", "rowNavigate", "emptyRowAdded", "save", "cancel", "tableScrolled", "tableRowsSet", "allRowsExpanded", "allRowsCollapsed"] }, { kind: "component", type: i4.TableColumnComponent, selector: "fdp-column", inputs: ["name", "key", "label", "align", "sortable", "filterable", "visible", "dataType", "groupable", "freezable", "endFreezable", "width", "noWrap", "applyText", "role"] }, { kind: "directive", type: i5.TableInitialStateDirective, selector: "[fdpTableInitialState], fdp-table", inputs: ["initialVisibleColumns", "initialSortBy", "initialFilterBy", "initialGroupBy", "initialPage", "state"] }, { kind: "directive", type: i5.FdpTableCell, selector: "fdp-table-cell" }, { kind: "directive", type: i5.FdpTableHeader, selector: "fdp-table-header" }, { kind: "directive", type: i5.FdpCellDef, selector: "[fdpCellDef]", inputs: ["fdpCellDefAs"] }, { kind: "directive", type: i5.FdpHeaderCellDef, selector: "[fdpHeaderCellDef]" }, { kind: "component", type: i6.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i6.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i6.ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: i7.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i8.InputGroupComponent, selector: "fd-input-group", inputs: ["inputTemplate", "placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledby", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i9.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i9.InputFormControlDirective, selector: "input[fd-form-control]" }, { kind: "component", type: i9.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i9.FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "component", type: i9.FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen"], outputs: ["isOpenChange"] }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i11.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i12.BreadcrumbComponent, selector: "fd-breadcrumb", inputs: ["containerElement", "reverse", "tabIndex"], outputs: ["visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i12.BreadcrumbItemComponent, selector: "fd-breadcrumb-item" }, { kind: "component", type: i13.LinkComponent, selector: "[fdLink], [fd-link], [fd-breadcrumb-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i14.PaginationComponent, selector: "fd-pagination", inputs: ["id", "mobile", "totalItems", "currentPage", "itemsPerPage", "itemsPerPageTemplate", "itemsPerPageLabel", "itemsPerPageOptions", "displayTotalItems", "displayTextTemplate", "firstLabel", "previousLabel", "nextLabel", "lastLabel", "ariaLabel", "pageLabel", "currentPageAriaLabel", "labelBeforeInputMobile", "labelAfterInputMobile", "inputAriaLabel"], outputs: ["pageChangeStart", "itemsPerPageChange"] }, { kind: "component", type: i15.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i16.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large"] }, { kind: "component", type: i17.MenuComponent, selector: "fdp-menu", inputs: ["id", "openByArrowKeys", "xPosition"], outputs: ["close"] }, { kind: "component", type: i17.MenuItemComponent, selector: "fdp-menu-item", inputs: ["disabled", "cascadeDirection"], outputs: ["itemSelect"] }, { kind: "directive", type: i17.MenuTriggerDirective, selector: "[fdpMenuTriggerFor]", inputs: ["fdpMenuTriggerFor"] }, { kind: "component", type: i18.MessageStripComponent, selector: "fd-message-strip", inputs: ["class", "dismissible", "noIcon", "type", "id", "ariaLabelledBy", "ariaLabel", "dismissLabel", "width", "minWidth", "marginBottom"], outputs: ["onDismiss"] }, { kind: "directive", type: i19.FileUploaderSelectDirective, selector: "[fdFileSelect]", inputs: ["multiple"], outputs: ["fileSelected"] }, { kind: "component", type: i20.MenuButtonComponent, selector: "fdp-menu-button", inputs: ["label", "title", "icon", "type"], outputs: ["buttonClicked"] }, { kind: "directive", type: i21.UploadCollectionDragnDropDirective, selector: "[fdpUploadCollectionDragnDrop]", inputs: ["multiple", "fileTypes", "maxFileSize", "maxFilenameLength", "mimeTypes", "disabled", "dragndrop"], outputs: ["fileChanged", "cancel", "onDropzone"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i22.FdTranslatePipe, name: "fdTranslate" }, { kind: "pipe", type: i23.ConvertBytesPipe, name: "convertBytes" }], encapsulation: i0.ViewEncapsulation.None });
836
836
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UploadCollectionComponent, decorators: [{
837
837
  type: Component,
838
838
  args: [{ selector: 'fdp-upload-collection', encapsulation: ViewEncapsulation.None, template: "<div [id]=\"id\" class=\"fdp-upload-collection\">\n <!-- Message strip -->\n <fd-message-strip *ngIf=\"_message\" [type]=\"_message.messageStripType\" (onDismiss)=\"_messageStripDismiss()\">\n <ng-container\n [ngTemplateOutlet]=\"message\"\n [ngTemplateOutletContext]=\"{\n messageType: _message.messageType,\n payload: _message.payload,\n messageStripType: _message.messageStripType,\n count: _message.count\n }\"\n ></ng-container>\n </fd-message-strip>\n\n <!-- Toolbar -->\n <fd-toolbar class=\"fdp-upload-collection__toolbar\">\n <div style=\"flex: 1 auto\">\n <fd-breadcrumb [id]=\"id + '-breadcrumb'\">\n <fd-breadcrumb-item>\n <ng-template #multipleBreadcrumbs>\n <a href=\"#\" fd-link (click)=\"_breadcrumbGoTo($event)\">\n {{ 'platformUploadCollection.breadcrumbLabelAllFiles' | fdTranslate }}\n </a>\n </ng-template>\n <ng-template #singleBreadcrumb>\n <span>\n {{\n 'platformUploadCollection.breadcrumbLabelAllFilesWithTotal'\n | fdTranslate : { total: _totalItems }\n }}\n </span>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"_breadcrumbList.length > 0 ? multipleBreadcrumbs : singleBreadcrumb\"\n ></ng-container>\n </fd-breadcrumb-item>\n <fd-breadcrumb-item *ngFor=\"let item of _breadcrumbList; let i = index\">\n <ng-template #clickableBreadcrumb>\n <a href=\"#\" fd-link (click)=\"_breadcrumbGoTo($event, i)\">{{ item.folderName }}</a>\n </ng-template>\n <ng-template #textBreadcrumb>\n <span>{{ item.folderName }} ({{ _totalItems }})</span>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"item.clikable ? clickableBreadcrumb : textBreadcrumb\"\n ></ng-container>\n </fd-breadcrumb-item>\n </fd-breadcrumb>\n </div>\n\n <fd-toolbar-spacer style=\"max-width: 3rem\"></fd-toolbar-spacer>\n <ng-container *ngIf=\"readonly || selectedItems.length === 0\">\n <fd-input-group\n *ngIf=\"showSearch\"\n [(ngModel)]=\"_searchText\"\n (ngModelChange)=\"_searchInputChanged()\"\n glyph=\"search\"\n [ariaLabelledBy]=\"id + '-breadcrumb'\"\n [placeholder]=\"'platformUploadCollection.searchPlaceholder' | fdTranslate\"\n ></fd-input-group>\n\n <ng-container *ngIf=\"!readonly\">\n <button\n fd-toolbar-item\n fd-button\n (click)=\"_openUploadFiles()\"\n fdType=\"ghost\"\n [disabled]=\"disabled\"\n [label]=\"'platformUploadCollection.addBtnLabel' | fdTranslate\"\n [title]=\"'platformUploadCollection.addBtnLabel' | fdTranslate\"\n ></button>\n\n <button\n fd-toolbar-item\n fd-button\n (click)=\"_openNewFolderDialog()\"\n *ngIf=\"hierarchy\"\n [disabled]=\"disabled\"\n fdType=\"transparent\"\n [label]=\"'platformUploadCollection.newFolderBtnLabel' | fdTranslate\"\n [title]=\"'platformUploadCollection.newFolderBtnLabel' | fdTranslate\"\n ></button>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!readonly && selectedItems.length > 0\">\n <button\n fd-toolbar-item\n fd-button\n (click)=\"_moveToClicked(true)\"\n fdType=\"ghost\"\n [disabled]=\"disabled\"\n [label]=\"'platformUploadCollection.moveToBtnLabel' | fdTranslate\"\n [title]=\"'platformUploadCollection.moveToBtnLabel' | fdTranslate\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n (click)=\"_downloadClicked(true)\"\n fdType=\"ghost\"\n [disabled]=\"disabled\"\n *ngIf=\"_showIfSelectedOnlyFiles()\"\n [label]=\"'platformUploadCollection.downloadBtnLabel' | fdTranslate\"\n [title]=\"'platformUploadCollection.downloadBtnLabel' | fdTranslate\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n (click)=\"_remove(true)\"\n fdType=\"ghost\"\n [disabled]=\"disabled\"\n [label]=\"'platformUploadCollection.removeBtnLabel' | fdTranslate\"\n [title]=\"'platformUploadCollection.removeBtnLabel' | fdTranslate\"\n ></button>\n </ng-container>\n </fd-toolbar>\n\n <div class=\"fdp-upload-collection__table--wrapper\">\n <div\n class=\"fdp-upload-collection__table\"\n fdpUploadCollectionDragnDrop\n [fileTypes]=\"fileTypes\"\n [maxFilenameLength]=\"maxFilenameLength\"\n [maxFileSize]=\"maxFileSize\"\n [mimeTypes]=\"mimeTypes\"\n [dragndrop]=\"!readonly\"\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n (fileChanged)=\"_handleDrop($event)\"\n (cancel)=\"_dragDropCancel()\"\n (onDropzone)=\"_onDropzone($event)\"\n >\n <!-- Table -->\n <fdp-table\n *ngIf=\"_visibleList$.value.length > 0\"\n [dataSource]=\"_visibleList$\"\n [loading]=\"dataSource.isDataLoading\"\n selectionMode=\"multiple\"\n emptyTableMessage=\"\"\n [noHorizontalBorders]=\"true\"\n [trackBy]=\"_trackByDocumentId\"\n (rowSelectionChange)=\"_onRowSelectionChange($event)\"\n >\n <fdp-column name=\"name\" label=\"Name\" width=\"8rem\">\n <fdp-table-cell *fdpCellDef=\"let item\">\n <div class=\"fdp-upload-collection__vertical-align-center\">\n <fd-icon\n class=\"fdp-upload-collection__fd-icon\"\n *ngIf=\"item.type === 'folder'\"\n glyph=\"folder-blank\"\n [title]=\"'platformUploadCollection.folderIconTitle' | fdTranslate\"\n ></fd-icon>\n <fd-icon\n class=\"fdp-upload-collection__fd-icon\"\n *ngIf=\"item.type === 'file'\"\n [glyph]=\"_getIconByType(item)\"\n [title]=\"'platformUploadCollection.fileIconTitle' | fdTranslate\"\n ></fd-icon>\n\n <ng-container *ngIf=\"disabled || readonly || !_isSelectedItem(item); else editMode\">\n <span\n [class.fdp-upload-collection__cursor]=\"item.type === 'folder'\"\n (click)=\"_openFolder(item)\"\n >{{ item.name }}</span\n >\n </ng-container>\n </div>\n\n <ng-template #editMode>\n <div fd-form-item>\n <fd-form-input-message-group [triggers]=\"[]\" [isOpen]=\"!!item.sameFilenameState\">\n <div class=\"fdp-upload-collection__vertical-align-center\">\n <input\n fd-form-control\n [value]=\"_getItemName(item)\"\n (blur)=\"_fileNameChange($event, item)\"\n (input)=\"_checkName($event, item)\"\n type=\"text\"\n [placeholder]=\"\n 'platformUploadCollection.editFileNameInputPlaceholder' | fdTranslate\n \"\n [state]=\"item.sameFilenameState\"\n />\n <span class=\"fdp-upload-collection__item_extension\">{{\n _getItemExtension(item)\n }}</span>\n </div>\n\n <fd-form-message [type]=\"item.sameFilenameState\">\n {{\n (item.type === 'file'\n ? 'platformUploadCollection.editFileNameFileAlreadyExistsError'\n : 'platformUploadCollection.editFileNameFolderAlreadyExistsError'\n ) | fdTranslate\n }}\n </fd-form-message>\n </fd-form-input-message-group>\n </div>\n </ng-template>\n </fdp-table-cell>\n </fdp-column>\n\n <fdp-column name=\"uploadedBy\" label=\"Uploaded by\" width=\"5rem\">\n <fdp-table-cell *fdpCellDef=\"let item\">{{ item.uploadedBy.name }}</fdp-table-cell>\n </fdp-column>\n\n <fdp-column name=\"uploadedOn\" label=\"Uploaded on\" width=\"5rem\">\n <fdp-table-cell *fdpCellDef=\"let item\">{{ item.uploadedOn | date : 'shortDate' }}</fdp-table-cell>\n </fdp-column>\n\n <fdp-column name=\"size\" label=\"File size\" width=\"5rem\">\n <fdp-table-cell *fdpCellDef=\"let item\">{{ item.fileSize | convertBytes }}</fdp-table-cell>\n </fdp-column>\n\n <fdp-column name=\"version\" label=\"Version\" width=\"5rem\">\n <fdp-table-cell *fdpCellDef=\"let item\">{{ item.version || '' }}</fdp-table-cell>\n </fdp-column>\n\n <fdp-column name=\"status\" label=\"Status\" width=\"5rem\">\n <fdp-table-cell *fdpCellDef=\"let item\">\n <fd-busy-indicator\n *ngIf=\"item.status === _uploadCollectionItemStatus.LOADING\"\n [loading]=\"true\"\n ariaLabel=\"Status: Loading\"\n ariaLive=\"polite\"\n size=\"s\"\n ></fd-busy-indicator>\n <span\n *ngIf=\"item.status === _uploadCollectionItemStatus.SUCCESSFUL\"\n fd-object-status\n status=\"positive\"\n >\n {{ 'platformUploadCollection.itemStatusSuccessful' | fdTranslate }}\n </span>\n <span\n *ngIf=\"item.status === _uploadCollectionItemStatus.UNSUCCESSFUL\"\n fd-object-status\n status=\"negative\"\n >\n {{ 'platformUploadCollection.itemStatusUnsuccessful' | fdTranslate }}\n </span>\n </fdp-table-cell>\n </fdp-column>\n\n <fdp-column name=\"action\" *ngIf=\"!readonly\" width=\"5rem\" align=\"end\">\n <fdp-table-header *fdpHeaderCellDef>Action</fdp-table-header>\n <fdp-table-cell *fdpCellDef=\"let item\">\n <div class=\"fdp-upload-collection__actions\">\n <div class=\"fdp-upload-collection__actions--status\">\n <button\n fd-button\n [label]=\"'platformUploadCollection.uploadNewFileAfterFailAction' | fdTranslate\"\n [title]=\"'platformUploadCollection.uploadNewFileAfterFailAction' | fdTranslate\"\n (click)=\"_runUploadNewFileAfterFail(item)\"\n fdType=\"ghost\"\n [disabled]=\"disabled\"\n *ngIf=\"item.status === _uploadCollectionItemStatus.UNSUCCESSFUL\"\n ></button>\n\n <button\n fd-button\n [label]=\"'platformUploadCollection.cancelUploadNewFileAction' | fdTranslate\"\n [title]=\"'platformUploadCollection.cancelUploadNewFileAction' | fdTranslate\"\n fdType=\"ghost\"\n [disabled]=\"disabled\"\n (click)=\"_cancelUploadNewFile(item)\"\n *ngIf=\"terminationEnabled && item.status === _uploadCollectionItemStatus.LOADING\"\n ></button>\n </div>\n\n <fdp-menu-button\n icon=\"overflow\"\n [disabled]=\"disabled\"\n type=\"transparent\"\n [title]=\"'platformUploadCollection.itemMenuBtnTitle' | fdTranslate\"\n [fdpMenuTriggerFor]=\"menuActions\"\n (buttonClicked)=\"_actionButton(item)\"\n >\n </fdp-menu-button>\n </div>\n </fdp-table-cell>\n </fdp-column>\n </fdp-table>\n\n <!-- Dragdrop area -->\n <div\n class=\"fdp-upload-collection__dragdrop-area\"\n *ngIf=\"_showDragDropArea\"\n [class.active]=\"_onDragDropArea\"\n >\n <fd-icon class=\"fdp-upload-collection__dragdrop-area--icon\" glyph=\"upload-to-cloud\"></fd-icon>\n <p class=\"fdp-upload-collection__dragdrop-area--text\">\n {{ 'platformUploadCollection.dragDropAreaText' | fdTranslate }}\n </p>\n </div>\n\n <!-- No data -->\n <div\n class=\"fdp-upload-collection__no-data\"\n *ngIf=\"_visibleList$.value.length === 0\"\n [class.invisible]=\"_showDragDropArea\"\n >\n <fd-icon glyph=\"document\"></fd-icon>\n <h3>{{ noDataText || ('platformUploadCollection.noDataText' | fdTranslate) }}</h3>\n <p>{{ noDataDescription || ('platformUploadCollection.noDataDescription' | fdTranslate) }}</p>\n </div>\n </div>\n\n <!-- Table footer -->\n <div class=\"fdp-upload-collection__table-footer\" *ngIf=\"enablePagination\">\n <!-- Pagination -->\n <div class=\"fdp-upload-collection__pagination\">\n <span [id]=\"id + '-pagination'\" class=\"fdp-upload-collection__pagination--total\">\n {{\n 'platformUploadCollection.paginationTotal'\n | fdTranslate : { from: _countShowedItems, to: _countNotShowedItems, total: _totalItems }\n }}\n </span>\n <fd-pagination\n [totalItems]=\"_totalItems\"\n [displayTotalItems]=\"false\"\n (pageChangeStart)=\"_pageChanged($event)\"\n [itemsPerPage]=\"_itemsPerPage\"\n [currentPage]=\"_currentPage\"\n [attr.aria-labelledby]=\"id + '-pagination'\"\n ></fd-pagination>\n </div>\n\n <!-- Results per page -->\n <div class=\"fdp-upload-collection__results\">\n <span class=\"fdp-upload-collection__results--title\">\n <span [id]=\"id + '-results'\">\n {{ 'platformUploadCollection.resultsPerPage' | fdTranslate }}\n </span>\n <span *ngIf=\"_itemsPerPageOptions.length === 0\">{{ _itemsPerPage }}</span>\n </span>\n <fdp-menu-button\n *ngIf=\"_itemsPerPageOptions.length > 0\"\n type=\"ghost\"\n [ariaLabelledBy]=\"id + '-results'\"\n [fdpMenuTriggerFor]=\"itemsPerPageMenu\"\n [label]=\"_itemsPerPage + ''\"\n >\n </fdp-menu-button>\n </div>\n </div>\n </div>\n</div>\n\n<fdp-menu #itemsPerPageMenu xPosition=\"before\">\n <fdp-menu-item\n *ngFor=\"let value of _itemsPerPageOptions\"\n (itemSelect)=\"_itemsPerPageChange(value.label)\"\n [attr.title]=\"'Results per page: ' + value.label\"\n >\n <span>{{ value.label }}</span>\n </fdp-menu-item>\n</fdp-menu>\n\n<fdp-menu #menuActions xPosition=\"before\">\n <fdp-menu-item (itemSelect)=\"_moveToClicked()\">\n <fd-icon\n class=\"fdp-upload-collection__fd-icon\"\n glyph=\"folder-blank\"\n [title]=\"'platformUploadCollection.moveToBtnLabel' | fdTranslate\"\n ></fd-icon>\n <span>\n {{ 'platformUploadCollection.moveToBtnLabel' | fdTranslate }}\n </span>\n </fdp-menu-item>\n <ng-container *ngIf=\"_activeItem?.type === 'file'\">\n <fdp-menu-item (itemSelect)=\"_downloadClicked()\">\n <fd-icon\n class=\"fdp-upload-collection__fd-icon\"\n glyph=\"download\"\n [title]=\"'platformUploadCollection.downloadBtnLabel' | fdTranslate\"\n ></fd-icon>\n <span>\n {{ 'platformUploadCollection.downloadBtnLabel' | fdTranslate }}\n </span>\n </fdp-menu-item>\n <fdp-menu-item (itemSelect)=\"_openUpdateFileVersion()\">\n <fd-icon\n class=\"fdp-upload-collection__fd-icon\"\n glyph=\"drill-up\"\n [title]=\"'platformUploadCollection.updateVersionBtnLabel' | fdTranslate\"\n ></fd-icon>\n <span>\n {{ 'platformUploadCollection.updateVersionBtnLabel' | fdTranslate }}\n </span>\n </fdp-menu-item>\n </ng-container>\n <fdp-menu-item (itemSelect)=\"_remove()\">\n <fd-icon\n class=\"fdp-upload-collection__fd-icon\"\n glyph=\"delete\"\n [title]=\"'platformUploadCollection.removeBtnLabel' | fdTranslate\"\n ></fd-icon>\n <span>\n {{ 'platformUploadCollection.removeBtnLabel' | fdTranslate }}\n </span>\n </fdp-menu-item>\n</fdp-menu>\n\n<input\n #fileInput\n class=\"fdp-upload-collection__hidden\"\n type=\"file\"\n (fileSelected)=\"_selectHandler($event)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n fdFileSelect\n/>\n\n<input\n #updateVersionInput\n class=\"fdp-upload-collection__hidden\"\n type=\"file\"\n (fileSelected)=\"_selectHandler($event)\"\n [disabled]=\"disabled\"\n [multiple]=\"false\"\n fdFileSelect\n/>\n\n<ng-template\n let-messageType=\"messageType\"\n let-payload=\"payload\"\n let-messageStripType=\"messageStripType\"\n let-count=\"count\"\n #message\n>\n <ng-container *ngIf=\"_message\" [ngSwitch]=\"messageType\">\n <ng-container\n *ngSwitchCase=\"_messageType.CREATE\"\n [ngTemplateOutlet]=\"messageNewFolder\"\n [ngTemplateOutletContext]=\"{\n messageStripType: _message.messageStripType,\n payload: _message.payload\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.UPDATE_VERSION\"\n [ngTemplateOutlet]=\"messageUpdateVersion\"\n [ngTemplateOutletContext]=\"{\n messageStripType: _message.messageStripType,\n payload: _message.payload\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.FILE_RENAME\"\n [ngTemplateOutlet]=\"messageFileRename\"\n [ngTemplateOutletContext]=\"{\n messageStripType: _message.messageStripType,\n payload: _message.payload\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.REMOVE\"\n [ngTemplateOutlet]=\"messageRemove\"\n [ngTemplateOutletContext]=\"{\n payload: _message.payload,\n messageStripType: _message.messageStripType,\n count: _message.count\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.MOVE\"\n [ngTemplateOutlet]=\"messageMove\"\n [ngTemplateOutletContext]=\"{\n payload: _message.payload,\n messageStripType: _message.messageStripType,\n count: _message.count\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.TYPE_MISMATCH\"\n [ngTemplateOutlet]=\"messageTypeMismatch\"\n [ngTemplateOutletContext]=\"{\n payload: _message.payload,\n messageStripType: _message.messageStripType,\n count: _message.count\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.FILE_SIZE\"\n [ngTemplateOutlet]=\"messageFileSize\"\n [ngTemplateOutletContext]=\"{\n payload: _message.payload,\n messageStripType: _message.messageStripType,\n count: _message.count\n }\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"_messageType.FILE_NAME_LENGTH\"\n [ngTemplateOutlet]=\"messageFilenameLength\"\n [ngTemplateOutletContext]=\"{\n payload: _message.payload,\n messageStripType: _message.messageStripType,\n count: _message.count\n }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #messageNewFolder let-payload=\"payload\" let-messageStripType=\"messageStripType\">\n <ng-container *ngIf=\"messageStripType === 'error'; else foldersCreated\">\n {{ 'platformUploadCollection.messageCreateFailed' | fdTranslate : { folderName: payload.folder.name } }}\n </ng-container>\n <ng-template #foldersCreated>\n {{ 'platformUploadCollection.messageCreateSuccess' | fdTranslate : { folderName: payload.folder.name } }}\n </ng-template>\n</ng-template>\n\n<ng-template #messageUpdateVersion let-payload=\"payload\" let-messageStripType=\"messageStripType\">\n <ng-container *ngIf=\"messageStripType === 'error'; else versionUpdated\">\n {{ 'platformUploadCollection.messageUpdateVersionFailed' | fdTranslate : { folderName: payload.item.name } }}\n </ng-container>\n <ng-template #versionUpdated>\n {{ 'platformUploadCollection.messageUpdateVersionSuccess' | fdTranslate : { folderName: payload.item.name } }}\n </ng-template>\n</ng-template>\n\n<ng-template #messageFileRename let-payload=\"payload\" let-messageStripType=\"messageStripType\">\n <ng-container *ngIf=\"messageStripType === 'error'; else fileRenamed\">\n {{\n 'platformUploadCollection.messageFileRenameFailed'\n | fdTranslate : { from: payload.item.name, to: payload.fileName }\n }}\n </ng-container>\n <ng-template #fileRenamed>\n {{\n 'platformUploadCollection.messageFileRenameSuccess'\n | fdTranslate : { from: payload.item.name, to: payload.fileName }\n }}\n </ng-template>\n</ng-template>\n\n<ng-template #messageRemove let-payload=\"payload\" let-messageStripType=\"messageStripType\" let-count=\"count\">\n <ng-container *ngIf=\"payload.items.length > 1 && count.folder && count.file\">\n <ng-container *ngIf=\"messageStripType === 'error'; else foldersAndFilesRemoved\">\n {{\n 'platformUploadCollection.messageRemoveFoldersAndFilesFailed'\n | fdTranslate : { foldersCount: count.folder, filesCount: count.file }\n }}\n </ng-container>\n <ng-template #foldersAndFilesRemoved>\n {{\n 'platformUploadCollection.messageRemoveFoldersAndFilesSuccess'\n | fdTranslate : { foldersCount: count.folder, filesCount: count.file }\n }}\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length > 1 && count.folder && !count.file\">\n <ng-container *ngIf=\"messageStripType === 'error'; else foldersRemoved\">\n {{ 'platformUploadCollection.messageRemoveFoldersFailed' | fdTranslate : { foldersCount: count.folder } }}\n </ng-container>\n <ng-template #foldersRemoved>\n {{ 'platformUploadCollection.messageRemoveFoldersSuccess' | fdTranslate : { foldersCount: count.folder } }}\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length > 1 && count.file && !count.folder\">\n <ng-container *ngIf=\"messageStripType === 'error'; else filesRemoved\">\n {{ 'platformUploadCollection.messageRemoveFilesFailed' | fdTranslate : { filesCount: count.file } }}\n </ng-container>\n <ng-template #filesRemoved>\n {{ 'platformUploadCollection.messageRemoveFilesSuccess' | fdTranslate : { filesCount: count.file } }}\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length === 1\">\n <ng-container *ngIf=\"messageStripType === 'error'; else oneItemRemoved\">\n {{\n 'platformUploadCollection.messageRemoveFileOrFolderFailed'\n | fdTranslate : { name: payload.items[0].name }\n }}\n </ng-container>\n <ng-template #oneItemRemoved>\n {{\n 'platformUploadCollection.messageRemoveFileOrFolderSuccess'\n | fdTranslate : { name: payload.items[0].name }\n }}\n </ng-template>\n </ng-container>\n</ng-template>\n\n<ng-template #messageMove let-payload=\"payload\" let-messageStripType=\"messageStripType\" let-count=\"count\">\n <ng-container *ngIf=\"payload.items.length > 1 && count.folder && count.file\">\n <ng-container *ngIf=\"messageStripType === 'error'; else filesAndFoldersMovedTo\">\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFoldersAndFilesFailed'\n : 'platformUploadCollection.messageMoveRootFoldersAndFilesFailed'\n ) | fdTranslate : { foldersCount: count.folder, filesCount: count.file, to: payload.to?.name }\n }}\n </ng-container>\n <ng-template #filesAndFoldersMovedTo>\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFoldersAndFilesSuccess'\n : 'platformUploadCollection.messageMoveRootFoldersAndFilesSuccess'\n ) | fdTranslate : { foldersCount: count.folder, filesCount: count.file, to: payload.to?.name }\n }}\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length > 1 && count.folder && !count.file\">\n <ng-container *ngIf=\"messageStripType === 'error'; else foldersMovedTo\">\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFoldersFailed'\n : 'platformUploadCollection.messageMoveRootFoldersFailed'\n ) | fdTranslate : { foldersCount: count.folder, to: payload.to?.name }\n }}\n </ng-container>\n <ng-template #foldersMovedTo>\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFoldersSuccess'\n : 'platformUploadCollection.messageMoveRootFoldersSuccess'\n ) | fdTranslate : { foldersCount: count.folder, to: payload.to?.name }\n }}\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length > 1 && count.file && !count.folder\">\n <ng-container *ngIf=\"messageStripType === 'error'; else filesMovedTo\">\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFilesFailed'\n : 'platformUploadCollection.messageMoveRootFilesFailed'\n ) | fdTranslate : { filesCount: count.file, to: payload.to?.name }\n }}\n </ng-container>\n <ng-template #filesMovedTo>\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFilesSuccess'\n : 'platformUploadCollection.messageMoveRootFilesSuccess'\n ) | fdTranslate : { filesCount: count.file, to: payload.to?.name }\n }}\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length === 1\">\n <ng-container *ngIf=\"messageStripType === 'error'; else oneItemMovedTo\">\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFileOrFolderFailed'\n : 'platformUploadCollection.messageMoveRootFileOrFolderFailed'\n ) | fdTranslate : { name: payload.items[0].name, to: payload.to?.name }\n }}\n </ng-container>\n <ng-template #oneItemMovedTo>\n {{\n (payload.to\n ? 'platformUploadCollection.messageMoveFileOrFolderSuccess'\n : 'platformUploadCollection.messageMoveRootFileOrFolderSuccess'\n ) | fdTranslate : { name: payload.items[0].name, to: payload.to?.name }\n }}\n </ng-template>\n </ng-container>\n</ng-template>\n\n<ng-template #messageTypeMismatch let-payload=\"payload\" let-messageStripType=\"messageStripType\" let-count=\"count\">\n <ng-container *ngIf=\"payload.items.length > 1\">\n {{\n 'platformUploadCollection.messageFileTypeMismatchPlural'\n | fdTranslate : { filesCount: payload.items.length, allowedTypes: _getAllowedTypes() }\n }}\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length === 1\">\n {{\n 'platformUploadCollection.messageFileTypeMismatchSingular'\n | fdTranslate : { fileName: payload.items[0].name, allowedTypes: _getAllowedTypes() }\n }}\n </ng-container>\n</ng-template>\n\n<ng-template #messageFileSize let-payload=\"payload\" let-messageStripType=\"messageStripType\" let-count=\"count\">\n <ng-container *ngIf=\"payload.items.length > 1\">\n {{\n 'platformUploadCollection.messageFileSizeExceededPlural'\n | fdTranslate : { filesCount: payload.items.length, maxFileSize: maxFileSize || 0 }\n }}\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length === 1\">\n {{\n 'platformUploadCollection.messageFileSizeExceededSingular'\n | fdTranslate : { fileName: payload.items[0].name, maxFileSize: maxFileSize || 0 }\n }}\n </ng-container>\n</ng-template>\n\n<ng-template #messageFilenameLength let-payload=\"payload\" let-messageStripType=\"messageStripType\" let-count=\"count\">\n <ng-container *ngIf=\"payload.items.length > 1\">\n {{\n 'platformUploadCollection.messageFileNameLengthExceededPlural'\n | fdTranslate : { filesCount: payload.items.length, maxFilenameLength: maxFilenameLength || 0 }\n }}\n </ng-container>\n\n <ng-container *ngIf=\"payload.items.length === 1\">\n {{\n 'platformUploadCollection.messageFileNameLengthExceededSingular'\n | fdTranslate : { fileName: payload.items[0].name, maxFilenameLength: maxFilenameLength || 0 }\n }}\n </ng-container>\n</ng-template>\n", styles: [".fdp-upload-collection__fd-icon{color:#0854a0!important;color:var(--sapHighlightColor)!important;margin-right:.625rem!important;font-size:1rem!important}.fdp-upload-collection fd-message-strip{margin-bottom:.625rem}.fdp-upload-collection__toolbar .fd-toolbar{margin-bottom:.625rem;border:0}.fdp-upload-collection__toolbar .fd-toolbar fd-input-group .sap-icon--search{color:#0854a0;color:var(--sapHighlightColor)}.fdp-upload-collection__no-data{text-align:center;min-height:230px;display:flex;align-items:center;flex-direction:column;justify-content:center}.fdp-upload-collection__no-data fd-icon{font-size:3rem;line-height:3rem;margin:0;color:#6a6d70;color:var(--sapContent_LabelColor)}.fdp-upload-collection__no-data h3{font-size:1.125rem;font-size:var(--sapFontHeader4Size);line-height:1rem;margin:8px 0}.fdp-upload-collection__no-data p{font-size:.875rem;font-size:var(--sapFontSize);line-height:1rem;color:#6a6d70;color:var(--sapContent_LabelColor);margin:0}.fdp-upload-collection__no-data.invisible{opacity:0}.fdp-upload-collection__table{position:relative}.fdp-upload-collection__table-footer{display:flex;justify-content:space-between;align-items:center;margin-top:.625rem}.fdp-upload-collection__table-footer .fdp-upload-collection__results--title,.fdp-upload-collection__table-footer .fdp-upload-collection__pagination--total{line-height:1.4;line-height:var(--sapContent_LineHeight);color:#32363a;color:var(--sapTextColor);font-family:\"72\",\"72full\",Arial,Helvetica,sans-serif;font-family:var(--sapFontFamily);font-weight:400;-webkit-font-smoothing:antialiased;box-sizing:border-box;padding:0;margin:0;border:0;font-size:.875rem;font-size:var(--sapFontSize);color:#6a6d70;color:var(--sapContent_LabelColor);margin-right:.5rem}.fdp-upload-collection__table-footer .fdp-upload-collection__results--title:before,.fdp-upload-collection__table-footer .fdp-upload-collection__results--title:after,.fdp-upload-collection__table-footer .fdp-upload-collection__pagination--total:before,.fdp-upload-collection__table-footer .fdp-upload-collection__pagination--total:after{box-sizing:inherit;font-size:inherit}[dir=rtl] .fdp-upload-collection__table-footer .fdp-upload-collection__results--title,.fdp-upload-collection__table-footer .fdp-upload-collection__results--title[dir=rtl],[dir=rtl] .fdp-upload-collection__table-footer .fdp-upload-collection__pagination--total,.fdp-upload-collection__table-footer .fdp-upload-collection__pagination--total[dir=rtl]{margin-right:0;margin-left:.5rem}.fdp-upload-collection__table-footer .fdp-upload-collection__pagination--total{width:100%;align-self:center}.fdp-upload-collection__table-footer .fdp-upload-collection__pagination{font-size:.875rem;font-size:var(--sapFontSize);line-height:1.4;line-height:var(--sapContent_LineHeight);color:#32363a;color:var(--sapTextColor);font-family:\"72\",\"72full\",Arial,Helvetica,sans-serif;font-family:var(--sapFontFamily);font-weight:400;-webkit-font-smoothing:antialiased;box-sizing:border-box;padding:0;margin:0;border:0;display:flex}.fdp-upload-collection__table-footer .fdp-upload-collection__pagination:before,.fdp-upload-collection__table-footer .fdp-upload-collection__pagination:after{box-sizing:inherit;font-size:inherit}.fdp-upload-collection__hidden{display:none}.fdp-upload-collection__vertical-align-center{display:flex;align-items:center}.fdp-upload-collection__cursor{cursor:pointer}.fdp-upload-collection__item_extension{white-space:nowrap}.fdp-upload-collection__actions{display:flex;justify-content:space-between;align-items:center}.fdp-upload-collection__actions .sap-icon--slim-arrow-down{display:none}.fdp-upload-collection__dragdrop-area{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;background:rgba(255,255,255,.5);outline:2px dashed transparent;outline-color:#89919a;outline-color:var(--sapField_BorderColor);outline-offset:-4px;box-sizing:border-box}.fdp-upload-collection__dragdrop-area fd-icon{font-size:3rem;line-height:3rem;margin-bottom:1rem;color:#6a6d70;color:var(--sapContent_LabelColor)}.fdp-upload-collection__dragdrop-area p{font-size:1rem;line-height:1.125rem;color:#6a6d70;color:var(--sapContent_LabelColor)}.fdp-upload-collection__dragdrop-area.active{outline-color:#0854a0;outline-color:var(--sapContent_DragAndDropActiveColor);background:rgba(8,84,160,.08)}.fdp-upload-collection__dragdrop-area.active fd-icon,.fdp-upload-collection__dragdrop-area.active p{color:#0854a0;color:var(--sapContent_DragAndDropActiveColor)}.fdp-upload-collection .fd-form-item{align-items:center;flex-direction:row}.fdp-upload-collection-dialig-no-bg{background-color:transparent!important}[dir=rtl] .fdp-upload-collection fd-icon{margin-right:0;margin-left:.625rem}.fd-menu__list .disabled{background-color:#fff!important;background-color:var(--sapList_Background)!important;cursor:not-allowed}.fd-menu__list .disabled .fd-menu__title{color:#32363a!important;color:var(--sapList_TextColor)!important}\n"] }]