ngx-st-tables 17.0.132 → 17.0.133

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (15) hide show
  1. package/esm2022/lib/components/material-table/material-table-caption/material-table-caption.component.mjs +59 -57
  2. package/esm2022/lib/components/material-table/material-table-caption/material-table-filter-dialog/material-table-filter-dialog.component.mjs +44 -67
  3. package/esm2022/lib/components/material-table/material-table-caption/material-table-filter-dialog/material-table-filter.component.mjs +101 -119
  4. package/esm2022/lib/components/material-table/material-table-caption/material-table-order-column-dialog/material-table-order-column-dialog.component.mjs +24 -25
  5. package/esm2022/lib/components/material-table/material-table-row-cell/material-table-row-cell.component.mjs +45 -39
  6. package/esm2022/lib/components/material-table/material-table.component.mjs +223 -205
  7. package/fesm2022/ngx-st-tables.mjs +480 -495
  8. package/fesm2022/ngx-st-tables.mjs.map +1 -1
  9. package/lib/components/material-table/material-table-caption/material-table-caption.component.d.ts +7 -9
  10. package/lib/components/material-table/material-table-caption/material-table-filter-dialog/material-table-filter-dialog.component.d.ts +7 -14
  11. package/lib/components/material-table/material-table-caption/material-table-filter-dialog/material-table-filter.component.d.ts +8 -7
  12. package/lib/components/material-table/material-table-caption/material-table-order-column-dialog/material-table-order-column-dialog.component.d.ts +3 -8
  13. package/lib/components/material-table/material-table-row-cell/material-table-row-cell.component.d.ts +10 -11
  14. package/lib/components/material-table/material-table.component.d.ts +18 -13
  15. package/package.json +1 -1
@@ -1,19 +1,20 @@
1
- import { ChangeDetectionStrategy, Component, Inject, signal, } from '@angular/core';
2
- import { MAT_DIALOG_DATA } from '@angular/material/dialog';
1
+ import { ChangeDetectionStrategy, Component, inject, signal, computed, } from '@angular/core';
2
+ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
3
+ import { StTablesTranslationsService } from '../../../../services/st-tables-translations.service';
3
4
  import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/material/dialog";
5
- import * as i2 from "../../../../services/st-tables-translations.service";
6
- import * as i3 from "@angular/common";
7
- import * as i4 from "@angular/material/button";
8
- import * as i5 from "@angular/material/icon";
9
- import * as i6 from "@angular/material/tooltip";
10
- import * as i7 from "./material-table-filter.component";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/material/button";
7
+ import * as i3 from "@angular/material/icon";
8
+ import * as i4 from "@angular/material/tooltip";
9
+ import * as i5 from "@angular/material/dialog";
10
+ import * as i6 from "./material-table-filter.component";
11
11
  export class MaterialTableFilterDialogComponent {
12
- constructor(dialogData, dialogRef, changeDetectorRef, stTableTranslations) {
13
- this.dialogData = dialogData;
14
- this.dialogRef = dialogRef;
15
- this.changeDetectorRef = changeDetectorRef;
16
- this.stTableTranslations = stTableTranslations;
12
+ constructor() {
13
+ this.dialogData = inject(MAT_DIALOG_DATA);
14
+ this.dialogRef = inject((MatDialogRef));
15
+ this.stTableTranslations = inject(StTablesTranslationsService);
16
+ // Cache translations as computed signal
17
+ this.translations = computed(() => this.stTableTranslations.getTranslations()());
17
18
  this.filterColumns = signal([]);
18
19
  this.allVisible = signal(true);
19
20
  this.filtersValue = signal({});
@@ -29,44 +30,31 @@ export class MaterialTableFilterDialogComponent {
29
30
  return !!filter.value;
30
31
  }
31
32
  ngOnInit() {
33
+ // Initialize filters for all filterable columns
34
+ const initialFilters = {};
32
35
  const columns = this.dialogData.columns
33
36
  .filter(column => column.filter)
34
37
  .map(col => {
35
- let filterValue = null;
36
- if (col.filterType === 'boolean' || col.filterType === 'number') {
37
- filterValue = null;
38
- }
39
- else if (col.filterType === 'string') {
40
- filterValue = '';
41
- }
42
- else if (col.filterType === 'date') {
43
- filterValue = [null, null];
44
- }
45
- this.filtersValue.update(current => ({
46
- ...current,
47
- [col.field]: {
48
- value: filterValue,
49
- matchMode: MaterialTableFilterDialogComponent.getBaseMatchModeByType(col.filterType),
50
- },
51
- }));
38
+ // Set default filter value based on type
39
+ initialFilters[col.field] = {
40
+ value: this.getDefaultFilterValue(col.filterType),
41
+ matchMode: MaterialTableFilterDialogComponent.getBaseMatchModeByType(col.filterType),
42
+ };
52
43
  return {
53
44
  ...col,
54
45
  expanded: true,
55
46
  };
56
47
  });
57
48
  this.filterColumns.set(columns);
49
+ // Apply initial filter values if provided
58
50
  if (this.dialogData.initFilters) {
59
- this.filtersValue.update(currentFilters => {
60
- const initKeys = Object.keys(this.dialogData.initFilters);
61
- initKeys.forEach(initKey => {
62
- if (this.dialogData.initFilters[initKey].value) {
63
- currentFilters[initKey].value =
64
- this.dialogData.initFilters[initKey].value;
65
- }
66
- });
67
- return currentFilters;
51
+ Object.entries(this.dialogData.initFilters).forEach(([key, filter]) => {
52
+ if (filter.value !== null && filter.value !== undefined) {
53
+ initialFilters[key] = { ...filter };
54
+ }
68
55
  });
69
56
  }
57
+ this.filtersValue.set(initialFilters);
70
58
  }
71
59
  clearFilter(column) {
72
60
  this.filtersValue.update(current => ({
@@ -91,27 +79,19 @@ export class MaterialTableFilterDialogComponent {
91
79
  this.allVisible.set(false);
92
80
  }
93
81
  saveFilters() {
94
- const filtersReady = {};
95
- const filterKeys = Object.keys(this.filtersValue());
96
- filterKeys.forEach(filterKey => {
97
- const filter = this.filtersValue()[filterKey];
98
- if (Array.isArray(filter.value)) {
99
- if ((filter.value[0] !== null && filter.value[0] !== undefined) ||
100
- (filter.value[1] !== null && filter.value[1] !== undefined)) {
101
- filtersReady[filterKey] = this.filtersValue()[filterKey];
102
- }
103
- }
104
- else {
105
- if (filter.value !== null &&
82
+ // Only include filters that have values
83
+ const filtersReady = Object.entries(this.filtersValue()).reduce((acc, [key, filter]) => {
84
+ const hasValue = Array.isArray(filter.value)
85
+ ? filter.value.some(v => v !== null && v !== undefined)
86
+ : filter.value !== null &&
106
87
  filter.value !== undefined &&
107
- filter.value !== '') {
108
- filtersReady[filterKey] = this.filtersValue()[filterKey];
109
- }
88
+ filter.value !== '';
89
+ if (hasValue) {
90
+ acc[key] = filter;
110
91
  }
111
- });
112
- this.dialogRef.close({
113
- filters: filtersReady,
114
- });
92
+ return acc;
93
+ }, {});
94
+ this.dialogRef.close({ filters: filtersReady });
115
95
  }
116
96
  filterValueChanged(column, newFilter) {
117
97
  this.filtersValue.update(current => ({
@@ -143,14 +123,11 @@ export class MaterialTableFilterDialogComponent {
143
123
  return 'contains';
144
124
  }
145
125
  }
146
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MaterialTableFilterDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }, { token: i0.ChangeDetectorRef }, { token: i2.StTablesTranslationsService }], target: i0.ɵɵFactoryTarget.Component }); }
147
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MaterialTableFilterDialogComponent, selector: "st-material-table-filter-dialog", ngImport: i0, template: "<h3 mat-dialog-title class=\"filters-dialog-title\">\r\n {{ stTableTranslations.getTranslations()().filterTitle }}\r\n <div class=\"filters-show-hide\">\r\n @if (!allVisible()) {\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"showAllFilters()\"\r\n [matTooltip]=\"stTableTranslations.getTranslations()().expandAllFilters\"\r\n >\r\n <mat-icon>unfold_more</mat-icon>\r\n </button>\r\n }\r\n @if (allVisible()) {\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"hideAllFilters()\"\r\n [matTooltip]=\"\r\n stTableTranslations.getTranslations()().collapseAllFilters\r\n \"\r\n >\r\n <mat-icon>unfold_less</mat-icon>\r\n </button>\r\n }\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"clearAllFilters()\"\r\n [matTooltip]=\"stTableTranslations.getTranslations()().clearAllFilters\"\r\n >\r\n <mat-icon>filter_alt_off</mat-icon>\r\n </button>\r\n </div>\r\n</h3>\r\n\r\n<mat-dialog-content>\r\n <hr />\r\n @for (column of filterColumns(); track column.field) {\r\n <div class=\"filter\">\r\n <div class=\"filter-title row justify-content-between\">\r\n <div class=\"row align-items-center\">\r\n <p>\r\n {{ column.header }}\r\n </p>\r\n @if (hasFilterValue(column)) {\r\n <mat-icon\r\n (click)=\"clearFilter(column)\"\r\n class=\"filter-value-clear\"\r\n [matTooltip]=\"stTableTranslations.getTranslations()().clearFilter\"\r\n >filter_alt_off</mat-icon\r\n >\r\n }\r\n </div>\r\n\r\n @if (column.expanded) {\r\n <mat-icon (click)=\"column.expanded = !column.expanded\"\r\n >keyboard_arrow_up</mat-icon\r\n >\r\n } @else {\r\n <mat-icon (click)=\"column.expanded = !column.expanded\"\r\n >keyboard_arrow_down</mat-icon\r\n >\r\n }\r\n </div>\r\n <div class=\"filter-content row\" [ngClass]=\"{ hide: !column.expanded }\">\r\n <ngx-st-material-table-filter\r\n [column]=\"column\"\r\n [filterValue]=\"filtersValue()[column.field]\"\r\n (filterValueChanged)=\"filterValueChanged(column, $event)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div class=\"row justify-content-between\" style=\"width: 100%\">\r\n <button type=\"button\" mat-flat-button mat-dialog-close>\r\n {{ stTableTranslations.getTranslations()().cancel }}\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n color=\"accent\"\r\n (click)=\"saveFilters()\"\r\n >\r\n {{ stTableTranslations.getTranslations()().save }}\r\n </button>\r\n </div>\r\n</mat-dialog-actions>\r\n", styles: [".filters-dialog-title .filters-show-hide{position:absolute;top:6px;right:15px}.filter{width:100%;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--surface-100, #e0e0e0)}.filter .filter-title{padding:.5rem 0;font-size:1rem;font-weight:500}.filter .filter-title p{margin:0;font-weight:500}.filter .filter-title mat-icon{cursor:pointer}.filter .filter-title .filter-value-clear{font-size:1.2rem;width:1.2rem;height:1.2rem;margin-top:-2px;margin-left:.5rem;color:red}.filter .filter-content{margin-top:.5rem;gap:.5rem}.filter .filter-content.hide{display:none}.filter .filter-content>div.col-auto,.filter .filter-content>div.col{padding:0!important}.filter .filter-content mat-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i7.MaterialTableFilterComponent, selector: "ngx-st-material-table-filter", inputs: ["column", "filterValue"], outputs: ["filterValueChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
126
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MaterialTableFilterDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
127
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MaterialTableFilterDialogComponent, selector: "st-material-table-filter-dialog", ngImport: i0, template: "<h3 mat-dialog-title class=\"filters-dialog-title\">\r\n {{ translations().filterTitle }}\r\n <div class=\"filters-show-hide\">\r\n @if (!allVisible()) {\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"showAllFilters()\"\r\n [matTooltip]=\"translations().expandAllFilters\"\r\n >\r\n <mat-icon>unfold_more</mat-icon>\r\n </button>\r\n }\r\n @if (allVisible()) {\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"hideAllFilters()\"\r\n [matTooltip]=\"translations().collapseAllFilters\"\r\n >\r\n <mat-icon>unfold_less</mat-icon>\r\n </button>\r\n }\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"clearAllFilters()\"\r\n [matTooltip]=\"translations().clearAllFilters\"\r\n >\r\n <mat-icon>filter_alt_off</mat-icon>\r\n </button>\r\n </div>\r\n</h3>\r\n\r\n<mat-dialog-content>\r\n <hr />\r\n @for (column of filterColumns(); track column.field) {\r\n <div class=\"filter\">\r\n <div class=\"filter-title row justify-content-between\">\r\n <div class=\"row align-items-center\">\r\n <p>\r\n {{ column.header }}\r\n </p>\r\n @if (hasFilterValue(column)) {\r\n <mat-icon\r\n (click)=\"clearFilter(column)\"\r\n class=\"filter-value-clear\"\r\n [matTooltip]=\"translations().clearFilter\"\r\n >filter_alt_off</mat-icon\r\n >\r\n }\r\n </div>\r\n\r\n @if (column.expanded) {\r\n <mat-icon (click)=\"column.expanded = !column.expanded\"\r\n >keyboard_arrow_up</mat-icon\r\n >\r\n } @else {\r\n <mat-icon (click)=\"column.expanded = !column.expanded\"\r\n >keyboard_arrow_down</mat-icon\r\n >\r\n }\r\n </div>\r\n <div class=\"filter-content row\" [ngClass]=\"{ hide: !column.expanded }\">\r\n <ngx-st-material-table-filter\r\n [column]=\"column\"\r\n [filterValue]=\"filtersValue()[column.field]\"\r\n (filterValueChanged)=\"filterValueChanged(column, $event)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div class=\"row justify-content-between dialog-actions-wrapper\">\r\n <button type=\"button\" mat-flat-button mat-dialog-close>\r\n {{ translations().cancel }}\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n color=\"accent\"\r\n (click)=\"saveFilters()\"\r\n >\r\n {{ translations().save }}\r\n </button>\r\n </div>\r\n</mat-dialog-actions>\r\n", styles: [".filters-dialog-title .filters-show-hide{position:absolute;top:6px;right:15px}.filter{width:100%;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--surface-100, #e0e0e0)}.filter .filter-title{padding:.5rem 0;font-size:1rem;font-weight:500}.filter .filter-title p{margin:0;font-weight:500}.filter .filter-title mat-icon{cursor:pointer}.filter .filter-title .filter-value-clear{font-size:1.2rem;width:1.2rem;height:1.2rem;margin-top:-2px;margin-left:.5rem;color:red}.filter .filter-content{margin-top:.5rem;gap:.5rem}.filter .filter-content.hide{display:none}.filter .filter-content>div.col-auto,.filter .filter-content>div.col{padding:0!important}.filter .filter-content mat-form-field{width:100%}.dialog-actions-wrapper{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i5.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i5.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i5.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i5.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i6.MaterialTableFilterComponent, selector: "ngx-st-material-table-filter", inputs: ["column", "filterValue"], outputs: ["filterValueChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
148
128
  }
149
129
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MaterialTableFilterDialogComponent, decorators: [{
150
130
  type: Component,
151
- args: [{ selector: 'st-material-table-filter-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<h3 mat-dialog-title class=\"filters-dialog-title\">\r\n {{ stTableTranslations.getTranslations()().filterTitle }}\r\n <div class=\"filters-show-hide\">\r\n @if (!allVisible()) {\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"showAllFilters()\"\r\n [matTooltip]=\"stTableTranslations.getTranslations()().expandAllFilters\"\r\n >\r\n <mat-icon>unfold_more</mat-icon>\r\n </button>\r\n }\r\n @if (allVisible()) {\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"hideAllFilters()\"\r\n [matTooltip]=\"\r\n stTableTranslations.getTranslations()().collapseAllFilters\r\n \"\r\n >\r\n <mat-icon>unfold_less</mat-icon>\r\n </button>\r\n }\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"clearAllFilters()\"\r\n [matTooltip]=\"stTableTranslations.getTranslations()().clearAllFilters\"\r\n >\r\n <mat-icon>filter_alt_off</mat-icon>\r\n </button>\r\n </div>\r\n</h3>\r\n\r\n<mat-dialog-content>\r\n <hr />\r\n @for (column of filterColumns(); track column.field) {\r\n <div class=\"filter\">\r\n <div class=\"filter-title row justify-content-between\">\r\n <div class=\"row align-items-center\">\r\n <p>\r\n {{ column.header }}\r\n </p>\r\n @if (hasFilterValue(column)) {\r\n <mat-icon\r\n (click)=\"clearFilter(column)\"\r\n class=\"filter-value-clear\"\r\n [matTooltip]=\"stTableTranslations.getTranslations()().clearFilter\"\r\n >filter_alt_off</mat-icon\r\n >\r\n }\r\n </div>\r\n\r\n @if (column.expanded) {\r\n <mat-icon (click)=\"column.expanded = !column.expanded\"\r\n >keyboard_arrow_up</mat-icon\r\n >\r\n } @else {\r\n <mat-icon (click)=\"column.expanded = !column.expanded\"\r\n >keyboard_arrow_down</mat-icon\r\n >\r\n }\r\n </div>\r\n <div class=\"filter-content row\" [ngClass]=\"{ hide: !column.expanded }\">\r\n <ngx-st-material-table-filter\r\n [column]=\"column\"\r\n [filterValue]=\"filtersValue()[column.field]\"\r\n (filterValueChanged)=\"filterValueChanged(column, $event)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div class=\"row justify-content-between\" style=\"width: 100%\">\r\n <button type=\"button\" mat-flat-button mat-dialog-close>\r\n {{ stTableTranslations.getTranslations()().cancel }}\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n color=\"accent\"\r\n (click)=\"saveFilters()\"\r\n >\r\n {{ stTableTranslations.getTranslations()().save }}\r\n </button>\r\n </div>\r\n</mat-dialog-actions>\r\n", styles: [".filters-dialog-title .filters-show-hide{position:absolute;top:6px;right:15px}.filter{width:100%;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--surface-100, #e0e0e0)}.filter .filter-title{padding:.5rem 0;font-size:1rem;font-weight:500}.filter .filter-title p{margin:0;font-weight:500}.filter .filter-title mat-icon{cursor:pointer}.filter .filter-title .filter-value-clear{font-size:1.2rem;width:1.2rem;height:1.2rem;margin-top:-2px;margin-left:.5rem;color:red}.filter .filter-content{margin-top:.5rem;gap:.5rem}.filter .filter-content.hide{display:none}.filter .filter-content>div.col-auto,.filter .filter-content>div.col{padding:0!important}.filter .filter-content mat-form-field{width:100%}\n"] }]
152
- }], ctorParameters: () => [{ type: undefined, decorators: [{
153
- type: Inject,
154
- args: [MAT_DIALOG_DATA]
155
- }] }, { type: i1.MatDialogRef }, { type: i0.ChangeDetectorRef }, { type: i2.StTablesTranslationsService }] });
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtdGFibGUtZmlsdGVyLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3QtdGFibGVzL3NyYy9saWIvY29tcG9uZW50cy9tYXRlcmlhbC10YWJsZS9tYXRlcmlhbC10YWJsZS1jYXB0aW9uL21hdGVyaWFsLXRhYmxlLWZpbHRlci1kaWFsb2cvbWF0ZXJpYWwtdGFibGUtZmlsdGVyLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3QtdGFibGVzL3NyYy9saWIvY29tcG9uZW50cy9tYXRlcmlhbC10YWJsZS9tYXRlcmlhbC10YWJsZS1jYXB0aW9uL21hdGVyaWFsLXRhYmxlLWZpbHRlci1kaWFsb2cvbWF0ZXJpYWwtdGFibGUtZmlsdGVyLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxNQUFNLEVBR04sTUFBTSxHQUdQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7OztBQWV6RSxNQUFNLE9BQU8sa0NBQWtDO0lBSzdDLFlBRVMsVUFHTixFQUNNLFNBR04sRUFDTyxpQkFBb0MsRUFDckMsbUJBQWdEO1FBVGhELGVBQVUsR0FBVixVQUFVLENBR2hCO1FBQ00sY0FBUyxHQUFULFNBQVMsQ0FHZjtRQUNPLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDckMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUE2QjtRQWZ6RCxrQkFBYSxHQUFHLE1BQU0sQ0FBbUMsRUFBRSxDQUFDLENBQUM7UUFDN0QsZUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixpQkFBWSxHQUFHLE1BQU0sQ0FBMkMsRUFB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QUM7WUFDbkMsR0FBRyxPQUFPO1lBQ1YsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUztTQUMxQixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTyxxQkFBcUIsQ0FDM0IsVUFBc0M7UUFFdEMsUUFBUSxVQUFVLEVBQUUsQ0FBQztZQUNuQixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN0QixLQUFLLFNBQVMsQ0FBQztZQUNmLEtBQUssUUFBUTtnQkFDWCxPQUFPLElBQUksQ0FBQztZQUNkO2dCQUNFLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsc0JBQXNCLENBQzNCLFVBQXNDO1FBRXRDLElBQUksVUFBVSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQzFCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7YUFBTSxJQUNMLFVBQVUsS0FBSyxRQUFRO1lBQ3ZCLFVBQVUsS0FBSyxTQUFTO1lBQ3hCLFVBQVUsS0FBSyxRQUFRLEVBQ3ZCLENBQUM7WUFDRCxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDOytHQS9LVSxrQ0FBa0Msa0JBTW5DLGVBQWU7bUdBTmQsa0NBQWtDLHVFQzFCL0MsaTRGQTBGQTs7NEZEaEVhLGtDQUFrQztrQkFOOUMsU0FBUzsrQkFDRSxpQ0FBaUMsbUJBRzFCLHVCQUF1QixDQUFDLE1BQU07OzBCQVE1QyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBJbmplY3QsXHJcbiAgbW9kZWwsXHJcbiAgT25Jbml0LFxyXG4gIHNpZ25hbCxcclxuICBXcml0YWJsZVNpZ25hbCxcclxuICBlZmZlY3QsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgVmlld1N0TWF0ZXJpYWxUYWJsZUNvbHVtbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL3ZpZXcvdmlldy1zdC1tYXRlcmlhbC10YWJsZS1jb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQgeyBTdFRhYmxlc1RyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9zdC10YWJsZXMtdHJhbnNsYXRpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdE1hdGVyaWFsQ29sdW1uRmlsdGVyVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9zdC1tYXRlcmlhbC10YWJsZS1jb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIFN0TWF0ZXJpYWxUYWJsZUZpbHRlcixcclxuICBTdE1hdGVyaWFsVGFibGVGaWx0ZXJWYWx1ZVR5cGUsXHJcbn0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL21vZGVscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3N0LW1hdGVyaWFsLXRhYmxlLWZpbHRlci1kaWFsb2cnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXRlcmlhbC10YWJsZS1maWx0ZXItZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tYXRlcmlhbC10YWJsZS1maWx0ZXItZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbFRhYmxlRmlsdGVyRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBmaWx0ZXJDb2x1bW5zID0gc2lnbmFsPFZpZXdTdE1hdGVyaWFsVGFibGVDb2x1bW5Nb2RlbFtdPihbXSk7XHJcbiAgYWxsVmlzaWJsZSA9IHNpZ25hbCh0cnVlKTtcclxuICBmaWx0ZXJzVmFsdWUgPSBzaWduYWw8eyBba2V5OiBzdHJpbmddOiBTdE1hdGVyaWFsVGFibGVGaWx0ZXIgfT4oe30pO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKVxyXG4gICAgcHVibGljIGRpYWxvZ0RhdGE6IHtcclxuICAgICAgY29sdW1uczogVmlld1N0TWF0ZXJpYWxUYWJsZUNvbHVtbk1vZGVsW107XHJcbiAgICAgIGluaXRGaWx0ZXJzOiB7IFtrZXk6IHN0cmluZ106IFN0TWF0ZXJpYWxUYWJsZUZpbHRlciB9O1xyXG4gICAgfSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxcclxuICAgICAgTWF0ZXJpYWxUYWJsZUZpbHRlckRpYWxvZ0NvbXBvbmVudCxcclxuICAgICAgTWF0ZXJpYWxUYWJsZUZpbHRlckRpYWxvZ1Jlc3VsdFxyXG4gICAgPixcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIHN0VGFibGVUcmFuc2xhdGlvbnM6IFN0VGFibGVzVHJhbnNsYXRpb25zU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgaGFzRmlsdGVyVmFsdWUoY29sdW1uOiBWaWV3U3RNYXRlcmlhbFRhYmxlQ29sdW1uTW9kZWwpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZmlsdGVyc1ZhbHVlKClbY29sdW1uLmZpZWxkXTtcclxuICAgIGlmICghZmlsdGVyPy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmIChjb2x1bW4uZmlsdGVyVHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgIGNvbnN0IGRhdGVWYWx1ZXMgPSBmaWx0ZXIudmFsdWUgYXMgW3N0cmluZyB8IG51bGwsIHN0cmluZyB8IG51bGxdO1xyXG4gICAgICByZXR1cm4gISEoZGF0ZVZhbHVlcz8uWzBdIHx8IGRhdGVWYWx1ZXM/LlsxXSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICEhZmlsdGVyLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5kaWFsb2dEYXRhLmNvbHVtbnNcclxuICAgICAgLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmZpbHRlcilcclxuICAgICAgLm1hcChjb2wgPT4ge1xyXG4gICAgICAgIGxldCBmaWx0ZXJWYWx1ZTogU3RNYXRlcmlhbFRhYmxlRmlsdGVyVmFsdWVUeXBlID0gbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKGNvbC5maWx0ZXJUeXBlID09PSAnYm9vbGVhbicgfHwgY29sLmZpbHRlclR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICBmaWx0ZXJWYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2wuZmlsdGVyVHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIGZpbHRlclZhbHVlID0gJyc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2wuZmlsdGVyVHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICBmaWx0ZXJWYWx1ZSA9IFtudWxsLCBudWxsXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmlsdGVyc1ZhbHVlLnVwZGF0ZShjdXJyZW50ID0+ICh7XHJcbiAgICAgICAgICAuLi5jdXJyZW50LFxyXG4gICAgICAgICAgW2NvbC5maWVsZF06IHtcclxuICAgICAgICAgICAgdmFsdWU6IGZpbHRlclZhbHVlLFxyXG4gICAgICAgICAgICBtYXRjaE1vZGU6XHJcbiAgICAgICAgICAgICAgTWF0ZXJpYWxUYWJsZUZpbHRlckRpYWxvZ0NvbXBvbmVudC5nZXRCYXNlTWF0Y2hNb2RlQnlUeXBlKFxyXG4gICAgICAgICAgICAgICAgY29sLmZpbHRlclR5cGUhXHJcbiAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4uY29sLFxyXG4gICAgICAgICAgZXhwYW5kZWQ6IHRydWUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5maWx0ZXJDb2x1bW5zLnNldChjb2x1bW5zKTtcclxuXHJcbiAgICBpZiAodGhpcy5kaWFsb2dEYXRhLmluaXRGaWx0ZXJzKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyc1ZhbHVlLnVwZGF0ZShjdXJyZW50RmlsdGVycyA9PiB7XHJcbiAgICAgICAgY29uc3QgaW5pdEtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmRpYWxvZ0RhdGEuaW5pdEZpbHRlcnMpO1xyXG4gICAgICAgIGluaXRLZXlzLmZvckVhY2goaW5pdEtleSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5kaWFsb2dEYXRhLmluaXRGaWx0ZXJzW2luaXRLZXldLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGN1cnJlbnRGaWx0ZXJzW2luaXRLZXldLnZhbHVlID1cclxuICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0RhdGEuaW5pdEZpbHRlcnNbaW5pdEtleV0udmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBjdXJyZW50RmlsdGVycztcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhckZpbHRlcihjb2x1bW46IFZpZXdTdE1hdGVyaWFsVGFibGVDb2x1bW5Nb2RlbCkge1xyXG4gICAgdGhpcy5maWx0ZXJzVmFsdWUudXBkYXRlKGN1cnJlbnQgPT4gKHtcclxuICAgICAgLi4uY3VycmVudCxcclxuICAgICAgW2NvbHVtbi5maWVsZF06IHtcclxuICAgICAgICB2YWx1ZTogdGhpcy5nZXREZWZhdWx0RmlsdGVyVmFsdWUoY29sdW1uLmZpbHRlclR5cGUhKSxcclxuICAgICAgICBtYXRjaE1vZGU6IGN1cnJlbnRbY29sdW1uLmZpZWxkXS5tYXRjaE1vZGUsXHJcbiAgICAgIH0sXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBjbGVhckFsbEZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmZpbHRlckNvbHVtbnMoKS5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgIHRoaXMuY2xlYXJGaWx0ZXIoY29sdW1uKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2hvd0FsbEZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmZpbHRlckNvbHVtbnMudXBkYXRlKGNvbHVtbnMgPT5cclxuICAgICAgY29sdW1ucy5tYXAoY29sdW1uID0+ICh7IC4uLmNvbHVtbiwgZXhwYW5kZWQ6IHRydWUgfSkpXHJcbiAgICApO1xyXG4gICAgdGhpcy5hbGxWaXNpYmxlLnNldCh0cnVlKTtcclxuICB9XHJcblxyXG4gIGhpZGVBbGxGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5maWx0ZXJDb2x1bW5zLnVwZGF0ZShjb2x1bW5zID0+XHJcbiAgICAgIGNvbHVtbnMubWFwKGNvbHVtbiA9PiAoeyAuLi5jb2x1bW4sIGV4cGFuZGVkOiBmYWxzZSB9KSlcclxuICAgICk7XHJcbiAgICB0aGlzLmFsbFZpc2libGUuc2V0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHNhdmVGaWx0ZXJzKCkge1xyXG4gICAgY29uc3QgZmlsdGVyc1JlYWR5OiB7IFtrZXk6IHN0cmluZ106IFN0TWF0ZXJpYWxUYWJsZUZpbHRlciB9ID0ge307XHJcbiAgICBjb25zdCBmaWx0ZXJLZXlzID0gT2JqZWN0LmtleXModGhpcy5maWx0ZXJzVmFsdWUoKSk7XHJcbiAgICBmaWx0ZXJLZXlzLmZvckVhY2goZmlsdGVyS2V5ID0+IHtcclxuICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5maWx0ZXJzVmFsdWUoKVtmaWx0ZXJLZXldO1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWx0ZXIudmFsdWUpKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgKGZpbHRlci52YWx1ZVswXSAhPT0gbnVsbCAmJiBmaWx0ZXIudmFsdWVbMF0gIT09IHVuZGVmaW5lZCkgfHxcclxuICAgICAgICAgIChmaWx0ZXIudmFsdWVbMV0gIT09IG51bGwgJiYgZmlsdGVyLnZhbHVlWzFdICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBmaWx0ZXJzUmVhZHlbZmlsdGVyS2V5XSA9IHRoaXMuZmlsdGVyc1ZhbHVlKClbZmlsdGVyS2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZmlsdGVyLnZhbHVlICE9PSBudWxsICYmXHJcbiAgICAgICAgICBmaWx0ZXIudmFsdWUgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgZmlsdGVyLnZhbHVlICE9PSAnJ1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgZmlsdGVyc1JlYWR5W2ZpbHRlcktleV0gPSB0aGlzLmZpbHRlcnNWYWx1ZSgpW2ZpbHRlcktleV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XHJcbiAgICAgIGZpbHRlcnM6IGZpbHRlcnNSZWFkeSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyVmFsdWVDaGFuZ2VkKFxyXG4gICAgY29sdW1uOiBWaWV3U3RNYXRlcmlhbFRhYmxlQ29sdW1uTW9kZWwsXHJcbiAgICBuZXdGaWx0ZXI6IFN0TWF0ZXJpYWxUYWJsZUZpbHRlclxyXG4gICkge1xyXG4gICAgdGhpcy5maWx0ZXJzVmFsdWUudXBkYXRlKGN1cnJlbnQgPT4gKHtcclxuICAgICAgLi4uY3VycmVudCxcclxuICAgICAgW2NvbHVtbi5maWVsZF06IG5ld0ZpbHRlcixcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGVmYXVsdEZpbHRlclZhbHVlKFxyXG4gICAgZmlsdGVyVHlwZTogU3RNYXRlcmlhbENvbHVtbkZpbHRlclR5cGVcclxuICApOiBTdE1hdGVyaWFsVGFibGVGaWx0ZXJWYWx1ZVR5cGUge1xyXG4gICAgc3dpdGNoIChmaWx0ZXJUeXBlKSB7XHJcbiAgICAgIGNhc2UgJ2RhdGUnOlxyXG4gICAgICAgIHJldHVybiBbbnVsbCwgbnVsbF07XHJcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxyXG4gICAgICBjYXNlICdudW1iZXInOlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRCYXNlTWF0Y2hNb2RlQnlUeXBlKFxyXG4gICAgZmlsdGVyVHlwZTogU3RNYXRlcmlhbENvbHVtbkZpbHRlclR5cGVcclxuICApOiAnY29udGFpbnMnIHwgJ2VxdWFsJyB8ICdiZXR3ZWVuJyB7XHJcbiAgICBpZiAoZmlsdGVyVHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgIHJldHVybiAnYmV0d2Vlbic7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICBmaWx0ZXJUeXBlID09PSAnbnVtYmVyJyB8fFxyXG4gICAgICBmaWx0ZXJUeXBlID09PSAnYm9vbGVhbicgfHxcclxuICAgICAgZmlsdGVyVHlwZSA9PT0gJ2N1c3RvbSdcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gJ2VxdWFsJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnY29udGFpbnMnO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNYXRlcmlhbFRhYmxlRmlsdGVyRGlhbG9nUmVzdWx0IHtcclxuICBmaWx0ZXJzOiB7IFtrZXk6IHN0cmluZ106IFN0TWF0ZXJpYWxUYWJsZUZpbHRlciB9O1xyXG59XHJcbiIsIjxoMyBtYXQtZGlhbG9nLXRpdGxlIGNsYXNzPVwiZmlsdGVycy1kaWFsb2ctdGl0bGVcIj5cclxuICB7eyBzdFRhYmxlVHJhbnNsYXRpb25zLmdldFRyYW5zbGF0aW9ucygpKCkuZmlsdGVyVGl0bGUgfX1cclxuICA8ZGl2IGNsYXNzPVwiZmlsdGVycy1zaG93LWhpZGVcIj5cclxuICAgIEBpZiAoIWFsbFZpc2libGUoKSkge1xyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgKGNsaWNrKT1cInNob3dBbGxGaWx0ZXJzKClcIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cInN0VGFibGVUcmFuc2xhdGlvbnMuZ2V0VHJhbnNsYXRpb25zKCkoKS5leHBhbmRBbGxGaWx0ZXJzXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtaWNvbj51bmZvbGRfbW9yZTwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gICAgQGlmIChhbGxWaXNpYmxlKCkpIHtcclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgIChjbGljayk9XCJoaWRlQWxsRmlsdGVycygpXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJcclxuICAgICAgICAgIHN0VGFibGVUcmFuc2xhdGlvbnMuZ2V0VHJhbnNsYXRpb25zKCkoKS5jb2xsYXBzZUFsbEZpbHRlcnNcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1pY29uPnVuZm9sZF9sZXNzPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICB9XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgKGNsaWNrKT1cImNsZWFyQWxsRmlsdGVycygpXCJcclxuICAgICAgW21hdFRvb2x0aXBdPVwic3RUYWJsZVRyYW5zbGF0aW9ucy5nZXRUcmFuc2xhdGlvbnMoKSgpLmNsZWFyQWxsRmlsdGVyc1wiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvbj5maWx0ZXJfYWx0X29mZjwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9oMz5cclxuXHJcbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPGhyIC8+XHJcbiAgQGZvciAoY29sdW1uIG9mIGZpbHRlckNvbHVtbnMoKTsgdHJhY2sgY29sdW1uLmZpZWxkKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItdGl0bGUgcm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICB7eyBjb2x1bW4uaGVhZGVyIH19XHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICBAaWYgKGhhc0ZpbHRlclZhbHVlKGNvbHVtbikpIHtcclxuICAgICAgICAgICAgPG1hdC1pY29uXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyRmlsdGVyKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLXZhbHVlLWNsZWFyXCJcclxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJzdFRhYmxlVHJhbnNsYXRpb25zLmdldFRyYW5zbGF0aW9ucygpKCkuY2xlYXJGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgID5maWx0ZXJfYWx0X29mZjwvbWF0LWljb25cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICBAaWYgKGNvbHVtbi5leHBhbmRlZCkge1xyXG4gICAgICAgICAgPG1hdC1pY29uIChjbGljayk9XCJjb2x1bW4uZXhwYW5kZWQgPSAhY29sdW1uLmV4cGFuZGVkXCJcclxuICAgICAgICAgICAgPmtleWJvYXJkX2Fycm93X3VwPC9tYXQtaWNvblxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgPG1hdC1pY29uIChjbGljayk9XCJjb2x1bW4uZXhwYW5kZWQgPSAhY29sdW1uLmV4cGFuZGVkXCJcclxuICAgICAgICAgICAgPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1jb250ZW50IHJvd1wiIFtuZ0NsYXNzXT1cInsgaGlkZTogIWNvbHVtbi5leHBhbmRlZCB9XCI+XHJcbiAgICAgICAgPG5neC1zdC1tYXRlcmlhbC10YWJsZS1maWx0ZXJcclxuICAgICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcclxuICAgICAgICAgIFtmaWx0ZXJWYWx1ZV09XCJmaWx0ZXJzVmFsdWUoKVtjb2x1bW4uZmllbGRdXCJcclxuICAgICAgICAgIChmaWx0ZXJWYWx1ZUNoYW5nZWQpPVwiZmlsdGVyVmFsdWVDaGFuZ2VkKGNvbHVtbiwgJGV2ZW50KVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbjwvbWF0LWRpYWxvZy1jb250ZW50PlxyXG48bWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWJldHdlZW5cIiBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtZmxhdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZT5cclxuICAgICAge3sgc3RUYWJsZVRyYW5zbGF0aW9ucy5nZXRUcmFuc2xhdGlvbnMoKSgpLmNhbmNlbCB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBtYXQtZmxhdC1idXR0b25cclxuICAgICAgY29sb3I9XCJhY2NlbnRcIlxyXG4gICAgICAoY2xpY2spPVwic2F2ZUZpbHRlcnMoKVwiXHJcbiAgICA+XHJcbiAgICAgIHt7IHN0VGFibGVUcmFuc2xhdGlvbnMuZ2V0VHJhbnNsYXRpb25zKCkoKS5zYXZlIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XHJcbiJdfQ==
131
+ args: [{ selector: 'st-material-table-filter-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<h3 mat-dialog-title class=\"filters-dialog-title\">\r\n {{ translations().filterTitle }}\r\n <div class=\"filters-show-hide\">\r\n @if (!allVisible()) {\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"showAllFilters()\"\r\n [matTooltip]=\"translations().expandAllFilters\"\r\n >\r\n <mat-icon>unfold_more</mat-icon>\r\n </button>\r\n }\r\n @if (allVisible()) {\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"hideAllFilters()\"\r\n [matTooltip]=\"translations().collapseAllFilters\"\r\n >\r\n <mat-icon>unfold_less</mat-icon>\r\n </button>\r\n }\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"clearAllFilters()\"\r\n [matTooltip]=\"translations().clearAllFilters\"\r\n >\r\n <mat-icon>filter_alt_off</mat-icon>\r\n </button>\r\n </div>\r\n</h3>\r\n\r\n<mat-dialog-content>\r\n <hr />\r\n @for (column of filterColumns(); track column.field) {\r\n <div class=\"filter\">\r\n <div class=\"filter-title row justify-content-between\">\r\n <div class=\"row align-items-center\">\r\n <p>\r\n {{ column.header }}\r\n </p>\r\n @if (hasFilterValue(column)) {\r\n <mat-icon\r\n (click)=\"clearFilter(column)\"\r\n class=\"filter-value-clear\"\r\n [matTooltip]=\"translations().clearFilter\"\r\n >filter_alt_off</mat-icon\r\n >\r\n }\r\n </div>\r\n\r\n @if (column.expanded) {\r\n <mat-icon (click)=\"column.expanded = !column.expanded\"\r\n >keyboard_arrow_up</mat-icon\r\n >\r\n } @else {\r\n <mat-icon (click)=\"column.expanded = !column.expanded\"\r\n >keyboard_arrow_down</mat-icon\r\n >\r\n }\r\n </div>\r\n <div class=\"filter-content row\" [ngClass]=\"{ hide: !column.expanded }\">\r\n <ngx-st-material-table-filter\r\n [column]=\"column\"\r\n [filterValue]=\"filtersValue()[column.field]\"\r\n (filterValueChanged)=\"filterValueChanged(column, $event)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div class=\"row justify-content-between dialog-actions-wrapper\">\r\n <button type=\"button\" mat-flat-button mat-dialog-close>\r\n {{ translations().cancel }}\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n color=\"accent\"\r\n (click)=\"saveFilters()\"\r\n >\r\n {{ translations().save }}\r\n </button>\r\n </div>\r\n</mat-dialog-actions>\r\n", styles: [".filters-dialog-title .filters-show-hide{position:absolute;top:6px;right:15px}.filter{width:100%;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--surface-100, #e0e0e0)}.filter .filter-title{padding:.5rem 0;font-size:1rem;font-weight:500}.filter .filter-title p{margin:0;font-weight:500}.filter .filter-title mat-icon{cursor:pointer}.filter .filter-title .filter-value-clear{font-size:1.2rem;width:1.2rem;height:1.2rem;margin-top:-2px;margin-left:.5rem;color:red}.filter .filter-content{margin-top:.5rem;gap:.5rem}.filter .filter-content.hide{display:none}.filter .filter-content>div.col-auto,.filter .filter-content>div.col{padding:0!important}.filter .filter-content mat-form-field{width:100%}.dialog-actions-wrapper{width:100%}\n"] }]
132
+ }] });
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtdGFibGUtZmlsdGVyLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3QtdGFibGVzL3NyYy9saWIvY29tcG9uZW50cy9tYXRlcmlhbC10YWJsZS9tYXRlcmlhbC10YWJsZS1jYXB0aW9uL21hdGVyaWFsLXRhYmxlLWZpbHRlci1kaWFsb2cvbWF0ZXJpYWwtdGFibGUtZmlsdGVyLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3QtdGFibGVzL3NyYy9saWIvY29tcG9uZW50cy9tYXRlcmlhbC10YWJsZS9tYXRlcmlhbC10YWJsZS1jYXB0aW9uL21hdGVyaWFsLXRhYmxlLWZpbHRlci1kaWFsb2cvbWF0ZXJpYWwtdGFibGUtZmlsdGVyLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBRU4sTUFBTSxFQUNOLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOzs7Ozs7OztBQWFsRyxNQUFNLE9BQU8sa0NBQWtDO0lBTi9DO1FBT1MsZUFBVSxHQUFHLE1BQU0sQ0FHdkIsZUFBZSxDQUFDLENBQUM7UUFFYixjQUFTLEdBQUcsTUFBTSxDQUN2QixDQUFBLFlBR0MsQ0FBQSxDQUNGLENBQUM7UUFFTSx3QkFBbUIsR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUVsRSx3Q0FBd0M7UUFDeEMsaUJBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFD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TixPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQzsrR0E5SlUsa0NBQWtDO21HQUFsQyxrQ0FBa0MsdUVDdkIvQyx5ckZBd0ZBOzs0RkRqRWEsa0NBQWtDO2tCQU45QyxTQUFTOytCQUNFLGlDQUFpQyxtQkFHMUIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIGluamVjdCxcclxuICBPbkluaXQsXHJcbiAgc2lnbmFsLFxyXG4gIGNvbXB1dGVkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFZpZXdTdE1hdGVyaWFsVGFibGVDb2x1bW5Nb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy92aWV3L3ZpZXctc3QtbWF0ZXJpYWwtdGFibGUtY29sdW1uLm1vZGVsJztcclxuaW1wb3J0IHsgU3RUYWJsZXNUcmFuc2xhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvc3QtdGFibGVzLXRyYW5zbGF0aW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RNYXRlcmlhbENvbHVtbkZpbHRlclR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvc3QtbWF0ZXJpYWwtdGFibGUtY29sdW1uLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBTdE1hdGVyaWFsVGFibGVGaWx0ZXIsXHJcbiAgU3RNYXRlcmlhbFRhYmxlRmlsdGVyVmFsdWVUeXBlLFxyXG59IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9tb2RlbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzdC1tYXRlcmlhbC10YWJsZS1maWx0ZXItZGlhbG9nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWF0ZXJpYWwtdGFibGUtZmlsdGVyLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbWF0ZXJpYWwtdGFibGUtZmlsdGVyLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWxUYWJsZUZpbHRlckRpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHVibGljIGRpYWxvZ0RhdGEgPSBpbmplY3Q8e1xyXG4gICAgY29sdW1uczogVmlld1N0TWF0ZXJpYWxUYWJsZUNvbHVtbk1vZGVsW107XHJcbiAgICBpbml0RmlsdGVyczogeyBba2V5OiBzdHJpbmddOiBTdE1hdGVyaWFsVGFibGVGaWx0ZXIgfTtcclxuICB9PihNQVRfRElBTE9HX0RBVEEpO1xyXG5cclxuICBwdWJsaWMgZGlhbG9nUmVmID0gaW5qZWN0KFxyXG4gICAgTWF0RGlhbG9nUmVmPFxyXG4gICAgICBNYXRlcmlhbFRhYmxlRmlsdGVyRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgICBNYXRlcmlhbFRhYmxlRmlsdGVyRGlhbG9nUmVzdWx0XHJcbiAgICA+XHJcbiAgKTtcclxuXHJcbiAgcHJpdmF0ZSBzdFRhYmxlVHJhbnNsYXRpb25zID0gaW5qZWN0KFN0VGFibGVzVHJhbnNsYXRpb25zU2VydmljZSk7XHJcblxyXG4gIC8vIENhY2hlIHRyYW5zbGF0aW9ucyBhcyBjb21wdXRlZCBzaWduYWxcclxuICB0cmFuc2xhdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0VGFibGVUcmFuc2xhdGlvbnMuZ2V0VHJhbnNsYXRpb25zKCkoKSk7XHJcblxyXG4gIGZpbHRlckNvbHVtbnMgPSBzaWduYWw8Vmlld1N0TWF0ZXJpYWxUYWJsZUNvbHVtbk1vZGVsW10+KFtdKTtcclxuICBhbGxWaXNpYmxlID0gc2lnbmFsKHRydWUpO1xyXG4gIGZpbHRlcnNWYWx1ZSA9IHNpZ25hbDx7IFtrZXk6IHN0cmluZ106IFN0TWF0ZXJpYWxUYWJsZUZpbHRlciB9Pih7fSk7XHJcblxyXG4gIGhhc0ZpbHRlclZhbHVlKGNvbHVtbjogVmlld1N0TWF0ZXJpYWxUYWJsZUNvbHVtbk1vZGVsKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmZpbHRlcnNWYWx1ZSgpW2NvbHVtbi5maWVsZF07XHJcbiAgICBpZiAoIWZpbHRlcj8udmFsdWUpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAoY29sdW1uLmZpbHRlclR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICBjb25zdCBkYXRlVmFsdWVzID0gZmlsdGVyLnZhbHVlIGFzIFtzdHJpbmcgfCBudWxsLCBzdHJpbmcgfCBudWxsXTtcclxuICAgICAgcmV0dXJuICEhKGRhdGVWYWx1ZXM/LlswXSB8fCBkYXRlVmFsdWVzPy5bMV0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAhIWZpbHRlci52YWx1ZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy8gSW5pdGlhbGl6ZSBmaWx0ZXJzIGZvciBhbGwgZmlsdGVyYWJsZSBjb2x1bW5zXHJcbiAgICBjb25zdCBpbml0aWFsRmlsdGVyczogeyBba2V5OiBzdHJpbmddOiBTdE1hdGVyaWFsVGFibGVGaWx0ZXIgfSA9IHt9O1xyXG5cclxuICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmRpYWxvZ0RhdGEuY29sdW1uc1xyXG4gICAgICAuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmlsdGVyKVxyXG4gICAgICAubWFwKGNvbCA9PiB7XHJcbiAgICAgICAgLy8gU2V0IGRlZmF1bHQgZmlsdGVyIHZhbHVlIGJhc2VkIG9uIHR5cGVcclxuICAgICAgICBpbml0aWFsRmlsdGVyc1tjb2wuZmllbGRdID0ge1xyXG4gICAgICAgICAgdmFsdWU6IHRoaXMuZ2V0RGVmYXVsdEZpbHRlclZhbHVlKGNvbC5maWx0ZXJUeXBlISksXHJcbiAgICAgICAgICBtYXRjaE1vZGU6IE1hdGVyaWFsVGFibGVGaWx0ZXJEaWFsb2dDb21wb25lbnQuZ2V0QmFzZU1hdGNoTW9kZUJ5VHlwZShcclxuICAgICAgICAgICAgY29sLmZpbHRlclR5cGUhXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5jb2wsXHJcbiAgICAgICAgICBleHBhbmRlZDogdHJ1ZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZpbHRlckNvbHVtbnMuc2V0KGNvbHVtbnMpO1xyXG5cclxuICAgIC8vIEFwcGx5IGluaXRpYWwgZmlsdGVyIHZhbHVlcyBpZiBwcm92aWRlZFxyXG4gICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5pbml0RmlsdGVycykge1xyXG4gICAgICBPYmplY3QuZW50cmllcyh0aGlzLmRpYWxvZ0RhdGEuaW5pdEZpbHRlcnMpLmZvckVhY2goKFtrZXksIGZpbHRlcl0pID0+IHtcclxuICAgICAgICBpZiAoZmlsdGVyLnZhbHVlICE9PSBudWxsICYmIGZpbHRlci52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBpbml0aWFsRmlsdGVyc1trZXldID0geyAuLi5maWx0ZXIgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmlsdGVyc1ZhbHVlLnNldChpbml0aWFsRmlsdGVycyk7XHJcbiAgfVxyXG5cclxuICBjbGVhckZpbHRlcihjb2x1bW46IFZpZXdTdE1hdGVyaWFsVGFibGVDb2x1bW5Nb2RlbCkge1xyXG4gICAgdGhpcy5maWx0ZXJzVmFsdWUudXBkYXRlKGN1cnJlbnQgPT4gKHtcclxuICAgICAgLi4uY3VycmVudCxcclxuICAgICAgW2NvbHVtbi5maWVsZF06IHtcclxuICAgICAgICB2YWx1ZTogdGhpcy5nZXREZWZhdWx0RmlsdGVyVmFsdWUoY29sdW1uLmZpbHRlclR5cGUhKSxcclxuICAgICAgICBtYXRjaE1vZGU6IGN1cnJlbnRbY29sdW1uLmZpZWxkXS5tYXRjaE1vZGUsXHJcbiAgICAgIH0sXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBjbGVhckFsbEZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmZpbHRlckNvbHVtbnMoKS5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgIHRoaXMuY2xlYXJGaWx0ZXIoY29sdW1uKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2hvd0FsbEZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmZpbHRlckNvbHVtbnMudXBkYXRlKGNvbHVtbnMgPT5cclxuICAgICAgY29sdW1ucy5tYXAoY29sdW1uID0+ICh7IC4uLmNvbHVtbiwgZXhwYW5kZWQ6IHRydWUgfSkpXHJcbiAgICApO1xyXG4gICAgdGhpcy5hbGxWaXNpYmxlLnNldCh0cnVlKTtcclxuICB9XHJcblxyXG4gIGhpZGVBbGxGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5maWx0ZXJDb2x1bW5zLnVwZGF0ZShjb2x1bW5zID0+XHJcbiAgICAgIGNvbHVtbnMubWFwKGNvbHVtbiA9PiAoeyAuLi5jb2x1bW4sIGV4cGFuZGVkOiBmYWxzZSB9KSlcclxuICAgICk7XHJcbiAgICB0aGlzLmFsbFZpc2libGUuc2V0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHNhdmVGaWx0ZXJzKCkge1xyXG4gICAgLy8gT25seSBpbmNsdWRlIGZpbHRlcnMgdGhhdCBoYXZlIHZhbHVlc1xyXG4gICAgY29uc3QgZmlsdGVyc1JlYWR5ID0gT2JqZWN0LmVudHJpZXModGhpcy5maWx0ZXJzVmFsdWUoKSkucmVkdWNlKFxyXG4gICAgICAoYWNjLCBba2V5LCBmaWx0ZXJdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaGFzVmFsdWUgPSBBcnJheS5pc0FycmF5KGZpbHRlci52YWx1ZSlcclxuICAgICAgICAgID8gZmlsdGVyLnZhbHVlLnNvbWUodiA9PiB2ICE9PSBudWxsICYmIHYgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgIDogZmlsdGVyLnZhbHVlICE9PSBudWxsICYmXHJcbiAgICAgICAgICAgIGZpbHRlci52YWx1ZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgICAgIGZpbHRlci52YWx1ZSAhPT0gJyc7XHJcblxyXG4gICAgICAgIGlmIChoYXNWYWx1ZSkge1xyXG4gICAgICAgICAgYWNjW2tleV0gPSBmaWx0ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgIH0sXHJcbiAgICAgIHt9IGFzIHsgW2tleTogc3RyaW5nXTogU3RNYXRlcmlhbFRhYmxlRmlsdGVyIH1cclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoeyBmaWx0ZXJzOiBmaWx0ZXJzUmVhZHkgfSk7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJWYWx1ZUNoYW5nZWQoXHJcbiAgICBjb2x1bW46IFZpZXdTdE1hdGVyaWFsVGFibGVDb2x1bW5Nb2RlbCxcclxuICAgIG5ld0ZpbHRlcjogU3RNYXRlcmlhbFRhYmxlRmlsdGVyXHJcbiAgKSB7XHJcbiAgICB0aGlzLmZpbHRlcnNWYWx1ZS51cGRhdGUoY3VycmVudCA9PiAoe1xyXG4gICAgICAuLi5jdXJyZW50LFxyXG4gICAgICBbY29sdW1uLmZpZWxkXTogbmV3RmlsdGVyLFxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREZWZhdWx0RmlsdGVyVmFsdWUoXHJcbiAgICBmaWx0ZXJUeXBlOiBTdE1hdGVyaWFsQ29sdW1uRmlsdGVyVHlwZVxyXG4gICk6IFN0TWF0ZXJpYWxUYWJsZUZpbHRlclZhbHVlVHlwZSB7XHJcbiAgICBzd2l0Y2ggKGZpbHRlclR5cGUpIHtcclxuICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgcmV0dXJuIFtudWxsLCBudWxsXTtcclxuICAgICAgY2FzZSAnYm9vbGVhbic6XHJcbiAgICAgIGNhc2UgJ251bWJlcic6XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEJhc2VNYXRjaE1vZGVCeVR5cGUoXHJcbiAgICBmaWx0ZXJUeXBlOiBTdE1hdGVyaWFsQ29sdW1uRmlsdGVyVHlwZVxyXG4gICk6ICdjb250YWlucycgfCAnZXF1YWwnIHwgJ2JldHdlZW4nIHtcclxuICAgIGlmIChmaWx0ZXJUeXBlID09PSAnZGF0ZScpIHtcclxuICAgICAgcmV0dXJuICdiZXR3ZWVuJztcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIGZpbHRlclR5cGUgPT09ICdudW1iZXInIHx8XHJcbiAgICAgIGZpbHRlclR5cGUgPT09ICdib29sZWFuJyB8fFxyXG4gICAgICBmaWx0ZXJUeXBlID09PSAnY3VzdG9tJ1xyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiAnZXF1YWwnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICdjb250YWlucyc7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1hdGVyaWFsVGFibGVGaWx0ZXJEaWFsb2dSZXN1bHQge1xyXG4gIGZpbHRlcnM6IHsgW2tleTogc3RyaW5nXTogU3RNYXRlcmlhbFRhYmxlRmlsdGVyIH07XHJcbn1cclxuIiwiPGgzIG1hdC1kaWFsb2ctdGl0bGUgY2xhc3M9XCJmaWx0ZXJzLWRpYWxvZy10aXRsZVwiPlxyXG4gIHt7IHRyYW5zbGF0aW9ucygpLmZpbHRlclRpdGxlIH19XHJcbiAgPGRpdiBjbGFzcz1cImZpbHRlcnMtc2hvdy1oaWRlXCI+XHJcbiAgICBAaWYgKCFhbGxWaXNpYmxlKCkpIHtcclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgIChjbGljayk9XCJzaG93QWxsRmlsdGVycygpXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJ0cmFuc2xhdGlvbnMoKS5leHBhbmRBbGxGaWx0ZXJzXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtaWNvbj51bmZvbGRfbW9yZTwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gICAgQGlmIChhbGxWaXNpYmxlKCkpIHtcclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgIChjbGljayk9XCJoaWRlQWxsRmlsdGVycygpXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJ0cmFuc2xhdGlvbnMoKS5jb2xsYXBzZUFsbEZpbHRlcnNcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1pY29uPnVuZm9sZF9sZXNzPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICB9XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgKGNsaWNrKT1cImNsZWFyQWxsRmlsdGVycygpXCJcclxuICAgICAgW21hdFRvb2x0aXBdPVwidHJhbnNsYXRpb25zKCkuY2xlYXJBbGxGaWx0ZXJzXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uPmZpbHRlcl9hbHRfb2ZmPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2gzPlxyXG5cclxuPG1hdC1kaWFsb2ctY29udGVudD5cclxuICA8aHIgLz5cclxuICBAZm9yIChjb2x1bW4gb2YgZmlsdGVyQ29sdW1ucygpOyB0cmFjayBjb2x1bW4uZmllbGQpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci10aXRsZSByb3cganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgIHt7IGNvbHVtbi5oZWFkZXIgfX1cclxuICAgICAgICAgIDwvcD5cclxuICAgICAgICAgIEBpZiAoaGFzRmlsdGVyVmFsdWUoY29sdW1uKSkge1xyXG4gICAgICAgICAgICA8bWF0LWljb25cclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItdmFsdWUtY2xlYXJcIlxyXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cInRyYW5zbGF0aW9ucygpLmNsZWFyRmlsdGVyXCJcclxuICAgICAgICAgICAgICA+ZmlsdGVyX2FsdF9vZmY8L21hdC1pY29uXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgQGlmIChjb2x1bW4uZXhwYW5kZWQpIHtcclxuICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiY29sdW1uLmV4cGFuZGVkID0gIWNvbHVtbi5leHBhbmRlZFwiXHJcbiAgICAgICAgICAgID5rZXlib2FyZF9hcnJvd191cDwvbWF0LWljb25cclxuICAgICAgICAgID5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiY29sdW1uLmV4cGFuZGVkID0gIWNvbHVtbi5leHBhbmRlZFwiXHJcbiAgICAgICAgICAgID5rZXlib2FyZF9hcnJvd19kb3duPC9tYXQtaWNvblxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItY29udGVudCByb3dcIiBbbmdDbGFzc109XCJ7IGhpZGU6ICFjb2x1bW4uZXhwYW5kZWQgfVwiPlxyXG4gICAgICAgIDxuZ3gtc3QtbWF0ZXJpYWwtdGFibGUtZmlsdGVyXHJcbiAgICAgICAgICBbY29sdW1uXT1cImNvbHVtblwiXHJcbiAgICAgICAgICBbZmlsdGVyVmFsdWVdPVwiZmlsdGVyc1ZhbHVlKClbY29sdW1uLmZpZWxkXVwiXHJcbiAgICAgICAgICAoZmlsdGVyVmFsdWVDaGFuZ2VkKT1cImZpbHRlclZhbHVlQ2hhbmdlZChjb2x1bW4sICRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG48L21hdC1kaWFsb2ctY29udGVudD5cclxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGRpYWxvZy1hY3Rpb25zLXdyYXBwZXJcIj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1mbGF0LWJ1dHRvbiBtYXQtZGlhbG9nLWNsb3NlPlxyXG4gICAgICB7eyB0cmFuc2xhdGlvbnMoKS5jYW5jZWwgfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgbWF0LWZsYXQtYnV0dG9uXHJcbiAgICAgIGNvbG9yPVwiYWNjZW50XCJcclxuICAgICAgKGNsaWNrKT1cInNhdmVGaWx0ZXJzKClcIlxyXG4gICAgPlxyXG4gICAgICB7eyB0cmFuc2xhdGlvbnMoKS5zYXZlIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XHJcbiJdfQ==