mis-crystal-design-system 18.0.8-test-1 → 18.0.8-test-2

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.
@@ -5,7 +5,7 @@ export class SortIconsDirective {
5
5
  this.el = el;
6
6
  this.renderer = renderer;
7
7
  // Convert inputs to signals
8
- this.column = input('');
8
+ this.column = input();
9
9
  this.activeSort = input();
10
10
  this.activeSorts = input();
11
11
  this.multiColumnSort = input(false);
@@ -15,9 +15,6 @@ export class SortIconsDirective {
15
15
  // Internal state as signals
16
16
  this.currentDirection = signal('');
17
17
  this.columnNumber = signal(0);
18
- // Assets
19
- this.SORT_ASCENDING = 'assets/sort-asc.svg';
20
- this.SORT_DESCENDING = 'assets/sort-desc.svg';
21
18
  }
22
19
  ngOnInit() {
23
20
  // Get column number from data-column attribute
@@ -36,14 +33,14 @@ export class SortIconsDirective {
36
33
  this.renderer?.setStyle(iconContainer, 'align-items', 'center');
37
34
  this.renderer?.setStyle(iconContainer, 'gap', '5px');
38
35
  this.upIcon = this.renderer.createElement('img');
39
- this.renderer?.setAttribute(this.upIcon, 'src', this.SORT_ASCENDING);
36
+ this.renderer?.setAttribute(this.upIcon, 'src', this.column()?.sortAscIcon);
40
37
  this.renderer?.setStyle(this.upIcon, 'opacity', '0.5');
41
38
  this.renderer?.setStyle(this.upIcon, 'transition', 'opacity 0.3s ease');
42
39
  this.renderer?.setStyle(this.upIcon, 'width', '9px');
43
40
  this.renderer?.setStyle(this.upIcon, 'cursor', 'pointer');
44
41
  this.renderer?.listen(this.upIcon, 'click', () => this.setSortDirection('ASC'));
45
42
  this.downIcon = this.renderer.createElement('img');
46
- this.renderer?.setAttribute(this.downIcon, 'src', this.SORT_DESCENDING);
43
+ this.renderer?.setAttribute(this.downIcon, 'src', this.column()?.sortDescIcon);
47
44
  this.renderer?.setStyle(this.downIcon, 'opacity', '0.5');
48
45
  this.renderer?.setStyle(this.downIcon, 'transition', 'opacity 0.3s ease');
49
46
  this.renderer?.setStyle(this.downIcon, 'width', '9px');
@@ -83,14 +80,14 @@ export class SortIconsDirective {
83
80
  this.currentDirection.set(direction);
84
81
  }
85
82
  this.sortChange.emit({
86
- column: this.column(),
83
+ column: this.column()?.data || '',
87
84
  direction: this.currentDirection(),
88
85
  columnNumber: this.columnNumber()
89
86
  });
90
87
  this.updateIconStyles();
91
88
  }
92
89
  handleMultiColumnSort(direction) {
93
- const existingSortIndex = this.activeSorts().findIndex(sort => sort.column === this.column());
90
+ const existingSortIndex = this.activeSorts().findIndex(sort => sort.column === this.column()?.data);
94
91
  if (existingSortIndex !== -1) {
95
92
  if (this.activeSorts()[existingSortIndex].direction !== direction) {
96
93
  this.activeSorts()[existingSortIndex].direction = direction;
@@ -102,7 +99,7 @@ export class SortIconsDirective {
102
99
  }
103
100
  else {
104
101
  this.activeSorts().push({
105
- column: this.column(),
102
+ column: this.column()?.data || '',
106
103
  direction,
107
104
  columnNumber: this.columnNumber()
108
105
  });
@@ -111,6 +108,7 @@ export class SortIconsDirective {
111
108
  this.updateIconStyles();
112
109
  }
113
110
  updateIconStyles() {
111
+ console.log("Col", this.column()?.data);
114
112
  if (this.multiColumnSort()) {
115
113
  this.updateMultiColumnIconStyles();
116
114
  }
@@ -119,19 +117,19 @@ export class SortIconsDirective {
119
117
  }
120
118
  }
121
119
  updateSingleColumnIconStyles() {
122
- const isActiveColumn = this.activeSort()?.column === this.column();
120
+ const isActiveColumn = this.activeSort()?.column === this.column()?.data;
123
121
  setTimeout(() => {
124
122
  this.renderer?.setStyle(this.upIcon, 'opacity', isActiveColumn && this.currentDirection() === 'ASC' ? '1' : '0.5');
125
123
  this.renderer?.setStyle(this.downIcon, 'opacity', isActiveColumn && this.currentDirection() === 'DESC' ? '1' : '0.5');
126
124
  }, 0);
127
125
  }
128
126
  updateMultiColumnIconStyles() {
129
- const columnSort = this.activeSorts().find(sort => sort.column === this.column());
127
+ const columnSort = this.activeSorts().find(sort => sort.column === this.column()?.data);
130
128
  setTimeout(() => {
131
129
  this.renderer?.setStyle(this.upIcon, 'opacity', columnSort?.direction === 'ASC' ? '1' : '0.5');
132
130
  this.renderer?.setStyle(this.downIcon, 'opacity', columnSort?.direction === 'DESC' ? '1' : '0.5');
133
131
  if (this.sortOrderElement) {
134
- const sortIndex = this.activeSorts().findIndex(sort => sort.column === this.column());
132
+ const sortIndex = this.activeSorts().findIndex(sort => sort.column === this.column()?.data);
135
133
  if (sortIndex !== -1) {
136
134
  this.renderer?.setProperty(this.sortOrderElement, 'textContent', (sortIndex + 1).toString());
137
135
  }
@@ -150,4 +148,4 @@ export class SortIconsDirective {
150
148
  selector: '[appSortIcons]',
151
149
  }]
152
150
  }], () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], null); })();
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1pY29ucy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy90YWJsZS9zb3J0LWljb25zLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQVNULEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOztBQVd2QixNQUFNLE9BQU8sa0JBQWtCO0lBdUI3QixZQUFvQixFQUFjLEVBQVUsUUFBbUI7UUFBM0MsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUF0Qi9ELDRCQUE0QjtRQUM1QixXQUFNLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLGVBQVUsR0FBRyxLQUFLLEVBQWEsQ0FBQztRQUNoQyxnQkFBVyxHQUFHLEtBQUssRUFBZSxDQUFDO1FBQ25DLG9CQUFlLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRXhDLDJCQUEyQjtRQUMzQixlQUFVLEdBQUcsTUFBTSxFQUFhLENBQUM7UUFDakMsb0JBQWUsR0FBRyxNQUFNLEVBQWUsQ0FBQztRQUV4Qyw0QkFBNEI7UUFDNUIscUJBQWdCLEdBQUcsTUFBTSxDQUFzQixFQUFFLENBQUMsQ0FBQztRQUMzQyxpQkFBWSxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUV6QyxTQUFTO1FBQ1EsbUJBQWMsR0FBRyxxQkFBcUIsQ0FBQztRQUN2QyxvQkFBZSxHQUFHLHNCQUFzQixDQUFDO0lBTVEsQ0FBQztJQUVuRSxRQUFRO1FBQ04sK0NBQStDO1FBQy9DLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFlBQVksQ0FB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Q0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQ3RGLElBQUksU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDL0YsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQzttSEEvS1Usa0JBQWtCO29FQUFsQixrQkFBa0I7O2lGQUFsQixrQkFBa0I7Y0FIOUIsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7YUFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBTb3J0U3RhdGUge1xuICBjb2x1bW46IHN0cmluZztcbiAgZGlyZWN0aW9uOiAnQVNDJyB8ICdERVNDJyB8ICcnO1xuICBjb2x1bW5OdW1iZXI/OiBudW1iZXI7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thcHBTb3J0SWNvbnNdJyxcbn0pXG5leHBvcnQgY2xhc3MgU29ydEljb25zRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAvLyBDb252ZXJ0IGlucHV0cyB0byBzaWduYWxzXG4gIGNvbHVtbiA9IGlucHV0PHN0cmluZz4oJycpO1xuICBhY3RpdmVTb3J0ID0gaW5wdXQ8U29ydFN0YXRlPigpO1xuICBhY3RpdmVTb3J0cyA9IGlucHV0PFNvcnRTdGF0ZVtdPigpO1xuICBtdWx0aUNvbHVtblNvcnQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIFxuICAvLyBDb252ZXJ0IG91dHB1dCB0byBzaWduYWxcbiAgc29ydENoYW5nZSA9IG91dHB1dDxTb3J0U3RhdGU+KCk7XG4gIG11bHRpU29ydENoYW5nZSA9IG91dHB1dDxTb3J0U3RhdGVbXT4oKTtcblxuICAvLyBJbnRlcm5hbCBzdGF0ZSBhcyBzaWduYWxzXG4gIGN1cnJlbnREaXJlY3Rpb24gPSBzaWduYWw8J0FTQycgfCAnREVTQycgfCAnJz4oJycpO1xuICBwcml2YXRlIGNvbHVtbk51bWJlciA9IHNpZ25hbDxudW1iZXI+KDApO1xuXG4gIC8vIEFzc2V0c1xuICBwcml2YXRlIHJlYWRvbmx5IFNPUlRfQVNDRU5ESU5HID0gJ2Fzc2V0cy9zb3J0LWFzYy5zdmcnO1xuICBwcml2YXRlIHJlYWRvbmx5IFNPUlRfREVTQ0VORElORyA9ICdhc3NldHMvc29ydC1kZXNjLnN2Zyc7XG5cbiAgcHJpdmF0ZSB1cEljb24hOiBIVE1MSW1hZ2VFbGVtZW50O1xuICBwcml2YXRlIGRvd25JY29uITogSFRNTEltYWdlRWxlbWVudDtcbiAgcHJpdmF0ZSBzb3J0T3JkZXJFbGVtZW50PzogSFRNTFNwYW5FbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBHZXQgY29sdW1uIG51bWJlciBmcm9tIGRhdGEtY29sdW1uIGF0dHJpYnV0ZVxuICAgIGNvbnN0IGNvbHVtbkF0dHIgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLWNvbHVtbicpO1xuICAgIGlmIChjb2x1bW5BdHRyKSB7XG4gICAgICB0aGlzLmNvbHVtbk51bWJlci5zZXQocGFyc2VJbnQoY29sdW1uQXR0ciwgMTApKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgYSBjb250YWluZXIgZm9yIHRoZSBpY29uc1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUoY29udGFpbmVyLCAnZGlzcGxheScsICdpbmxpbmUtZmxleCcpO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKGNvbnRhaW5lciwgJ2FsaWduLWl0ZW1zJywgJ2NlbnRlcicpO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKGNvbnRhaW5lciwgJ2dhcCcsICcwLjVyZW0nKTtcblxuICAgIGNvbnN0IGljb25Db250YWluZXIgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKGljb25Db250YWluZXIsICdkaXNwbGF5JywgJ2lubGluZS1mbGV4Jyk7XG4gICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUoaWNvbkNvbnRhaW5lciwgJ2ZsZXgtZGlyZWN0aW9uJywgJ2NvbHVtbicpO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKGljb25Db250YWluZXIsICdhbGlnbi1pdGVtcycsICdjZW50ZXInKTtcbiAgICB0aGlzLnJlbmRlcmVyPy5zZXRTdHlsZShpY29uQ29udGFpbmVyLCAnZ2FwJywgJzVweCcpO1xuXG4gICAgdGhpcy51cEljb24gPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldEF0dHJpYnV0ZSh0aGlzLnVwSWNvbiwgJ3NyYycsIHRoaXMuU09SVF9BU0NFTkRJTkcpO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKHRoaXMudXBJY29uLCAnb3BhY2l0eScsICcwLjUnKTtcbiAgICB0aGlzLnJlbmRlcmVyPy5zZXRTdHlsZSh0aGlzLnVwSWNvbiwgJ3RyYW5zaXRpb24nLCAnb3BhY2l0eSAwLjNzIGVhc2UnKTtcbiAgICB0aGlzLnJlbmRlcmVyPy5zZXRTdHlsZSh0aGlzLnVwSWNvbiwgJ3dpZHRoJywgJzlweCcpO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKHRoaXMudXBJY29uLCAnY3Vyc29yJywgJ3BvaW50ZXInKTtcbiAgICB0aGlzLnJlbmRlcmVyPy5saXN0ZW4odGhpcy51cEljb24sICdjbGljaycsICgpID0+IHRoaXMuc2V0U29ydERpcmVjdGlvbignQVNDJykpO1xuXG4gICAgdGhpcy5kb3duSWNvbiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG4gICAgdGhpcy5yZW5kZXJlcj8uc2V0QXR0cmlidXRlKHRoaXMuZG93bkljb24sICdzcmMnLCB0aGlzLlNPUlRfREVTQ0VORElORyk7XG4gICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUodGhpcy5kb3duSWNvbiwgJ29wYWNpdHknLCAnMC41Jyk7XG4gICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUodGhpcy5kb3duSWNvbiwgJ3RyYW5zaXRpb24nLCAnb3BhY2l0eSAwLjNzIGVhc2UnKTtcbiAgICB0aGlzLnJlbmRlcmVyPy5zZXRTdHlsZSh0aGlzLmRvd25JY29uLCAnd2lkdGgnLCAnOXB4Jyk7XG4gICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUodGhpcy5kb3duSWNvbiwgJ2N1cnNvcicsICdwb2ludGVyJyk7XG4gICAgdGhpcy5yZW5kZXJlcj8ubGlzdGVuKHRoaXMuZG93bkljb24sICdjbGljaycsICgpID0+IHRoaXMuc2V0U29ydERpcmVjdGlvbignREVTQycpKTtcblxuICAgIHRoaXMucmVuZGVyZXI/LmFwcGVuZENoaWxkKGljb25Db250YWluZXIsIHRoaXMudXBJY29uKTtcbiAgICB0aGlzLnJlbmRlcmVyPy5hcHBlbmRDaGlsZChpY29uQ29udGFpbmVyLCB0aGlzLmRvd25JY29uKTtcbiAgICB0aGlzLnJlbmRlcmVyPy5hcHBlbmRDaGlsZChjb250YWluZXIsIGljb25Db250YWluZXIpO1xuXG4gICAgaWYgKHRoaXMubXVsdGlDb2x1bW5Tb3J0KCkpIHtcbiAgICAgIHRoaXMuc29ydE9yZGVyRWxlbWVudCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUodGhpcy5zb3J0T3JkZXJFbGVtZW50LCAnZm9udC1zaXplJywgJzEycHgnKTtcbiAgICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKHRoaXMuc29ydE9yZGVyRWxlbWVudCwgJ2ZvbnQtd2VpZ2h0JywgJ2JvbGQnKTtcbiAgICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKHRoaXMuc29ydE9yZGVyRWxlbWVudCwgJ2NvbG9yJywgJyMwMDAnKTtcbiAgICAgIHRoaXMucmVuZGVyZXI/LmFwcGVuZENoaWxkKGNvbnRhaW5lciwgdGhpcy5zb3J0T3JkZXJFbGVtZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcmVyPy5hcHBlbmRDaGlsZCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIGNvbnRhaW5lcik7XG4gICAgdGhpcy51cGRhdGVJY29uU3R5bGVzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2FjdGl2ZVNvcnQnXSB8fCBjaGFuZ2VzWydhY3RpdmVTb3J0cyddKSB7XG4gICAgICB0aGlzLnVwZGF0ZUljb25TdHlsZXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFNvcnREaXJlY3Rpb24oZGlyZWN0aW9uOiAnQVNDJyB8ICdERVNDJyk6IHZvaWQge1xuICAgIGlmICh0aGlzLm11bHRpQ29sdW1uU29ydCgpKSB7XG4gICAgICB0aGlzLmhhbmRsZU11bHRpQ29sdW1uU29ydChkaXJlY3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhhbmRsZVNpbmdsZUNvbHVtblNvcnQoZGlyZWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNpbmdsZUNvbHVtblNvcnQoZGlyZWN0aW9uOiAnQVNDJyB8ICdERVNDJyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmN1cnJlbnREaXJlY3Rpb24oKSA9PT0gZGlyZWN0aW9uKSB7XG4gICAgICB0aGlzLmN1cnJlbnREaXJlY3Rpb24uc2V0KCcnKTsgLy8gUmVzZXQgc29ydGluZyBpZiB0aGUgc2FtZSBkaXJlY3Rpb24gaXMgY2xpY2tlZFxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnREaXJlY3Rpb24uc2V0KGRpcmVjdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy5zb3J0Q2hhbmdlLmVtaXQoeyBcbiAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW4oKSwgXG4gICAgICBkaXJlY3Rpb246IHRoaXMuY3VycmVudERpcmVjdGlvbigpLFxuICAgICAgY29sdW1uTnVtYmVyOiB0aGlzLmNvbHVtbk51bWJlcigpXG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVJY29uU3R5bGVzKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU11bHRpQ29sdW1uU29ydChkaXJlY3Rpb246ICdBU0MnIHwgJ0RFU0MnKTogdm9pZCB7XG4gICAgY29uc3QgZXhpc3RpbmdTb3J0SW5kZXggPSB0aGlzLmFjdGl2ZVNvcnRzKCkuZmluZEluZGV4KHNvcnQgPT4gc29ydC5jb2x1bW4gPT09IHRoaXMuY29sdW1uKCkpO1xuICAgIFxuICAgIGlmIChleGlzdGluZ1NvcnRJbmRleCAhPT0gLTEpIHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZVNvcnRzKClbZXhpc3RpbmdTb3J0SW5kZXhdLmRpcmVjdGlvbiAhPT0gZGlyZWN0aW9uKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlU29ydHMoKVtleGlzdGluZ1NvcnRJbmRleF0uZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgICAgICB0aGlzLmFjdGl2ZVNvcnRzKClbZXhpc3RpbmdTb3J0SW5kZXhdLmNvbHVtbk51bWJlciA9IHRoaXMuY29sdW1uTnVtYmVyKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZlU29ydHMoKS5wdXNoKHsgXG4gICAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW4oKSwgXG4gICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgY29sdW1uTnVtYmVyOiB0aGlzLmNvbHVtbk51bWJlcigpXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5tdWx0aVNvcnRDaGFuZ2UuZW1pdChbLi4udGhpcy5hY3RpdmVTb3J0cygpXSk7XG4gICAgdGhpcy51cGRhdGVJY29uU3R5bGVzKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUljb25TdHlsZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubXVsdGlDb2x1bW5Tb3J0KCkpIHtcbiAgICAgIHRoaXMudXBkYXRlTXVsdGlDb2x1bW5JY29uU3R5bGVzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlU2luZ2xlQ29sdW1uSWNvblN0eWxlcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2luZ2xlQ29sdW1uSWNvblN0eWxlcygpOiB2b2lkIHtcbiAgICBjb25zdCBpc0FjdGl2ZUNvbHVtbiA9IHRoaXMuYWN0aXZlU29ydCgpPy5jb2x1bW4gPT09IHRoaXMuY29sdW1uKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKFxuICAgICAgICB0aGlzLnVwSWNvbixcbiAgICAgICAgJ29wYWNpdHknLFxuICAgICAgICBpc0FjdGl2ZUNvbHVtbiAmJiB0aGlzLmN1cnJlbnREaXJlY3Rpb24oKSA9PT0gJ0FTQycgPyAnMScgOiAnMC41J1xuICAgICAgKTtcbiAgICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKFxuICAgICAgICB0aGlzLmRvd25JY29uLFxuICAgICAgICAnb3BhY2l0eScsXG4gICAgICAgIGlzQWN0aXZlQ29sdW1uICYmIHRoaXMuY3VycmVudERpcmVjdGlvbigpID09PSAnREVTQycgPyAnMScgOiAnMC41J1xuICAgICAgKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTXVsdGlDb2x1bW5JY29uU3R5bGVzKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbHVtblNvcnQgPSB0aGlzLmFjdGl2ZVNvcnRzKCkuZmluZChzb3J0ID0+IHNvcnQuY29sdW1uID09PSB0aGlzLmNvbHVtbigpKTtcbiAgICBcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKFxuICAgICAgICB0aGlzLnVwSWNvbixcbiAgICAgICAgJ29wYWNpdHknLFxuICAgICAgICBjb2x1bW5Tb3J0Py5kaXJlY3Rpb24gPT09ICdBU0MnID8gJzEnIDogJzAuNSdcbiAgICAgICk7XG4gICAgICB0aGlzLnJlbmRlcmVyPy5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5kb3duSWNvbixcbiAgICAgICAgJ29wYWNpdHknLFxuICAgICAgICBjb2x1bW5Tb3J0Py5kaXJlY3Rpb24gPT09ICdERVNDJyA/ICcxJyA6ICcwLjUnXG4gICAgICApO1xuXG4gICAgICBpZiAodGhpcy5zb3J0T3JkZXJFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHNvcnRJbmRleCA9IHRoaXMuYWN0aXZlU29ydHMoKS5maW5kSW5kZXgoc29ydCA9PiBzb3J0LmNvbHVtbiA9PT0gdGhpcy5jb2x1bW4oKSk7XG4gICAgICAgIGlmIChzb3J0SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlcj8uc2V0UHJvcGVydHkodGhpcy5zb3J0T3JkZXJFbGVtZW50LCAndGV4dENvbnRlbnQnLCAoc29ydEluZGV4ICsgMSkudG9TdHJpbmcoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlcj8uc2V0UHJvcGVydHkodGhpcy5zb3J0T3JkZXJFbGVtZW50LCAndGV4dENvbnRlbnQnLCAnJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCAwKTtcbiAgfVxufSJdfQ==
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1pY29ucy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy90YWJsZS9zb3J0LWljb25zLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQVNULEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOztBQWlCdkIsTUFBTSxPQUFPLGtCQUFrQjtJQW9CN0IsWUFBb0IsRUFBYyxFQUFVLFFBQW1CO1FBQTNDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBbkIvRCw0QkFBNEI7UUFDNUIsV0FBTSxHQUFHLEtBQUssRUFBYyxDQUFDO1FBQzdCLGVBQVUsR0FBRyxLQUFLLEVBQWEsQ0FBQztRQUNoQyxnQkFBVyxHQUFHLEtBQUssRUFBZSxDQUFDO1FBQ25DLG9CQUFlLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRXhDLDJCQUEyQjtRQUMzQixlQUFVLEdBQUcsTUFBTSxFQUFhLENBQUM7UUFDakMsb0JBQWUsR0FBRyxNQUFNLEVBQWUsQ0FBQztRQUV4Qyw0QkFBNEI7UUFDNUIscUJBQWdCLEdBQUcsTUFBTSxDQUFzQixFQUFFLENBQUMsQ0FBQztRQUMzQyxpQkFBWSxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQU95QixDQUFDO0lBRW5FLFFBQVE7UUFFTiwrQ0FBK0M7UUFDL0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JFLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUVELG1DQUFtQztR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Q0FDL0MsQ0FBQztZQUVGLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzFCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDNUYsSUFBSSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUMvRixDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdkUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO21IQTlLVSxrQkFBa0I7b0VBQWxCLGtCQUFrQjs7aUZBQWxCLGtCQUFrQjtjQUg5QixTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjthQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRTdGF0ZSB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICBkaXJlY3Rpb246ICdBU0MnIHwgJ0RFU0MnIHwgJyc7XG4gIGNvbHVtbk51bWJlcj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTb3J0Q29sdW1uIHtcbiAgZGF0YTogc3RyaW5nO1xuICBzb3J0QXNjSWNvbj86IHN0cmluZztcbiAgc29ydERlc2NJY29uPzogc3RyaW5nO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYXBwU29ydEljb25zXScsXG59KVxuZXhwb3J0IGNsYXNzIFNvcnRJY29uc0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgLy8gQ29udmVydCBpbnB1dHMgdG8gc2lnbmFsc1xuICBjb2x1bW4gPSBpbnB1dDxTb3J0Q29sdW1uPigpO1xuICBhY3RpdmVTb3J0ID0gaW5wdXQ8U29ydFN0YXRlPigpO1xuICBhY3RpdmVTb3J0cyA9IGlucHV0PFNvcnRTdGF0ZVtdPigpO1xuICBtdWx0aUNvbHVtblNvcnQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIFxuICAvLyBDb252ZXJ0IG91dHB1dCB0byBzaWduYWxcbiAgc29ydENoYW5nZSA9IG91dHB1dDxTb3J0U3RhdGU+KCk7XG4gIG11bHRpU29ydENoYW5nZSA9IG91dHB1dDxTb3J0U3RhdGVbXT4oKTtcblxuICAvLyBJbnRlcm5hbCBzdGF0ZSBhcyBzaWduYWxzXG4gIGN1cnJlbnREaXJlY3Rpb24gPSBzaWduYWw8J0FTQycgfCAnREVTQycgfCAnJz4oJycpO1xuICBwcml2YXRlIGNvbHVtbk51bWJlciA9IHNpZ25hbDxudW1iZXI+KDApO1xuXG4gIC8vIEFzc2V0c1xuICBwcml2YXRlIHVwSWNvbiE6IEhUTUxJbWFnZUVsZW1lbnQ7XG4gIHByaXZhdGUgZG93bkljb24hOiBIVE1MSW1hZ2VFbGVtZW50O1xuICBwcml2YXRlIHNvcnRPcmRlckVsZW1lbnQ/OiBIVE1MU3BhbkVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIFxuICAgIC8vIEdldCBjb2x1bW4gbnVtYmVyIGZyb20gZGF0YS1jb2x1bW4gYXR0cmlidXRlXG4gICAgY29uc3QgY29sdW1uQXR0ciA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY29sdW1uJyk7XG4gICAgaWYgKGNvbHVtbkF0dHIpIHtcbiAgICAgIHRoaXMuY29sdW1uTnVtYmVyLnNldChwYXJzZUludChjb2x1bW5BdHRyLCAxMCkpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBhIGNvbnRhaW5lciBmb3IgdGhlIGljb25zXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLnJlbmRlcmVyPy5zZXRTdHlsZShjb250YWluZXIsICdkaXNwbGF5JywgJ2lubGluZS1mbGV4Jyk7XG4gICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUoY29udGFpbmVyLCAnYWxpZ24taXRlbXMnLCAnY2VudGVyJyk7XG4gICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUoY29udGFpbmVyLCAnZ2FwJywgJzAuNXJlbScpO1xuXG4gICAgY29uc3QgaWNvbkNvbnRhaW5lciA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUoaWNvbkNvbnRhaW5lciwgJ2Rpc3BsYXknLCAnaW5saW5lLWZsZXgnKTtcbiAgICB0aGlzLnJlbmRlcmVyPy5zZXRTdHlsZShpY29uQ29udGFpbmVyLCAnZmxleC1kaXJlY3Rpb24nLCAnY29sdW1uJyk7XG4gICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUoaWNvbkNvbnRhaW5lciwgJ2FsaWduLWl0ZW1zJywgJ2NlbnRlcicpO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKGljb25Db250YWluZXIsICdnYXAnLCAnNXB4Jyk7XG5cbiAgICB0aGlzLnVwSWNvbiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG4gICAgdGhpcy5yZW5kZXJlcj8uc2V0QXR0cmlidXRlKHRoaXMudXBJY29uLCAnc3JjJywgdGhpcy5jb2x1bW4oKT8uc29ydEFzY0ljb24pO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKHRoaXMudXBJY29uLCAnb3BhY2l0eScsICcwLjUnKTtcbiAgICB0aGlzLnJlbmRlcmVyPy5zZXRTdHlsZSh0aGlzLnVwSWNvbiwgJ3RyYW5zaXRpb24nLCAnb3BhY2l0eSAwLjNzIGVhc2UnKTtcbiAgICB0aGlzLnJlbmRlcmVyPy5zZXRTdHlsZSh0aGlzLnVwSWNvbiwgJ3dpZHRoJywgJzlweCcpO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKHRoaXMudXBJY29uLCAnY3Vyc29yJywgJ3BvaW50ZXInKTtcbiAgICB0aGlzLnJlbmRlcmVyPy5saXN0ZW4odGhpcy51cEljb24sICdjbGljaycsICgpID0+IHRoaXMuc2V0U29ydERpcmVjdGlvbignQVNDJykpO1xuXG4gICAgdGhpcy5kb3duSWNvbiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG4gICAgdGhpcy5yZW5kZXJlcj8uc2V0QXR0cmlidXRlKHRoaXMuZG93bkljb24sICdzcmMnLCB0aGlzLmNvbHVtbigpPy5zb3J0RGVzY0ljb24pO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKHRoaXMuZG93bkljb24sICdvcGFjaXR5JywgJzAuNScpO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKHRoaXMuZG93bkljb24sICd0cmFuc2l0aW9uJywgJ29wYWNpdHkgMC4zcyBlYXNlJyk7XG4gICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUodGhpcy5kb3duSWNvbiwgJ3dpZHRoJywgJzlweCcpO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKHRoaXMuZG93bkljb24sICdjdXJzb3InLCAncG9pbnRlcicpO1xuICAgIHRoaXMucmVuZGVyZXI/Lmxpc3Rlbih0aGlzLmRvd25JY29uLCAnY2xpY2snLCAoKSA9PiB0aGlzLnNldFNvcnREaXJlY3Rpb24oJ0RFU0MnKSk7XG5cbiAgICB0aGlzLnJlbmRlcmVyPy5hcHBlbmRDaGlsZChpY29uQ29udGFpbmVyLCB0aGlzLnVwSWNvbik7XG4gICAgdGhpcy5yZW5kZXJlcj8uYXBwZW5kQ2hpbGQoaWNvbkNvbnRhaW5lciwgdGhpcy5kb3duSWNvbik7XG4gICAgdGhpcy5yZW5kZXJlcj8uYXBwZW5kQ2hpbGQoY29udGFpbmVyLCBpY29uQ29udGFpbmVyKTtcblxuICAgIGlmICh0aGlzLm11bHRpQ29sdW1uU29ydCgpKSB7XG4gICAgICB0aGlzLnNvcnRPcmRlckVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKHRoaXMuc29ydE9yZGVyRWxlbWVudCwgJ2ZvbnQtc2l6ZScsICcxMnB4Jyk7XG4gICAgICB0aGlzLnJlbmRlcmVyPy5zZXRTdHlsZSh0aGlzLnNvcnRPcmRlckVsZW1lbnQsICdmb250LXdlaWdodCcsICdib2xkJyk7XG4gICAgICB0aGlzLnJlbmRlcmVyPy5zZXRTdHlsZSh0aGlzLnNvcnRPcmRlckVsZW1lbnQsICdjb2xvcicsICcjMDAwJyk7XG4gICAgICB0aGlzLnJlbmRlcmVyPy5hcHBlbmRDaGlsZChjb250YWluZXIsIHRoaXMuc29ydE9yZGVyRWxlbWVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJlcj8uYXBwZW5kQ2hpbGQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCBjb250YWluZXIpO1xuICAgIHRoaXMudXBkYXRlSWNvblN0eWxlcygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydhY3RpdmVTb3J0J10gfHwgY2hhbmdlc1snYWN0aXZlU29ydHMnXSkge1xuICAgICAgdGhpcy51cGRhdGVJY29uU3R5bGVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRTb3J0RGlyZWN0aW9uKGRpcmVjdGlvbjogJ0FTQycgfCAnREVTQycpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdWx0aUNvbHVtblNvcnQoKSkge1xuICAgICAgdGhpcy5oYW5kbGVNdWx0aUNvbHVtblNvcnQoZGlyZWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYW5kbGVTaW5nbGVDb2x1bW5Tb3J0KGRpcmVjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTaW5nbGVDb2x1bW5Tb3J0KGRpcmVjdGlvbjogJ0FTQycgfCAnREVTQycpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jdXJyZW50RGlyZWN0aW9uKCkgPT09IGRpcmVjdGlvbikge1xuICAgICAgdGhpcy5jdXJyZW50RGlyZWN0aW9uLnNldCgnJyk7IC8vIFJlc2V0IHNvcnRpbmcgaWYgdGhlIHNhbWUgZGlyZWN0aW9uIGlzIGNsaWNrZWRcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50RGlyZWN0aW9uLnNldChkaXJlY3Rpb24pO1xuICAgIH1cblxuICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHsgXG4gICAgICBjb2x1bW46IHRoaXMuY29sdW1uKCk/LmRhdGEgfHwgJycsIFxuICAgICAgZGlyZWN0aW9uOiB0aGlzLmN1cnJlbnREaXJlY3Rpb24oKSxcbiAgICAgIGNvbHVtbk51bWJlcjogdGhpcy5jb2x1bW5OdW1iZXIoKVxuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlSWNvblN0eWxlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVNdWx0aUNvbHVtblNvcnQoZGlyZWN0aW9uOiAnQVNDJyB8ICdERVNDJyk6IHZvaWQge1xuICAgIGNvbnN0IGV4aXN0aW5nU29ydEluZGV4ID0gdGhpcy5hY3RpdmVTb3J0cygpLmZpbmRJbmRleChzb3J0ID0+IHNvcnQuY29sdW1uID09PSB0aGlzLmNvbHVtbigpPy5kYXRhKTtcbiAgICBcbiAgICBpZiAoZXhpc3RpbmdTb3J0SW5kZXggIT09IC0xKSB7XG4gICAgICBpZiAodGhpcy5hY3RpdmVTb3J0cygpW2V4aXN0aW5nU29ydEluZGV4XS5kaXJlY3Rpb24gIT09IGRpcmVjdGlvbikge1xuICAgICAgICB0aGlzLmFjdGl2ZVNvcnRzKClbZXhpc3RpbmdTb3J0SW5kZXhdLmRpcmVjdGlvbiA9IGRpcmVjdGlvbjtcbiAgICAgICAgdGhpcy5hY3RpdmVTb3J0cygpW2V4aXN0aW5nU29ydEluZGV4XS5jb2x1bW5OdW1iZXIgPSB0aGlzLmNvbHVtbk51bWJlcigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFjdGl2ZVNvcnRzKCkucHVzaCh7IFxuICAgICAgICBjb2x1bW46IHRoaXMuY29sdW1uKCk/LmRhdGEgfHwgJycsIFxuICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgIGNvbHVtbk51bWJlcjogdGhpcy5jb2x1bW5OdW1iZXIoKVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMubXVsdGlTb3J0Q2hhbmdlLmVtaXQoWy4uLnRoaXMuYWN0aXZlU29ydHMoKV0pO1xuICAgIHRoaXMudXBkYXRlSWNvblN0eWxlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJY29uU3R5bGVzKCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKFwiQ29sXCIsdGhpcy5jb2x1bW4oKT8uZGF0YSlcbiAgICBpZiAodGhpcy5tdWx0aUNvbHVtblNvcnQoKSkge1xuICAgICAgdGhpcy51cGRhdGVNdWx0aUNvbHVtbkljb25TdHlsZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVTaW5nbGVDb2x1bW5JY29uU3R5bGVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTaW5nbGVDb2x1bW5JY29uU3R5bGVzKCk6IHZvaWQge1xuICAgIGNvbnN0IGlzQWN0aXZlQ29sdW1uID0gdGhpcy5hY3RpdmVTb3J0KCk/LmNvbHVtbiA9PT0gdGhpcy5jb2x1bW4oKT8uZGF0YTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUoXG4gICAgICAgIHRoaXMudXBJY29uLFxuICAgICAgICAnb3BhY2l0eScsXG4gICAgICAgIGlzQWN0aXZlQ29sdW1uICYmIHRoaXMuY3VycmVudERpcmVjdGlvbigpID09PSAnQVNDJyA/ICcxJyA6ICcwLjUnXG4gICAgICApO1xuICAgICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZG93bkljb24sXG4gICAgICAgICdvcGFjaXR5JyxcbiAgICAgICAgaXNBY3RpdmVDb2x1bW4gJiYgdGhpcy5jdXJyZW50RGlyZWN0aW9uKCkgPT09ICdERVNDJyA/ICcxJyA6ICcwLjUnXG4gICAgICApO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVNdWx0aUNvbHVtbkljb25TdHlsZXMoKTogdm9pZCB7XG4gICAgY29uc3QgY29sdW1uU29ydCA9IHRoaXMuYWN0aXZlU29ydHMoKS5maW5kKHNvcnQgPT4gc29ydC5jb2x1bW4gPT09IHRoaXMuY29sdW1uKCk/LmRhdGEpO1xuICAgIFxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUoXG4gICAgICAgIHRoaXMudXBJY29uLFxuICAgICAgICAnb3BhY2l0eScsXG4gICAgICAgIGNvbHVtblNvcnQ/LmRpcmVjdGlvbiA9PT0gJ0FTQycgPyAnMScgOiAnMC41J1xuICAgICAgKTtcbiAgICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKFxuICAgICAgICB0aGlzLmRvd25JY29uLFxuICAgICAgICAnb3BhY2l0eScsXG4gICAgICAgIGNvbHVtblNvcnQ/LmRpcmVjdGlvbiA9PT0gJ0RFU0MnID8gJzEnIDogJzAuNSdcbiAgICAgICk7XG5cbiAgICAgIGlmICh0aGlzLnNvcnRPcmRlckVsZW1lbnQpIHtcbiAgICAgICAgY29uc3Qgc29ydEluZGV4ID0gdGhpcy5hY3RpdmVTb3J0cygpLmZpbmRJbmRleChzb3J0ID0+IHNvcnQuY29sdW1uID09PSB0aGlzLmNvbHVtbigpPy5kYXRhKTtcbiAgICAgICAgaWYgKHNvcnRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyPy5zZXRQcm9wZXJ0eSh0aGlzLnNvcnRPcmRlckVsZW1lbnQsICd0ZXh0Q29udGVudCcsIChzb3J0SW5kZXggKyAxKS50b1N0cmluZygpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyPy5zZXRQcm9wZXJ0eSh0aGlzLnNvcnRPcmRlckVsZW1lbnQsICd0ZXh0Q29udGVudCcsICcnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIDApO1xuICB9XG59Il19
@@ -56,7 +56,7 @@ function TableComponent_div_5_span_4_Template(rf, ctx) { if (rf & 1) {
56
56
  } if (rf & 2) {
57
57
  const colHeader_r4 = i0.ɵɵnextContext().$implicit;
58
58
  const ctx_r1 = i0.ɵɵnextContext();
59
- i0.ɵɵproperty("column", colHeader_r4.data)("activeSort", ctx_r1.currentSort)("activeSorts", ctx_r1.multiColumnSort)("multiColumnSort", ctx_r1.config.multiColumnSort);
59
+ i0.ɵɵproperty("column", colHeader_r4)("activeSort", ctx_r1.currentSort)("activeSorts", ctx_r1.multiColumnSort)("multiColumnSort", ctx_r1.config.multiColumnSort);
60
60
  } }
61
61
  function TableComponent_div_5_Template(rf, ctx) { if (rf & 1) {
62
62
  const _r3 = i0.ɵɵgetCurrentView();
@@ -447,7 +447,7 @@ export class TableComponent {
447
447
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filter = _t.first);
448
448
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.table = _t.first);
449
449
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.colHeaders = _t);
450
- } }, inputs: { config: [0, "tableConfig", "config"], subTableconfig: "subTableconfig", tableDataLoading: "tableDataLoading", expandedIndex: "expandedIndex", tableData: "tableData", subTableData: "subTableData", subTableDataLoading: "subTableDataLoading" }, outputs: { filtersUpdated: "filtersUpdated", pageSelected: "pageSelected", sortChange: "sortChange" }, features: [i0.ɵɵNgOnChangesFeature], decls: 9, vars: 15, consts: [["table", ""], ["filter", ""], ["colHeaderRef", ""], ["id", "main-container", 3, "ngStyle"], [3, "containerStyles", "filtersData", "filtersApplied", 4, "ngIf"], ["id", "table-container", 3, "ngClass"], ["id", "col-headers-container", 3, "ngStyle"], ["style", "border: 1px solid red;", "class", "col-header", 3, "ngStyle", "click", 4, "ngFor", "ngForOf"], ["id", "data-container"], ["class", "row-wrapper", 4, "ngFor", "ngForOf"], ["id", "pagination-container", 4, "ngIf"], [3, "filtersApplied", "containerStyles", "filtersData"], [1, "col-header", 2, "border", "1px solid red", 3, "click", "ngStyle"], ["class", "col-header-text", 4, "ngIf"], [4, "ngIf"], ["appSortIcons", "", 3, "column", "activeSort", "activeSorts", "multiColumnSort", "sortChange", 4, "ngIf"], [1, "col-header-text"], ["customTableCell", "", 3, "customComponent", "data"], ["appSortIcons", "", 3, "sortChange", "column", "activeSort", "activeSorts", "multiColumnSort"], [1, "row-wrapper"], [1, "t-row", 3, "click", "ngClass", "ngStyle"], ["class", "t-col-container", 3, "ngStyle", "ngClass", "click", 4, "ngFor", "ngForOf"], ["class", "sub-row", 4, "ngIf"], [1, "t-col-container", 3, "click", "ngStyle", "ngClass"], [1, "t-col", 3, "ngStyle"], ["class", "t-col-text", 3, "ngStyle", "ngClass", 4, "ngIf"], [1, "t-col-text", 3, "ngStyle", "ngClass"], [1, "sub-row"], [3, "ngStyle"], [3, "config", "tableData"], ["id", "pagination-container"], ["id", "pagination-text"], ["id", "pages-container"], [1, "page", 3, "click"], ["fill", "none", "height", "10", "viewBox", "0 0 7 10", "width", "7", "xmlns", "http://www.w3.org/2000/svg"], ["clip-rule", "evenodd", "d", "M0.857405 5.56295C0.855794 5.56139 0.854188 5.55982 0.852588 5.55824C0.695955 5.40408 0.617641 5.20203 0.617647 4.99998C0.617641 4.79793 0.695955 4.59588 0.852588 4.44172C0.854188 4.44014 0.855794 4.43858 0.857404 4.43702L5.13066 0.231231C5.44392 -0.0770771 5.9518 -0.0770771 6.26506 0.231231C6.57831 0.53954 6.57831 1.03941 6.26506 1.34772L2.5542 4.99998L6.26506 8.65225C6.57831 8.96055 6.57831 9.46042 6.26506 9.76873C5.9518 10.077 5.44392 10.077 5.13066 9.76873L0.857405 5.56295Z", "fill", "#181F33", "fill-rule", "evenodd"], [4, "ngFor", "ngForOf"], ["clip-rule", "evenodd", "d", "M6.1426 5.56295C6.14421 5.56139 6.14581 5.55982 6.14741 5.55824C6.30405 5.40408 6.38236 5.20203 6.38236 4.99998C6.38236 4.79793 6.30405 4.59588 6.14741 4.44172C6.14581 4.44014 6.14421 4.43858 6.1426 4.43702L1.86934 0.231231C1.55608 -0.0770771 1.0482 -0.0770771 0.734942 0.231231C0.421688 0.53954 0.421688 1.03941 0.734942 1.34772L4.4458 4.99998L0.734941 8.65225C0.421686 8.96055 0.421686 9.46042 0.734941 9.76873C1.0482 10.077 1.55608 10.077 1.86934 9.76873L6.1426 5.56295Z", "fill", "#181F33", "fill-rule", "evenodd"], ["class", "page", 3, "ngClass", "click", 4, "ngIf"], ["class", "page-seperator", 4, "ngIf"], [1, "page", 3, "click", "ngClass"], [1, "page-seperator"], [1, "dot", 3, "ngStyle"], [1, "dot"]], template: function TableComponent_Template(rf, ctx) { if (rf & 1) {
450
+ } }, inputs: { config: [0, "tableConfig", "config"], subTableconfig: "subTableconfig", tableDataLoading: "tableDataLoading", expandedIndex: "expandedIndex", tableData: "tableData", subTableData: "subTableData", subTableDataLoading: "subTableDataLoading" }, outputs: { filtersUpdated: "filtersUpdated", pageSelected: "pageSelected", sortChange: "sortChange" }, features: [i0.ɵɵNgOnChangesFeature], decls: 9, vars: 15, consts: [["table", ""], ["filter", ""], ["colHeaderRef", ""], ["id", "main-container", 3, "ngStyle"], [3, "containerStyles", "filtersData", "filtersApplied", 4, "ngIf"], ["id", "table-container", 3, "ngClass"], ["id", "col-headers-container", 3, "ngStyle"], ["class", "col-header", 3, "ngStyle", "click", 4, "ngFor", "ngForOf"], ["id", "data-container"], ["class", "row-wrapper", 4, "ngFor", "ngForOf"], ["id", "pagination-container", 4, "ngIf"], [3, "filtersApplied", "containerStyles", "filtersData"], [1, "col-header", 3, "click", "ngStyle"], ["class", "col-header-text", 4, "ngIf"], [4, "ngIf"], ["appSortIcons", "", 3, "column", "activeSort", "activeSorts", "multiColumnSort", "sortChange", 4, "ngIf"], [1, "col-header-text"], ["customTableCell", "", 3, "customComponent", "data"], ["appSortIcons", "", 3, "sortChange", "column", "activeSort", "activeSorts", "multiColumnSort"], [1, "row-wrapper"], [1, "t-row", 3, "click", "ngClass", "ngStyle"], ["class", "t-col-container", 3, "ngStyle", "ngClass", "click", 4, "ngFor", "ngForOf"], ["class", "sub-row", 4, "ngIf"], [1, "t-col-container", 3, "click", "ngStyle", "ngClass"], [1, "t-col", 3, "ngStyle"], ["class", "t-col-text", 3, "ngStyle", "ngClass", 4, "ngIf"], [1, "t-col-text", 3, "ngStyle", "ngClass"], [1, "sub-row"], [3, "ngStyle"], [3, "config", "tableData"], ["id", "pagination-container"], ["id", "pagination-text"], ["id", "pages-container"], [1, "page", 3, "click"], ["fill", "none", "height", "10", "viewBox", "0 0 7 10", "width", "7", "xmlns", "http://www.w3.org/2000/svg"], ["clip-rule", "evenodd", "d", "M0.857405 5.56295C0.855794 5.56139 0.854188 5.55982 0.852588 5.55824C0.695955 5.40408 0.617641 5.20203 0.617647 4.99998C0.617641 4.79793 0.695955 4.59588 0.852588 4.44172C0.854188 4.44014 0.855794 4.43858 0.857404 4.43702L5.13066 0.231231C5.44392 -0.0770771 5.9518 -0.0770771 6.26506 0.231231C6.57831 0.53954 6.57831 1.03941 6.26506 1.34772L2.5542 4.99998L6.26506 8.65225C6.57831 8.96055 6.57831 9.46042 6.26506 9.76873C5.9518 10.077 5.44392 10.077 5.13066 9.76873L0.857405 5.56295Z", "fill", "#181F33", "fill-rule", "evenodd"], [4, "ngFor", "ngForOf"], ["clip-rule", "evenodd", "d", "M6.1426 5.56295C6.14421 5.56139 6.14581 5.55982 6.14741 5.55824C6.30405 5.40408 6.38236 5.20203 6.38236 4.99998C6.38236 4.79793 6.30405 4.59588 6.14741 4.44172C6.14581 4.44014 6.14421 4.43858 6.1426 4.43702L1.86934 0.231231C1.55608 -0.0770771 1.0482 -0.0770771 0.734942 0.231231C0.421688 0.53954 0.421688 1.03941 0.734942 1.34772L4.4458 4.99998L0.734941 8.65225C0.421686 8.96055 0.421686 9.46042 0.734941 9.76873C1.0482 10.077 1.55608 10.077 1.86934 9.76873L6.1426 5.56295Z", "fill", "#181F33", "fill-rule", "evenodd"], ["class", "page", 3, "ngClass", "click", 4, "ngIf"], ["class", "page-seperator", 4, "ngIf"], [1, "page", 3, "click", "ngClass"], [1, "page-seperator"], [1, "dot", 3, "ngStyle"], [1, "dot"]], template: function TableComponent_Template(rf, ctx) { if (rf & 1) {
451
451
  i0.ɵɵelementStart(0, "div", 3);
452
452
  i0.ɵɵtemplate(1, TableComponent_mis_table_filter_1_Template, 2, 2, "mis-table-filter", 4);
453
453
  i0.ɵɵelementStart(2, "div", 5, 0)(4, "div", 6);
@@ -476,7 +476,7 @@ export class TableComponent {
476
476
  }
477
477
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TableComponent, [{
478
478
  type: Component,
479
- args: [{ selector: "mis-table", template: "<div\n [ngStyle]=\"{\n height: getContainerHeight(),\n width: getContainerWidth(),\n 'overflow-x': config.canScrollHorizontally ? 'auto' : 'unset'\n }\"\n id=\"main-container\"\n>\n <mis-table-filter\n #filter\n (filtersApplied)=\"updateAppliedFilters($event)\"\n *ngIf=\"showFilter\"\n [containerStyles]=\"filterContainerStyles\"\n [filtersData]=\"filterData\"\n ></mis-table-filter>\n <div\n #table\n id=\"table-container\"\n [ngClass]=\"{ 'no-scrollbar': expandedIndex < 0, scrollbar: !(expandedIndex < 0), 'scroll-horizontally': config.canScrollHorizontally }\"\n >\n <div\n [ngStyle]=\"getColHeadersRowStyles()\"\n id=\"col-headers-container\"\n >\n <div\n style=\"border: 1px solid red;\"\n\n #colHeaderRef\n (click)=\"colHeader?.action ? colHeader?.action(colHeader) : null\"\n *ngFor=\"let colHeader of config?.colHeaderConfig\"\n class=\"col-header\"\n [ngStyle]=\"{\n width: colHeader?.style?.width || '',\n cursor: colHeader.action ? 'pointer' : 'default',\n 'justify-content': colHeader?.style?.justifyContent\n ? colHeader?.style?.justifyContent\n : colHeader.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p *ngIf=\"colHeader?.type !== 'custom'\" class=\"col-header-text\">\n {{ colHeader?.data || \" \" }}\n </p>\n <ng-template *ngIf=\"colHeader?.type === 'custom'\" customTableCell [customComponent]=\"colHeader?.componentRef\" [data]=\"colHeader.data\"></ng-template>\n <span *ngIf=\"colHeader?.isSortable\" appSortIcons\n [column]=\"colHeader.data\"\n [activeSort]=\"currentSort\"\n [activeSorts]=\"multiColumnSort\"\n [multiColumnSort]=\"config.multiColumnSort\"\n (sortChange)=\"onSortChange($event)\">\n </span>\n </div>\n </div>\n <div id=\"data-container\">\n <div class=\"row-wrapper\" *ngFor=\"let row of tableData; let i = index\">\n <div\n class=\"t-row\"\n [ngClass]=\"{ 't-row-hover': config.cellHover, 'active-row': i === activeRowIndex }\"\n [ngStyle]=\"{ 'min-height': config?.rowConfig?.height ? config.rowConfig.height : '44px' }\"\n (click)=\"selectRow(i)\"\n >\n <div\n (click)=\"config?.colConfig[i]?.action ? config?.colConfig[i]?.action(col) : null\"\n *ngFor=\"let col of row; let i = index\"\n [ngStyle]=\"{\n width: config?.colConfig[i]?.style?.width || config?.colHeaderConfig[i]?.style?.width || ''\n }\"\n class=\"t-col-container\"\n [ngClass]=\"{ 't-col-container-hover': config.cellHover }\"\n >\n <div\n class=\"t-col\"\n [style]=\"config.colConfig[i]?.style\"\n [ngStyle]=\"{\n width: '100%',\n cursor: config.colConfig[i]?.action ? 'pointer' : 'default',\n 'justify-content': config.colConfig[i]?.style?.justifyContent\n ? config.colConfig[i]?.style?.justifyContent\n : config.colConfig[i]?.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p\n *ngIf=\"config.colConfig[i]?.type !== 'custom'\"\n [ngStyle]=\"{\n color: config?.colConfig[i]?.style?.color ? config?.colConfig[i]?.style?.color : ''\n }\"\n [ngClass]=\"{'text-ellipsis': !!config?.colConfig[i]?.style?.textEllipsis}\"\n class=\"t-col-text\"\n >\n {{ col }}\n </p>\n <ng-template\n *ngIf=\"config.colConfig[i]?.type === 'custom'\"\n [customComponent]=\"config.colConfig[i].componentRef\"\n [data]=\"col\"\n customTableCell\n ></ng-template>\n </div>\n </div>\n </div>\n <div *ngIf=\"config?.canExpand && expandedIndex === i\" class=\"sub-row\">\n <ng-container *ngIf=\"subTableDataLoading\">\n <div [ngStyle]=\"{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '16px'\n }\">\n Loading...\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"!subTableDataLoading && subTableData.length === 0\">\n <div [ngStyle]=\"{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '16px'\n }\">\n No Data Available...\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"!subTableDataLoading && subTableData.length > 0\">\n <sub-table [config]=\"subTableconfig\" [tableData]=\"subTableData\"></sub-table>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"config?.paginationConfig && (tableLength >= config.paginationConfig.rowsPerPage || config.paginationConfig?.selectedPage !== 1)\"\n id=\"pagination-container\"\n >\n <p id=\"pagination-text\">\n Showing\n {{ (config.paginationConfig?.selectedPage - 1) * config.paginationConfig.rowsPerPage + 1 }}-{{\n (config.paginationConfig?.selectedPage - 1) * config.paginationConfig.rowsPerPage + tableLength\n }}\n of {{ config.paginationConfig.totalNoOfRows }} items\n </p>\n <div id=\"pages-container\">\n <span (click)=\"updateSelectedPage(config.paginationConfig?.selectedPage - 1)\" class=\"page\">\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 7 10\" width=\"7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n clip-rule=\"evenodd\"\n d=\"M0.857405 5.56295C0.855794 5.56139 0.854188 5.55982 0.852588 5.55824C0.695955 5.40408 0.617641 5.20203 0.617647 4.99998C0.617641 4.79793 0.695955 4.59588 0.852588 4.44172C0.854188 4.44014 0.855794 4.43858 0.857404 4.43702L5.13066 0.231231C5.44392 -0.0770771 5.9518 -0.0770771 6.26506 0.231231C6.57831 0.53954 6.57831 1.03941 6.26506 1.34772L2.5542 4.99998L6.26506 8.65225C6.57831 8.96055 6.57831 9.46042 6.26506 9.76873C5.9518 10.077 5.44392 10.077 5.13066 9.76873L0.857405 5.56295Z\"\n fill=\"#181F33\"\n fill-rule=\"evenodd\"\n />\n </svg>\n </span>\n <div *ngFor=\"let pageNumber of pages\">\n <span\n (click)=\"updateSelectedPage(pageNumber)\"\n *ngIf=\"pageNumber != 0\"\n [ngClass]=\"{ 'page-active': pageNumber == config.paginationConfig?.selectedPage }\"\n class=\"page\"\n >{{ pageNumber }}</span\n >\n <span *ngIf=\"pageNumber == 0\" class=\"page-seperator\">\n <div [ngStyle]=\"{ display: 'flex' }\">\n <span class=\"dot\" [ngStyle]=\"{ 'margin-right': '4px' }\"></span>\n <span class=\"dot\" [ngStyle]=\"{ 'margin-right': '4px' }\"></span>\n <span class=\"dot\"></span>\n </div> \n </span>\n </div>\n <span (click)=\"updateSelectedPage(config.paginationConfig?.selectedPage + 1)\" class=\"page\">\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 7 10\" width=\"7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n clip-rule=\"evenodd\"\n d=\"M6.1426 5.56295C6.14421 5.56139 6.14581 5.55982 6.14741 5.55824C6.30405 5.40408 6.38236 5.20203 6.38236 4.99998C6.38236 4.79793 6.30405 4.59588 6.14741 4.44172C6.14581 4.44014 6.14421 4.43858 6.1426 4.43702L1.86934 0.231231C1.55608 -0.0770771 1.0482 -0.0770771 0.734942 0.231231C0.421688 0.53954 0.421688 1.03941 0.734942 1.34772L4.4458 4.99998L0.734941 8.65225C0.421686 8.96055 0.421686 9.46042 0.734941 9.76873C1.0482 10.077 1.55608 10.077 1.86934 9.76873L6.1426 5.56295Z\"\n fill=\"#181F33\"\n fill-rule=\"evenodd\"\n />\n </svg>\n </span>\n </div>\n </div>\n</div>\n", styles: ["#main-container{font-family:Lato,sans-serif;position:relative}.no-scrollbar::-webkit-scrollbar{width:0}.scrollbar::-webkit-scrollbar{width:8px;height:8px;border-radius:15px}.scrollbar::-webkit-scrollbar-thumb{background:#9aa7b4;border-radius:15px}#table-container{height:inherit;overflow-y:auto}.scroll-horizontally{height:inherit;width:fit-content;overflow-y:unset!important;overflow-x:visible}#col-headers-container{display:flex;align-items:center;position:sticky;background-color:#fff;width:100%;z-index:1;min-height:44px;border-bottom:1px solid #e0e0e0;top:0;left:0;right:0}.col-header{padding:0 16px;display:flex;align-items:center;height:100%}.col-header-text{font-style:normal;font-weight:700;line-height:20px;display:flex;align-items:center;letter-spacing:.2px;margin:0}.filter-icon{margin-left:8px;padding:0 8px;position:relative;cursor:pointer}#filter-active{height:8px;width:8px;background:#16cbbc;border-radius:50%;position:absolute;top:4px;right:4px}.sub-row{height:auto;border-bottom:none}.loader ::ng-deep .mat-progress-spinner circle,.mat-spinner circle{stroke:#0937b2}.t-row{display:flex;min-height:44px;background-color:#fff;width:100%;border-bottom:1px solid #e0e0e0}.t-row:hover{background-color:#e7eefd}.active-row{background-color:#e6f6fd}.t-col-container{padding:0 16px;overflow-wrap:anywhere}.t-row-hover:hover{background-color:#0000}.t-col-container-hover:hover{background-color:#e6ebf7}.t-col-container-hover:first-child{border-left:1px solid #e0e0e0}.t-col-container-hover{border-right:1px solid #e0e0e0}.t-col{display:flex;align-items:center;height:100%}.t-col-text{font-style:normal;font-weight:400;font-size:14px;line-height:20px;display:flex;align-items:center;letter-spacing:.2px;margin:0}.text-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}#pagination-container{display:flex;justify-content:flex-end;align-items:center;height:56px}#pagination-text{font-style:normal;font-weight:400;font-size:12px;line-height:18px;letter-spacing:.4px;color:#6a737d;margin:0 96px 0 0}#pages-container{display:flex;margin-right:32px}.page{display:flex;justify-content:center;align-items:center;border:1px solid #6a737d;box-sizing:border-box;border-radius:4px;width:32px;height:32px;font-size:14px;line-height:20px;letter-spacing:.2px;color:#6a737d;margin-right:8px;cursor:pointer}.page-seperator{display:flex;justify-content:center;align-items:center;width:32px;height:32px;margin-right:8px}.dot{height:3px;width:3px;border-radius:50%;background:#6a737d}.page-active{color:#0937b2;border:1px solid #0937b2}.sort-icon{display:inline-flex;align-items:center;margin-left:4px;cursor:pointer}.sort-icon img{width:16px;height:16px;transition:opacity .2s ease}.sort-icon img:hover{opacity:.8}\n"] }]
479
+ args: [{ selector: "mis-table", template: "<div\n [ngStyle]=\"{\n height: getContainerHeight(),\n width: getContainerWidth(),\n 'overflow-x': config.canScrollHorizontally ? 'auto' : 'unset'\n }\"\n id=\"main-container\"\n>\n <mis-table-filter\n #filter\n (filtersApplied)=\"updateAppliedFilters($event)\"\n *ngIf=\"showFilter\"\n [containerStyles]=\"filterContainerStyles\"\n [filtersData]=\"filterData\"\n ></mis-table-filter>\n <div\n #table\n id=\"table-container\"\n [ngClass]=\"{ 'no-scrollbar': expandedIndex < 0, scrollbar: !(expandedIndex < 0), 'scroll-horizontally': config.canScrollHorizontally }\"\n >\n <div\n [ngStyle]=\"getColHeadersRowStyles()\"\n id=\"col-headers-container\"\n >\n <div\n #colHeaderRef\n (click)=\"colHeader?.action ? colHeader?.action(colHeader) : null\"\n *ngFor=\"let colHeader of config?.colHeaderConfig\"\n class=\"col-header\"\n [ngStyle]=\"{\n width: colHeader?.style?.width || '',\n cursor: colHeader.action ? 'pointer' : 'default',\n 'justify-content': colHeader?.style?.justifyContent\n ? colHeader?.style?.justifyContent\n : colHeader.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p *ngIf=\"colHeader?.type !== 'custom'\" class=\"col-header-text\">\n {{ colHeader?.data || \" \" }}\n </p>\n <ng-template *ngIf=\"colHeader?.type === 'custom'\" customTableCell [customComponent]=\"colHeader?.componentRef\" [data]=\"colHeader.data\"></ng-template>\n <span *ngIf=\"colHeader?.isSortable\" appSortIcons\n [column]=\"colHeader\"\n [activeSort]=\"currentSort\"\n [activeSorts]=\"multiColumnSort\"\n [multiColumnSort]=\"config.multiColumnSort\"\n (sortChange)=\"onSortChange($event)\">\n </span>\n </div>\n </div>\n <div id=\"data-container\">\n <div class=\"row-wrapper\" *ngFor=\"let row of tableData; let i = index\">\n <div\n class=\"t-row\"\n [ngClass]=\"{ 't-row-hover': config.cellHover, 'active-row': i === activeRowIndex }\"\n [ngStyle]=\"{ 'min-height': config?.rowConfig?.height ? config.rowConfig.height : '44px' }\"\n (click)=\"selectRow(i)\"\n >\n <div\n (click)=\"config?.colConfig[i]?.action ? config?.colConfig[i]?.action(col) : null\"\n *ngFor=\"let col of row; let i = index\"\n [ngStyle]=\"{\n width: config?.colConfig[i]?.style?.width || config?.colHeaderConfig[i]?.style?.width || ''\n }\"\n class=\"t-col-container\"\n [ngClass]=\"{ 't-col-container-hover': config.cellHover }\"\n >\n <div\n class=\"t-col\"\n [style]=\"config.colConfig[i]?.style\"\n [ngStyle]=\"{\n width: '100%',\n cursor: config.colConfig[i]?.action ? 'pointer' : 'default',\n 'justify-content': config.colConfig[i]?.style?.justifyContent\n ? config.colConfig[i]?.style?.justifyContent\n : config.colConfig[i]?.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p\n *ngIf=\"config.colConfig[i]?.type !== 'custom'\"\n [ngStyle]=\"{\n color: config?.colConfig[i]?.style?.color ? config?.colConfig[i]?.style?.color : ''\n }\"\n [ngClass]=\"{'text-ellipsis': !!config?.colConfig[i]?.style?.textEllipsis}\"\n class=\"t-col-text\"\n >\n {{ col }}\n </p>\n <ng-template\n *ngIf=\"config.colConfig[i]?.type === 'custom'\"\n [customComponent]=\"config.colConfig[i].componentRef\"\n [data]=\"col\"\n customTableCell\n ></ng-template>\n </div>\n </div>\n </div>\n <div *ngIf=\"config?.canExpand && expandedIndex === i\" class=\"sub-row\">\n <ng-container *ngIf=\"subTableDataLoading\">\n <div [ngStyle]=\"{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '16px'\n }\">\n Loading...\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"!subTableDataLoading && subTableData.length === 0\">\n <div [ngStyle]=\"{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '16px'\n }\">\n No Data Available...\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"!subTableDataLoading && subTableData.length > 0\">\n <sub-table [config]=\"subTableconfig\" [tableData]=\"subTableData\"></sub-table>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"config?.paginationConfig && (tableLength >= config.paginationConfig.rowsPerPage || config.paginationConfig?.selectedPage !== 1)\"\n id=\"pagination-container\"\n >\n <p id=\"pagination-text\">\n Showing\n {{ (config.paginationConfig?.selectedPage - 1) * config.paginationConfig.rowsPerPage + 1 }}-{{\n (config.paginationConfig?.selectedPage - 1) * config.paginationConfig.rowsPerPage + tableLength\n }}\n of {{ config.paginationConfig.totalNoOfRows }} items\n </p>\n <div id=\"pages-container\">\n <span (click)=\"updateSelectedPage(config.paginationConfig?.selectedPage - 1)\" class=\"page\">\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 7 10\" width=\"7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n clip-rule=\"evenodd\"\n d=\"M0.857405 5.56295C0.855794 5.56139 0.854188 5.55982 0.852588 5.55824C0.695955 5.40408 0.617641 5.20203 0.617647 4.99998C0.617641 4.79793 0.695955 4.59588 0.852588 4.44172C0.854188 4.44014 0.855794 4.43858 0.857404 4.43702L5.13066 0.231231C5.44392 -0.0770771 5.9518 -0.0770771 6.26506 0.231231C6.57831 0.53954 6.57831 1.03941 6.26506 1.34772L2.5542 4.99998L6.26506 8.65225C6.57831 8.96055 6.57831 9.46042 6.26506 9.76873C5.9518 10.077 5.44392 10.077 5.13066 9.76873L0.857405 5.56295Z\"\n fill=\"#181F33\"\n fill-rule=\"evenodd\"\n />\n </svg>\n </span>\n <div *ngFor=\"let pageNumber of pages\">\n <span\n (click)=\"updateSelectedPage(pageNumber)\"\n *ngIf=\"pageNumber != 0\"\n [ngClass]=\"{ 'page-active': pageNumber == config.paginationConfig?.selectedPage }\"\n class=\"page\"\n >{{ pageNumber }}</span\n >\n <span *ngIf=\"pageNumber == 0\" class=\"page-seperator\">\n <div [ngStyle]=\"{ display: 'flex' }\">\n <span class=\"dot\" [ngStyle]=\"{ 'margin-right': '4px' }\"></span>\n <span class=\"dot\" [ngStyle]=\"{ 'margin-right': '4px' }\"></span>\n <span class=\"dot\"></span>\n </div> \n </span>\n </div>\n <span (click)=\"updateSelectedPage(config.paginationConfig?.selectedPage + 1)\" class=\"page\">\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 7 10\" width=\"7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n clip-rule=\"evenodd\"\n d=\"M6.1426 5.56295C6.14421 5.56139 6.14581 5.55982 6.14741 5.55824C6.30405 5.40408 6.38236 5.20203 6.38236 4.99998C6.38236 4.79793 6.30405 4.59588 6.14741 4.44172C6.14581 4.44014 6.14421 4.43858 6.1426 4.43702L1.86934 0.231231C1.55608 -0.0770771 1.0482 -0.0770771 0.734942 0.231231C0.421688 0.53954 0.421688 1.03941 0.734942 1.34772L4.4458 4.99998L0.734941 8.65225C0.421686 8.96055 0.421686 9.46042 0.734941 9.76873C1.0482 10.077 1.55608 10.077 1.86934 9.76873L6.1426 5.56295Z\"\n fill=\"#181F33\"\n fill-rule=\"evenodd\"\n />\n </svg>\n </span>\n </div>\n </div>\n</div>\n", styles: ["#main-container{font-family:Lato,sans-serif;position:relative}.no-scrollbar::-webkit-scrollbar{width:0}.scrollbar::-webkit-scrollbar{width:8px;height:8px;border-radius:15px}.scrollbar::-webkit-scrollbar-thumb{background:#9aa7b4;border-radius:15px}#table-container{height:inherit;overflow-y:auto}.scroll-horizontally{height:inherit;width:fit-content;overflow-y:unset!important;overflow-x:visible}#col-headers-container{display:flex;align-items:center;position:sticky;background-color:#fff;width:100%;z-index:1;min-height:44px;border-bottom:1px solid #e0e0e0;top:0;left:0;right:0}.col-header{padding:0 16px;display:flex;align-items:center;height:100%}.col-header-text{font-style:normal;font-weight:700;line-height:20px;display:flex;align-items:center;letter-spacing:.2px;margin:0}.filter-icon{margin-left:8px;padding:0 8px;position:relative;cursor:pointer}#filter-active{height:8px;width:8px;background:#16cbbc;border-radius:50%;position:absolute;top:4px;right:4px}.sub-row{height:auto;border-bottom:none}.loader ::ng-deep .mat-progress-spinner circle,.mat-spinner circle{stroke:#0937b2}.t-row{display:flex;min-height:44px;background-color:#fff;width:100%;border-bottom:1px solid #e0e0e0}.t-row:hover{background-color:#e7eefd}.active-row{background-color:#e6f6fd}.t-col-container{padding:0 16px;overflow-wrap:anywhere}.t-row-hover:hover{background-color:#0000}.t-col-container-hover:hover{background-color:#e6ebf7}.t-col-container-hover:first-child{border-left:1px solid #e0e0e0}.t-col-container-hover{border-right:1px solid #e0e0e0}.t-col{display:flex;align-items:center;height:100%}.t-col-text{font-style:normal;font-weight:400;font-size:14px;line-height:20px;display:flex;align-items:center;letter-spacing:.2px;margin:0}.text-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}#pagination-container{display:flex;justify-content:flex-end;align-items:center;height:56px}#pagination-text{font-style:normal;font-weight:400;font-size:12px;line-height:18px;letter-spacing:.4px;color:#6a737d;margin:0 96px 0 0}#pages-container{display:flex;margin-right:32px}.page{display:flex;justify-content:center;align-items:center;border:1px solid #6a737d;box-sizing:border-box;border-radius:4px;width:32px;height:32px;font-size:14px;line-height:20px;letter-spacing:.2px;color:#6a737d;margin-right:8px;cursor:pointer}.page-seperator{display:flex;justify-content:center;align-items:center;width:32px;height:32px;margin-right:8px}.dot{height:3px;width:3px;border-radius:50%;background:#6a737d}.page-active{color:#0937b2;border:1px solid #0937b2}.sort-icon{display:inline-flex;align-items:center;margin-left:4px;cursor:pointer}.sort-icon img{width:16px;height:16px;transition:opacity .2s ease}.sort-icon img:hover{opacity:.8}\n"] }]
480
480
  }], () => [{ type: i0.Renderer2 }], { filtersUpdated: [{
481
481
  type: Output
482
482
  }], filter: [{
@@ -509,4 +509,4 @@ export class TableComponent {
509
509
  type: Output
510
510
  }] }); })();
511
511
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TableComponent, { className: "TableComponent" }); })();
512
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEVBQ1QsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ1JwRCwrQ0FNQztJQUpDLHlOQUFrQixtQ0FBNEIsS0FBQztJQUloRCxpQkFBbUI7OztJQURsQixBQURBLDhEQUF5QyxrQ0FDZjs7O0lBNEJ0Qiw2QkFBZ0U7SUFDOUQsWUFDRjtJQUFBLGlCQUFJOzs7SUFERixjQUNGO0lBREUseUZBQ0Y7Ozs7SUFDQSx3RkFBc0k7OztJQUF4QixBQUE1Qyx5RkFBMkMsMkJBQXdCOzs7O0lBQ3JJLGdDQUtzQztJQUFwQyxnTUFBYywyQkFBb0IsS0FBQztJQUNyQyxpQkFBTzs7OztJQUZMLEFBREEsQUFEQSxBQURBLDBDQUF5QixrQ0FDQyx1Q0FDSyxrREFDVzs7OztJQXpCOUMsa0NBZ0JDO0lBWkMsMlJBQTRELElBQUksS0FBQztJQWlCakUsQUFEQSxBQUhBLGtFQUFnRSxvREFHc0UsMkRBTWhHO0lBRXhDLGlCQUFNOzs7SUFyQkosa2RBUUU7SUFFRSxlQUFrQztJQUFsQyxxRkFBa0M7SUFHeEIsY0FBa0M7SUFBbEMscUZBQWtDO0lBQ3pDLGNBQTJCO0lBQTNCLDRFQUEyQjs7O0lBdUM1Qiw2QkFPQztJQUNDLFlBQ0Y7SUFBQSxpQkFBSTs7Ozs7O0lBSkYsQUFIQSwrWkFFRSxvT0FDd0U7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QUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEMsQ0FBQzsrR0FoTlUsY0FBYztvRUFBZCxjQUFjOzs7Ozs7Ozs7O1lDdkIzQiw4QkFPQztZQUNDLHlGQU1DO1lBTUMsQUFMRixpQ0FJQyxhQUlFO1lBQ0MsK0RBZ0JDO1lBYUgsaUJBQU07WUFDTiw4QkFBeUI7WUFDdkIsK0RBQXNFO1lBNkUxRSxBQURFLGlCQUFNLEVBQ0Y7WUFDTixpRUFHQztZQStDSCxpQkFBTTs7WUF0TEosNEpBSUU7WUFNQyxjQUFnQjtZQUFoQixxQ0FBZ0I7WUFPakIsY0FBdUk7WUFBdkksd0lBQXVJO1lBR3ZJLGVBQW9DO1lBQXBDLHNEQUFvQztZQVFWLGNBQTBCO1lBQTFCLGdGQUEwQjtZQTBCVCxlQUFjO1lBQWQsdUNBQWM7WUErRXhELGNBQXFJO1lBQXJJLGlQQUFxSTs7O2lGRC9HN0gsY0FBYztjQUwxQixTQUFTOzJCQUNFLFdBQVc7MENBZVgsY0FBYztrQkFBdkIsTUFBTTtZQUljLE1BQU07a0JBQTFCLFNBQVM7bUJBQUMsUUFBUTtZQUNXLFVBQVU7a0JBQXZDLFlBQVk7bUJBQUMsY0FBYztZQUtsQixZQUFZO2tCQUFyQixNQUFNO1lBRWUsTUFBTTtrQkFBM0IsS0FBSzttQkFBQyxhQUFhO1lBQ1gsY0FBYztrQkFBdEIsS0FBSztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUNHLGFBQWE7a0JBQXJCLEtBQUs7WUFDRyxTQUFTO2tCQUFqQixLQUFLO1lBQ0csWUFBWTtrQkFBcEIsS0FBSztZQUNHLG1CQUFtQjtrQkFBM0IsS0FBSztZQUNjLEtBQUs7a0JBQXhCLFNBQVM7bUJBQUMsT0FBTztZQUtSLFVBQVU7a0JBQW5CLE1BQU07O2tGQW5DSSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZpbHRlciwgVGFibGVGaWx0ZXJDb21wb25lbnQgfSBmcm9tIFwiLi9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgU29ydFN0YXRlIH0gZnJvbSAnLi9zb3J0LWljb25zLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBERUZBVUxUX1RBQkxFX0NPTkZJRyB9IGZyb20gJy4vdGFibGUuY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy10YWJsZVwiLFxuICB0ZW1wbGF0ZVVybDogXCJ0YWJsZS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcInRhYmxlLmNvbXBvbmVudC5jc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG5cbiAgLy8gSW5pdGlhbGl6ZSB3aXRoIC0xIHRvIGluZGljYXRlIG5vIHJvdyBpcyBjb2xvcmVkIGF0IHRoZSBiZWdpbm5pbmdcbiAgYWN0aXZlUm93SW5kZXg6IG51bWJlciA9IDA7IFxuXG4gIC8vIEZpbHRlciByZWxhdGVkIHZhcmlhYmxlc1xuICBzaG93RmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG4gIGZpbHRlck5hbWU6IHN0cmluZyA9IFwiXCI7XG4gIGZpbHRlckRhdGE6IEFycmF5PEZpbHRlcj4gPSBbXTtcbiAgZmlsdGVyQ29udGFpbmVyU3R5bGVzOiBhbnkgPSB7fTtcbiAgYXBwbGllZEZpbHRlcnM6IHsgW2tleTogc3RyaW5nXTogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4gfSA9IHt9O1xuICBAT3V0cHV0KCkgZmlsdGVyc1VwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBba2V5OiBzdHJpbmddOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PjtcbiAgfT4oKTtcblxuICBAVmlld0NoaWxkKFwiZmlsdGVyXCIpIGZpbHRlcjogVGFibGVGaWx0ZXJDb21wb25lbnQgfCBhbnk7XG4gIEBWaWV3Q2hpbGRyZW4oXCJjb2xIZWFkZXJSZWZcIikgY29sSGVhZGVyczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+IHwgYW55O1xuXG4gIC8vIFBhZ2luYXRpb24gcmVsYXRlZCB2YXJpYWJsZXNcbiAgcGFnZXM6IEFycmF5PG51bWJlcj4gPSBbXTtcbiAgdGFibGVMZW5ndGg6IG51bWJlcjtcbiAgQE91dHB1dCgpIHBhZ2VTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBJbnB1dChcInRhYmxlQ29uZmlnXCIpIGNvbmZpZzogVGFibGVDb25maWcgfCBhbnk7XG4gIEBJbnB1dCgpIHN1YlRhYmxlY29uZmlnOiBUYWJsZUNvbmZpZyB8IGFueTtcbiAgQElucHV0KCkgdGFibGVEYXRhTG9hZGluZzogYm9vbGVhbiB8IGFueTtcbiAgQElucHV0KCkgZXhwYW5kZWRJbmRleDogbnVtYmVyIHwgYW55O1xuICBASW5wdXQoKSB0YWJsZURhdGE6IEFycmF5PEFycmF5PGFueT4+ID0gW107XG4gIEBJbnB1dCgpIHN1YlRhYmxlRGF0YTogQXJyYXk8QXJyYXk8YW55Pj4gPSBbXTtcbiAgQElucHV0KCkgc3ViVGFibGVEYXRhTG9hZGluZzogYm9vbGVhbiB8IGFueTtcbiAgQFZpZXdDaGlsZChcInRhYmxlXCIpIHRhYmxlOiBFbGVtZW50UmVmIHwgYW55O1xuXG4gIC8vIFNvcnRpbmcgcmVsYXRlZCBwcm9wZXJ0aWVzXG4gIGN1cnJlbnRTb3J0OiBTb3J0U3RhdGUgfCBudWxsID0gbnVsbDtcbiAgbXVsdGlDb2x1bW5Tb3J0OiBTb3J0U3RhdGVbXSA9IFtdO1xuICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydFN0YXRlPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikgeyB9XG5cbiAgLy8gRnVuY3Rpb24gdG8gaGFuZGxlIHJvdyBjbGlja1xuICBzZWxlY3RSb3coaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuYWN0aXZlUm93SW5kZXggPSBpbmRleDsgLy8gU2V0IHRoZSBzZWxlY3RlZCBpbmRleCB0byB0aGUgY2xpY2tlZCByb3cncyBpbmRleFxuICAgICEhdGhpcy5jb25maWcucm93Q29uZmlnLmFjdGlvbiAmJiB0aGlzLmNvbmZpZy5yb3dDb25maWcuYWN0aW9uKGluZGV4KTtcbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBNZXJnZSBkZWZhdWx0IGNvbmZpZyB3aXRoIHByb3ZpZGVkIGNvbmZpZ1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4uREVGQVVMVF9UQUJMRV9DT05GSUcsXG4gICAgICAuLi50aGlzLmNvbmZpZ1xuICAgIH07XG4gICAgXG4gICAgY29uc29sZS5sb2coXCJUYWJsZSBDb25maWc6XCIsIHRoaXMuY29uZmlnKTtcbiAgICBjb25zb2xlLmxvZyhcIlRhYmxlIERhdGE6XCIsIHRoaXMudGFibGVEYXRhKTtcbiAgICB0aGlzLnRhYmxlTGVuZ3RoID0gISF0aGlzLnRhYmxlRGF0YSA/IHRoaXMudGFibGVEYXRhLmxlbmd0aCA6IDA7XG4gICAgdGhpcy5pbml0aWFsaXplRmlsdGVycygpO1xuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVQYWdpbmF0aW9uKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbmZpZy5jYW5TY3JvbGxIb3Jpem9udGFsbHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jb25maWcuY2FuU2Nyb2xsSG9yaXpvbnRhbGx5ID0gZmFsc2U7XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBldmVudCA9PiB7XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgbGV0IGlzQ2hlY2tCb3hDbGlja2VkID0gdHJ1ZTtcbiAgICAgICAgbGV0IHRhcmdldEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTFNwYW5FbGVtZW50O1xuICAgICAgICBpZiAodGFyZ2V0RWxlbWVudC5jbGFzc05hbWUgPT09IFwiY2hlY2ttYXJrXCIpIHtcbiAgICAgICAgICBpc0NoZWNrQm94Q2xpY2tlZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5zaG93RmlsdGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaXNDbGlja0luc2lkZUVsZW1lbnQgPSB0aGlzLmZpbHRlci5jb250YWluZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICBpZiAoIWlzQ2xpY2tJbnNpZGVFbGVtZW50ICYmICFpc0NoZWNrQm94Q2xpY2tlZCkge1xuICAgICAgICAgIHRoaXMudG9nZ2xlRmlsdGVyKHRoaXMuZmlsdGVyTmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2luYXRpb25Db25maWcpIHtcbiAgICAgIGxldCBoZWlnaHQgPSB0aGlzLmNvbmZpZy5oZWlnaHQ7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudGFibGUubmF0aXZlRWxlbWVudCwgXCJoZWlnaHRcIiwgaGVpZ2h0IC0gNTYgKyBcInB4XCIpO1xuICAgIH1cbiAgfVxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLnRhYmxlTGVuZ3RoID0gISF0aGlzLnRhYmxlRGF0YSA/IHRoaXMudGFibGVEYXRhLmxlbmd0aCA6IDA7XG4gICAgdGhpcy5hY3RpdmVSb3dJbmRleCA9IHRoaXMuY29uZmlnLmFjdGl2ZVJvd0luZGV4IHx8IDA7XG4gIH1cblxuICAvLyBGaWx0ZXIgcmVsYXRlZCBmdW5jdGlvbnNcbiAgaW5pdGlhbGl6ZUZpbHRlcnMoKSB7XG4gICAgZm9yIChsZXQgY29sSGVhZGVyIG9mIHRoaXMuY29uZmlnPy5jb2xIZWFkZXJDb25maWcpIHtcbiAgICAgIGlmIChjb2xIZWFkZXIuZmlsdGVycykge1xuICAgICAgICBsZXQgZmlsdGVycyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBmaWx0ZXIgb2YgY29sSGVhZGVyLmZpbHRlcnMpIHtcbiAgICAgICAgICBpZiAoZmlsdGVyLmNoZWNrZWQpIHtcbiAgICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgIG5hbWU6IGZpbHRlci5uYW1lLFxuICAgICAgICAgICAgICB2YWx1ZTogZmlsdGVyLnZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcnMubGVuZ3RoID4gMCkgdGhpcy5hcHBsaWVkRmlsdGVyc1tjb2xIZWFkZXIuZGF0YV0gPSBmaWx0ZXJzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICB0b2dnbGVGaWx0ZXIoZmlsdGVyTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLnNob3dGaWx0ZXIpIHtcbiAgICAgIHRoaXMuZmlsdGVyTmFtZSA9IGZpbHRlck5hbWU7XG4gICAgICB0aGlzLnNob3dGaWx0ZXIgPSB0cnVlO1xuXG4gICAgICBsZXQgb2ZmU2V0ID0gMDtcbiAgICAgIGxldCBjb2xIZWFkZXJzUmV2ZXJzZWQgPSB0aGlzLmNvbEhlYWRlcnMudG9BcnJheSgpLnJldmVyc2UoKTtcblxuICAgICAgZm9yIChsZXQgaGVhZGVyIG9mIGNvbEhlYWRlcnNSZXZlcnNlZCkge1xuICAgICAgICBpZiAoaGVhZGVyLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0ID09PSBmaWx0ZXJOYW1lKSBicmVhaztcbiAgICAgICAgb2ZmU2V0ICs9IGhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgfVxuICAgICAgdGhpcy5maWx0ZXJDb250YWluZXJTdHlsZXMgPSB7XG4gICAgICAgIHRvcDogXCI0NHB4XCIsXG4gICAgICAgIHJpZ2h0OiBvZmZTZXQgPiAwID8gb2ZmU2V0IC0gMTE2ICsgXCJweFwiIDogXCIxMnB4XCJcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyTmFtZSA9IFwiXCI7XG4gICAgICB0aGlzLmZpbHRlckRhdGEgPSBbXTtcbiAgICAgIHRoaXMuc2hvd0ZpbHRlciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICB1cGRhdGVBcHBsaWVkRmlsdGVycyhhcHBsaWVkRmlsdGVyczogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4pIHtcbiAgICBpZiAoYXBwbGllZEZpbHRlcnMubGVuZ3RoID09IDApIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmFwcGxpZWRGaWx0ZXJzW3RoaXMuZmlsdGVyTmFtZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXBwbGllZEZpbHRlcnNbdGhpcy5maWx0ZXJOYW1lXSA9IGFwcGxpZWRGaWx0ZXJzO1xuICAgIH1cbiAgICB0aGlzLmZpbHRlcnNVcGRhdGVkLmVtaXQoeyAuLi50aGlzLmFwcGxpZWRGaWx0ZXJzIH0pO1xuICAgIHRoaXMudG9nZ2xlRmlsdGVyKHRoaXMuZmlsdGVyTmFtZSk7XG4gIH1cblxuICAvLyBQYWdpbmF0aW9uIHJlbGF0ZWQgZnVuY3Rpb25zXG4gIGluaXRpYWxpemVQYWdpbmF0aW9uKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnKSB7XG4gICAgICBsZXQgbGVuID0gdGhpcy5jb25maWcucGFnaW5hdGlvbkNvbmZpZy5ub09mUGFnZXM7XG4gICAgICBpZiAobGVuIDw9IDcpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gbGVuOyBpKyspIHtcbiAgICAgICAgICB0aGlzLnBhZ2VzLnB1c2goaSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFnZXMgPSBbMSwgMiwgMywgNCwgMCwgbGVuXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgdXBkYXRlU2VsZWN0ZWRQYWdlKHBhZ2VOdW1iZXI6IG51bWJlcikge1xuICAgIGlmIChwYWdlTnVtYmVyIDwgMSB8fCBwYWdlTnVtYmVyID4gdGhpcy5jb25maWcucGFnaW5hdGlvbkNvbmZpZy5ub09mUGFnZXMpIHJldHVybjtcbiAgICB0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnLnNlbGVjdGVkUGFnZSA9IHBhZ2VOdW1iZXI7XG4gICAgbGV0IGxlbiA9IHRoaXMuY29uZmlnLnBhZ2luYXRpb25Db25maWcubm9PZlBhZ2VzO1xuICAgIGlmIChsZW4gPiA3KSB7XG4gICAgICBpZiAocGFnZU51bWJlciAtIDIgPD0gMSkge1xuICAgICAgICB0aGlzLnBhZ2VzID0gWzEsIDIsIDMsIDQsIDAsIGxlbl07XG4gICAgICB9IGVsc2UgaWYgKHBhZ2VOdW1iZXIgLSAyID4gMSAmJiBwYWdlTnVtYmVyICsgMiA8IGxlbikge1xuICAgICAgICB0aGlzLnBhZ2VzID0gWzEsIDAsIHBhZ2VOdW1iZXIgLSAxLCBwYWdlTnVtYmVyLCBwYWdlTnVtYmVyICsgMSwgMCwgbGVuXTtcbiAgICAgIH0gZWxzZSBpZiAocGFnZU51bWJlciArIDIgPj0gbGVuKSB7XG4gICAgICAgIHRoaXMucGFnZXMgPSBbMSwgMCwgbGVuIC0gMywgbGVuIC0gMiwgbGVuIC0gMSwgbGVuXTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wYWdlU2VsZWN0ZWQuZW1pdCh0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnPy5zZWxlY3RlZFBhZ2UpO1xuICB9XG5cbiAgLy8gTWFpbiBjb250YWluZXIgcmVsYXRlZCBmdW5jdGlvbnNcbiAgZ2V0Q29udGFpbmVySGVpZ2h0KCkge1xuICAgIGlmICh0aGlzLmNvbmZpZz8uaGVpZ2h0KSByZXR1cm4gdGhpcy5jb25maWcuaGVpZ2h0O1xuICAgIGVsc2UgcmV0dXJuIFwiXCI7XG4gIH1cbiAgZ2V0Q29udGFpbmVyV2lkdGgoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnPy53aWR0aCkgcmV0dXJuIHRoaXMuY29uZmlnLndpZHRoO1xuICAgIGVsc2UgcmV0dXJuIFwiXCI7XG4gIH1cblxuICAvLyBDb2x1bW4gSGVhZGVycyByZWxhdGVkIGZ1bmN0aW9uc1xuICBnZXRDb2xIZWFkZXJzUm93U3R5bGVzKCkge1xuICAgIGNvbnN0IHsgY29sSGVhZGVyc1Jvd0NvbmZpZyB9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3QgbWluSGVpZ2h0ID0gY29sSGVhZGVyc1Jvd0NvbmZpZz8uaGVpZ2h0IHx8IFwiNDRweFwiO1xuICAgIGNvbnN0IGJvcmRlclRvcCA9IGNvbEhlYWRlcnNSb3dDb25maWc/LnN0eWxlPy5ib3JkZXJUb3AgfHwgXCJcIjtcbiAgICBjb25zdCBib3JkZXJCb3R0b20gPSBjb2xIZWFkZXJzUm93Q29uZmlnPy5zdHlsZT8uYm9yZGVyQm90dG9tIHx8IFwiMXB4IHNvbGlkICNFMEUwRTBcIjtcbiAgICBjb25zdCBiYWNrZ3JvdW5kQ29sb3IgPSBjb2xIZWFkZXJzUm93Q29uZmlnPy5zdHlsZT8uYmFja2dyb3VuZENvbG9yIHx8IFwiI0ZGRkZGRlwiO1xuICAgIGNvbnN0IGZvbnRTaXplID0gY29sSGVhZGVyc1Jvd0NvbmZpZz8uc3R5bGU/LmZvbnRTaXplIHx8IFwiMTRweFwiO1xuICAgIHJldHVybiB7XG4gICAgICAnbWluLWhlaWdodCc6IG1pbkhlaWdodCxcbiAgICAgICdib3JkZXItdG9wJzogYm9yZGVyVG9wLFxuICAgICAgJ2JvcmRlci1ib3R0b20nOiBib3JkZXJCb3R0b20sXG4gICAgICAnYmFja2dyb3VuZC1jb2xvcic6IGJhY2tncm91bmRDb2xvcixcbiAgICAgICdmb250LXNpemUnOiBmb250U2l6ZVxuICAgIH07XG4gIH1cblxuICBvblNvcnRDaGFuZ2Uoc29ydFN0YXRlOiBTb3J0U3RhdGUpIHtcbiAgICB0aGlzLmN1cnJlbnRTb3J0ID0gc29ydFN0YXRlO1xuICAgIGlmICh0aGlzLmNvbmZpZy5tdWx0aUNvbHVtblNvcnQpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5tdWx0aUNvbHVtblNvcnQuZmluZEluZGV4KHNvcnQgPT4gc29ydC5jb2x1bW4gPT09IHNvcnRTdGF0ZS5jb2x1bW4pO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBpZiAoc29ydFN0YXRlLmRpcmVjdGlvbiA9PT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMubXVsdGlDb2x1bW5Tb3J0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tdWx0aUNvbHVtblNvcnRbaW5kZXhdID0gc29ydFN0YXRlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHNvcnRTdGF0ZS5kaXJlY3Rpb24gIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5tdWx0aUNvbHVtblNvcnQucHVzaChzb3J0U3RhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zb2xlLmxvZyhcIk11bHRpIENvbHVtbiBTb3J0OlwiLCBzb3J0U3RhdGUpO1xuICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHNvcnRTdGF0ZSk7XG4gIH1cblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29uZmlnIHtcbiAgaGVpZ2h0OiBzdHJpbmcgfCBcIjEwMCVcIjtcbiAgd2lkdGg6IHN0cmluZyB8IFwiMTAwJVwiO1xuICBwYWdpbmF0aW9uQ29uZmlnPzogUGFnaW5hdGlvbkNvbmZpZyB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIGNvbEhlYWRlcnNSb3dDb25maWc6IFJvd0NvbmZpZyB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIHJvd0NvbmZpZzogUm93Q29uZmlnIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgY29sSGVhZGVyQ29uZmlnOiBBcnJheTxDb2xIZWFkZXJDb25maWc+O1xuICBjb2xDb25maWc6IEFycmF5PENvbENvbmZpZz47XG4gIGNhbkV4cGFuZD86IGJvb2xlYW47XG4gIGNhblNjcm9sbEhvcml6b250YWxseT86IGJvb2xlYW47XG4gIGNlbGxIb3Zlcj86IGJvb2xlYW47XG4gIGFjdGl2ZVJvd0luZGV4PzogbnVtYmVyO1xuICBtdWx0aUNvbHVtblNvcnQ/OiBib29sZWFuO1xuICBzb3J0QXNjSWNvbj86IHN0cmluZztcbiAgc29ydERlc2NJY29uPzogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uQ29uZmlnIHtcbiAgbm9PZlBhZ2VzOiBudW1iZXI7XG4gIHJvd3NQZXJQYWdlOiBudW1iZXI7XG4gIHRvdGFsTm9PZlJvd3M6IG51bWJlcjtcbiAgc2VsZWN0ZWRQYWdlPzogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBSb3dDb25maWcge1xuICBoZWlnaHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsO1xuICBzdHlsZT86IHt9O1xuICBhY3Rpb24/OiBhbnk7XG4gIGlzU29ydGFibGU/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2xIZWFkZXJDb25maWcge1xuICB0eXBlOiBcInRleHRcIiB8IFwibnVtYmVyXCIgfCBcImN1c3RvbVwiO1xuICBkYXRhOiBhbnk7XG4gIGNvbXBvbmVudFJlZj86IGFueTtcbiAgZmlsdGVycz86IEFycmF5PEZpbHRlcj4gfCBudWxsO1xuICBzdHlsZT86IHt9O1xuICBhY3Rpb24/OiBhbnk7XG4gIGlzU29ydGFibGU/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2xDb25maWcge1xuICB0eXBlOiBcInRleHRcIiB8IFwibnVtYmVyXCIgfCBcImN1c3RvbVwiO1xuICBjb21wb25lbnRSZWY/OiBhbnk7XG4gIHN0eWxlPzoge307XG4gIGFjdGlvbj86IGFueTtcbn1cbiIsIjxkaXZcbiAgW25nU3R5bGVdPVwie1xuICAgIGhlaWdodDogZ2V0Q29udGFpbmVySGVpZ2h0KCksXG4gICAgd2lkdGg6IGdldENvbnRhaW5lcldpZHRoKCksXG4gICAgJ292ZXJmbG93LXgnOiBjb25maWcuY2FuU2Nyb2xsSG9yaXpvbnRhbGx5ID8gJ2F1dG8nIDogJ3Vuc2V0J1xuICB9XCJcbiAgaWQ9XCJtYWluLWNvbnRhaW5lclwiXG4+XG4gIDxtaXMtdGFibGUtZmlsdGVyXG4gICAgI2ZpbHRlclxuICAgIChmaWx0ZXJzQXBwbGllZCk9XCJ1cGRhdGVBcHBsaWVkRmlsdGVycygkZXZlbnQpXCJcbiAgICAqbmdJZj1cInNob3dGaWx0ZXJcIlxuICAgIFtjb250YWluZXJTdHlsZXNdPVwiZmlsdGVyQ29udGFpbmVyU3R5bGVzXCJcbiAgICBbZmlsdGVyc0RhdGFdPVwiZmlsdGVyRGF0YVwiXG4gID48L21pcy10YWJsZS1maWx0ZXI+XG4gIDxkaXZcbiAgICAjdGFibGVcbiAgICBpZD1cInRhYmxlLWNvbnRhaW5lclwiXG4gICAgW25nQ2xhc3NdPVwieyAnbm8tc2Nyb2xsYmFyJzogZXhwYW5kZWRJbmRleCA8IDAsIHNjcm9sbGJhcjogIShleHBhbmRlZEluZGV4IDwgMCksICdzY3JvbGwtaG9yaXpvbnRhbGx5JzogY29uZmlnLmNhblNjcm9sbEhvcml6b250YWxseSB9XCJcbiAgPlxuICAgIDxkaXZcbiAgICBbbmdTdHlsZV09XCJnZXRDb2xIZWFkZXJzUm93U3R5bGVzKClcIlxuICAgICAgaWQ9XCJjb2wtaGVhZGVycy1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgcmVkO1wiXG5cbiAgICAgICAgI2NvbEhlYWRlclJlZlxuICAgICAgICAoY2xpY2spPVwiY29sSGVhZGVyPy5hY3Rpb24gPyBjb2xIZWFkZXI/LmFjdGlvbihjb2xIZWFkZXIpIDogbnVsbFwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2xIZWFkZXIgb2YgY29uZmlnPy5jb2xIZWFkZXJDb25maWdcIlxuICAgICAgICBjbGFzcz1cImNvbC1oZWFkZXJcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgd2lkdGg6IGNvbEhlYWRlcj8uc3R5bGU/LndpZHRoIHx8ICcnLFxuICAgICAgICAgIGN1cnNvcjogY29sSGVhZGVyLmFjdGlvbiA/ICdwb2ludGVyJyA6ICdkZWZhdWx0JyxcbiAgICAgICAgICAnanVzdGlmeS1jb250ZW50JzogY29sSGVhZGVyPy5zdHlsZT8uanVzdGlmeUNvbnRlbnRcbiAgICAgICAgICAgID8gY29sSGVhZGVyPy5zdHlsZT8uanVzdGlmeUNvbnRlbnRcbiAgICAgICAgICAgIDogY29sSGVhZGVyLnR5cGUgPT09ICdudW1iZXInXG4gICAgICAgICAgICA/ICdmbGV4LWVuZCdcbiAgICAgICAgICAgIDogJ3NwYWNlLWJldHdlZW4nXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8cCAqbmdJZj1cImNvbEhlYWRlcj8udHlwZSAhPT0gJ2N1c3RvbSdcIiBjbGFzcz1cImNvbC1oZWFkZXItdGV4dFwiPlxuICAgICAgICAgIHt7IGNvbEhlYWRlcj8uZGF0YSB8fCBcIiBcIiB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImNvbEhlYWRlcj8udHlwZSA9PT0gJ2N1c3RvbSdcIiBjdXN0b21UYWJsZUNlbGwgW2N1c3RvbUNvbXBvbmVudF09XCJjb2xIZWFkZXI/LmNvbXBvbmVudFJlZlwiIFtkYXRhXT1cImNvbEhlYWRlci5kYXRhXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjb2xIZWFkZXI/LmlzU29ydGFibGVcIiBhcHBTb3J0SWNvbnNcbiAgICAgICAgICBbY29sdW1uXT1cImNvbEhlYWRlci5kYXRhXCJcbiAgICAgICAgICBbYWN0aXZlU29ydF09XCJjdXJyZW50U29ydFwiXG4gICAgICAgICAgW2FjdGl2ZVNvcnRzXT1cIm11bHRpQ29sdW1uU29ydFwiXG4gICAgICAgICAgW211bHRpQ29sdW1uU29ydF09XCJjb25maWcubXVsdGlDb2x1bW5Tb3J0XCJcbiAgICAgICAgICAoc29ydENoYW5nZSk9XCJvblNvcnRDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGlkPVwiZGF0YS1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3ctd3JhcHBlclwiICpuZ0Zvcj1cImxldCByb3cgb2YgdGFibGVEYXRhOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInQtcm93XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICd0LXJvdy1ob3Zlcic6IGNvbmZpZy5jZWxsSG92ZXIsICdhY3RpdmUtcm93JzogaSA9PT0gYWN0aXZlUm93SW5kZXggfVwiXG4gICAgICAgICAgW25nU3R5bGVdPVwieyAnbWluLWhlaWdodCc6IGNvbmZpZz8ucm93Q29uZmlnPy5oZWlnaHQgPyBjb25maWcucm93Q29uZmlnLmhlaWdodCA6ICc0NHB4JyB9XCJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Um93KGkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpZz8uY29sQ29uZmlnW2ldPy5hY3Rpb24gPyBjb25maWc/LmNvbENvbmZpZ1tpXT8uYWN0aW9uKGNvbCkgOiBudWxsXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2Ygcm93OyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgd2lkdGg6IGNvbmZpZz8uY29sQ29uZmlnW2ldPy5zdHlsZT8ud2lkdGggfHwgY29uZmlnPy5jb2xIZWFkZXJDb25maWdbaV0/LnN0eWxlPy53aWR0aCB8fCAnJ1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBjbGFzcz1cInQtY29sLWNvbnRhaW5lclwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICd0LWNvbC1jb250YWluZXItaG92ZXInOiBjb25maWcuY2VsbEhvdmVyIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0LWNvbFwiXG4gICAgICAgICAgICAgIFtzdHlsZV09XCJjb25maWcuY29sQ29uZmlnW2ldPy5zdHlsZVwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIGN1cnNvcjogY29uZmlnLmNvbENvbmZpZ1tpXT8uYWN0aW9uID8gJ3BvaW50ZXInIDogJ2RlZmF1bHQnLFxuICAgICAgICAgICAgICAgICdqdXN0aWZ5LWNvbnRlbnQnOiBjb25maWcuY29sQ29uZmlnW2ldPy5zdHlsZT8uanVzdGlmeUNvbnRlbnRcbiAgICAgICAgICAgICAgICAgID8gY29uZmlnLmNvbENvbmZpZ1tpXT8uc3R5bGU/Lmp1c3RpZnlDb250ZW50XG4gICAgICAgICAgICAgICAgICA6IGNvbmZpZy5jb2xDb25maWdbaV0/LnR5cGUgPT09ICdudW1iZXInXG4gICAgICAgICAgICAgICAgICA/ICdmbGV4LWVuZCdcbiAgICAgICAgICAgICAgICAgIDogJ3NwYWNlLWJldHdlZW4nXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmNvbENvbmZpZ1tpXT8udHlwZSAhPT0gJ2N1c3RvbSdcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiBjb25maWc/LmNvbENvbmZpZ1tpXT8uc3R5bGU/LmNvbG9yID8gY29uZmlnPy5jb2xDb25maWdbaV0/LnN0eWxlPy5jb2xvciA6ICcnXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd0ZXh0LWVsbGlwc2lzJzogISFjb25maWc/LmNvbENvbmZpZ1tpXT8uc3R5bGU/LnRleHRFbGxpcHNpc31cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidC1jb2wtdGV4dFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBjb2wgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbmZpZy5jb2xDb25maWdbaV0/LnR5cGUgPT09ICdjdXN0b20nXCJcbiAgICAgICAgICAgICAgICBbY3VzdG9tQ29tcG9uZW50XT1cImNvbmZpZy5jb2xDb25maWdbaV0uY29tcG9uZW50UmVmXCJcbiAgICAgICAgICAgICAgICBbZGF0YV09XCJjb2xcIlxuICAgICAgICAgICAgICAgIGN1c3RvbVRhYmxlQ2VsbFxuICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImNvbmZpZz8uY2FuRXhwYW5kICYmIGV4cGFuZGVkSW5kZXggPT09IGlcIiBjbGFzcz1cInN1Yi1yb3dcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3ViVGFibGVEYXRhTG9hZGluZ1wiPlxuICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgcGFkZGluZzogJzE2cHgnXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgIExvYWRpbmcuLi5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIFxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc3ViVGFibGVEYXRhTG9hZGluZyAmJiBzdWJUYWJsZURhdGEubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBwYWRkaW5nOiAnMTZweCdcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgTm8gRGF0YSBBdmFpbGFibGUuLi5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIFxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc3ViVGFibGVEYXRhTG9hZGluZyAmJiBzdWJUYWJsZURhdGEubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPHN1Yi10YWJsZSBbY29uZmlnXT1cInN1YlRhYmxlY29uZmlnXCIgW3RhYmxlRGF0YV09XCJzdWJUYWJsZURhdGFcIj48L3N1Yi10YWJsZT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICAqbmdJZj1cImNvbmZpZz8ucGFnaW5hdGlvbkNvbmZpZyAmJiAodGFibGVMZW5ndGggPj0gY29uZmlnLnBhZ2luYXRpb25Db25maWcucm93c1BlclBhZ2UgfHwgY29uZmlnLnBhZ2luYXRpb25Db25maWc/LnNlbGVjdGVkUGFnZSAhPT0gMSlcIlxuICAgIGlkPVwicGFnaW5hdGlvbi1jb250YWluZXJcIlxuICA+XG4gICAgPHAgaWQ9XCJwYWdpbmF0aW9uLXRleHRcIj5cbiAgICAgIFNob3dpbmdcbiAgICAgIHt7IChjb25maWcucGFnaW5hdGlvbkNvbmZpZz8uc2VsZWN0ZWRQYWdlIC0gMSkgKiBjb25maWcucGFnaW5hdGlvbkNvbmZpZy5yb3dzUGVyUGFnZSArIDEgfX0te3tcbiAgICAgICAgKGNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnPy5zZWxlY3RlZFBhZ2UgLSAxKSAqIGNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnLnJvd3NQZXJQYWdlICsgdGFibGVMZW5ndGhcbiAgICAgIH19XG4gICAgICBvZiB7eyBjb25maWcucGFnaW5hdGlvbkNvbmZpZy50b3RhbE5vT2ZSb3dzIH19IGl0ZW1zXG4gICAgPC9wPlxuICAgIDxkaXYgaWQ9XCJwYWdlcy1jb250YWluZXJcIj5cbiAgICAgIDxzcGFuIChjbGljayk9XCJ1cGRhdGVTZWxlY3RlZFBhZ2UoY29uZmlnLnBhZ2luYXRpb25Db25maWc/LnNlbGVjdGVkUGFnZSAtIDEpXCIgY2xhc3M9XCJwYWdlXCI+XG4gICAgICAgIDxzdmcgZmlsbD1cIm5vbmVcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgNyAxMFwiIHdpZHRoPVwiN1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICBkPVwiTTAuODU3NDA1IDUuNTYyOTVDMC44NTU3OTQgNS41NjEzOSAwLjg1NDE4OCA1LjU1OTgyIDAuODUyNTg4IDUuNTU4MjRDMC42OTU5NTUgNS40MDQwOCAwLjYxNzY0MSA1LjIwMjAzIDAuNjE3NjQ3IDQuOTk5OThDMC42MTc2NDEgNC43OTc5MyAwLjY5NTk1NSA0LjU5NTg4IDAuODUyNTg4IDQuNDQxNzJDMC44NTQxODggNC40NDAxNCAwLjg1NTc5NCA0LjQzODU4IDAuODU3NDA0IDQuNDM3MDJMNS4xMzA2NiAwLjIzMTIzMUM1LjQ0MzkyIC0wLjA3NzA3NzEgNS45NTE4IC0wLjA3NzA3NzEgNi4yNjUwNiAwLjIzMTIzMUM2LjU3ODMxIDAuNTM5NTQgNi41NzgzMSAxLjAzOTQxIDYuMjY1MDYgMS4zNDc3MkwyLjU1NDIgNC45OTk5OEw2LjI2NTA2IDguNjUyMjVDNi41NzgzMSA4Ljk2MDU1IDYuNTc4MzEgOS40NjA0MiA2LjI2NTA2IDkuNzY4NzNDNS45NTE4IDEwLjA3NyA1LjQ0MzkyIDEwLjA3NyA1LjEzMDY2IDkuNzY4NzNMMC44NTc0MDUgNS41NjI5NVpcIlxuICAgICAgICAgICAgZmlsbD1cIiMxODFGMzNcIlxuICAgICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L3NwYW4+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwYWdlTnVtYmVyIG9mIHBhZ2VzXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVNlbGVjdGVkUGFnZShwYWdlTnVtYmVyKVwiXG4gICAgICAgICAgKm5nSWY9XCJwYWdlTnVtYmVyICE9IDBcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3BhZ2UtYWN0aXZlJzogcGFnZU51bWJlciA9PSBjb25maWcucGFnaW5hdGlvbkNvbmZpZz8uc2VsZWN0ZWRQYWdlIH1cIlxuICAgICAgICAgIGNsYXNzPVwicGFnZVwiXG4gICAgICAgICAgPnt7IHBhZ2VOdW1iZXIgfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8c3BhbiAqbmdJZj1cInBhZ2VOdW1iZXIgPT0gMFwiIGNsYXNzPVwicGFnZS1zZXBlcmF0b3JcIj5cbiAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgZGlzcGxheTogJ2ZsZXgnIH1cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCIgW25nU3R5bGVdPVwieyAnbWFyZ2luLXJpZ2h0JzogJzRweCcgfVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCIgW25nU3R5bGVdPVwieyAnbWFyZ2luLXJpZ2h0JzogJzRweCcgfVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCI+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PiAgICAgICAgICBcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiAoY2xpY2spPVwidXBkYXRlU2VsZWN0ZWRQYWdlKGNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnPy5zZWxlY3RlZFBhZ2UgKyAxKVwiIGNsYXNzPVwicGFnZVwiPlxuICAgICAgICA8c3ZnIGZpbGw9XCJub25lXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDcgMTBcIiB3aWR0aD1cIjdcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgZD1cIk02LjE0MjYgNS41NjI5NUM2LjE0NDIxIDUuNTYxMzkgNi4xNDU4MSA1LjU1OTgyIDYuMTQ3NDEgNS41NTgyNEM2LjMwNDA1IDUuNDA0MDggNi4zODIzNiA1LjIwMjAzIDYuMzgyMzYgNC45OTk5OEM2LjM4MjM2IDQuNzk3OTMgNi4zMDQwNSA0LjU5NTg4IDYuMTQ3NDEgNC40NDE3MkM2LjE0NTgxIDQuNDQwMTQgNi4xNDQyMSA0LjQzODU4IDYuMTQyNiA0LjQzNzAyTDEuODY5MzQgMC4yMzEyMzFDMS41NTYwOCAtMC4wNzcwNzcxIDEuMDQ4MiAtMC4wNzcwNzcxIDAuNzM0OTQyIDAuMjMxMjMxQzAuNDIxNjg4IDAuNTM5NTQgMC40MjE2ODggMS4wMzk0MSAwLjczNDk0MiAxLjM0NzcyTDQuNDQ1OCA0Ljk5OTk4TDAuNzM0OTQxIDguNjUyMjVDMC40MjE2ODYgOC45NjA1NSAwLjQyMTY4NiA5LjQ2MDQyIDAuNzM0OTQxIDkuNzY4NzNDMS4wNDgyIDEwLjA3NyAxLjU1NjA4IDEwLjA3NyAxLjg2OTM0IDkuNzY4NzNMNi4xNDI2IDUuNTYyOTVaXCJcbiAgICAgICAgICAgIGZpbGw9XCIjMTgxRjMzXCJcbiAgICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
512
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEVBQ1QsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ1JwRCwrQ0FNQztJQUpDLHlOQUFrQixtQ0FBNEIsS0FBQztJQUloRCxpQkFBbUI7OztJQURsQixBQURBLDhEQUF5QyxrQ0FDZjs7O0lBMEJ0Qiw2QkFBZ0U7SUFDOUQsWUFDRjtJQUFBLGlCQUFJOzs7SUFERixjQUNGO0lBREUseUZBQ0Y7Ozs7SUFDQSx3RkFBc0k7OztJQUF4QixBQUE1Qyx5RkFBMkMsMkJBQXdCOzs7O0lBQ3JJLGdDQUtzQztJQUFwQyxnTUFBYywyQkFBb0IsS0FBQztJQUNyQyxpQkFBTzs7OztJQUZMLEFBREEsQUFEQSxBQURBLHFDQUFvQixrQ0FDTSx1Q0FDSyxrREFDVzs7OztJQXZCOUMsa0NBY0M7SUFaQywyUkFBNEQsSUFBSSxLQUFDO0lBaUJqRSxBQURBLEFBSEEsa0VBQWdFLG9EQUdzRSwyREFNaEc7SUFFeEMsaUJBQU07OztJQXJCSixrZEFRRTtJQUVFLGVBQWtDO0lBQWxDLHFGQUFrQztJQUd4QixjQUFrQztJQUFsQyxxRkFBa0M7SUFDekMsY0FBMkI7SUFBM0IsNEVBQTJCOzs7SUF1QzVCLDZCQU9DO0lBQ0MsWUFDRjtJQUFBLGlCQUFJOzs7Ozs7SUFKRixBQUhBLCtaQUVFLG9PQUN3RTtJ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Q0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsQyxDQUFDOytHQWhOVSxjQUFjO29FQUFkLGNBQWM7Ozs7Ozs7Ozs7WUN2QjNCLDhCQU9DO1lBQ0MseUZBTUM7WUFNQyxBQUxGLGlDQUlDLGFBSUU7WUFDQywrREFjQztZQWFILGlCQUFNO1lBQ04sOEJBQXlCO1lBQ3ZCLCtEQUFzRTtZQTZFMUUsQUFERSxpQkFBTSxFQUNGO1lBQ04saUVBR0M7WUErQ0gsaUJBQU07O1lBcExKLDRKQUlFO1lBTUMsY0FBZ0I7WUFBaEIscUNBQWdCO1lBT2pCLGNBQXVJO1lBQXZJLHdJQUF1STtZQUd2SSxlQUFvQztZQUFwQyxzREFBb0M7WUFNVixjQUEwQjtZQUExQixnRkFBMEI7WUEwQlQsZUFBYztZQUFkLHVDQUFjO1lBK0V4RCxjQUFxSTtZQUFySSxpUEFBcUk7OztpRkQ3RzdILGNBQWM7Y0FMMUIsU0FBUzsyQkFDRSxXQUFXOzBDQWVYLGNBQWM7a0JBQXZCLE1BQU07WUFJYyxNQUFNO2tCQUExQixTQUFTO21CQUFDLFFBQVE7WUFDVyxVQUFVO2tCQUF2QyxZQUFZO21CQUFDLGNBQWM7WUFLbEIsWUFBWTtrQkFBckIsTUFBTTtZQUVlLE1BQU07a0JBQTNCLEtBQUs7bUJBQUMsYUFBYTtZQUNYLGNBQWM7a0JBQXRCLEtBQUs7WUFDRyxnQkFBZ0I7a0JBQXhCLEtBQUs7WUFDRyxhQUFhO2tCQUFyQixLQUFLO1lBQ0csU0FBUztrQkFBakIsS0FBSztZQUNHLFlBQVk7a0JBQXBCLEtBQUs7WUFDRyxtQkFBbUI7a0JBQTNCLEtBQUs7WUFDYyxLQUFLO2tCQUF4QixTQUFTO21CQUFDLE9BQU87WUFLUixVQUFVO2tCQUFuQixNQUFNOztrRkFuQ0ksY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGaWx0ZXIsIFRhYmxlRmlsdGVyQ29tcG9uZW50IH0gZnJvbSBcIi4vZmlsdGVyL2ZpbHRlci5jb21wb25lbnRcIjtcbmltcG9ydCB7IFNvcnRTdGF0ZSB9IGZyb20gJy4vc29ydC1pY29ucy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgREVGQVVMVF9UQUJMRV9DT05GSUcgfSBmcm9tICcuL3RhYmxlLmNvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtdGFibGVcIixcbiAgdGVtcGxhdGVVcmw6IFwidGFibGUuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCJ0YWJsZS5jb21wb25lbnQuY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuXG4gIC8vIEluaXRpYWxpemUgd2l0aCAtMSB0byBpbmRpY2F0ZSBubyByb3cgaXMgY29sb3JlZCBhdCB0aGUgYmVnaW5uaW5nXG4gIGFjdGl2ZVJvd0luZGV4OiBudW1iZXIgPSAwOyBcblxuICAvLyBGaWx0ZXIgcmVsYXRlZCB2YXJpYWJsZXNcbiAgc2hvd0ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBmaWx0ZXJOYW1lOiBzdHJpbmcgPSBcIlwiO1xuICBmaWx0ZXJEYXRhOiBBcnJheTxGaWx0ZXI+ID0gW107XG4gIGZpbHRlckNvbnRhaW5lclN0eWxlczogYW55ID0ge307XG4gIGFwcGxpZWRGaWx0ZXJzOiB7IFtrZXk6IHN0cmluZ106IEFycmF5PHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+IH0gPSB7fTtcbiAgQE91dHB1dCgpIGZpbHRlcnNVcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgW2tleTogc3RyaW5nXTogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT47XG4gIH0+KCk7XG5cbiAgQFZpZXdDaGlsZChcImZpbHRlclwiKSBmaWx0ZXI6IFRhYmxlRmlsdGVyQ29tcG9uZW50IHwgYW55O1xuICBAVmlld0NoaWxkcmVuKFwiY29sSGVhZGVyUmVmXCIpIGNvbEhlYWRlcnM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPiB8IGFueTtcblxuICAvLyBQYWdpbmF0aW9uIHJlbGF0ZWQgdmFyaWFibGVzXG4gIHBhZ2VzOiBBcnJheTxudW1iZXI+ID0gW107XG4gIHRhYmxlTGVuZ3RoOiBudW1iZXI7XG4gIEBPdXRwdXQoKSBwYWdlU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBASW5wdXQoXCJ0YWJsZUNvbmZpZ1wiKSBjb25maWc6IFRhYmxlQ29uZmlnIHwgYW55O1xuICBASW5wdXQoKSBzdWJUYWJsZWNvbmZpZzogVGFibGVDb25maWcgfCBhbnk7XG4gIEBJbnB1dCgpIHRhYmxlRGF0YUxvYWRpbmc6IGJvb2xlYW4gfCBhbnk7XG4gIEBJbnB1dCgpIGV4cGFuZGVkSW5kZXg6IG51bWJlciB8IGFueTtcbiAgQElucHV0KCkgdGFibGVEYXRhOiBBcnJheTxBcnJheTxhbnk+PiA9IFtdO1xuICBASW5wdXQoKSBzdWJUYWJsZURhdGE6IEFycmF5PEFycmF5PGFueT4+ID0gW107XG4gIEBJbnB1dCgpIHN1YlRhYmxlRGF0YUxvYWRpbmc6IGJvb2xlYW4gfCBhbnk7XG4gIEBWaWV3Q2hpbGQoXCJ0YWJsZVwiKSB0YWJsZTogRWxlbWVudFJlZiB8IGFueTtcblxuICAvLyBTb3J0aW5nIHJlbGF0ZWQgcHJvcGVydGllc1xuICBjdXJyZW50U29ydDogU29ydFN0YXRlIHwgbnVsbCA9IG51bGw7XG4gIG11bHRpQ29sdW1uU29ydDogU29ydFN0YXRlW10gPSBbXTtcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnRTdGF0ZT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHsgfVxuXG4gIC8vIEZ1bmN0aW9uIHRvIGhhbmRsZSByb3cgY2xpY2tcbiAgc2VsZWN0Um93KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmFjdGl2ZVJvd0luZGV4ID0gaW5kZXg7IC8vIFNldCB0aGUgc2VsZWN0ZWQgaW5kZXggdG8gdGhlIGNsaWNrZWQgcm93J3MgaW5kZXhcbiAgICAhIXRoaXMuY29uZmlnLnJvd0NvbmZpZy5hY3Rpb24gJiYgdGhpcy5jb25maWcucm93Q29uZmlnLmFjdGlvbihpbmRleCk7XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gTWVyZ2UgZGVmYXVsdCBjb25maWcgd2l0aCBwcm92aWRlZCBjb25maWdcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLkRFRkFVTFRfVEFCTEVfQ09ORklHLFxuICAgICAgLi4udGhpcy5jb25maWdcbiAgICB9O1xuICAgIFxuICAgIGNvbnNvbGUubG9nKFwiVGFibGUgQ29uZmlnOlwiLCB0aGlzLmNvbmZpZyk7XG4gICAgY29uc29sZS5sb2coXCJUYWJsZSBEYXRhOlwiLCB0aGlzLnRhYmxlRGF0YSk7XG4gICAgdGhpcy50YWJsZUxlbmd0aCA9ICEhdGhpcy50YWJsZURhdGEgPyB0aGlzLnRhYmxlRGF0YS5sZW5ndGggOiAwO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUZpbHRlcnMoKTtcbiAgICBpZiAodGhpcy5jb25maWcucGFnaW5hdGlvbkNvbmZpZykge1xuICAgICAgdGhpcy5pbml0aWFsaXplUGFnaW5hdGlvbigpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb25maWcuY2FuU2Nyb2xsSG9yaXpvbnRhbGx5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY29uZmlnLmNhblNjcm9sbEhvcml6b250YWxseSA9IGZhbHNlO1xuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZXZlbnQgPT4ge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgIGxldCBpc0NoZWNrQm94Q2xpY2tlZCA9IHRydWU7XG4gICAgICAgIGxldCB0YXJnZXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxTcGFuRWxlbWVudDtcbiAgICAgICAgaWYgKHRhcmdldEVsZW1lbnQuY2xhc3NOYW1lID09PSBcImNoZWNrbWFya1wiKSB7XG4gICAgICAgICAgaXNDaGVja0JveENsaWNrZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuc2hvd0ZpbHRlciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGlzQ2xpY2tJbnNpZGVFbGVtZW50ID0gdGhpcy5maWx0ZXIuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgaWYgKCFpc0NsaWNrSW5zaWRlRWxlbWVudCAmJiAhaXNDaGVja0JveENsaWNrZWQpIHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZUZpbHRlcih0aGlzLmZpbHRlck5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnKSB7XG4gICAgICBsZXQgaGVpZ2h0ID0gdGhpcy5jb25maWcuaGVpZ2h0O1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQsIFwiaGVpZ2h0XCIsIGhlaWdodCAtIDU2ICsgXCJweFwiKTtcbiAgICB9XG4gIH1cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy50YWJsZUxlbmd0aCA9ICEhdGhpcy50YWJsZURhdGEgPyB0aGlzLnRhYmxlRGF0YS5sZW5ndGggOiAwO1xuICAgIHRoaXMuYWN0aXZlUm93SW5kZXggPSB0aGlzLmNvbmZpZy5hY3RpdmVSb3dJbmRleCB8fCAwO1xuICB9XG5cbiAgLy8gRmlsdGVyIHJlbGF0ZWQgZnVuY3Rpb25zXG4gIGluaXRpYWxpemVGaWx0ZXJzKCkge1xuICAgIGZvciAobGV0IGNvbEhlYWRlciBvZiB0aGlzLmNvbmZpZz8uY29sSGVhZGVyQ29uZmlnKSB7XG4gICAgICBpZiAoY29sSGVhZGVyLmZpbHRlcnMpIHtcbiAgICAgICAgbGV0IGZpbHRlcnMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgZmlsdGVyIG9mIGNvbEhlYWRlci5maWx0ZXJzKSB7XG4gICAgICAgICAgaWYgKGZpbHRlci5jaGVja2VkKSB7XG4gICAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiBmaWx0ZXIubmFtZSxcbiAgICAgICAgICAgICAgdmFsdWU6IGZpbHRlci52YWx1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJzLmxlbmd0aCA+IDApIHRoaXMuYXBwbGllZEZpbHRlcnNbY29sSGVhZGVyLmRhdGFdID0gZmlsdGVycztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgdG9nZ2xlRmlsdGVyKGZpbHRlck5hbWU6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5zaG93RmlsdGVyKSB7XG4gICAgICB0aGlzLmZpbHRlck5hbWUgPSBmaWx0ZXJOYW1lO1xuICAgICAgdGhpcy5zaG93RmlsdGVyID0gdHJ1ZTtcblxuICAgICAgbGV0IG9mZlNldCA9IDA7XG4gICAgICBsZXQgY29sSGVhZGVyc1JldmVyc2VkID0gdGhpcy5jb2xIZWFkZXJzLnRvQXJyYXkoKS5yZXZlcnNlKCk7XG5cbiAgICAgIGZvciAobGV0IGhlYWRlciBvZiBjb2xIZWFkZXJzUmV2ZXJzZWQpIHtcbiAgICAgICAgaWYgKGhlYWRlci5uYXRpdmVFbGVtZW50LmlubmVyVGV4dCA9PT0gZmlsdGVyTmFtZSkgYnJlYWs7XG4gICAgICAgIG9mZlNldCArPSBoZWFkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgIH1cbiAgICAgIHRoaXMuZmlsdGVyQ29udGFpbmVyU3R5bGVzID0ge1xuICAgICAgICB0b3A6IFwiNDRweFwiLFxuICAgICAgICByaWdodDogb2ZmU2V0ID4gMCA/IG9mZlNldCAtIDExNiArIFwicHhcIiA6IFwiMTJweFwiXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlck5hbWUgPSBcIlwiO1xuICAgICAgdGhpcy5maWx0ZXJEYXRhID0gW107XG4gICAgICB0aGlzLnNob3dGaWx0ZXIgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgdXBkYXRlQXBwbGllZEZpbHRlcnMoYXBwbGllZEZpbHRlcnM6IEFycmF5PHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+KSB7XG4gICAgaWYgKGFwcGxpZWRGaWx0ZXJzLmxlbmd0aCA9PSAwKSB7XG4gICAgICBkZWxldGUgdGhpcy5hcHBsaWVkRmlsdGVyc1t0aGlzLmZpbHRlck5hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFwcGxpZWRGaWx0ZXJzW3RoaXMuZmlsdGVyTmFtZV0gPSBhcHBsaWVkRmlsdGVycztcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJzVXBkYXRlZC5lbWl0KHsgLi4udGhpcy5hcHBsaWVkRmlsdGVycyB9KTtcbiAgICB0aGlzLnRvZ2dsZUZpbHRlcih0aGlzLmZpbHRlck5hbWUpO1xuICB9XG5cbiAgLy8gUGFnaW5hdGlvbiByZWxhdGVkIGZ1bmN0aW9uc1xuICBpbml0aWFsaXplUGFnaW5hdGlvbigpIHtcbiAgICBpZiAodGhpcy5jb25maWcucGFnaW5hdGlvbkNvbmZpZykge1xuICAgICAgbGV0IGxlbiA9IHRoaXMuY29uZmlnLnBhZ2luYXRpb25Db25maWcubm9PZlBhZ2VzO1xuICAgICAgaWYgKGxlbiA8PSA3KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGxlbjsgaSsrKSB7XG4gICAgICAgICAgdGhpcy5wYWdlcy5wdXNoKGkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhZ2VzID0gWzEsIDIsIDMsIDQsIDAsIGxlbl07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHVwZGF0ZVNlbGVjdGVkUGFnZShwYWdlTnVtYmVyOiBudW1iZXIpIHtcbiAgICBpZiAocGFnZU51bWJlciA8IDEgfHwgcGFnZU51bWJlciA+IHRoaXMuY29uZmlnLnBhZ2luYXRpb25Db25maWcubm9PZlBhZ2VzKSByZXR1cm47XG4gICAgdGhpcy5jb25maWcucGFnaW5hdGlvbkNvbmZpZy5zZWxlY3RlZFBhZ2UgPSBwYWdlTnVtYmVyO1xuICAgIGxldCBsZW4gPSB0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnLm5vT2ZQYWdlcztcbiAgICBpZiAobGVuID4gNykge1xuICAgICAgaWYgKHBhZ2VOdW1iZXIgLSAyIDw9IDEpIHtcbiAgICAgICAgdGhpcy5wYWdlcyA9IFsxLCAyLCAzLCA0LCAwLCBsZW5dO1xuICAgICAgfSBlbHNlIGlmIChwYWdlTnVtYmVyIC0gMiA+IDEgJiYgcGFnZU51bWJlciArIDIgPCBsZW4pIHtcbiAgICAgICAgdGhpcy5wYWdlcyA9IFsxLCAwLCBwYWdlTnVtYmVyIC0gMSwgcGFnZU51bWJlciwgcGFnZU51bWJlciArIDEsIDAsIGxlbl07XG4gICAgICB9IGVsc2UgaWYgKHBhZ2VOdW1iZXIgKyAyID49IGxlbikge1xuICAgICAgICB0aGlzLnBhZ2VzID0gWzEsIDAsIGxlbiAtIDMsIGxlbiAtIDIsIGxlbiAtIDEsIGxlbl07XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucGFnZVNlbGVjdGVkLmVtaXQodGhpcy5jb25maWcucGFnaW5hdGlvbkNvbmZpZz8uc2VsZWN0ZWRQYWdlKTtcbiAgfVxuXG4gIC8vIE1haW4gY29udGFpbmVyIHJlbGF0ZWQgZnVuY3Rpb25zXG4gIGdldENvbnRhaW5lckhlaWdodCgpIHtcbiAgICBpZiAodGhpcy5jb25maWc/LmhlaWdodCkgcmV0dXJuIHRoaXMuY29uZmlnLmhlaWdodDtcbiAgICBlbHNlIHJldHVybiBcIlwiO1xuICB9XG4gIGdldENvbnRhaW5lcldpZHRoKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZz8ud2lkdGgpIHJldHVybiB0aGlzLmNvbmZpZy53aWR0aDtcbiAgICBlbHNlIHJldHVybiBcIlwiO1xuICB9XG5cbiAgLy8gQ29sdW1uIEhlYWRlcnMgcmVsYXRlZCBmdW5jdGlvbnNcbiAgZ2V0Q29sSGVhZGVyc1Jvd1N0eWxlcygpIHtcbiAgICBjb25zdCB7IGNvbEhlYWRlcnNSb3dDb25maWcgfSA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IG1pbkhlaWdodCA9IGNvbEhlYWRlcnNSb3dDb25maWc/LmhlaWdodCB8fCBcIjQ0cHhcIjtcbiAgICBjb25zdCBib3JkZXJUb3AgPSBjb2xIZWFkZXJzUm93Q29uZmlnPy5zdHlsZT8uYm9yZGVyVG9wIHx8IFwiXCI7XG4gICAgY29uc3QgYm9yZGVyQm90dG9tID0gY29sSGVhZGVyc1Jvd0NvbmZpZz8uc3R5bGU/LmJvcmRlckJvdHRvbSB8fCBcIjFweCBzb2xpZCAjRTBFMEUwXCI7XG4gICAgY29uc3QgYmFja2dyb3VuZENvbG9yID0gY29sSGVhZGVyc1Jvd0NvbmZpZz8uc3R5bGU/LmJhY2tncm91bmRDb2xvciB8fCBcIiNGRkZGRkZcIjtcbiAgICBjb25zdCBmb250U2l6ZSA9IGNvbEhlYWRlcnNSb3dDb25maWc/LnN0eWxlPy5mb250U2l6ZSB8fCBcIjE0cHhcIjtcbiAgICByZXR1cm4ge1xuICAgICAgJ21pbi1oZWlnaHQnOiBtaW5IZWlnaHQsXG4gICAgICAnYm9yZGVyLXRvcCc6IGJvcmRlclRvcCxcbiAgICAgICdib3JkZXItYm90dG9tJzogYm9yZGVyQm90dG9tLFxuICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAnZm9udC1zaXplJzogZm9udFNpemVcbiAgICB9O1xuICB9XG5cbiAgb25Tb3J0Q2hhbmdlKHNvcnRTdGF0ZTogU29ydFN0YXRlKSB7XG4gICAgdGhpcy5jdXJyZW50U29ydCA9IHNvcnRTdGF0ZTtcbiAgICBpZiAodGhpcy5jb25maWcubXVsdGlDb2x1bW5Tb3J0KSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMubXVsdGlDb2x1bW5Tb3J0LmZpbmRJbmRleChzb3J0ID0+IHNvcnQuY29sdW1uID09PSBzb3J0U3RhdGUuY29sdW1uKTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgaWYgKHNvcnRTdGF0ZS5kaXJlY3Rpb24gPT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLm11bHRpQ29sdW1uU29ydC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubXVsdGlDb2x1bW5Tb3J0W2luZGV4XSA9IHNvcnRTdGF0ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzb3J0U3RhdGUuZGlyZWN0aW9uICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMubXVsdGlDb2x1bW5Tb3J0LnB1c2goc29ydFN0YXRlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc29sZS5sb2coXCJNdWx0aSBDb2x1bW4gU29ydDpcIiwgc29ydFN0YXRlKTtcbiAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdChzb3J0U3RhdGUpO1xuICB9XG5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbmZpZyB7XG4gIGhlaWdodDogc3RyaW5nIHwgXCIxMDAlXCI7XG4gIHdpZHRoOiBzdHJpbmcgfCBcIjEwMCVcIjtcbiAgcGFnaW5hdGlvbkNvbmZpZz86IFBhZ2luYXRpb25Db25maWcgfCB1bmRlZmluZWQgfCBudWxsO1xuICBjb2xIZWFkZXJzUm93Q29uZmlnOiBSb3dDb25maWcgfCB1bmRlZmluZWQgfCBudWxsO1xuICByb3dDb25maWc6IFJvd0NvbmZpZyB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIGNvbEhlYWRlckNvbmZpZzogQXJyYXk8Q29sSGVhZGVyQ29uZmlnPjtcbiAgY29sQ29uZmlnOiBBcnJheTxDb2xDb25maWc+O1xuICBjYW5FeHBhbmQ/OiBib29sZWFuO1xuICBjYW5TY3JvbGxIb3Jpem9udGFsbHk/OiBib29sZWFuO1xuICBjZWxsSG92ZXI/OiBib29sZWFuO1xuICBhY3RpdmVSb3dJbmRleD86IG51bWJlcjtcbiAgbXVsdGlDb2x1bW5Tb3J0PzogYm9vbGVhbjtcbiAgc29ydEFzY0ljb24/OiBzdHJpbmc7XG4gIHNvcnREZXNjSWNvbj86IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvbkNvbmZpZyB7XG4gIG5vT2ZQYWdlczogbnVtYmVyO1xuICByb3dzUGVyUGFnZTogbnVtYmVyO1xuICB0b3RhbE5vT2ZSb3dzOiBudW1iZXI7XG4gIHNlbGVjdGVkUGFnZT86IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUm93Q29uZmlnIHtcbiAgaGVpZ2h0Pzogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgc3R5bGU/OiB7fTtcbiAgYWN0aW9uPzogYW55O1xuICBpc1NvcnRhYmxlPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29sSGVhZGVyQ29uZmlnIHtcbiAgdHlwZTogXCJ0ZXh0XCIgfCBcIm51bWJlclwiIHwgXCJjdXN0b21cIjtcbiAgZGF0YTogYW55O1xuICBjb21wb25lbnRSZWY/OiBhbnk7XG4gIGZpbHRlcnM/OiBBcnJheTxGaWx0ZXI+IHwgbnVsbDtcbiAgc3R5bGU/OiB7fTtcbiAgYWN0aW9uPzogYW55O1xuICBpc1NvcnRhYmxlPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29sQ29uZmlnIHtcbiAgdHlwZTogXCJ0ZXh0XCIgfCBcIm51bWJlclwiIHwgXCJjdXN0b21cIjtcbiAgY29tcG9uZW50UmVmPzogYW55O1xuICBzdHlsZT86IHt9O1xuICBhY3Rpb24/OiBhbnk7XG59XG4iLCI8ZGl2XG4gIFtuZ1N0eWxlXT1cIntcbiAgICBoZWlnaHQ6IGdldENvbnRhaW5lckhlaWdodCgpLFxuICAgIHdpZHRoOiBnZXRDb250YWluZXJXaWR0aCgpLFxuICAgICdvdmVyZmxvdy14JzogY29uZmlnLmNhblNjcm9sbEhvcml6b250YWxseSA/ICdhdXRvJyA6ICd1bnNldCdcbiAgfVwiXG4gIGlkPVwibWFpbi1jb250YWluZXJcIlxuPlxuICA8bWlzLXRhYmxlLWZpbHRlclxuICAgICNmaWx0ZXJcbiAgICAoZmlsdGVyc0FwcGxpZWQpPVwidXBkYXRlQXBwbGllZEZpbHRlcnMoJGV2ZW50KVwiXG4gICAgKm5nSWY9XCJzaG93RmlsdGVyXCJcbiAgICBbY29udGFpbmVyU3R5bGVzXT1cImZpbHRlckNvbnRhaW5lclN0eWxlc1wiXG4gICAgW2ZpbHRlcnNEYXRhXT1cImZpbHRlckRhdGFcIlxuICA+PC9taXMtdGFibGUtZmlsdGVyPlxuICA8ZGl2XG4gICAgI3RhYmxlXG4gICAgaWQ9XCJ0YWJsZS1jb250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ25vLXNjcm9sbGJhcic6IGV4cGFuZGVkSW5kZXggPCAwLCBzY3JvbGxiYXI6ICEoZXhwYW5kZWRJbmRleCA8IDApLCAnc2Nyb2xsLWhvcml6b250YWxseSc6IGNvbmZpZy5jYW5TY3JvbGxIb3Jpem9udGFsbHkgfVwiXG4gID5cbiAgICA8ZGl2XG4gICAgW25nU3R5bGVdPVwiZ2V0Q29sSGVhZGVyc1Jvd1N0eWxlcygpXCJcbiAgICAgIGlkPVwiY29sLWhlYWRlcnMtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgICNjb2xIZWFkZXJSZWZcbiAgICAgICAgKGNsaWNrKT1cImNvbEhlYWRlcj8uYWN0aW9uID8gY29sSGVhZGVyPy5hY3Rpb24oY29sSGVhZGVyKSA6IG51bGxcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgY29sSGVhZGVyIG9mIGNvbmZpZz8uY29sSGVhZGVyQ29uZmlnXCJcbiAgICAgICAgY2xhc3M9XCJjb2wtaGVhZGVyXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgIHdpZHRoOiBjb2xIZWFkZXI/LnN0eWxlPy53aWR0aCB8fCAnJyxcbiAgICAgICAgICBjdXJzb3I6IGNvbEhlYWRlci5hY3Rpb24gPyAncG9pbnRlcicgOiAnZGVmYXVsdCcsXG4gICAgICAgICAgJ2p1c3RpZnktY29udGVudCc6IGNvbEhlYWRlcj8uc3R5bGU/Lmp1c3RpZnlDb250ZW50XG4gICAgICAgICAgICA/IGNvbEhlYWRlcj8uc3R5bGU/Lmp1c3RpZnlDb250ZW50XG4gICAgICAgICAgICA6IGNvbEhlYWRlci50eXBlID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgPyAnZmxleC1lbmQnXG4gICAgICAgICAgICA6ICdzcGFjZS1iZXR3ZWVuJ1xuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPHAgKm5nSWY9XCJjb2xIZWFkZXI/LnR5cGUgIT09ICdjdXN0b20nXCIgY2xhc3M9XCJjb2wtaGVhZGVyLXRleHRcIj5cbiAgICAgICAgICB7eyBjb2xIZWFkZXI/LmRhdGEgfHwgXCIgXCIgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJjb2xIZWFkZXI/LnR5cGUgPT09ICdjdXN0b20nXCIgY3VzdG9tVGFibGVDZWxsIFtjdXN0b21Db21wb25lbnRdPVwiY29sSGVhZGVyPy5jb21wb25lbnRSZWZcIiBbZGF0YV09XCJjb2xIZWFkZXIuZGF0YVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiY29sSGVhZGVyPy5pc1NvcnRhYmxlXCIgYXBwU29ydEljb25zXG4gICAgICAgICAgW2NvbHVtbl09XCJjb2xIZWFkZXJcIlxuICAgICAgICAgIFthY3RpdmVTb3J0XT1cImN1cnJlbnRTb3J0XCJcbiAgICAgICAgICBbYWN0aXZlU29ydHNdPVwibXVsdGlDb2x1bW5Tb3J0XCJcbiAgICAgICAgICBbbXVsdGlDb2x1bW5Tb3J0XT1cImNvbmZpZy5tdWx0aUNvbHVtblNvcnRcIlxuICAgICAgICAgIChzb3J0Q2hhbmdlKT1cIm9uU29ydENoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgaWQ9XCJkYXRhLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdy13cmFwcGVyXCIgKm5nRm9yPVwibGV0IHJvdyBvZiB0YWJsZURhdGE7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidC1yb3dcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3Qtcm93LWhvdmVyJzogY29uZmlnLmNlbGxIb3ZlciwgJ2FjdGl2ZS1yb3cnOiBpID09PSBhY3RpdmVSb3dJbmRleCB9XCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdtaW4taGVpZ2h0JzogY29uZmlnPy5yb3dDb25maWc/LmhlaWdodCA/IGNvbmZpZy5yb3dDb25maWcuaGVpZ2h0IDogJzQ0cHgnIH1cIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RSb3coaSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAoY2xpY2spPVwiY29uZmlnPy5jb2xDb25maWdbaV0/LmFjdGlvbiA/IGNvbmZpZz8uY29sQ29uZmlnW2ldPy5hY3Rpb24oY29sKSA6IG51bGxcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiByb3c7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICB3aWR0aDogY29uZmlnPy5jb2xDb25maWdbaV0/LnN0eWxlPy53aWR0aCB8fCBjb25maWc/LmNvbEhlYWRlckNvbmZpZ1tpXT8uc3R5bGU/LndpZHRoIHx8ICcnXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIGNsYXNzPVwidC1jb2wtY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3QtY29sLWNvbnRhaW5lci1ob3Zlcic6IGNvbmZpZy5jZWxsSG92ZXIgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInQtY29sXCJcbiAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbmZpZy5jb2xDb25maWdbaV0/LnN0eWxlXCJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgY3Vyc29yOiBjb25maWcuY29sQ29uZmlnW2ldPy5hY3Rpb24gPyAncG9pbnRlcicgOiAnZGVmYXVsdCcsXG4gICAgICAgICAgICAgICAgJ2p1c3RpZnktY29udGVudCc6IGNvbmZpZy5jb2xDb25maWdbaV0/LnN0eWxlPy5qdXN0aWZ5Q29udGVudFxuICAgICAgICAgICAgICAgICAgPyBjb25maWcuY29sQ29uZmlnW2ldPy5zdHlsZT8uanVzdGlmeUNvbnRlbnRcbiAgICAgICAgICAgICAgICAgIDogY29uZmlnLmNvbENvbmZpZ1tpXT8udHlwZSA9PT0gJ251bWJlcidcbiAgICAgICAgICAgICAgICAgID8gJ2ZsZXgtZW5kJ1xuICAgICAgICAgICAgICAgICAgOiAnc3BhY2UtYmV0d2VlbidcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWcuY29sQ29uZmlnW2ldPy50eXBlICE9PSAnY3VzdG9tJ1wiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgY29sb3I6IGNvbmZpZz8uY29sQ29uZmlnW2ldPy5zdHlsZT8uY29sb3IgPyBjb25maWc/LmNvbENvbmZpZ1tpXT8uc3R5bGU/LmNvbG9yIDogJydcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3RleHQtZWxsaXBzaXMnOiAhIWNvbmZpZz8uY29sQ29uZmlnW2ldPy5zdHlsZT8udGV4dEVsbGlwc2lzfVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWNvbC10ZXh0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGNvbCB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmNvbENvbmZpZ1tpXT8udHlwZSA9PT0gJ2N1c3RvbSdcIlxuICAgICAgICAgICAgICAgIFtjdXN0b21Db21wb25lbnRdPVwiY29uZmlnLmNvbENvbmZpZ1tpXS5jb21wb25lbnRSZWZcIlxuICAgICAgICAgICAgICAgIFtkYXRhXT1cImNvbFwiXG4gICAgICAgICAgICAgICAgY3VzdG9tVGFibGVDZWxsXG4gICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnPy5jYW5FeHBhbmQgJiYgZXhwYW5kZWRJbmRleCA9PT0gaVwiIGNsYXNzPVwic3ViLXJvd1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdWJUYWJsZURhdGFMb2FkaW5nXCI+XG4gICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBwYWRkaW5nOiAnMTZweCdcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgTG9hZGluZy4uLlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzdWJUYWJsZURhdGFMb2FkaW5nICYmIHN1YlRhYmxlRGF0YS5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIHBhZGRpbmc6ICcxNnB4J1xuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICBObyBEYXRhIEF2YWlsYWJsZS4uLlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzdWJUYWJsZURhdGFMb2FkaW5nICYmIHN1YlRhYmxlRGF0YS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICA8c3ViLXRhYmxlIFtjb25maWddPVwic3ViVGFibGVjb25maWdcIiBbdGFibGVEYXRhXT1cInN1YlRhYmxlRGF0YVwiPjwvc3ViLXRhYmxlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwiY29uZmlnPy5wYWdpbmF0aW9uQ29uZmlnICYmICh0YWJsZUxlbmd0aCA+PSBjb25maWcucGFnaW5hdGlvbkNvbmZpZy5yb3dzUGVyUGFnZSB8fCBjb25maWcucGFnaW5hdGlvbkNvbmZpZz8uc2VsZWN0ZWRQYWdlICE9PSAxKVwiXG4gICAgaWQ9XCJwYWdpbmF0aW9uLWNvbnRhaW5lclwiXG4gID5cbiAgICA8cCBpZD1cInBhZ2luYXRpb24tdGV4dFwiPlxuICAgICAgU2hvd2luZ1xuICAgICAge3sgKGNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnPy5zZWxlY3RlZFBhZ2UgLSAxKSAqIGNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnLnJvd3NQZXJQYWdlICsgMSB9fS17e1xuICAgICAgICAoY29uZmlnLnBhZ2luYXRpb25Db25maWc/LnNlbGVjdGVkUGFnZSAtIDEpICogY29uZmlnLnBhZ2luYXRpb25Db25maWcucm93c1BlclBhZ2UgKyB0YWJsZUxlbmd0aFxuICAgICAgfX1cbiAgICAgIG9mIHt7IGNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsTm9PZlJvd3MgfX0gaXRlbXNcbiAgICA8L3A+XG4gICAgPGRpdiBpZD1cInBhZ2VzLWNvbnRhaW5lclwiPlxuICAgICAgPHNwYW4gKGNsaWNrKT1cInVwZGF0ZVNlbGVjdGVkUGFnZShjb25maWcucGFnaW5hdGlvbkNvbmZpZz8uc2VsZWN0ZWRQYWdlIC0gMSlcIiBjbGFzcz1cInBhZ2VcIj5cbiAgICAgICAgPHN2ZyBmaWxsPVwibm9uZVwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCA3IDEwXCIgd2lkdGg9XCI3XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgIGQ9XCJNMC44NTc0MDUgNS41NjI5NUMwLjg1NTc5NCA1LjU2MTM5IDAuODU0MTg4IDUuNTU5ODIgMC44NTI1ODggNS41NTgyNEMwLjY5NTk1NSA1LjQwNDA4IDAuNjE3NjQxIDUuMjAyMDMgMC42MTc2NDcgNC45OTk5OEMwLjYxNzY0MSA0Ljc5NzkzIDAuNjk1OTU1IDQuNTk1ODggMC44NTI1ODggNC40NDE3MkMwLjg1NDE4OCA0LjQ0MDE0IDAuODU1Nzk0IDQuNDM4NTggMC44NTc0MDQgNC40MzcwMkw1LjEzMDY2IDAuMjMxMjMxQzUuNDQzOTIgLTAuMDc3MDc3MSA1Ljk1MTggLTAuMDc3MDc3MSA2LjI2NTA2IDAuMjMxMjMxQzYuNTc4MzEgMC41Mzk1NCA2LjU3ODMxIDEuMDM5NDEgNi4yNjUwNiAxLjM0NzcyTDIuNTU0MiA0Ljk5OTk4TDYuMjY1MDYgOC42NTIyNUM2LjU3ODMxIDguOTYwNTUgNi41NzgzMSA5LjQ2MDQyIDYuMjY1MDYgOS43Njg3M0M1Ljk1MTggMTAuMDc3IDUuNDQzOTIgMTAuMDc3IDUuMTMwNjYgOS43Njg3M0wwLjg1NzQwNSA1LjU2Mjk1WlwiXG4gICAgICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHBhZ2VOdW1iZXIgb2YgcGFnZXNcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAoY2xpY2spPVwidXBkYXRlU2VsZWN0ZWRQYWdlKHBhZ2VOdW1iZXIpXCJcbiAgICAgICAgICAqbmdJZj1cInBhZ2VOdW1iZXIgIT0gMFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAncGFnZS1hY3RpdmUnOiBwYWdlTnVtYmVyID09IGNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnPy5zZWxlY3RlZFBhZ2UgfVwiXG4gICAgICAgICAgY2xhc3M9XCJwYWdlXCJcbiAgICAgICAgICA+e3sgcGFnZU51bWJlciB9fTwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwicGFnZU51bWJlciA9PSAwXCIgY2xhc3M9XCJwYWdlLXNlcGVyYXRvclwiPlxuICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwieyBkaXNwbGF5OiAnZmxleCcgfVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIiBbbmdTdHlsZV09XCJ7ICdtYXJnaW4tcmlnaHQnOiAnNHB4JyB9XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIiBbbmdTdHlsZV09XCJ7ICdtYXJnaW4tcmlnaHQnOiAnNHB4JyB9XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+ICAgICAgICAgIFxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuIChjbGljayk9XCJ1cGRhdGVTZWxlY3RlZFBhZ2UoY29uZmlnLnBhZ2luYXRpb25Db25maWc/LnNlbGVjdGVkUGFnZSArIDEpXCIgY2xhc3M9XCJwYWdlXCI+XG4gICAgICAgIDxzdmcgZmlsbD1cIm5vbmVcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgNyAxMFwiIHdpZHRoPVwiN1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICBkPVwiTTYuMTQyNiA1LjU2Mjk1QzYuMTQ0MjEgNS41NjEzOSA2LjE0NTgxIDUuNTU5ODIgNi4xNDc0MSA1LjU1ODI0QzYuMzA0MDUgNS40MDQwOCA2LjM4MjM2IDUuMjAyMDMgNi4zODIzNiA0Ljk5OTk4QzYuMzgyMzYgNC43OTc5MyA2LjMwNDA1IDQuNTk1ODggNi4xNDc0MSA0LjQ0MTcyQzYuMTQ1ODEgNC40NDAxNCA2LjE0NDIxIDQuNDM4NTggNi4xNDI2IDQuNDM3MDJMMS44NjkzNCAwLjIzMTIzMUMxLjU1NjA4IC0wLjA3NzA3NzEgMS4wNDgyIC0wLjA3NzA3NzEgMC43MzQ5NDIgMC4yMzEyMzFDMC40MjE2ODggMC41Mzk1NCAwLjQyMTY4OCAxLjAzOTQxIDAuNzM0OTQyIDEuMzQ3NzJMNC40NDU4IDQuOTk5OThMMC43MzQ5NDEgOC42NTIyNUMwLjQyMTY4NiA4Ljk2MDU1IDAuNDIxNjg2IDkuNDYwNDIgMC43MzQ5NDEgOS43Njg3M0MxLjA0ODIgMTAuMDc3IDEuNTU2MDggMTAuMDc3IDEuODY5MzQgOS43Njg3M0w2LjE0MjYgNS41NjI5NVpcIlxuICAgICAgICAgICAgZmlsbD1cIiMxODFGMzNcIlxuICAgICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -418,7 +418,7 @@ class SortIconsDirective {
418
418
  this.el = el;
419
419
  this.renderer = renderer;
420
420
  // Convert inputs to signals
421
- this.column = input('');
421
+ this.column = input();
422
422
  this.activeSort = input();
423
423
  this.activeSorts = input();
424
424
  this.multiColumnSort = input(false);
@@ -428,9 +428,6 @@ class SortIconsDirective {
428
428
  // Internal state as signals
429
429
  this.currentDirection = signal('');
430
430
  this.columnNumber = signal(0);
431
- // Assets
432
- this.SORT_ASCENDING = 'assets/sort-asc.svg';
433
- this.SORT_DESCENDING = 'assets/sort-desc.svg';
434
431
  }
435
432
  ngOnInit() {
436
433
  // Get column number from data-column attribute
@@ -449,14 +446,14 @@ class SortIconsDirective {
449
446
  this.renderer?.setStyle(iconContainer, 'align-items', 'center');
450
447
  this.renderer?.setStyle(iconContainer, 'gap', '5px');
451
448
  this.upIcon = this.renderer.createElement('img');
452
- this.renderer?.setAttribute(this.upIcon, 'src', this.SORT_ASCENDING);
449
+ this.renderer?.setAttribute(this.upIcon, 'src', this.column()?.sortAscIcon);
453
450
  this.renderer?.setStyle(this.upIcon, 'opacity', '0.5');
454
451
  this.renderer?.setStyle(this.upIcon, 'transition', 'opacity 0.3s ease');
455
452
  this.renderer?.setStyle(this.upIcon, 'width', '9px');
456
453
  this.renderer?.setStyle(this.upIcon, 'cursor', 'pointer');
457
454
  this.renderer?.listen(this.upIcon, 'click', () => this.setSortDirection('ASC'));
458
455
  this.downIcon = this.renderer.createElement('img');
459
- this.renderer?.setAttribute(this.downIcon, 'src', this.SORT_DESCENDING);
456
+ this.renderer?.setAttribute(this.downIcon, 'src', this.column()?.sortDescIcon);
460
457
  this.renderer?.setStyle(this.downIcon, 'opacity', '0.5');
461
458
  this.renderer?.setStyle(this.downIcon, 'transition', 'opacity 0.3s ease');
462
459
  this.renderer?.setStyle(this.downIcon, 'width', '9px');
@@ -496,14 +493,14 @@ class SortIconsDirective {
496
493
  this.currentDirection.set(direction);
497
494
  }
498
495
  this.sortChange.emit({
499
- column: this.column(),
496
+ column: this.column()?.data || '',
500
497
  direction: this.currentDirection(),
501
498
  columnNumber: this.columnNumber()
502
499
  });
503
500
  this.updateIconStyles();
504
501
  }
505
502
  handleMultiColumnSort(direction) {
506
- const existingSortIndex = this.activeSorts().findIndex(sort => sort.column === this.column());
503
+ const existingSortIndex = this.activeSorts().findIndex(sort => sort.column === this.column()?.data);
507
504
  if (existingSortIndex !== -1) {
508
505
  if (this.activeSorts()[existingSortIndex].direction !== direction) {
509
506
  this.activeSorts()[existingSortIndex].direction = direction;
@@ -515,7 +512,7 @@ class SortIconsDirective {
515
512
  }
516
513
  else {
517
514
  this.activeSorts().push({
518
- column: this.column(),
515
+ column: this.column()?.data || '',
519
516
  direction,
520
517
  columnNumber: this.columnNumber()
521
518
  });
@@ -524,6 +521,7 @@ class SortIconsDirective {
524
521
  this.updateIconStyles();
525
522
  }
526
523
  updateIconStyles() {
524
+ console.log("Col", this.column()?.data);
527
525
  if (this.multiColumnSort()) {
528
526
  this.updateMultiColumnIconStyles();
529
527
  }
@@ -532,19 +530,19 @@ class SortIconsDirective {
532
530
  }
533
531
  }
534
532
  updateSingleColumnIconStyles() {
535
- const isActiveColumn = this.activeSort()?.column === this.column();
533
+ const isActiveColumn = this.activeSort()?.column === this.column()?.data;
536
534
  setTimeout(() => {
537
535
  this.renderer?.setStyle(this.upIcon, 'opacity', isActiveColumn && this.currentDirection() === 'ASC' ? '1' : '0.5');
538
536
  this.renderer?.setStyle(this.downIcon, 'opacity', isActiveColumn && this.currentDirection() === 'DESC' ? '1' : '0.5');
539
537
  }, 0);
540
538
  }
541
539
  updateMultiColumnIconStyles() {
542
- const columnSort = this.activeSorts().find(sort => sort.column === this.column());
540
+ const columnSort = this.activeSorts().find(sort => sort.column === this.column()?.data);
543
541
  setTimeout(() => {
544
542
  this.renderer?.setStyle(this.upIcon, 'opacity', columnSort?.direction === 'ASC' ? '1' : '0.5');
545
543
  this.renderer?.setStyle(this.downIcon, 'opacity', columnSort?.direction === 'DESC' ? '1' : '0.5');
546
544
  if (this.sortOrderElement) {
547
- const sortIndex = this.activeSorts().findIndex(sort => sort.column === this.column());
545
+ const sortIndex = this.activeSorts().findIndex(sort => sort.column === this.column()?.data);
548
546
  if (sortIndex !== -1) {
549
547
  this.renderer?.setProperty(this.sortOrderElement, 'textContent', (sortIndex + 1).toString());
550
548
  }
@@ -614,7 +612,7 @@ function TableComponent_div_5_span_4_Template(rf, ctx) { if (rf & 1) {
614
612
  } if (rf & 2) {
615
613
  const colHeader_r4 = i0.ɵɵnextContext().$implicit;
616
614
  const ctx_r1 = i0.ɵɵnextContext();
617
- i0.ɵɵproperty("column", colHeader_r4.data)("activeSort", ctx_r1.currentSort)("activeSorts", ctx_r1.multiColumnSort)("multiColumnSort", ctx_r1.config.multiColumnSort);
615
+ i0.ɵɵproperty("column", colHeader_r4)("activeSort", ctx_r1.currentSort)("activeSorts", ctx_r1.multiColumnSort)("multiColumnSort", ctx_r1.config.multiColumnSort);
618
616
  } }
619
617
  function TableComponent_div_5_Template(rf, ctx) { if (rf & 1) {
620
618
  const _r3 = i0.ɵɵgetCurrentView();
@@ -1005,7 +1003,7 @@ class TableComponent {
1005
1003
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filter = _t.first);
1006
1004
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.table = _t.first);
1007
1005
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.colHeaders = _t);
1008
- } }, inputs: { config: [0, "tableConfig", "config"], subTableconfig: "subTableconfig", tableDataLoading: "tableDataLoading", expandedIndex: "expandedIndex", tableData: "tableData", subTableData: "subTableData", subTableDataLoading: "subTableDataLoading" }, outputs: { filtersUpdated: "filtersUpdated", pageSelected: "pageSelected", sortChange: "sortChange" }, features: [i0.ɵɵNgOnChangesFeature], decls: 9, vars: 15, consts: [["table", ""], ["filter", ""], ["colHeaderRef", ""], ["id", "main-container", 3, "ngStyle"], [3, "containerStyles", "filtersData", "filtersApplied", 4, "ngIf"], ["id", "table-container", 3, "ngClass"], ["id", "col-headers-container", 3, "ngStyle"], ["style", "border: 1px solid red;", "class", "col-header", 3, "ngStyle", "click", 4, "ngFor", "ngForOf"], ["id", "data-container"], ["class", "row-wrapper", 4, "ngFor", "ngForOf"], ["id", "pagination-container", 4, "ngIf"], [3, "filtersApplied", "containerStyles", "filtersData"], [1, "col-header", 2, "border", "1px solid red", 3, "click", "ngStyle"], ["class", "col-header-text", 4, "ngIf"], [4, "ngIf"], ["appSortIcons", "", 3, "column", "activeSort", "activeSorts", "multiColumnSort", "sortChange", 4, "ngIf"], [1, "col-header-text"], ["customTableCell", "", 3, "customComponent", "data"], ["appSortIcons", "", 3, "sortChange", "column", "activeSort", "activeSorts", "multiColumnSort"], [1, "row-wrapper"], [1, "t-row", 3, "click", "ngClass", "ngStyle"], ["class", "t-col-container", 3, "ngStyle", "ngClass", "click", 4, "ngFor", "ngForOf"], ["class", "sub-row", 4, "ngIf"], [1, "t-col-container", 3, "click", "ngStyle", "ngClass"], [1, "t-col", 3, "ngStyle"], ["class", "t-col-text", 3, "ngStyle", "ngClass", 4, "ngIf"], [1, "t-col-text", 3, "ngStyle", "ngClass"], [1, "sub-row"], [3, "ngStyle"], [3, "config", "tableData"], ["id", "pagination-container"], ["id", "pagination-text"], ["id", "pages-container"], [1, "page", 3, "click"], ["fill", "none", "height", "10", "viewBox", "0 0 7 10", "width", "7", "xmlns", "http://www.w3.org/2000/svg"], ["clip-rule", "evenodd", "d", "M0.857405 5.56295C0.855794 5.56139 0.854188 5.55982 0.852588 5.55824C0.695955 5.40408 0.617641 5.20203 0.617647 4.99998C0.617641 4.79793 0.695955 4.59588 0.852588 4.44172C0.854188 4.44014 0.855794 4.43858 0.857404 4.43702L5.13066 0.231231C5.44392 -0.0770771 5.9518 -0.0770771 6.26506 0.231231C6.57831 0.53954 6.57831 1.03941 6.26506 1.34772L2.5542 4.99998L6.26506 8.65225C6.57831 8.96055 6.57831 9.46042 6.26506 9.76873C5.9518 10.077 5.44392 10.077 5.13066 9.76873L0.857405 5.56295Z", "fill", "#181F33", "fill-rule", "evenodd"], [4, "ngFor", "ngForOf"], ["clip-rule", "evenodd", "d", "M6.1426 5.56295C6.14421 5.56139 6.14581 5.55982 6.14741 5.55824C6.30405 5.40408 6.38236 5.20203 6.38236 4.99998C6.38236 4.79793 6.30405 4.59588 6.14741 4.44172C6.14581 4.44014 6.14421 4.43858 6.1426 4.43702L1.86934 0.231231C1.55608 -0.0770771 1.0482 -0.0770771 0.734942 0.231231C0.421688 0.53954 0.421688 1.03941 0.734942 1.34772L4.4458 4.99998L0.734941 8.65225C0.421686 8.96055 0.421686 9.46042 0.734941 9.76873C1.0482 10.077 1.55608 10.077 1.86934 9.76873L6.1426 5.56295Z", "fill", "#181F33", "fill-rule", "evenodd"], ["class", "page", 3, "ngClass", "click", 4, "ngIf"], ["class", "page-seperator", 4, "ngIf"], [1, "page", 3, "click", "ngClass"], [1, "page-seperator"], [1, "dot", 3, "ngStyle"], [1, "dot"]], template: function TableComponent_Template(rf, ctx) { if (rf & 1) {
1006
+ } }, inputs: { config: [0, "tableConfig", "config"], subTableconfig: "subTableconfig", tableDataLoading: "tableDataLoading", expandedIndex: "expandedIndex", tableData: "tableData", subTableData: "subTableData", subTableDataLoading: "subTableDataLoading" }, outputs: { filtersUpdated: "filtersUpdated", pageSelected: "pageSelected", sortChange: "sortChange" }, features: [i0.ɵɵNgOnChangesFeature], decls: 9, vars: 15, consts: [["table", ""], ["filter", ""], ["colHeaderRef", ""], ["id", "main-container", 3, "ngStyle"], [3, "containerStyles", "filtersData", "filtersApplied", 4, "ngIf"], ["id", "table-container", 3, "ngClass"], ["id", "col-headers-container", 3, "ngStyle"], ["class", "col-header", 3, "ngStyle", "click", 4, "ngFor", "ngForOf"], ["id", "data-container"], ["class", "row-wrapper", 4, "ngFor", "ngForOf"], ["id", "pagination-container", 4, "ngIf"], [3, "filtersApplied", "containerStyles", "filtersData"], [1, "col-header", 3, "click", "ngStyle"], ["class", "col-header-text", 4, "ngIf"], [4, "ngIf"], ["appSortIcons", "", 3, "column", "activeSort", "activeSorts", "multiColumnSort", "sortChange", 4, "ngIf"], [1, "col-header-text"], ["customTableCell", "", 3, "customComponent", "data"], ["appSortIcons", "", 3, "sortChange", "column", "activeSort", "activeSorts", "multiColumnSort"], [1, "row-wrapper"], [1, "t-row", 3, "click", "ngClass", "ngStyle"], ["class", "t-col-container", 3, "ngStyle", "ngClass", "click", 4, "ngFor", "ngForOf"], ["class", "sub-row", 4, "ngIf"], [1, "t-col-container", 3, "click", "ngStyle", "ngClass"], [1, "t-col", 3, "ngStyle"], ["class", "t-col-text", 3, "ngStyle", "ngClass", 4, "ngIf"], [1, "t-col-text", 3, "ngStyle", "ngClass"], [1, "sub-row"], [3, "ngStyle"], [3, "config", "tableData"], ["id", "pagination-container"], ["id", "pagination-text"], ["id", "pages-container"], [1, "page", 3, "click"], ["fill", "none", "height", "10", "viewBox", "0 0 7 10", "width", "7", "xmlns", "http://www.w3.org/2000/svg"], ["clip-rule", "evenodd", "d", "M0.857405 5.56295C0.855794 5.56139 0.854188 5.55982 0.852588 5.55824C0.695955 5.40408 0.617641 5.20203 0.617647 4.99998C0.617641 4.79793 0.695955 4.59588 0.852588 4.44172C0.854188 4.44014 0.855794 4.43858 0.857404 4.43702L5.13066 0.231231C5.44392 -0.0770771 5.9518 -0.0770771 6.26506 0.231231C6.57831 0.53954 6.57831 1.03941 6.26506 1.34772L2.5542 4.99998L6.26506 8.65225C6.57831 8.96055 6.57831 9.46042 6.26506 9.76873C5.9518 10.077 5.44392 10.077 5.13066 9.76873L0.857405 5.56295Z", "fill", "#181F33", "fill-rule", "evenodd"], [4, "ngFor", "ngForOf"], ["clip-rule", "evenodd", "d", "M6.1426 5.56295C6.14421 5.56139 6.14581 5.55982 6.14741 5.55824C6.30405 5.40408 6.38236 5.20203 6.38236 4.99998C6.38236 4.79793 6.30405 4.59588 6.14741 4.44172C6.14581 4.44014 6.14421 4.43858 6.1426 4.43702L1.86934 0.231231C1.55608 -0.0770771 1.0482 -0.0770771 0.734942 0.231231C0.421688 0.53954 0.421688 1.03941 0.734942 1.34772L4.4458 4.99998L0.734941 8.65225C0.421686 8.96055 0.421686 9.46042 0.734941 9.76873C1.0482 10.077 1.55608 10.077 1.86934 9.76873L6.1426 5.56295Z", "fill", "#181F33", "fill-rule", "evenodd"], ["class", "page", 3, "ngClass", "click", 4, "ngIf"], ["class", "page-seperator", 4, "ngIf"], [1, "page", 3, "click", "ngClass"], [1, "page-seperator"], [1, "dot", 3, "ngStyle"], [1, "dot"]], template: function TableComponent_Template(rf, ctx) { if (rf & 1) {
1009
1007
  i0.ɵɵelementStart(0, "div", 3);
1010
1008
  i0.ɵɵtemplate(1, TableComponent_mis_table_filter_1_Template, 2, 2, "mis-table-filter", 4);
1011
1009
  i0.ɵɵelementStart(2, "div", 5, 0)(4, "div", 6);
@@ -1034,7 +1032,7 @@ class TableComponent {
1034
1032
  }
1035
1033
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TableComponent, [{
1036
1034
  type: Component,
1037
- args: [{ selector: "mis-table", template: "<div\n [ngStyle]=\"{\n height: getContainerHeight(),\n width: getContainerWidth(),\n 'overflow-x': config.canScrollHorizontally ? 'auto' : 'unset'\n }\"\n id=\"main-container\"\n>\n <mis-table-filter\n #filter\n (filtersApplied)=\"updateAppliedFilters($event)\"\n *ngIf=\"showFilter\"\n [containerStyles]=\"filterContainerStyles\"\n [filtersData]=\"filterData\"\n ></mis-table-filter>\n <div\n #table\n id=\"table-container\"\n [ngClass]=\"{ 'no-scrollbar': expandedIndex < 0, scrollbar: !(expandedIndex < 0), 'scroll-horizontally': config.canScrollHorizontally }\"\n >\n <div\n [ngStyle]=\"getColHeadersRowStyles()\"\n id=\"col-headers-container\"\n >\n <div\n style=\"border: 1px solid red;\"\n\n #colHeaderRef\n (click)=\"colHeader?.action ? colHeader?.action(colHeader) : null\"\n *ngFor=\"let colHeader of config?.colHeaderConfig\"\n class=\"col-header\"\n [ngStyle]=\"{\n width: colHeader?.style?.width || '',\n cursor: colHeader.action ? 'pointer' : 'default',\n 'justify-content': colHeader?.style?.justifyContent\n ? colHeader?.style?.justifyContent\n : colHeader.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p *ngIf=\"colHeader?.type !== 'custom'\" class=\"col-header-text\">\n {{ colHeader?.data || \" \" }}\n </p>\n <ng-template *ngIf=\"colHeader?.type === 'custom'\" customTableCell [customComponent]=\"colHeader?.componentRef\" [data]=\"colHeader.data\"></ng-template>\n <span *ngIf=\"colHeader?.isSortable\" appSortIcons\n [column]=\"colHeader.data\"\n [activeSort]=\"currentSort\"\n [activeSorts]=\"multiColumnSort\"\n [multiColumnSort]=\"config.multiColumnSort\"\n (sortChange)=\"onSortChange($event)\">\n </span>\n </div>\n </div>\n <div id=\"data-container\">\n <div class=\"row-wrapper\" *ngFor=\"let row of tableData; let i = index\">\n <div\n class=\"t-row\"\n [ngClass]=\"{ 't-row-hover': config.cellHover, 'active-row': i === activeRowIndex }\"\n [ngStyle]=\"{ 'min-height': config?.rowConfig?.height ? config.rowConfig.height : '44px' }\"\n (click)=\"selectRow(i)\"\n >\n <div\n (click)=\"config?.colConfig[i]?.action ? config?.colConfig[i]?.action(col) : null\"\n *ngFor=\"let col of row; let i = index\"\n [ngStyle]=\"{\n width: config?.colConfig[i]?.style?.width || config?.colHeaderConfig[i]?.style?.width || ''\n }\"\n class=\"t-col-container\"\n [ngClass]=\"{ 't-col-container-hover': config.cellHover }\"\n >\n <div\n class=\"t-col\"\n [style]=\"config.colConfig[i]?.style\"\n [ngStyle]=\"{\n width: '100%',\n cursor: config.colConfig[i]?.action ? 'pointer' : 'default',\n 'justify-content': config.colConfig[i]?.style?.justifyContent\n ? config.colConfig[i]?.style?.justifyContent\n : config.colConfig[i]?.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p\n *ngIf=\"config.colConfig[i]?.type !== 'custom'\"\n [ngStyle]=\"{\n color: config?.colConfig[i]?.style?.color ? config?.colConfig[i]?.style?.color : ''\n }\"\n [ngClass]=\"{'text-ellipsis': !!config?.colConfig[i]?.style?.textEllipsis}\"\n class=\"t-col-text\"\n >\n {{ col }}\n </p>\n <ng-template\n *ngIf=\"config.colConfig[i]?.type === 'custom'\"\n [customComponent]=\"config.colConfig[i].componentRef\"\n [data]=\"col\"\n customTableCell\n ></ng-template>\n </div>\n </div>\n </div>\n <div *ngIf=\"config?.canExpand && expandedIndex === i\" class=\"sub-row\">\n <ng-container *ngIf=\"subTableDataLoading\">\n <div [ngStyle]=\"{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '16px'\n }\">\n Loading...\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"!subTableDataLoading && subTableData.length === 0\">\n <div [ngStyle]=\"{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '16px'\n }\">\n No Data Available...\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"!subTableDataLoading && subTableData.length > 0\">\n <sub-table [config]=\"subTableconfig\" [tableData]=\"subTableData\"></sub-table>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"config?.paginationConfig && (tableLength >= config.paginationConfig.rowsPerPage || config.paginationConfig?.selectedPage !== 1)\"\n id=\"pagination-container\"\n >\n <p id=\"pagination-text\">\n Showing\n {{ (config.paginationConfig?.selectedPage - 1) * config.paginationConfig.rowsPerPage + 1 }}-{{\n (config.paginationConfig?.selectedPage - 1) * config.paginationConfig.rowsPerPage + tableLength\n }}\n of {{ config.paginationConfig.totalNoOfRows }} items\n </p>\n <div id=\"pages-container\">\n <span (click)=\"updateSelectedPage(config.paginationConfig?.selectedPage - 1)\" class=\"page\">\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 7 10\" width=\"7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n clip-rule=\"evenodd\"\n d=\"M0.857405 5.56295C0.855794 5.56139 0.854188 5.55982 0.852588 5.55824C0.695955 5.40408 0.617641 5.20203 0.617647 4.99998C0.617641 4.79793 0.695955 4.59588 0.852588 4.44172C0.854188 4.44014 0.855794 4.43858 0.857404 4.43702L5.13066 0.231231C5.44392 -0.0770771 5.9518 -0.0770771 6.26506 0.231231C6.57831 0.53954 6.57831 1.03941 6.26506 1.34772L2.5542 4.99998L6.26506 8.65225C6.57831 8.96055 6.57831 9.46042 6.26506 9.76873C5.9518 10.077 5.44392 10.077 5.13066 9.76873L0.857405 5.56295Z\"\n fill=\"#181F33\"\n fill-rule=\"evenodd\"\n />\n </svg>\n </span>\n <div *ngFor=\"let pageNumber of pages\">\n <span\n (click)=\"updateSelectedPage(pageNumber)\"\n *ngIf=\"pageNumber != 0\"\n [ngClass]=\"{ 'page-active': pageNumber == config.paginationConfig?.selectedPage }\"\n class=\"page\"\n >{{ pageNumber }}</span\n >\n <span *ngIf=\"pageNumber == 0\" class=\"page-seperator\">\n <div [ngStyle]=\"{ display: 'flex' }\">\n <span class=\"dot\" [ngStyle]=\"{ 'margin-right': '4px' }\"></span>\n <span class=\"dot\" [ngStyle]=\"{ 'margin-right': '4px' }\"></span>\n <span class=\"dot\"></span>\n </div> \n </span>\n </div>\n <span (click)=\"updateSelectedPage(config.paginationConfig?.selectedPage + 1)\" class=\"page\">\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 7 10\" width=\"7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n clip-rule=\"evenodd\"\n d=\"M6.1426 5.56295C6.14421 5.56139 6.14581 5.55982 6.14741 5.55824C6.30405 5.40408 6.38236 5.20203 6.38236 4.99998C6.38236 4.79793 6.30405 4.59588 6.14741 4.44172C6.14581 4.44014 6.14421 4.43858 6.1426 4.43702L1.86934 0.231231C1.55608 -0.0770771 1.0482 -0.0770771 0.734942 0.231231C0.421688 0.53954 0.421688 1.03941 0.734942 1.34772L4.4458 4.99998L0.734941 8.65225C0.421686 8.96055 0.421686 9.46042 0.734941 9.76873C1.0482 10.077 1.55608 10.077 1.86934 9.76873L6.1426 5.56295Z\"\n fill=\"#181F33\"\n fill-rule=\"evenodd\"\n />\n </svg>\n </span>\n </div>\n </div>\n</div>\n", styles: ["#main-container{font-family:Lato,sans-serif;position:relative}.no-scrollbar::-webkit-scrollbar{width:0}.scrollbar::-webkit-scrollbar{width:8px;height:8px;border-radius:15px}.scrollbar::-webkit-scrollbar-thumb{background:#9aa7b4;border-radius:15px}#table-container{height:inherit;overflow-y:auto}.scroll-horizontally{height:inherit;width:fit-content;overflow-y:unset!important;overflow-x:visible}#col-headers-container{display:flex;align-items:center;position:sticky;background-color:#fff;width:100%;z-index:1;min-height:44px;border-bottom:1px solid #e0e0e0;top:0;left:0;right:0}.col-header{padding:0 16px;display:flex;align-items:center;height:100%}.col-header-text{font-style:normal;font-weight:700;line-height:20px;display:flex;align-items:center;letter-spacing:.2px;margin:0}.filter-icon{margin-left:8px;padding:0 8px;position:relative;cursor:pointer}#filter-active{height:8px;width:8px;background:#16cbbc;border-radius:50%;position:absolute;top:4px;right:4px}.sub-row{height:auto;border-bottom:none}.loader ::ng-deep .mat-progress-spinner circle,.mat-spinner circle{stroke:#0937b2}.t-row{display:flex;min-height:44px;background-color:#fff;width:100%;border-bottom:1px solid #e0e0e0}.t-row:hover{background-color:#e7eefd}.active-row{background-color:#e6f6fd}.t-col-container{padding:0 16px;overflow-wrap:anywhere}.t-row-hover:hover{background-color:#0000}.t-col-container-hover:hover{background-color:#e6ebf7}.t-col-container-hover:first-child{border-left:1px solid #e0e0e0}.t-col-container-hover{border-right:1px solid #e0e0e0}.t-col{display:flex;align-items:center;height:100%}.t-col-text{font-style:normal;font-weight:400;font-size:14px;line-height:20px;display:flex;align-items:center;letter-spacing:.2px;margin:0}.text-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}#pagination-container{display:flex;justify-content:flex-end;align-items:center;height:56px}#pagination-text{font-style:normal;font-weight:400;font-size:12px;line-height:18px;letter-spacing:.4px;color:#6a737d;margin:0 96px 0 0}#pages-container{display:flex;margin-right:32px}.page{display:flex;justify-content:center;align-items:center;border:1px solid #6a737d;box-sizing:border-box;border-radius:4px;width:32px;height:32px;font-size:14px;line-height:20px;letter-spacing:.2px;color:#6a737d;margin-right:8px;cursor:pointer}.page-seperator{display:flex;justify-content:center;align-items:center;width:32px;height:32px;margin-right:8px}.dot{height:3px;width:3px;border-radius:50%;background:#6a737d}.page-active{color:#0937b2;border:1px solid #0937b2}.sort-icon{display:inline-flex;align-items:center;margin-left:4px;cursor:pointer}.sort-icon img{width:16px;height:16px;transition:opacity .2s ease}.sort-icon img:hover{opacity:.8}\n"] }]
1035
+ args: [{ selector: "mis-table", template: "<div\n [ngStyle]=\"{\n height: getContainerHeight(),\n width: getContainerWidth(),\n 'overflow-x': config.canScrollHorizontally ? 'auto' : 'unset'\n }\"\n id=\"main-container\"\n>\n <mis-table-filter\n #filter\n (filtersApplied)=\"updateAppliedFilters($event)\"\n *ngIf=\"showFilter\"\n [containerStyles]=\"filterContainerStyles\"\n [filtersData]=\"filterData\"\n ></mis-table-filter>\n <div\n #table\n id=\"table-container\"\n [ngClass]=\"{ 'no-scrollbar': expandedIndex < 0, scrollbar: !(expandedIndex < 0), 'scroll-horizontally': config.canScrollHorizontally }\"\n >\n <div\n [ngStyle]=\"getColHeadersRowStyles()\"\n id=\"col-headers-container\"\n >\n <div\n #colHeaderRef\n (click)=\"colHeader?.action ? colHeader?.action(colHeader) : null\"\n *ngFor=\"let colHeader of config?.colHeaderConfig\"\n class=\"col-header\"\n [ngStyle]=\"{\n width: colHeader?.style?.width || '',\n cursor: colHeader.action ? 'pointer' : 'default',\n 'justify-content': colHeader?.style?.justifyContent\n ? colHeader?.style?.justifyContent\n : colHeader.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p *ngIf=\"colHeader?.type !== 'custom'\" class=\"col-header-text\">\n {{ colHeader?.data || \" \" }}\n </p>\n <ng-template *ngIf=\"colHeader?.type === 'custom'\" customTableCell [customComponent]=\"colHeader?.componentRef\" [data]=\"colHeader.data\"></ng-template>\n <span *ngIf=\"colHeader?.isSortable\" appSortIcons\n [column]=\"colHeader\"\n [activeSort]=\"currentSort\"\n [activeSorts]=\"multiColumnSort\"\n [multiColumnSort]=\"config.multiColumnSort\"\n (sortChange)=\"onSortChange($event)\">\n </span>\n </div>\n </div>\n <div id=\"data-container\">\n <div class=\"row-wrapper\" *ngFor=\"let row of tableData; let i = index\">\n <div\n class=\"t-row\"\n [ngClass]=\"{ 't-row-hover': config.cellHover, 'active-row': i === activeRowIndex }\"\n [ngStyle]=\"{ 'min-height': config?.rowConfig?.height ? config.rowConfig.height : '44px' }\"\n (click)=\"selectRow(i)\"\n >\n <div\n (click)=\"config?.colConfig[i]?.action ? config?.colConfig[i]?.action(col) : null\"\n *ngFor=\"let col of row; let i = index\"\n [ngStyle]=\"{\n width: config?.colConfig[i]?.style?.width || config?.colHeaderConfig[i]?.style?.width || ''\n }\"\n class=\"t-col-container\"\n [ngClass]=\"{ 't-col-container-hover': config.cellHover }\"\n >\n <div\n class=\"t-col\"\n [style]=\"config.colConfig[i]?.style\"\n [ngStyle]=\"{\n width: '100%',\n cursor: config.colConfig[i]?.action ? 'pointer' : 'default',\n 'justify-content': config.colConfig[i]?.style?.justifyContent\n ? config.colConfig[i]?.style?.justifyContent\n : config.colConfig[i]?.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p\n *ngIf=\"config.colConfig[i]?.type !== 'custom'\"\n [ngStyle]=\"{\n color: config?.colConfig[i]?.style?.color ? config?.colConfig[i]?.style?.color : ''\n }\"\n [ngClass]=\"{'text-ellipsis': !!config?.colConfig[i]?.style?.textEllipsis}\"\n class=\"t-col-text\"\n >\n {{ col }}\n </p>\n <ng-template\n *ngIf=\"config.colConfig[i]?.type === 'custom'\"\n [customComponent]=\"config.colConfig[i].componentRef\"\n [data]=\"col\"\n customTableCell\n ></ng-template>\n </div>\n </div>\n </div>\n <div *ngIf=\"config?.canExpand && expandedIndex === i\" class=\"sub-row\">\n <ng-container *ngIf=\"subTableDataLoading\">\n <div [ngStyle]=\"{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '16px'\n }\">\n Loading...\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"!subTableDataLoading && subTableData.length === 0\">\n <div [ngStyle]=\"{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '16px'\n }\">\n No Data Available...\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"!subTableDataLoading && subTableData.length > 0\">\n <sub-table [config]=\"subTableconfig\" [tableData]=\"subTableData\"></sub-table>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"config?.paginationConfig && (tableLength >= config.paginationConfig.rowsPerPage || config.paginationConfig?.selectedPage !== 1)\"\n id=\"pagination-container\"\n >\n <p id=\"pagination-text\">\n Showing\n {{ (config.paginationConfig?.selectedPage - 1) * config.paginationConfig.rowsPerPage + 1 }}-{{\n (config.paginationConfig?.selectedPage - 1) * config.paginationConfig.rowsPerPage + tableLength\n }}\n of {{ config.paginationConfig.totalNoOfRows }} items\n </p>\n <div id=\"pages-container\">\n <span (click)=\"updateSelectedPage(config.paginationConfig?.selectedPage - 1)\" class=\"page\">\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 7 10\" width=\"7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n clip-rule=\"evenodd\"\n d=\"M0.857405 5.56295C0.855794 5.56139 0.854188 5.55982 0.852588 5.55824C0.695955 5.40408 0.617641 5.20203 0.617647 4.99998C0.617641 4.79793 0.695955 4.59588 0.852588 4.44172C0.854188 4.44014 0.855794 4.43858 0.857404 4.43702L5.13066 0.231231C5.44392 -0.0770771 5.9518 -0.0770771 6.26506 0.231231C6.57831 0.53954 6.57831 1.03941 6.26506 1.34772L2.5542 4.99998L6.26506 8.65225C6.57831 8.96055 6.57831 9.46042 6.26506 9.76873C5.9518 10.077 5.44392 10.077 5.13066 9.76873L0.857405 5.56295Z\"\n fill=\"#181F33\"\n fill-rule=\"evenodd\"\n />\n </svg>\n </span>\n <div *ngFor=\"let pageNumber of pages\">\n <span\n (click)=\"updateSelectedPage(pageNumber)\"\n *ngIf=\"pageNumber != 0\"\n [ngClass]=\"{ 'page-active': pageNumber == config.paginationConfig?.selectedPage }\"\n class=\"page\"\n >{{ pageNumber }}</span\n >\n <span *ngIf=\"pageNumber == 0\" class=\"page-seperator\">\n <div [ngStyle]=\"{ display: 'flex' }\">\n <span class=\"dot\" [ngStyle]=\"{ 'margin-right': '4px' }\"></span>\n <span class=\"dot\" [ngStyle]=\"{ 'margin-right': '4px' }\"></span>\n <span class=\"dot\"></span>\n </div> \n </span>\n </div>\n <span (click)=\"updateSelectedPage(config.paginationConfig?.selectedPage + 1)\" class=\"page\">\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 7 10\" width=\"7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n clip-rule=\"evenodd\"\n d=\"M6.1426 5.56295C6.14421 5.56139 6.14581 5.55982 6.14741 5.55824C6.30405 5.40408 6.38236 5.20203 6.38236 4.99998C6.38236 4.79793 6.30405 4.59588 6.14741 4.44172C6.14581 4.44014 6.14421 4.43858 6.1426 4.43702L1.86934 0.231231C1.55608 -0.0770771 1.0482 -0.0770771 0.734942 0.231231C0.421688 0.53954 0.421688 1.03941 0.734942 1.34772L4.4458 4.99998L0.734941 8.65225C0.421686 8.96055 0.421686 9.46042 0.734941 9.76873C1.0482 10.077 1.55608 10.077 1.86934 9.76873L6.1426 5.56295Z\"\n fill=\"#181F33\"\n fill-rule=\"evenodd\"\n />\n </svg>\n </span>\n </div>\n </div>\n</div>\n", styles: ["#main-container{font-family:Lato,sans-serif;position:relative}.no-scrollbar::-webkit-scrollbar{width:0}.scrollbar::-webkit-scrollbar{width:8px;height:8px;border-radius:15px}.scrollbar::-webkit-scrollbar-thumb{background:#9aa7b4;border-radius:15px}#table-container{height:inherit;overflow-y:auto}.scroll-horizontally{height:inherit;width:fit-content;overflow-y:unset!important;overflow-x:visible}#col-headers-container{display:flex;align-items:center;position:sticky;background-color:#fff;width:100%;z-index:1;min-height:44px;border-bottom:1px solid #e0e0e0;top:0;left:0;right:0}.col-header{padding:0 16px;display:flex;align-items:center;height:100%}.col-header-text{font-style:normal;font-weight:700;line-height:20px;display:flex;align-items:center;letter-spacing:.2px;margin:0}.filter-icon{margin-left:8px;padding:0 8px;position:relative;cursor:pointer}#filter-active{height:8px;width:8px;background:#16cbbc;border-radius:50%;position:absolute;top:4px;right:4px}.sub-row{height:auto;border-bottom:none}.loader ::ng-deep .mat-progress-spinner circle,.mat-spinner circle{stroke:#0937b2}.t-row{display:flex;min-height:44px;background-color:#fff;width:100%;border-bottom:1px solid #e0e0e0}.t-row:hover{background-color:#e7eefd}.active-row{background-color:#e6f6fd}.t-col-container{padding:0 16px;overflow-wrap:anywhere}.t-row-hover:hover{background-color:#0000}.t-col-container-hover:hover{background-color:#e6ebf7}.t-col-container-hover:first-child{border-left:1px solid #e0e0e0}.t-col-container-hover{border-right:1px solid #e0e0e0}.t-col{display:flex;align-items:center;height:100%}.t-col-text{font-style:normal;font-weight:400;font-size:14px;line-height:20px;display:flex;align-items:center;letter-spacing:.2px;margin:0}.text-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}#pagination-container{display:flex;justify-content:flex-end;align-items:center;height:56px}#pagination-text{font-style:normal;font-weight:400;font-size:12px;line-height:18px;letter-spacing:.4px;color:#6a737d;margin:0 96px 0 0}#pages-container{display:flex;margin-right:32px}.page{display:flex;justify-content:center;align-items:center;border:1px solid #6a737d;box-sizing:border-box;border-radius:4px;width:32px;height:32px;font-size:14px;line-height:20px;letter-spacing:.2px;color:#6a737d;margin-right:8px;cursor:pointer}.page-seperator{display:flex;justify-content:center;align-items:center;width:32px;height:32px;margin-right:8px}.dot{height:3px;width:3px;border-radius:50%;background:#6a737d}.page-active{color:#0937b2;border:1px solid #0937b2}.sort-icon{display:inline-flex;align-items:center;margin-left:4px;cursor:pointer}.sort-icon img{width:16px;height:16px;transition:opacity .2s ease}.sort-icon img:hover{opacity:.8}\n"] }]
1038
1036
  }], () => [{ type: i0.Renderer2 }], { filtersUpdated: [{
1039
1037
  type: Output
1040
1038
  }], filter: [{
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-table.mjs","sources":["../../../projects/mis-components/table/table.config.ts","../../../projects/mis-components/table/custom-table-cell.directive.ts","../../../projects/mis-components/table/sub-table/sub-table.component.html","../../../projects/mis-components/table/sub-table/sub-table.component.ts","../../../projects/mis-components/table/filter/filter.component.html","../../../projects/mis-components/table/filter/filter.component.ts","../../../projects/mis-components/table/sort-icons.directive.ts","../../../projects/mis-components/table/table.component.html","../../../projects/mis-components/table/table.component.ts","../../../projects/mis-components/table/table.module.ts","../../../projects/mis-components/table/mis-crystal-design-system-table.ts"],"sourcesContent":["import { TableConfig } from './table.component';\n\nexport const DEFAULT_TABLE_CONFIG: Partial<TableConfig> = {\n sortAscIcon: 'assets/sort-asc.svg',\n sortDescIcon: 'assets/sort-desc.svg',\n multiColumnSort: false\n}; ","import { ComponentFactoryResolver, Directive, Input, ViewContainerRef } from \"@angular/core\";\n\n@Directive({\n selector: \"[customTableCell]\"\n})\nexport class CustomTableCellDirective {\n private ref: any;\n private component: any;\n private cellData: any;\n\n @Input() set customComponent(value: any) {\n this.component = value;\n this.createComponent();\n }\n @Input() set data(value: any) {\n this.cellData = value;\n if (this.ref) {\n this.ref.instance.data = this.cellData;\n }\n }\n\n constructor(private viewContainerRef: ViewContainerRef, private componentFactoryResolver: ComponentFactoryResolver) {}\n\n createComponent() {\n if (this.component) {\n const cmpFactoryResolver = this.componentFactoryResolver.resolveComponentFactory(this.component);\n this.viewContainerRef.clear();\n this.ref = this.viewContainerRef.createComponent(cmpFactoryResolver);\n this.setData();\n }\n }\n setData() {\n this.ref.instance.data = this.cellData;\n }\n}\n","<div\n id=\"main-container\"\n [ngStyle]=\"{\n height: getContainerHeight(),\n width: getContainerWidth()\n }\"\n>\n <div id=\"table-container\" #table>\n <div\n id=\"col-headers-container\"\n *ngIf=\"!!config.showHeader\"\n [ngStyle]=\"{\n height: getColHeadersRowHeight(),\n 'border-top': getColHeadersRowBorderTop(),\n 'border-bottom': getColHeadersRowBorderBottom()\n }\"\n >\n <div\n class=\"col-header\"\n (click)=\"colHeader?.action ? colHeader?.action(colHeader) : null\"\n *ngFor=\"let colHeader of config?.colHeaderConfig\"\n [style]=\"colHeader?.style\"\n [ngStyle]=\"{\n width: colHeader?.style?.width || '',\n cursor: colHeader.action ? 'pointer' : 'default',\n 'justify-content': colHeader?.style?.justifyContent\n ? colHeader?.style?.justifyContent\n : colHeader.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p *ngIf=\"colHeader?.type !== 'custom'\" class=\"col-header-text\">\n {{ colHeader?.data || \" \" }}\n </p>\n <ng-template\n *ngIf=\"colHeader?.type === 'custom'\"\n customTableCell\n [customComponent]=\"colHeader?.componentRef\"\n [data]=\"colHeader.data\"\n ></ng-template>\n </div>\n </div>\n <div>\n <cdk-virtual-scroll-viewport\n [minBufferPx]=\"config.dataContainerMaxHeight || '400'\"\n [maxBufferPx]=\"config.dataContainerMaxHeight + 200 || '600'\"\n [style.overflow]=\"'overlay'\"\n [style.height]=\"config.dataContainerMaxHeight || '400px'\"\n itemSize=\"50\"\n id=\"data-container\"\n >\n <div\n class=\"row-wrapper\"\n *cdkVirtualFor=\"let row of tableData; let i = index\"\n [ngStyle]=\"{\n backgroundColor: i % 2 === 0 ? '#FAFAFA' : null\n }\"\n >\n <div class=\"t-row\">\n <div\n (click)=\"config?.colConfig[i]?.action ? config?.colConfig[i]?.action(col) : null\"\n *ngFor=\"let col of row; let i = index\"\n [ngStyle]=\"{\n width: config?.colConfig[i]?.style?.width || config?.colHeaderConfig[i]?.style?.width || ''\n }\"\n class=\"t-col-container\"\n >\n <div\n class=\"t-col\"\n [style]=\"config.colConfig[i]?.style\"\n [ngStyle]=\"{\n width: '100%',\n cursor: config.colConfig[i].action ? 'pointer' : 'default',\n 'justify-content': config.colConfig[i]?.style?.justifyContent\n ? config.colConfig[i]?.style?.justifyContent\n : config.colConfig[i].type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p\n *ngIf=\"config.colConfig[i].type !== 'custom'\"\n [ngStyle]=\"{\n color: config?.colConfig[i]?.style?.color ? config?.colConfig[i]?.style?.color : ''\n }\"\n class=\"t-col-text\"\n >\n {{ col }}\n </p>\n <ng-template\n *ngIf=\"config.colConfig[i].type === 'custom'\"\n [customComponent]=\"config.colConfig[i].componentRef\"\n [data]=\"col\"\n customTableCell\n ></ng-template>\n </div>\n </div>\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n </div>\n </div>\n</div>\n","import { AfterViewInit, Component, ElementRef, Input, OnInit, Renderer2, ViewChild } from \"@angular/core\";\n\n@Component({\n selector: \"sub-table\",\n templateUrl: \"sub-table.component.html\",\n styleUrls: [\"sub-table.component.css\"]\n})\nexport class SubTableComponent implements OnInit, AfterViewInit {\n selectedPage = 1;\n pages: Array<number> = [];\n\n @Input() config: SubTableConfig | any;\n @Input() tableData: Array<Array<any>> = [];\n @ViewChild(\"table\") table: ElementRef | any;\n constructor(private renderer: Renderer2) {}\n\n ngOnInit() {}\n\n ngAfterViewInit() {\n if (this.config.paginationConfig) {\n let height = this.table.nativeElement.offsetHeight;\n this.renderer.setStyle(this.table.nativeElement, \"height\", height - 56 + \"px\");\n }\n }\n\n // Main container related functions\n getContainerHeight() {\n if (this.config.height) return this.config.height;\n else return \"\";\n }\n getContainerWidth() {\n if (this.config.width) return this.config.width;\n else return \"\";\n }\n\n // Column Headers related functions\n getColHeadersRowHeight() {\n if (this.config.colHeadersRowConfig && this.config.colHeadersRowConfig.height) {\n return this.config.colHeadersRowConfig.height;\n } else return \"44px\";\n }\n getColHeadersRowBorderTop() {\n if (this.config.colHeadersRowConfig && this.config.colHeadersRowConfig.style?.borderTop) {\n return this.config.colHeadersRowConfig.style?.borderTop;\n } else return \"\";\n }\n getColHeadersRowBorderBottom() {\n if (this.config.colHeadersRowConfig && this.config.colHeadersRowConfig.style?.borderBottom) {\n return this.config.colHeadersRowConfig.style?.borderBottom;\n } else return \"1px solid #E0E0E0\";\n }\n}\n\nexport interface SubTableConfig {\n height: string | \"100%\";\n width: string | \"100%\";\n dataContainerMaxHeight: string | \"400px\";\n showHeader?: boolean | undefined;\n rowConfig: SubTableRowConfig | undefined | null;\n colHeaderConfig?: Array<SubTableColHeaderConfig>;\n colConfig: Array<SubTableColConfig>;\n}\n\nexport interface SubTableRowConfig {\n height?: string | undefined | null;\n style?: {};\n}\nexport interface SubTableColHeaderConfig {\n type: \"text\" | \"number\" | \"custom\";\n data: any;\n componentRef?: any;\n style?: {};\n action?: any;\n}\nexport interface SubTableColConfig {\n type: \"text\" | \"number\" | \"custom\";\n componentRef?: any;\n style?: {};\n action?: any;\n}\n","<div id=\"main-container\" #mainContainer [ngStyle]=\"containerStyles\">\n <div id=\"search-bar-container\">\n <input (keyup)=\"updateSearchValue($event)\" type=\"text\" placeholder=\"Search\" />\n <svg id=\"search-icon\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1.21496 8.14563C1.21496 4.3179 4.33709 1.21165 8.19249 1.21165C12.0479 1.21165 15.17 4.3179 15.17 8.14563C15.17 9.69308 14.6598 11.1226 13.797 12.2767L12.3684 13.7013C11.2043 14.5668 9.75891 15.0796 8.19249 15.0796C4.33709 15.0796 1.21496 11.9734 1.21496 8.14563ZM12.9419 14.7835C11.602 15.7329 9.96259 16.2913 8.19249 16.2913C3.66965 16.2913 -0.00012207 12.6461 -0.00012207 8.14563C-0.00012207 3.64512 3.66965 0 8.19249 0C12.7153 0 16.3851 3.64512 16.3851 8.14563C16.3851 9.93713 15.8036 11.5931 14.8183 12.9375L16.836 14.4048C17.6704 14.912 18.7553 15.6543 17.2453 17.215C15.7352 18.7756 15.0098 17.6663 14.499 16.8364L12.9419 14.7835Z\"\n fill=\"#6A737D\"\n />\n </svg>\n </div>\n <div id=\"filters-main-container\">\n <div class=\"filters-sub-container\">\n <div *ngFor=\"let filter of getCheckedFilters()\">\n <div class=\"filter\">\n <mis-checkbox [checked]=\"true\" [name]=\"filter.value\" (valueChange)=\"updateFilter($event)\"></mis-checkbox>\n <span class=\"filter-text\">{{ filter.name }}</span>\n </div>\n </div>\n </div>\n <div class=\"separator\" [ngStyle]=\"{ 'margin': '16px 0px' }\" *ngIf=\"getCheckedFilters().length && getCheckedFilters().length < filtersData.length\"></div>\n <div class=\"filters-sub-container\">\n <div *ngFor=\"let filter of getFiltersBasedOnSearchValue()\">\n <div class=\"filter\" *ngIf=\"!filter.checked\">\n <mis-checkbox [checked]=\"false\" [name]=\"filter.value\" (valueChange)=\"updateFilter($event)\"></mis-checkbox>\n <span class=\"filter-text\">{{ filter.name }}</span>\n </div>\n </div>\n <div id=\"no-results-container\" *ngIf=\"getFiltersBasedOnSearchValue().length < 1\">\n <span class=\"filter-text\">No matches found</span>\n </div>\n </div>\n <div class=\"separator\" [ngStyle]=\"{ 'margin': '16px 0px' }\"></div>\n <div id=\"buttons-container\">\n <button id=\"reset-btn\" [ngStyle]=\"{ 'margin-right': '8px' }\" (click)=\"resetFilters()\">Reset</button>\n <button id=\"apply-btn\" (click)=\"applyFilters()\">Apply</button>\n </div>\n </div>\n</div>\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from \"@angular/core\";\n\n@Component({\n selector: \"mis-table-filter\",\n templateUrl: \"filter.component.html\",\n styleUrls: [\"filter.component.css\"]\n})\nexport class TableFilterComponent implements OnInit {\n @Input() filtersData: Array<Filter> = [];\n @Input() containerStyles: any = {};\n\n @Output() filtersApplied = new EventEmitter<any>();\n\n @ViewChild(\"mainContainer\") container: ElementRef | undefined;\n\n filtersMap: any = {};\n searchValue: string = \"\";\n\n constructor() {}\n\n ngOnInit(): void {\n this.filtersData.forEach(filter => {\n this.filtersMap[filter.value] = filter;\n });\n }\n resetFilters() {\n this.filtersData.forEach(filter => {\n this.filtersMap[filter.value].checked = false;\n });\n this.filtersApplied.emit([]);\n }\n applyFilters() {\n let list = Object.values(this.filtersMap)\n .filter((filter: Filter | any) => filter.checked)\n .map((filter: Filter | any) => {\n return {\n name: filter.name,\n value: filter.value\n };\n });\n this.filtersApplied.emit(list);\n }\n updateSearchValue(event: any) {\n this.searchValue = event.target.value;\n }\n updateFilter(data: any) {\n if (this.filtersMap[data.name]) {\n this.filtersMap[data.name].checked = !this.filtersMap[data.name].checked;\n }\n }\n getFiltersBasedOnSearchValue(): Filter[] | any {\n let list = Object.values(this.filtersMap);\n list = list.filter((filter: Filter | any) => {\n return filter.name.match(new RegExp(this.searchValue, \"i\"));\n });\n return list.sort(this.mySort);\n }\n getCheckedFilters(): Filter[] | any {\n let list = Object.values(this.filtersMap);\n list = list.filter((filter: Filter | any) => filter.checked).sort(this.mySort);\n return list;\n }\n mySort = (a: Filter | any, b: Filter | any) => {\n if (a.name < b.name) return -1;\n else if (b.name < a.name) return 1;\n else return 0;\n };\n}\nexport interface Filter {\n name: string;\n value: string;\n checked: boolean;\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n input,\n output,\n signal,\n} from '@angular/core';\n\nexport interface SortState {\n column: string;\n direction: 'ASC' | 'DESC' | '';\n columnNumber?: number;\n}\n\n@Directive({\n selector: '[appSortIcons]',\n})\nexport class SortIconsDirective implements OnInit, OnChanges {\n // Convert inputs to signals\n column = input<string>('');\n activeSort = input<SortState>();\n activeSorts = input<SortState[]>();\n multiColumnSort = input<boolean>(false);\n \n // Convert output to signal\n sortChange = output<SortState>();\n multiSortChange = output<SortState[]>();\n\n // Internal state as signals\n currentDirection = signal<'ASC' | 'DESC' | ''>('');\n private columnNumber = signal<number>(0);\n\n // Assets\n private readonly SORT_ASCENDING = 'assets/sort-asc.svg';\n private readonly SORT_DESCENDING = 'assets/sort-desc.svg';\n\n private upIcon!: HTMLImageElement;\n private downIcon!: HTMLImageElement;\n private sortOrderElement?: HTMLSpanElement;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnInit() {\n // Get column number from data-column attribute\n const columnAttr = this.el.nativeElement.getAttribute('data-column');\n if (columnAttr) {\n this.columnNumber.set(parseInt(columnAttr, 10));\n }\n\n // Create a container for the icons\n const container = this.renderer.createElement('div');\n this.renderer?.setStyle(container, 'display', 'inline-flex');\n this.renderer?.setStyle(container, 'align-items', 'center');\n this.renderer?.setStyle(container, 'gap', '0.5rem');\n\n const iconContainer = this.renderer.createElement('div');\n this.renderer?.setStyle(iconContainer, 'display', 'inline-flex');\n this.renderer?.setStyle(iconContainer, 'flex-direction', 'column');\n this.renderer?.setStyle(iconContainer, 'align-items', 'center');\n this.renderer?.setStyle(iconContainer, 'gap', '5px');\n\n this.upIcon = this.renderer.createElement('img');\n this.renderer?.setAttribute(this.upIcon, 'src', this.SORT_ASCENDING);\n this.renderer?.setStyle(this.upIcon, 'opacity', '0.5');\n this.renderer?.setStyle(this.upIcon, 'transition', 'opacity 0.3s ease');\n this.renderer?.setStyle(this.upIcon, 'width', '9px');\n this.renderer?.setStyle(this.upIcon, 'cursor', 'pointer');\n this.renderer?.listen(this.upIcon, 'click', () => this.setSortDirection('ASC'));\n\n this.downIcon = this.renderer.createElement('img');\n this.renderer?.setAttribute(this.downIcon, 'src', this.SORT_DESCENDING);\n this.renderer?.setStyle(this.downIcon, 'opacity', '0.5');\n this.renderer?.setStyle(this.downIcon, 'transition', 'opacity 0.3s ease');\n this.renderer?.setStyle(this.downIcon, 'width', '9px');\n this.renderer?.setStyle(this.downIcon, 'cursor', 'pointer');\n this.renderer?.listen(this.downIcon, 'click', () => this.setSortDirection('DESC'));\n\n this.renderer?.appendChild(iconContainer, this.upIcon);\n this.renderer?.appendChild(iconContainer, this.downIcon);\n this.renderer?.appendChild(container, iconContainer);\n\n if (this.multiColumnSort()) {\n this.sortOrderElement = this.renderer.createElement('span');\n this.renderer?.setStyle(this.sortOrderElement, 'font-size', '12px');\n this.renderer?.setStyle(this.sortOrderElement, 'font-weight', 'bold');\n this.renderer?.setStyle(this.sortOrderElement, 'color', '#000');\n this.renderer?.appendChild(container, this.sortOrderElement);\n }\n\n this.renderer?.appendChild(this.el.nativeElement, container);\n this.updateIconStyles();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['activeSort'] || changes['activeSorts']) {\n this.updateIconStyles();\n }\n }\n\n private setSortDirection(direction: 'ASC' | 'DESC'): void {\n if (this.multiColumnSort()) {\n this.handleMultiColumnSort(direction);\n } else {\n this.handleSingleColumnSort(direction);\n }\n }\n\n private handleSingleColumnSort(direction: 'ASC' | 'DESC'): void {\n if (this.currentDirection() === direction) {\n this.currentDirection.set(''); // Reset sorting if the same direction is clicked\n } else {\n this.currentDirection.set(direction);\n }\n\n this.sortChange.emit({ \n column: this.column(), \n direction: this.currentDirection(),\n columnNumber: this.columnNumber()\n });\n this.updateIconStyles();\n }\n\n private handleMultiColumnSort(direction: 'ASC' | 'DESC'): void {\n const existingSortIndex = this.activeSorts().findIndex(sort => sort.column === this.column());\n \n if (existingSortIndex !== -1) {\n if (this.activeSorts()[existingSortIndex].direction !== direction) {\n this.activeSorts()[existingSortIndex].direction = direction;\n this.activeSorts()[existingSortIndex].columnNumber = this.columnNumber();\n } else {\n return;\n }\n } else {\n this.activeSorts().push({ \n column: this.column(), \n direction,\n columnNumber: this.columnNumber()\n });\n }\n this.multiSortChange.emit([...this.activeSorts()]);\n this.updateIconStyles();\n }\n\n private updateIconStyles(): void {\n if (this.multiColumnSort()) {\n this.updateMultiColumnIconStyles();\n } else {\n this.updateSingleColumnIconStyles();\n }\n }\n\n private updateSingleColumnIconStyles(): void {\n const isActiveColumn = this.activeSort()?.column === this.column();\n\n setTimeout(() => {\n this.renderer?.setStyle(\n this.upIcon,\n 'opacity',\n isActiveColumn && this.currentDirection() === 'ASC' ? '1' : '0.5'\n );\n this.renderer?.setStyle(\n this.downIcon,\n 'opacity',\n isActiveColumn && this.currentDirection() === 'DESC' ? '1' : '0.5'\n );\n }, 0);\n }\n\n private updateMultiColumnIconStyles(): void {\n const columnSort = this.activeSorts().find(sort => sort.column === this.column());\n \n setTimeout(() => {\n this.renderer?.setStyle(\n this.upIcon,\n 'opacity',\n columnSort?.direction === 'ASC' ? '1' : '0.5'\n );\n this.renderer?.setStyle(\n this.downIcon,\n 'opacity',\n columnSort?.direction === 'DESC' ? '1' : '0.5'\n );\n\n if (this.sortOrderElement) {\n const sortIndex = this.activeSorts().findIndex(sort => sort.column === this.column());\n if (sortIndex !== -1) {\n this.renderer?.setProperty(this.sortOrderElement, 'textContent', (sortIndex + 1).toString());\n } else {\n this.renderer?.setProperty(this.sortOrderElement, 'textContent', '');\n }\n }\n }, 0);\n }\n}","<div\n [ngStyle]=\"{\n height: getContainerHeight(),\n width: getContainerWidth(),\n 'overflow-x': config.canScrollHorizontally ? 'auto' : 'unset'\n }\"\n id=\"main-container\"\n>\n <mis-table-filter\n #filter\n (filtersApplied)=\"updateAppliedFilters($event)\"\n *ngIf=\"showFilter\"\n [containerStyles]=\"filterContainerStyles\"\n [filtersData]=\"filterData\"\n ></mis-table-filter>\n <div\n #table\n id=\"table-container\"\n [ngClass]=\"{ 'no-scrollbar': expandedIndex < 0, scrollbar: !(expandedIndex < 0), 'scroll-horizontally': config.canScrollHorizontally }\"\n >\n <div\n [ngStyle]=\"getColHeadersRowStyles()\"\n id=\"col-headers-container\"\n >\n <div\n style=\"border: 1px solid red;\"\n\n #colHeaderRef\n (click)=\"colHeader?.action ? colHeader?.action(colHeader) : null\"\n *ngFor=\"let colHeader of config?.colHeaderConfig\"\n class=\"col-header\"\n [ngStyle]=\"{\n width: colHeader?.style?.width || '',\n cursor: colHeader.action ? 'pointer' : 'default',\n 'justify-content': colHeader?.style?.justifyContent\n ? colHeader?.style?.justifyContent\n : colHeader.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p *ngIf=\"colHeader?.type !== 'custom'\" class=\"col-header-text\">\n {{ colHeader?.data || \" \" }}\n </p>\n <ng-template *ngIf=\"colHeader?.type === 'custom'\" customTableCell [customComponent]=\"colHeader?.componentRef\" [data]=\"colHeader.data\"></ng-template>\n <span *ngIf=\"colHeader?.isSortable\" appSortIcons\n [column]=\"colHeader.data\"\n [activeSort]=\"currentSort\"\n [activeSorts]=\"multiColumnSort\"\n [multiColumnSort]=\"config.multiColumnSort\"\n (sortChange)=\"onSortChange($event)\">\n </span>\n </div>\n </div>\n <div id=\"data-container\">\n <div class=\"row-wrapper\" *ngFor=\"let row of tableData; let i = index\">\n <div\n class=\"t-row\"\n [ngClass]=\"{ 't-row-hover': config.cellHover, 'active-row': i === activeRowIndex }\"\n [ngStyle]=\"{ 'min-height': config?.rowConfig?.height ? config.rowConfig.height : '44px' }\"\n (click)=\"selectRow(i)\"\n >\n <div\n (click)=\"config?.colConfig[i]?.action ? config?.colConfig[i]?.action(col) : null\"\n *ngFor=\"let col of row; let i = index\"\n [ngStyle]=\"{\n width: config?.colConfig[i]?.style?.width || config?.colHeaderConfig[i]?.style?.width || ''\n }\"\n class=\"t-col-container\"\n [ngClass]=\"{ 't-col-container-hover': config.cellHover }\"\n >\n <div\n class=\"t-col\"\n [style]=\"config.colConfig[i]?.style\"\n [ngStyle]=\"{\n width: '100%',\n cursor: config.colConfig[i]?.action ? 'pointer' : 'default',\n 'justify-content': config.colConfig[i]?.style?.justifyContent\n ? config.colConfig[i]?.style?.justifyContent\n : config.colConfig[i]?.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p\n *ngIf=\"config.colConfig[i]?.type !== 'custom'\"\n [ngStyle]=\"{\n color: config?.colConfig[i]?.style?.color ? config?.colConfig[i]?.style?.color : ''\n }\"\n [ngClass]=\"{'text-ellipsis': !!config?.colConfig[i]?.style?.textEllipsis}\"\n class=\"t-col-text\"\n >\n {{ col }}\n </p>\n <ng-template\n *ngIf=\"config.colConfig[i]?.type === 'custom'\"\n [customComponent]=\"config.colConfig[i].componentRef\"\n [data]=\"col\"\n customTableCell\n ></ng-template>\n </div>\n </div>\n </div>\n <div *ngIf=\"config?.canExpand && expandedIndex === i\" class=\"sub-row\">\n <ng-container *ngIf=\"subTableDataLoading\">\n <div [ngStyle]=\"{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '16px'\n }\">\n Loading...\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"!subTableDataLoading && subTableData.length === 0\">\n <div [ngStyle]=\"{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '16px'\n }\">\n No Data Available...\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"!subTableDataLoading && subTableData.length > 0\">\n <sub-table [config]=\"subTableconfig\" [tableData]=\"subTableData\"></sub-table>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"config?.paginationConfig && (tableLength >= config.paginationConfig.rowsPerPage || config.paginationConfig?.selectedPage !== 1)\"\n id=\"pagination-container\"\n >\n <p id=\"pagination-text\">\n Showing\n {{ (config.paginationConfig?.selectedPage - 1) * config.paginationConfig.rowsPerPage + 1 }}-{{\n (config.paginationConfig?.selectedPage - 1) * config.paginationConfig.rowsPerPage + tableLength\n }}\n of {{ config.paginationConfig.totalNoOfRows }} items\n </p>\n <div id=\"pages-container\">\n <span (click)=\"updateSelectedPage(config.paginationConfig?.selectedPage - 1)\" class=\"page\">\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 7 10\" width=\"7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n clip-rule=\"evenodd\"\n d=\"M0.857405 5.56295C0.855794 5.56139 0.854188 5.55982 0.852588 5.55824C0.695955 5.40408 0.617641 5.20203 0.617647 4.99998C0.617641 4.79793 0.695955 4.59588 0.852588 4.44172C0.854188 4.44014 0.855794 4.43858 0.857404 4.43702L5.13066 0.231231C5.44392 -0.0770771 5.9518 -0.0770771 6.26506 0.231231C6.57831 0.53954 6.57831 1.03941 6.26506 1.34772L2.5542 4.99998L6.26506 8.65225C6.57831 8.96055 6.57831 9.46042 6.26506 9.76873C5.9518 10.077 5.44392 10.077 5.13066 9.76873L0.857405 5.56295Z\"\n fill=\"#181F33\"\n fill-rule=\"evenodd\"\n />\n </svg>\n </span>\n <div *ngFor=\"let pageNumber of pages\">\n <span\n (click)=\"updateSelectedPage(pageNumber)\"\n *ngIf=\"pageNumber != 0\"\n [ngClass]=\"{ 'page-active': pageNumber == config.paginationConfig?.selectedPage }\"\n class=\"page\"\n >{{ pageNumber }}</span\n >\n <span *ngIf=\"pageNumber == 0\" class=\"page-seperator\">\n <div [ngStyle]=\"{ display: 'flex' }\">\n <span class=\"dot\" [ngStyle]=\"{ 'margin-right': '4px' }\"></span>\n <span class=\"dot\" [ngStyle]=\"{ 'margin-right': '4px' }\"></span>\n <span class=\"dot\"></span>\n </div> \n </span>\n </div>\n <span (click)=\"updateSelectedPage(config.paginationConfig?.selectedPage + 1)\" class=\"page\">\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 7 10\" width=\"7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n clip-rule=\"evenodd\"\n d=\"M6.1426 5.56295C6.14421 5.56139 6.14581 5.55982 6.14741 5.55824C6.30405 5.40408 6.38236 5.20203 6.38236 4.99998C6.38236 4.79793 6.30405 4.59588 6.14741 4.44172C6.14581 4.44014 6.14421 4.43858 6.1426 4.43702L1.86934 0.231231C1.55608 -0.0770771 1.0482 -0.0770771 0.734942 0.231231C0.421688 0.53954 0.421688 1.03941 0.734942 1.34772L4.4458 4.99998L0.734941 8.65225C0.421686 8.96055 0.421686 9.46042 0.734941 9.76873C1.0482 10.077 1.55608 10.077 1.86934 9.76873L6.1426 5.56295Z\"\n fill=\"#181F33\"\n fill-rule=\"evenodd\"\n />\n </svg>\n </span>\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n ViewChildren\n} from \"@angular/core\";\nimport { Filter, TableFilterComponent } from \"./filter/filter.component\";\nimport { SortState } from './sort-icons.directive';\nimport { DEFAULT_TABLE_CONFIG } from './table.config';\n\n@Component({\n selector: \"mis-table\",\n templateUrl: \"table.component.html\",\n styleUrls: [\"table.component.css\"]\n})\nexport class TableComponent implements OnInit, AfterViewInit, OnChanges {\n\n // Initialize with -1 to indicate no row is colored at the beginning\n activeRowIndex: number = 0; \n\n // Filter related variables\n showFilter: boolean = false;\n filterName: string = \"\";\n filterData: Array<Filter> = [];\n filterContainerStyles: any = {};\n appliedFilters: { [key: string]: Array<{ name: string; value: string }> } = {};\n @Output() filtersUpdated = new EventEmitter<{\n [key: string]: Array<{ name: string; value: string }>;\n }>();\n\n @ViewChild(\"filter\") filter: TableFilterComponent | any;\n @ViewChildren(\"colHeaderRef\") colHeaders: QueryList<ElementRef> | any;\n\n // Pagination related variables\n pages: Array<number> = [];\n tableLength: number;\n @Output() pageSelected = new EventEmitter<number>();\n\n @Input(\"tableConfig\") config: TableConfig | any;\n @Input() subTableconfig: TableConfig | any;\n @Input() tableDataLoading: boolean | any;\n @Input() expandedIndex: number | any;\n @Input() tableData: Array<Array<any>> = [];\n @Input() subTableData: Array<Array<any>> = [];\n @Input() subTableDataLoading: boolean | any;\n @ViewChild(\"table\") table: ElementRef | any;\n\n // Sorting related properties\n currentSort: SortState | null = null;\n multiColumnSort: SortState[] = [];\n @Output() sortChange = new EventEmitter<SortState>();\n\n constructor(private renderer: Renderer2) { }\n\n // Function to handle row click\n selectRow(index: number) {\n this.activeRowIndex = index; // Set the selected index to the clicked row's index\n !!this.config.rowConfig.action && this.config.rowConfig.action(index);\n }\n ngOnInit(): void {\n // Merge default config with provided config\n this.config = {\n ...DEFAULT_TABLE_CONFIG,\n ...this.config\n };\n \n console.log(\"Table Config:\", this.config);\n console.log(\"Table Data:\", this.tableData);\n this.tableLength = !!this.tableData ? this.tableData.length : 0;\n this.initializeFilters();\n if (this.config.paginationConfig) {\n this.initializePagination();\n }\n if (this.config.canScrollHorizontally === undefined) {\n this.config.canScrollHorizontally = false;\n }\n document.addEventListener(\"click\", event => {\n if (this.filter) {\n let isCheckBoxClicked = true;\n let targetElement = event.target as HTMLSpanElement;\n if (targetElement.className === \"checkmark\") {\n isCheckBoxClicked = true;\n this.showFilter = true;\n }\n let isClickInsideElement = this.filter.container.nativeElement.contains(event.target);\n if (!isClickInsideElement && !isCheckBoxClicked) {\n this.toggleFilter(this.filterName);\n }\n }\n });\n }\n ngAfterViewInit() {\n if (this.config.paginationConfig) {\n let height = this.config.height;\n this.renderer.setStyle(this.table.nativeElement, \"height\", height - 56 + \"px\");\n }\n }\n ngOnChanges() {\n this.tableLength = !!this.tableData ? this.tableData.length : 0;\n this.activeRowIndex = this.config.activeRowIndex || 0;\n }\n\n // Filter related functions\n initializeFilters() {\n for (let colHeader of this.config?.colHeaderConfig) {\n if (colHeader.filters) {\n let filters = [];\n for (let filter of colHeader.filters) {\n if (filter.checked) {\n filters.push({\n name: filter.name,\n value: filter.value\n });\n }\n }\n if (filters.length > 0) this.appliedFilters[colHeader.data] = filters;\n }\n }\n }\n toggleFilter(filterName: string) {\n if (!this.showFilter) {\n this.filterName = filterName;\n this.showFilter = true;\n\n let offSet = 0;\n let colHeadersReversed = this.colHeaders.toArray().reverse();\n\n for (let header of colHeadersReversed) {\n if (header.nativeElement.innerText === filterName) break;\n offSet += header.nativeElement.offsetWidth;\n }\n this.filterContainerStyles = {\n top: \"44px\",\n right: offSet > 0 ? offSet - 116 + \"px\" : \"12px\"\n };\n } else {\n this.filterName = \"\";\n this.filterData = [];\n this.showFilter = false;\n }\n }\n updateAppliedFilters(appliedFilters: Array<{ name: string; value: string }>) {\n if (appliedFilters.length == 0) {\n delete this.appliedFilters[this.filterName];\n } else {\n this.appliedFilters[this.filterName] = appliedFilters;\n }\n this.filtersUpdated.emit({ ...this.appliedFilters });\n this.toggleFilter(this.filterName);\n }\n\n // Pagination related functions\n initializePagination() {\n if (this.config.paginationConfig) {\n let len = this.config.paginationConfig.noOfPages;\n if (len <= 7) {\n for (let i = 1; i <= len; i++) {\n this.pages.push(i);\n }\n } else {\n this.pages = [1, 2, 3, 4, 0, len];\n }\n }\n }\n updateSelectedPage(pageNumber: number) {\n if (pageNumber < 1 || pageNumber > this.config.paginationConfig.noOfPages) return;\n this.config.paginationConfig.selectedPage = pageNumber;\n let len = this.config.paginationConfig.noOfPages;\n if (len > 7) {\n if (pageNumber - 2 <= 1) {\n this.pages = [1, 2, 3, 4, 0, len];\n } else if (pageNumber - 2 > 1 && pageNumber + 2 < len) {\n this.pages = [1, 0, pageNumber - 1, pageNumber, pageNumber + 1, 0, len];\n } else if (pageNumber + 2 >= len) {\n this.pages = [1, 0, len - 3, len - 2, len - 1, len];\n }\n }\n this.pageSelected.emit(this.config.paginationConfig?.selectedPage);\n }\n\n // Main container related functions\n getContainerHeight() {\n if (this.config?.height) return this.config.height;\n else return \"\";\n }\n getContainerWidth() {\n if (this.config?.width) return this.config.width;\n else return \"\";\n }\n\n // Column Headers related functions\n getColHeadersRowStyles() {\n const { colHeadersRowConfig } = this.config;\n const minHeight = colHeadersRowConfig?.height || \"44px\";\n const borderTop = colHeadersRowConfig?.style?.borderTop || \"\";\n const borderBottom = colHeadersRowConfig?.style?.borderBottom || \"1px solid #E0E0E0\";\n const backgroundColor = colHeadersRowConfig?.style?.backgroundColor || \"#FFFFFF\";\n const fontSize = colHeadersRowConfig?.style?.fontSize || \"14px\";\n return {\n 'min-height': minHeight,\n 'border-top': borderTop,\n 'border-bottom': borderBottom,\n 'background-color': backgroundColor,\n 'font-size': fontSize\n };\n }\n\n onSortChange(sortState: SortState) {\n this.currentSort = sortState;\n if (this.config.multiColumnSort) {\n const index = this.multiColumnSort.findIndex(sort => sort.column === sortState.column);\n if (index !== -1) {\n if (sortState.direction === null) {\n this.multiColumnSort.splice(index, 1);\n } else {\n this.multiColumnSort[index] = sortState;\n }\n } else if (sortState.direction !== null) {\n this.multiColumnSort.push(sortState);\n }\n }\n console.log(\"Multi Column Sort:\", sortState);\n this.sortChange.emit(sortState);\n }\n\n}\n\nexport interface TableConfig {\n height: string | \"100%\";\n width: string | \"100%\";\n paginationConfig?: PaginationConfig | undefined | null;\n colHeadersRowConfig: RowConfig | undefined | null;\n rowConfig: RowConfig | undefined | null;\n colHeaderConfig: Array<ColHeaderConfig>;\n colConfig: Array<ColConfig>;\n canExpand?: boolean;\n canScrollHorizontally?: boolean;\n cellHover?: boolean;\n activeRowIndex?: number;\n multiColumnSort?: boolean;\n sortAscIcon?: string;\n sortDescIcon?: string;\n}\nexport interface PaginationConfig {\n noOfPages: number;\n rowsPerPage: number;\n totalNoOfRows: number;\n selectedPage?: number;\n}\nexport interface RowConfig {\n height?: string | undefined | null;\n style?: {};\n action?: any;\n isSortable?: boolean;\n}\nexport interface ColHeaderConfig {\n type: \"text\" | \"number\" | \"custom\";\n data: any;\n componentRef?: any;\n filters?: Array<Filter> | null;\n style?: {};\n action?: any;\n isSortable?: boolean;\n}\nexport interface ColConfig {\n type: \"text\" | \"number\" | \"custom\";\n componentRef?: any;\n style?: {};\n action?: any;\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { TableComponent } from \"./table.component\";\nimport { CustomTableCellDirective } from \"./custom-table-cell.directive\";\nimport { SubTableComponent } from \"./sub-table/sub-table.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { TableFilterComponent } from \"./filter/filter.component\";\nimport { CheckboxModule } from \"mis-crystal-design-system/checkbox\";\nimport { ScrollingModule } from \"@angular/cdk/scrolling\";\nimport { SortIconsDirective } from \"./sort-icons.directive\";\n\n@NgModule({\n declarations: [\n TableComponent, \n SubTableComponent, \n TableFilterComponent, \n CustomTableCellDirective,\n SortIconsDirective\n ],\n imports: [CommonModule, CheckboxModule, ScrollingModule],\n exports: [\n TableComponent, \n SubTableComponent, \n TableFilterComponent, \n CustomTableCellDirective,\n SortIconsDirective\n ]\n})\nexport class TableModule {\n static forRoot(): ModuleWithProviders<TableModule> {\n return { ngModule: TableModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_c3","_c2","_c7","_c5","_c6","_c4","_c1"],"mappings":"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"}
1
+ {"version":3,"file":"mis-crystal-design-system-table.mjs","sources":["../../../projects/mis-components/table/table.config.ts","../../../projects/mis-components/table/custom-table-cell.directive.ts","../../../projects/mis-components/table/sub-table/sub-table.component.html","../../../projects/mis-components/table/sub-table/sub-table.component.ts","../../../projects/mis-components/table/filter/filter.component.html","../../../projects/mis-components/table/filter/filter.component.ts","../../../projects/mis-components/table/sort-icons.directive.ts","../../../projects/mis-components/table/table.component.html","../../../projects/mis-components/table/table.component.ts","../../../projects/mis-components/table/table.module.ts","../../../projects/mis-components/table/mis-crystal-design-system-table.ts"],"sourcesContent":["import { TableConfig } from './table.component';\n\nexport const DEFAULT_TABLE_CONFIG: Partial<TableConfig> = {\n sortAscIcon: 'assets/sort-asc.svg',\n sortDescIcon: 'assets/sort-desc.svg',\n multiColumnSort: false\n}; ","import { ComponentFactoryResolver, Directive, Input, ViewContainerRef } from \"@angular/core\";\n\n@Directive({\n selector: \"[customTableCell]\"\n})\nexport class CustomTableCellDirective {\n private ref: any;\n private component: any;\n private cellData: any;\n\n @Input() set customComponent(value: any) {\n this.component = value;\n this.createComponent();\n }\n @Input() set data(value: any) {\n this.cellData = value;\n if (this.ref) {\n this.ref.instance.data = this.cellData;\n }\n }\n\n constructor(private viewContainerRef: ViewContainerRef, private componentFactoryResolver: ComponentFactoryResolver) {}\n\n createComponent() {\n if (this.component) {\n const cmpFactoryResolver = this.componentFactoryResolver.resolveComponentFactory(this.component);\n this.viewContainerRef.clear();\n this.ref = this.viewContainerRef.createComponent(cmpFactoryResolver);\n this.setData();\n }\n }\n setData() {\n this.ref.instance.data = this.cellData;\n }\n}\n","<div\n id=\"main-container\"\n [ngStyle]=\"{\n height: getContainerHeight(),\n width: getContainerWidth()\n }\"\n>\n <div id=\"table-container\" #table>\n <div\n id=\"col-headers-container\"\n *ngIf=\"!!config.showHeader\"\n [ngStyle]=\"{\n height: getColHeadersRowHeight(),\n 'border-top': getColHeadersRowBorderTop(),\n 'border-bottom': getColHeadersRowBorderBottom()\n }\"\n >\n <div\n class=\"col-header\"\n (click)=\"colHeader?.action ? colHeader?.action(colHeader) : null\"\n *ngFor=\"let colHeader of config?.colHeaderConfig\"\n [style]=\"colHeader?.style\"\n [ngStyle]=\"{\n width: colHeader?.style?.width || '',\n cursor: colHeader.action ? 'pointer' : 'default',\n 'justify-content': colHeader?.style?.justifyContent\n ? colHeader?.style?.justifyContent\n : colHeader.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p *ngIf=\"colHeader?.type !== 'custom'\" class=\"col-header-text\">\n {{ colHeader?.data || \" \" }}\n </p>\n <ng-template\n *ngIf=\"colHeader?.type === 'custom'\"\n customTableCell\n [customComponent]=\"colHeader?.componentRef\"\n [data]=\"colHeader.data\"\n ></ng-template>\n </div>\n </div>\n <div>\n <cdk-virtual-scroll-viewport\n [minBufferPx]=\"config.dataContainerMaxHeight || '400'\"\n [maxBufferPx]=\"config.dataContainerMaxHeight + 200 || '600'\"\n [style.overflow]=\"'overlay'\"\n [style.height]=\"config.dataContainerMaxHeight || '400px'\"\n itemSize=\"50\"\n id=\"data-container\"\n >\n <div\n class=\"row-wrapper\"\n *cdkVirtualFor=\"let row of tableData; let i = index\"\n [ngStyle]=\"{\n backgroundColor: i % 2 === 0 ? '#FAFAFA' : null\n }\"\n >\n <div class=\"t-row\">\n <div\n (click)=\"config?.colConfig[i]?.action ? config?.colConfig[i]?.action(col) : null\"\n *ngFor=\"let col of row; let i = index\"\n [ngStyle]=\"{\n width: config?.colConfig[i]?.style?.width || config?.colHeaderConfig[i]?.style?.width || ''\n }\"\n class=\"t-col-container\"\n >\n <div\n class=\"t-col\"\n [style]=\"config.colConfig[i]?.style\"\n [ngStyle]=\"{\n width: '100%',\n cursor: config.colConfig[i].action ? 'pointer' : 'default',\n 'justify-content': config.colConfig[i]?.style?.justifyContent\n ? config.colConfig[i]?.style?.justifyContent\n : config.colConfig[i].type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p\n *ngIf=\"config.colConfig[i].type !== 'custom'\"\n [ngStyle]=\"{\n color: config?.colConfig[i]?.style?.color ? config?.colConfig[i]?.style?.color : ''\n }\"\n class=\"t-col-text\"\n >\n {{ col }}\n </p>\n <ng-template\n *ngIf=\"config.colConfig[i].type === 'custom'\"\n [customComponent]=\"config.colConfig[i].componentRef\"\n [data]=\"col\"\n customTableCell\n ></ng-template>\n </div>\n </div>\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n </div>\n </div>\n</div>\n","import { AfterViewInit, Component, ElementRef, Input, OnInit, Renderer2, ViewChild } from \"@angular/core\";\n\n@Component({\n selector: \"sub-table\",\n templateUrl: \"sub-table.component.html\",\n styleUrls: [\"sub-table.component.css\"]\n})\nexport class SubTableComponent implements OnInit, AfterViewInit {\n selectedPage = 1;\n pages: Array<number> = [];\n\n @Input() config: SubTableConfig | any;\n @Input() tableData: Array<Array<any>> = [];\n @ViewChild(\"table\") table: ElementRef | any;\n constructor(private renderer: Renderer2) {}\n\n ngOnInit() {}\n\n ngAfterViewInit() {\n if (this.config.paginationConfig) {\n let height = this.table.nativeElement.offsetHeight;\n this.renderer.setStyle(this.table.nativeElement, \"height\", height - 56 + \"px\");\n }\n }\n\n // Main container related functions\n getContainerHeight() {\n if (this.config.height) return this.config.height;\n else return \"\";\n }\n getContainerWidth() {\n if (this.config.width) return this.config.width;\n else return \"\";\n }\n\n // Column Headers related functions\n getColHeadersRowHeight() {\n if (this.config.colHeadersRowConfig && this.config.colHeadersRowConfig.height) {\n return this.config.colHeadersRowConfig.height;\n } else return \"44px\";\n }\n getColHeadersRowBorderTop() {\n if (this.config.colHeadersRowConfig && this.config.colHeadersRowConfig.style?.borderTop) {\n return this.config.colHeadersRowConfig.style?.borderTop;\n } else return \"\";\n }\n getColHeadersRowBorderBottom() {\n if (this.config.colHeadersRowConfig && this.config.colHeadersRowConfig.style?.borderBottom) {\n return this.config.colHeadersRowConfig.style?.borderBottom;\n } else return \"1px solid #E0E0E0\";\n }\n}\n\nexport interface SubTableConfig {\n height: string | \"100%\";\n width: string | \"100%\";\n dataContainerMaxHeight: string | \"400px\";\n showHeader?: boolean | undefined;\n rowConfig: SubTableRowConfig | undefined | null;\n colHeaderConfig?: Array<SubTableColHeaderConfig>;\n colConfig: Array<SubTableColConfig>;\n}\n\nexport interface SubTableRowConfig {\n height?: string | undefined | null;\n style?: {};\n}\nexport interface SubTableColHeaderConfig {\n type: \"text\" | \"number\" | \"custom\";\n data: any;\n componentRef?: any;\n style?: {};\n action?: any;\n}\nexport interface SubTableColConfig {\n type: \"text\" | \"number\" | \"custom\";\n componentRef?: any;\n style?: {};\n action?: any;\n}\n","<div id=\"main-container\" #mainContainer [ngStyle]=\"containerStyles\">\n <div id=\"search-bar-container\">\n <input (keyup)=\"updateSearchValue($event)\" type=\"text\" placeholder=\"Search\" />\n <svg id=\"search-icon\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1.21496 8.14563C1.21496 4.3179 4.33709 1.21165 8.19249 1.21165C12.0479 1.21165 15.17 4.3179 15.17 8.14563C15.17 9.69308 14.6598 11.1226 13.797 12.2767L12.3684 13.7013C11.2043 14.5668 9.75891 15.0796 8.19249 15.0796C4.33709 15.0796 1.21496 11.9734 1.21496 8.14563ZM12.9419 14.7835C11.602 15.7329 9.96259 16.2913 8.19249 16.2913C3.66965 16.2913 -0.00012207 12.6461 -0.00012207 8.14563C-0.00012207 3.64512 3.66965 0 8.19249 0C12.7153 0 16.3851 3.64512 16.3851 8.14563C16.3851 9.93713 15.8036 11.5931 14.8183 12.9375L16.836 14.4048C17.6704 14.912 18.7553 15.6543 17.2453 17.215C15.7352 18.7756 15.0098 17.6663 14.499 16.8364L12.9419 14.7835Z\"\n fill=\"#6A737D\"\n />\n </svg>\n </div>\n <div id=\"filters-main-container\">\n <div class=\"filters-sub-container\">\n <div *ngFor=\"let filter of getCheckedFilters()\">\n <div class=\"filter\">\n <mis-checkbox [checked]=\"true\" [name]=\"filter.value\" (valueChange)=\"updateFilter($event)\"></mis-checkbox>\n <span class=\"filter-text\">{{ filter.name }}</span>\n </div>\n </div>\n </div>\n <div class=\"separator\" [ngStyle]=\"{ 'margin': '16px 0px' }\" *ngIf=\"getCheckedFilters().length && getCheckedFilters().length < filtersData.length\"></div>\n <div class=\"filters-sub-container\">\n <div *ngFor=\"let filter of getFiltersBasedOnSearchValue()\">\n <div class=\"filter\" *ngIf=\"!filter.checked\">\n <mis-checkbox [checked]=\"false\" [name]=\"filter.value\" (valueChange)=\"updateFilter($event)\"></mis-checkbox>\n <span class=\"filter-text\">{{ filter.name }}</span>\n </div>\n </div>\n <div id=\"no-results-container\" *ngIf=\"getFiltersBasedOnSearchValue().length < 1\">\n <span class=\"filter-text\">No matches found</span>\n </div>\n </div>\n <div class=\"separator\" [ngStyle]=\"{ 'margin': '16px 0px' }\"></div>\n <div id=\"buttons-container\">\n <button id=\"reset-btn\" [ngStyle]=\"{ 'margin-right': '8px' }\" (click)=\"resetFilters()\">Reset</button>\n <button id=\"apply-btn\" (click)=\"applyFilters()\">Apply</button>\n </div>\n </div>\n</div>\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from \"@angular/core\";\n\n@Component({\n selector: \"mis-table-filter\",\n templateUrl: \"filter.component.html\",\n styleUrls: [\"filter.component.css\"]\n})\nexport class TableFilterComponent implements OnInit {\n @Input() filtersData: Array<Filter> = [];\n @Input() containerStyles: any = {};\n\n @Output() filtersApplied = new EventEmitter<any>();\n\n @ViewChild(\"mainContainer\") container: ElementRef | undefined;\n\n filtersMap: any = {};\n searchValue: string = \"\";\n\n constructor() {}\n\n ngOnInit(): void {\n this.filtersData.forEach(filter => {\n this.filtersMap[filter.value] = filter;\n });\n }\n resetFilters() {\n this.filtersData.forEach(filter => {\n this.filtersMap[filter.value].checked = false;\n });\n this.filtersApplied.emit([]);\n }\n applyFilters() {\n let list = Object.values(this.filtersMap)\n .filter((filter: Filter | any) => filter.checked)\n .map((filter: Filter | any) => {\n return {\n name: filter.name,\n value: filter.value\n };\n });\n this.filtersApplied.emit(list);\n }\n updateSearchValue(event: any) {\n this.searchValue = event.target.value;\n }\n updateFilter(data: any) {\n if (this.filtersMap[data.name]) {\n this.filtersMap[data.name].checked = !this.filtersMap[data.name].checked;\n }\n }\n getFiltersBasedOnSearchValue(): Filter[] | any {\n let list = Object.values(this.filtersMap);\n list = list.filter((filter: Filter | any) => {\n return filter.name.match(new RegExp(this.searchValue, \"i\"));\n });\n return list.sort(this.mySort);\n }\n getCheckedFilters(): Filter[] | any {\n let list = Object.values(this.filtersMap);\n list = list.filter((filter: Filter | any) => filter.checked).sort(this.mySort);\n return list;\n }\n mySort = (a: Filter | any, b: Filter | any) => {\n if (a.name < b.name) return -1;\n else if (b.name < a.name) return 1;\n else return 0;\n };\n}\nexport interface Filter {\n name: string;\n value: string;\n checked: boolean;\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n input,\n output,\n signal,\n} from '@angular/core';\n\nexport interface SortState {\n column: string;\n direction: 'ASC' | 'DESC' | '';\n columnNumber?: number;\n}\n\nexport interface SortColumn {\n data: string;\n sortAscIcon?: string;\n sortDescIcon?: string;\n}\n\n@Directive({\n selector: '[appSortIcons]',\n})\nexport class SortIconsDirective implements OnInit, OnChanges {\n // Convert inputs to signals\n column = input<SortColumn>();\n activeSort = input<SortState>();\n activeSorts = input<SortState[]>();\n multiColumnSort = input<boolean>(false);\n \n // Convert output to signal\n sortChange = output<SortState>();\n multiSortChange = output<SortState[]>();\n\n // Internal state as signals\n currentDirection = signal<'ASC' | 'DESC' | ''>('');\n private columnNumber = signal<number>(0);\n\n // Assets\n private upIcon!: HTMLImageElement;\n private downIcon!: HTMLImageElement;\n private sortOrderElement?: HTMLSpanElement;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnInit() {\n \n // Get column number from data-column attribute\n const columnAttr = this.el.nativeElement.getAttribute('data-column');\n if (columnAttr) {\n this.columnNumber.set(parseInt(columnAttr, 10));\n }\n\n // Create a container for the icons\n const container = this.renderer.createElement('div');\n this.renderer?.setStyle(container, 'display', 'inline-flex');\n this.renderer?.setStyle(container, 'align-items', 'center');\n this.renderer?.setStyle(container, 'gap', '0.5rem');\n\n const iconContainer = this.renderer.createElement('div');\n this.renderer?.setStyle(iconContainer, 'display', 'inline-flex');\n this.renderer?.setStyle(iconContainer, 'flex-direction', 'column');\n this.renderer?.setStyle(iconContainer, 'align-items', 'center');\n this.renderer?.setStyle(iconContainer, 'gap', '5px');\n\n this.upIcon = this.renderer.createElement('img');\n this.renderer?.setAttribute(this.upIcon, 'src', this.column()?.sortAscIcon);\n this.renderer?.setStyle(this.upIcon, 'opacity', '0.5');\n this.renderer?.setStyle(this.upIcon, 'transition', 'opacity 0.3s ease');\n this.renderer?.setStyle(this.upIcon, 'width', '9px');\n this.renderer?.setStyle(this.upIcon, 'cursor', 'pointer');\n this.renderer?.listen(this.upIcon, 'click', () => this.setSortDirection('ASC'));\n\n this.downIcon = this.renderer.createElement('img');\n this.renderer?.setAttribute(this.downIcon, 'src', this.column()?.sortDescIcon);\n this.renderer?.setStyle(this.downIcon, 'opacity', '0.5');\n this.renderer?.setStyle(this.downIcon, 'transition', 'opacity 0.3s ease');\n this.renderer?.setStyle(this.downIcon, 'width', '9px');\n this.renderer?.setStyle(this.downIcon, 'cursor', 'pointer');\n this.renderer?.listen(this.downIcon, 'click', () => this.setSortDirection('DESC'));\n\n this.renderer?.appendChild(iconContainer, this.upIcon);\n this.renderer?.appendChild(iconContainer, this.downIcon);\n this.renderer?.appendChild(container, iconContainer);\n\n if (this.multiColumnSort()) {\n this.sortOrderElement = this.renderer.createElement('span');\n this.renderer?.setStyle(this.sortOrderElement, 'font-size', '12px');\n this.renderer?.setStyle(this.sortOrderElement, 'font-weight', 'bold');\n this.renderer?.setStyle(this.sortOrderElement, 'color', '#000');\n this.renderer?.appendChild(container, this.sortOrderElement);\n }\n\n this.renderer?.appendChild(this.el.nativeElement, container);\n this.updateIconStyles();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['activeSort'] || changes['activeSorts']) {\n this.updateIconStyles();\n }\n }\n\n private setSortDirection(direction: 'ASC' | 'DESC'): void {\n if (this.multiColumnSort()) {\n this.handleMultiColumnSort(direction);\n } else {\n this.handleSingleColumnSort(direction);\n }\n }\n\n private handleSingleColumnSort(direction: 'ASC' | 'DESC'): void {\n if (this.currentDirection() === direction) {\n this.currentDirection.set(''); // Reset sorting if the same direction is clicked\n } else {\n this.currentDirection.set(direction);\n }\n\n this.sortChange.emit({ \n column: this.column()?.data || '', \n direction: this.currentDirection(),\n columnNumber: this.columnNumber()\n });\n this.updateIconStyles();\n }\n\n private handleMultiColumnSort(direction: 'ASC' | 'DESC'): void {\n const existingSortIndex = this.activeSorts().findIndex(sort => sort.column === this.column()?.data);\n \n if (existingSortIndex !== -1) {\n if (this.activeSorts()[existingSortIndex].direction !== direction) {\n this.activeSorts()[existingSortIndex].direction = direction;\n this.activeSorts()[existingSortIndex].columnNumber = this.columnNumber();\n } else {\n return;\n }\n } else {\n this.activeSorts().push({ \n column: this.column()?.data || '', \n direction,\n columnNumber: this.columnNumber()\n });\n }\n this.multiSortChange.emit([...this.activeSorts()]);\n this.updateIconStyles();\n }\n\n private updateIconStyles(): void {\n console.log(\"Col\",this.column()?.data)\n if (this.multiColumnSort()) {\n this.updateMultiColumnIconStyles();\n } else {\n this.updateSingleColumnIconStyles();\n }\n }\n\n private updateSingleColumnIconStyles(): void {\n const isActiveColumn = this.activeSort()?.column === this.column()?.data;\n\n setTimeout(() => {\n this.renderer?.setStyle(\n this.upIcon,\n 'opacity',\n isActiveColumn && this.currentDirection() === 'ASC' ? '1' : '0.5'\n );\n this.renderer?.setStyle(\n this.downIcon,\n 'opacity',\n isActiveColumn && this.currentDirection() === 'DESC' ? '1' : '0.5'\n );\n }, 0);\n }\n\n private updateMultiColumnIconStyles(): void {\n const columnSort = this.activeSorts().find(sort => sort.column === this.column()?.data);\n \n setTimeout(() => {\n this.renderer?.setStyle(\n this.upIcon,\n 'opacity',\n columnSort?.direction === 'ASC' ? '1' : '0.5'\n );\n this.renderer?.setStyle(\n this.downIcon,\n 'opacity',\n columnSort?.direction === 'DESC' ? '1' : '0.5'\n );\n\n if (this.sortOrderElement) {\n const sortIndex = this.activeSorts().findIndex(sort => sort.column === this.column()?.data);\n if (sortIndex !== -1) {\n this.renderer?.setProperty(this.sortOrderElement, 'textContent', (sortIndex + 1).toString());\n } else {\n this.renderer?.setProperty(this.sortOrderElement, 'textContent', '');\n }\n }\n }, 0);\n }\n}","<div\n [ngStyle]=\"{\n height: getContainerHeight(),\n width: getContainerWidth(),\n 'overflow-x': config.canScrollHorizontally ? 'auto' : 'unset'\n }\"\n id=\"main-container\"\n>\n <mis-table-filter\n #filter\n (filtersApplied)=\"updateAppliedFilters($event)\"\n *ngIf=\"showFilter\"\n [containerStyles]=\"filterContainerStyles\"\n [filtersData]=\"filterData\"\n ></mis-table-filter>\n <div\n #table\n id=\"table-container\"\n [ngClass]=\"{ 'no-scrollbar': expandedIndex < 0, scrollbar: !(expandedIndex < 0), 'scroll-horizontally': config.canScrollHorizontally }\"\n >\n <div\n [ngStyle]=\"getColHeadersRowStyles()\"\n id=\"col-headers-container\"\n >\n <div\n #colHeaderRef\n (click)=\"colHeader?.action ? colHeader?.action(colHeader) : null\"\n *ngFor=\"let colHeader of config?.colHeaderConfig\"\n class=\"col-header\"\n [ngStyle]=\"{\n width: colHeader?.style?.width || '',\n cursor: colHeader.action ? 'pointer' : 'default',\n 'justify-content': colHeader?.style?.justifyContent\n ? colHeader?.style?.justifyContent\n : colHeader.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p *ngIf=\"colHeader?.type !== 'custom'\" class=\"col-header-text\">\n {{ colHeader?.data || \" \" }}\n </p>\n <ng-template *ngIf=\"colHeader?.type === 'custom'\" customTableCell [customComponent]=\"colHeader?.componentRef\" [data]=\"colHeader.data\"></ng-template>\n <span *ngIf=\"colHeader?.isSortable\" appSortIcons\n [column]=\"colHeader\"\n [activeSort]=\"currentSort\"\n [activeSorts]=\"multiColumnSort\"\n [multiColumnSort]=\"config.multiColumnSort\"\n (sortChange)=\"onSortChange($event)\">\n </span>\n </div>\n </div>\n <div id=\"data-container\">\n <div class=\"row-wrapper\" *ngFor=\"let row of tableData; let i = index\">\n <div\n class=\"t-row\"\n [ngClass]=\"{ 't-row-hover': config.cellHover, 'active-row': i === activeRowIndex }\"\n [ngStyle]=\"{ 'min-height': config?.rowConfig?.height ? config.rowConfig.height : '44px' }\"\n (click)=\"selectRow(i)\"\n >\n <div\n (click)=\"config?.colConfig[i]?.action ? config?.colConfig[i]?.action(col) : null\"\n *ngFor=\"let col of row; let i = index\"\n [ngStyle]=\"{\n width: config?.colConfig[i]?.style?.width || config?.colHeaderConfig[i]?.style?.width || ''\n }\"\n class=\"t-col-container\"\n [ngClass]=\"{ 't-col-container-hover': config.cellHover }\"\n >\n <div\n class=\"t-col\"\n [style]=\"config.colConfig[i]?.style\"\n [ngStyle]=\"{\n width: '100%',\n cursor: config.colConfig[i]?.action ? 'pointer' : 'default',\n 'justify-content': config.colConfig[i]?.style?.justifyContent\n ? config.colConfig[i]?.style?.justifyContent\n : config.colConfig[i]?.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p\n *ngIf=\"config.colConfig[i]?.type !== 'custom'\"\n [ngStyle]=\"{\n color: config?.colConfig[i]?.style?.color ? config?.colConfig[i]?.style?.color : ''\n }\"\n [ngClass]=\"{'text-ellipsis': !!config?.colConfig[i]?.style?.textEllipsis}\"\n class=\"t-col-text\"\n >\n {{ col }}\n </p>\n <ng-template\n *ngIf=\"config.colConfig[i]?.type === 'custom'\"\n [customComponent]=\"config.colConfig[i].componentRef\"\n [data]=\"col\"\n customTableCell\n ></ng-template>\n </div>\n </div>\n </div>\n <div *ngIf=\"config?.canExpand && expandedIndex === i\" class=\"sub-row\">\n <ng-container *ngIf=\"subTableDataLoading\">\n <div [ngStyle]=\"{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '16px'\n }\">\n Loading...\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"!subTableDataLoading && subTableData.length === 0\">\n <div [ngStyle]=\"{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '16px'\n }\">\n No Data Available...\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"!subTableDataLoading && subTableData.length > 0\">\n <sub-table [config]=\"subTableconfig\" [tableData]=\"subTableData\"></sub-table>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"config?.paginationConfig && (tableLength >= config.paginationConfig.rowsPerPage || config.paginationConfig?.selectedPage !== 1)\"\n id=\"pagination-container\"\n >\n <p id=\"pagination-text\">\n Showing\n {{ (config.paginationConfig?.selectedPage - 1) * config.paginationConfig.rowsPerPage + 1 }}-{{\n (config.paginationConfig?.selectedPage - 1) * config.paginationConfig.rowsPerPage + tableLength\n }}\n of {{ config.paginationConfig.totalNoOfRows }} items\n </p>\n <div id=\"pages-container\">\n <span (click)=\"updateSelectedPage(config.paginationConfig?.selectedPage - 1)\" class=\"page\">\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 7 10\" width=\"7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n clip-rule=\"evenodd\"\n d=\"M0.857405 5.56295C0.855794 5.56139 0.854188 5.55982 0.852588 5.55824C0.695955 5.40408 0.617641 5.20203 0.617647 4.99998C0.617641 4.79793 0.695955 4.59588 0.852588 4.44172C0.854188 4.44014 0.855794 4.43858 0.857404 4.43702L5.13066 0.231231C5.44392 -0.0770771 5.9518 -0.0770771 6.26506 0.231231C6.57831 0.53954 6.57831 1.03941 6.26506 1.34772L2.5542 4.99998L6.26506 8.65225C6.57831 8.96055 6.57831 9.46042 6.26506 9.76873C5.9518 10.077 5.44392 10.077 5.13066 9.76873L0.857405 5.56295Z\"\n fill=\"#181F33\"\n fill-rule=\"evenodd\"\n />\n </svg>\n </span>\n <div *ngFor=\"let pageNumber of pages\">\n <span\n (click)=\"updateSelectedPage(pageNumber)\"\n *ngIf=\"pageNumber != 0\"\n [ngClass]=\"{ 'page-active': pageNumber == config.paginationConfig?.selectedPage }\"\n class=\"page\"\n >{{ pageNumber }}</span\n >\n <span *ngIf=\"pageNumber == 0\" class=\"page-seperator\">\n <div [ngStyle]=\"{ display: 'flex' }\">\n <span class=\"dot\" [ngStyle]=\"{ 'margin-right': '4px' }\"></span>\n <span class=\"dot\" [ngStyle]=\"{ 'margin-right': '4px' }\"></span>\n <span class=\"dot\"></span>\n </div> \n </span>\n </div>\n <span (click)=\"updateSelectedPage(config.paginationConfig?.selectedPage + 1)\" class=\"page\">\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 7 10\" width=\"7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n clip-rule=\"evenodd\"\n d=\"M6.1426 5.56295C6.14421 5.56139 6.14581 5.55982 6.14741 5.55824C6.30405 5.40408 6.38236 5.20203 6.38236 4.99998C6.38236 4.79793 6.30405 4.59588 6.14741 4.44172C6.14581 4.44014 6.14421 4.43858 6.1426 4.43702L1.86934 0.231231C1.55608 -0.0770771 1.0482 -0.0770771 0.734942 0.231231C0.421688 0.53954 0.421688 1.03941 0.734942 1.34772L4.4458 4.99998L0.734941 8.65225C0.421686 8.96055 0.421686 9.46042 0.734941 9.76873C1.0482 10.077 1.55608 10.077 1.86934 9.76873L6.1426 5.56295Z\"\n fill=\"#181F33\"\n fill-rule=\"evenodd\"\n />\n </svg>\n </span>\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n ViewChildren\n} from \"@angular/core\";\nimport { Filter, TableFilterComponent } from \"./filter/filter.component\";\nimport { SortState } from './sort-icons.directive';\nimport { DEFAULT_TABLE_CONFIG } from './table.config';\n\n@Component({\n selector: \"mis-table\",\n templateUrl: \"table.component.html\",\n styleUrls: [\"table.component.css\"]\n})\nexport class TableComponent implements OnInit, AfterViewInit, OnChanges {\n\n // Initialize with -1 to indicate no row is colored at the beginning\n activeRowIndex: number = 0; \n\n // Filter related variables\n showFilter: boolean = false;\n filterName: string = \"\";\n filterData: Array<Filter> = [];\n filterContainerStyles: any = {};\n appliedFilters: { [key: string]: Array<{ name: string; value: string }> } = {};\n @Output() filtersUpdated = new EventEmitter<{\n [key: string]: Array<{ name: string; value: string }>;\n }>();\n\n @ViewChild(\"filter\") filter: TableFilterComponent | any;\n @ViewChildren(\"colHeaderRef\") colHeaders: QueryList<ElementRef> | any;\n\n // Pagination related variables\n pages: Array<number> = [];\n tableLength: number;\n @Output() pageSelected = new EventEmitter<number>();\n\n @Input(\"tableConfig\") config: TableConfig | any;\n @Input() subTableconfig: TableConfig | any;\n @Input() tableDataLoading: boolean | any;\n @Input() expandedIndex: number | any;\n @Input() tableData: Array<Array<any>> = [];\n @Input() subTableData: Array<Array<any>> = [];\n @Input() subTableDataLoading: boolean | any;\n @ViewChild(\"table\") table: ElementRef | any;\n\n // Sorting related properties\n currentSort: SortState | null = null;\n multiColumnSort: SortState[] = [];\n @Output() sortChange = new EventEmitter<SortState>();\n\n constructor(private renderer: Renderer2) { }\n\n // Function to handle row click\n selectRow(index: number) {\n this.activeRowIndex = index; // Set the selected index to the clicked row's index\n !!this.config.rowConfig.action && this.config.rowConfig.action(index);\n }\n ngOnInit(): void {\n // Merge default config with provided config\n this.config = {\n ...DEFAULT_TABLE_CONFIG,\n ...this.config\n };\n \n console.log(\"Table Config:\", this.config);\n console.log(\"Table Data:\", this.tableData);\n this.tableLength = !!this.tableData ? this.tableData.length : 0;\n this.initializeFilters();\n if (this.config.paginationConfig) {\n this.initializePagination();\n }\n if (this.config.canScrollHorizontally === undefined) {\n this.config.canScrollHorizontally = false;\n }\n document.addEventListener(\"click\", event => {\n if (this.filter) {\n let isCheckBoxClicked = true;\n let targetElement = event.target as HTMLSpanElement;\n if (targetElement.className === \"checkmark\") {\n isCheckBoxClicked = true;\n this.showFilter = true;\n }\n let isClickInsideElement = this.filter.container.nativeElement.contains(event.target);\n if (!isClickInsideElement && !isCheckBoxClicked) {\n this.toggleFilter(this.filterName);\n }\n }\n });\n }\n ngAfterViewInit() {\n if (this.config.paginationConfig) {\n let height = this.config.height;\n this.renderer.setStyle(this.table.nativeElement, \"height\", height - 56 + \"px\");\n }\n }\n ngOnChanges() {\n this.tableLength = !!this.tableData ? this.tableData.length : 0;\n this.activeRowIndex = this.config.activeRowIndex || 0;\n }\n\n // Filter related functions\n initializeFilters() {\n for (let colHeader of this.config?.colHeaderConfig) {\n if (colHeader.filters) {\n let filters = [];\n for (let filter of colHeader.filters) {\n if (filter.checked) {\n filters.push({\n name: filter.name,\n value: filter.value\n });\n }\n }\n if (filters.length > 0) this.appliedFilters[colHeader.data] = filters;\n }\n }\n }\n toggleFilter(filterName: string) {\n if (!this.showFilter) {\n this.filterName = filterName;\n this.showFilter = true;\n\n let offSet = 0;\n let colHeadersReversed = this.colHeaders.toArray().reverse();\n\n for (let header of colHeadersReversed) {\n if (header.nativeElement.innerText === filterName) break;\n offSet += header.nativeElement.offsetWidth;\n }\n this.filterContainerStyles = {\n top: \"44px\",\n right: offSet > 0 ? offSet - 116 + \"px\" : \"12px\"\n };\n } else {\n this.filterName = \"\";\n this.filterData = [];\n this.showFilter = false;\n }\n }\n updateAppliedFilters(appliedFilters: Array<{ name: string; value: string }>) {\n if (appliedFilters.length == 0) {\n delete this.appliedFilters[this.filterName];\n } else {\n this.appliedFilters[this.filterName] = appliedFilters;\n }\n this.filtersUpdated.emit({ ...this.appliedFilters });\n this.toggleFilter(this.filterName);\n }\n\n // Pagination related functions\n initializePagination() {\n if (this.config.paginationConfig) {\n let len = this.config.paginationConfig.noOfPages;\n if (len <= 7) {\n for (let i = 1; i <= len; i++) {\n this.pages.push(i);\n }\n } else {\n this.pages = [1, 2, 3, 4, 0, len];\n }\n }\n }\n updateSelectedPage(pageNumber: number) {\n if (pageNumber < 1 || pageNumber > this.config.paginationConfig.noOfPages) return;\n this.config.paginationConfig.selectedPage = pageNumber;\n let len = this.config.paginationConfig.noOfPages;\n if (len > 7) {\n if (pageNumber - 2 <= 1) {\n this.pages = [1, 2, 3, 4, 0, len];\n } else if (pageNumber - 2 > 1 && pageNumber + 2 < len) {\n this.pages = [1, 0, pageNumber - 1, pageNumber, pageNumber + 1, 0, len];\n } else if (pageNumber + 2 >= len) {\n this.pages = [1, 0, len - 3, len - 2, len - 1, len];\n }\n }\n this.pageSelected.emit(this.config.paginationConfig?.selectedPage);\n }\n\n // Main container related functions\n getContainerHeight() {\n if (this.config?.height) return this.config.height;\n else return \"\";\n }\n getContainerWidth() {\n if (this.config?.width) return this.config.width;\n else return \"\";\n }\n\n // Column Headers related functions\n getColHeadersRowStyles() {\n const { colHeadersRowConfig } = this.config;\n const minHeight = colHeadersRowConfig?.height || \"44px\";\n const borderTop = colHeadersRowConfig?.style?.borderTop || \"\";\n const borderBottom = colHeadersRowConfig?.style?.borderBottom || \"1px solid #E0E0E0\";\n const backgroundColor = colHeadersRowConfig?.style?.backgroundColor || \"#FFFFFF\";\n const fontSize = colHeadersRowConfig?.style?.fontSize || \"14px\";\n return {\n 'min-height': minHeight,\n 'border-top': borderTop,\n 'border-bottom': borderBottom,\n 'background-color': backgroundColor,\n 'font-size': fontSize\n };\n }\n\n onSortChange(sortState: SortState) {\n this.currentSort = sortState;\n if (this.config.multiColumnSort) {\n const index = this.multiColumnSort.findIndex(sort => sort.column === sortState.column);\n if (index !== -1) {\n if (sortState.direction === null) {\n this.multiColumnSort.splice(index, 1);\n } else {\n this.multiColumnSort[index] = sortState;\n }\n } else if (sortState.direction !== null) {\n this.multiColumnSort.push(sortState);\n }\n }\n console.log(\"Multi Column Sort:\", sortState);\n this.sortChange.emit(sortState);\n }\n\n}\n\nexport interface TableConfig {\n height: string | \"100%\";\n width: string | \"100%\";\n paginationConfig?: PaginationConfig | undefined | null;\n colHeadersRowConfig: RowConfig | undefined | null;\n rowConfig: RowConfig | undefined | null;\n colHeaderConfig: Array<ColHeaderConfig>;\n colConfig: Array<ColConfig>;\n canExpand?: boolean;\n canScrollHorizontally?: boolean;\n cellHover?: boolean;\n activeRowIndex?: number;\n multiColumnSort?: boolean;\n sortAscIcon?: string;\n sortDescIcon?: string;\n}\nexport interface PaginationConfig {\n noOfPages: number;\n rowsPerPage: number;\n totalNoOfRows: number;\n selectedPage?: number;\n}\nexport interface RowConfig {\n height?: string | undefined | null;\n style?: {};\n action?: any;\n isSortable?: boolean;\n}\nexport interface ColHeaderConfig {\n type: \"text\" | \"number\" | \"custom\";\n data: any;\n componentRef?: any;\n filters?: Array<Filter> | null;\n style?: {};\n action?: any;\n isSortable?: boolean;\n}\nexport interface ColConfig {\n type: \"text\" | \"number\" | \"custom\";\n componentRef?: any;\n style?: {};\n action?: any;\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { TableComponent } from \"./table.component\";\nimport { CustomTableCellDirective } from \"./custom-table-cell.directive\";\nimport { SubTableComponent } from \"./sub-table/sub-table.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { TableFilterComponent } from \"./filter/filter.component\";\nimport { CheckboxModule } from \"mis-crystal-design-system/checkbox\";\nimport { ScrollingModule } from \"@angular/cdk/scrolling\";\nimport { SortIconsDirective } from \"./sort-icons.directive\";\n\n@NgModule({\n declarations: [\n TableComponent, \n SubTableComponent, \n TableFilterComponent, \n CustomTableCellDirective,\n SortIconsDirective\n ],\n imports: [CommonModule, CheckboxModule, ScrollingModule],\n exports: [\n TableComponent, \n SubTableComponent, \n TableFilterComponent, \n CustomTableCellDirective,\n SortIconsDirective\n ]\n})\nexport class TableModule {\n static forRoot(): ModuleWithProviders<TableModule> {\n return { ngModule: TableModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_c3","_c2","_c7","_c5","_c6","_c4","_c1"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mis-crystal-design-system",
3
- "version": "18.0.8-test-1",
3
+ "version": "18.0.8-test-2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "*",
6
6
  "@angular/core": "*",
@@ -40,23 +40,17 @@
40
40
  "esm": "./esm2022/button/mis-crystal-design-system-button.mjs",
41
41
  "default": "./fesm2022/mis-crystal-design-system-button.mjs"
42
42
  },
43
- "./async-search-dropdown": {
44
- "types": "./async-search-dropdown/index.d.ts",
45
- "esm2022": "./esm2022/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.mjs",
46
- "esm": "./esm2022/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.mjs",
47
- "default": "./fesm2022/mis-crystal-design-system-async-search-dropdown.mjs"
48
- },
49
43
  "./checkbox": {
50
44
  "types": "./checkbox/index.d.ts",
51
45
  "esm2022": "./esm2022/checkbox/mis-crystal-design-system-checkbox.mjs",
52
46
  "esm": "./esm2022/checkbox/mis-crystal-design-system-checkbox.mjs",
53
47
  "default": "./fesm2022/mis-crystal-design-system-checkbox.mjs"
54
48
  },
55
- "./chip": {
56
- "types": "./chip/index.d.ts",
57
- "esm2022": "./esm2022/chip/mis-crystal-design-system-chip.mjs",
58
- "esm": "./esm2022/chip/mis-crystal-design-system-chip.mjs",
59
- "default": "./fesm2022/mis-crystal-design-system-chip.mjs"
49
+ "./async-search-dropdown": {
50
+ "types": "./async-search-dropdown/index.d.ts",
51
+ "esm2022": "./esm2022/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.mjs",
52
+ "esm": "./esm2022/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.mjs",
53
+ "default": "./fesm2022/mis-crystal-design-system-async-search-dropdown.mjs"
60
54
  },
61
55
  "./datepicker_v2": {
62
56
  "types": "./datepicker_v2/index.d.ts",
@@ -70,6 +64,12 @@
70
64
  "esm": "./esm2022/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.mjs",
71
65
  "default": "./fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs"
72
66
  },
67
+ "./chip": {
68
+ "types": "./chip/index.d.ts",
69
+ "esm2022": "./esm2022/chip/mis-crystal-design-system-chip.mjs",
70
+ "esm": "./esm2022/chip/mis-crystal-design-system-chip.mjs",
71
+ "default": "./fesm2022/mis-crystal-design-system-chip.mjs"
72
+ },
73
73
  "./drawer": {
74
74
  "types": "./drawer/index.d.ts",
75
75
  "esm2022": "./esm2022/drawer/mis-crystal-design-system-drawer.mjs",
@@ -15,7 +15,7 @@ export declare class TableFilterComponent implements OnInit {
15
15
  updateFilter(data: any): void;
16
16
  getFiltersBasedOnSearchValue(): Filter[] | any;
17
17
  getCheckedFilters(): Filter[] | any;
18
- mySort: (a: Filter | any, b: Filter | any) => 1 | 0 | -1;
18
+ mySort: (a: Filter | any, b: Filter | any) => 0 | 1 | -1;
19
19
  static ɵfac: i0.ɵɵFactoryDeclaration<TableFilterComponent, never>;
20
20
  static ɵcmp: i0.ɵɵComponentDeclaration<TableFilterComponent, "mis-table-filter", never, { "filtersData": { "alias": "filtersData"; "required": false; }; "containerStyles": { "alias": "containerStyles"; "required": false; }; }, { "filtersApplied": "filtersApplied"; }, never, never, false, never>;
21
21
  }
@@ -5,10 +5,15 @@ export interface SortState {
5
5
  direction: 'ASC' | 'DESC' | '';
6
6
  columnNumber?: number;
7
7
  }
8
+ export interface SortColumn {
9
+ data: string;
10
+ sortAscIcon?: string;
11
+ sortDescIcon?: string;
12
+ }
8
13
  export declare class SortIconsDirective implements OnInit, OnChanges {
9
14
  private el;
10
15
  private renderer;
11
- column: import("@angular/core").InputSignal<string>;
16
+ column: import("@angular/core").InputSignal<SortColumn>;
12
17
  activeSort: import("@angular/core").InputSignal<SortState>;
13
18
  activeSorts: import("@angular/core").InputSignal<SortState[]>;
14
19
  multiColumnSort: import("@angular/core").InputSignal<boolean>;
@@ -16,8 +21,6 @@ export declare class SortIconsDirective implements OnInit, OnChanges {
16
21
  multiSortChange: import("@angular/core").OutputEmitterRef<SortState[]>;
17
22
  currentDirection: import("@angular/core").WritableSignal<"" | "ASC" | "DESC">;
18
23
  private columnNumber;
19
- private readonly SORT_ASCENDING;
20
- private readonly SORT_DESCENDING;
21
24
  private upIcon;
22
25
  private downIcon;
23
26
  private sortOrderElement?;
@@ -1,5 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
3
- <path d="M4 6L8 2L12 6" stroke="#181F33" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4
- <path d="M8 2V14" stroke="#181F33" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
5
- </svg>
@@ -1,5 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
3
- <path d="M4 10L8 14L12 10" stroke="#181F33" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4
- <path d="M8 14V2" stroke="#181F33" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
5
- </svg>