@bizdoc/core 1.8.19 → 1.8.20

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.
@@ -11,13 +11,14 @@ import * as i0 from "@angular/core";
11
11
  import * as i1 from "../../core/router";
12
12
  import * as i2 from "../../core/mailbox.service";
13
13
  import * as i3 from "../widget-ref";
14
- import * as i4 from "@angular/material/table";
15
- import * as i5 from "@angular/material/button";
16
- import * as i6 from "@angular/material/icon";
17
- import * as i7 from "../../core/animated-icon/animated-icon.directive";
18
- import * as i8 from "../../core/popup/tooltip.directive";
19
- import * as i9 from "../../core/pipes/translate.pipe";
20
- import * as i10 from "../../core/pipes/state.pipe";
14
+ import * as i4 from "@angular/material/progress-bar";
15
+ import * as i5 from "@angular/material/table";
16
+ import * as i6 from "@angular/material/button";
17
+ import * as i7 from "@angular/material/icon";
18
+ import * as i8 from "../../core/animated-icon/animated-icon.directive";
19
+ import * as i9 from "../../core/popup/tooltip.directive";
20
+ import * as i10 from "../../core/pipes/translate.pipe";
21
+ import * as i11 from "../../core/pipes/state.pipe";
21
22
  let RecentsWidget = class RecentsWidget {
22
23
  constructor(_router, _service, ref) {
23
24
  this._router = _router;
@@ -45,12 +46,20 @@ let RecentsWidget = class RecentsWidget {
45
46
  this.dataSource = new MatTableDataSource(data);
46
47
  this.loading = false;
47
48
  }
49
+ _navigate(item, extra) {
50
+ this.loading = true;
51
+ this._service.get(item.id).
52
+ subscribe(i => {
53
+ this.loading = false;
54
+ this._router.navigate(['mailbox/i', item.id.encodeId()], Object.assign(Object.assign({}, extra), { state: { item: i } }));
55
+ }, () => this.loading = false);
56
+ }
48
57
  open(item) {
49
- this._router.navigate(['mailbox/i', item.id.encodeId()], { policy: OpenPolicy.Clear });
58
+ this._navigate(item, { policy: OpenPolicy.Clear });
50
59
  }
51
60
  view(item, evt) {
61
+ this._navigate(item, { policy: OpenPolicy.Tab });
52
62
  evt.stopPropagation();
53
- this._router.navigate(['mailbox/i', item.id.encodeId(), 'views'], { policy: OpenPolicy.Tab });
54
63
  }
55
64
  ngOnDestroy() {
56
65
  this._destroy.next();
@@ -58,7 +67,7 @@ let RecentsWidget = class RecentsWidget {
58
67
  }
59
68
  };
60
69
  RecentsWidget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: RecentsWidget, deps: [{ token: i1.RouterImpl }, { token: i2.MailboxService }, { token: i3.WidgetRef }], target: i0.ɵɵFactoryTarget.Component });
61
- RecentsWidget.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.12", type: RecentsWidget, selector: "ng-component", host: { properties: { "style.height": "this.height" } }, ngImport: i0, template: "<table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z0\" @list>\r\n <ng-container matColumnDef=\"number\">\r\n <th mat-header-cell *matHeaderCellDef> {{'Number' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let item\"> <a (click)=\"open(item)\">#{{item.number}}</a> </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"subject\">\r\n <th mat-header-cell *matHeaderCellDef> {{'Subject' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let item\" class=\"text\"> {{item.subject}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"state\">\r\n <th mat-header-cell *matHeaderCellDef> {{'Status' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let item\"> {{item.stateId | state }} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"option\">\r\n <th mat-header-cell *matHeaderCellDef> </th>\r\n <td mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\" matAnimate=\"rotate\"><mat-icon>data_usage</mat-icon></button>\r\n <button mat-icon-button (click)=\"open(item)\" [bizdocTooltip]=\"'Open' | translate\" [attr.aria-label]=\"'Open' | translate\" class=\"tool\"><mat-icon>more_horiz</mat-icon></button>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columns; sticky: true\"></tr>\r\n <tr mat-row @item *matRowDef=\"let row; columns: columns;\"></tr>\r\n</table>\r\n", styles: ["table{width:100%}td.text{text-overflow:ellipsis;max-width:100px;white-space:nowrap;overflow:hidden}:host{overflow:hidden;display:block}:host:hover{overflow-y:auto!important}\n", ":host ::ng-deep tr .tool{opacity:.1}:host ::ng-deep tr:hover .tool{opacity:1}\n"], components: [{ type: i4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }], directives: [{ type: i4.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i4.MatCellDef, selector: "[matCellDef]" }, { type: i4.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i7.MatIconAnimate, selector: "[matAnimate]" }, { type: i8.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }], pipes: { "translate": i9.TranslatePipe, "state": i10.StatePipe }, animations: [
70
+ RecentsWidget.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.12", type: RecentsWidget, selector: "ng-component", host: { properties: { "style.height": "this.height" } }, ngImport: i0, template: "<mat-progress-bar mode=\"indeterminate\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z0\" @list>\r\n <ng-container matColumnDef=\"number\">\r\n <th mat-header-cell *matHeaderCellDef> {{'Number' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let item\"> <a (click)=\"open(item)\">#{{item.number}}</a> </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"subject\">\r\n <th mat-header-cell *matHeaderCellDef> {{'Subject' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let item\" class=\"text\"> {{item.subject}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"state\">\r\n <th mat-header-cell *matHeaderCellDef> {{'Status' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let item\"> {{item.stateId | state }} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"option\">\r\n <th mat-header-cell *matHeaderCellDef> </th>\r\n <td mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\" matAnimate=\"rotate\"><mat-icon>data_usage</mat-icon></button>\r\n <button mat-icon-button (click)=\"open(item)\" [bizdocTooltip]=\"'Open' | translate\" [attr.aria-label]=\"'Open' | translate\" class=\"tool\"><mat-icon>more_horiz</mat-icon></button>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columns; sticky: true\"></tr>\r\n <tr mat-row @item *matRowDef=\"let row; columns: columns;\"></tr>\r\n</table>\r\n", styles: ["table{width:100%}td.text{text-overflow:ellipsis;max-width:100px;white-space:nowrap;overflow:hidden}:host{overflow:hidden;display:block}:host:hover{overflow-y:auto!important}\n", ":host ::ng-deep tr .tool{opacity:.1}:host ::ng-deep tr:hover .tool{opacity:1}\n"], components: [{ type: i4.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "mode", "value", "bufferValue"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i5.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }], directives: [{ type: i5.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5.MatCellDef, selector: "[matCellDef]" }, { type: i5.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i8.MatIconAnimate, selector: "[matAnimate]" }, { type: i9.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i5.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }], pipes: { "translate": i10.TranslatePipe, "state": i11.StatePipe }, animations: [
62
71
  listAnimation,
63
72
  itemAnimation
64
73
  ] });
@@ -83,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImpo
83
92
  type: HostBinding,
84
93
  args: ['style.height']
85
94
  }] } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjZW50cy53aWRnZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2Rhc2hib2FyZC9yZWNlbnRzL3JlY2VudHMud2lkZ2V0LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9kYXNoYm9hcmQvcmVjZW50cy9yZWNlbnRzLndpZGdldC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7O0lBY3pDLGFBQWEsU0FBYixhQUFhO0lBUXhCLFlBQ1UsT0FBbUIsRUFDbkIsUUFBd0IsRUFDaEMsR0FBYztRQUZOLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFSbEMsWUFBTyxHQUFHLElBQUksQ0FBQztRQUdOLFdBQU0sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBSzlDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEQsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1osTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0QsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuQztZQUNELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELE1BQU0sQ0FBQyxJQUFnQjtRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksa0JBQWtCLENBQVcsSUFBSSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQUksQ0FBQyxJQUFjO1FBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFDRCxJQUFJLENBQUMsSUFBYyxFQUFFLEdBQVU7UUFDN0IsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUNGLENBQUE7MkdBMUNZLGFBQWE7K0ZBQWIsYUFBYSw2R0N4QjFCLDgvQ0EyQkEscTJERFpjO1FBQ1YsYUFBYTtRQUNiLGFBQWE7S0FDZDtBQU1VLGFBQWE7SUFKekIsTUFBTSxDQUFDO1FBQ04sUUFBUSxFQUFFLGdCQUFnQjtLQUMzQixDQUFDO0lBQ0YsMkJBQTJCO0dBQ2QsYUFBYSxDQTBDekI7U0ExQ1ksYUFBYTs0RkFBYixhQUFhO2tCQVp6QixTQUFTO21CQUFDO29CQUNULFdBQVcsRUFBRSx1QkFBdUI7b0JBQ3BDLFNBQVMsRUFBRSxDQUFDLHVCQUF1QixFQUFFLHVCQUF1QixDQUFDO29CQUM3RCxVQUFVLEVBQUU7d0JBQ1YsYUFBYTt3QkFDYixhQUFhO3FCQUNkO2lCQUNGO3NKQVNDLE1BQU07c0JBREwsV0FBVzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlJztcclxuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQml6RG9jIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgbGlzdEFuaW1hdGlvbiwgaXRlbUFuaW1hdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IE1haWxib3hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9tYWlsYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXaWRnZXRSZWYgfSBmcm9tICcuLi93aWRnZXQtcmVmJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9wZW5Qb2xpY3kgfSBmcm9tICcuLi8uLi9jb3JlL2NvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBSb3V0ZXJJbXBsIH0gZnJvbSAnLi4vLi4vY29yZS9yb3V0ZXInO1xyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVjZW50cy53aWRnZXQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4uL190YWJsZS53aWRnZXQuc2NzcycsICcuL3JlY2VudHMud2lkZ2V0LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICBsaXN0QW5pbWF0aW9uLFxyXG4gICAgaXRlbUFuaW1hdGlvblxyXG4gIF1cclxufSlcclxuQEJpekRvYyh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtcmVjZW50cydcclxufSlcclxuLyoqIHBlcmZvcm1hbmNlIGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBSZWNlbnRzV2lkZ2V0IGltcGxlbWVudHMgV2lkZ2V0Q29tcG9uZW50PE1haWxJbmZvW10+LCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZGF0YVNvdXJjZTogTWF0VGFibGVEYXRhU291cmNlPE1haWxJbmZvPjtcclxuICBsb2FkaW5nID0gdHJ1ZTtcclxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodCcpXHJcbiAgaGVpZ2h0OiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgc2VhcmNoID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgcmVhZG9ubHkgY29sdW1ucyA9IFsnbnVtYmVyJywgJ3N1YmplY3QnLCAnc3RhdGUnLCAnb3B0aW9uJ107XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlckltcGwsXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBNYWlsYm94U2VydmljZSxcclxuICAgIHJlZjogV2lkZ2V0UmVmKSB7XHJcbiAgICByZWYucmVzaXplLnN1YnNjcmliZShkID0+IHRoaXMuaGVpZ2h0ID0gYCR7ZC5oZWlnaHR9cHhgKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLmNoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLlxyXG4gICAgICBzdWJzY3JpYmUobSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZpbmQoaSA9PiBpLmlkID09PSBtLmlkKTtcclxuICAgICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihpdGVtLCBtKTtcclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhLnJlbW92ZShpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEuc3BsaWNlKDAsIDAsIG0pO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSAnJztcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnNlYXJjaC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpO1xyXG4gIH1cclxuICBvbkJpbmQoZGF0YTogTWFpbEluZm9bXSkge1xyXG4gICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxNYWlsSW5mbz4oZGF0YSk7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcbiAgb3BlbihpdGVtOiBNYWlsSW5mbykge1xyXG4gICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoWydtYWlsYm94L2knLCBpdGVtLmlkLmVuY29kZUlkKCldLCB7IHBvbGljeTogT3BlblBvbGljeS5DbGVhciB9KTtcclxuICB9XHJcbiAgdmlldyhpdGVtOiBNYWlsSW5mbywgZXZ0OiBFdmVudCkge1xyXG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoWydtYWlsYm94L2knLCBpdGVtLmlkLmVuY29kZUlkKCksICd2aWV3cyddLCB7IHBvbGljeTogT3BlblBvbGljeS5UYWIgfSk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbmludGVyZmFjZSBNYWlsSW5mbyB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBmb3JtSWQ6IHN0cmluZztcclxuICBudW1iZXI/OiBzdHJpbmc7XHJcbiAgc3ViamVjdD86IHN0cmluZztcclxuICBzdGF0ZUlkOiBzdHJpbmc7XHJcbn1cclxuIiwiPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXowXCIgQGxpc3Q+XHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJudW1iZXJcIj5cclxuICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IHt7J051bWJlcicgfCB0cmFuc2xhdGV9fSA8L3RoPlxyXG4gICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj4gPGEgKGNsaWNrKT1cIm9wZW4oaXRlbSlcIj4je3tpdGVtLm51bWJlcn19PC9hPiA8L3RkPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInN1YmplY3RcIj5cclxuICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IHt7J1N1YmplY3QnIHwgdHJhbnNsYXRlfX0gPC90aD5cclxuICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCIgY2xhc3M9XCJ0ZXh0XCI+IHt7aXRlbS5zdWJqZWN0fX0gPC90ZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdGF0ZVwiPlxyXG4gICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4ge3snU3RhdHVzJyB8IHRyYW5zbGF0ZX19IDwvdGg+XHJcbiAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPiB7e2l0ZW0uc3RhdGVJZCB8IHN0YXRlIH19IDwvdGQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwib3B0aW9uXCI+XHJcbiAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiA8L3RoPlxyXG4gICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInZpZXcoaXRlbSwgJGV2ZW50KVwiIFtiaXpkb2NUb29sdGlwXT1cIidWaWV3JyB8IHRyYW5zbGF0ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1ZpZXcnIHwgdHJhbnNsYXRlXCIgY2xhc3M9XCJ0b29sXCIgbWF0QW5pbWF0ZT1cInJvdGF0ZVwiPjxtYXQtaWNvbj5kYXRhX3VzYWdlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9wZW4oaXRlbSlcIiBbYml6ZG9jVG9vbHRpcF09XCInT3BlbicgfCB0cmFuc2xhdGVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidPcGVuJyB8IHRyYW5zbGF0ZVwiIGNsYXNzPVwidG9vbFwiPjxtYXQtaWNvbj5tb3JlX2hvcml6PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDwvdGQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uczsgc3RpY2t5OiB0cnVlXCI+PC90cj5cclxuICA8dHIgbWF0LXJvdyBAaXRlbSAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogY29sdW1ucztcIj48L3RyPlxyXG48L3RhYmxlPlxyXG4iXX0=
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjZW50cy53aWRnZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2Rhc2hib2FyZC9yZWNlbnRzL3JlY2VudHMud2lkZ2V0LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9kYXNoYm9hcmQvcmVjZW50cy9yZWNlbnRzLndpZGdldC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7OztJQWN6QyxhQUFhLFNBQWIsYUFBYTtJQVF4QixZQUNVLE9BQW1CLEVBQ25CLFFBQXdCLEVBQ2hDLEdBQWM7UUFGTixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBUmxDLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFHTixXQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUMzQixZQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzQyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FB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Q0YsMkJBQTJCO0dBQ2QsYUFBYSxDQWtEekI7U0FsRFksYUFBYTs0RkFBYixhQUFhO2tCQVp6QixTQUFTO21CQUFDO29CQUNULFdBQVcsRUFBRSx1QkFBdUI7b0JBQ3BDLFNBQVMsRUFBRSxDQUFDLHVCQUF1QixFQUFFLHVCQUF1QixDQUFDO29CQUM3RCxVQUFVLEVBQUU7d0JBQ1YsYUFBYTt3QkFDYixhQUFhO3FCQUNkO2lCQUNGO3NKQVNDLE1BQU07c0JBREwsV0FBVzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlJztcclxuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQml6RG9jIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgbGlzdEFuaW1hdGlvbiwgaXRlbUFuaW1hdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IE1haWxib3hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9tYWlsYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXaWRnZXRSZWYgfSBmcm9tICcuLi93aWRnZXQtcmVmJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9wZW5Qb2xpY3kgfSBmcm9tICcuLi8uLi9jb3JlL2NvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBSb3V0ZXJJbXBsIH0gZnJvbSAnLi4vLi4vY29yZS9yb3V0ZXInO1xyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVjZW50cy53aWRnZXQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4uL190YWJsZS53aWRnZXQuc2NzcycsICcuL3JlY2VudHMud2lkZ2V0LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICBsaXN0QW5pbWF0aW9uLFxyXG4gICAgaXRlbUFuaW1hdGlvblxyXG4gIF1cclxufSlcclxuQEJpekRvYyh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtcmVjZW50cydcclxufSlcclxuLyoqIHBlcmZvcm1hbmNlIGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBSZWNlbnRzV2lkZ2V0IGltcGxlbWVudHMgV2lkZ2V0Q29tcG9uZW50PE1haWxJbmZvW10+LCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZGF0YVNvdXJjZTogTWF0VGFibGVEYXRhU291cmNlPE1haWxJbmZvPjtcclxuICBsb2FkaW5nID0gdHJ1ZTtcclxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodCcpXHJcbiAgaGVpZ2h0OiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgc2VhcmNoID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgcmVhZG9ubHkgY29sdW1ucyA9IFsnbnVtYmVyJywgJ3N1YmplY3QnLCAnc3RhdGUnLCAnb3B0aW9uJ107XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlckltcGwsXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBNYWlsYm94U2VydmljZSxcclxuICAgIHJlZjogV2lkZ2V0UmVmKSB7XHJcbiAgICByZWYucmVzaXplLnN1YnNjcmliZShkID0+IHRoaXMuaGVpZ2h0ID0gYCR7ZC5oZWlnaHR9cHhgKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLmNoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLlxyXG4gICAgICBzdWJzY3JpYmUobSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZpbmQoaSA9PiBpLmlkID09PSBtLmlkKTtcclxuICAgICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihpdGVtLCBtKTtcclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhLnJlbW92ZShpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEuc3BsaWNlKDAsIDAsIG0pO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSAnJztcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnNlYXJjaC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpO1xyXG4gIH1cclxuICBvbkJpbmQoZGF0YTogTWFpbEluZm9bXSkge1xyXG4gICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxNYWlsSW5mbz4oZGF0YSk7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfbmF2aWdhdGUoaXRlbTogTWFpbEluZm8sIGV4dHJhPykge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuX3NlcnZpY2UuZ2V0KGl0ZW0uaWQpLlxyXG4gICAgICBzdWJzY3JpYmUoaSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFsnbWFpbGJveC9pJywgaXRlbS5pZC5lbmNvZGVJZCgpXSwgeyAuLi5leHRyYSwgc3RhdGU6IHsgaXRlbTogaSB9IH0pO1xyXG4gICAgICB9LCAoKSA9PiB0aGlzLmxvYWRpbmcgPSBmYWxzZSk7XHJcbiAgfVxyXG4gIG9wZW4oaXRlbTogTWFpbEluZm8pIHtcclxuICAgIHRoaXMuX25hdmlnYXRlKGl0ZW0sIHsgcG9saWN5OiBPcGVuUG9saWN5LkNsZWFyIH0pO1xyXG4gIH1cclxuICB2aWV3KGl0ZW06IE1haWxJbmZvLCBldnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLl9uYXZpZ2F0ZShpdGVtLCB7IHBvbGljeTogT3BlblBvbGljeS5UYWIgfSk7XHJcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbmludGVyZmFjZSBNYWlsSW5mbyB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBmb3JtSWQ6IHN0cmluZztcclxuICBudW1iZXI/OiBzdHJpbmc7XHJcbiAgc3ViamVjdD86IHN0cmluZztcclxuICBzdGF0ZUlkOiBzdHJpbmc7XHJcbn1cclxuIiwiPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBbc3R5bGUudmlzaWJpbGl0eV09XCJsb2FkaW5nID8gJ3Zpc2libGUnOidoaWRkZW4nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG48dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejBcIiBAbGlzdD5cclxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm51bWJlclwiPlxyXG4gICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4ge3snTnVtYmVyJyB8IHRyYW5zbGF0ZX19IDwvdGg+XHJcbiAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPiA8YSAoY2xpY2spPVwib3BlbihpdGVtKVwiPiN7e2l0ZW0ubnVtYmVyfX08L2E+IDwvdGQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3ViamVjdFwiPlxyXG4gICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4ge3snU3ViamVjdCcgfCB0cmFuc2xhdGV9fSA8L3RoPlxyXG4gICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBjbGFzcz1cInRleHRcIj4ge3tpdGVtLnN1YmplY3R9fSA8L3RkPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInN0YXRlXCI+XHJcbiAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiB7eydTdGF0dXMnIHwgdHJhbnNsYXRlfX0gPC90aD5cclxuICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCI+IHt7aXRlbS5zdGF0ZUlkIHwgc3RhdGUgfX0gPC90ZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJvcHRpb25cIj5cclxuICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IDwvdGg+XHJcbiAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwidmlldyhpdGVtLCAkZXZlbnQpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1ZpZXcnIHwgdHJhbnNsYXRlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInVmlldycgfCB0cmFuc2xhdGVcIiBjbGFzcz1cInRvb2xcIiBtYXRBbmltYXRlPVwicm90YXRlXCI+PG1hdC1pY29uPmRhdGFfdXNhZ2U8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib3BlbihpdGVtKVwiIFtiaXpkb2NUb29sdGlwXT1cIidPcGVuJyB8IHRyYW5zbGF0ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ09wZW4nIHwgdHJhbnNsYXRlXCIgY2xhc3M9XCJ0b29sXCI+PG1hdC1pY29uPm1vcmVfaG9yaXo8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPC90ZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJjb2x1bW5zOyBzdGlja3k6IHRydWVcIj48L3RyPlxyXG4gIDx0ciBtYXQtcm93IEBpdGVtICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBjb2x1bW5zO1wiPjwvdHI+XHJcbjwvdGFibGU+XHJcbiJdfQ==
@@ -123,7 +123,7 @@ import { PivotView, ExcelExport as ExcelExport$1 } from '@syncfusion/ej2-pivotvi
123
123
  import * as i9$5 from '@syncfusion/ej2-angular-spreadsheet';
124
124
  import { Spreadsheet, SpreadsheetModule, SelectionService as SelectionService$2, BasicModuleService, ClipboardService, CellFormatService, KeyboardNavigationService, KeyboardShortcutService, NumberFormatService } from '@syncfusion/ej2-angular-spreadsheet';
125
125
  import * as i11$2 from '@syncfusion/ej2-angular-diagrams';
126
- import { Diagram, UndoRedo, ConnectorDrawingTool, DiagramConstraints, DiagramTools, NodeConstraints, ConnectorConstraints, SelectorConstraints, Node, SymbolPaletteComponent, ComplexHierarchicalTree, BpmnDiagrams, DataBinding, LayoutAnimation, ConnectionPointOrigin, SnapConstraints, ComplexHierarchicalTreeService, DiagramModule, SymbolPaletteModule, ConnectorBridgingService, LineRoutingService, BpmnDiagramsService, LayoutAnimationService, UndoRedoService, SnappingService, ConnectorEditingService, ToolBase } from '@syncfusion/ej2-angular-diagrams';
126
+ import { Diagram, UndoRedo, ConnectorDrawingTool, DiagramConstraints, DiagramTools, NodeConstraints, ConnectorConstraints, SelectorConstraints, Node, SymbolPaletteComponent, ComplexHierarchicalTree, BpmnDiagrams, DataBinding, ConnectionPointOrigin, SnapConstraints, ComplexHierarchicalTreeService, DiagramModule, SymbolPaletteModule, ConnectorBridgingService, LineRoutingService, BpmnDiagramsService, LayoutAnimationService, UndoRedoService, SnappingService, ConnectorEditingService, ToolBase } from '@syncfusion/ej2-angular-diagrams';
127
127
  import * as i9$2 from '@syncfusion/ej2-angular-schedule';
128
128
  import { Schedule, Day, WorkWeek, Month, MonthAgenda, Agenda, Year, ScheduleModule, ExcelExportService as ExcelExportService$2, DayService, WorkWeekService, MonthService, MonthAgendaService, ICalendarExportService, AgendaService, YearService } from '@syncfusion/ej2-angular-schedule';
129
129
  import player from 'lottie-web/build/player/lottie';
@@ -1827,11 +1827,11 @@ const STRINGS = {
1827
1827
  Average: 'Average',
1828
1828
  Open: 'Open',
1829
1829
  Sound: 'Sound',
1830
- TaggedInComments: 'Someone tagged me in comments',
1830
+ TaggedInComments: 'Someone mention me in comments',
1831
1831
  TaggedYourselfNotify: 'You tagged yourself on {0} #{1}',
1832
- TaggedNotify: '{0} tagged you on {1} #{2}',
1833
- TaggedMaleNotify: '{0} tagged you on {1} #{2}',
1834
- TaggedFemaleNotify: '{0} tagged you on {1} #{2}',
1832
+ TaggedNotify: '{0} mentioned you on {1} #{2}',
1833
+ TaggedMaleNotify: '{0} mentioned you on {1} #{2}',
1834
+ TaggedFemaleNotify: '{0} mentioned you on {1} #{2}',
1835
1835
  LikedOneNotify: '{0} liked your comment on <a>#{2}</a>',
1836
1836
  DislikedOneNotify: '{0} didn\'t like your comment on <a>#{2}</a>',
1837
1837
  LikedManyNotify: '{0} liked your comment on <a>#{1}</a>',
@@ -12372,7 +12372,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImpo
12372
12372
  }], ctorParameters: function () { return [{ type: HubService }]; } });
12373
12373
 
12374
12374
  const moment$g = require('moment');
12375
- Diagram.Inject(ComplexHierarchicalTree, BpmnDiagrams, DataBinding, LayoutAnimation);
12375
+ Diagram.Inject(ComplexHierarchicalTree, BpmnDiagrams, DataBinding /*, LayoutAnimation, LineRouting, ConnectorBridging*/);
12376
12376
  const PENDING_PATH = 'M18,22l-0.01-6L14,12l3.99-4.01L18,2H6v6l4,4l-4,3.99V22H18z M8,7.5V4h8v3.5l-4,4L8,7.5z', FYI_PATH = 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z', ESCALATED_PATH = 'M22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12.5 8H11v6l4.75 2.85.75-1.23-4-2.37V8zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z', WARNNING_PATH$1 = 'M 13.763735,1.8433735 H 6.3037349 l -5.27,5.27 v 7.4599995 l 5.27,5.27 h 7.4600001 l 5.27,-5.27 V 7.1133735 Z m -3.73,14.2999995 c -0.7200001,0 -1.3000001,-0.58 -1.3000001,-1.3 0,-0.72 0.58,-1.3 1.3000001,-1.3 0.72,0 1.3,0.58 1.3,1.3 0,0.72 -0.58,1.3 -1.3,1.3 z m 1,-4.3 H 9.0337349 V 5.8433735 h 2.0000001 z';
12377
12377
  /** flow-view component*/
12378
12378
  class FlowViewComponent extends TraceBase {
@@ -12427,6 +12427,7 @@ class FlowViewComponent extends TraceBase {
12427
12427
  return __awaiter(this, void 0, void 0, function* () {
12428
12428
  const { connectors, nodes, indicators } = yield this._prepare();
12429
12429
  this.diagram && this.diagram.destroy();
12430
+ //this.layout.type = 'None';
12430
12431
  this.diagram = new Diagram({
12431
12432
  width: '100%',
12432
12433
  height: 380,
@@ -12441,6 +12442,7 @@ class FlowViewComponent extends TraceBase {
12441
12442
  getConnectorDefaults: this.connDefaults.bind(this),
12442
12443
  getNodeDefaults: this.nodeDefaults.bind(this),
12443
12444
  }, this._elementRef.nativeElement);
12445
+ //this.layout.type = 'ComplexHierarchicalTree';
12444
12446
  this.diagram.doLayout();
12445
12447
  indicators.forEach((n, i) => {
12446
12448
  const parent = this.diagram.getNodeObject(n.addInfo.parentId);
@@ -12938,6 +12940,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImpo
12938
12940
  type: Input
12939
12941
  }] } });
12940
12942
 
12943
+ class ActionPipe {
12944
+ constructor(session) {
12945
+ this.map = new Map();
12946
+ session.profile.actions.forEach(a => this.map.set(a.name, a));
12947
+ }
12948
+ transform(value, ...args) {
12949
+ const action = this.map.get(value);
12950
+ if (action) {
12951
+ if (args.length)
12952
+ return action[args[0]] || (args[1] !== false ? action.title : null);
12953
+ return action.title;
12954
+ }
12955
+ return `_${value}`;
12956
+ }
12957
+ }
12958
+ ActionPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: ActionPipe, deps: [{ token: SessionService }], target: i0.ɵɵFactoryTarget.Pipe });
12959
+ ActionPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: ActionPipe, name: "action" });
12960
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: ActionPipe, decorators: [{
12961
+ type: Pipe,
12962
+ args: [{ name: 'action' }]
12963
+ }], ctorParameters: function () { return [{ type: SessionService }]; } });
12964
+
12941
12965
  const moment$f = require('moment');
12942
12966
  class DurationFormatPipe {
12943
12967
  constructor(_translate) {
@@ -13010,31 +13034,7 @@ class TraceViewComponent extends TraceBase {
13010
13034
  });
13011
13035
  return __awaiter(this, void 0, void 0, function* () {
13012
13036
  const { ownerId, ownerById, issued, log, recipients } = this.model;
13013
- const node = {
13014
- type: 'Owner',
13015
- time: issued
13016
- }, trace = [node];
13017
- if (ownerById) {
13018
- const owner = yield this._userOf(ownerId).toPromise();
13019
- if (ownerById === this._session.userId)
13020
- node.name = this._translate.get('ByYou', this._nameOf(owner));
13021
- else {
13022
- const by = yield this._userOf(ownerById).toPromise();
13023
- node.name = this._translate.get('By', this._nameOf(owner), this._nameOf(by));
13024
- if (by.role)
13025
- node.role = by.role;
13026
- }
13027
- }
13028
- else {
13029
- if (ownerId === this._session.userId)
13030
- node.name = this._translate.get('You');
13031
- else {
13032
- const owner = yield this._userOf(ownerId).toPromise();
13033
- node.name = this._nameOf(owner);
13034
- if (owner.role)
13035
- node.role = owner.role;
13036
- }
13037
- }
13037
+ const trace = [];
13038
13038
  for (let i = 0; i < log.length; i++) {
13039
13039
  let l = log[i];
13040
13040
  let action;
@@ -13048,6 +13048,36 @@ class TraceViewComponent extends TraceBase {
13048
13048
  }
13049
13049
  case 'ModelChange':
13050
13050
  break;
13051
+ case 'Submit':
13052
+ if (l.estimate)
13053
+ continue;
13054
+ const node = {
13055
+ type: 'Owner',
13056
+ time: l.time
13057
+ };
13058
+ if (ownerById) {
13059
+ const owner = yield this._userOf(ownerId).toPromise();
13060
+ if (ownerById === this._session.userId)
13061
+ node.name = this._translate.get('ByYou', this._nameOf(owner));
13062
+ else {
13063
+ const by = yield this._userOf(ownerById).toPromise();
13064
+ node.name = this._translate.get('By', this._nameOf(owner), this._nameOf(by));
13065
+ if (by.role)
13066
+ node.role = by.role;
13067
+ }
13068
+ }
13069
+ else {
13070
+ if (ownerId === this._session.userId)
13071
+ node.name = this._translate.get('You');
13072
+ else {
13073
+ const owner = yield this._userOf(ownerId).toPromise();
13074
+ node.name = this._nameOf(owner);
13075
+ if (owner.role)
13076
+ node.role = owner.role;
13077
+ }
13078
+ }
13079
+ trace.push(node);
13080
+ continue;
13051
13081
  default:
13052
13082
  continue;
13053
13083
  }
@@ -13208,7 +13238,7 @@ class TraceViewComponent extends TraceBase {
13208
13238
  }
13209
13239
  trace.push(step);
13210
13240
  }
13211
- this.data = trace.sort((a, b) => a.time > b.time ? -1 : a.time === b.time ? 0 : 1);
13241
+ this.data = trace.sort((a, b) => a.time > b.time ? 1 : a.time === b.time ? 0 : -1);
13212
13242
  });
13213
13243
  }
13214
13244
  refresh() {
@@ -13268,7 +13298,7 @@ class TraceViewComponent extends TraceBase {
13268
13298
  }
13269
13299
  }
13270
13300
  TraceViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: TraceViewComponent, deps: [{ token: SessionService }, { token: TranslateService }, { token: AccountService }, { token: ChatInfo }, { token: HubService }], target: i0.ɵɵFactoryTarget.Component });
13271
- TraceViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.12", type: TraceViewComponent, selector: "bizdoc-trace", inputs: { model: "model" }, outputs: { versionSelected: "versionSelected" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<table class=\"mat-table\">\r\n <thead role=\"rowgroup\">\r\n <tr class=\"mat-header-row\">\r\n <th class=\"mat-header-cell\"></th>\r\n <th class=\"mat-header-cell\"></th>\r\n <th class=\"mat-header-cell\"></th>\r\n <th class=\"mat-header-cell\"></th>\r\n </tr>\r\n </thead>\r\n <tbody role=\"rowgroup\">\r\n <tr class=\"mat-row\" *ngFor=\"let l of data\">\r\n <td class=\"mat-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span *ngIf=l.role>{{'JoinComma'|translate}}{{l.role}}</span>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <ng-container [ngSwitch]=\"l.type\">\r\n <span *ngSwitchCase=\"'ActionTaken'\">{{ l.action }}</span>\r\n <span *ngSwitchCase=\"'Owner'\">{{'Owner' | translate}}</span>\r\n <span *ngSwitchCase=\"'Pending'\">{{'IsPending' | translate}}</span>\r\n <span *ngSwitchCase=\"'Estimate'\">{{'Estimate' | translate}}</span>\r\n <span *ngSwitchCase=\"'ModelChange'\">{{'Changed' | translate}}</span>\r\n </ng-container>\r\n <span *ngIf=\"l.fyi\">&nbsp;{{'FYI'|translate}}</span>\r\n </td>\r\n <td class=\"mat-cell\" [ngSwitch]=\"l.estimate\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n <span *ngIf=\"l.durationMax && l.durationMax === l.durationMin\" [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n <span *ngIf=\"l.durationMax && l.durationMax !== l.durationMin\"\r\n [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n <span *ngIf=\"l.duration\" [bizdocTooltip]=\"l.duration|amDurationFormat\">&nbsp;({{l.duration | amDuration:'s'}})</span>\r\n </ng-container>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <span *ngIf=\"l.note\">{{l.note}}</span>\r\n <button mat-icon-button *ngIf=\"l.model\" (click)=\"compare(l)\" [bizdocTooltip]=\"'Compare'|translate\" bizdocTooltipPosition=\"start\"><mat-icon>more_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n", styles: [":host{width:100%}table{width:100%;background:transparent}td{padding:0 4px}:host ::ng-deep .mat-icon{vertical-align:sub}\n"], components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "sanitizeHtml": SanitizeHtmlPipe, "translate": TranslatePipe, "amDurationFormat": DurationFormatPipe, "amDuration": i14.DurationPipe, "amCalendar": i14.CalendarPipe } });
13301
+ TraceViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.12", type: TraceViewComponent, selector: "bizdoc-trace", inputs: { model: "model" }, outputs: { versionSelected: "versionSelected" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<table class=\"mat-table\">\r\n <thead role=\"rowgroup\">\r\n <tr class=\"mat-header-row\">\r\n <th class=\"mat-header-cell\"></th>\r\n <th class=\"mat-header-cell\"></th>\r\n <th class=\"mat-header-cell\"></th>\r\n <th class=\"mat-header-cell\"></th>\r\n </tr>\r\n </thead>\r\n <tbody role=\"rowgroup\">\r\n <tr class=\"mat-row\" *ngFor=\"let l of data\">\r\n <td class=\"mat-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span *ngIf=l.role>{{'JoinComma'|translate}}{{l.role}}</span>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <ng-container [ngSwitch]=\"l.type\">\r\n <span *ngSwitchCase=\"'ActionTaken'\">{{ l.action | action : 'past' }}</span>\r\n <span *ngSwitchCase=\"'Owner'\">{{'Issued' | translate}}</span>\r\n <span *ngSwitchCase=\"'Pending'\">{{'IsPending' | translate}}</span>\r\n <span *ngSwitchCase=\"'Estimate'\">{{'Estimate' | translate}}</span>\r\n <span *ngSwitchCase=\"'ModelChange'\">{{'Changed' | translate}}</span>\r\n </ng-container>\r\n <span *ngIf=\"l.fyi\">&nbsp;{{'FYI'|translate}}</span>\r\n </td>\r\n <td class=\"mat-cell\" [ngSwitch]=\"l.estimate\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n <span *ngIf=\"l.durationMax && l.durationMax === l.durationMin\" [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n <span *ngIf=\"l.durationMax && l.durationMax !== l.durationMin\"\r\n [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n <span *ngIf=\"l.duration\" [bizdocTooltip]=\"l.duration|amDurationFormat\">&nbsp;({{l.duration | amDuration:'s'}})</span>\r\n </ng-container>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <span *ngIf=\"l.note\">{{l.note}}</span>\r\n <button mat-icon-button *ngIf=\"l.model\" (click)=\"compare(l)\" [bizdocTooltip]=\"'Compare'|translate\" bizdocTooltipPosition=\"start\"><mat-icon>more_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n", styles: [":host{width:100%}table{width:100%;background:transparent}td{padding:0 4px}:host ::ng-deep .mat-icon{vertical-align:sub}\n"], components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "sanitizeHtml": SanitizeHtmlPipe, "translate": TranslatePipe, "action": ActionPipe, "amDurationFormat": DurationFormatPipe, "amDuration": i14.DurationPipe, "amCalendar": i14.CalendarPipe } });
13272
13302
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: TraceViewComponent, decorators: [{
13273
13303
  type: Component,
13274
13304
  args: [{
@@ -13290,6 +13320,10 @@ class TracePaneComponent {
13290
13320
  }
13291
13321
  ngOnInit() {
13292
13322
  this._pane.dataChange.subscribe(d => {
13323
+ if (this.model == d['item']) {
13324
+ this.trace.refresh();
13325
+ this.flow.refresh();
13326
+ }
13293
13327
  this.model = d['item'];
13294
13328
  this._pane.group = `#${this.model.number}`;
13295
13329
  });
@@ -17532,6 +17566,7 @@ class SlotsComponent {
17532
17566
  const pane = this.panes[position];
17533
17567
  yield this._dismiss(pane);
17534
17568
  this._discardPane(pane);
17569
+ this.collapse();
17535
17570
  if (position >= this.selectedIndex)
17536
17571
  this.select(-1);
17537
17572
  this._replaceUrl();
@@ -20005,12 +20040,20 @@ let RecentsWidget = class RecentsWidget {
20005
20040
  this.dataSource = new MatTableDataSource(data);
20006
20041
  this.loading = false;
20007
20042
  }
20043
+ _navigate(item, extra) {
20044
+ this.loading = true;
20045
+ this._service.get(item.id).
20046
+ subscribe(i => {
20047
+ this.loading = false;
20048
+ this._router.navigate(['mailbox/i', item.id.encodeId()], Object.assign(Object.assign({}, extra), { state: { item: i } }));
20049
+ }, () => this.loading = false);
20050
+ }
20008
20051
  open(item) {
20009
- this._router.navigate(['mailbox/i', item.id.encodeId()], { policy: OpenPolicy.Clear });
20052
+ this._navigate(item, { policy: OpenPolicy.Clear });
20010
20053
  }
20011
20054
  view(item, evt) {
20055
+ this._navigate(item, { policy: OpenPolicy.Tab });
20012
20056
  evt.stopPropagation();
20013
- this._router.navigate(['mailbox/i', item.id.encodeId(), 'views'], { policy: OpenPolicy.Tab });
20014
20057
  }
20015
20058
  ngOnDestroy() {
20016
20059
  this._destroy.next();
@@ -20018,7 +20061,7 @@ let RecentsWidget = class RecentsWidget {
20018
20061
  }
20019
20062
  };
20020
20063
  RecentsWidget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: RecentsWidget, deps: [{ token: RouterImpl }, { token: MailboxService }, { token: WidgetRef }], target: i0.ɵɵFactoryTarget.Component });
20021
- RecentsWidget.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.12", type: RecentsWidget, selector: "ng-component", host: { properties: { "style.height": "this.height" } }, ngImport: i0, template: "<table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z0\" @list>\r\n <ng-container matColumnDef=\"number\">\r\n <th mat-header-cell *matHeaderCellDef> {{'Number' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let item\"> <a (click)=\"open(item)\">#{{item.number}}</a> </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"subject\">\r\n <th mat-header-cell *matHeaderCellDef> {{'Subject' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let item\" class=\"text\"> {{item.subject}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"state\">\r\n <th mat-header-cell *matHeaderCellDef> {{'Status' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let item\"> {{item.stateId | state }} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"option\">\r\n <th mat-header-cell *matHeaderCellDef> </th>\r\n <td mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\" matAnimate=\"rotate\"><mat-icon>data_usage</mat-icon></button>\r\n <button mat-icon-button (click)=\"open(item)\" [bizdocTooltip]=\"'Open' | translate\" [attr.aria-label]=\"'Open' | translate\" class=\"tool\"><mat-icon>more_horiz</mat-icon></button>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columns; sticky: true\"></tr>\r\n <tr mat-row @item *matRowDef=\"let row; columns: columns;\"></tr>\r\n</table>\r\n", styles: ["table{width:100%}td.text{text-overflow:ellipsis;max-width:100px;white-space:nowrap;overflow:hidden}:host{overflow:hidden;display:block}:host:hover{overflow-y:auto!important}\n", ":host ::ng-deep tr .tool{opacity:.1}:host ::ng-deep tr:hover .tool{opacity:1}\n"], components: [{ type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }], directives: [{ type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$1.MatCellDef, selector: "[matCellDef]" }, { type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: MatIconAnimate, selector: "[matAnimate]" }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }], pipes: { "translate": TranslatePipe, "state": StatePipe }, animations: [
20064
+ RecentsWidget.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.12", type: RecentsWidget, selector: "ng-component", host: { properties: { "style.height": "this.height" } }, ngImport: i0, template: "<mat-progress-bar mode=\"indeterminate\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z0\" @list>\r\n <ng-container matColumnDef=\"number\">\r\n <th mat-header-cell *matHeaderCellDef> {{'Number' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let item\"> <a (click)=\"open(item)\">#{{item.number}}</a> </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"subject\">\r\n <th mat-header-cell *matHeaderCellDef> {{'Subject' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let item\" class=\"text\"> {{item.subject}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"state\">\r\n <th mat-header-cell *matHeaderCellDef> {{'Status' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let item\"> {{item.stateId | state }} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"option\">\r\n <th mat-header-cell *matHeaderCellDef> </th>\r\n <td mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\" matAnimate=\"rotate\"><mat-icon>data_usage</mat-icon></button>\r\n <button mat-icon-button (click)=\"open(item)\" [bizdocTooltip]=\"'Open' | translate\" [attr.aria-label]=\"'Open' | translate\" class=\"tool\"><mat-icon>more_horiz</mat-icon></button>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columns; sticky: true\"></tr>\r\n <tr mat-row @item *matRowDef=\"let row; columns: columns;\"></tr>\r\n</table>\r\n", styles: ["table{width:100%}td.text{text-overflow:ellipsis;max-width:100px;white-space:nowrap;overflow:hidden}:host{overflow:hidden;display:block}:host:hover{overflow-y:auto!important}\n", ":host ::ng-deep tr .tool{opacity:.1}:host ::ng-deep tr:hover .tool{opacity:1}\n"], components: [{ type: i11$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "mode", "value", "bufferValue"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }], directives: [{ type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$1.MatCellDef, selector: "[matCellDef]" }, { type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: MatIconAnimate, selector: "[matAnimate]" }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }], pipes: { "translate": TranslatePipe, "state": StatePipe }, animations: [
20022
20065
  listAnimation,
20023
20066
  itemAnimation
20024
20067
  ] });
@@ -21623,28 +21666,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImpo
21623
21666
  args: [PivotViewComponent]
21624
21667
  }] } });
21625
21668
 
21626
- class ActionPipe {
21627
- constructor(session) {
21628
- this.map = new Map();
21629
- session.profile.actions.forEach(a => this.map.set(a.name, a));
21630
- }
21631
- transform(value, ...args) {
21632
- const action = this.map.get(value);
21633
- if (action) {
21634
- if (args.length)
21635
- return action[args[0]] || (args[1] !== false ? action.title : null);
21636
- return action.title;
21637
- }
21638
- return `_${value}`;
21639
- }
21640
- }
21641
- ActionPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: ActionPipe, deps: [{ token: SessionService }], target: i0.ɵɵFactoryTarget.Pipe });
21642
- ActionPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: ActionPipe, name: "action" });
21643
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: ActionPipe, decorators: [{
21644
- type: Pipe,
21645
- args: [{ name: 'action' }]
21646
- }], ctorParameters: function () { return [{ type: SessionService }]; } });
21647
-
21648
21669
  let SubstitutionComponent = class SubstitutionComponent {
21649
21670
  constructor() {
21650
21671
  this.displayColumns = ['number', 'substitutingId', 'action', 'state'];