@elderbyte/ngx-starter 15.2.3 → 15.2.4

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.
@@ -1,8 +1,10 @@
1
1
  import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- import { map } from 'rxjs/operators';
2
+ import { BehaviorSubject, switchMap } from 'rxjs';
3
+ import { filter, map } from 'rxjs/operators';
3
4
  import { LoggerFactory } from '@elderbyte/ts-logger';
4
5
  import { BytesPerSecondFormat } from '../../../common/format/bytes-per-second-format';
5
6
  import { BytesFormat } from '../../../common/format/bytes-format';
7
+ import { DataTransferStatus } from '../../../common/http/transfer/data-transfer-status';
6
8
  import * as i0 from "@angular/core";
7
9
  import * as i1 from "@angular/common";
8
10
  import * as i2 from "@angular/material/icon";
@@ -21,7 +23,10 @@ export class HttpDataTransferComponent {
21
23
  * Fields *
22
24
  * *
23
25
  **************************************************************************/
24
- this.logger = LoggerFactory.getLogger('HttpDataTransferComponent');
26
+ this.logger = LoggerFactory.getLogger(this.constructor.name);
27
+ this._transfer$ = new BehaviorSubject(null);
28
+ this.$state = this._transfer$.pipe(filter(transfer => !!transfer), switchMap(transfer => transfer.state$));
29
+ this.$detail = this.$state.pipe(map(state => this.renderTransferProgress(state)));
25
30
  }
26
31
  /***************************************************************************
27
32
  * *
@@ -29,39 +34,58 @@ export class HttpDataTransferComponent {
29
34
  * *
30
35
  **************************************************************************/
31
36
  get transfer() {
32
- return this._transfer;
37
+ return this._transfer$.getValue();
33
38
  }
34
39
  set transfer(value) {
35
- this._transfer = value;
36
- this.$state = value.state$;
37
- this.$detail = value.state$.pipe(map(state => {
38
- if (state.isAborted) {
39
- return 'Canceled.';
40
- }
41
- if (state.hasFailed) {
42
- return 'Failed!';
43
- }
44
- const e = state.progress;
45
- // 100Mb of 332Mb (1200Kb/sec)
46
- if (e.percentDone === 100) {
47
- return BytesFormat.format(e.doneBytes) + '( ' + BytesPerSecondFormat.formatAsBitsPerSecond(e.avgBytesPerSec) + ')';
48
- }
49
- else {
50
- let progress = BytesFormat.format(e.doneBytes) + ' of ' + BytesFormat.format(e.totalBytes);
51
- if (e.bytesPerSec) {
52
- progress += ' (' + BytesPerSecondFormat.formatAsBitsPerSecond(e.bytesPerSec) + ')';
53
- }
54
- return progress;
40
+ this._transfer$.next(value);
41
+ }
42
+ /***************************************************************************
43
+ * *
44
+ * Public API *
45
+ * *
46
+ **************************************************************************/
47
+ statusIcon(state) {
48
+ switch (state.status) {
49
+ case DataTransferStatus.Pending: return 'pending';
50
+ case DataTransferStatus.Transferring: return 'cloud_sync';
51
+ case DataTransferStatus.Completed: return 'check';
52
+ case DataTransferStatus.Aborted: return 'block';
53
+ case DataTransferStatus.Failed: return 'error';
54
+ default: return 'help_outline';
55
+ }
56
+ }
57
+ /***************************************************************************
58
+ * *
59
+ * Private methods *
60
+ * *
61
+ **************************************************************************/
62
+ renderTransferProgress(state) {
63
+ if (state.isAborted) {
64
+ return 'Canceled.';
65
+ }
66
+ if (state.hasFailed) {
67
+ return 'Failed!';
68
+ }
69
+ const e = state.progress;
70
+ // 100Mb of 332Mb (1200Kb/sec)
71
+ if (e.percentDone === 100) {
72
+ return BytesFormat.format(e.doneBytes) + '( ' + BytesPerSecondFormat.formatAsBitsPerSecond(e.avgBytesPerSec) + ')';
73
+ }
74
+ else {
75
+ let progress = BytesFormat.format(e.doneBytes) + ' of ' + BytesFormat.format(e.totalBytes);
76
+ if (e.bytesPerSec) {
77
+ progress += ' (' + BytesPerSecondFormat.formatAsBitsPerSecond(e.bytesPerSec) + ')';
55
78
  }
56
- }));
79
+ return progress;
80
+ }
57
81
  }
58
82
  }
59
83
  HttpDataTransferComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: HttpDataTransferComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
60
- HttpDataTransferComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: HttpDataTransferComponent, selector: "elder-data-transfer", inputs: { transfer: "transfer" }, ngImport: i0, template: "\n\n<div *ngIf=\"($state | async) as state\"\n class=\"layout-row place-start-center gap-lg flex p-md transfer\"\n>\n\n <div class=\"layout-col place-center-center flex-10\">\n <mat-icon class=\"noselect\">\n {{state.isCompleted ? 'check' : 'attachment'}}\n </mat-icon>\n\n <!--\n <mat-icon\n *ngIf=\"!(statusOf(file)?.error | async) && (statusOf(file)?.progress | async) === 100\"\n class=\"green-icon\"\n >check</mat-icon>\n -->\n\n </div>\n\n\n <div class=\"layout-col flex-80\" style=\"overflow: hidden\">\n\n <span class=\"mat-subtitle-2 noselect title\">{{transfer.name}}</span>\n\n <mat-progress-bar\n [matTooltip]=\"state.error?.message\"\n [color]=\"(state.error ? 'warn' : '')\"\n mode=\"determinate\"\n [value]=\"state.progress.percentDone\"\n ></mat-progress-bar>\n\n <span class=\"mat-caption noselect\">{{($detail | async)}}</span>\n\n </div>\n\n\n <div class=\"layout-col place-center-center flex-10\">\n <button mat-icon-button type=\"button\"\n (click)=\"transfer.abort()\" [disabled]=\"state.isDone\">\n <mat-icon>\n close\n </mat-icon>\n </button>\n </div>\n\n</div>\n", styles: [".transfer{overflow:hidden}.title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-bottom:5px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
84
+ HttpDataTransferComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: HttpDataTransferComponent, selector: "elder-data-transfer", inputs: { transfer: "transfer" }, ngImport: i0, template: "\n\n<div *ngIf=\"($state | async) as state\"\n class=\"layout-row place-start-center gap-lg flex p-md transfer\"\n>\n\n <div class=\"layout-col place-center-center flex-10\">\n <mat-icon class=\"noselect\">\n {{statusIcon(state)}}\n </mat-icon>\n\n <!--\n <mat-icon\n *ngIf=\"!(statusOf(file)?.error | async) && (statusOf(file)?.progress | async) === 100\"\n class=\"green-icon\"\n >check</mat-icon>\n -->\n\n </div>\n\n\n <div class=\"layout-col flex-80\" style=\"overflow: hidden\">\n\n <span class=\"mat-subtitle-2 noselect title\">{{transfer.name}}</span>\n\n <mat-progress-bar\n [matTooltip]=\"state.error?.message\"\n [color]=\"(state.error ? 'warn' : '')\"\n mode=\"determinate\"\n [value]=\"state.progress.percentDone\"\n ></mat-progress-bar>\n\n <span class=\"mat-caption noselect\">{{($detail | async)}}</span>\n\n </div>\n\n\n <div class=\"layout-col place-center-center flex-10\">\n <button mat-icon-button type=\"button\"\n (click)=\"transfer.abort()\" [disabled]=\"state.isDone\">\n <mat-icon>\n close\n </mat-icon>\n </button>\n </div>\n\n</div>\n", styles: [".transfer{overflow:hidden}.title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-bottom:5px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
61
85
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: HttpDataTransferComponent, decorators: [{
62
86
  type: Component,
63
- args: [{ selector: 'elder-data-transfer', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n\n<div *ngIf=\"($state | async) as state\"\n class=\"layout-row place-start-center gap-lg flex p-md transfer\"\n>\n\n <div class=\"layout-col place-center-center flex-10\">\n <mat-icon class=\"noselect\">\n {{state.isCompleted ? 'check' : 'attachment'}}\n </mat-icon>\n\n <!--\n <mat-icon\n *ngIf=\"!(statusOf(file)?.error | async) && (statusOf(file)?.progress | async) === 100\"\n class=\"green-icon\"\n >check</mat-icon>\n -->\n\n </div>\n\n\n <div class=\"layout-col flex-80\" style=\"overflow: hidden\">\n\n <span class=\"mat-subtitle-2 noselect title\">{{transfer.name}}</span>\n\n <mat-progress-bar\n [matTooltip]=\"state.error?.message\"\n [color]=\"(state.error ? 'warn' : '')\"\n mode=\"determinate\"\n [value]=\"state.progress.percentDone\"\n ></mat-progress-bar>\n\n <span class=\"mat-caption noselect\">{{($detail | async)}}</span>\n\n </div>\n\n\n <div class=\"layout-col place-center-center flex-10\">\n <button mat-icon-button type=\"button\"\n (click)=\"transfer.abort()\" [disabled]=\"state.isDone\">\n <mat-icon>\n close\n </mat-icon>\n </button>\n </div>\n\n</div>\n", styles: [".transfer{overflow:hidden}.title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-bottom:5px}\n"] }]
87
+ args: [{ selector: 'elder-data-transfer', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n\n<div *ngIf=\"($state | async) as state\"\n class=\"layout-row place-start-center gap-lg flex p-md transfer\"\n>\n\n <div class=\"layout-col place-center-center flex-10\">\n <mat-icon class=\"noselect\">\n {{statusIcon(state)}}\n </mat-icon>\n\n <!--\n <mat-icon\n *ngIf=\"!(statusOf(file)?.error | async) && (statusOf(file)?.progress | async) === 100\"\n class=\"green-icon\"\n >check</mat-icon>\n -->\n\n </div>\n\n\n <div class=\"layout-col flex-80\" style=\"overflow: hidden\">\n\n <span class=\"mat-subtitle-2 noselect title\">{{transfer.name}}</span>\n\n <mat-progress-bar\n [matTooltip]=\"state.error?.message\"\n [color]=\"(state.error ? 'warn' : '')\"\n mode=\"determinate\"\n [value]=\"state.progress.percentDone\"\n ></mat-progress-bar>\n\n <span class=\"mat-caption noselect\">{{($detail | async)}}</span>\n\n </div>\n\n\n <div class=\"layout-col place-center-center flex-10\">\n <button mat-icon-button type=\"button\"\n (click)=\"transfer.abort()\" [disabled]=\"state.isDone\">\n <mat-icon>\n close\n </mat-icon>\n </button>\n </div>\n\n</div>\n", styles: [".transfer{overflow:hidden}.title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-bottom:5px}\n"] }]
64
88
  }], ctorParameters: function () { return []; }, propDecorators: { transfer: [{
65
89
  type: Input
66
90
  }] } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1kYXRhLXRyYW5zZmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS10cmFuc2Zlci9odHRwLWRhdGEtdHJhbnNmZXIvaHR0cC1kYXRhLXRyYW5zZmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS10cmFuc2Zlci9odHRwLWRhdGEtdHJhbnNmZXIvaHR0cC1kYXRhLXRyYW5zZmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFHbkQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDcEYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7O0FBUWhFLE1BQU0sT0FBTyx5QkFBeUI7SUFjcEM7Ozs7Z0ZBSTRFO0lBRTVFO1FBbEJBOzs7O29GQUk0RTtRQUVwRSxXQUFNLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBYXRFLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFNUUsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFDVyxRQUFRLENBQUMsS0FBdUI7UUFDekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBRTNCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzlCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUVWLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtnQkFBRSxPQUFPLFdBQVcsQ0FBQzthQUFFO1lBQzVDLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtnQkFBRSxPQUFPLFNBQVMsQ0FBQzthQUFFO1lBRTFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFFekIsOEJBQThCO1lBQzlCLElBQUksQ0FBQyxDQUFDLFdBQVcsS0FBSyxHQUFHLEVBQUU7Z0JBQ3pCLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxHQUFHLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLENBQUM7YUFDcEg7aUJBQU07Z0JBQ0wsSUFBSSxRQUFRLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUUzRixJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUU7b0JBQ2pCLFFBQVEsSUFBSSxJQUFJLEdBQUcsb0JBQW9CLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztpQkFDcEY7Z0JBQ0QsT0FBTyxRQUFRLENBQUM7YUFDakI7UUFDSCxDQUFDLENBQUMsQ0FFSCxDQUFDO0lBRUosQ0FBQzs7c0hBOURVLHlCQUF5QjswR0FBekIseUJBQXlCLDZGQ2Z0QywycUNBK0NBOzJGRGhDYSx5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0UscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU07MEVBb0NwQyxRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtIdHRwRGF0YVRyYW5zZmVyfSBmcm9tICcuLi8uLi8uLi9jb21tb24vaHR0cC90cmFuc2Zlci9odHRwLWRhdGEtdHJhbnNmZXInO1xuaW1wb3J0IHtEYXRhVHJhbnNmZXJTdGF0ZX0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2h0dHAvdHJhbnNmZXIvZGF0YS10cmFuc2Zlci1zdGF0ZSc7XG5pbXBvcnQge0J5dGVzUGVyU2Vjb25kRm9ybWF0fSBmcm9tICcuLi8uLi8uLi9jb21tb24vZm9ybWF0L2J5dGVzLXBlci1zZWNvbmQtZm9ybWF0JztcbmltcG9ydCB7Qnl0ZXNGb3JtYXR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mb3JtYXQvYnl0ZXMtZm9ybWF0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWxkZXItZGF0YS10cmFuc2ZlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9odHRwLWRhdGEtdHJhbnNmZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9odHRwLWRhdGEtdHJhbnNmZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgSHR0cERhdGFUcmFuc2ZlckNvbXBvbmVudCB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignSHR0cERhdGFUcmFuc2ZlckNvbXBvbmVudCcpO1xuICBwcml2YXRlIF90cmFuc2ZlcjogSHR0cERhdGFUcmFuc2ZlcjtcblxuICBwdWJsaWMgJHN0YXRlOiBPYnNlcnZhYmxlPERhdGFUcmFuc2ZlclN0YXRlPjtcbiAgcHVibGljICRkZXRhaWw6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBnZXQgdHJhbnNmZXIoKTogSHR0cERhdGFUcmFuc2ZlciB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zZmVyO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0cmFuc2Zlcih2YWx1ZTogSHR0cERhdGFUcmFuc2Zlcikge1xuICAgIHRoaXMuX3RyYW5zZmVyID0gdmFsdWU7XG5cbiAgICB0aGlzLiRzdGF0ZSA9IHZhbHVlLnN0YXRlJDtcblxuICAgIHRoaXMuJGRldGFpbCA9IHZhbHVlLnN0YXRlJC5waXBlKFxuICAgICAgbWFwKHN0YXRlID0+IHtcblxuICAgICAgICBpZiAoc3RhdGUuaXNBYm9ydGVkKSB7IHJldHVybiAnQ2FuY2VsZWQuJzsgfVxuICAgICAgICBpZiAoc3RhdGUuaGFzRmFpbGVkKSB7IHJldHVybiAnRmFpbGVkISc7IH1cblxuICAgICAgICBjb25zdCBlID0gc3RhdGUucHJvZ3Jlc3M7XG5cbiAgICAgICAgLy8gMTAwTWIgb2YgMzMyTWIgKDEyMDBLYi9zZWMpXG4gICAgICAgIGlmIChlLnBlcmNlbnREb25lID09PSAxMDApIHtcbiAgICAgICAgICByZXR1cm4gQnl0ZXNGb3JtYXQuZm9ybWF0KGUuZG9uZUJ5dGVzKSArICcoICcgKyBCeXRlc1BlclNlY29uZEZvcm1hdC5mb3JtYXRBc0JpdHNQZXJTZWNvbmQoZS5hdmdCeXRlc1BlclNlYykgKyAnKSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IHByb2dyZXNzID0gQnl0ZXNGb3JtYXQuZm9ybWF0KGUuZG9uZUJ5dGVzKSArICcgb2YgJyArIEJ5dGVzRm9ybWF0LmZvcm1hdChlLnRvdGFsQnl0ZXMpO1xuXG4gICAgICAgICAgaWYgKGUuYnl0ZXNQZXJTZWMpIHtcbiAgICAgICAgICAgIHByb2dyZXNzICs9ICcgKCcgKyBCeXRlc1BlclNlY29uZEZvcm1hdC5mb3JtYXRBc0JpdHNQZXJTZWNvbmQoZS5ieXRlc1BlclNlYykgKyAnKSc7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBwcm9ncmVzcztcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICAvLyB0YXAobWVzc2FnZSA9PiB0aGlzLmxvZ2dlci5pbmZvKG1lc3NhZ2UpKVxuICAgICk7XG5cbiAgfVxuXG5cblxufVxuIiwiXG5cbjxkaXYgKm5nSWY9XCIoJHN0YXRlIHwgYXN5bmMpIGFzIHN0YXRlXCJcbiAgY2xhc3M9XCJsYXlvdXQtcm93IHBsYWNlLXN0YXJ0LWNlbnRlciBnYXAtbGcgZmxleCBwLW1kIHRyYW5zZmVyXCJcbj5cblxuICA8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbCBwbGFjZS1jZW50ZXItY2VudGVyIGZsZXgtMTBcIj5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJub3NlbGVjdFwiPlxuICAgICAge3tzdGF0ZS5pc0NvbXBsZXRlZCA/ICdjaGVjaycgOiAnYXR0YWNobWVudCd9fVxuICAgIDwvbWF0LWljb24+XG5cbiAgICA8IS0tXG4gICAgPG1hdC1pY29uXG4gICAgICAqbmdJZj1cIiEoc3RhdHVzT2YoZmlsZSk/LmVycm9yIHwgYXN5bmMpICYmIChzdGF0dXNPZihmaWxlKT8ucHJvZ3Jlc3MgfCBhc3luYykgPT09IDEwMFwiXG4gICAgICBjbGFzcz1cImdyZWVuLWljb25cIlxuICAgID5jaGVjazwvbWF0LWljb24+XG4gICAgLS0+XG5cbiAgPC9kaXY+XG5cblxuICA8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbCBmbGV4LTgwXCIgc3R5bGU9XCJvdmVyZmxvdzogaGlkZGVuXCI+XG5cbiAgICA8c3BhbiBjbGFzcz1cIm1hdC1zdWJ0aXRsZS0yIG5vc2VsZWN0IHRpdGxlXCI+e3t0cmFuc2Zlci5uYW1lfX08L3NwYW4+XG5cbiAgICA8bWF0LXByb2dyZXNzLWJhclxuICAgICAgW21hdFRvb2x0aXBdPVwic3RhdGUuZXJyb3I/Lm1lc3NhZ2VcIlxuICAgICAgW2NvbG9yXT1cIihzdGF0ZS5lcnJvciA/ICd3YXJuJyA6ICcnKVwiXG4gICAgICBtb2RlPVwiZGV0ZXJtaW5hdGVcIlxuICAgICAgW3ZhbHVlXT1cInN0YXRlLnByb2dyZXNzLnBlcmNlbnREb25lXCJcbiAgICA+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJtYXQtY2FwdGlvbiBub3NlbGVjdFwiPnt7KCRkZXRhaWwgfCBhc3luYyl9fTwvc3Bhbj5cblxuICA8L2Rpdj5cblxuXG4gIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sIHBsYWNlLWNlbnRlci1jZW50ZXIgZmxleC0xMFwiPlxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRyYW5zZmVyLmFib3J0KClcIiBbZGlzYWJsZWRdPVwic3RhdGUuaXNEb25lXCI+XG4gICAgICA8bWF0LWljb24+XG4gICAgICAgIGNsb3NlXG4gICAgICA8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuPC9kaXY+XG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1kYXRhLXRyYW5zZmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS10cmFuc2Zlci9odHRwLWRhdGEtdHJhbnNmZXIvaHR0cC1kYXRhLXRyYW5zZmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS10cmFuc2Zlci9odHRwLWRhdGEtdHJhbnNmZXIvaHR0cC1kYXRhLXRyYW5zZmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxlQUFlLEVBQWMsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBR25ELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7OztBQVF0RixNQUFNLE9BQU8seUJBQXlCO0lBY3BDOzs7O2dGQUk0RTtJQUU1RTtRQWxCQTs7OztvRkFJNEU7UUFFcEUsV0FBTSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQW1CLElBQUksQ0FBQyxDQUFDO1FBWS9ELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ2hDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFDOUIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUN2QyxDQUFDO1FBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDN0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBRWpELENBQUM7SUFDSixDQUFDO0lBR0Q7Ozs7Z0ZBSTRFO0lBRTVFLElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQ1csUUFBUSxDQUFDLEtBQXVCO1FBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFckUsVUFBVSxDQUFDLEtBQXdCO1FBQ3hDLFFBQVEsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNwQixLQUFLLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVEsU0FBUyxDQUFDO1lBQ25ELEtBQUssa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBUSxZQUFZLENBQUM7WUFDM0QsS0FBSyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFRLE9BQU8sQ0FBQztZQUNuRCxLQUFLLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVEsT0FBTyxDQUFDO1lBQ2pELEtBQUssa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBUSxPQUFPLENBQUM7WUFDaEQsT0FBTyxDQUFDLENBQUMsT0FBTyxjQUFjLENBQUE7U0FDL0I7SUFDSCxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXBFLHNCQUFzQixDQUFDLEtBQXdCO1FBQ3JELElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUFFLE9BQU8sV0FBVyxDQUFDO1NBQUU7UUFDNUMsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFO1lBQUUsT0FBTyxTQUFTLENBQUM7U0FBRTtRQUUxQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBRXpCLDhCQUE4QjtRQUM5QixJQUFJLENBQUMsQ0FBQyxXQUFXLEtBQUssR0FBRyxFQUFFO1lBQ3pCLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxHQUFHLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLENBQUM7U0FDcEg7YUFBTTtZQUNMLElBQUksUUFBUSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUUzRixJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUU7Z0JBQ2pCLFFBQVEsSUFBSSxJQUFJLEdBQUcsb0JBQW9CLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsQ0FBQzthQUNwRjtZQUNELE9BQU8sUUFBUSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQzs7c0hBdkZVLHlCQUF5QjswR0FBekIseUJBQXlCLDZGQ2hCdEMsa3BDQStDQTsyRkQvQmEseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNFLHFCQUFxQixtQkFHZCx1QkFBdUIsQ0FBQyxNQUFNOzBFQTZDcEMsUUFBUTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHN3aXRjaE1hcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7SHR0cERhdGFUcmFuc2Zlcn0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2h0dHAvdHJhbnNmZXIvaHR0cC1kYXRhLXRyYW5zZmVyJztcbmltcG9ydCB7RGF0YVRyYW5zZmVyU3RhdGV9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9odHRwL3RyYW5zZmVyL2RhdGEtdHJhbnNmZXItc3RhdGUnO1xuaW1wb3J0IHtCeXRlc1BlclNlY29uZEZvcm1hdH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2Zvcm1hdC9ieXRlcy1wZXItc2Vjb25kLWZvcm1hdCc7XG5pbXBvcnQge0J5dGVzRm9ybWF0fSBmcm9tICcuLi8uLi8uLi9jb21tb24vZm9ybWF0L2J5dGVzLWZvcm1hdCc7XG5pbXBvcnQge0RhdGFUcmFuc2ZlclN0YXR1c30gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2h0dHAvdHJhbnNmZXIvZGF0YS10cmFuc2Zlci1zdGF0dXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbGRlci1kYXRhLXRyYW5zZmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2h0dHAtZGF0YS10cmFuc2Zlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2h0dHAtZGF0YS10cmFuc2Zlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBIdHRwRGF0YVRyYW5zZmVyQ29tcG9uZW50IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG4gIHByaXZhdGUgX3RyYW5zZmVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SHR0cERhdGFUcmFuc2Zlcj4obnVsbCk7XG5cbiAgcHVibGljIHJlYWRvbmx5ICRzdGF0ZTogT2JzZXJ2YWJsZTxEYXRhVHJhbnNmZXJTdGF0ZT47XG4gIHB1YmxpYyByZWFkb25seSAkZGV0YWlsOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy4kc3RhdGUgPSB0aGlzLl90cmFuc2ZlciQucGlwZShcbiAgICAgIGZpbHRlcih0cmFuc2ZlciA9PiAhIXRyYW5zZmVyKSxcbiAgICAgIHN3aXRjaE1hcCh0cmFuc2ZlciA9PiB0cmFuc2Zlci5zdGF0ZSQpXG4gICAgKTtcbiAgICB0aGlzLiRkZXRhaWwgPSB0aGlzLiRzdGF0ZS5waXBlKFxuICAgICAgbWFwKHN0YXRlID0+IHRoaXMucmVuZGVyVHJhbnNmZXJQcm9ncmVzcyhzdGF0ZSkpLFxuICAgICAgLy8gdGFwKG1lc3NhZ2UgPT4gdGhpcy5sb2dnZXIuaW5mbyhtZXNzYWdlKSlcbiAgICApO1xuICB9XG5cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZ2V0IHRyYW5zZmVyKCk6IEh0dHBEYXRhVHJhbnNmZXIge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2ZlciQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdHJhbnNmZXIodmFsdWU6IEh0dHBEYXRhVHJhbnNmZXIpIHtcbiAgICB0aGlzLl90cmFuc2ZlciQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgc3RhdHVzSWNvbihzdGF0ZTogRGF0YVRyYW5zZmVyU3RhdGUpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAoc3RhdGUuc3RhdHVzKSB7XG4gICAgICBjYXNlIERhdGFUcmFuc2ZlclN0YXR1cy5QZW5kaW5nOiByZXR1cm4gICdwZW5kaW5nJztcbiAgICAgIGNhc2UgRGF0YVRyYW5zZmVyU3RhdHVzLlRyYW5zZmVycmluZzogcmV0dXJuICAnY2xvdWRfc3luYyc7XG4gICAgICBjYXNlIERhdGFUcmFuc2ZlclN0YXR1cy5Db21wbGV0ZWQ6IHJldHVybiAgJ2NoZWNrJztcbiAgICAgIGNhc2UgRGF0YVRyYW5zZmVyU3RhdHVzLkFib3J0ZWQ6IHJldHVybiAgJ2Jsb2NrJztcbiAgICAgIGNhc2UgRGF0YVRyYW5zZmVyU3RhdHVzLkZhaWxlZDogcmV0dXJuICAnZXJyb3InO1xuICAgICAgZGVmYXVsdDogcmV0dXJuICdoZWxwX291dGxpbmUnXG4gICAgfVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZW5kZXJUcmFuc2ZlclByb2dyZXNzKHN0YXRlOiBEYXRhVHJhbnNmZXJTdGF0ZSk6IHN0cmluZyB7XG4gICAgaWYgKHN0YXRlLmlzQWJvcnRlZCkgeyByZXR1cm4gJ0NhbmNlbGVkLic7IH1cbiAgICBpZiAoc3RhdGUuaGFzRmFpbGVkKSB7IHJldHVybiAnRmFpbGVkISc7IH1cblxuICAgIGNvbnN0IGUgPSBzdGF0ZS5wcm9ncmVzcztcblxuICAgIC8vIDEwME1iIG9mIDMzMk1iICgxMjAwS2Ivc2VjKVxuICAgIGlmIChlLnBlcmNlbnREb25lID09PSAxMDApIHtcbiAgICAgIHJldHVybiBCeXRlc0Zvcm1hdC5mb3JtYXQoZS5kb25lQnl0ZXMpICsgJyggJyArIEJ5dGVzUGVyU2Vjb25kRm9ybWF0LmZvcm1hdEFzQml0c1BlclNlY29uZChlLmF2Z0J5dGVzUGVyU2VjKSArICcpJztcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHByb2dyZXNzID0gQnl0ZXNGb3JtYXQuZm9ybWF0KGUuZG9uZUJ5dGVzKSArICcgb2YgJyArIEJ5dGVzRm9ybWF0LmZvcm1hdChlLnRvdGFsQnl0ZXMpO1xuXG4gICAgICBpZiAoZS5ieXRlc1BlclNlYykge1xuICAgICAgICBwcm9ncmVzcyArPSAnICgnICsgQnl0ZXNQZXJTZWNvbmRGb3JtYXQuZm9ybWF0QXNCaXRzUGVyU2Vjb25kKGUuYnl0ZXNQZXJTZWMpICsgJyknO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb2dyZXNzO1xuICAgIH1cbiAgfVxuXG59XG4iLCJcblxuPGRpdiAqbmdJZj1cIigkc3RhdGUgfCBhc3luYykgYXMgc3RhdGVcIlxuICBjbGFzcz1cImxheW91dC1yb3cgcGxhY2Utc3RhcnQtY2VudGVyIGdhcC1sZyBmbGV4IHAtbWQgdHJhbnNmZXJcIlxuPlxuXG4gIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sIHBsYWNlLWNlbnRlci1jZW50ZXIgZmxleC0xMFwiPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cIm5vc2VsZWN0XCI+XG4gICAgICB7e3N0YXR1c0ljb24oc3RhdGUpfX1cbiAgICA8L21hdC1pY29uPlxuXG4gICAgPCEtLVxuICAgIDxtYXQtaWNvblxuICAgICAgKm5nSWY9XCIhKHN0YXR1c09mKGZpbGUpPy5lcnJvciB8IGFzeW5jKSAmJiAoc3RhdHVzT2YoZmlsZSk/LnByb2dyZXNzIHwgYXN5bmMpID09PSAxMDBcIlxuICAgICAgY2xhc3M9XCJncmVlbi1pY29uXCJcbiAgICA+Y2hlY2s8L21hdC1pY29uPlxuICAgIC0tPlxuXG4gIDwvZGl2PlxuXG5cbiAgPGRpdiBjbGFzcz1cImxheW91dC1jb2wgZmxleC04MFwiIHN0eWxlPVwib3ZlcmZsb3c6IGhpZGRlblwiPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJtYXQtc3VidGl0bGUtMiBub3NlbGVjdCB0aXRsZVwiPnt7dHJhbnNmZXIubmFtZX19PC9zcGFuPlxuXG4gICAgPG1hdC1wcm9ncmVzcy1iYXJcbiAgICAgIFttYXRUb29sdGlwXT1cInN0YXRlLmVycm9yPy5tZXNzYWdlXCJcbiAgICAgIFtjb2xvcl09XCIoc3RhdGUuZXJyb3IgPyAnd2FybicgOiAnJylcIlxuICAgICAgbW9kZT1cImRldGVybWluYXRlXCJcbiAgICAgIFt2YWx1ZV09XCJzdGF0ZS5wcm9ncmVzcy5wZXJjZW50RG9uZVwiXG4gICAgPjwvbWF0LXByb2dyZXNzLWJhcj5cblxuICAgIDxzcGFuIGNsYXNzPVwibWF0LWNhcHRpb24gbm9zZWxlY3RcIj57eygkZGV0YWlsIHwgYXN5bmMpfX08L3NwYW4+XG5cbiAgPC9kaXY+XG5cblxuICA8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbCBwbGFjZS1jZW50ZXItY2VudGVyIGZsZXgtMTBcIj5cbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmFuc2Zlci5hYm9ydCgpXCIgW2Rpc2FibGVkXT1cInN0YXRlLmlzRG9uZVwiPlxuICAgICAgPG1hdC1pY29uPlxuICAgICAgICBjbG9zZVxuICAgICAgPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuIl19
@@ -14,13 +14,6 @@ export class HttpDataTransferOverviewComponent {
14
14
  **************************************************************************/
15
15
  constructor(transferService) {
16
16
  this.transferService = transferService;
17
- }
18
- /***************************************************************************
19
- * *
20
- * Life Cycle *
21
- * *
22
- **************************************************************************/
23
- ngOnInit() {
24
17
  this.transfers$ = this.transferService.transfers;
25
18
  }
26
19
  }
@@ -30,4 +23,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImpor
30
23
  type: Component,
31
24
  args: [{ selector: 'elder-data-transfer-overview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card appearance=\"raised\" class=\"layout-col full\">\n\n <div class=\"layout-col flex\" *ngIf=\"transfers$ | async as transfers\">\n\n <div *ngIf=\"transfers.length > 0 else noData\" class=\"layout-col flex scroll-list\">\n <elder-data-transfer class=\"flex-none\"\n *ngFor=\"let transfer of transfers\"\n [transfer]=\"transfer\">\n </elder-data-transfer>\n </div>\n\n <ng-template #noData>\n <div class=\"layout-col place-center-center flex\">\n <span class=\"mat-subtitle-2 noselect\" style=\"color: gray\">No data transfers.</span>\n </div>\n </ng-template>\n\n </div>\n\n\n <mat-toolbar class=\"flex-none mat-elevation-z5\">\n <elder-data-transfer-aggregate class=\"flex\" [hiddenWhenInactive]=\"false\"></elder-data-transfer-aggregate>\n </mat-toolbar>\n</mat-card>\n", styles: [":host{min-width:0;min-height:0}.scroll-list{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.scroll-fix{min-width:0;min-height:0}\n"] }]
32
25
  }], ctorParameters: function () { return [{ type: i1.ElderDataTransferService }]; } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1kYXRhLXRyYW5zZmVyLW92ZXJ2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS10cmFuc2Zlci9odHRwLWRhdGEtdHJhbnNmZXItb3ZlcnZpZXcvaHR0cC1kYXRhLXRyYW5zZmVyLW92ZXJ2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS10cmFuc2Zlci9odHRwLWRhdGEtdHJhbnNmZXItb3ZlcnZpZXcvaHR0cC1kYXRhLXRyYW5zZmVyLW92ZXJ2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBV3pFLE1BQU0sT0FBTyxpQ0FBaUM7SUFVNUM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ1UsZUFBeUM7UUFBekMsb0JBQWUsR0FBZixlQUFlLENBQTBCO0lBQy9DLENBQUM7SUFFTDs7OztnRkFJNEU7SUFFckUsUUFBUTtRQUNiLElBQUksQ0FBQyxVQUFVLEdBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7SUFDcEQsQ0FBQzs7OEhBNUJVLGlDQUFpQztrSEFBakMsaUNBQWlDLG9FQ1g5QywwMkJBd0JBOzJGRGJhLGlDQUFpQztrQkFON0MsU0FBUzsrQkFDRSw4QkFBOEIsbUJBR3ZCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtFbGRlckRhdGFUcmFuc2ZlclNlcnZpY2V9IGZyb20gJy4uL2VsZGVyLWRhdGEtdHJhbnNmZXIuc2VydmljZSc7XG5pbXBvcnQge0h0dHBEYXRhVHJhbnNmZXJ9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9odHRwL3RyYW5zZmVyL2h0dHAtZGF0YS10cmFuc2Zlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLWRhdGEtdHJhbnNmZXItb3ZlcnZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vaHR0cC1kYXRhLXRyYW5zZmVyLW92ZXJ2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaHR0cC1kYXRhLXRyYW5zZmVyLW92ZXJ2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEh0dHBEYXRhVHJhbnNmZXJPdmVydmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHRyYW5zZmVycyQ6IE9ic2VydmFibGU8SHR0cERhdGFUcmFuc2ZlcltdPjtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRyYW5zZmVyU2VydmljZTogRWxkZXJEYXRhVHJhbnNmZXJTZXJ2aWNlXG4gICkgeyB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNmZXJzJCA9ICB0aGlzLnRyYW5zZmVyU2VydmljZS50cmFuc2ZlcnM7XG4gIH1cbn1cbiIsIjxtYXQtY2FyZCBhcHBlYXJhbmNlPVwicmFpc2VkXCIgY2xhc3M9XCJsYXlvdXQtY29sIGZ1bGxcIj5cblxuICA8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbCBmbGV4XCIgKm5nSWY9XCJ0cmFuc2ZlcnMkIHwgYXN5bmMgYXMgdHJhbnNmZXJzXCI+XG5cbiAgICA8ZGl2ICpuZ0lmPVwidHJhbnNmZXJzLmxlbmd0aCA+IDAgZWxzZSBub0RhdGFcIiBjbGFzcz1cImxheW91dC1jb2wgZmxleCBzY3JvbGwtbGlzdFwiPlxuICAgICAgPGVsZGVyLWRhdGEtdHJhbnNmZXIgY2xhc3M9XCJmbGV4LW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0cmFuc2ZlciBvZiB0cmFuc2ZlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc2Zlcl09XCJ0cmFuc2ZlclwiPlxuICAgICAgPC9lbGRlci1kYXRhLXRyYW5zZmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLXRlbXBsYXRlICNub0RhdGE+XG4gICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbCBwbGFjZS1jZW50ZXItY2VudGVyIGZsZXhcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtc3VidGl0bGUtMiBub3NlbGVjdFwiIHN0eWxlPVwiY29sb3I6IGdyYXlcIj5ObyBkYXRhIHRyYW5zZmVycy48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gIDwvZGl2PlxuXG5cbiAgPG1hdC10b29sYmFyIGNsYXNzPVwiZmxleC1ub25lIG1hdC1lbGV2YXRpb24tejVcIj5cbiAgICA8ZWxkZXItZGF0YS10cmFuc2Zlci1hZ2dyZWdhdGUgY2xhc3M9XCJmbGV4XCIgW2hpZGRlbldoZW5JbmFjdGl2ZV09XCJmYWxzZVwiPjwvZWxkZXItZGF0YS10cmFuc2Zlci1hZ2dyZWdhdGU+XG4gIDwvbWF0LXRvb2xiYXI+XG48L21hdC1jYXJkPlxuIl19
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1kYXRhLXRyYW5zZmVyLW92ZXJ2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS10cmFuc2Zlci9odHRwLWRhdGEtdHJhbnNmZXItb3ZlcnZpZXcvaHR0cC1kYXRhLXRyYW5zZmVyLW92ZXJ2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS10cmFuc2Zlci9odHRwLWRhdGEtdHJhbnNmZXItb3ZlcnZpZXcvaHR0cC1kYXRhLXRyYW5zZmVyLW92ZXJ2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBV3pFLE1BQU0sT0FBTyxpQ0FBaUM7SUFVNUM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ1UsZUFBeUM7UUFBekMsb0JBQWUsR0FBZixlQUFlLENBQTBCO1FBRWpELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7SUFDbkQsQ0FBQzs7OEhBcEJVLGlDQUFpQztrSEFBakMsaUNBQWlDLG9FQ1g5QywwMkJBd0JBOzJGRGJhLGlDQUFpQztrQkFON0MsU0FBUzsrQkFDRSw4QkFBOEIsbUJBR3ZCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtFbGRlckRhdGFUcmFuc2ZlclNlcnZpY2V9IGZyb20gJy4uL2VsZGVyLWRhdGEtdHJhbnNmZXIuc2VydmljZSc7XG5pbXBvcnQge0h0dHBEYXRhVHJhbnNmZXJ9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9odHRwL3RyYW5zZmVyL2h0dHAtZGF0YS10cmFuc2Zlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLWRhdGEtdHJhbnNmZXItb3ZlcnZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vaHR0cC1kYXRhLXRyYW5zZmVyLW92ZXJ2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaHR0cC1kYXRhLXRyYW5zZmVyLW92ZXJ2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEh0dHBEYXRhVHJhbnNmZXJPdmVydmlld0NvbXBvbmVudCB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHJlYWRvbmx5IHRyYW5zZmVycyQ6IE9ic2VydmFibGU8SHR0cERhdGFUcmFuc2ZlcltdPjtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRyYW5zZmVyU2VydmljZTogRWxkZXJEYXRhVHJhbnNmZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMudHJhbnNmZXJzJCA9IHRoaXMudHJhbnNmZXJTZXJ2aWNlLnRyYW5zZmVycztcbiAgfVxufVxuIiwiPG1hdC1jYXJkIGFwcGVhcmFuY2U9XCJyYWlzZWRcIiBjbGFzcz1cImxheW91dC1jb2wgZnVsbFwiPlxuXG4gIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sIGZsZXhcIiAqbmdJZj1cInRyYW5zZmVycyQgfCBhc3luYyBhcyB0cmFuc2ZlcnNcIj5cblxuICAgIDxkaXYgKm5nSWY9XCJ0cmFuc2ZlcnMubGVuZ3RoID4gMCBlbHNlIG5vRGF0YVwiIGNsYXNzPVwibGF5b3V0LWNvbCBmbGV4IHNjcm9sbC1saXN0XCI+XG4gICAgICA8ZWxkZXItZGF0YS10cmFuc2ZlciBjbGFzcz1cImZsZXgtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRyYW5zZmVyIG9mIHRyYW5zZmVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zZmVyXT1cInRyYW5zZmVyXCI+XG4gICAgICA8L2VsZGVyLWRhdGEtdHJhbnNmZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctdGVtcGxhdGUgI25vRGF0YT5cbiAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sIHBsYWNlLWNlbnRlci1jZW50ZXIgZmxleFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1zdWJ0aXRsZS0yIG5vc2VsZWN0XCIgc3R5bGU9XCJjb2xvcjogZ3JheVwiPk5vIGRhdGEgdHJhbnNmZXJzLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgPC9kaXY+XG5cblxuICA8bWF0LXRvb2xiYXIgY2xhc3M9XCJmbGV4LW5vbmUgbWF0LWVsZXZhdGlvbi16NVwiPlxuICAgIDxlbGRlci1kYXRhLXRyYW5zZmVyLWFnZ3JlZ2F0ZSBjbGFzcz1cImZsZXhcIiBbaGlkZGVuV2hlbkluYWN0aXZlXT1cImZhbHNlXCI+PC9lbGRlci1kYXRhLXRyYW5zZmVyLWFnZ3JlZ2F0ZT5cbiAgPC9tYXQtdG9vbGJhcj5cbjwvbWF0LWNhcmQ+XG4iXX0=
@@ -81,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImpor
81
81
  }], windowOpenIn: [{
82
82
  type: Input
83
83
  }] } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItdXJsLWZyYWdtZW50LXN3aXRjaGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvdXJsLWZyYWdtZW50L3VybC1mcmFnbWVudC1zd2l0Y2hlci9lbGRlci11cmwtZnJhZ21lbnQtc3dpdGNoZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy91cmwtZnJhZ21lbnQvdXJsLWZyYWdtZW50LXN3aXRjaGVyL2VsZGVyLXVybC1mcmFnbWVudC1zd2l0Y2hlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFDLGVBQWUsRUFBaUIsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFRdkQsTUFBTSxPQUFPLGlDQUFpQztJQXdDNUM7Ozs7Z0ZBSTRFO0lBQzVFO1FBMUNpQixXQUFNLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBRXZGOzs7O29GQUk0RTtRQUU1RCxZQUFPLEdBQVksSUFBSSxDQUFDO1FBT3hDOztXQUVHO1FBRUksYUFBUSxHQUFXLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBUTVDLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBRW5DOztXQUVHO1FBRUksaUJBQVksR0FBVyxPQUFPLENBQUM7UUFFdEIsdUJBQWtCLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQVMvRixDQUFDO0lBR0Q7Ozs7Z0ZBSTRFO0lBRTVFLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDdEMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ0YsSUFBSTtvQkFDRixPQUFPLENBQUMsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7aUJBQ3RGO2dCQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNWLE9BQU8sS0FBSyxDQUFDO2lCQUNkO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxJQUFJLFdBQVcsRUFBRTtnQkFDZixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQzNDO1NBQ0Y7SUFFSCxDQUFDO0lBR0Q7Ozs7Z0ZBSTRFO0lBRXJFLG9CQUFvQixDQUFDLFdBQW1CO1FBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQ1QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUN6RyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdkIsQ0FBQzs7OEhBckZVLGlDQUFpQztrSEFBakMsaUNBQWlDLHlOQ2I5QyxvZ0NBeUJBOzJGRFphLGlDQUFpQztrQkFON0MsU0FBUzsrQkFDRSw2QkFBNkIsbUJBR3RCLHVCQUF1QixDQUFDLE1BQU07MEVBYS9CLE9BQU87c0JBRHRCLEtBQUs7Z0JBT0MsWUFBWTtzQkFEbEIsS0FBSztnQkFNQyxRQUFRO3NCQURkLEtBQUs7Z0JBU0MsZUFBZTtzQkFOckIsS0FBSzs7c0JBS0wsS0FBSztnQkFPQyxZQUFZO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBVcmxTZWdtZW50fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBmaXJzdCwgZmxhdE1hcCwgbWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RWxkZXJVcmxGcmFnbWVudH0gZnJvbSAnLi4vZWxkZXItdXJsLWZyYWdtZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWxkZXItdXJsLWZyYWdtZW50LXN3aXRjaGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLXVybC1mcmFnbWVudC1zd2l0Y2hlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZGVyLXVybC1mcmFnbWVudC1zd2l0Y2hlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBFbGRlclVybEZyYWdtZW50U3dpdGNoZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRWxkZXJVcmxGcmFnbWVudFN3aXRjaGVyQ29tcG9uZW50Jyk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBkaXNhYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKlxuICAgIExpc3Qgb2YgdXJsIGZyYWdtZW50cyB3aGljaCBjYW4gcmVwbGFjZSBhIHBhcnQgb2YgdGhlIHdpbmRvdyBsb2NhdGlvblxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHVybEZyYWdtZW50czogRWxkZXJVcmxGcmFnbWVudFtdO1xuICAvKlxuICBSZWdleCB3aGljaCBtYXRjaGVzIHRoZSBwYXJ0IG9mIHRoZSB1cmwgd2hpY2ggd2lsbCBnZXQgcmVwbGFjZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB1cmxSZWdleDogUmVnRXhwID0gbmV3IFJlZ0V4cCgnW1xcLl0oXFxcXHcrKScpO1xuXG4gIEBJbnB1dCgpXG5cbiAgLypcbiAgSW5kZXggb2YgdGhlIHJlZ2V4IGdyb3VwIHdoaWNoIHdpbGwgYmUgcmVwbGFjZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWdleEFycmF5SW5kZXg6IG51bWJlciA9IDA7XG5cbiAgLypcbiAgV2luZG93IHdoaWNoIHdpbGwgb3BlbiB0aGUgY3JlYXRlZCB1cmxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB3aW5kb3dPcGVuSW46IHN0cmluZyA9IFwiX3NlbGZcIjtcblxuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlVXJsRnJhZ21lbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChuZXcgRWxkZXJVcmxGcmFnbWVudCgnTm8gbWF0Y2gnLCAnJykpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuICBjb25zdHJ1Y3RvcigpIHtcblxuICB9XG5cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZSkge1xuICAgICAgbGV0IHVybEZyYWdtZW50ID0gdGhpcy51cmxGcmFnbWVudHMuZmluZChcbiAgICAgICAgYyA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBjLmZyYWdtZW50ID09PSB0aGlzLnVybFJlZ2V4LmV4ZWMod2luZG93LmxvY2F0aW9uLmhyZWYpW3RoaXMucmVnZXhBcnJheUluZGV4XTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIGlmICh1cmxGcmFnbWVudCkge1xuICAgICAgICB0aGlzLmFjdGl2ZVVybEZyYWdtZW50JC5uZXh0KHVybEZyYWdtZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHNldEFjdGl2ZVVybEZyYWdtZW50KHVybEZyYWdtZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1Zyh1cmxGcmFnbWVudCk7XG4gICAgd2luZG93Lm9wZW4oXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZi5yZXBsYWNlKHRoaXMudXJsUmVnZXguZXhlYyh3aW5kb3cubG9jYXRpb24uaHJlZilbdGhpcy5yZWdleEFycmF5SW5kZXhdLCB1cmxGcmFnbWVudCksXG4gICAgICB0aGlzLndpbmRvd09wZW5Jbik7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVVybEZyYWdtZW50JCB8IGFzeW5jIGFzIGFjdGl2ZVVybEZyYWdtZW50XCI+XG4gIDxlbGRlci1idXR0b24tZ3JvdXA+XG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGRpc2FibGVkIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6IGFjdGl2ZVVybEZyYWdtZW50LmNvbG9yfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1jb2xcIj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhZGlzYWJsZVwiIGNsYXNzPVwiY2FwdGlvblwiPnt7YWN0aXZlVXJsRnJhZ21lbnQubmFtZX19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWRpc2FibGUgXCIgIFttYXRNZW51VHJpZ2dlckZvcl09XCJmcmFnbWVudE1lbnVcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWNvbG9yJzogYWN0aXZlVXJsRnJhZ21lbnQuY29sb3J9XCI+XG4gICAgICA8bWF0LWljb24+ZmxpcF9jYW1lcmFfYW5kcm9pZDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZWxkZXItYnV0dG9uLWdyb3VwPlxuPC9uZy1jb250YWluZXI+XG5cbjxtYXQtbWVudSAjZnJhZ21lbnRNZW51PVwibWF0TWVudVwiPlxuICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHVybEZyYWdtZW50IG9mIHVybEZyYWdtZW50c1wiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZVVybEZyYWdtZW50KHVybEZyYWdtZW50LmZyYWdtZW50KVwiPlxuICAgIDxtYXQtaWNvbiBbbmdTdHlsZV09XCJ7J2NvbG9yJzogdXJsRnJhZ21lbnQuY29sb3J9XCI+ZmxpcF9jYW1lcmFfYW5kcm9pZDwvbWF0LWljb24+XG4gICAgPHNwYW4+e3sgIHVybEZyYWdtZW50Lm5hbWUgfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuXG48L21hdC1tZW51PlxuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItdXJsLWZyYWdtZW50LXN3aXRjaGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvdXJsLWZyYWdtZW50L3VybC1mcmFnbWVudC1zd2l0Y2hlci9lbGRlci11cmwtZnJhZ21lbnQtc3dpdGNoZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy91cmwtZnJhZ21lbnQvdXJsLWZyYWdtZW50LXN3aXRjaGVyL2VsZGVyLXVybC1mcmFnbWVudC1zd2l0Y2hlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztBQVF2RCxNQUFNLE9BQU8saUNBQWlDO0lBd0M1Qzs7OztnRkFJNEU7SUFDNUU7UUExQ2lCLFdBQU0sR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFFdkY7Ozs7b0ZBSTRFO1FBRTVELFlBQU8sR0FBWSxJQUFJLENBQUM7UUFPeEM7O1dBRUc7UUFFSSxhQUFRLEdBQVcsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFRNUMsb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFFbkM7O1dBRUc7UUFFSSxpQkFBWSxHQUFXLE9BQU8sQ0FBQztRQUV0Qix1QkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBUy9GLENBQUM7SUFHRDs7OztnRkFJNEU7SUFFNUUsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUN0QyxDQUFDLENBQUMsRUFBRTtnQkFDRixJQUFJO29CQUNGLE9BQU8sQ0FBQyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztpQkFDdEY7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1YsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLElBQUksV0FBVyxFQUFFO2dCQUNmLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDM0M7U0FDRjtJQUVILENBQUM7SUFHRDs7OztnRkFJNEU7SUFFckUsb0JBQW9CLENBQUMsV0FBbUI7UUFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0IsTUFBTSxDQUFDLElBQUksQ0FDVCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQ3pHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2QixDQUFDOzs4SEFyRlUsaUNBQWlDO2tIQUFqQyxpQ0FBaUMseU5DWDlDLG9nQ0F5QkE7MkZEZGEsaUNBQWlDO2tCQU43QyxTQUFTOytCQUNFLDZCQUE2QixtQkFHdEIsdUJBQXVCLENBQUMsTUFBTTswRUFhL0IsT0FBTztzQkFEdEIsS0FBSztnQkFPQyxZQUFZO3NCQURsQixLQUFLO2dCQU1DLFFBQVE7c0JBRGQsS0FBSztnQkFTQyxlQUFlO3NCQU5yQixLQUFLOztzQkFLTCxLQUFLO2dCQU9DLFlBQVk7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0VsZGVyVXJsRnJhZ21lbnR9IGZyb20gJy4uL2VsZGVyLXVybC1mcmFnbWVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLXVybC1mcmFnbWVudC1zd2l0Y2hlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbGRlci11cmwtZnJhZ21lbnQtc3dpdGNoZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbGRlci11cmwtZnJhZ21lbnQtc3dpdGNoZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJVcmxGcmFnbWVudFN3aXRjaGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0VsZGVyVXJsRnJhZ21lbnRTd2l0Y2hlckNvbXBvbmVudCcpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgLypcbiAgICBMaXN0IG9mIHVybCBmcmFnbWVudHMgd2hpY2ggY2FuIHJlcGxhY2UgYSBwYXJ0IG9mIHRoZSB3aW5kb3cgbG9jYXRpb25cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB1cmxGcmFnbWVudHM6IEVsZGVyVXJsRnJhZ21lbnRbXTtcbiAgLypcbiAgUmVnZXggd2hpY2ggbWF0Y2hlcyB0aGUgcGFydCBvZiB0aGUgdXJsIHdoaWNoIHdpbGwgZ2V0IHJlcGxhY2VkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdXJsUmVnZXg6IFJlZ0V4cCA9IG5ldyBSZWdFeHAoJ1tcXC5dKFxcXFx3KyknKTtcblxuICBASW5wdXQoKVxuXG4gIC8qXG4gIEluZGV4IG9mIHRoZSByZWdleCBncm91cCB3aGljaCB3aWxsIGJlIHJlcGxhY2VkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcmVnZXhBcnJheUluZGV4OiBudW1iZXIgPSAwO1xuXG4gIC8qXG4gIFdpbmRvdyB3aGljaCB3aWxsIG9wZW4gdGhlIGNyZWF0ZWQgdXJsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgd2luZG93T3BlbkluOiBzdHJpbmcgPSBcIl9zZWxmXCI7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZVVybEZyYWdtZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3QobmV3IEVsZGVyVXJsRnJhZ21lbnQoJ05vIG1hdGNoJywgJycpKTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgY29uc3RydWN0b3IoKSB7XG5cbiAgfVxuXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGUpIHtcbiAgICAgIGxldCB1cmxGcmFnbWVudCA9IHRoaXMudXJsRnJhZ21lbnRzLmZpbmQoXG4gICAgICAgIGMgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gYy5mcmFnbWVudCA9PT0gdGhpcy51cmxSZWdleC5leGVjKHdpbmRvdy5sb2NhdGlvbi5ocmVmKVt0aGlzLnJlZ2V4QXJyYXlJbmRleF07XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICBpZiAodXJsRnJhZ21lbnQpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVVcmxGcmFnbWVudCQubmV4dCh1cmxGcmFnbWVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBzZXRBY3RpdmVVcmxGcmFnbWVudCh1cmxGcmFnbWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcodXJsRnJhZ21lbnQpO1xuICAgIHdpbmRvdy5vcGVuKFxuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYucmVwbGFjZSh0aGlzLnVybFJlZ2V4LmV4ZWMod2luZG93LmxvY2F0aW9uLmhyZWYpW3RoaXMucmVnZXhBcnJheUluZGV4XSwgdXJsRnJhZ21lbnQpLFxuICAgICAgdGhpcy53aW5kb3dPcGVuSW4pO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVVcmxGcmFnbWVudCQgfCBhc3luYyBhcyBhY3RpdmVVcmxGcmFnbWVudFwiPlxuICA8ZWxkZXItYnV0dG9uLWdyb3VwPlxuICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBkaXNhYmxlZCBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQtY29sb3InOiBhY3RpdmVVcmxGcmFnbWVudC5jb2xvcn1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sXCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWRpc2FibGVcIiBjbGFzcz1cImNhcHRpb25cIj57e2FjdGl2ZVVybEZyYWdtZW50Lm5hbWV9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAqbmdJZj1cIiFkaXNhYmxlIFwiICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZnJhZ21lbnRNZW51XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6IGFjdGl2ZVVybEZyYWdtZW50LmNvbG9yfVwiPlxuICAgICAgPG1hdC1pY29uPmZsaXBfY2FtZXJhX2FuZHJvaWQ8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2VsZGVyLWJ1dHRvbi1ncm91cD5cbjwvbmctY29udGFpbmVyPlxuXG48bWF0LW1lbnUgI2ZyYWdtZW50TWVudT1cIm1hdE1lbnVcIj5cbiAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCB1cmxGcmFnbWVudCBvZiB1cmxGcmFnbWVudHNcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRBY3RpdmVVcmxGcmFnbWVudCh1cmxGcmFnbWVudC5mcmFnbWVudClcIj5cbiAgICA8bWF0LWljb24gW25nU3R5bGVdPVwieydjb2xvcic6IHVybEZyYWdtZW50LmNvbG9yfVwiPmZsaXBfY2FtZXJhX2FuZHJvaWQ8L21hdC1pY29uPlxuICAgIDxzcGFuPnt7ICB1cmxGcmFnbWVudC5uYW1lIH19PC9zcGFuPlxuICA8L2J1dHRvbj5cblxuPC9tYXQtbWVudT5cbiJdfQ==
@@ -21201,7 +21201,10 @@ class HttpDataTransferComponent {
21201
21201
  * Fields *
21202
21202
  * *
21203
21203
  **************************************************************************/
21204
- this.logger = LoggerFactory.getLogger('HttpDataTransferComponent');
21204
+ this.logger = LoggerFactory.getLogger(this.constructor.name);
21205
+ this._transfer$ = new BehaviorSubject(null);
21206
+ this.$state = this._transfer$.pipe(filter(transfer => !!transfer), switchMap$1(transfer => transfer.state$));
21207
+ this.$detail = this.$state.pipe(map(state => this.renderTransferProgress(state)));
21205
21208
  }
21206
21209
  /***************************************************************************
21207
21210
  * *
@@ -21209,38 +21212,57 @@ class HttpDataTransferComponent {
21209
21212
  * *
21210
21213
  **************************************************************************/
21211
21214
  get transfer() {
21212
- return this._transfer;
21215
+ return this._transfer$.getValue();
21213
21216
  }
21214
21217
  set transfer(value) {
21215
- this._transfer = value;
21216
- this.$state = value.state$;
21217
- this.$detail = value.state$.pipe(map(state => {
21218
- if (state.isAborted) {
21219
- return 'Canceled.';
21220
- }
21221
- if (state.hasFailed) {
21222
- return 'Failed!';
21223
- }
21224
- const e = state.progress;
21225
- // 100Mb of 332Mb (1200Kb/sec)
21226
- if (e.percentDone === 100) {
21227
- return BytesFormat.format(e.doneBytes) + '( ' + BytesPerSecondFormat.formatAsBitsPerSecond(e.avgBytesPerSec) + ')';
21228
- }
21229
- else {
21230
- let progress = BytesFormat.format(e.doneBytes) + ' of ' + BytesFormat.format(e.totalBytes);
21231
- if (e.bytesPerSec) {
21232
- progress += ' (' + BytesPerSecondFormat.formatAsBitsPerSecond(e.bytesPerSec) + ')';
21233
- }
21234
- return progress;
21218
+ this._transfer$.next(value);
21219
+ }
21220
+ /***************************************************************************
21221
+ * *
21222
+ * Public API *
21223
+ * *
21224
+ **************************************************************************/
21225
+ statusIcon(state) {
21226
+ switch (state.status) {
21227
+ case DataTransferStatus.Pending: return 'pending';
21228
+ case DataTransferStatus.Transferring: return 'cloud_sync';
21229
+ case DataTransferStatus.Completed: return 'check';
21230
+ case DataTransferStatus.Aborted: return 'block';
21231
+ case DataTransferStatus.Failed: return 'error';
21232
+ default: return 'help_outline';
21233
+ }
21234
+ }
21235
+ /***************************************************************************
21236
+ * *
21237
+ * Private methods *
21238
+ * *
21239
+ **************************************************************************/
21240
+ renderTransferProgress(state) {
21241
+ if (state.isAborted) {
21242
+ return 'Canceled.';
21243
+ }
21244
+ if (state.hasFailed) {
21245
+ return 'Failed!';
21246
+ }
21247
+ const e = state.progress;
21248
+ // 100Mb of 332Mb (1200Kb/sec)
21249
+ if (e.percentDone === 100) {
21250
+ return BytesFormat.format(e.doneBytes) + '( ' + BytesPerSecondFormat.formatAsBitsPerSecond(e.avgBytesPerSec) + ')';
21251
+ }
21252
+ else {
21253
+ let progress = BytesFormat.format(e.doneBytes) + ' of ' + BytesFormat.format(e.totalBytes);
21254
+ if (e.bytesPerSec) {
21255
+ progress += ' (' + BytesPerSecondFormat.formatAsBitsPerSecond(e.bytesPerSec) + ')';
21235
21256
  }
21236
- }));
21257
+ return progress;
21258
+ }
21237
21259
  }
21238
21260
  }
21239
21261
  HttpDataTransferComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: HttpDataTransferComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21240
- HttpDataTransferComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: HttpDataTransferComponent, selector: "elder-data-transfer", inputs: { transfer: "transfer" }, ngImport: i0, template: "\n\n<div *ngIf=\"($state | async) as state\"\n class=\"layout-row place-start-center gap-lg flex p-md transfer\"\n>\n\n <div class=\"layout-col place-center-center flex-10\">\n <mat-icon class=\"noselect\">\n {{state.isCompleted ? 'check' : 'attachment'}}\n </mat-icon>\n\n <!--\n <mat-icon\n *ngIf=\"!(statusOf(file)?.error | async) && (statusOf(file)?.progress | async) === 100\"\n class=\"green-icon\"\n >check</mat-icon>\n -->\n\n </div>\n\n\n <div class=\"layout-col flex-80\" style=\"overflow: hidden\">\n\n <span class=\"mat-subtitle-2 noselect title\">{{transfer.name}}</span>\n\n <mat-progress-bar\n [matTooltip]=\"state.error?.message\"\n [color]=\"(state.error ? 'warn' : '')\"\n mode=\"determinate\"\n [value]=\"state.progress.percentDone\"\n ></mat-progress-bar>\n\n <span class=\"mat-caption noselect\">{{($detail | async)}}</span>\n\n </div>\n\n\n <div class=\"layout-col place-center-center flex-10\">\n <button mat-icon-button type=\"button\"\n (click)=\"transfer.abort()\" [disabled]=\"state.isDone\">\n <mat-icon>\n close\n </mat-icon>\n </button>\n </div>\n\n</div>\n", styles: [".transfer{overflow:hidden}.title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-bottom:5px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i4$6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21262
+ HttpDataTransferComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: HttpDataTransferComponent, selector: "elder-data-transfer", inputs: { transfer: "transfer" }, ngImport: i0, template: "\n\n<div *ngIf=\"($state | async) as state\"\n class=\"layout-row place-start-center gap-lg flex p-md transfer\"\n>\n\n <div class=\"layout-col place-center-center flex-10\">\n <mat-icon class=\"noselect\">\n {{statusIcon(state)}}\n </mat-icon>\n\n <!--\n <mat-icon\n *ngIf=\"!(statusOf(file)?.error | async) && (statusOf(file)?.progress | async) === 100\"\n class=\"green-icon\"\n >check</mat-icon>\n -->\n\n </div>\n\n\n <div class=\"layout-col flex-80\" style=\"overflow: hidden\">\n\n <span class=\"mat-subtitle-2 noselect title\">{{transfer.name}}</span>\n\n <mat-progress-bar\n [matTooltip]=\"state.error?.message\"\n [color]=\"(state.error ? 'warn' : '')\"\n mode=\"determinate\"\n [value]=\"state.progress.percentDone\"\n ></mat-progress-bar>\n\n <span class=\"mat-caption noselect\">{{($detail | async)}}</span>\n\n </div>\n\n\n <div class=\"layout-col place-center-center flex-10\">\n <button mat-icon-button type=\"button\"\n (click)=\"transfer.abort()\" [disabled]=\"state.isDone\">\n <mat-icon>\n close\n </mat-icon>\n </button>\n </div>\n\n</div>\n", styles: [".transfer{overflow:hidden}.title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-bottom:5px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i4$6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21241
21263
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: HttpDataTransferComponent, decorators: [{
21242
21264
  type: Component,
21243
- args: [{ selector: 'elder-data-transfer', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n\n<div *ngIf=\"($state | async) as state\"\n class=\"layout-row place-start-center gap-lg flex p-md transfer\"\n>\n\n <div class=\"layout-col place-center-center flex-10\">\n <mat-icon class=\"noselect\">\n {{state.isCompleted ? 'check' : 'attachment'}}\n </mat-icon>\n\n <!--\n <mat-icon\n *ngIf=\"!(statusOf(file)?.error | async) && (statusOf(file)?.progress | async) === 100\"\n class=\"green-icon\"\n >check</mat-icon>\n -->\n\n </div>\n\n\n <div class=\"layout-col flex-80\" style=\"overflow: hidden\">\n\n <span class=\"mat-subtitle-2 noselect title\">{{transfer.name}}</span>\n\n <mat-progress-bar\n [matTooltip]=\"state.error?.message\"\n [color]=\"(state.error ? 'warn' : '')\"\n mode=\"determinate\"\n [value]=\"state.progress.percentDone\"\n ></mat-progress-bar>\n\n <span class=\"mat-caption noselect\">{{($detail | async)}}</span>\n\n </div>\n\n\n <div class=\"layout-col place-center-center flex-10\">\n <button mat-icon-button type=\"button\"\n (click)=\"transfer.abort()\" [disabled]=\"state.isDone\">\n <mat-icon>\n close\n </mat-icon>\n </button>\n </div>\n\n</div>\n", styles: [".transfer{overflow:hidden}.title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-bottom:5px}\n"] }]
21265
+ args: [{ selector: 'elder-data-transfer', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n\n<div *ngIf=\"($state | async) as state\"\n class=\"layout-row place-start-center gap-lg flex p-md transfer\"\n>\n\n <div class=\"layout-col place-center-center flex-10\">\n <mat-icon class=\"noselect\">\n {{statusIcon(state)}}\n </mat-icon>\n\n <!--\n <mat-icon\n *ngIf=\"!(statusOf(file)?.error | async) && (statusOf(file)?.progress | async) === 100\"\n class=\"green-icon\"\n >check</mat-icon>\n -->\n\n </div>\n\n\n <div class=\"layout-col flex-80\" style=\"overflow: hidden\">\n\n <span class=\"mat-subtitle-2 noselect title\">{{transfer.name}}</span>\n\n <mat-progress-bar\n [matTooltip]=\"state.error?.message\"\n [color]=\"(state.error ? 'warn' : '')\"\n mode=\"determinate\"\n [value]=\"state.progress.percentDone\"\n ></mat-progress-bar>\n\n <span class=\"mat-caption noselect\">{{($detail | async)}}</span>\n\n </div>\n\n\n <div class=\"layout-col place-center-center flex-10\">\n <button mat-icon-button type=\"button\"\n (click)=\"transfer.abort()\" [disabled]=\"state.isDone\">\n <mat-icon>\n close\n </mat-icon>\n </button>\n </div>\n\n</div>\n", styles: [".transfer{overflow:hidden}.title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-bottom:5px}\n"] }]
21244
21266
  }], ctorParameters: function () { return []; }, propDecorators: { transfer: [{
21245
21267
  type: Input
21246
21268
  }] } });
@@ -21366,13 +21388,6 @@ class HttpDataTransferOverviewComponent {
21366
21388
  **************************************************************************/
21367
21389
  constructor(transferService) {
21368
21390
  this.transferService = transferService;
21369
- }
21370
- /***************************************************************************
21371
- * *
21372
- * Life Cycle *
21373
- * *
21374
- **************************************************************************/
21375
- ngOnInit() {
21376
21391
  this.transfers$ = this.transferService.transfers;
21377
21392
  }
21378
21393
  }