@one-paragon/angular-utilities 0.0.25 → 0.0.26

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.
@@ -3,9 +3,11 @@ export class GeneralTableSettings {
3
3
  constructor(settings) {
4
4
  this.headerSettings = new TableWrapperHeaderSettings();
5
5
  this.footerSettings = new TableWrapperFooterSettings();
6
+ this.columnHeaderSettings = new TableColumnHeaderSettings();
6
7
  if (settings) {
7
8
  merge(this.headerSettings, settings.headerSettings);
8
9
  merge(this.footerSettings, settings.footerSettings);
10
+ merge(this.columnHeaderSettings, settings.columnHeaderSettings);
9
11
  }
10
12
  }
11
13
  }
@@ -14,6 +16,7 @@ export class TableWrapperHeaderSettings {
14
16
  this.hideExport = false;
15
17
  this.hideFilter = false;
16
18
  this.hideColumnSettings = false;
19
+ this.hideHeader = false;
17
20
  this.hideSort = false;
18
21
  this.collapse = false;
19
22
  this.showTitleWhenCollapsed = true;
@@ -24,6 +27,12 @@ export class TableWrapperFooterSettings {
24
27
  this.collapse = false;
25
28
  }
26
29
  }
30
+ export class TableColumnHeaderSettings {
31
+ constructor() {
32
+ this.noFilters = false;
33
+ this.noHeader = false;
34
+ }
35
+ }
27
36
  export class PesrsistedTableSettings {
28
37
  constructor(tableSettings) {
29
38
  this.collapseHeader = false;
@@ -41,13 +50,19 @@ export class NotPersisitedTableSettings {
41
50
  this.hideColumnSettings = true;
42
51
  this.hideSort = true;
43
52
  this.showTitleWhenHeaderCollapsed = true;
53
+ this.hideHeader = true;
54
+ this.hideColumnHeaderFilters = true;
55
+ this.hideColumnHeader = true;
44
56
  if (tableSettings) {
45
57
  this.hideExport = tableSettings.headerSettings.hideExport;
46
58
  this.hideColumnSettings = tableSettings.headerSettings.hideColumnSettings;
47
59
  this.hideFilter = tableSettings.headerSettings.hideFilter;
48
60
  this.hideSort = tableSettings.headerSettings.hideSort;
49
61
  this.showTitleWhenHeaderCollapsed = tableSettings.headerSettings.showTitleWhenCollapsed;
62
+ this.hideHeader = tableSettings.headerSettings.hideHeader;
63
+ this.hideColumnHeaderFilters = tableSettings.columnHeaderSettings.noFilters;
64
+ this.hideColumnHeader = tableSettings.columnHeaderSettings.noHeader;
50
65
  }
51
66
  }
52
67
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYnVpbGRlci1nZW5lcmFsLXNldHRpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY2xhc3Nlcy90YWJsZS1idWlsZGVyLWdlbmVyYWwtc2V0dGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUUvQixNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQVksUUFBZ0M7UUFNNUMsbUJBQWMsR0FBRyxJQUFJLDBCQUEwQixFQUFFLENBQUM7UUFDbEQsbUJBQWMsR0FBRyxJQUFJLDBCQUEwQixFQUFFLENBQUM7UUFOaEQsSUFBRyxRQUFRLEVBQUM7WUFDVixLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDbkQsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3BEO0lBQ0gsQ0FBQztDQUdGO0FBT0QsTUFBTSxPQUFPLDBCQUEwQjtJQUF2QztRQUNFLGVBQVUsR0FBRyxLQUFLLENBQUE7UUFDbEIsZUFBVSxHQUFHLEtBQUssQ0FBQTtRQUNsQix1QkFBa0IsR0FBRyxLQUFLLENBQUE7UUFDMUIsYUFBUSxHQUFHLEtBQUssQ0FBQTtRQUNoQixhQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ2hCLDJCQUFzQixHQUFHLElBQUksQ0FBQztJQUNoQyxDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8sMEJBQTBCO0lBQXZDO1FBQ0UsYUFBUSxHQUFHLEtBQUssQ0FBQTtJQUNsQixDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLFlBQVksYUFBOEQ7UUFNMUUsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFOckIsSUFBSSxhQUFhLEVBQUM7WUFDaEIsSUFBSSxDQUFDLGNBQWMsR0FBSSxhQUFzQyxDQUFDLGNBQWMsRUFBRSxRQUFRLElBQUssYUFBeUMsQ0FBQyxjQUFjLENBQUM7WUFDcEosSUFBSSxDQUFDLGNBQWMsR0FBSSxhQUFzQyxDQUFDLGNBQWMsRUFBRSxRQUFRLElBQUssYUFBeUMsQ0FBQyxjQUFjLENBQUM7U0FDcko7SUFDSCxDQUFDO0NBR0Y7QUFFRCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFlBQVksYUFBb0M7UUFTaEQsZUFBVSxHQUFHLElBQUksQ0FBQTtRQUNqQixlQUFVLEdBQUcsSUFBSSxDQUFBO1FBQ2pCLHVCQUFrQixHQUFHLElBQUksQ0FBQTtRQUN6QixhQUFRLEdBQUcsSUFBSSxDQUFBO1FBQ2YsaUNBQTRCLEdBQUcsSUFBSSxDQUFDO1FBWmxDLElBQUcsYUFBYSxFQUFDO1lBQ2YsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztZQUMxRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQztZQUMxRSxJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO1lBQzFELElBQUksQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7WUFDdEQsSUFBSSxDQUFDLDRCQUE0QixHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUM7U0FDekY7SUFDSCxDQUFDO0NBTUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtZXJnZSB9IGZyb20gXCJsb2Rhc2hcIjtcblxuZXhwb3J0IGNsYXNzIEdlbmVyYWxUYWJsZVNldHRpbmdzIHtcbiAgY29uc3RydWN0b3Ioc2V0dGluZ3M/IDogVGFibGVCdWlsZGVyU2V0dGluZ3Mpe1xuICAgIGlmKHNldHRpbmdzKXtcbiAgICAgIG1lcmdlKHRoaXMuaGVhZGVyU2V0dGluZ3Msc2V0dGluZ3MuaGVhZGVyU2V0dGluZ3MpO1xuICAgICAgbWVyZ2UodGhpcy5mb290ZXJTZXR0aW5ncyxzZXR0aW5ncy5mb290ZXJTZXR0aW5ncyk7XG4gICAgfVxuICB9XG4gIGhlYWRlclNldHRpbmdzID0gbmV3IFRhYmxlV3JhcHBlckhlYWRlclNldHRpbmdzKCk7XG4gIGZvb3RlclNldHRpbmdzID0gbmV3IFRhYmxlV3JhcHBlckZvb3RlclNldHRpbmdzKCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVCdWlsZGVyU2V0dGluZ3Mge1xuICBoZWFkZXJTZXR0aW5ncz8gOiBQYXJ0aWFsPFRhYmxlV3JhcHBlckhlYWRlclNldHRpbmdzPjtcbiAgZm9vdGVyU2V0dGluZ3M/IDogUGFydGlhbDxUYWJsZVdyYXBwZXJGb290ZXJTZXR0aW5ncz47XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZVdyYXBwZXJIZWFkZXJTZXR0aW5ncyB7XG4gIGhpZGVFeHBvcnQgPSBmYWxzZVxuICBoaWRlRmlsdGVyID0gZmFsc2VcbiAgaGlkZUNvbHVtblNldHRpbmdzID0gZmFsc2VcbiAgaGlkZVNvcnQgPSBmYWxzZVxuICBjb2xsYXBzZSA9IGZhbHNlXG4gIHNob3dUaXRsZVdoZW5Db2xsYXBzZWQgPSB0cnVlO1xufVxuXG5leHBvcnQgY2xhc3MgVGFibGVXcmFwcGVyRm9vdGVyU2V0dGluZ3Mge1xuICBjb2xsYXBzZSA9IGZhbHNlXG59XG5cbmV4cG9ydCBjbGFzcyBQZXNyc2lzdGVkVGFibGVTZXR0aW5ncyB7XG4gIGNvbnN0cnVjdG9yKHRhYmxlU2V0dGluZ3M/IDpHZW5lcmFsVGFibGVTZXR0aW5ncyB8IFBlc3JzaXN0ZWRUYWJsZVNldHRpbmdzKXtcbiAgICBpZiAodGFibGVTZXR0aW5ncyl7XG4gICAgICB0aGlzLmNvbGxhcHNlSGVhZGVyID0gKHRhYmxlU2V0dGluZ3MgYXMgR2VuZXJhbFRhYmxlU2V0dGluZ3MpLmhlYWRlclNldHRpbmdzPy5jb2xsYXBzZSA/PyAodGFibGVTZXR0aW5ncyBhcyBQZXNyc2lzdGVkVGFibGVTZXR0aW5ncykuY29sbGFwc2VIZWFkZXI7XG4gICAgICB0aGlzLmNvbGxhcHNlRm9vdGVyID0gKHRhYmxlU2V0dGluZ3MgYXMgR2VuZXJhbFRhYmxlU2V0dGluZ3MpLmZvb3RlclNldHRpbmdzPy5jb2xsYXBzZSA/PyAodGFibGVTZXR0aW5ncyBhcyBQZXNyc2lzdGVkVGFibGVTZXR0aW5ncykuY29sbGFwc2VGb290ZXI7XG4gICAgfVxuICB9XG4gIGNvbGxhcHNlSGVhZGVyID0gZmFsc2U7XG4gIGNvbGxhcHNlRm9vdGVyID0gZmFsc2U7XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RQZXJzaXNpdGVkVGFibGVTZXR0aW5ncyB7XG4gIGNvbnN0cnVjdG9yKHRhYmxlU2V0dGluZ3M/IDpHZW5lcmFsVGFibGVTZXR0aW5ncyl7XG4gICAgaWYodGFibGVTZXR0aW5ncyl7XG4gICAgICB0aGlzLmhpZGVFeHBvcnQgPSB0YWJsZVNldHRpbmdzLmhlYWRlclNldHRpbmdzLmhpZGVFeHBvcnQ7XG4gICAgICB0aGlzLmhpZGVDb2x1bW5TZXR0aW5ncyA9IHRhYmxlU2V0dGluZ3MuaGVhZGVyU2V0dGluZ3MuaGlkZUNvbHVtblNldHRpbmdzO1xuICAgICAgdGhpcy5oaWRlRmlsdGVyID0gdGFibGVTZXR0aW5ncy5oZWFkZXJTZXR0aW5ncy5oaWRlRmlsdGVyO1xuICAgICAgdGhpcy5oaWRlU29ydCA9IHRhYmxlU2V0dGluZ3MuaGVhZGVyU2V0dGluZ3MuaGlkZVNvcnQ7XG4gICAgICB0aGlzLnNob3dUaXRsZVdoZW5IZWFkZXJDb2xsYXBzZWQgPSB0YWJsZVNldHRpbmdzLmhlYWRlclNldHRpbmdzLnNob3dUaXRsZVdoZW5Db2xsYXBzZWQ7XG4gICAgfVxuICB9XG4gIGhpZGVFeHBvcnQgPSB0cnVlXG4gIGhpZGVGaWx0ZXIgPSB0cnVlXG4gIGhpZGVDb2x1bW5TZXR0aW5ncyA9IHRydWVcbiAgaGlkZVNvcnQgPSB0cnVlXG4gIHNob3dUaXRsZVdoZW5IZWFkZXJDb2xsYXBzZWQgPSB0cnVlO1xufVxuIl19
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYnVpbGRlci1nZW5lcmFsLXNldHRpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY2xhc3Nlcy90YWJsZS1idWlsZGVyLWdlbmVyYWwtc2V0dGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUUvQixNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQVksUUFBZ0M7UUFPNUMsbUJBQWMsR0FBRyxJQUFJLDBCQUEwQixFQUFFLENBQUM7UUFDbEQsbUJBQWMsR0FBRyxJQUFJLDBCQUEwQixFQUFFLENBQUM7UUFDbEQseUJBQW9CLEdBQUcsSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1FBUnJELElBQUcsUUFBUSxFQUFDO1lBQ1YsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3BELEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNwRCxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ2pFO0lBQ0gsQ0FBQztDQUlGO0FBUUQsTUFBTSxPQUFPLDBCQUEwQjtJQUF2QztRQUNFLGVBQVUsR0FBRyxLQUFLLENBQUE7UUFDbEIsZUFBVSxHQUFHLEtBQUssQ0FBQTtRQUNsQix1QkFBa0IsR0FBRyxLQUFLLENBQUE7UUFDMUIsZUFBVSxHQUFHLEtBQUssQ0FBQTtRQUNsQixhQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ2hCLGFBQVEsR0FBRyxLQUFLLENBQUE7UUFDaEIsMkJBQXNCLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTywwQkFBMEI7SUFBdkM7UUFDRSxhQUFRLEdBQUcsS0FBSyxDQUFBO0lBQ2xCLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyx5QkFBeUI7SUFBdEM7UUFDRSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFDbkIsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxZQUFZLGFBQThEO1FBTTFFLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBTnJCLElBQUksYUFBYSxFQUFDO1lBQ2hCLElBQUksQ0FBQyxjQUFjLEdBQUksYUFBc0MsQ0FBQyxjQUFjLEVBQUUsUUFBUSxJQUFLLGFBQXlDLENBQUMsY0FBYyxDQUFDO1lBQ3BKLElBQUksQ0FBQyxjQUFjLEdBQUksYUFBc0MsQ0FBQyxjQUFjLEVBQUUsUUFBUSxJQUFLLGFBQXlDLENBQUMsY0FBYyxDQUFDO1NBQ3JKO0lBQ0gsQ0FBQztDQUdGO0FBRUQsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUFZLGFBQW9DO1FBWWhELGVBQVUsR0FBRyxJQUFJLENBQUE7UUFDakIsZUFBVSxHQUFHLElBQUksQ0FBQTtRQUNqQix1QkFBa0IsR0FBRyxJQUFJLENBQUE7UUFDekIsYUFBUSxHQUFHLElBQUksQ0FBQTtRQUNmLGlDQUE0QixHQUFHLElBQUksQ0FBQztRQUNwQyxlQUFVLEdBQUcsSUFBSSxDQUFBO1FBQ2pCLDRCQUF1QixHQUFHLElBQUksQ0FBQztRQUMvQixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFsQnRCLElBQUcsYUFBYSxFQUFDO1lBQ2YsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztZQUMxRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQztZQUMxRSxJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO1lBQzFELElBQUksQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7WUFDdEQsSUFBSSxDQUFDLDRCQUE0QixHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUM7WUFDeEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztZQUMxRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsYUFBYSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQztZQUM1RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQztTQUNyRTtJQUNILENBQUM7Q0FTRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1lcmdlIH0gZnJvbSBcImxvZGFzaFwiO1xuXG5leHBvcnQgY2xhc3MgR2VuZXJhbFRhYmxlU2V0dGluZ3Mge1xuICBjb25zdHJ1Y3RvcihzZXR0aW5ncz8gOiBUYWJsZUJ1aWxkZXJTZXR0aW5ncyl7XG4gICAgaWYoc2V0dGluZ3Mpe1xuICAgICAgbWVyZ2UodGhpcy5oZWFkZXJTZXR0aW5ncywgc2V0dGluZ3MuaGVhZGVyU2V0dGluZ3MpO1xuICAgICAgbWVyZ2UodGhpcy5mb290ZXJTZXR0aW5ncywgc2V0dGluZ3MuZm9vdGVyU2V0dGluZ3MpO1xuICAgICAgbWVyZ2UodGhpcy5jb2x1bW5IZWFkZXJTZXR0aW5ncywgc2V0dGluZ3MuY29sdW1uSGVhZGVyU2V0dGluZ3MpO1xuICAgIH1cbiAgfVxuICBoZWFkZXJTZXR0aW5ncyA9IG5ldyBUYWJsZVdyYXBwZXJIZWFkZXJTZXR0aW5ncygpO1xuICBmb290ZXJTZXR0aW5ncyA9IG5ldyBUYWJsZVdyYXBwZXJGb290ZXJTZXR0aW5ncygpO1xuICBjb2x1bW5IZWFkZXJTZXR0aW5ncyA9IG5ldyBUYWJsZUNvbHVtbkhlYWRlclNldHRpbmdzKCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVCdWlsZGVyU2V0dGluZ3Mge1xuICBoZWFkZXJTZXR0aW5ncz8gOiBQYXJ0aWFsPFRhYmxlV3JhcHBlckhlYWRlclNldHRpbmdzPjtcbiAgZm9vdGVyU2V0dGluZ3M/IDogUGFydGlhbDxUYWJsZVdyYXBwZXJGb290ZXJTZXR0aW5ncz47XG4gIGNvbHVtbkhlYWRlclNldHRpbmdzPyA6IFBhcnRpYWw8VGFibGVDb2x1bW5IZWFkZXJTZXR0aW5ncz47XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZVdyYXBwZXJIZWFkZXJTZXR0aW5ncyB7XG4gIGhpZGVFeHBvcnQgPSBmYWxzZVxuICBoaWRlRmlsdGVyID0gZmFsc2VcbiAgaGlkZUNvbHVtblNldHRpbmdzID0gZmFsc2VcbiAgaGlkZUhlYWRlciA9IGZhbHNlXG4gIGhpZGVTb3J0ID0gZmFsc2VcbiAgY29sbGFwc2UgPSBmYWxzZVxuICBzaG93VGl0bGVXaGVuQ29sbGFwc2VkID0gdHJ1ZTtcbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlV3JhcHBlckZvb3RlclNldHRpbmdzIHtcbiAgY29sbGFwc2UgPSBmYWxzZVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGVDb2x1bW5IZWFkZXJTZXR0aW5ncyB7XG4gIG5vRmlsdGVycyA9IGZhbHNlO1xuICBub0hlYWRlciA9IGZhbHNlO1xufVxuXG5leHBvcnQgY2xhc3MgUGVzcnNpc3RlZFRhYmxlU2V0dGluZ3Mge1xuICBjb25zdHJ1Y3Rvcih0YWJsZVNldHRpbmdzPyA6R2VuZXJhbFRhYmxlU2V0dGluZ3MgfCBQZXNyc2lzdGVkVGFibGVTZXR0aW5ncyl7XG4gICAgaWYgKHRhYmxlU2V0dGluZ3Mpe1xuICAgICAgdGhpcy5jb2xsYXBzZUhlYWRlciA9ICh0YWJsZVNldHRpbmdzIGFzIEdlbmVyYWxUYWJsZVNldHRpbmdzKS5oZWFkZXJTZXR0aW5ncz8uY29sbGFwc2UgPz8gKHRhYmxlU2V0dGluZ3MgYXMgUGVzcnNpc3RlZFRhYmxlU2V0dGluZ3MpLmNvbGxhcHNlSGVhZGVyO1xuICAgICAgdGhpcy5jb2xsYXBzZUZvb3RlciA9ICh0YWJsZVNldHRpbmdzIGFzIEdlbmVyYWxUYWJsZVNldHRpbmdzKS5mb290ZXJTZXR0aW5ncz8uY29sbGFwc2UgPz8gKHRhYmxlU2V0dGluZ3MgYXMgUGVzcnNpc3RlZFRhYmxlU2V0dGluZ3MpLmNvbGxhcHNlRm9vdGVyO1xuICAgIH1cbiAgfVxuICBjb2xsYXBzZUhlYWRlciA9IGZhbHNlO1xuICBjb2xsYXBzZUZvb3RlciA9IGZhbHNlO1xufVxuXG5leHBvcnQgY2xhc3MgTm90UGVyc2lzaXRlZFRhYmxlU2V0dGluZ3Mge1xuICBjb25zdHJ1Y3Rvcih0YWJsZVNldHRpbmdzPyA6R2VuZXJhbFRhYmxlU2V0dGluZ3Mpe1xuICAgIGlmKHRhYmxlU2V0dGluZ3Mpe1xuICAgICAgdGhpcy5oaWRlRXhwb3J0ID0gdGFibGVTZXR0aW5ncy5oZWFkZXJTZXR0aW5ncy5oaWRlRXhwb3J0O1xuICAgICAgdGhpcy5oaWRlQ29sdW1uU2V0dGluZ3MgPSB0YWJsZVNldHRpbmdzLmhlYWRlclNldHRpbmdzLmhpZGVDb2x1bW5TZXR0aW5ncztcbiAgICAgIHRoaXMuaGlkZUZpbHRlciA9IHRhYmxlU2V0dGluZ3MuaGVhZGVyU2V0dGluZ3MuaGlkZUZpbHRlcjtcbiAgICAgIHRoaXMuaGlkZVNvcnQgPSB0YWJsZVNldHRpbmdzLmhlYWRlclNldHRpbmdzLmhpZGVTb3J0O1xuICAgICAgdGhpcy5zaG93VGl0bGVXaGVuSGVhZGVyQ29sbGFwc2VkID0gdGFibGVTZXR0aW5ncy5oZWFkZXJTZXR0aW5ncy5zaG93VGl0bGVXaGVuQ29sbGFwc2VkO1xuICAgICAgdGhpcy5oaWRlSGVhZGVyID0gdGFibGVTZXR0aW5ncy5oZWFkZXJTZXR0aW5ncy5oaWRlSGVhZGVyO1xuICAgICAgdGhpcy5oaWRlQ29sdW1uSGVhZGVyRmlsdGVycyA9IHRhYmxlU2V0dGluZ3MuY29sdW1uSGVhZGVyU2V0dGluZ3Mubm9GaWx0ZXJzO1xuICAgICAgdGhpcy5oaWRlQ29sdW1uSGVhZGVyID0gdGFibGVTZXR0aW5ncy5jb2x1bW5IZWFkZXJTZXR0aW5ncy5ub0hlYWRlcjtcbiAgICB9XG4gIH1cbiAgaGlkZUV4cG9ydCA9IHRydWVcbiAgaGlkZUZpbHRlciA9IHRydWVcbiAgaGlkZUNvbHVtblNldHRpbmdzID0gdHJ1ZVxuICBoaWRlU29ydCA9IHRydWVcbiAgc2hvd1RpdGxlV2hlbkhlYWRlckNvbGxhcHNlZCA9IHRydWU7XG4gIGhpZGVIZWFkZXIgPSB0cnVlXG4gIGhpZGVDb2x1bW5IZWFkZXJGaWx0ZXJzID0gdHJ1ZTtcbiAgaGlkZUNvbHVtbkhlYWRlciA9IHRydWU7XG59XG4iXX0=
@@ -60,6 +60,7 @@ export class ColumnBuilderComponent {
60
60
  };
61
61
  return styles;
62
62
  }));
63
+ this.showfilters$ = this.state.tableSettings$.pipe(map(settings => !(settings.hideColumnHeaderFilters || this.metaData.noFilter)));
63
64
  }
64
65
  ngAfterViewInit() {
65
66
  this.outerTemplate = this.getOuterTemplate();
@@ -74,14 +75,14 @@ export class ColumnBuilderComponent {
74
75
  }
75
76
  }
76
77
  ColumnBuilderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: ColumnBuilderComponent, deps: [{ token: i1.TransformCreator }, { token: i2.MatTable }, { token: i3.TableStore }, { token: i4.TableTemplateService }], target: i0.ɵɵFactoryTarget.Component });
77
- ColumnBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: ColumnBuilderComponent, selector: "tb-column-builder", inputs: { metaData: "metaData", customCell: "customCell", data$: "data$" }, viewQueries: [{ propertyName: "columnDef", first: true, predicate: MatColumnDef, descendants: true }, { propertyName: "bodyTemplate", first: true, predicate: ["body"], descendants: true }], ngImport: i0, template: "<ng-container [matColumnDef]=\"metaData.key\" *ngrxLet=\"styles$ as styles\">\n\n <ng-template #body let-element='element' >\n\n <mat-cell [styler]='styles.body' [class.group-footer]=\"element.isGroupFooter\" (click)='cellClicked(element, metaData.key)'>\n <ng-container *ngTemplateOutlet=\"innerTemplate;context: {metaData: metaData, element: element, transform: transform }\">\n </ng-container>\n <span class=\"no-val\" *ngIf=\"\n !element.isGroupFooter &&\n metaData.fieldType !== FieldType.Expression &&\n (element[metaData.key] == null) &&\n !((customCell && customCell.TemplateRef) || metaData.template)\n \"> - </span>\n </mat-cell>\n\n </ng-template>\n\n <ng-template matHeaderCellDef #myHeader>\n\n <ng-container *ngIf=\"customCell?.columnDef?.headerCell;else header;\">\n <ng-container *ngTemplateOutlet=\"customCell.columnDef.headerCell.template; context: {metaData: metaData, styles: styles.header} \">\n </ng-container>\n </ng-container>\n\n <ng-template #header>\n\n <mat-header-cell cdkDrag [styler]='styles.header' [resizeColumn]=\"true\" [key]=\"metaData.key\" class=\"column-head drag-header\" #headref >\n <div class=\"header-container\">\n <div *ngIf=\"!metaData._internalNotUserDefined || !customCell?.columnDef?.cell ; else headerWithoutMenu\" mat-sort-header style=\"width: 100%\">\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\n </div>\n <ng-template #headerWithoutMenu >\n <div *ngIf=\"metaData._internalNotUserDefined;\" style=\"width: 100%\">\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\n </div>\n </ng-template>\n <tb-header-menu cdkDragHandle *ngIf=\"(!metaData._internalNotUserDefined || !customCell?.columnDef?.cell) && (!metaData.noFilter)\" #menu [metaData]='metaData' [filter]='filter' ></tb-header-menu>\n </div>\n </mat-header-cell>\n\n </ng-template>\n\n </ng-template>\n\n\n <ng-container *matCellDef=\"let element;\">\n <ng-container *ngTemplateOutlet=\"outerTemplate; context: {metaData: metaData, element: element , styles: styles.body }\">\n </ng-container>\n </ng-container>\n\n <ng-template matFooterCellDef>\n <ng-container *ngIf=\"customCell?.columnDef?.footerCell;else footer\">\n <ng-container\n *ngTemplateOutlet=\"customCell.columnDef.footerCell.template;context: {metaData: metaData, data: data$, styles : styles.footer }\">\n </ng-container>\n </ng-container>\n\n <ng-template #footer>\n <mat-footer-cell [styler]='styles.footer' *ngrxLet=\"data$ as data\">\n <span *ngIf=\"data?.length && metaData.additional?.footer\" [ngSwitch]=\"metaData.fieldType\" class=\"bold\">\n <span *ngSwitchCase=\"FieldType.Currency\">\n {{ data | columnTotal: metaData | currency }}\n </span>\n <span *ngSwitchCase=\"FieldType.Number\">\n {{ data | columnTotal: metaData | number }}\n </span>\n </span>\n </mat-footer-cell>\n </ng-template>\n </ng-template>\n</ng-container>\n", styles: [".header-container{display:flex;flex-direction:row;width:100%;align-items:center}.negative-currency{color:red}.column-head{position:relative}.bold,.group-footer{font-weight:900}.cdk-drag-preview{background:white;box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:33%;border-right-width:0px}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], components: [{ type: i5.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i6.HeaderMenuComponent, selector: "tb-header-menu", inputs: ["filter", "metaData"] }], directives: [{ type: i7.LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet"] }, { type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i8.StylerDirective, selector: "[styler]", inputs: ["styler"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i10.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i11.ResizeColumnDirective, selector: "[resizeColumn]", inputs: ["resizeColumn", "key"] }, { type: i10.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { type: i2.MatCellDef, selector: "[matCellDef]" }, { type: i2.MatFooterCellDef, selector: "[matFooterCellDef]" }, { type: i2.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], pipes: { "spaceCase": i12.SpaceCasePipe, "currency": i9.CurrencyPipe, "columnTotal": i13.ColumnTotalPipe, "number": i9.DecimalPipe }, viewProviders: [
78
+ ColumnBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: ColumnBuilderComponent, selector: "tb-column-builder", inputs: { metaData: "metaData", customCell: "customCell", data$: "data$" }, viewQueries: [{ propertyName: "columnDef", first: true, predicate: MatColumnDef, descendants: true }, { propertyName: "bodyTemplate", first: true, predicate: ["body"], descendants: true }], ngImport: i0, template: "<ng-container [matColumnDef]=\"metaData.key\" *ngrxLet=\"styles$ as styles\">\n\n <ng-template #body let-element='element' >\n\n <mat-cell [styler]='styles.body' [class.group-footer]=\"element.isGroupFooter\" (click)='cellClicked(element, metaData.key)'>\n <ng-container *ngTemplateOutlet=\"innerTemplate;context: {metaData: metaData, element: element, transform: transform }\">\n </ng-container>\n <span class=\"no-val\" *ngIf=\"\n !element.isGroupFooter &&\n metaData.fieldType !== FieldType.Expression &&\n (element[metaData.key] == null) &&\n !((customCell && customCell.TemplateRef) || metaData.template)\n \"> - </span>\n </mat-cell>\n\n </ng-template>\n\n <ng-template matHeaderCellDef #myHeader>\n\n <ng-container *ngIf=\"customCell?.columnDef?.headerCell;else header;\">\n <ng-container *ngTemplateOutlet=\"customCell.columnDef.headerCell.template; context: {metaData: metaData, styles: styles.header} \">\n </ng-container>\n </ng-container>\n\n <ng-template #header>\n\n <mat-header-cell cdkDrag [styler]='styles.header' [resizeColumn]=\"true\" [key]=\"metaData.key\" class=\"column-head drag-header\" #headref >\n <div class=\"header-container\" cdkDragHandle>\n <div *ngIf=\"!metaData._internalNotUserDefined || !customCell?.columnDef?.cell ; else headerWithoutMenu\" mat-sort-header style=\"width: 100%\">\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\n </div>\n <ng-template #headerWithoutMenu >\n <div *ngIf=\"metaData._internalNotUserDefined;\" style=\"width: 100%\">\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\n </div>\n </ng-template>\n <tb-header-menu \n *ngIf=\"(!metaData._internalNotUserDefined || !customCell?.columnDef?.cell) && (showfilters$ | async);\" #menu [metaData]='metaData' [filter]='filter' >\n </tb-header-menu>\n </div>\n </mat-header-cell>\n\n </ng-template>\n\n </ng-template>\n\n\n <ng-container *matCellDef=\"let element;\">\n <ng-container *ngTemplateOutlet=\"outerTemplate; context: {metaData: metaData, element: element , styles: styles.body }\">\n </ng-container>\n </ng-container>\n\n <ng-template matFooterCellDef>\n <ng-container *ngIf=\"customCell?.columnDef?.footerCell;else footer\">\n <ng-container\n *ngTemplateOutlet=\"customCell.columnDef.footerCell.template;context: {metaData: metaData, data: data$, styles : styles.footer }\">\n </ng-container>\n </ng-container>\n\n <ng-template #footer>\n <mat-footer-cell [styler]='styles.footer' *ngrxLet=\"data$ as data\">\n <span *ngIf=\"data?.length && metaData.additional?.footer\" [ngSwitch]=\"metaData.fieldType\" class=\"bold\">\n <span *ngSwitchCase=\"FieldType.Currency\">\n {{ data | columnTotal: metaData | currency }}\n </span>\n <span *ngSwitchCase=\"FieldType.Number\">\n {{ data | columnTotal: metaData | number }}\n </span>\n </span>\n </mat-footer-cell>\n </ng-template>\n </ng-template>\n</ng-container>", styles: [".header-container{display:flex;flex-direction:row;width:100%;align-items:center}.negative-currency{color:red}.column-head{position:relative}.bold,.group-footer{font-weight:900}.cdk-drag-preview{background:white;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:33%;border-right-width:0px}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.drag-handle{color:#add8e6;cursor:move;margin-right:9px}\n"], components: [{ type: i5.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i6.HeaderMenuComponent, selector: "tb-header-menu", inputs: ["filter", "metaData"] }], directives: [{ type: i7.LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet"] }, { type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i8.StylerDirective, selector: "[styler]", inputs: ["styler"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i10.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i11.ResizeColumnDirective, selector: "[resizeColumn]", inputs: ["resizeColumn", "key"] }, { type: i10.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { type: i2.MatCellDef, selector: "[matCellDef]" }, { type: i2.MatFooterCellDef, selector: "[matFooterCellDef]" }, { type: i2.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], pipes: { "spaceCase": i12.SpaceCasePipe, "async": i9.AsyncPipe, "currency": i9.CurrencyPipe, "columnTotal": i13.ColumnTotalPipe, "number": i9.DecimalPipe }, viewProviders: [
78
79
  { provide: CDK_DROP_LIST, useExisting: CdkDropList },
79
80
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
80
81
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: ColumnBuilderComponent, decorators: [{
81
82
  type: Component,
82
83
  args: [{ selector: 'tb-column-builder', changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [
83
84
  { provide: CDK_DROP_LIST, useExisting: CdkDropList },
84
- ], template: "<ng-container [matColumnDef]=\"metaData.key\" *ngrxLet=\"styles$ as styles\">\n\n <ng-template #body let-element='element' >\n\n <mat-cell [styler]='styles.body' [class.group-footer]=\"element.isGroupFooter\" (click)='cellClicked(element, metaData.key)'>\n <ng-container *ngTemplateOutlet=\"innerTemplate;context: {metaData: metaData, element: element, transform: transform }\">\n </ng-container>\n <span class=\"no-val\" *ngIf=\"\n !element.isGroupFooter &&\n metaData.fieldType !== FieldType.Expression &&\n (element[metaData.key] == null) &&\n !((customCell && customCell.TemplateRef) || metaData.template)\n \"> - </span>\n </mat-cell>\n\n </ng-template>\n\n <ng-template matHeaderCellDef #myHeader>\n\n <ng-container *ngIf=\"customCell?.columnDef?.headerCell;else header;\">\n <ng-container *ngTemplateOutlet=\"customCell.columnDef.headerCell.template; context: {metaData: metaData, styles: styles.header} \">\n </ng-container>\n </ng-container>\n\n <ng-template #header>\n\n <mat-header-cell cdkDrag [styler]='styles.header' [resizeColumn]=\"true\" [key]=\"metaData.key\" class=\"column-head drag-header\" #headref >\n <div class=\"header-container\">\n <div *ngIf=\"!metaData._internalNotUserDefined || !customCell?.columnDef?.cell ; else headerWithoutMenu\" mat-sort-header style=\"width: 100%\">\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\n </div>\n <ng-template #headerWithoutMenu >\n <div *ngIf=\"metaData._internalNotUserDefined;\" style=\"width: 100%\">\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\n </div>\n </ng-template>\n <tb-header-menu cdkDragHandle *ngIf=\"(!metaData._internalNotUserDefined || !customCell?.columnDef?.cell) && (!metaData.noFilter)\" #menu [metaData]='metaData' [filter]='filter' ></tb-header-menu>\n </div>\n </mat-header-cell>\n\n </ng-template>\n\n </ng-template>\n\n\n <ng-container *matCellDef=\"let element;\">\n <ng-container *ngTemplateOutlet=\"outerTemplate; context: {metaData: metaData, element: element , styles: styles.body }\">\n </ng-container>\n </ng-container>\n\n <ng-template matFooterCellDef>\n <ng-container *ngIf=\"customCell?.columnDef?.footerCell;else footer\">\n <ng-container\n *ngTemplateOutlet=\"customCell.columnDef.footerCell.template;context: {metaData: metaData, data: data$, styles : styles.footer }\">\n </ng-container>\n </ng-container>\n\n <ng-template #footer>\n <mat-footer-cell [styler]='styles.footer' *ngrxLet=\"data$ as data\">\n <span *ngIf=\"data?.length && metaData.additional?.footer\" [ngSwitch]=\"metaData.fieldType\" class=\"bold\">\n <span *ngSwitchCase=\"FieldType.Currency\">\n {{ data | columnTotal: metaData | currency }}\n </span>\n <span *ngSwitchCase=\"FieldType.Number\">\n {{ data | columnTotal: metaData | number }}\n </span>\n </span>\n </mat-footer-cell>\n </ng-template>\n </ng-template>\n</ng-container>\n", styles: [".header-container{display:flex;flex-direction:row;width:100%;align-items:center}.negative-currency{color:red}.column-head{position:relative}.bold,.group-footer{font-weight:900}.cdk-drag-preview{background:white;box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:33%;border-right-width:0px}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
85
+ ], template: "<ng-container [matColumnDef]=\"metaData.key\" *ngrxLet=\"styles$ as styles\">\n\n <ng-template #body let-element='element' >\n\n <mat-cell [styler]='styles.body' [class.group-footer]=\"element.isGroupFooter\" (click)='cellClicked(element, metaData.key)'>\n <ng-container *ngTemplateOutlet=\"innerTemplate;context: {metaData: metaData, element: element, transform: transform }\">\n </ng-container>\n <span class=\"no-val\" *ngIf=\"\n !element.isGroupFooter &&\n metaData.fieldType !== FieldType.Expression &&\n (element[metaData.key] == null) &&\n !((customCell && customCell.TemplateRef) || metaData.template)\n \"> - </span>\n </mat-cell>\n\n </ng-template>\n\n <ng-template matHeaderCellDef #myHeader>\n\n <ng-container *ngIf=\"customCell?.columnDef?.headerCell;else header;\">\n <ng-container *ngTemplateOutlet=\"customCell.columnDef.headerCell.template; context: {metaData: metaData, styles: styles.header} \">\n </ng-container>\n </ng-container>\n\n <ng-template #header>\n\n <mat-header-cell cdkDrag [styler]='styles.header' [resizeColumn]=\"true\" [key]=\"metaData.key\" class=\"column-head drag-header\" #headref >\n <div class=\"header-container\" cdkDragHandle>\n <div *ngIf=\"!metaData._internalNotUserDefined || !customCell?.columnDef?.cell ; else headerWithoutMenu\" mat-sort-header style=\"width: 100%\">\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\n </div>\n <ng-template #headerWithoutMenu >\n <div *ngIf=\"metaData._internalNotUserDefined;\" style=\"width: 100%\">\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\n </div>\n </ng-template>\n <tb-header-menu \n *ngIf=\"(!metaData._internalNotUserDefined || !customCell?.columnDef?.cell) && (showfilters$ | async);\" #menu [metaData]='metaData' [filter]='filter' >\n </tb-header-menu>\n </div>\n </mat-header-cell>\n\n </ng-template>\n\n </ng-template>\n\n\n <ng-container *matCellDef=\"let element;\">\n <ng-container *ngTemplateOutlet=\"outerTemplate; context: {metaData: metaData, element: element , styles: styles.body }\">\n </ng-container>\n </ng-container>\n\n <ng-template matFooterCellDef>\n <ng-container *ngIf=\"customCell?.columnDef?.footerCell;else footer\">\n <ng-container\n *ngTemplateOutlet=\"customCell.columnDef.footerCell.template;context: {metaData: metaData, data: data$, styles : styles.footer }\">\n </ng-container>\n </ng-container>\n\n <ng-template #footer>\n <mat-footer-cell [styler]='styles.footer' *ngrxLet=\"data$ as data\">\n <span *ngIf=\"data?.length && metaData.additional?.footer\" [ngSwitch]=\"metaData.fieldType\" class=\"bold\">\n <span *ngSwitchCase=\"FieldType.Currency\">\n {{ data | columnTotal: metaData | currency }}\n </span>\n <span *ngSwitchCase=\"FieldType.Number\">\n {{ data | columnTotal: metaData | number }}\n </span>\n </span>\n </mat-footer-cell>\n </ng-template>\n </ng-template>\n</ng-container>", styles: [".header-container{display:flex;flex-direction:row;width:100%;align-items:center}.negative-currency{color:red}.column-head{position:relative}.bold,.group-footer{font-weight:900}.cdk-drag-preview{background:white;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:33%;border-right-width:0px}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.drag-handle{color:#add8e6;cursor:move;margin-right:9px}\n"] }]
85
86
  }], ctorParameters: function () { return [{ type: i1.TransformCreator }, { type: i2.MatTable }, { type: i3.TableStore }, { type: i4.TableTemplateService }]; }, propDecorators: { metaData: [{
86
87
  type: Input
87
88
  }], customCell: [{
@@ -95,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImpor
95
96
  type: ViewChild,
96
97
  args: ['body']
97
98
  }] } });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9jb2x1bW4tYnVpbGRlci9jb2x1bW4tYnVpbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2NvbHVtbi1idWlsZGVyL2NvbHVtbi1idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFlLFNBQVMsRUFBc0QsTUFBTSxlQUFlLENBQUM7QUFDdEosT0FBTyxFQUFFLFNBQVMsRUFBWSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSx5QkFBeUIsQ0FBQztBQU1qRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBdUJwRSxNQUFNLE9BQU8sc0JBQXNCO0lBZWpDLFlBQ1UsZ0JBQWtDLEVBQ2xDLEtBQW9CLEVBQ3JCLEtBQWlCLEVBQ2hCLGVBQXFDO1FBSHJDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsVUFBSyxHQUFMLEtBQUssQ0FBZTtRQUNyQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2hCLG9CQUFlLEdBQWYsZUFBZSxDQUFzQjtRQWxCL0MsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQTZEdEIsYUFBUSxHQUFHLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSx1QkFBdUIsQ0FBb0IsRUFBZSxFQUFFO1lBRWpHLElBQUksdUJBQXVCLEVBQUU7Z0JBQzNCLE9BQU8sQ0FBQyxFQUFDLElBQUksRUFBQyxPQUFPLHVCQUF1QixJQUFJLEVBQUUsUUFBUSxFQUFDLE1BQU0sRUFBQyxDQUFDLENBQUM7YUFDckU7WUFBQyxJQUFJLFFBQVEsRUFBRSxFQUFFO2dCQUNoQixPQUFPLENBQUMsRUFBQyxJQUFJLEVBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQzthQUNyQjtZQUNELE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNaLFNBQVMsUUFBUTtnQkFDZixPQUFPLHdCQUF3QixJQUFHLENBQUMsSUFBSSx1QkFBdUIsSUFBSSxJQUFJLENBQUM7WUFDekUsQ0FBQztRQUNILENBQUMsQ0FBQTtJQXJESyxDQUFDO0lBRVAsZ0JBQWdCO1FBQ2QsSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQ3pELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXO1lBQUcsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztRQUN0RSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ3pFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUMsQ0FBQztRQUMzRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUNwRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDbkIsQ0FBQztRQUNGLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDOUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNyQyxNQUFNLE1BQU0sR0FBYztnQkFDeEIsTUFBTSxFQUFHLEVBQUMsR0FBRyxjQUFjLEVBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLEVBQUM7Z0JBQzVGLE1BQU0sRUFBRSxFQUFDLEdBQUcsY0FBYyxFQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxFQUFDO2dCQUMzRixJQUFJLEVBQUUsRUFBQyxHQUFHLGNBQWMsRUFBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBQzthQUN4RixDQUFDO1lBQ0YsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFZLEVBQUUsR0FBVztRQUNuQyxJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBQyxHQUFHLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7O21IQTVEVSxzQkFBc0I7dUdBQXRCLHNCQUFzQixnTEFPdEIsWUFBWSx1SUN6Q3pCLGdwR0F1RUEsKytFRHpDaUI7UUFDYixFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRTtLQUNyRDsyRkFFVSxzQkFBc0I7a0JBVGxDLFNBQVM7K0JBQ0UsbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDO3dCQUNiLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFO3FCQUNyRDswTEFLUSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVtQixTQUFTO3NCQUFqQyxTQUFTO3VCQUFDLFlBQVk7Z0JBS0osWUFBWTtzQkFBOUIsU0FBUzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIE9uSW5pdCwgSG9zdEJpbmRpbmcsIENvbnRlbnRDaGlsZCwgQ29udGVudENoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUsIE1ldGFEYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmJztcbmltcG9ydCB7IE1hdENvbHVtbkRlZiwgTWF0VGFibGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDdXN0b21DZWxsRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBGaWx0ZXJJbmZvIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9maWx0ZXItaW5mbyc7XG5pbXBvcnQgeyBUcmFuc2Zvcm1DcmVhdG9yIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNmb3JtLWNyZWF0b3InO1xuaW1wb3J0IHsgVGFibGVTdG9yZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvdGFibGUtc3RvcmUnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGFibGVUZW1wbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YWJsZS10ZW1wbGF0ZS1zZXJ2aWNlJztcbmltcG9ydCB7IHByZXZpb3VzQW5kQ3VycmVudCB9IGZyb20gJy4uLy4uLy4uL3J4anMvcnhqcy1vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2RrRHJvcExpc3QsIENES19EUk9QX0xJU1QgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuXG5pbnRlcmZhY2Ugd2lkdGhTdHlsZSB7XG4gICAgZmxleD86IHN0cmluZztcbiAgICBtYXhXaWR0aD86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIGFsbFN0eWxlcyB7XG4gIGJvZHk6IHdpZHRoU3R5bGU7XG4gIGhlYWRlcjogd2lkdGhTdHlsZTtcbiAgZm9vdGVyOiB3aWR0aFN0eWxlO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0Yi1jb2x1bW4tYnVpbGRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2x1bW4tYnVpbGRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbHVtbi1idWlsZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB2aWV3UHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBDREtfRFJPUF9MSVNULCB1c2VFeGlzdGluZzogQ2RrRHJvcExpc3QgfSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBDb2x1bW5CdWlsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgRmllbGRUeXBlID0gRmllbGRUeXBlO1xuICBmaWx0ZXIhOiBQYXJ0aWFsPEZpbHRlckluZm8+O1xuICBASW5wdXQoKSBtZXRhRGF0YSE6IE1ldGFEYXRhXG4gIEBJbnB1dCgpIGN1c3RvbUNlbGwhOiBDdXN0b21DZWxsRGlyZWN0aXZlO1xuICBASW5wdXQoKSBkYXRhJCE6IE9ic2VydmFibGU8YW55W10+O1xuXG4gIEBWaWV3Q2hpbGQoTWF0Q29sdW1uRGVmKSBjb2x1bW5EZWYhOiBNYXRDb2x1bW5EZWY7XG4gIG91dGVyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBpbm5lclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgdHJhbnNmb3JtITogKG86IGFueSwgLi4uYXJnczogYW55W10pPT4gYW55IDtcblxuICBAVmlld0NoaWxkKCdib2R5JykgYm9keVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdHJhbnNmb3JtQ3JlYXRvcjogVHJhbnNmb3JtQ3JlYXRvcixcbiAgICBwcml2YXRlIHRhYmxlOiBNYXRUYWJsZTxhbnk+LFxuICAgIHB1YmxpYyBzdGF0ZTogVGFibGVTdG9yZSxcbiAgICBwcml2YXRlIHRlbXBsYXRlU2VydmljZTogVGFibGVUZW1wbGF0ZVNlcnZpY2UsXG4gICAgKSB7IH1cblxuICBnZXRJbm5lclRlbXBsYXRlKCkgOlRlbXBsYXRlUmVmPGFueT4ge1xuICAgIGlmKHRoaXMubWV0YURhdGEudGVtcGxhdGUpIHJldHVybiB0aGlzLm1ldGFEYXRhLnRlbXBsYXRlO1xuICAgIGlmICh0aGlzLmN1c3RvbUNlbGw/LlRlbXBsYXRlUmVmKSAgcmV0dXJuIHRoaXMuY3VzdG9tQ2VsbC5UZW1wbGF0ZVJlZjtcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZVNlcnZpY2UuZ2V0VGVtcGxhdGUodGhpcy5tZXRhRGF0YS5maWVsZFR5cGUpO1xuICB9XG5cbiAgZ2V0T3V0ZXJUZW1wbGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jdXN0b21DZWxsPy5jb2x1bW5EZWY/LmNlbGw/LnRlbXBsYXRlID8/IHRoaXMuYm9keVRlbXBsYXRlO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5maWx0ZXIgPSB7a2V5OiB0aGlzLm1ldGFEYXRhLmtleSwgZmllbGRUeXBlOiB0aGlzLm1ldGFEYXRhLmZpZWxkVHlwZX07XG4gICAgY29uc3Qgd2lkdGgkID0gdGhpcy5zdGF0ZS5nZXRVc2VyRGVmaW5lZFdpZHRoJCh0aGlzLm1ldGFEYXRhLmtleSkucGlwZShcbiAgICAgIHByZXZpb3VzQW5kQ3VycmVudCgwKSxcbiAgICAgIG1hcCh0aGlzLm1hcFdpZHRoKSxcbiAgICApO1xuICAgIGNvbnN0IGZ1bGxNZXRhU3R5bGVzID0gdGhpcy5tZXRhRGF0YS5hZGRpdGlvbmFsPy5zdHlsZXMgPz8ge307XG4gICAgdGhpcy5zdHlsZXMkID0gd2lkdGgkLnBpcGUobWFwKHdpZHRoID0+IHtcbiAgICAgIGNvbnN0IHN0eWxlczogYWxsU3R5bGVzID0ge1xuICAgICAgICBoZWFkZXIgOiB7Li4uZnVsbE1ldGFTdHlsZXMsLi4udGhpcy5tZXRhRGF0YS5hZGRpdGlvbmFsPy5jb2x1bW5QYXJ0U3R5bGVzPy5oZWFkZXIsIC4uLndpZHRofSxcbiAgICAgICAgZm9vdGVyOiB7Li4uZnVsbE1ldGFTdHlsZXMsLi4udGhpcy5tZXRhRGF0YS5hZGRpdGlvbmFsPy5jb2x1bW5QYXJ0U3R5bGVzPy5mb290ZXIsIC4uLndpZHRofSxcbiAgICAgICAgYm9keTogey4uLmZ1bGxNZXRhU3R5bGVzLC4uLnRoaXMubWV0YURhdGEuYWRkaXRpb25hbD8uY29sdW1uUGFydFN0eWxlcz8uYm9keSwgLi4ud2lkdGh9LFxuICAgICAgfTtcbiAgICAgIHJldHVybiBzdHlsZXM7XG4gICAgfSkpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMub3V0ZXJUZW1wbGF0ZSA9IHRoaXMuZ2V0T3V0ZXJUZW1wbGF0ZSgpO1xuICAgIHRoaXMuaW5uZXJUZW1wbGF0ZSA9IHRoaXMuZ2V0SW5uZXJUZW1wbGF0ZSgpO1xuICAgIHRoaXMudHJhbnNmb3JtID0gdGhpcy50cmFuc2Zvcm1DcmVhdG9yLmNyZWF0ZVRyYW5zZm9ybWVyKHRoaXMubWV0YURhdGEpO1xuICAgIHRoaXMudGFibGUuYWRkQ29sdW1uRGVmKHRoaXMuY29sdW1uRGVmKTtcbiAgfVxuXG4gIGNlbGxDbGlja2VkKGVsZW1lbnQ6IGFueSwga2V5OiBzdHJpbmcpIHtcbiAgICBpZih0aGlzLm1ldGFEYXRhLmNsaWNrKSB7XG4gICAgICB0aGlzLm1ldGFEYXRhLmNsaWNrKGVsZW1lbnQsa2V5KTtcbiAgICB9XG4gIH1cblxuICBtYXBXaWR0aCA9IChbcHJldmlvdXNVc2VyRGVmaW5lZFdpZHRoLCBjdXJyZW50VXNlckRlZmluZWRXaWR0aF0gOiBbbnVtYmVyLCBudW1iZXJdKSA6IHdpZHRoU3R5bGUgPT4ge1xuXG4gICAgaWYoIGN1cnJlbnRVc2VyRGVmaW5lZFdpZHRoICl7XG4gICAgICByZXR1cm4gKHtmbGV4OmAwIDAgJHtjdXJyZW50VXNlckRlZmluZWRXaWR0aH1weGAsIG1heFdpZHRoOidub25lJ30pO1xuICAgIH0gaWYoIHdhc1Jlc2V0KCkgKXtcbiAgICAgIHJldHVybiAoe2ZsZXg6JzEnfSk7XG4gICAgfVxuICAgIHJldHVybiAoe30pO1xuICAgIGZ1bmN0aW9uIHdhc1Jlc2V0KCl7XG4gICAgICByZXR1cm4gcHJldmlvdXNVc2VyRGVmaW5lZFdpZHRoID49MCAmJiBjdXJyZW50VXNlckRlZmluZWRXaWR0aCA9PSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHN0eWxlcyQhOk9ic2VydmFibGU8YWxsU3R5bGVzPlxuXG59XG4iLCI8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwibWV0YURhdGEua2V5XCIgKm5ncnhMZXQ9XCJzdHlsZXMkIGFzIHN0eWxlc1wiPlxuXG4gIDxuZy10ZW1wbGF0ZSAjYm9keSBsZXQtZWxlbWVudD0nZWxlbWVudCcgPlxuXG4gICAgICA8bWF0LWNlbGwgW3N0eWxlcl09J3N0eWxlcy5ib2R5JyBbY2xhc3MuZ3JvdXAtZm9vdGVyXT1cImVsZW1lbnQuaXNHcm91cEZvb3RlclwiIChjbGljayk9J2NlbGxDbGlja2VkKGVsZW1lbnQsIG1ldGFEYXRhLmtleSknPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5uZXJUZW1wbGF0ZTtjb250ZXh0OiB7bWV0YURhdGE6IG1ldGFEYXRhLCBlbGVtZW50OiBlbGVtZW50LCB0cmFuc2Zvcm06IHRyYW5zZm9ybSB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHNwYW4gY2xhc3M9XCJuby12YWxcIiAqbmdJZj1cIlxuICAgICAgICAhZWxlbWVudC5pc0dyb3VwRm9vdGVyICYmXG4gICAgICAgIG1ldGFEYXRhLmZpZWxkVHlwZSAhPT0gRmllbGRUeXBlLkV4cHJlc3Npb24gJiZcbiAgICAgICAgKGVsZW1lbnRbbWV0YURhdGEua2V5XSA9PSBudWxsKSAmJlxuICAgICAgICAhKChjdXN0b21DZWxsICYmIGN1c3RvbUNlbGwuVGVtcGxhdGVSZWYpIHx8IG1ldGFEYXRhLnRlbXBsYXRlKVxuICAgICAgXCI+IC0gPC9zcGFuPlxuICAgIDwvbWF0LWNlbGw+XG5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgbWF0SGVhZGVyQ2VsbERlZiAjbXlIZWFkZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tQ2VsbD8uY29sdW1uRGVmPy5oZWFkZXJDZWxsO2Vsc2UgaGVhZGVyO1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbUNlbGwuY29sdW1uRGVmLmhlYWRlckNlbGwudGVtcGxhdGU7IGNvbnRleHQ6IHttZXRhRGF0YTogbWV0YURhdGEsIHN0eWxlczogIHN0eWxlcy5oZWFkZXJ9IFwiPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj5cblxuICAgICAgPG1hdC1oZWFkZXItY2VsbCAgY2RrRHJhZyBbc3R5bGVyXT0nc3R5bGVzLmhlYWRlcicgW3Jlc2l6ZUNvbHVtbl09XCJ0cnVlXCIgW2tleV09XCJtZXRhRGF0YS5rZXlcIiAgIGNsYXNzPVwiY29sdW1uLWhlYWQgZHJhZy1oZWFkZXJcIiAjaGVhZHJlZiA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFtZXRhRGF0YS5faW50ZXJuYWxOb3RVc2VyRGVmaW5lZCB8fCAhY3VzdG9tQ2VsbD8uY29sdW1uRGVmPy5jZWxsIDsgZWxzZSBoZWFkZXJXaXRob3V0TWVudVwiIG1hdC1zb3J0LWhlYWRlciBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XG4gICAgICAgICAgICB7eyBtZXRhRGF0YS5kaXNwbGF5TmFtZSA/ICBtZXRhRGF0YS5kaXNwbGF5TmFtZSA6ICggbWV0YURhdGEua2V5IHwgc3BhY2VDYXNlICkgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2hlYWRlcldpdGhvdXRNZW51ID5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtZXRhRGF0YS5faW50ZXJuYWxOb3RVc2VyRGVmaW5lZDtcIiBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XG4gICAgICAgICAgICAgIHt7IG1ldGFEYXRhLmRpc3BsYXlOYW1lID8gIG1ldGFEYXRhLmRpc3BsYXlOYW1lIDogKCBtZXRhRGF0YS5rZXkgfCBzcGFjZUNhc2UgKSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8dGItaGVhZGVyLW1lbnUgY2RrRHJhZ0hhbmRsZSAqbmdJZj1cIighbWV0YURhdGEuX2ludGVybmFsTm90VXNlckRlZmluZWQgfHwgIWN1c3RvbUNlbGw/LmNvbHVtbkRlZj8uY2VsbCkgJiYgKCFtZXRhRGF0YS5ub0ZpbHRlcilcIiAjbWVudSBbbWV0YURhdGFdPSdtZXRhRGF0YScgW2ZpbHRlcl09J2ZpbHRlcicgPjwvdGItaGVhZGVyLW1lbnU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtaGVhZGVyLWNlbGw+XG5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gIDwvbmctdGVtcGxhdGU+XG5cblxuICA8bmctY29udGFpbmVyICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm91dGVyVGVtcGxhdGU7IGNvbnRleHQ6IHttZXRhRGF0YTogbWV0YURhdGEsIGVsZW1lbnQ6IGVsZW1lbnQgLCBzdHlsZXM6IHN0eWxlcy5ib2R5IH1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlIG1hdEZvb3RlckNlbGxEZWY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUNlbGw/LmNvbHVtbkRlZj8uZm9vdGVyQ2VsbDtlbHNlIGZvb3RlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbUNlbGwuY29sdW1uRGVmLmZvb3RlckNlbGwudGVtcGxhdGU7Y29udGV4dDoge21ldGFEYXRhOiBtZXRhRGF0YSwgZGF0YTogZGF0YSQsIHN0eWxlcyA6IHN0eWxlcy5mb290ZXIgfVwiPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI2Zvb3Rlcj5cbiAgICAgIDxtYXQtZm9vdGVyLWNlbGwgIFtzdHlsZXJdPSdzdHlsZXMuZm9vdGVyJyAqbmdyeExldD1cImRhdGEkIGFzIGRhdGFcIj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhPy5sZW5ndGggJiYgbWV0YURhdGEuYWRkaXRpb25hbD8uZm9vdGVyXCIgW25nU3dpdGNoXT1cIm1ldGFEYXRhLmZpZWxkVHlwZVwiIGNsYXNzPVwiYm9sZFwiPlxuICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJGaWVsZFR5cGUuQ3VycmVuY3lcIj5cbiAgICAgICAgICAgIHt7IGRhdGEgfCBjb2x1bW5Ub3RhbDogbWV0YURhdGEgfCBjdXJyZW5jeSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiRmllbGRUeXBlLk51bWJlclwiPlxuICAgICAgICAgICAge3sgZGF0YSB8IGNvbHVtblRvdGFsOiBtZXRhRGF0YSB8IG51bWJlciB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9tYXQtZm9vdGVyLWNlbGw+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9jb2x1bW4tYnVpbGRlci9jb2x1bW4tYnVpbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2NvbHVtbi1idWlsZGVyL2NvbHVtbi1idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFlLFNBQVMsRUFBc0QsTUFBTSxlQUFlLENBQUM7QUFDdEosT0FBTyxFQUFFLFNBQVMsRUFBWSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSx5QkFBeUIsQ0FBQztBQU1qRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBdUJwRSxNQUFNLE9BQU8sc0JBQXNCO0lBZWpDLFlBQ1UsZ0JBQWtDLEVBQ2xDLEtBQW9CLEVBQ3JCLEtBQWlCLEVBQ2hCLGVBQXFDO1FBSHJDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsVUFBSyxHQUFMLEtBQUssQ0FBZTtRQUNyQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2hCLG9CQUFlLEdBQWYsZUFBZSxDQUFzQjtRQWxCL0MsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQThEdEIsYUFBUSxHQUFHLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSx1QkFBdUIsQ0FBb0IsRUFBZSxFQUFFO1lBRWpHLElBQUksdUJBQXVCLEVBQUU7Z0JBQzNCLE9BQU8sQ0FBQyxFQUFDLElBQUksRUFBQyxPQUFPLHVCQUF1QixJQUFJLEVBQUUsUUFBUSxFQUFDLE1BQU0sRUFBQyxDQUFDLENBQUM7YUFDckU7WUFBQyxJQUFJLFFBQVEsRUFBRSxFQUFFO2dCQUNoQixPQUFPLENBQUMsRUFBQyxJQUFJLEVBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQzthQUNyQjtZQUNELE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNaLFNBQVMsUUFBUTtnQkFDZixPQUFPLHdCQUF3QixJQUFHLENBQUMsSUFBSSx1QkFBdUIsSUFBSSxJQUFJLENBQUM7WUFDekUsQ0FBQztRQUNILENBQUMsQ0FBQTtJQXRESyxDQUFDO0lBRVAsZ0JBQWdCO1FBQ2QsSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQ3pELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXO1lBQUcsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztRQUN0RSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ3pFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUMsQ0FBQztRQUMzRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUNwRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDbkIsQ0FBQztRQUNGLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDOUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNyQyxNQUFNLE1BQU0sR0FBYztnQkFDeEIsTUFBTSxFQUFHLEVBQUMsR0FBRyxjQUFjLEVBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLEVBQUM7Z0JBQzVGLE1BQU0sRUFBRSxFQUFDLEdBQUcsY0FBYyxFQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxFQUFDO2dCQUMzRixJQUFJLEVBQUUsRUFBQyxHQUFHLGNBQWMsRUFBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBQzthQUN4RixDQUFDO1lBQ0YsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsdUJBQXVCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckksQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQVksRUFBRSxHQUFXO1FBQ25DLElBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQzs7bUhBN0RVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLGdMQU90QixZQUFZLHVJQ3pDekIsMnFHQXdFZSx3aUZEMUNFO1FBQ2IsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUU7S0FDckQ7MkZBRVUsc0JBQXNCO2tCQVRsQyxTQUFTOytCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQzt3QkFDYixFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRTtxQkFDckQ7MExBS1EsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFbUIsU0FBUztzQkFBakMsU0FBUzt1QkFBQyxZQUFZO2dCQUtKLFlBQVk7c0JBQTlCLFNBQVM7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBPbkluaXQsIEhvc3RCaW5kaW5nLCBDb250ZW50Q2hpbGQsIENvbnRlbnRDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGRUeXBlLCBNZXRhRGF0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmVwb3J0LWRlZic7XG5pbXBvcnQgeyBNYXRDb2x1bW5EZWYsIE1hdFRhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ3VzdG9tQ2VsbERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgRmlsdGVySW5mbyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZmlsdGVyLWluZm8nO1xuaW1wb3J0IHsgVHJhbnNmb3JtQ3JlYXRvciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zZm9ybS1jcmVhdG9yJztcbmltcG9ydCB7IFRhYmxlU3RvcmUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RhYmxlLXN0b3JlJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRhYmxlVGVtcGxhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGFibGUtdGVtcGxhdGUtc2VydmljZSc7XG5pbXBvcnQgeyBwcmV2aW91c0FuZEN1cnJlbnQgfSBmcm9tICcuLi8uLi8uLi9yeGpzL3J4anMtb3BlcmF0b3JzJztcbmltcG9ydCB7IENka0Ryb3BMaXN0LCBDREtfRFJPUF9MSVNUIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5cblxuaW50ZXJmYWNlIHdpZHRoU3R5bGUge1xuICAgIGZsZXg/OiBzdHJpbmc7XG4gICAgbWF4V2lkdGg/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBhbGxTdHlsZXMge1xuICBib2R5OiB3aWR0aFN0eWxlO1xuICBoZWFkZXI6IHdpZHRoU3R5bGU7XG4gIGZvb3Rlcjogd2lkdGhTdHlsZTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGItY29sdW1uLWJ1aWxkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sdW1uLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2x1bW4tYnVpbGRlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdmlld1Byb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogQ0RLX0RST1BfTElTVCwgdXNlRXhpc3Rpbmc6IENka0Ryb3BMaXN0IH0sXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ29sdW1uQnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEZpZWxkVHlwZSA9IEZpZWxkVHlwZTtcbiAgZmlsdGVyITogUGFydGlhbDxGaWx0ZXJJbmZvPjtcbiAgQElucHV0KCkgbWV0YURhdGEhOiBNZXRhRGF0YVxuICBASW5wdXQoKSBjdXN0b21DZWxsITogQ3VzdG9tQ2VsbERpcmVjdGl2ZTtcbiAgQElucHV0KCkgZGF0YSQhOiBPYnNlcnZhYmxlPGFueVtdPjtcblxuICBAVmlld0NoaWxkKE1hdENvbHVtbkRlZikgY29sdW1uRGVmITogTWF0Q29sdW1uRGVmO1xuICBvdXRlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgaW5uZXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIHRyYW5zZm9ybSE6IChvOiBhbnksIC4uLmFyZ3M6IGFueVtdKT0+IGFueSA7XG5cbiAgQFZpZXdDaGlsZCgnYm9keScpIGJvZHlUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRyYW5zZm9ybUNyZWF0b3I6IFRyYW5zZm9ybUNyZWF0b3IsXG4gICAgcHJpdmF0ZSB0YWJsZTogTWF0VGFibGU8YW55PixcbiAgICBwdWJsaWMgc3RhdGU6IFRhYmxlU3RvcmUsXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVNlcnZpY2U6IFRhYmxlVGVtcGxhdGVTZXJ2aWNlLFxuICAgICkgeyB9XG5cbiAgZ2V0SW5uZXJUZW1wbGF0ZSgpIDpUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICBpZih0aGlzLm1ldGFEYXRhLnRlbXBsYXRlKSByZXR1cm4gdGhpcy5tZXRhRGF0YS50ZW1wbGF0ZTtcbiAgICBpZiAodGhpcy5jdXN0b21DZWxsPy5UZW1wbGF0ZVJlZikgIHJldHVybiB0aGlzLmN1c3RvbUNlbGwuVGVtcGxhdGVSZWY7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldFRlbXBsYXRlKHRoaXMubWV0YURhdGEuZmllbGRUeXBlKTtcbiAgfVxuICBzaG93ZmlsdGVycyQhOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBnZXRPdXRlclRlbXBsYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmN1c3RvbUNlbGw/LmNvbHVtbkRlZj8uY2VsbD8udGVtcGxhdGUgPz8gdGhpcy5ib2R5VGVtcGxhdGU7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZpbHRlciA9IHtrZXk6IHRoaXMubWV0YURhdGEua2V5LCBmaWVsZFR5cGU6IHRoaXMubWV0YURhdGEuZmllbGRUeXBlfTtcbiAgICBjb25zdCB3aWR0aCQgPSB0aGlzLnN0YXRlLmdldFVzZXJEZWZpbmVkV2lkdGgkKHRoaXMubWV0YURhdGEua2V5KS5waXBlKFxuICAgICAgcHJldmlvdXNBbmRDdXJyZW50KDApLFxuICAgICAgbWFwKHRoaXMubWFwV2lkdGgpLFxuICAgICk7XG4gICAgY29uc3QgZnVsbE1ldGFTdHlsZXMgPSB0aGlzLm1ldGFEYXRhLmFkZGl0aW9uYWw/LnN0eWxlcyA/PyB7fTtcbiAgICB0aGlzLnN0eWxlcyQgPSB3aWR0aCQucGlwZShtYXAod2lkdGggPT4ge1xuICAgICAgY29uc3Qgc3R5bGVzOiBhbGxTdHlsZXMgPSB7XG4gICAgICAgIGhlYWRlciA6IHsuLi5mdWxsTWV0YVN0eWxlcywuLi50aGlzLm1ldGFEYXRhLmFkZGl0aW9uYWw/LmNvbHVtblBhcnRTdHlsZXM/LmhlYWRlciwgLi4ud2lkdGh9LFxuICAgICAgICBmb290ZXI6IHsuLi5mdWxsTWV0YVN0eWxlcywuLi50aGlzLm1ldGFEYXRhLmFkZGl0aW9uYWw/LmNvbHVtblBhcnRTdHlsZXM/LmZvb3RlciwgLi4ud2lkdGh9LFxuICAgICAgICBib2R5OiB7Li4uZnVsbE1ldGFTdHlsZXMsLi4udGhpcy5tZXRhRGF0YS5hZGRpdGlvbmFsPy5jb2x1bW5QYXJ0U3R5bGVzPy5ib2R5LCAuLi53aWR0aH0sXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHN0eWxlcztcbiAgICB9KSk7XG4gICAgdGhpcy5zaG93ZmlsdGVycyQgPSB0aGlzLnN0YXRlLnRhYmxlU2V0dGluZ3MkLnBpcGUobWFwKHNldHRpbmdzID0+ICEoc2V0dGluZ3MuaGlkZUNvbHVtbkhlYWRlckZpbHRlcnMgfHwgdGhpcy5tZXRhRGF0YS5ub0ZpbHRlcikpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLm91dGVyVGVtcGxhdGUgPSB0aGlzLmdldE91dGVyVGVtcGxhdGUoKTtcbiAgICB0aGlzLmlubmVyVGVtcGxhdGUgPSB0aGlzLmdldElubmVyVGVtcGxhdGUoKTtcbiAgICB0aGlzLnRyYW5zZm9ybSA9IHRoaXMudHJhbnNmb3JtQ3JlYXRvci5jcmVhdGVUcmFuc2Zvcm1lcih0aGlzLm1ldGFEYXRhKTtcbiAgICB0aGlzLnRhYmxlLmFkZENvbHVtbkRlZih0aGlzLmNvbHVtbkRlZik7XG4gIH1cblxuICBjZWxsQ2xpY2tlZChlbGVtZW50OiBhbnksIGtleTogc3RyaW5nKSB7XG4gICAgaWYodGhpcy5tZXRhRGF0YS5jbGljaykge1xuICAgICAgdGhpcy5tZXRhRGF0YS5jbGljayhlbGVtZW50LGtleSk7XG4gICAgfVxuICB9XG5cbiAgbWFwV2lkdGggPSAoW3ByZXZpb3VzVXNlckRlZmluZWRXaWR0aCwgY3VycmVudFVzZXJEZWZpbmVkV2lkdGhdIDogW251bWJlciwgbnVtYmVyXSkgOiB3aWR0aFN0eWxlID0+IHtcblxuICAgIGlmKCBjdXJyZW50VXNlckRlZmluZWRXaWR0aCApe1xuICAgICAgcmV0dXJuICh7ZmxleDpgMCAwICR7Y3VycmVudFVzZXJEZWZpbmVkV2lkdGh9cHhgLCBtYXhXaWR0aDonbm9uZSd9KTtcbiAgICB9IGlmKCB3YXNSZXNldCgpICl7XG4gICAgICByZXR1cm4gKHtmbGV4OicxJ30pO1xuICAgIH1cbiAgICByZXR1cm4gKHt9KTtcbiAgICBmdW5jdGlvbiB3YXNSZXNldCgpe1xuICAgICAgcmV0dXJuIHByZXZpb3VzVXNlckRlZmluZWRXaWR0aCA+PTAgJiYgY3VycmVudFVzZXJEZWZpbmVkV2lkdGggPT0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBzdHlsZXMkITpPYnNlcnZhYmxlPGFsbFN0eWxlcz5cblxufVxuIiwiPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cIm1ldGFEYXRhLmtleVwiICpuZ3J4TGV0PVwic3R5bGVzJCBhcyBzdHlsZXNcIj5cblxuICA8bmctdGVtcGxhdGUgI2JvZHkgbGV0LWVsZW1lbnQ9J2VsZW1lbnQnID5cblxuICAgICAgPG1hdC1jZWxsIFtzdHlsZXJdPSdzdHlsZXMuYm9keScgW2NsYXNzLmdyb3VwLWZvb3Rlcl09XCJlbGVtZW50LmlzR3JvdXBGb290ZXJcIiAoY2xpY2spPSdjZWxsQ2xpY2tlZChlbGVtZW50LCBtZXRhRGF0YS5rZXkpJz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlubmVyVGVtcGxhdGU7Y29udGV4dDoge21ldGFEYXRhOiBtZXRhRGF0YSwgZWxlbWVudDogZWxlbWVudCwgdHJhbnNmb3JtOiB0cmFuc2Zvcm0gfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibm8tdmFsXCIgKm5nSWY9XCJcbiAgICAgICAgIWVsZW1lbnQuaXNHcm91cEZvb3RlciAmJlxuICAgICAgICBtZXRhRGF0YS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5FeHByZXNzaW9uICYmXG4gICAgICAgIChlbGVtZW50W21ldGFEYXRhLmtleV0gPT0gbnVsbCkgJiZcbiAgICAgICAgISgoY3VzdG9tQ2VsbCAmJiBjdXN0b21DZWxsLlRlbXBsYXRlUmVmKSB8fCBtZXRhRGF0YS50ZW1wbGF0ZSlcbiAgICAgIFwiPiAtIDwvc3Bhbj5cbiAgICA8L21hdC1jZWxsPlxuXG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlIG1hdEhlYWRlckNlbGxEZWYgI215SGVhZGVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUNlbGw/LmNvbHVtbkRlZj8uaGVhZGVyQ2VsbDtlbHNlIGhlYWRlcjtcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21DZWxsLmNvbHVtbkRlZi5oZWFkZXJDZWxsLnRlbXBsYXRlOyBjb250ZXh0OiB7bWV0YURhdGE6IG1ldGFEYXRhLCBzdHlsZXM6ICBzdHlsZXMuaGVhZGVyfSBcIj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG5cbiAgICAgIDxtYXQtaGVhZGVyLWNlbGwgIGNka0RyYWcgW3N0eWxlcl09J3N0eWxlcy5oZWFkZXInIFtyZXNpemVDb2x1bW5dPVwidHJ1ZVwiIFtrZXldPVwibWV0YURhdGEua2V5XCIgICBjbGFzcz1cImNvbHVtbi1oZWFkIGRyYWctaGVhZGVyXCIgI2hlYWRyZWYgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWNvbnRhaW5lclwiIGNka0RyYWdIYW5kbGU+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFtZXRhRGF0YS5faW50ZXJuYWxOb3RVc2VyRGVmaW5lZCB8fCAhY3VzdG9tQ2VsbD8uY29sdW1uRGVmPy5jZWxsIDsgZWxzZSBoZWFkZXJXaXRob3V0TWVudVwiIG1hdC1zb3J0LWhlYWRlciBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XG4gICAgICAgICAgICB7eyBtZXRhRGF0YS5kaXNwbGF5TmFtZSA/ICBtZXRhRGF0YS5kaXNwbGF5TmFtZSA6ICggbWV0YURhdGEua2V5IHwgc3BhY2VDYXNlICkgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2hlYWRlcldpdGhvdXRNZW51ID5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtZXRhRGF0YS5faW50ZXJuYWxOb3RVc2VyRGVmaW5lZDtcIiBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XG4gICAgICAgICAgICAgIHt7IG1ldGFEYXRhLmRpc3BsYXlOYW1lID8gIG1ldGFEYXRhLmRpc3BsYXlOYW1lIDogKCBtZXRhRGF0YS5rZXkgfCBzcGFjZUNhc2UgKSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8dGItaGVhZGVyLW1lbnUgXG4gICAgICAgICAgICAqbmdJZj1cIighbWV0YURhdGEuX2ludGVybmFsTm90VXNlckRlZmluZWQgfHwgIWN1c3RvbUNlbGw/LmNvbHVtbkRlZj8uY2VsbCkgJiYgKHNob3dmaWx0ZXJzJCB8IGFzeW5jKTtcIiAjbWVudSBbbWV0YURhdGFdPSdtZXRhRGF0YScgW2ZpbHRlcl09J2ZpbHRlcicgPlxuICAgICAgICAgIDwvdGItaGVhZGVyLW1lbnU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtaGVhZGVyLWNlbGw+XG5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gIDwvbmctdGVtcGxhdGU+XG5cblxuICA8bmctY29udGFpbmVyICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm91dGVyVGVtcGxhdGU7IGNvbnRleHQ6IHttZXRhRGF0YTogbWV0YURhdGEsIGVsZW1lbnQ6IGVsZW1lbnQgLCBzdHlsZXM6IHN0eWxlcy5ib2R5IH1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlIG1hdEZvb3RlckNlbGxEZWY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUNlbGw/LmNvbHVtbkRlZj8uZm9vdGVyQ2VsbDtlbHNlIGZvb3RlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbUNlbGwuY29sdW1uRGVmLmZvb3RlckNlbGwudGVtcGxhdGU7Y29udGV4dDoge21ldGFEYXRhOiBtZXRhRGF0YSwgZGF0YTogZGF0YSQsIHN0eWxlcyA6IHN0eWxlcy5mb290ZXIgfVwiPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI2Zvb3Rlcj5cbiAgICAgIDxtYXQtZm9vdGVyLWNlbGwgIFtzdHlsZXJdPSdzdHlsZXMuZm9vdGVyJyAqbmdyeExldD1cImRhdGEkIGFzIGRhdGFcIj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhPy5sZW5ndGggJiYgbWV0YURhdGEuYWRkaXRpb25hbD8uZm9vdGVyXCIgW25nU3dpdGNoXT1cIm1ldGFEYXRhLmZpZWxkVHlwZVwiIGNsYXNzPVwiYm9sZFwiPlxuICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJGaWVsZFR5cGUuQ3VycmVuY3lcIj5cbiAgICAgICAgICAgIHt7IGRhdGEgfCBjb2x1bW5Ub3RhbDogbWV0YURhdGEgfCBjdXJyZW5jeSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiRmllbGRUeXBlLk51bWJlclwiPlxuICAgICAgICAgICAge3sgZGF0YSB8IGNvbHVtblRvdGFsOiBtZXRhRGF0YSB8IG51bWJlciB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9tYXQtZm9vdGVyLWNlbGw+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPiJdfQ==
@@ -13,7 +13,7 @@ export class DateFilterComponent {
13
13
  }
14
14
  }
15
15
  DateFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: DateFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
- DateFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: DateFilterComponent, selector: "tb-date-filter", inputs: { info: "info", CurrentFilterType: "CurrentFilterType" }, ngImport: i0, template: "<ng-container *ngIf=\"CurrentFilterType !== FilterType.DateBetween && CurrentFilterType !== FilterType.IsNull\">\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" [matDatepicker]=\"cal\"/>\n <mat-datepicker-toggle matSuffix [for]=\"cal\" preventEnter></mat-datepicker-toggle>\n <mat-datepicker #cal></mat-datepicker>\n </mat-form-field>\n</ng-container>\n\n<ng-container *ngIf=\"CurrentFilterType === FilterType.DateBetween\">\n <ng-container ngModelGroup=\"filterValue\">\n <mat-form-field class=\"my-filter\" >\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"From\" [matDatepicker]=\"fromVal\"\n (click)=\"fromVal.open()\"/>\n <mat-datepicker-toggle matSuffix [for]=\"fromVal\" preventEnter></mat-datepicker-toggle>\n <mat-datepicker #fromVal></mat-datepicker>\n </mat-form-field>\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"To\" [matDatepicker]=\"toVal\" (click)=\"toVal.open()\"/>\n <mat-datepicker-toggle matSuffix [for]=\"toVal\" preventEnter></mat-datepicker-toggle>\n <mat-datepicker #toVal></mat-datepicker>\n </mat-form-field>\n </ng-container>\n</ng-container>\n\n", components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { type: i2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1.MatSuffix, selector: "[matSuffix]" }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.NgModelGroup, selector: "[ngModelGroup]", inputs: ["ngModelGroup"], exportAs: ["ngModelGroup"] }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16
+ DateFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: DateFilterComponent, selector: "tb-date-filter", inputs: { info: "info", CurrentFilterType: "CurrentFilterType" }, ngImport: i0, template: "<ng-container *ngIf=\"CurrentFilterType !== FilterType.DateBetween && CurrentFilterType !== FilterType.IsNull\">\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" [matDatepicker]=\"cal\"/>\n <mat-datepicker-toggle matSuffix [for]=\"cal\" preventEnter></mat-datepicker-toggle>\n <mat-datepicker #cal></mat-datepicker>\n </mat-form-field>\n</ng-container>\n\n<ng-container *ngIf=\"CurrentFilterType === FilterType.DateBetween\">\n <ng-container ngModelGroup=\"filterValue\">\n <mat-form-field class=\"my-filter\" >\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"From\" [matDatepicker]=\"fromVal\"\n (click)=\"fromVal.open()\"/>\n <mat-datepicker-toggle matSuffix [for]=\"fromVal\" preventEnter></mat-datepicker-toggle>\n <mat-datepicker #fromVal></mat-datepicker>\n </mat-form-field>\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"To\" [matDatepicker]=\"toVal\" (click)=\"toVal.open()\"/>\n <mat-datepicker-toggle matSuffix [for]=\"toVal\" preventEnter></mat-datepicker-toggle>\n <mat-datepicker #toVal></mat-datepicker>\n </mat-form-field>\n </ng-container>\n</ng-container>\n\n", components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { type: i2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1.MatSuffix, selector: "[matSuffix]" }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.NgModelGroup, selector: "[ngModelGroup]", inputs: ["ngModelGroup"], exportAs: ["ngModelGroup"] }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
17
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: DateFilterComponent, decorators: [{
18
18
  type: Component,
19
19
  args: [{ selector: 'tb-date-filter', changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<ng-container *ngIf=\"CurrentFilterType !== FilterType.DateBetween && CurrentFilterType !== FilterType.IsNull\">\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" [matDatepicker]=\"cal\"/>\n <mat-datepicker-toggle matSuffix [for]=\"cal\" preventEnter></mat-datepicker-toggle>\n <mat-datepicker #cal></mat-datepicker>\n </mat-form-field>\n</ng-container>\n\n<ng-container *ngIf=\"CurrentFilterType === FilterType.DateBetween\">\n <ng-container ngModelGroup=\"filterValue\">\n <mat-form-field class=\"my-filter\" >\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"From\" [matDatepicker]=\"fromVal\"\n (click)=\"fromVal.open()\"/>\n <mat-datepicker-toggle matSuffix [for]=\"fromVal\" preventEnter></mat-datepicker-toggle>\n <mat-datepicker #fromVal></mat-datepicker>\n </mat-form-field>\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"To\" [matDatepicker]=\"toVal\" (click)=\"toVal.open()\"/>\n <mat-datepicker-toggle matSuffix [for]=\"toVal\" preventEnter></mat-datepicker-toggle>\n <mat-datepicker #toVal></mat-datepicker>\n </mat-form-field>\n </ng-container>\n</ng-container>\n\n" }]
@@ -22,4 +22,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImpor
22
22
  }], CurrentFilterType: [{
23
23
  type: Input
24
24
  }] } });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9kYXRlLWZpbHRlci9kYXRlLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2RhdGUtZmlsdGVyL2RhdGUtZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFRMUQsTUFBTSxPQUFPLG1CQUFtQjtJQU5oQztRQU9JLGVBQVUsR0FBRyxVQUFVLENBQUM7S0FHM0I7O2dIQUpZLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHdIQ1hoQyx5eUNBd0JBLDR6RERmbUIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFDLENBQUM7MkZBRXhELG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDSSxnQkFBZ0IsbUJBRVQsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFDLENBQUM7OEJBSXhELElBQUk7c0JBQVosS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlsdGVySW5mbywgUGFydGlhbEZpbHRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZmlsdGVyLWluZm8nO1xuaW1wb3J0IHsgRmlsdGVyVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2ZpbHRlclR5cGVzJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0Yi1kYXRlLWZpbHRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICB2aWV3UHJvdmlkZXJzOiBbe3Byb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBOZ0Zvcm19XVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlRmlsdGVyQ29tcG9uZW50IHtcbiAgICBGaWx0ZXJUeXBlID0gRmlsdGVyVHlwZTtcbiAgICBASW5wdXQoKSBpbmZvITogUGFydGlhbEZpbHRlcjtcbiAgICBASW5wdXQoKSBDdXJyZW50RmlsdGVyVHlwZSE6IEZpbHRlclR5cGU7XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiQ3VycmVudEZpbHRlclR5cGUgIT09IEZpbHRlclR5cGUuRGF0ZUJldHdlZW4gJiYgQ3VycmVudEZpbHRlclR5cGUgIT09IEZpbHRlclR5cGUuSXNOdWxsXCI+XG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm15LWZpbHRlclwiPlxuICAgICAgPGlucHV0IG1hdElucHV0IG5hbWU9XCJmaWx0ZXJWYWx1ZVwiIFtuZ01vZGVsXT1cImluZm8uZmlsdGVyVmFsdWVcIiBbbWF0RGF0ZXBpY2tlcl09XCJjYWxcIi8+XG4gICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cImNhbFwiIHByZXZlbnRFbnRlcj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgIDxtYXQtZGF0ZXBpY2tlciAjY2FsPjwvbWF0LWRhdGVwaWNrZXI+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIkN1cnJlbnRGaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlLkRhdGVCZXR3ZWVuXCI+XG4gIDxuZy1jb250YWluZXIgbmdNb2RlbEdyb3VwPVwiZmlsdGVyVmFsdWVcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJteS1maWx0ZXJcIiA+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgbmFtZT1cIlN0YXJ0XCIgW25nTW9kZWxdPVwiaW5mby5maWx0ZXJWYWx1ZT8uU3RhcnRcIiAgcGxhY2Vob2xkZXI9XCJGcm9tXCIgW21hdERhdGVwaWNrZXJdPVwiZnJvbVZhbFwiXG4gICAgICAgICAgKGNsaWNrKT1cImZyb21WYWwub3BlbigpXCIvPlxuICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJmcm9tVmFsXCIgcHJldmVudEVudGVyPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgPG1hdC1kYXRlcGlja2VyICNmcm9tVmFsPjwvbWF0LWRhdGVwaWNrZXI+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJteS1maWx0ZXJcIj5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBuYW1lPVwiRW5kXCIgW25nTW9kZWxdPVwiaW5mby5maWx0ZXJWYWx1ZT8uRW5kXCIgIHBsYWNlaG9sZGVyPVwiVG9cIiBbbWF0RGF0ZXBpY2tlcl09XCJ0b1ZhbFwiIChjbGljayk9XCJ0b1ZhbC5vcGVuKClcIi8+XG4gICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cInRvVmFsXCIgcHJldmVudEVudGVyPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgPG1hdC1kYXRlcGlja2VyICN0b1ZhbD48L21hdC1kYXRlcGlja2VyPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9kYXRlLWZpbHRlci9kYXRlLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2RhdGUtZmlsdGVyL2RhdGUtZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFRMUQsTUFBTSxPQUFPLG1CQUFtQjtJQU5oQztRQU9JLGVBQVUsR0FBRyxVQUFVLENBQUM7S0FHM0I7O2dIQUpZLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHdIQ1hoQyx5eUNBd0JBLG8wRERmbUIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFDLENBQUM7MkZBRXhELG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDSSxnQkFBZ0IsbUJBRVQsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFDLENBQUM7OEJBSXhELElBQUk7c0JBQVosS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlsdGVySW5mbywgUGFydGlhbEZpbHRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZmlsdGVyLWluZm8nO1xuaW1wb3J0IHsgRmlsdGVyVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2ZpbHRlclR5cGVzJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0Yi1kYXRlLWZpbHRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICB2aWV3UHJvdmlkZXJzOiBbe3Byb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBOZ0Zvcm19XVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlRmlsdGVyQ29tcG9uZW50IHtcbiAgICBGaWx0ZXJUeXBlID0gRmlsdGVyVHlwZTtcbiAgICBASW5wdXQoKSBpbmZvITogUGFydGlhbEZpbHRlcjtcbiAgICBASW5wdXQoKSBDdXJyZW50RmlsdGVyVHlwZSE6IEZpbHRlclR5cGU7XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiQ3VycmVudEZpbHRlclR5cGUgIT09IEZpbHRlclR5cGUuRGF0ZUJldHdlZW4gJiYgQ3VycmVudEZpbHRlclR5cGUgIT09IEZpbHRlclR5cGUuSXNOdWxsXCI+XG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm15LWZpbHRlclwiPlxuICAgICAgPGlucHV0IG1hdElucHV0IG5hbWU9XCJmaWx0ZXJWYWx1ZVwiIFtuZ01vZGVsXT1cImluZm8uZmlsdGVyVmFsdWVcIiBbbWF0RGF0ZXBpY2tlcl09XCJjYWxcIi8+XG4gICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cImNhbFwiIHByZXZlbnRFbnRlcj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgIDxtYXQtZGF0ZXBpY2tlciAjY2FsPjwvbWF0LWRhdGVwaWNrZXI+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIkN1cnJlbnRGaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlLkRhdGVCZXR3ZWVuXCI+XG4gIDxuZy1jb250YWluZXIgbmdNb2RlbEdyb3VwPVwiZmlsdGVyVmFsdWVcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJteS1maWx0ZXJcIiA+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgbmFtZT1cIlN0YXJ0XCIgW25nTW9kZWxdPVwiaW5mby5maWx0ZXJWYWx1ZT8uU3RhcnRcIiAgcGxhY2Vob2xkZXI9XCJGcm9tXCIgW21hdERhdGVwaWNrZXJdPVwiZnJvbVZhbFwiXG4gICAgICAgICAgKGNsaWNrKT1cImZyb21WYWwub3BlbigpXCIvPlxuICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJmcm9tVmFsXCIgcHJldmVudEVudGVyPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgPG1hdC1kYXRlcGlja2VyICNmcm9tVmFsPjwvbWF0LWRhdGVwaWNrZXI+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJteS1maWx0ZXJcIj5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBuYW1lPVwiRW5kXCIgW25nTW9kZWxdPVwiaW5mby5maWx0ZXJWYWx1ZT8uRW5kXCIgIHBsYWNlaG9sZGVyPVwiVG9cIiBbbWF0RGF0ZXBpY2tlcl09XCJ0b1ZhbFwiIChjbGljayk9XCJ0b1ZhbC5vcGVuKClcIi8+XG4gICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cInRvVmFsXCIgcHJldmVudEVudGVyPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgPG1hdC1kYXRlcGlja2VyICN0b1ZhbD48L21hdC1kYXRlcGlja2VyPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbiJdfQ==
@@ -41,7 +41,7 @@ export class FilterComponent {
41
41
  }
42
42
  }
43
43
  FilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FilterComponent, deps: [{ token: i1.TableStore }], target: i0.ɵɵFactoryTarget.Component });
44
- FilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: FilterComponent, selector: "tb-filter", inputs: { filter: "filter" }, outputs: { close: "close" }, ngImport: i0, template: "<mat-card class=\"mat-elevation-z5\" *ngIf=\"filter\">\n <form #form=\"ngForm\" (keydown.enter)=\"onEnter(form.value,$event)\" (keydown.escape)=\"close.emit()\">\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"filter.filterId\" />\n <input type=\"hidden\" name=\"key\" [ngModel]=\"filter.key\" />\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"filter.fieldType\" />\n <div class=\"row\" >\n <h4 class=\"filter-name\">{{(filter.key | spaceCase)}} Filter</h4>\n <button class=\"cancel-button\" color=\"primary\" mat-icon-button (click)=\"close.emit();\" type=\"button\"\n matTooltip=\"Close\">\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\n </button>\n </div>\n <div class=\"row\">\n <mat-form-field class=\"my-filter\" >\n <mat-select placeholder=\"Select Filter Type\" name=\"filterType\" [(ngModel)]=\"currentFilterType\" >\n <mat-option *ngFor=\"let kvp of filterTypes[filter.fieldType] | keyvalue \" [value]=\"$any(kvp.value)[0]\">\n {{ kvp.key }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <ng-container [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.String || filter.fieldType === FieldType.Array || filter.fieldType === FieldType.Link ||\n filter.fieldType === FieldType.Unknown || filter.fieldType === FieldType.PhoneNumber\" >\n <ng-container *ngTemplateOutlet=\"String\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Number || filter.fieldType === FieldType.Currency\">\n <tb-number-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" ></tb-number-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Boolean\">\n <ng-container *ngTemplateOutlet=\"Boolean\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Date\">\n <tb-date-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\"></tb-date-filter>\n </ng-container>\n <ng-container *ngSwitchCase='filter.fieldType === FieldType.Enum' >\n <ng-container *ngTemplateOutlet=\"Enum\"></ng-container>\n </ng-container>\n </ng-container>\n\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" *ngIf=\"currentFilterType === FilterType.IsNull\">\n <mat-radio-button [value]=\"true\">True</mat-radio-button>\n <mat-radio-button [value]=\"false\">False</mat-radio-button>\n </mat-radio-group>\n\n </div>\n <button mat-button (click)=\"state.addFilter(form.value)\" disableRipple [disabled]=\"form.value.filterValue==undefined || !form.value.filterType\">\n Apply\n </button>\n\n\n<ng-template #String>\n <mat-form-field class=\"my-filter\" *ngIf=\"currentFilterType !== FilterType.IsNull && currentFilterType !== FilterType.In\">\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\n </mat-form-field>\n <ng-container *ngIf=\"currentFilterType === FilterType.In\">\n <lib-in-filter [type]=\"FieldType.String\" name='filterValue' [(ngModel)]=\"filter.filterValue\" ></lib-in-filter>\n </ng-container>\n</ng-template>\n\n<ng-template #Boolean >\n <div class=\"switch\" [ngSwitch]=\"currentFilterType\">\n <div class=\"switch\" *ngSwitchCase=\"FilterType.BooleanEquals\">\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" >\n <mat-radio-button [value]=\"true\" preventEnter>True</mat-radio-button>\n <mat-radio-button [value]=\"false\" preventEnter>False</mat-radio-button>\n </mat-radio-group>\n </div>\n </div>\n</ng-template>\n\n <ng-template #Enum>\n <ng-container *ngIf='currentFilterType === FilterType.In' >\n <tb-in-list-filter [key]='filter.key' name='filterValue' [(ngModel)]='filter.filterValue' ></tb-in-list-filter>\n </ng-container>\n </ng-template>\n\n </form>\n</mat-card>\n", styles: [".filter-name{color:#6495ed;margin-right:30px;font-weight:600;display:inline-block}.switch{display:inline-block}.my-filter{margin-right:15px}.cancel-button{float:right}.row{margin:0}.cancel-button{font-size:18px;font-weight:700}mat-radio-button{margin:5px}\n"], components: [{ type: i2.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i3.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: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i8.NumberFilterComponent, selector: "tb-number-filter", inputs: ["CurrentFilterType", "info"] }, { type: i9.DateFilterComponent, selector: "tb-date-filter", inputs: ["info", "CurrentFilterType"] }, { type: i10.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { type: i11.InFilterComponent, selector: "lib-in-filter", inputs: ["type"] }, { type: i12.InListFilterComponent, selector: "tb-in-list-filter", inputs: ["key"] }], directives: [{ type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i14.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i14.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i14.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i14.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i14.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i15.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i13.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i13.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i10.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { type: i16.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }], pipes: { "spaceCase": i17.SpaceCasePipe, "keyvalue": i13.KeyValuePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
44
+ FilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: FilterComponent, selector: "tb-filter", inputs: { filter: "filter" }, outputs: { close: "close" }, ngImport: i0, template: "<mat-card class=\"mat-elevation-z5\" *ngIf=\"filter\">\n <form #form=\"ngForm\" (keydown.enter)=\"onEnter(form.value,$event)\" (keydown.escape)=\"close.emit()\">\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"filter.filterId\" />\n <input type=\"hidden\" name=\"key\" [ngModel]=\"filter.key\" />\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"filter.fieldType\" />\n <div class=\"row\" >\n <h4 class=\"filter-name\">{{(filter.key | spaceCase)}} Filter</h4>\n <button class=\"cancel-button\" color=\"primary\" mat-icon-button (click)=\"close.emit();\" type=\"button\"\n matTooltip=\"Close\">\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\n </button>\n </div>\n <div class=\"row\">\n <mat-form-field class=\"my-filter\" >\n <mat-select placeholder=\"Select Filter Type\" name=\"filterType\" [(ngModel)]=\"currentFilterType\" >\n <mat-option *ngFor=\"let kvp of filterTypes[filter.fieldType] | keyvalue \" [value]=\"$any(kvp.value)[0]\">\n {{ kvp.key }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <ng-container [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.String || filter.fieldType === FieldType.Array || filter.fieldType === FieldType.Link ||\n filter.fieldType === FieldType.Unknown || filter.fieldType === FieldType.PhoneNumber\" >\n <ng-container *ngTemplateOutlet=\"String\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Number || filter.fieldType === FieldType.Currency\">\n <tb-number-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" ></tb-number-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Boolean\">\n <ng-container *ngTemplateOutlet=\"Boolean\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Date\">\n <tb-date-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\"></tb-date-filter>\n </ng-container>\n <ng-container *ngSwitchCase='filter.fieldType === FieldType.Enum' >\n <ng-container *ngTemplateOutlet=\"Enum\"></ng-container>\n </ng-container>\n </ng-container>\n\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" *ngIf=\"currentFilterType === FilterType.IsNull\">\n <mat-radio-button [value]=\"true\">True</mat-radio-button>\n <mat-radio-button [value]=\"false\">False</mat-radio-button>\n </mat-radio-group>\n\n </div>\n <button mat-button (click)=\"state.addFilter(form.value)\" disableRipple [disabled]=\"form.value.filterValue==undefined || !form.value.filterType\">\n Apply\n </button>\n\n\n<ng-template #String>\n <mat-form-field class=\"my-filter\" *ngIf=\"currentFilterType !== FilterType.IsNull && currentFilterType !== FilterType.In\">\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\n </mat-form-field>\n <ng-container *ngIf=\"currentFilterType === FilterType.In\">\n <lib-in-filter [type]=\"FieldType.String\" name='filterValue' [(ngModel)]=\"filter.filterValue\" ></lib-in-filter>\n </ng-container>\n</ng-template>\n\n<ng-template #Boolean >\n <div class=\"switch\" [ngSwitch]=\"currentFilterType\">\n <div class=\"switch\" *ngSwitchCase=\"FilterType.BooleanEquals\">\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" >\n <mat-radio-button [value]=\"true\" preventEnter>True</mat-radio-button>\n <mat-radio-button [value]=\"false\" preventEnter>False</mat-radio-button>\n </mat-radio-group>\n </div>\n </div>\n</ng-template>\n\n <ng-template #Enum>\n <ng-container *ngIf='currentFilterType === FilterType.In' >\n <tb-in-list-filter [key]='filter.key' name='filterValue' [(ngModel)]='filter.filterValue' ></tb-in-list-filter>\n </ng-container>\n </ng-template>\n\n </form>\n</mat-card>\n", styles: [".filter-name{color:#6495ed;margin-right:30px;font-weight:600;display:inline-block}.switch{display:inline-block}.my-filter{margin-right:15px}.cancel-button{float:right}.row{margin:0}.cancel-button{font-size:18px;font-weight:700}mat-radio-button{margin:5px}\n"], components: [{ type: i2.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i3.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: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i8.NumberFilterComponent, selector: "tb-number-filter", inputs: ["CurrentFilterType", "info"] }, { type: i9.DateFilterComponent, selector: "tb-date-filter", inputs: ["info", "CurrentFilterType"] }, { type: i10.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { type: i11.InFilterComponent, selector: "lib-in-filter", inputs: ["type"] }, { type: i12.InListFilterComponent, selector: "tb-in-list-filter", inputs: ["key"] }], directives: [{ type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i14.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i14.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i14.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i14.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i14.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i15.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i13.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i13.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i10.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { type: i16.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }], pipes: { "spaceCase": i17.SpaceCasePipe, "keyvalue": i13.KeyValuePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
45
45
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FilterComponent, decorators: [{
46
46
  type: Component,
47
47
  args: [{ selector: 'tb-filter', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card class=\"mat-elevation-z5\" *ngIf=\"filter\">\n <form #form=\"ngForm\" (keydown.enter)=\"onEnter(form.value,$event)\" (keydown.escape)=\"close.emit()\">\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"filter.filterId\" />\n <input type=\"hidden\" name=\"key\" [ngModel]=\"filter.key\" />\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"filter.fieldType\" />\n <div class=\"row\" >\n <h4 class=\"filter-name\">{{(filter.key | spaceCase)}} Filter</h4>\n <button class=\"cancel-button\" color=\"primary\" mat-icon-button (click)=\"close.emit();\" type=\"button\"\n matTooltip=\"Close\">\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\n </button>\n </div>\n <div class=\"row\">\n <mat-form-field class=\"my-filter\" >\n <mat-select placeholder=\"Select Filter Type\" name=\"filterType\" [(ngModel)]=\"currentFilterType\" >\n <mat-option *ngFor=\"let kvp of filterTypes[filter.fieldType] | keyvalue \" [value]=\"$any(kvp.value)[0]\">\n {{ kvp.key }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <ng-container [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.String || filter.fieldType === FieldType.Array || filter.fieldType === FieldType.Link ||\n filter.fieldType === FieldType.Unknown || filter.fieldType === FieldType.PhoneNumber\" >\n <ng-container *ngTemplateOutlet=\"String\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Number || filter.fieldType === FieldType.Currency\">\n <tb-number-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" ></tb-number-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Boolean\">\n <ng-container *ngTemplateOutlet=\"Boolean\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Date\">\n <tb-date-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\"></tb-date-filter>\n </ng-container>\n <ng-container *ngSwitchCase='filter.fieldType === FieldType.Enum' >\n <ng-container *ngTemplateOutlet=\"Enum\"></ng-container>\n </ng-container>\n </ng-container>\n\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" *ngIf=\"currentFilterType === FilterType.IsNull\">\n <mat-radio-button [value]=\"true\">True</mat-radio-button>\n <mat-radio-button [value]=\"false\">False</mat-radio-button>\n </mat-radio-group>\n\n </div>\n <button mat-button (click)=\"state.addFilter(form.value)\" disableRipple [disabled]=\"form.value.filterValue==undefined || !form.value.filterType\">\n Apply\n </button>\n\n\n<ng-template #String>\n <mat-form-field class=\"my-filter\" *ngIf=\"currentFilterType !== FilterType.IsNull && currentFilterType !== FilterType.In\">\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\n </mat-form-field>\n <ng-container *ngIf=\"currentFilterType === FilterType.In\">\n <lib-in-filter [type]=\"FieldType.String\" name='filterValue' [(ngModel)]=\"filter.filterValue\" ></lib-in-filter>\n </ng-container>\n</ng-template>\n\n<ng-template #Boolean >\n <div class=\"switch\" [ngSwitch]=\"currentFilterType\">\n <div class=\"switch\" *ngSwitchCase=\"FilterType.BooleanEquals\">\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" >\n <mat-radio-button [value]=\"true\" preventEnter>True</mat-radio-button>\n <mat-radio-button [value]=\"false\" preventEnter>False</mat-radio-button>\n </mat-radio-group>\n </div>\n </div>\n</ng-template>\n\n <ng-template #Enum>\n <ng-container *ngIf='currentFilterType === FilterType.In' >\n <tb-in-list-filter [key]='filter.key' name='filterValue' [(ngModel)]='filter.filterValue' ></tb-in-list-filter>\n </ng-container>\n </ng-template>\n\n </form>\n</mat-card>\n", styles: [".filter-name{color:#6495ed;margin-right:30px;font-weight:600;display:inline-block}.switch{display:inline-block}.my-filter{margin-right:15px}.cancel-button{float:right}.row{margin:0}.cancel-button{font-size:18px;font-weight:700}mat-radio-button{margin:5px}\n"] }]
@@ -109,6 +109,7 @@ export class GenericTableComponent {
109
109
  this.keys = [...this.columns, ...keys];
110
110
  this.rowDefArr?.forEach(row => row.columns = this.keys);
111
111
  });
112
+ this.showHeader$ = this.state.tableSettings$.pipe(map(settings => !(settings.hideColumnHeader)));
112
113
  }
113
114
  createDataSource() {
114
115
  this.dataSource = new GenericTableDataSource(this.data$.pipe(tap((d) => this.selection.clear())));
@@ -151,10 +152,10 @@ export class GenericTableComponent {
151
152
  }
152
153
  }
153
154
  GenericTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: GenericTableComponent, deps: [{ token: i1.MatSort }, { token: i2.TableStore }, { token: i0.ViewContainerRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
154
- GenericTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: GenericTableComponent, selector: "tb-generic-table", inputs: { data$: "data$", IndexColumn: "IndexColumn", SelectionColumn: "SelectionColumn", trackBy: "trackBy", rows: "rows", isSticky: "isSticky", columnBuilders: "columnBuilders", columnInfos: "columnInfos", disableSort: "disableSort" }, outputs: { selection$: "selection$" }, viewQueries: [{ propertyName: "table", first: true, predicate: MatTable, descendants: true, static: true }, { propertyName: "dropList", first: true, predicate: CdkDropList, descendants: true, static: true }, { propertyName: "tableElRef", first: true, predicate: ["table"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<mat-table\n cdkDropList\n cdkDropListLockAxis='x'\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n class=\"table-drag-list\"\n #table\n [dataSource]=\"dataSource\"\n [trackBy]='trackByFunction'\n [styler]=\"tableWidth | async\"\n>\n\n <ng-container matColumnDef=\"select\">\n\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" style=\"flex: 0 0 30px;\" >\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\n [checked]=\"!!(masterToggleChecked$ | async)\"\n [indeterminate]=\"masterToggleIndeterminate$ | async\">\n </mat-checkbox>\n </mat-header-cell>\n\n <mat-cell *matCellDef=\"let row\" style=\"flex: 0 0 30px;\">\n <mat-checkbox *ngIf=\"!row.isGroupFooter\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(row) : null\"\n [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </mat-cell>\n\n <mat-footer-cell *matFooterCellDef style=\"flex: 0 0 30px;\">\n {{ selection.selected.length }}\n </mat-footer-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"index\">\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" >#</mat-header-cell>\n <mat-cell *matCellDef=\"let i = index;\"> {{ (tbPaginator.paginator.pageIndex * tbPaginator.paginator.pageSize) + i + 1 }} </mat-cell>\n <mat-footer-cell *matFooterCellDef></mat-footer-cell>\n\n </ng-container>\n\n <ng-container matColumnDef=\"groupHeader\">\n <mat-cell *matCellDef=\"let row\" class=\"group-header\">\n {{row.groupHeaderName}}\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"keys; sticky: isSticky\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: keys; let i = index\"></mat-row>\n <mat-row *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\" style=\"background-color: lightgray;\"></mat-row>\n <mat-row *matRowDef=\"let row; columns: keys; when: isGroupFooter\" style=\"background-color: whitesmoke;\"></mat-row>\n <mat-footer-row *matFooterRowDef=\"keys\"></mat-footer-row>\n\n</mat-table>\n\n<div class=\"flx-row-end sticky\">\n <tb-paginator #tbPaginator\n [dataSource]=\"dataSource\"\n [tableElRef]=\"tableElRef\"\n [data$]=\"data$\">\n </tb-paginator>\n\n <mat-icon [matTooltip]=\"(collapseFooter$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon footer\" (click)=\"state.toggleCollapseFooter()\">\n {{(collapseFooter$ | async) ? 'expand_more' : 'expand_less'}}\n </mat-icon>\n</div>\n", styles: [".mat-row:nth-child(odd){background-color:#cdeefe}.sticky{bottom:0px;position:sticky;border-top:.5px solid rgba(0,0,0,.12)}.page-amounts{color:#0000008a;font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px;margin-right:.2rem}.flx-row-end{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;background-color:#fff}:host::ng-deep .mat-paginator-container{min-height:initial!important}:host::ng-deep .mat-paginator-container .mat-form-field-infix{padding:0!important}.group-header{font-weight:700;font-size:20px}:host::ng-deep .table-drag-list.cdk-drop-list-dragging .drag-header:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n", ".collapse-icon{font-size:16px;height:16px;padding-bottom:.2rem;color:#3f51b5}.collapse-icon.header{align-self:flex-end}.collapse-icon.footer{align-self:flex-start}.collapse-icon:hover{cursor:pointer}.hide{display:none}\n"], components: [{ type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i3.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { type: i5.PaginatorComponent, selector: "tb-paginator", inputs: ["dataSource", "tableElRef", "data$"] }, { type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i8.StylerDirective, selector: "[styler]", inputs: ["styler"] }, { type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i3.MatCellDef, selector: "[matCellDef]" }, { type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.MatFooterCellDef, selector: "[matFooterCellDef]" }, { type: i3.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i3.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], pipes: { "async": i9.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
155
+ GenericTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: GenericTableComponent, selector: "tb-generic-table", inputs: { data$: "data$", IndexColumn: "IndexColumn", SelectionColumn: "SelectionColumn", trackBy: "trackBy", rows: "rows", isSticky: "isSticky", columnBuilders: "columnBuilders", columnInfos: "columnInfos", disableSort: "disableSort" }, outputs: { selection$: "selection$" }, viewQueries: [{ propertyName: "table", first: true, predicate: MatTable, descendants: true, static: true }, { propertyName: "dropList", first: true, predicate: CdkDropList, descendants: true, static: true }, { propertyName: "tableElRef", first: true, predicate: ["table"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<mat-table\n cdkDropList\n cdkDropListLockAxis='x'\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n class=\"table-drag-list\"\n #table\n [dataSource]=\"dataSource\"\n [trackBy]='trackByFunction'\n [styler]=\"tableWidth | async\"\n>\n\n <ng-container matColumnDef=\"select\">\n\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" style=\"flex: 0 0 30px;\" >\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\n [checked]=\"!!(masterToggleChecked$ | async)\"\n [indeterminate]=\"masterToggleIndeterminate$ | async\">\n </mat-checkbox>\n </mat-header-cell>\n\n <mat-cell *matCellDef=\"let row\" style=\"flex: 0 0 30px;\">\n <mat-checkbox *ngIf=\"!row.isGroupFooter\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(row) : null\"\n [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </mat-cell>\n\n <mat-footer-cell *matFooterCellDef style=\"flex: 0 0 30px;\">\n {{ selection.selected.length }}\n </mat-footer-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"index\">\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" >#</mat-header-cell>\n <mat-cell *matCellDef=\"let i = index;\"> {{ (tbPaginator.paginator.pageIndex * tbPaginator.paginator.pageSize) + i + 1 }} </mat-cell>\n <mat-footer-cell *matFooterCellDef></mat-footer-cell>\n\n </ng-container>\n\n <ng-container matColumnDef=\"groupHeader\">\n <mat-cell *matCellDef=\"let row\" class=\"group-header\">\n {{row.groupHeaderName}}\n </mat-cell>\n </ng-container>\n\n <ng-container *ngIf=\"showHeader$ | async\">\n <mat-header-row *matHeaderRowDef=\"keys; sticky: isSticky\"></mat-header-row>\n </ng-container>\n <mat-row *matRowDef=\"let row; columns: keys; let i = index\"></mat-row>\n <mat-row *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\" style=\"background-color: lightgray;\"></mat-row>\n <mat-row *matRowDef=\"let row; columns: keys; when: isGroupFooter\" style=\"background-color: whitesmoke;\"></mat-row>\n <mat-footer-row *matFooterRowDef=\"keys\"></mat-footer-row>\n\n</mat-table>\n\n<div class=\"flx-row-end sticky\">\n <tb-paginator #tbPaginator\n [dataSource]=\"dataSource\"\n [tableElRef]=\"tableElRef\"\n [data$]=\"data$\">\n </tb-paginator>\n\n <mat-icon [matTooltip]=\"(collapseFooter$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon footer\" (click)=\"state.toggleCollapseFooter()\">\n {{(collapseFooter$ | async) ? 'expand_more' : 'expand_less'}}\n </mat-icon>\n</div>\n", styles: [".mat-row:nth-child(odd){background-color:#cdeefe}.sticky{bottom:0px;position:sticky;border-top:.5px solid rgba(0,0,0,.12)}.page-amounts{color:#0000008a;font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px;margin-right:.2rem}.flx-row-end{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;background-color:#fff}:host::ng-deep .mat-paginator-container{min-height:initial!important}:host::ng-deep .mat-paginator-container .mat-form-field-infix{padding:0!important}.group-header{font-weight:700;font-size:20px}:host::ng-deep .table-drag-list.cdk-drop-list-dragging .drag-header:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n", ".collapse-icon{font-size:16px;height:16px;padding-bottom:.2rem;color:#3f51b5}.collapse-icon.header{align-self:flex-end}.collapse-icon.footer{align-self:flex-start}.collapse-icon:hover{cursor:pointer}.hide{display:none}\n"], components: [{ type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i3.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { type: i5.PaginatorComponent, selector: "tb-paginator", inputs: ["dataSource", "tableElRef", "data$"] }, { type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i8.StylerDirective, selector: "[styler]", inputs: ["styler"] }, { type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i3.MatCellDef, selector: "[matCellDef]" }, { type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.MatFooterCellDef, selector: "[matFooterCellDef]" }, { type: i3.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i3.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], pipes: { "async": i9.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
155
156
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: GenericTableComponent, decorators: [{
156
157
  type: Component,
157
- args: [{ selector: 'tb-generic-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-table\n cdkDropList\n cdkDropListLockAxis='x'\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n class=\"table-drag-list\"\n #table\n [dataSource]=\"dataSource\"\n [trackBy]='trackByFunction'\n [styler]=\"tableWidth | async\"\n>\n\n <ng-container matColumnDef=\"select\">\n\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" style=\"flex: 0 0 30px;\" >\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\n [checked]=\"!!(masterToggleChecked$ | async)\"\n [indeterminate]=\"masterToggleIndeterminate$ | async\">\n </mat-checkbox>\n </mat-header-cell>\n\n <mat-cell *matCellDef=\"let row\" style=\"flex: 0 0 30px;\">\n <mat-checkbox *ngIf=\"!row.isGroupFooter\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(row) : null\"\n [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </mat-cell>\n\n <mat-footer-cell *matFooterCellDef style=\"flex: 0 0 30px;\">\n {{ selection.selected.length }}\n </mat-footer-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"index\">\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" >#</mat-header-cell>\n <mat-cell *matCellDef=\"let i = index;\"> {{ (tbPaginator.paginator.pageIndex * tbPaginator.paginator.pageSize) + i + 1 }} </mat-cell>\n <mat-footer-cell *matFooterCellDef></mat-footer-cell>\n\n </ng-container>\n\n <ng-container matColumnDef=\"groupHeader\">\n <mat-cell *matCellDef=\"let row\" class=\"group-header\">\n {{row.groupHeaderName}}\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"keys; sticky: isSticky\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: keys; let i = index\"></mat-row>\n <mat-row *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\" style=\"background-color: lightgray;\"></mat-row>\n <mat-row *matRowDef=\"let row; columns: keys; when: isGroupFooter\" style=\"background-color: whitesmoke;\"></mat-row>\n <mat-footer-row *matFooterRowDef=\"keys\"></mat-footer-row>\n\n</mat-table>\n\n<div class=\"flx-row-end sticky\">\n <tb-paginator #tbPaginator\n [dataSource]=\"dataSource\"\n [tableElRef]=\"tableElRef\"\n [data$]=\"data$\">\n </tb-paginator>\n\n <mat-icon [matTooltip]=\"(collapseFooter$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon footer\" (click)=\"state.toggleCollapseFooter()\">\n {{(collapseFooter$ | async) ? 'expand_more' : 'expand_less'}}\n </mat-icon>\n</div>\n", styles: [".mat-row:nth-child(odd){background-color:#cdeefe}.sticky{bottom:0px;position:sticky;border-top:.5px solid rgba(0,0,0,.12)}.page-amounts{color:#0000008a;font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px;margin-right:.2rem}.flx-row-end{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;background-color:#fff}:host::ng-deep .mat-paginator-container{min-height:initial!important}:host::ng-deep .mat-paginator-container .mat-form-field-infix{padding:0!important}.group-header{font-weight:700;font-size:20px}:host::ng-deep .table-drag-list.cdk-drop-list-dragging .drag-header:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n", ".collapse-icon{font-size:16px;height:16px;padding-bottom:.2rem;color:#3f51b5}.collapse-icon.header{align-self:flex-end}.collapse-icon.footer{align-self:flex-start}.collapse-icon:hover{cursor:pointer}.hide{display:none}\n"] }]
158
+ args: [{ selector: 'tb-generic-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-table\n cdkDropList\n cdkDropListLockAxis='x'\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n class=\"table-drag-list\"\n #table\n [dataSource]=\"dataSource\"\n [trackBy]='trackByFunction'\n [styler]=\"tableWidth | async\"\n>\n\n <ng-container matColumnDef=\"select\">\n\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" style=\"flex: 0 0 30px;\" >\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\n [checked]=\"!!(masterToggleChecked$ | async)\"\n [indeterminate]=\"masterToggleIndeterminate$ | async\">\n </mat-checkbox>\n </mat-header-cell>\n\n <mat-cell *matCellDef=\"let row\" style=\"flex: 0 0 30px;\">\n <mat-checkbox *ngIf=\"!row.isGroupFooter\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(row) : null\"\n [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </mat-cell>\n\n <mat-footer-cell *matFooterCellDef style=\"flex: 0 0 30px;\">\n {{ selection.selected.length }}\n </mat-footer-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"index\">\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" >#</mat-header-cell>\n <mat-cell *matCellDef=\"let i = index;\"> {{ (tbPaginator.paginator.pageIndex * tbPaginator.paginator.pageSize) + i + 1 }} </mat-cell>\n <mat-footer-cell *matFooterCellDef></mat-footer-cell>\n\n </ng-container>\n\n <ng-container matColumnDef=\"groupHeader\">\n <mat-cell *matCellDef=\"let row\" class=\"group-header\">\n {{row.groupHeaderName}}\n </mat-cell>\n </ng-container>\n\n <ng-container *ngIf=\"showHeader$ | async\">\n <mat-header-row *matHeaderRowDef=\"keys; sticky: isSticky\"></mat-header-row>\n </ng-container>\n <mat-row *matRowDef=\"let row; columns: keys; let i = index\"></mat-row>\n <mat-row *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\" style=\"background-color: lightgray;\"></mat-row>\n <mat-row *matRowDef=\"let row; columns: keys; when: isGroupFooter\" style=\"background-color: whitesmoke;\"></mat-row>\n <mat-footer-row *matFooterRowDef=\"keys\"></mat-footer-row>\n\n</mat-table>\n\n<div class=\"flx-row-end sticky\">\n <tb-paginator #tbPaginator\n [dataSource]=\"dataSource\"\n [tableElRef]=\"tableElRef\"\n [data$]=\"data$\">\n </tb-paginator>\n\n <mat-icon [matTooltip]=\"(collapseFooter$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon footer\" (click)=\"state.toggleCollapseFooter()\">\n {{(collapseFooter$ | async) ? 'expand_more' : 'expand_less'}}\n </mat-icon>\n</div>\n", styles: [".mat-row:nth-child(odd){background-color:#cdeefe}.sticky{bottom:0px;position:sticky;border-top:.5px solid rgba(0,0,0,.12)}.page-amounts{color:#0000008a;font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px;margin-right:.2rem}.flx-row-end{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;background-color:#fff}:host::ng-deep .mat-paginator-container{min-height:initial!important}:host::ng-deep .mat-paginator-container .mat-form-field-infix{padding:0!important}.group-header{font-weight:700;font-size:20px}:host::ng-deep .table-drag-list.cdk-drop-list-dragging .drag-header:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n", ".collapse-icon{font-size:16px;height:16px;padding-bottom:.2rem;color:#3f51b5}.collapse-icon.header{align-self:flex-end}.collapse-icon.footer{align-self:flex-start}.collapse-icon:hover{cursor:pointer}.hide{display:none}\n"] }]
158
159
  }], ctorParameters: function () { return [{ type: i1.MatSort }, { type: i2.TableStore }, { type: i0.ViewContainerRef }, { type: i0.Injector }]; }, propDecorators: { data$: [{
159
160
  type: Input
160
161
  }], IndexColumn: [{
@@ -185,4 +186,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImpor
185
186
  }], selection$: [{
186
187
  type: Output
187
188
  }] } });
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2dlbmVyaWMtdGFibGUvZ2VuZXJpYy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2dlbmVyaWMtdGFibGUvZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxLQUFLLEVBQ0wsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFLTixVQUFVLEVBQ1YsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBYSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFMUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVwRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbEUsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7QUFRbEUsTUFBTSxPQUFPLHFCQUFxQjtJQTBDaEMsWUFDVSxJQUFhLEVBQ2QsS0FBaUIsRUFDaEIsYUFBK0IsRUFDdkMsUUFBa0I7UUFIVixTQUFJLEdBQUos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ZTtzQkFBdkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBY2lDLEtBQUs7c0JBQTNDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDSyxRQUFRO3NCQUFqRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0EsVUFBVTtzQkFBakQsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDO2dCQTJHNUIsVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0NoaWxkLFxuICBJbnB1dCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdG9yLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IE1hdFJvd0RlZiwgTWF0VGFibGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XG5pbXBvcnQgeyB0YXAsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbHVtbkJ1aWxkZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW4tYnVpbGRlci9jb2x1bW4tYnVpbGRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZGljdGlvbmFyeSc7XG5pbXBvcnQgeyBHZW5lcmljVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9HZW5lcmljVGFibGVEYXRhU291cmNlJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmVwb3J0LWRlZic7XG5pbXBvcnQgeyBwcmV2aW91c0FuZEN1cnJlbnQgfSBmcm9tICcuLi8uLi8uLi9yeGpzL3J4anMtb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbHVtbkluZm8gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0NvbHVtbkluZm8nO1xuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIENka0Ryb3BMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RiLWdlbmVyaWMtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dlbmVyaWMtdGFibGUuY29tcG9uZW50LnNjc3MnLCcuLi8uLi9zdHlsZXMvY29sbGFwc2VyLnN0eWxlcy5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBHZW5lcmljVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG5cbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XG4gICAgdGhpcy5zdGF0ZS5zZXRVc2VyRGVmaW5lZE9yZGVyKHtuZXdPcmRlcjpldmVudC5jdXJyZW50SW5kZXgsb2xkT3JkZXI6ZXZlbnQucHJldmlvdXNJbmRleH0pXG4gIH1cblxuICBASW5wdXQoKSBkYXRhJCE6IE9ic2VydmFibGU8YW55W10+O1xuICBASW5wdXQoKSBJbmRleENvbHVtbiA9IGZhbHNlO1xuICBASW5wdXQoKSBTZWxlY3Rpb25Db2x1bW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdHJhY2tCeSE6IHN0cmluZztcbiAgQElucHV0KCkgcm93cyE6IFF1ZXJ5TGlzdDxNYXRSb3dEZWY8YW55Pj47XG4gIEBJbnB1dCgpIGlzU3RpY2t5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNvbHVtbkJ1aWxkZXJzITogQ29sdW1uQnVpbGRlckNvbXBvbmVudFtdO1xuICBASW5wdXQoKSBjb2x1bW5JbmZvcyE6IE9ic2VydmFibGU8Q29sdW1uSW5mb1tdPjtcblxuICBwcml2YXRlIF9kaXNhYmxlU29ydCE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNldCBkaXNhYmxlU29ydCh2YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlU29ydCA9IHZhbDtcbiAgICBpZiAodmFsKSB7XG4gICAgICBpZiAodGhpcy5kYXRhU291cmNlPy5zb3J0KSB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZSAmJiAhdGhpcy5kYXRhU291cmNlLnNvcnQpIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGdldCBkaXNhYmxlU29ydCgpIHsgcmV0dXJuIHRoaXMuX2Rpc2FibGVTb3J0OyB9XG5cbiAgQFZpZXdDaGlsZChNYXRUYWJsZSwgeyBzdGF0aWM6IHRydWUgfSkgdGFibGUhOiBNYXRUYWJsZTxhbnk+O1xuICBAVmlld0NoaWxkKENka0Ryb3BMaXN0LCB7IHN0YXRpYzogdHJ1ZSB9KSBkcm9wTGlzdCE6IENka0Ryb3BMaXN0O1xuICBAVmlld0NoaWxkKCd0YWJsZScsIHtyZWFkOiBFbGVtZW50UmVmfSkgdGFibGVFbFJlZiE6IEVsZW1lbnRSZWY7XG4gIGN1cnJlbnRDb2x1bW5zITogc3RyaW5nW107XG4gIGRhdGFTb3VyY2UhOiBHZW5lcmljVGFibGVEYXRhU291cmNlPGFueT47XG4gIGtleXM6IHN0cmluZyBbXSA9IFtdO1xuICBpbmplY3RvcjogSW5qZWN0b3I7XG4gIHJvd0RlZkFyciA6TWF0Um93RGVmPGFueT5bXT0gW107XG4gIGNvbHVtbnM6c3RyaW5nIFtdID0gW107XG4gIG15Q29sdW1uczogRGljdGlvbmFyeTxDb2x1bW5CdWlsZGVyQ29tcG9uZW50PiA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc29ydDogTWF0U29ydCxcbiAgICBwdWJsaWMgc3RhdGU6IFRhYmxlU3RvcmUsXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICApIHtcblxuICAgIHRoaXMuaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoeyBwcm92aWRlcnM6IFtcbiAgICAgIHtwcm92aWRlOiBNYXRUYWJsZSwgdXNlRmFjdG9yeTogKCk9PiB7cmV0dXJuIHRoaXMudGFibGV9IH0sXG4gICAgICB7cHJvdmlkZTogQ2RrRHJvcExpc3QsIHVzZUZhY3Rvcnk6ICgpPT4ge3JldHVybiB0aGlzLmRyb3BMaXN0fSB9LFxuICAgIF0sIHBhcmVudDogaW5qZWN0b3J9KTtcbiAgfVxuXG4gIHRyYWNrQnlGdW5jdGlvbiA9IChpbmRleDpudW1iZXIsIGl0ZW06IGFueSkgPT4ge1xuICAgIGlmICghaXRlbSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh0aGlzLnRyYWNrQnkpIHtcbiAgICAgIHJldHVybiBpdGVtW3RoaXMudHJhY2tCeV07XG4gICAgfVxuICAgIHJldHVybiBpdGVtO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLnJvd3MgJiYgdGhpcy5yb3dzICYmIHRoaXMubXlDb2x1bW5zLmxlbmd0aCkge1xuICAgICAgdGhpcy5pbml0aWFsaXplUm93RGVmcyhbLi4udGhpcy5yb3dzXSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuU2VsZWN0aW9uQ29sdW1uKSB7XG4gICAgICB0aGlzLmNvbHVtbnMucHVzaCgnc2VsZWN0Jyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuSW5kZXhDb2x1bW4pIHtcbiAgICAgdGhpcy5jb2x1bW5zLnB1c2goJ2luZGV4Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5jcmVhdGVEYXRhU291cmNlKCk7XG5cbiAgICB0aGlzLnN0YXRlLm9uKHRoaXMuY29sdW1uSW5mb3MsIGNvbHVtbnMgPT4ge1xuICAgICAgY29sdW1ucy5mb3JFYWNoKGNpID0+IHRoaXMuYWRkTWV0YURhdGEoY2kpKVxuICAgIH0pO1xuXG4gICAgdGhpcy5pbml0aWFsaXplUm93RGVmcyhbLi4udGhpcy5yb3dzXSk7XG5cbiAgICB0aGlzLnN0YXRlLm9uKHRoaXMuc3RhdGUuZGlzcGxheWVkQ29sdW1ucyQsIGtleXMgPT4ge1xuICAgICAgdGhpcy5rZXlzID0gWy4uLnRoaXMuY29sdW1ucywgLi4ua2V5c107XG4gICAgICB0aGlzLnJvd0RlZkFycj8uZm9yRWFjaChyb3cgPT4gcm93LmNvbHVtbnMgPSB0aGlzLmtleXMpXG4gICAgfSk7XG4gIH1cblxuICBjcmVhdGVEYXRhU291cmNlKCkge1xuICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBHZW5lcmljVGFibGVEYXRhU291cmNlKFxuICAgICAgdGhpcy5kYXRhJC5waXBlKHRhcCgoZCkgPT4gdGhpcy5zZWxlY3Rpb24uY2xlYXIoKSApKVxuICAgICk7XG5cbiAgICBpZiAoIXRoaXMuZGlzYWJsZVNvcnQpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xuICAgIH1cbiAgfVxuXG4gIGlzR3JvdXBIZWFkZXIoXzogbnVtYmVyLCByb3c6IHsgaXNHcm91cEhlYWRlcjogYm9vbGVhbiB9KSB7XG4gICAgcmV0dXJuIHJvdy5pc0dyb3VwSGVhZGVyO1xuICB9XG5cbiAgaXNHcm91cEZvb3RlcihfOiBudW1iZXIsIHJvdzogeyBpc0dyb3VwRm9vdGVyOiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gcm93LmlzR3JvdXBGb290ZXI7XG4gIH1cblxuICBhZGRNZXRhRGF0YShjb2x1bW46IENvbHVtbkluZm8pIHtcbiAgICBsZXQgY29sdW1uQnVpbGRlciA9IHRoaXMubXlDb2x1bW5zW2NvbHVtbi5tZXRhRGF0YS5rZXldO1xuICAgIGlmKGNvbHVtbkJ1aWxkZXIpIHtcbiAgICAgIGNvbHVtbkJ1aWxkZXIubWV0YURhdGEgPSBjb2x1bW4ubWV0YURhdGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoQ29sdW1uQnVpbGRlckNvbXBvbmVudCwge1xuICAgICAgICBpbmRleDogMCxcbiAgICAgICAgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3JcbiAgICAgIH0pO1xuICAgICAgY29tcG9uZW50Lmluc3RhbmNlLmN1c3RvbUNlbGwgPSBjb2x1bW4uY3VzdG9tQ2VsbDtcbiAgICAgIGNvbXBvbmVudC5pbnN0YW5jZS5tZXRhRGF0YSA9IGNvbHVtbi5tZXRhRGF0YTtcbiAgICAgIGNvbXBvbmVudC5pbnN0YW5jZS5kYXRhJCA9IHRoaXMuZGF0YSQ7XG4gICAgICB0aGlzLm15Q29sdW1uc1tjb2x1bW4ubWV0YURhdGEua2V5XSA9IGNvbXBvbmVudC5pbnN0YW5jZTtcbiAgICB9XG4gIH1cblxuICBpbml0aWFsaXplUm93RGVmcyA9IChkZWZzOk1hdFJvd0RlZjxhbnk+W10pPT57XG4gICAgdGhpcy5yb3dEZWZBcnIuZm9yRWFjaChyPT50aGlzLnRhYmxlLnJlbW92ZVJvd0RlZihyKSk7XG4gICAgdGhpcy5yb3dEZWZBcnIgPSBkZWZzO1xuICAgIGRlZnMuZm9yRWFjaChyID0+IHtcbiAgICAgIHIuY29sdW1ucyA9IHRoaXMuY29sdW1ucy5jb25jYXQoT2JqZWN0LnZhbHVlcyh0aGlzLm15Q29sdW1ucykuZmlsdGVyKGMgPT4gYy5tZXRhRGF0YS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5IaWRkZW4pLm1hcChjID0+IGMubWV0YURhdGEua2V5KSk7XG4gICAgICBpZiAodGhpcy50YWJsZSkge1xuICAgICAgICB0aGlzLnRhYmxlLmFkZFJvd0RlZihyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNlbGVjdGlvbiA6IFNlbGVjdGlvbk1vZGVsPGFueT4gPSBuZXcgU2VsZWN0aW9uTW9kZWw8YW55Pih0cnVlLCBbXSk7XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb24kOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLnNlbGVjdGlvbi5jaGFuZ2VkO1xuICBtYXN0ZXJUb2dnbGVDaGVja2VkJCA9IHRoaXMuc2VsZWN0aW9uJC5waXBlKG1hcCgoKT0+dGhpcy5zZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiB0aGlzLmlzQWxsU2VsZWN0ZWQoKSkpO1xuICBtYXN0ZXJUb2dnbGVJbmRldGVybWluYXRlJCA9IHRoaXMuc2VsZWN0aW9uJC5waXBlKG1hcCgoKT0+dGhpcy5zZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhdGhpcy5pc0FsbFNlbGVjdGVkKCkpKTtcblxuICBpc0FsbFNlbGVjdGVkKCkge1xuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoO1xuICAgIGNvbnN0IG51bVJvd3MgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGg7XG4gICAgcmV0dXJuIG51bVNlbGVjdGVkID09PSBudW1Sb3dzO1xuICB9XG5cbiAgLyoqIFNlbGVjdHMgYWxsIHJvd3MgaWYgdGhleSBhcmUgbm90IGFsbCBzZWxlY3RlZDsgb3RoZXJ3aXNlIGNsZWFyIHNlbGVjdGlvbi4gKi9cbiAgbWFzdGVyVG9nZ2xlKCkge1xuICAgIHRoaXMuaXNBbGxTZWxlY3RlZCgpID9cbiAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCkgOlxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KC4uLnRoaXMuZGF0YVNvdXJjZS5kYXRhKTtcbiAgfVxuXG4gIHRhYmxlV2lkdGggPSB0aGlzLnN0YXRlLmdldFVzZXJEZWZpbmVkVGFibGVTaXplJC5waXBlKFxuICAgIHByZXZpb3VzQW5kQ3VycmVudDxudW1iZXIgfCB1bmRlZmluZWQ+KDApLFxuICAgIG1hcCgoW3ByZXZpb3VzVXNlckRlZmluZWRXaWR0aCwgY3VycmVudFVzZXJEZWZpbmVkV2lkdGhdKSA9PiB7XG4gICAgICBpZiggY3VycmVudFVzZXJEZWZpbmVkV2lkdGgpe1xuICAgICAgICByZXR1cm4gKHt3aWR0aDpgJHtjdXJyZW50VXNlckRlZmluZWRXaWR0aH1weGB9KTtcbiAgICAgIH0gaWYoIHdhc1Jlc2V0KCkgKXtcbiAgICAgICAgcmV0dXJuICh7d2lkdGg6J2luaXRpYWwnfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gKHt9KTtcblxuICAgICAgZnVuY3Rpb24gd2FzUmVzZXQoKXtcbiAgICAgICAgcmV0dXJuIChwcmV2aW91c1VzZXJEZWZpbmVkV2lkdGggPz8gMCkgPj0wICYmIGN1cnJlbnRVc2VyRGVmaW5lZFdpZHRoID09IG51bGw7XG4gICAgICB9XG4gICAgfSlcbiAgKTtcblxuICBjb2xsYXBzZUZvb3RlciQgPSB0aGlzLnN0YXRlLnN0YXRlJC5waXBlKG1hcChzdGF0ZSA9PiBzdGF0ZS5wZXJzaXN0ZWRUYWJsZVNldHRpbmdzLmNvbGxhcHNlRm9vdGVyKSk7XG59XG4iLCI8bWF0LXRhYmxlXG4gIGNka0Ryb3BMaXN0XG4gIGNka0Ryb3BMaXN0TG9ja0F4aXM9J3gnXG4gIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIlxuICBjbGFzcz1cInRhYmxlLWRyYWctbGlzdFwiXG4gICN0YWJsZVxuICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcbiAgW3RyYWNrQnldPSd0cmFja0J5RnVuY3Rpb24nXG4gIFtzdHlsZXJdPVwidGFibGVXaWR0aCB8IGFzeW5jXCJcbj5cblxuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic2VsZWN0XCI+XG5cbiAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImYtbWF0LWhlYWRlci1jZWxsXCIgc3R5bGU9XCJmbGV4OiAwIDAgMzBweDtcIiA+XG4gICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZSgpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCIhIShtYXN0ZXJUb2dnbGVDaGVja2VkJCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJtYXN0ZXJUb2dnbGVJbmRldGVybWluYXRlJCB8IGFzeW5jXCI+XG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDwvbWF0LWhlYWRlci1jZWxsPlxuXG4gICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiBzdHlsZT1cImZsZXg6IDAgMCAzMHB4O1wiPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggKm5nSWY9XCIhcm93LmlzR3JvdXBGb290ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvbi50b2dnbGUocm93KSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KVwiPlxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L21hdC1jZWxsPlxuXG4gICAgICAgIDxtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWYgc3R5bGU9XCJmbGV4OiAwIDAgMzBweDtcIj5cbiAgICAgICAgICB7eyBzZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoIH19XG4gICAgICAgIDwvbWF0LWZvb3Rlci1jZWxsPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiaW5kZXhcIj5cbiAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwiZi1tYXQtaGVhZGVyLWNlbGxcIiA+IzwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpID0gaW5kZXg7XCI+IHt7ICh0YlBhZ2luYXRvci5wYWdpbmF0b3IucGFnZUluZGV4ICogdGJQYWdpbmF0b3IucGFnaW5hdG9yLnBhZ2VTaXplKSArICBpICsgMSB9fSA8L21hdC1jZWxsPlxuICAgICAgICAgIDxtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC9tYXQtZm9vdGVyLWNlbGw+XG5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImdyb3VwSGVhZGVyXCI+XG4gICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiBjbGFzcz1cImdyb3VwLWhlYWRlclwiPlxuICAgICAgICAgIHt7cm93Lmdyb3VwSGVhZGVyTmFtZX19XG4gICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICA8bWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImtleXM7IHN0aWNreTogaXNTdGlja3lcIj48L21hdC1oZWFkZXItcm93PlxuICA8bWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczoga2V5czsgbGV0IGkgPSBpbmRleFwiPjwvbWF0LXJvdz5cbiAgPG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IFsnZ3JvdXBIZWFkZXInXTsgd2hlbjogaXNHcm91cEhlYWRlclwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmF5O1wiPjwvbWF0LXJvdz5cbiAgPG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGtleXM7IHdoZW46IGlzR3JvdXBGb290ZXJcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlc21va2U7XCI+PC9tYXQtcm93PlxuICA8bWF0LWZvb3Rlci1yb3cgKm1hdEZvb3RlclJvd0RlZj1cImtleXNcIj48L21hdC1mb290ZXItcm93PlxuXG48L21hdC10YWJsZT5cblxuPGRpdiBjbGFzcz1cImZseC1yb3ctZW5kIHN0aWNreVwiPlxuICA8dGItcGFnaW5hdG9yICN0YlBhZ2luYXRvclxuICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxuICAgIFt0YWJsZUVsUmVmXT1cInRhYmxlRWxSZWZcIlxuICAgIFtkYXRhJF09XCJkYXRhJFwiPlxuICA8L3RiLXBhZ2luYXRvcj5cblxuICA8bWF0LWljb24gW21hdFRvb2x0aXBdPVwiKGNvbGxhcHNlRm9vdGVyJCB8IGFzeW5jKSA/ICdleHBhbmQnIDogJ2NvbGxhcHNlJ1wiIGNsYXNzPVwiY29sbGFwc2UtaWNvbiBmb290ZXJcIiAoY2xpY2spPVwic3RhdGUudG9nZ2xlQ29sbGFwc2VGb290ZXIoKVwiPlxuICAgIHt7KGNvbGxhcHNlRm9vdGVyJCB8IGFzeW5jKSA/ICdleHBhbmRfbW9yZScgOiAnZXhwYW5kX2xlc3MnfX1cbiAgPC9tYXQtaWNvbj5cbjwvZGl2PlxuIl19
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2dlbmVyaWMtdGFibGUvZ2VuZXJpYy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2dlbmVyaWMtdGFibGUvZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxLQUFLLEVBQ0wsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFLTixVQUFVLEVBQ1YsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBYSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFMUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVwRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbEUsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7QUFRbEUsTUFBTSxPQUFPLHFCQUFxQjtJQTJDaEMsWUFDVSxJQUFhLEVBQ2QsS0FBaUIsRUFDaEIsYUFBK0IsRUFDdkMsUUFBa0I7UUFIVixTQUFJLEdBQUos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K0hBQ0ssVUFBVSxrRENsRXZDLHd2RkFvRUE7MkZEbkNhLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTs2S0FTdEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBY2lDLEtBQUs7c0JBQTNDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDSyxRQUFRO3NCQUFqRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0EsVUFBVTtzQkFBakQsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDO2dCQThHNUIsVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0NoaWxkLFxuICBJbnB1dCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdG9yLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IE1hdFJvd0RlZiwgTWF0VGFibGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XG5pbXBvcnQgeyB0YXAsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbHVtbkJ1aWxkZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW4tYnVpbGRlci9jb2x1bW4tYnVpbGRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZGljdGlvbmFyeSc7XG5pbXBvcnQgeyBHZW5lcmljVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9HZW5lcmljVGFibGVEYXRhU291cmNlJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmVwb3J0LWRlZic7XG5pbXBvcnQgeyBwcmV2aW91c0FuZEN1cnJlbnQgfSBmcm9tICcuLi8uLi8uLi9yeGpzL3J4anMtb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbHVtbkluZm8gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0NvbHVtbkluZm8nO1xuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIENka0Ryb3BMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RiLWdlbmVyaWMtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dlbmVyaWMtdGFibGUuY29tcG9uZW50LnNjc3MnLCcuLi8uLi9zdHlsZXMvY29sbGFwc2VyLnN0eWxlcy5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBHZW5lcmljVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG5cbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XG4gICAgdGhpcy5zdGF0ZS5zZXRVc2VyRGVmaW5lZE9yZGVyKHtuZXdPcmRlcjpldmVudC5jdXJyZW50SW5kZXgsb2xkT3JkZXI6ZXZlbnQucHJldmlvdXNJbmRleH0pXG4gIH1cblxuICBASW5wdXQoKSBkYXRhJCE6IE9ic2VydmFibGU8YW55W10+O1xuICBASW5wdXQoKSBJbmRleENvbHVtbiA9IGZhbHNlO1xuICBASW5wdXQoKSBTZWxlY3Rpb25Db2x1bW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdHJhY2tCeSE6IHN0cmluZztcbiAgQElucHV0KCkgcm93cyE6IFF1ZXJ5TGlzdDxNYXRSb3dEZWY8YW55Pj47XG4gIEBJbnB1dCgpIGlzU3RpY2t5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNvbHVtbkJ1aWxkZXJzITogQ29sdW1uQnVpbGRlckNvbXBvbmVudFtdO1xuICBASW5wdXQoKSBjb2x1bW5JbmZvcyE6IE9ic2VydmFibGU8Q29sdW1uSW5mb1tdPjtcblxuICBwcml2YXRlIF9kaXNhYmxlU29ydCE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNldCBkaXNhYmxlU29ydCh2YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlU29ydCA9IHZhbDtcbiAgICBpZiAodmFsKSB7XG4gICAgICBpZiAodGhpcy5kYXRhU291cmNlPy5zb3J0KSB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZSAmJiAhdGhpcy5kYXRhU291cmNlLnNvcnQpIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGdldCBkaXNhYmxlU29ydCgpIHsgcmV0dXJuIHRoaXMuX2Rpc2FibGVTb3J0OyB9XG5cbiAgQFZpZXdDaGlsZChNYXRUYWJsZSwgeyBzdGF0aWM6IHRydWUgfSkgdGFibGUhOiBNYXRUYWJsZTxhbnk+O1xuICBAVmlld0NoaWxkKENka0Ryb3BMaXN0LCB7IHN0YXRpYzogdHJ1ZSB9KSBkcm9wTGlzdCE6IENka0Ryb3BMaXN0O1xuICBAVmlld0NoaWxkKCd0YWJsZScsIHtyZWFkOiBFbGVtZW50UmVmfSkgdGFibGVFbFJlZiE6IEVsZW1lbnRSZWY7XG4gIGN1cnJlbnRDb2x1bW5zITogc3RyaW5nW107XG4gIGRhdGFTb3VyY2UhOiBHZW5lcmljVGFibGVEYXRhU291cmNlPGFueT47XG4gIGtleXM6IHN0cmluZyBbXSA9IFtdO1xuICBpbmplY3RvcjogSW5qZWN0b3I7XG4gIHJvd0RlZkFyciA6TWF0Um93RGVmPGFueT5bXT0gW107XG4gIGNvbHVtbnM6c3RyaW5nIFtdID0gW107XG4gIG15Q29sdW1uczogRGljdGlvbmFyeTxDb2x1bW5CdWlsZGVyQ29tcG9uZW50PiA9IHt9O1xuICBzaG93SGVhZGVyJCE6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzb3J0OiBNYXRTb3J0LFxuICAgIHB1YmxpYyBzdGF0ZTogVGFibGVTdG9yZSxcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICkge1xuXG4gICAgdGhpcy5pbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7IHByb3ZpZGVyczogW1xuICAgICAge3Byb3ZpZGU6IE1hdFRhYmxlLCB1c2VGYWN0b3J5OiAoKT0+IHtyZXR1cm4gdGhpcy50YWJsZX0gfSxcbiAgICAgIHtwcm92aWRlOiBDZGtEcm9wTGlzdCwgdXNlRmFjdG9yeTogKCk9PiB7cmV0dXJuIHRoaXMuZHJvcExpc3R9IH0sXG4gICAgXSwgcGFyZW50OiBpbmplY3Rvcn0pO1xuICB9XG5cbiAgdHJhY2tCeUZ1bmN0aW9uID0gKGluZGV4Om51bWJlciwgaXRlbTogYW55KSA9PiB7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHRoaXMudHJhY2tCeSkge1xuICAgICAgcmV0dXJuIGl0ZW1bdGhpcy50cmFja0J5XTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMucm93cyAmJiB0aGlzLnJvd3MgJiYgdGhpcy5teUNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVSb3dEZWZzKFsuLi50aGlzLnJvd3NdKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5TZWxlY3Rpb25Db2x1bW4pIHtcbiAgICAgIHRoaXMuY29sdW1ucy5wdXNoKCdzZWxlY3QnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5JbmRleENvbHVtbikge1xuICAgICB0aGlzLmNvbHVtbnMucHVzaCgnaW5kZXgnKTtcbiAgICB9XG5cbiAgICB0aGlzLmNyZWF0ZURhdGFTb3VyY2UoKTtcblxuICAgIHRoaXMuc3RhdGUub24odGhpcy5jb2x1bW5JbmZvcywgY29sdW1ucyA9PiB7XG4gICAgICBjb2x1bW5zLmZvckVhY2goY2kgPT4gdGhpcy5hZGRNZXRhRGF0YShjaSkpXG4gICAgfSk7XG5cbiAgICB0aGlzLmluaXRpYWxpemVSb3dEZWZzKFsuLi50aGlzLnJvd3NdKTtcblxuICAgIHRoaXMuc3RhdGUub24odGhpcy5zdGF0ZS5kaXNwbGF5ZWRDb2x1bW5zJCwga2V5cyA9PiB7XG4gICAgICB0aGlzLmtleXMgPSBbLi4udGhpcy5jb2x1bW5zLCAuLi5rZXlzXTtcbiAgICAgIHRoaXMucm93RGVmQXJyPy5mb3JFYWNoKHJvdyA9PiByb3cuY29sdW1ucyA9IHRoaXMua2V5cylcbiAgICB9KTtcblxuICAgIHRoaXMuc2hvd0hlYWRlciQgPSB0aGlzLnN0YXRlLnRhYmxlU2V0dGluZ3MkLnBpcGUobWFwKHNldHRpbmdzID0+ICEoc2V0dGluZ3MuaGlkZUNvbHVtbkhlYWRlcikpKTtcbiAgfVxuXG4gIGNyZWF0ZURhdGFTb3VyY2UoKSB7XG4gICAgdGhpcy5kYXRhU291cmNlID0gbmV3IEdlbmVyaWNUYWJsZURhdGFTb3VyY2UoXG4gICAgICB0aGlzLmRhdGEkLnBpcGUodGFwKChkKSA9PiB0aGlzLnNlbGVjdGlvbi5jbGVhcigpICkpXG4gICAgKTtcblxuICAgIGlmICghdGhpcy5kaXNhYmxlU29ydCkge1xuICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XG4gICAgfVxuICB9XG5cbiAgaXNHcm91cEhlYWRlcihfOiBudW1iZXIsIHJvdzogeyBpc0dyb3VwSGVhZGVyOiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gcm93LmlzR3JvdXBIZWFkZXI7XG4gIH1cblxuICBpc0dyb3VwRm9vdGVyKF86IG51bWJlciwgcm93OiB7IGlzR3JvdXBGb290ZXI6IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiByb3cuaXNHcm91cEZvb3RlcjtcbiAgfVxuXG4gIGFkZE1ldGFEYXRhKGNvbHVtbjogQ29sdW1uSW5mbykge1xuICAgIGxldCBjb2x1bW5CdWlsZGVyID0gdGhpcy5teUNvbHVtbnNbY29sdW1uLm1ldGFEYXRhLmtleV07XG4gICAgaWYoY29sdW1uQnVpbGRlcikge1xuICAgICAgY29sdW1uQnVpbGRlci5tZXRhRGF0YSA9IGNvbHVtbi5tZXRhRGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChDb2x1bW5CdWlsZGVyQ29tcG9uZW50LCB7XG4gICAgICAgIGluZGV4OiAwLFxuICAgICAgICBpbmplY3RvcjogdGhpcy5pbmplY3RvclxuICAgICAgfSk7XG4gICAgICBjb21wb25lbnQuaW5zdGFuY2UuY3VzdG9tQ2VsbCA9IGNvbHVtbi5jdXN0b21DZWxsO1xuICAgICAgY29tcG9uZW50Lmluc3RhbmNlLm1ldGFEYXRhID0gY29sdW1uLm1ldGFEYXRhO1xuICAgICAgY29tcG9uZW50Lmluc3RhbmNlLmRhdGEkID0gdGhpcy5kYXRhJDtcbiAgICAgIHRoaXMubXlDb2x1bW5zW2NvbHVtbi5tZXRhRGF0YS5rZXldID0gY29tcG9uZW50Lmluc3RhbmNlO1xuICAgIH1cbiAgfVxuXG4gIGluaXRpYWxpemVSb3dEZWZzID0gKGRlZnM6TWF0Um93RGVmPGFueT5bXSk9PntcbiAgICB0aGlzLnJvd0RlZkFyci5mb3JFYWNoKHI9PnRoaXMudGFibGUucmVtb3ZlUm93RGVmKHIpKTtcbiAgICB0aGlzLnJvd0RlZkFyciA9IGRlZnM7XG4gICAgZGVmcy5mb3JFYWNoKHIgPT4ge1xuICAgICAgci5jb2x1bW5zID0gdGhpcy5jb2x1bW5zLmNvbmNhdChPYmplY3QudmFsdWVzKHRoaXMubXlDb2x1bW5zKS5maWx0ZXIoYyA9PiBjLm1ldGFEYXRhLmZpZWxkVHlwZSAhPT0gRmllbGRUeXBlLkhpZGRlbikubWFwKGMgPT4gYy5tZXRhRGF0YS5rZXkpKTtcbiAgICAgIGlmICh0aGlzLnRhYmxlKSB7XG4gICAgICAgIHRoaXMudGFibGUuYWRkUm93RGVmKHIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2VsZWN0aW9uIDogU2VsZWN0aW9uTW9kZWw8YW55PiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRydWUsIFtdKTtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbiQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuc2VsZWN0aW9uLmNoYW5nZWQ7XG4gIG1hc3RlclRvZ2dsZUNoZWNrZWQkID0gdGhpcy5zZWxlY3Rpb24kLnBpcGUobWFwKCgpPT50aGlzLnNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIHRoaXMuaXNBbGxTZWxlY3RlZCgpKSk7XG4gIG1hc3RlclRvZ2dsZUluZGV0ZXJtaW5hdGUkID0gdGhpcy5zZWxlY3Rpb24kLnBpcGUobWFwKCgpPT50aGlzLnNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICF0aGlzLmlzQWxsU2VsZWN0ZWQoKSkpO1xuXG4gIGlzQWxsU2VsZWN0ZWQoKSB7XG4gICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XG4gICAgY29uc3QgbnVtUm93cyA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aDtcbiAgICByZXR1cm4gbnVtU2VsZWN0ZWQgPT09IG51bVJvd3M7XG4gIH1cblxuICAvKiogU2VsZWN0cyBhbGwgcm93cyBpZiB0aGV5IGFyZSBub3QgYWxsIHNlbGVjdGVkOyBvdGhlcndpc2UgY2xlYXIgc2VsZWN0aW9uLiAqL1xuICBtYXN0ZXJUb2dnbGUoKSB7XG4gICAgdGhpcy5pc0FsbFNlbGVjdGVkKCkgP1xuICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKSA6XG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3QoLi4udGhpcy5kYXRhU291cmNlLmRhdGEpO1xuICB9XG5cbiAgdGFibGVXaWR0aCA9IHRoaXMuc3RhdGUuZ2V0VXNlckRlZmluZWRUYWJsZVNpemUkLnBpcGUoXG4gICAgcHJldmlvdXNBbmRDdXJyZW50PG51bWJlciB8IHVuZGVmaW5lZD4oMCksXG4gICAgbWFwKChbcHJldmlvdXNVc2VyRGVmaW5lZFdpZHRoLCBjdXJyZW50VXNlckRlZmluZWRXaWR0aF0pID0+IHtcbiAgICAgIGlmKCBjdXJyZW50VXNlckRlZmluZWRXaWR0aCl7XG4gICAgICAgIHJldHVybiAoe3dpZHRoOmAke2N1cnJlbnRVc2VyRGVmaW5lZFdpZHRofXB4YH0pO1xuICAgICAgfSBpZiggd2FzUmVzZXQoKSApe1xuICAgICAgICByZXR1cm4gKHt3aWR0aDonaW5pdGlhbCd9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAoe30pO1xuXG4gICAgICBmdW5jdGlvbiB3YXNSZXNldCgpe1xuICAgICAgICByZXR1cm4gKHByZXZpb3VzVXNlckRlZmluZWRXaWR0aCA/PyAwKSA+PTAgJiYgY3VycmVudFVzZXJEZWZpbmVkV2lkdGggPT0gbnVsbDtcbiAgICAgIH1cbiAgICB9KVxuICApO1xuXG4gIGNvbGxhcHNlRm9vdGVyJCA9IHRoaXMuc3RhdGUuc3RhdGUkLnBpcGUobWFwKHN0YXRlID0+IHN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3MuY29sbGFwc2VGb290ZXIpKTtcbn1cbiIsIjxtYXQtdGFibGVcbiAgY2RrRHJvcExpc3RcbiAgY2RrRHJvcExpc3RMb2NrQXhpcz0neCdcbiAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gIGNsYXNzPVwidGFibGUtZHJhZy1saXN0XCJcbiAgI3RhYmxlXG4gIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxuICBbdHJhY2tCeV09J3RyYWNrQnlGdW5jdGlvbidcbiAgW3N0eWxlcl09XCJ0YWJsZVdpZHRoIHwgYXN5bmNcIlxuPlxuXG4gICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzZWxlY3RcIj5cblxuICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwiZi1tYXQtaGVhZGVyLWNlbGxcIiBzdHlsZT1cImZsZXg6IDAgMCAzMHB4O1wiID5cbiAgICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwiJGV2ZW50ID8gbWFzdGVyVG9nZ2xlKCkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIiEhKG1hc3RlclRvZ2dsZUNoZWNrZWQkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cIm1hc3RlclRvZ2dsZUluZGV0ZXJtaW5hdGUkIHwgYXN5bmNcIj5cbiAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgPC9tYXQtaGVhZGVyLWNlbGw+XG5cbiAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIHN0eWxlPVwiZmxleDogMCAwIDMwcHg7XCI+XG4gICAgICAgICAgPG1hdC1jaGVja2JveCAqbmdJZj1cIiFyb3cuaXNHcm91cEZvb3RlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uLnRvZ2dsZShyb3cpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpXCI+XG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDwvbWF0LWNlbGw+XG5cbiAgICAgICAgPG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZiBzdHlsZT1cImZsZXg6IDAgMCAzMHB4O1wiPlxuICAgICAgICAgIHt7IHNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGggfX1cbiAgICAgICAgPC9tYXQtZm9vdGVyLWNlbGw+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJpbmRleFwiPlxuICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgY2xhc3M9XCJmLW1hdC1oZWFkZXItY2VsbFwiID4jPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGkgPSBpbmRleDtcIj4ge3sgKHRiUGFnaW5hdG9yLnBhZ2luYXRvci5wYWdlSW5kZXggKiB0YlBhZ2luYXRvci5wYWdpbmF0b3IucGFnZVNpemUpICsgIGkgKyAxIH19IDwvbWF0LWNlbGw+XG4gICAgICAgICAgPG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj48L21hdC1mb290ZXItY2VsbD5cblxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZ3JvdXBIZWFkZXJcIj5cbiAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIGNsYXNzPVwiZ3JvdXAtaGVhZGVyXCI+XG4gICAgICAgICAge3tyb3cuZ3JvdXBIZWFkZXJOYW1lfX1cbiAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93SGVhZGVyJCB8IGFzeW5jXCI+XG4gICAgPG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJrZXlzOyBzdGlja3k6IGlzU3RpY2t5XCI+PC9tYXQtaGVhZGVyLXJvdz5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBrZXlzOyBsZXQgaSA9IGluZGV4XCI+PC9tYXQtcm93PlxuICA8bWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydncm91cEhlYWRlciddOyB3aGVuOiBpc0dyb3VwSGVhZGVyXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyYXk7XCI+PC9tYXQtcm93PlxuICA8bWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczoga2V5czsgd2hlbjogaXNHcm91cEZvb3RlclwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGVzbW9rZTtcIj48L21hdC1yb3c+XG4gIDxtYXQtZm9vdGVyLXJvdyAqbWF0Rm9vdGVyUm93RGVmPVwia2V5c1wiPjwvbWF0LWZvb3Rlci1yb3c+XG5cbjwvbWF0LXRhYmxlPlxuXG48ZGl2IGNsYXNzPVwiZmx4LXJvdy1lbmQgc3RpY2t5XCI+XG4gIDx0Yi1wYWdpbmF0b3IgI3RiUGFnaW5hdG9yXG4gICAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiXG4gICAgW3RhYmxlRWxSZWZdPVwidGFibGVFbFJlZlwiXG4gICAgW2RhdGEkXT1cImRhdGEkXCI+XG4gIDwvdGItcGFnaW5hdG9yPlxuXG4gIDxtYXQtaWNvbiBbbWF0VG9vbHRpcF09XCIoY29sbGFwc2VGb290ZXIkIHwgYXN5bmMpID8gJ2V4cGFuZCcgOiAnY29sbGFwc2UnXCIgY2xhc3M9XCJjb2xsYXBzZS1pY29uIGZvb3RlclwiIChjbGljayk9XCJzdGF0ZS50b2dnbGVDb2xsYXBzZUZvb3RlcigpXCI+XG4gICAge3soY29sbGFwc2VGb290ZXIkIHwgYXN5bmMpID8gJ2V4cGFuZF9tb3JlJyA6ICdleHBhbmRfbGVzcyd9fVxuICA8L21hdC1pY29uPlxuPC9kaXY+XG4iXX0=