ngx-st-tables 17.0.43 → 17.0.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Input, ViewChild, ViewEncapsulation, input, output, } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, ViewChild, ViewEncapsulation, input, output, model, } from '@angular/core';
|
|
2
2
|
import { MatPaginator } from '@angular/material/paginator';
|
|
3
3
|
import { MatSort } from '@angular/material/sort';
|
|
4
4
|
import { MatTableDataSource } from '@angular/material/table';
|
|
@@ -59,7 +59,7 @@ export class MaterialTableComponent extends StSubscribeDestroyComponent {
|
|
|
59
59
|
this.localStorageName = input('');
|
|
60
60
|
this.lazyLoading = input(false);
|
|
61
61
|
this.isLoading = input(false);
|
|
62
|
-
this.initColumns =
|
|
62
|
+
this.initColumns = model([]);
|
|
63
63
|
this.rowClickAction = input();
|
|
64
64
|
this.rowEditing = input(false);
|
|
65
65
|
this.rowSelecting = input(false);
|
|
@@ -89,6 +89,9 @@ export class MaterialTableComponent extends StSubscribeDestroyComponent {
|
|
|
89
89
|
selectColumnLabel: this.stTableTranslations.getTranslations()().rowSelectColumnLabel,
|
|
90
90
|
});
|
|
91
91
|
}
|
|
92
|
+
else {
|
|
93
|
+
this.initColumns.update(oldVal => oldVal.filter(column => column.field !== 'action-row-selecting'));
|
|
94
|
+
}
|
|
92
95
|
if (this.rowEditing()) {
|
|
93
96
|
this.initColumns().push({
|
|
94
97
|
field: 'actions-row-editing',
|
|
@@ -100,6 +103,9 @@ export class MaterialTableComponent extends StSubscribeDestroyComponent {
|
|
|
100
103
|
selectColumnLabel: this.stTableTranslations.getTranslations()().rowActionsColumnLabel,
|
|
101
104
|
});
|
|
102
105
|
}
|
|
106
|
+
else {
|
|
107
|
+
this.initColumns.update(oldVal => oldVal.filter(column => column.field !== 'action-row-editing'));
|
|
108
|
+
}
|
|
103
109
|
this.loadLocalStorageData();
|
|
104
110
|
this.setDisplayedColumns();
|
|
105
111
|
}
|
|
@@ -376,7 +382,7 @@ export class MaterialTableComponent extends StSubscribeDestroyComponent {
|
|
|
376
382
|
};
|
|
377
383
|
}
|
|
378
384
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MaterialTableComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.StSnackBarService }, { token: i2.StTablesTranslationsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
379
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MaterialTableComponent, selector: "ngx-st-material-table", inputs: { showGlobalSearch: { classPropertyName: "showGlobalSearch", publicName: "showGlobalSearch", isSignal: true, isRequired: false, transformFunction: null }, tableTitle: { classPropertyName: "tableTitle", publicName: "tableTitle", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, dataLength: { classPropertyName: "dataLength", publicName: "dataLength", isSignal: true, isRequired: false, transformFunction: null }, allowPickColumns: { classPropertyName: "allowPickColumns", publicName: "allowPickColumns", isSignal: true, isRequired: false, transformFunction: null }, allowReorderColumns: { classPropertyName: "allowReorderColumns", publicName: "allowReorderColumns", isSignal: true, isRequired: false, transformFunction: null }, localStorageName: { classPropertyName: "localStorageName", publicName: "localStorageName", isSignal: true, isRequired: false, transformFunction: null }, lazyLoading: { classPropertyName: "lazyLoading", publicName: "lazyLoading", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, initColumns: { classPropertyName: "initColumns", publicName: "initColumns", isSignal: true, isRequired: false, transformFunction: null }, rowClickAction: { classPropertyName: "rowClickAction", publicName: "rowClickAction", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: false, isRequired: false, transformFunction: null }, rowEditing: { classPropertyName: "rowEditing", publicName: "rowEditing", isSignal: true, isRequired: false, transformFunction: null }, rowSelecting: { classPropertyName: "rowSelecting", publicName: "rowSelecting", isSignal: true, isRequired: false, transformFunction: null }, selectionFieldLabel: { classPropertyName: "selectionFieldLabel", publicName: "selectionFieldLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { loadData: "loadData", saveNewRow: "saveNewRow", selectRowChange: "selectRowChange" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"st-material-table\">\r\n @if (isLoading()) {\r\n <div class=\"loading-spinner\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n }\r\n\r\n @if (showTable) {\r\n <st-material-table-caption\r\n [tableTitle]=\"tableTitle()\"\r\n [allowPickColumns]=\"allowPickColumns()\"\r\n [showGlobalSearch]=\"showGlobalSearch()\"\r\n [allowReorderColumns]=\"allowReorderColumns()\"\r\n [columns]=\"columns\"\r\n [initFilters]=\"initFilters\"\r\n [initGlobalSearch]=\"initGlobalSearch\"\r\n (captionDataChanged)=\"captionDataChanged($event)\"\r\n (resetTableSettings)=\"resetTableSettings()\"\r\n ></st-material-table-caption>\r\n }\r\n\r\n <table\r\n [ngClass]=\"{ 'no-hover': !rowClickAction() }\"\r\n mat-table\r\n [dataSource]=\"tableSource\"\r\n matSort\r\n >\r\n @for (column of selectedColumns; track column) {\r\n <ng-container [matColumnDef]=\"column.field\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"{{ column.width ? 'width:' + column.width : '' }}\"\r\n mat-sort-header\r\n [disabled]=\"!column.sort\"\r\n >\r\n @if (column.type === 'actions-row-selecting') {\r\n <mat-checkbox\r\n color=\"primary\"\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\r\n >\r\n </mat-checkbox>\r\n } @else {\r\n {{ column.header }}\r\n }\r\n </th>\r\n <td\r\n mat-cell\r\n *matCellDef=\"let element\"\r\n style=\"{{ column.width ? 'width:' + column.width : '' }}\"\r\n >\r\n <st-material-table-row-cell\r\n [column]=\"column\"\r\n [rowData]=\"element\"\r\n [rowDataCopy]=\"activeRowsEditing[element.id]\"\r\n [rowEditing]=\"!!activeRowsEditing[element.id]\"\r\n [rowIsSelected]=\"selection.isSelected(element)\"\r\n (editRowEmitter)=\"editRow(element, column)\"\r\n (saveEditRowEmitter)=\"saveEditRow(element, column)\"\r\n (cancelEditRowEmitter)=\"cancelEditRow(element, column)\"\r\n (selectRowChange)=\"selectRowChanged($event, element)\"\r\n ></st-material-table-row-cell>\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"selectedColumnsString\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: selectedColumnsString\"\r\n (click)=\"rowClickAction() ? rowClickAction()!(row) : null\"\r\n ></tr>\r\n </table>\r\n <mat-paginator\r\n [showFirstLastButtons]=\"true\"\r\n [pageSizeOptions]=\"[5, 10, 15, 20, 25]\"\r\n [length]=\"dataLength()\"\r\n ></mat-paginator>\r\n @if (rowSelecting()) {\r\n <div class=\"st-material-table-selected-rows\">\r\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">\r\n {{ selection.selected.length }}\r\n {{ stTableTranslations.getTranslations()().rowSelected }}\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n @for (row of selection.selected; track row) {\r\n <button mat-menu-item (click)=\"removeSelectedRow(row)\">\r\n <div class=\"d-flex\">\r\n {{ row[selectionFieldLabel()]\r\n }}<mat-icon style=\"margin-right: 0; margin-left: 10px\"\r\n >delete</mat-icon\r\n >\r\n </div>\r\n </button>\r\n }\r\n </mat-menu>\r\n </div>\r\n }\r\n</div>\r\n", styles: [".st-material-table{position:relative}.st-material-table .loading-spinner{position:absolute;top:0;left:0;width:100%;height:100%;background:#00000026;z-index:1;display:flex;justify-content:center}.st-material-table .loading-spinner mat-spinner{margin-top:5rem}.st-material-table .st-material-table-selected-rows{position:absolute;bottom:12px;left:5px}\n", ".st-material-table .search-form button{height:40px}.st-material-table .search-form mat-form-field:first-child{padding-left:0}.st-material-table .search-form mat-form-field:last-child{padding-right:0}.st-material-table .search-form .clear{padding:0}.st-material-table .search-form .clear mat-icon{height:20px;width:20px;font-size:20px;cursor:pointer}.st-material-table table{width:100%;box-shadow:none}.st-material-table table th.mat-mdc-header-cell,.st-material-table table td.mat-mdc-cell,.st-material-table table td.mat-mdc-footer-cell{padding:0}.st-material-table table th.mat-mdc-header-cell:first-of-type,.st-material-table table td.mat-mdc-cell:first-of-type,.st-material-table table td.mat-mdc-footer-cell:first-of-type{padding-left:12px}.st-material-table table th.mat-mdc-header-cell:last-of-type,.st-material-table table td.mat-mdc-cell:last-of-type,.st-material-table table td.mat-mdc-footer-cell:last-of-type{padding-right:12px}.st-material-table table thead tr{background-color:#fff9c4;height:40px!important}.st-material-table table thead tr th{border-color:#fdd835;font-size:.9rem;font-weight:600;color:#424242}.st-material-table table tbody{background-color:transparent!important}.st-material-table table tbody>tr{cursor:pointer}.st-material-table table tbody>tr.active{background-color:#a5d6a7}.st-material-table table tbody>tr.active td{border-bottom-color:#81c784!important}.st-material-table table tbody>tr:hover{background-color:#f5f5f5}.st-material-table table tbody>tr.disabled{cursor:not-allowed}.st-material-table table tbody>tr.disabled:hover{background-color:inherit!important}.st-material-table table tbody>tr.detail-row{height:0;cursor:default}.st-material-table table tbody>tr.detail-row:hover{background-color:transparent}.st-material-table table tbody>tr.detail-row .element-detail{overflow:hidden;display:flex}.st-material-table table tbody>tr.detail-row .element-detail p{padding:20px 0;margin-bottom:0;white-space:pre-wrap}.st-material-table table tbody>tr td i.active-row{color:#1b5e20;font-weight:700;font-size:25px;height:25px;width:25px;margin-top:2px}.st-material-table table tbody>tr td>div{max-height:200px;overflow:hidden;overflow-y:auto}.st-material-table table tbody>tr td a button{color:#000}.st-material-table table tbody>tr td a mat-icon{color:#333}.st-material-table table .mat-column-active{width:48px}.st-material-table table.no-hover tbody tr{cursor:default}.st-material-table table.no-hover tbody tr.active{background-color:transparent!important}.st-material-table table.no-hover tbody tr.active td{border-bottom-color:#0000001f!important}.st-material-table table.no-hover tbody tr:hover{background-color:transparent!important}.st-material-table table.no-hover tbody tr:hover td{border-bottom-color:#0000001f!important}.st-material-table table.admin-table .actions-cell{width:100px}.dark-theme .st-material-table table{background-color:transparent!important}.dark-theme .st-material-table table thead tr{background-color:#5e4803!important}.dark-theme .st-material-table table thead tr th{border-color:#816204!important;color:#e0e0e0!important}.dark-theme .st-material-table tbody tr:hover{background-color:var(--primeng-table-hover-background)!important}.dark-theme mat-paginator{background-color:transparent!important}.dark-theme .reorder-column-list .reorder-column-element{background-color:#424242!important;color:#eee!important}.dark-theme .reorder-column-list .reorder-column-element p,.dark-theme .reorder-column-list .reorder-column-element mat-icon{color:#eee!important}.dark-theme .filter .filter-title{color:#eee!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i6.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i6.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i6.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i7.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "directive", type: i8.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i8.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i9.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i10.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i11.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i12.MaterialTableCaptionComponent, selector: "st-material-table-caption", inputs: ["showGlobalSearch", "tableTitle", "allowPickColumns", "allowReorderColumns", "initGlobalSearch", "initFilters", "columns"], outputs: ["captionDataChanged", "resetTableSettings"] }, { kind: "component", type: i13.MaterialTableRowCellComponent, selector: "st-material-table-row-cell", inputs: ["column", "rowData", "rowDataCopy", "rowEditing", "rowIsSelected"], outputs: ["saveEditRowEmitter", "cancelEditRowEmitter", "editRowEmitter", "selectRowChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
385
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MaterialTableComponent, selector: "ngx-st-material-table", inputs: { showGlobalSearch: { classPropertyName: "showGlobalSearch", publicName: "showGlobalSearch", isSignal: true, isRequired: false, transformFunction: null }, tableTitle: { classPropertyName: "tableTitle", publicName: "tableTitle", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, dataLength: { classPropertyName: "dataLength", publicName: "dataLength", isSignal: true, isRequired: false, transformFunction: null }, allowPickColumns: { classPropertyName: "allowPickColumns", publicName: "allowPickColumns", isSignal: true, isRequired: false, transformFunction: null }, allowReorderColumns: { classPropertyName: "allowReorderColumns", publicName: "allowReorderColumns", isSignal: true, isRequired: false, transformFunction: null }, localStorageName: { classPropertyName: "localStorageName", publicName: "localStorageName", isSignal: true, isRequired: false, transformFunction: null }, lazyLoading: { classPropertyName: "lazyLoading", publicName: "lazyLoading", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, initColumns: { classPropertyName: "initColumns", publicName: "initColumns", isSignal: true, isRequired: false, transformFunction: null }, rowClickAction: { classPropertyName: "rowClickAction", publicName: "rowClickAction", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: false, isRequired: false, transformFunction: null }, rowEditing: { classPropertyName: "rowEditing", publicName: "rowEditing", isSignal: true, isRequired: false, transformFunction: null }, rowSelecting: { classPropertyName: "rowSelecting", publicName: "rowSelecting", isSignal: true, isRequired: false, transformFunction: null }, selectionFieldLabel: { classPropertyName: "selectionFieldLabel", publicName: "selectionFieldLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { initColumns: "initColumnsChange", loadData: "loadData", saveNewRow: "saveNewRow", selectRowChange: "selectRowChange" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"st-material-table\">\r\n @if (isLoading()) {\r\n <div class=\"loading-spinner\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n }\r\n\r\n @if (showTable) {\r\n <st-material-table-caption\r\n [tableTitle]=\"tableTitle()\"\r\n [allowPickColumns]=\"allowPickColumns()\"\r\n [showGlobalSearch]=\"showGlobalSearch()\"\r\n [allowReorderColumns]=\"allowReorderColumns()\"\r\n [columns]=\"columns\"\r\n [initFilters]=\"initFilters\"\r\n [initGlobalSearch]=\"initGlobalSearch\"\r\n (captionDataChanged)=\"captionDataChanged($event)\"\r\n (resetTableSettings)=\"resetTableSettings()\"\r\n ></st-material-table-caption>\r\n }\r\n\r\n <table\r\n [ngClass]=\"{ 'no-hover': !rowClickAction() }\"\r\n mat-table\r\n [dataSource]=\"tableSource\"\r\n matSort\r\n >\r\n @for (column of selectedColumns; track column) {\r\n <ng-container [matColumnDef]=\"column.field\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"{{ column.width ? 'width:' + column.width : '' }}\"\r\n mat-sort-header\r\n [disabled]=\"!column.sort\"\r\n >\r\n @if (column.type === 'actions-row-selecting') {\r\n <mat-checkbox\r\n color=\"primary\"\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\r\n >\r\n </mat-checkbox>\r\n } @else {\r\n {{ column.header }}\r\n }\r\n </th>\r\n <td\r\n mat-cell\r\n *matCellDef=\"let element\"\r\n style=\"{{ column.width ? 'width:' + column.width : '' }}\"\r\n >\r\n <st-material-table-row-cell\r\n [column]=\"column\"\r\n [rowData]=\"element\"\r\n [rowDataCopy]=\"activeRowsEditing[element.id]\"\r\n [rowEditing]=\"!!activeRowsEditing[element.id]\"\r\n [rowIsSelected]=\"selection.isSelected(element)\"\r\n (editRowEmitter)=\"editRow(element, column)\"\r\n (saveEditRowEmitter)=\"saveEditRow(element, column)\"\r\n (cancelEditRowEmitter)=\"cancelEditRow(element, column)\"\r\n (selectRowChange)=\"selectRowChanged($event, element)\"\r\n ></st-material-table-row-cell>\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"selectedColumnsString\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: selectedColumnsString\"\r\n (click)=\"rowClickAction() ? rowClickAction()!(row) : null\"\r\n ></tr>\r\n </table>\r\n <mat-paginator\r\n [showFirstLastButtons]=\"true\"\r\n [pageSizeOptions]=\"[5, 10, 15, 20, 25]\"\r\n [length]=\"dataLength()\"\r\n ></mat-paginator>\r\n @if (rowSelecting()) {\r\n <div class=\"st-material-table-selected-rows\">\r\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">\r\n {{ selection.selected.length }}\r\n {{ stTableTranslations.getTranslations()().rowSelected }}\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n @for (row of selection.selected; track row) {\r\n <button mat-menu-item (click)=\"removeSelectedRow(row)\">\r\n <div class=\"d-flex\">\r\n {{ row[selectionFieldLabel()]\r\n }}<mat-icon style=\"margin-right: 0; margin-left: 10px\"\r\n >delete</mat-icon\r\n >\r\n </div>\r\n </button>\r\n }\r\n </mat-menu>\r\n </div>\r\n }\r\n</div>\r\n", styles: [".st-material-table{position:relative}.st-material-table .loading-spinner{position:absolute;top:0;left:0;width:100%;height:100%;background:#00000026;z-index:1;display:flex;justify-content:center}.st-material-table .loading-spinner mat-spinner{margin-top:5rem}.st-material-table .st-material-table-selected-rows{position:absolute;bottom:12px;left:5px}\n", ".st-material-table .search-form button{height:40px}.st-material-table .search-form mat-form-field:first-child{padding-left:0}.st-material-table .search-form mat-form-field:last-child{padding-right:0}.st-material-table .search-form .clear{padding:0}.st-material-table .search-form .clear mat-icon{height:20px;width:20px;font-size:20px;cursor:pointer}.st-material-table table{width:100%;box-shadow:none}.st-material-table table th.mat-mdc-header-cell,.st-material-table table td.mat-mdc-cell,.st-material-table table td.mat-mdc-footer-cell{padding:0}.st-material-table table th.mat-mdc-header-cell:first-of-type,.st-material-table table td.mat-mdc-cell:first-of-type,.st-material-table table td.mat-mdc-footer-cell:first-of-type{padding-left:12px}.st-material-table table th.mat-mdc-header-cell:last-of-type,.st-material-table table td.mat-mdc-cell:last-of-type,.st-material-table table td.mat-mdc-footer-cell:last-of-type{padding-right:12px}.st-material-table table thead tr{background-color:#fff9c4;height:40px!important}.st-material-table table thead tr th{border-color:#fdd835;font-size:.9rem;font-weight:600;color:#424242}.st-material-table table tbody{background-color:transparent!important}.st-material-table table tbody>tr{cursor:pointer}.st-material-table table tbody>tr.active{background-color:#a5d6a7}.st-material-table table tbody>tr.active td{border-bottom-color:#81c784!important}.st-material-table table tbody>tr:hover{background-color:#f5f5f5}.st-material-table table tbody>tr.disabled{cursor:not-allowed}.st-material-table table tbody>tr.disabled:hover{background-color:inherit!important}.st-material-table table tbody>tr.detail-row{height:0;cursor:default}.st-material-table table tbody>tr.detail-row:hover{background-color:transparent}.st-material-table table tbody>tr.detail-row .element-detail{overflow:hidden;display:flex}.st-material-table table tbody>tr.detail-row .element-detail p{padding:20px 0;margin-bottom:0;white-space:pre-wrap}.st-material-table table tbody>tr td i.active-row{color:#1b5e20;font-weight:700;font-size:25px;height:25px;width:25px;margin-top:2px}.st-material-table table tbody>tr td>div{max-height:200px;overflow:hidden;overflow-y:auto}.st-material-table table tbody>tr td a button{color:#000}.st-material-table table tbody>tr td a mat-icon{color:#333}.st-material-table table .mat-column-active{width:48px}.st-material-table table.no-hover tbody tr{cursor:default}.st-material-table table.no-hover tbody tr.active{background-color:transparent!important}.st-material-table table.no-hover tbody tr.active td{border-bottom-color:#0000001f!important}.st-material-table table.no-hover tbody tr:hover{background-color:transparent!important}.st-material-table table.no-hover tbody tr:hover td{border-bottom-color:#0000001f!important}.st-material-table table.admin-table .actions-cell{width:100px}.dark-theme .st-material-table table{background-color:transparent!important}.dark-theme .st-material-table table thead tr{background-color:#5e4803!important}.dark-theme .st-material-table table thead tr th{border-color:#816204!important;color:#e0e0e0!important}.dark-theme .st-material-table tbody tr:hover{background-color:var(--primeng-table-hover-background)!important}.dark-theme mat-paginator{background-color:transparent!important}.dark-theme .reorder-column-list .reorder-column-element{background-color:#424242!important;color:#eee!important}.dark-theme .reorder-column-list .reorder-column-element p,.dark-theme .reorder-column-list .reorder-column-element mat-icon{color:#eee!important}.dark-theme .filter .filter-title{color:#eee!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i6.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i6.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i6.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i7.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "directive", type: i8.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i8.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i9.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i10.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i11.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i12.MaterialTableCaptionComponent, selector: "st-material-table-caption", inputs: ["showGlobalSearch", "tableTitle", "allowPickColumns", "allowReorderColumns", "initGlobalSearch", "initFilters", "columns"], outputs: ["captionDataChanged", "resetTableSettings"] }, { kind: "component", type: i13.MaterialTableRowCellComponent, selector: "st-material-table-row-cell", inputs: ["column", "rowData", "rowDataCopy", "rowEditing", "rowIsSelected"], outputs: ["saveEditRowEmitter", "cancelEditRowEmitter", "editRowEmitter", "selectRowChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
380
386
|
}
|
|
381
387
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MaterialTableComponent, decorators: [{
|
|
382
388
|
type: Component,
|
|
@@ -390,4 +396,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
390
396
|
}], data: [{
|
|
391
397
|
type: Input
|
|
392
398
|
}] } });
|
|
393
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXRhYmxlcy9zcmMvbGliL2NvbXBvbmVudHMvbWF0ZXJpYWwtdGFibGUvbWF0ZXJpYWwtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXRhYmxlcy9zcmMvbGliL2NvbXBvbmVudHMvbWF0ZXJpYWwtdGFibGUvbWF0ZXJpYWwtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxFQUVMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBaUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUk3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUNMLGFBQWEsRUFDYiwyQkFBMkIsR0FDNUIsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQWExRCxNQUFNLE9BQU8sc0JBQ1gsU0FBUSwyQkFBMkI7SUE0Qm5DLElBQ0ksSUFBSSxDQUFDLElBQVc7UUFDbEIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7WUFDN0MsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FB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Q04sSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7SUFFTywyQkFBMkI7UUFDakMsSUFBSSxDQUFDLGdCQUFnQixHQUFHO1lBQ3RCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3pCLFNBQVMsRUFBRSxDQUFDO1lBQ1osZUFBZSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQ3pELFlBQVksRUFBRSxFQUFFO1lBQ2hCLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUN0RCxPQUFPLEVBQUUsRUFBRTtZQUNYLFNBQVMsRUFBRSxFQUFFO1lBQ2IsU0FBUyxFQUFFLEtBQUs7U0FDakIsQ0FBQztJQUNKLENBQUM7K0dBOWNVLHNCQUFzQjttR0FBdEIsc0JBQXNCLHd5RUFJdEIsWUFBWSx1RUFDWixPQUFPLHVFQzFDcEIseW9IQXFHQTs7NEZEaEVhLHNCQUFzQjtrQkFWbEMsU0FBUzsrQkFDRSx1QkFBdUIsbUJBTWhCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7Z0tBTVosU0FBUztzQkFBakMsU0FBUzt1QkFBQyxZQUFZO2dCQUNILElBQUk7c0JBQXZCLFNBQVM7dUJBQUMsT0FBTztnQkF5QmQsSUFBSTtzQkFEUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIGlucHV0LFxyXG4gIG91dHB1dCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0U29ydCwgU29ydERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IFN0TWF0ZXJpYWxUYWJsZUNvbHVtbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3N0LW1hdGVyaWFsLXRhYmxlLWNvbHVtbi5tb2RlbCc7XHJcbmltcG9ydCB7IFZpZXdTdE1hdGVyaWFsVGFibGVDb2x1bW5Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy92aWV3L3ZpZXctc3QtbWF0ZXJpYWwtdGFibGUtY29sdW1uLm1vZGVsJztcclxuaW1wb3J0IHsgSUNhcHRpb25EYXRhQ2hhbmdlZCB9IGZyb20gJy4vbWF0ZXJpYWwtdGFibGUtY2FwdGlvbi9tYXRlcmlhbC10YWJsZS1jYXB0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7XHJcbiAgU3RCYXNlU2VydmljZSxcclxuICBTdFN1YnNjcmliZURlc3Ryb3lDb21wb25lbnQsXHJcbn0gZnJvbSAnbmd4LXN0LWJhc2UtZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgU3RTbmFja0JhclNlcnZpY2UgfSBmcm9tICduZ3gtc3Qtc25hY2stYmFyJztcclxuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xyXG5pbXBvcnQgeyBTdFRhYmxlc1RyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdC10YWJsZXMtdHJhbnNsYXRpb25zLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtc3QtbWF0ZXJpYWwtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXRlcmlhbC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbXHJcbiAgICAnLi9tYXRlcmlhbC10YWJsZS5jb21wb25lbnQuc2NzcycsXHJcbiAgICAnLi4vLi4vLi4vLi4vYXNzZXRzL2Jhc2UtdGFibGUuc2NzcycsXHJcbiAgXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWxUYWJsZUNvbXBvbmVudFxyXG4gIGV4dGVuZHMgU3RTdWJzY3JpYmVEZXN0cm95Q29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXRcclxue1xyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKSBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQ6IE1hdFNvcnQ7XHJcblxyXG4gIHNob3dHbG9iYWxTZWFyY2ggPSBpbnB1dChmYWxzZSk7XHJcblxyXG4gIHRhYmxlVGl0bGUgPSBpbnB1dCgnJyk7XHJcblxyXG4gIHBhZ2VTaXplID0gaW5wdXQ8bnVtYmVyPigxMCk7XHJcblxyXG4gIGRhdGFMZW5ndGggPSBpbnB1dDxudW1iZXI+KDApO1xyXG5cclxuICBhbGxvd1BpY2tDb2x1bW5zID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblxyXG4gIGFsbG93UmVvcmRlckNvbHVtbnMgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuXHJcbiAgbG9jYWxTdG9yYWdlTmFtZSA9IGlucHV0PHN0cmluZz4oJycpO1xyXG5cclxuICBsYXp5TG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgaXNMb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBpbml0Q29sdW1ucyA9IGlucHV0PFN0TWF0ZXJpYWxUYWJsZUNvbHVtbk1vZGVsW10+KFtdKTtcclxuXHJcbiAgcm93Q2xpY2tBY3Rpb24gPSBpbnB1dDwocm93OiBhbnkpID0+IHZvaWQ+KCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGRhdGEoZGF0YTogYW55W10pIHtcclxuICAgIGlmICh0aGlzLnJvd0VkaXRpbmcoKSB8fCB0aGlzLnJvd1NlbGVjdGluZygpKSB7XHJcbiAgICAgIGlmIChkYXRhLmxlbmd0aCA+IDAgJiYgIWRhdGFbMF0uaWQpIHtcclxuICAgICAgICBkYXRhID0gZGF0YS5tYXAocm93ID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLnJvdyxcclxuICAgICAgICAgICAgaWQ6IFN0QmFzZVNlcnZpY2UuZ2VuZXJhdGVHVUlEKCksXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kYXRhID0gZGF0YSB8fCBbXTtcclxuXHJcbiAgICBpZiAodGhpcy50YWJsZVNvdXJjZSkge1xyXG4gICAgICB0aGlzLnRhYmxlU291cmNlLmRhdGEgPSBkYXRhO1xyXG4gICAgICBpZiAoIXRoaXMubGF6eUxvYWRpbmcoKSAmJiB0aGlzLmxvY2FsU3RvcmFnZURhdGEpIHtcclxuICAgICAgICB0aGlzLnBhZ2luYXRvci5wYWdlSW5kZXggPSB0aGlzLmxvY2FsU3RvcmFnZURhdGEucGFnZUluZGV4O1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHRoaXMucGFnaW5hdG9yLl9lbWl0UGFnZUV2ZW50KHRoaXMubG9jYWxTdG9yYWdlRGF0YS5wYWdlSW5kZXgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRhdGEoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgfVxyXG5cclxuICByb3dFZGl0aW5nID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICByb3dTZWxlY3RpbmcgPSBpbnB1dChmYWxzZSk7XHJcblxyXG4gIHNlbGVjdGlvbkZpZWxkTGFiZWwgPSBpbnB1dCgnJyk7XHJcblxyXG4gIGxvYWREYXRhID0gb3V0cHV0PFN0TWF0ZXJpYWxUYWJsZUxvYWREYXRhPigpO1xyXG5cclxuICBzYXZlTmV3Um93ID0gb3V0cHV0PGFueT4oKTtcclxuXHJcbiAgc2VsZWN0Um93Q2hhbmdlID0gb3V0cHV0PGFueVtdPigpO1xyXG5cclxuICBwcml2YXRlIF9kYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICBjb2x1bW5zOiBWaWV3U3RNYXRlcmlhbFRhYmxlQ29sdW1uTW9kZWxbXSA9IFtdO1xyXG4gIHNlbGVjdGVkQ29sdW1uczogVmlld1N0TWF0ZXJpYWxUYWJsZUNvbHVtbk1vZGVsW10gPSBbXTtcclxuICBzZWxlY3RlZENvbHVtbnNTdHJpbmc6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIHRhYmxlU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8YW55PjtcclxuXHJcbiAgaW5pdEZpbHRlcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICBpbml0R2xvYmFsU2VhcmNoOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgc2hvd1RhYmxlID0gdHJ1ZTtcclxuXHJcbiAgYWN0aXZlUm93c0VkaXRpbmc6IHsgW3Jvd0lkOiBzdHJpbmddOiB7IFtwcm9wOiBzdHJpbmddOiBhbnkgfSB9ID0ge307XHJcbiAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPGFueT4odHJ1ZSwgW10pO1xyXG5cclxuICBwcml2YXRlIGxvY2FsU3RvcmFnZURhdGE6IFN0TWF0ZXJpYWxUYWJsZUxvY2FsU3RvcmFnZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgc25hY2tiYXI6IFN0U25hY2tCYXJTZXJ2aWNlLFxyXG4gICAgcHVibGljIHN0VGFibGVUcmFuc2xhdGlvbnM6IFN0VGFibGVzVHJhbnNsYXRpb25zU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucm93U2VsZWN0aW5nKCkpIHtcclxuICAgICAgdGhpcy5pbml0Q29sdW1ucygpLnVuc2hpZnQoe1xyXG4gICAgICAgIGZpZWxkOiAnYWN0aW9ucy1yb3ctc2VsZWN0aW5nJyxcclxuICAgICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICAgIHR5cGU6ICdhY3Rpb25zLXJvdy1zZWxlY3RpbmcnLFxyXG4gICAgICAgIHNvcnQ6IGZhbHNlLFxyXG4gICAgICAgIGZpbHRlcjogZmFsc2UsXHJcbiAgICAgICAgd2lkdGg6ICc2MHB4JyxcclxuICAgICAgICBzZWxlY3RDb2x1bW5MYWJlbDpcclxuICAgICAgICAgIHRoaXMuc3RUYWJsZVRyYW5zbGF0aW9ucy5nZXRUcmFuc2xhdGlvbnMoKSgpLnJvd1NlbGVjdENvbHVtbkxhYmVsLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yb3dFZGl0aW5nKCkpIHtcclxuICAgICAgdGhpcy5pbml0Q29sdW1ucygpLnB1c2goe1xyXG4gICAgICAgIGZpZWxkOiAnYWN0aW9ucy1yb3ctZWRpdGluZycsXHJcbiAgICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgICB0eXBlOiAnYWN0aW9ucy1yb3ctZWRpdGluZycsXHJcbiAgICAgICAgc29ydDogZmFsc2UsXHJcbiAgICAgICAgZmlsdGVyOiBmYWxzZSxcclxuICAgICAgICB3aWR0aDogJzExMHB4JyxcclxuICAgICAgICBzZWxlY3RDb2x1bW5MYWJlbDpcclxuICAgICAgICAgIHRoaXMuc3RUYWJsZVRyYW5zbGF0aW9ucy5nZXRUcmFuc2xhdGlvbnMoKSgpLnJvd0FjdGlvbnNDb2x1bW5MYWJlbCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2FkTG9jYWxTdG9yYWdlRGF0YSgpO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5ZWRDb2x1bW5zKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnNldEluaXRUYWJsZSgpO1xyXG4gICAgdGhpcy5zZXRTb3J0UGFnZVN1YnNjcmlwdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgY2FwdGlvbkRhdGFDaGFuZ2VkKGV2ZW50OiBJQ2FwdGlvbkRhdGFDaGFuZ2VkKSB7XHJcbiAgICBsZXQgbG9hZExhenlEYXRhID0gZmFsc2U7XHJcbiAgICBpZiAoXHJcbiAgICAgIGV2ZW50Lmdsb2JhbFNlYXJjaCAhPT0gdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLmdsb2JhbFNlYXJjaCB8fFxyXG4gICAgICBldmVudC5maWx0ZXJzICE9PSB0aGlzLmxvY2FsU3RvcmFnZURhdGEuZmlsdGVyc1xyXG4gICAgKSB7XHJcbiAgICAgIGxvYWRMYXp5RGF0YSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2NhbFN0b3JhZ2VEYXRhID0ge1xyXG4gICAgICAuLi5ldmVudCxcclxuICAgICAgcGFnZVNpemU6IHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplLFxyXG4gICAgICBwYWdlSW5kZXg6IHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCxcclxuICAgICAgc29ydEZpZWxkOiB0aGlzLnNvcnQuYWN0aXZlLFxyXG4gICAgICBzb3J0T3JkZXI6IHRoaXMuc29ydC5kaXJlY3Rpb24sXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuc2V0Q29sdW1uc09yZGVyKCk7XHJcbiAgICB0aGlzLnNldENvbHVtbnNWaXNpYmxlKCk7XHJcbiAgICB0aGlzLnNldFNlbGVjdGVkQ29sdW1ucygpO1xyXG4gICAgdGhpcy51cGRhdGVEYXRhVG9Mb2NhbFN0b3JhZ2UoKTtcclxuXHJcbiAgICBpZiAobG9hZExhenlEYXRhKSB7XHJcbiAgICAgIHRoaXMuZW1pdExhenlMb2FkaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHJlc2V0VGFibGVTZXR0aW5ncygpIHtcclxuICAgIHRoaXMuc2hvd1RhYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cclxuICAgIHRoaXMuc2V0TmV3RW1wdHlMb2NhbFN0b3JhZ2VEYXRhKCk7XHJcbiAgICB0aGlzLnVwZGF0ZURhdGFUb0xvY2FsU3RvcmFnZSgpO1xyXG4gICAgdGhpcy5lbWl0TGF6eUxvYWRpbmcoKTtcclxuICAgIHRoaXMuaW5pdEZpbHRlcnMgPSB7fTtcclxuICAgIHRoaXMuaW5pdEdsb2JhbFNlYXJjaCA9ICcnO1xyXG4gICAgdGhpcy5zb3J0LnNvcnQoeyBpZDogJycsIHN0YXJ0OiAnYXNjJywgZGlzYWJsZUNsZWFyOiBmYWxzZSB9KTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zaG93VGFibGUgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNldERpc3BsYXllZENvbHVtbnMoKTtcclxuICAgICAgdGhpcy5zZXRJbml0VGFibGUoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuICBlZGl0Um93KHJvdzogYW55LCBjb2x1bW46IFZpZXdTdE1hdGVyaWFsVGFibGVDb2x1bW5Nb2RlbCkge1xyXG4gICAgdGhpcy5hY3RpdmVSb3dzRWRpdGluZ1tyb3cuaWRdID0geyAuLi5yb3cgfTtcclxuICB9XHJcblxyXG4gIHNhdmVFZGl0Um93KHJvdzogYW55LCBjb2x1bW46IFZpZXdTdE1hdGVyaWFsVGFibGVDb2x1bW5Nb2RlbCkge1xyXG4gICAgbGV0IGFsbG93U2F2ZSA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5jb2x1bW5zXHJcbiAgICAgIC5maWx0ZXIoY29sID0+IGNvbC5hbGxvd0VkaXRDb2x1bW4pXHJcbiAgICAgIC5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgICAgaWYgKGNvbC5jdXN0b21FZGl0Um93VmFsaWRhdG9yKSB7XHJcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBjb2wuY3VzdG9tRWRpdFJvd1ZhbGlkYXRvcihcclxuICAgICAgICAgICAgdGhpcy5hY3RpdmVSb3dzRWRpdGluZ1tyb3cuaWRdW2NvbC5maWVsZF0sXHJcbiAgICAgICAgICAgIHJvd1tjb2wuZmllbGRdLFxyXG4gICAgICAgICAgICByb3dcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSB7XHJcbiAgICAgICAgICAgIGFsbG93U2F2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNuYWNrYmFyLmVycm9yKHJlc3VsdC5lcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICBpZiAoYWxsb3dTYXZlKSB7XHJcbiAgICAgIHRoaXMuc2F2ZU5ld1Jvdy5lbWl0KHRoaXMuYWN0aXZlUm93c0VkaXRpbmdbcm93LmlkXSk7XHJcbiAgICAgIHRoaXMuY29sdW1uc1xyXG4gICAgICAgIC5maWx0ZXIoY29sID0+IGNvbC5hbGxvd0VkaXRDb2x1bW4pXHJcbiAgICAgICAgLmZvckVhY2goY29sID0+IHtcclxuICAgICAgICAgIHJvd1tjb2wuZmllbGRdID0gdGhpcy5hY3RpdmVSb3dzRWRpdGluZ1tyb3cuaWRdW2NvbC5maWVsZF07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgICBkZWxldGUgdGhpcy5hY3RpdmVSb3dzRWRpdGluZ1tyb3cuaWRdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuY2VsRWRpdFJvdyhyb3c6IGFueSwgY29sdW1uOiBWaWV3U3RNYXRlcmlhbFRhYmxlQ29sdW1uTW9kZWwpIHtcclxuICAgIGRlbGV0ZSB0aGlzLmFjdGl2ZVJvd3NFZGl0aW5nW3Jvdy5pZF07XHJcbiAgfVxyXG5cclxuICBpc0FsbFNlbGVjdGVkKCkge1xyXG4gICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XHJcbiAgICBjb25zdCBudW1Sb3dzID0gdGhpcy50YWJsZVNvdXJjZS5kYXRhLmxlbmd0aDtcclxuICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcclxuICB9XHJcblxyXG4gIHRvZ2dsZUFsbFJvd3MoKSB7XHJcbiAgICBpZiAodGhpcy5pc0FsbFNlbGVjdGVkKCkpIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdCguLi50aGlzLnRhYmxlU291cmNlLmRhdGEpO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0Um93Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlU2VsZWN0ZWRSb3cocm93OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uLmRlc2VsZWN0KHJvdyk7XHJcbiAgICB0aGlzLnNlbGVjdFJvd0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFJvd0NoYW5nZWQodmFsdWU6IGJvb2xlYW4sIHJvdzogYW55KSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KHJvdyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5kZXNlbGVjdChyb3cpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLnNlbGVjdFJvd0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQ3VzdG9tRmlsdGVyRm9yTG9jYWxUYWJsZSgpIHtcclxuICAgIGxldCBmaWx0ZXJGdW5jdGlvbiA9IChkYXRhOiBhbnksIGZpbHRlcjogc3RyaW5nKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgIGNvbnN0IHNlYXJjaFRlcm1zOiB7IFtjb2x1bW46IHN0cmluZ106IHN0cmluZzsgc3RHbG9iYWxTZWFyY2g6IHN0cmluZyB9ID1cclxuICAgICAgICBKU09OLnBhcnNlKGZpbHRlcik7XHJcbiAgICAgIGNvbnN0IHNlYXJjaFRlcm1zS2V5cyA9IE9iamVjdC5rZXlzKHNlYXJjaFRlcm1zKTtcclxuICAgICAgbGV0IHNlYXJjaE9rID0gdHJ1ZTtcclxuICAgICAgbGV0IHNlYXJjaE9rR2xvYmFsID0gdHJ1ZTtcclxuXHJcbiAgICAgIHNlYXJjaFRlcm1zS2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGtleSAhPT0gJ3N0R2xvYmFsU2VhcmNoJyAmJlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNTdHJpbmcuaW5jbHVkZXMoa2V5KVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgc2VhcmNoT2sgPVxyXG4gICAgICAgICAgICBzZWFyY2hPayAmJlxyXG4gICAgICAgICAgICBkYXRhW2tleV1cclxuICAgICAgICAgICAgICAudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgICAgLmluZGV4T2Yoc2VhcmNoVGVybXNba2V5XS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpICE9PSAtMTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoc2VhcmNoVGVybXMuc3RHbG9iYWxTZWFyY2gpIHtcclxuICAgICAgICBzZWFyY2hPa0dsb2JhbCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zU3RyaW5nLmZvckVhY2goY29sID0+IHtcclxuICAgICAgICAgIGlmIChkYXRhW2NvbF0pIHtcclxuICAgICAgICAgICAgc2VhcmNoT2tHbG9iYWwgPVxyXG4gICAgICAgICAgICAgIHNlYXJjaE9rR2xvYmFsIHx8XHJcbiAgICAgICAgICAgICAgZGF0YVtjb2xdXHJcbiAgICAgICAgICAgICAgICAudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgICAgIC5pbmRleE9mKFxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hUZXJtcy5zdEdsb2JhbFNlYXJjaC50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgICAgICkgIT09IC0xO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gc2VhcmNoT2sgJiYgc2VhcmNoT2tHbG9iYWw7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGZpbHRlckZ1bmN0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0TGF6eUxvYWRpbmcoKSB7XHJcbiAgICBpZiAodGhpcy5sYXp5TG9hZGluZygpKSB7XHJcbiAgICAgIHRoaXMubG9hZERhdGEuZW1pdCh7XHJcbiAgICAgICAgZmlyc3Q6IHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCAqIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplLFxyXG4gICAgICAgIHJvd3M6IHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplLFxyXG4gICAgICAgIGdsb2JhbEZpbHRlcjogdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLmdsb2JhbFNlYXJjaCxcclxuICAgICAgICBzb3J0RmllbGQ6IHRoaXMubG9jYWxTdG9yYWdlRGF0YS5zb3J0RmllbGQsXHJcbiAgICAgICAgc29ydE9yZGVyOiB0aGlzLmxvY2FsU3RvcmFnZURhdGEuc29ydE9yZGVyLFxyXG4gICAgICAgIGZpbHRlcnM6IHRoaXMubG9jYWxTdG9yYWdlRGF0YS5maWx0ZXJzLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGFibGVTb3VyY2UuZmlsdGVyID0gSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgIC4uLnRoaXMubG9jYWxTdG9yYWdlRGF0YS5maWx0ZXJzLFxyXG4gICAgICAgIHN0R2xvYmFsU2VhcmNoOiB0aGlzLmxvY2FsU3RvcmFnZURhdGEuZ2xvYmFsU2VhcmNoLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRGF0YVRvTG9jYWxTdG9yYWdlKCkge1xyXG4gICAgaWYgKHRoaXMubG9jYWxTdG9yYWdlTmFtZSgpKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgIHRoaXMubG9jYWxTdG9yYWdlTmFtZSgpISxcclxuICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLmxvY2FsU3RvcmFnZURhdGEpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEluaXRUYWJsZSgpIHtcclxuICAgIHRoaXMudGFibGVTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKHRoaXMuX2RhdGEpO1xyXG5cclxuICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplID0gdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLnBhZ2VTaXplO1xyXG4gICAgdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID0gdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLnBhZ2VJbmRleDtcclxuXHJcbiAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VEYXRhLnNvcnRGaWVsZCAmJiB0aGlzLmxvY2FsU3RvcmFnZURhdGEuc29ydE9yZGVyKSB7XHJcbiAgICAgIGNvbnN0IGRpc2FibGVDbGVhciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNvcnQuc29ydCh7IGlkOiAnJywgc3RhcnQ6ICdhc2MnLCBkaXNhYmxlQ2xlYXIgfSk7XHJcbiAgICAgIHRoaXMuc29ydC5zb3J0KHtcclxuICAgICAgICBpZDogdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLnNvcnRGaWVsZCxcclxuICAgICAgICBzdGFydDogdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLnNvcnRPcmRlcixcclxuICAgICAgICBkaXNhYmxlQ2xlYXIsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5sYXp5TG9hZGluZygpISkge1xyXG4gICAgICB0aGlzLnRhYmxlU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xyXG4gICAgICB0aGlzLnRhYmxlU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XHJcbiAgICAgIHRoaXMudGFibGVTb3VyY2UuZmlsdGVyUHJlZGljYXRlID0gdGhpcy5jcmVhdGVDdXN0b21GaWx0ZXJGb3JMb2NhbFRhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lbWl0TGF6eUxvYWRpbmcoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0U29ydFBhZ2VTdWJzY3JpcHRpb24oKSB7XHJcbiAgICB0aGlzLnNvcnQuc29ydENoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxyXG4gICAgICAgICAgKHByZXYsIGN1cnIpID0+IEpTT04uc3RyaW5naWZ5KHByZXYpID09PSBKU09OLnN0cmluZ2lmeShjdXJyKVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VEYXRhID0ge1xyXG4gICAgICAgICAgLi4udGhpcy5sb2NhbFN0b3JhZ2VEYXRhLFxyXG4gICAgICAgICAgc29ydEZpZWxkOiByZXMuYWN0aXZlLFxyXG4gICAgICAgICAgc29ydE9yZGVyOiByZXMuZGlyZWN0aW9uLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXRhVG9Mb2NhbFN0b3JhZ2UoKTtcclxuICAgICAgICB0aGlzLmVtaXRMYXp5TG9hZGluZygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnBhZ2luYXRvci5wYWdlXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXHJcbiAgICAgICAgICAocHJldiwgY3VycikgPT4gSlNPTi5zdHJpbmdpZnkocHJldikgPT09IEpTT04uc3RyaW5naWZ5KGN1cnIpXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZURhdGEgPSB7XHJcbiAgICAgICAgICAuLi50aGlzLmxvY2FsU3RvcmFnZURhdGEsXHJcbiAgICAgICAgICBwYWdlSW5kZXg6IHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCxcclxuICAgICAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2luYXRvci5wYWdlU2l6ZSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZURhdGFUb0xvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgIHRoaXMuZW1pdExhenlMb2FkaW5nKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREaXNwbGF5ZWRDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5pbml0Q29sdW1ucygpLm1hcChjb2wgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmNvbCxcclxuICAgICAgICB0eXBlOiBjb2wudHlwZSA/IGNvbC50eXBlIDogJ3N0cmluZycsXHJcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICBleHBhbmRlZDogdHJ1ZSxcclxuICAgICAgICBpc0VkaXRpbmc6IGZhbHNlLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zZXRDb2x1bW5zT3JkZXIoKTtcclxuICAgIHRoaXMuc2V0Q29sdW1uc1Zpc2libGUoKTtcclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDb2x1bW5zT3JkZXIoKSB7XHJcbiAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VEYXRhPy5jb2x1bW5zT3JkZXIpIHtcclxuICAgICAgdGhpcy5jb2x1bW5zID0gW1xyXG4gICAgICAgIC4uLnRoaXMubG9jYWxTdG9yYWdlRGF0YS5jb2x1bW5zT3JkZXJcclxuICAgICAgICAgIC5maWx0ZXIoY29sdW1uID0+IHRoaXMuY29sdW1ucy5maW5kKGNvbCA9PiBjb2wuZmllbGQgPT09IGNvbHVtbikpXHJcbiAgICAgICAgICAubWFwKGNvbHVtbiA9PiB0aGlzLmNvbHVtbnMuZmluZChjb2wgPT4gY29sLmZpZWxkID09PSBjb2x1bW4pISksXHJcbiAgICAgICAgLi4udGhpcy5jb2x1bW5zLmZpbHRlcihcclxuICAgICAgICAgIGNvbHVtbiA9PiAhdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLmNvbHVtbnNPcmRlci5pbmNsdWRlcyhjb2x1bW4uZmllbGQpXHJcbiAgICAgICAgKSxcclxuICAgICAgXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q29sdW1uc1Zpc2libGUoKSB7XHJcbiAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VEYXRhPy5zZWxlY3RlZENvbHVtbnMpIHtcclxuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5zLm1hcChjb2wgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5jb2wsXHJcbiAgICAgICAgICB2aXNpYmxlOlxyXG4gICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZURhdGEuc2VsZWN0ZWRDb2x1bW5zLmluY2x1ZGVzKGNvbC5maWVsZCkgfHxcclxuICAgICAgICAgICAgIXRoaXMubG9jYWxTdG9yYWdlRGF0YS5jb2x1bW5zT3JkZXIuaW5jbHVkZXMoY29sLmZpZWxkKSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0U2VsZWN0ZWRDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbCA9PiB7XHJcbiAgICAgIHJldHVybiBjb2wudmlzaWJsZTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnNTdHJpbmcgPSB0aGlzLnNlbGVjdGVkQ29sdW1ucy5tYXAoY29sID0+IGNvbC5maWVsZCk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkTG9jYWxTdG9yYWdlRGF0YSgpIHtcclxuICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZU5hbWUoKSkge1xyXG4gICAgICBjb25zdCBsb2NhbFN0b3JhZ2VEYXRhID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5sb2NhbFN0b3JhZ2VOYW1lKCkhKTtcclxuXHJcbiAgICAgIGlmIChsb2NhbFN0b3JhZ2VEYXRhKSB7XHJcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VEYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VEYXRhKTtcclxuICAgICAgICB0aGlzLmluaXRGaWx0ZXJzID0gdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLmZpbHRlcnMgfHwge307XHJcbiAgICAgICAgdGhpcy5pbml0R2xvYmFsU2VhcmNoID0gdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLmdsb2JhbFNlYXJjaDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldE5ld0VtcHR5TG9jYWxTdG9yYWdlRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldE5ld0VtcHR5TG9jYWxTdG9yYWdlRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXROZXdFbXB0eUxvY2FsU3RvcmFnZURhdGEoKSB7XHJcbiAgICB0aGlzLmxvY2FsU3RvcmFnZURhdGEgPSB7XHJcbiAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplKCksXHJcbiAgICAgIHBhZ2VJbmRleDogMCxcclxuICAgICAgc2VsZWN0ZWRDb2x1bW5zOiB0aGlzLmluaXRDb2x1bW5zKCkubWFwKGNvbCA9PiBjb2wuZmllbGQpLFxyXG4gICAgICBnbG9iYWxTZWFyY2g6ICcnLFxyXG4gICAgICBjb2x1bW5zT3JkZXI6IHRoaXMuaW5pdENvbHVtbnMoKS5tYXAoY29sID0+IGNvbC5maWVsZCksXHJcbiAgICAgIGZpbHRlcnM6IHt9LFxyXG4gICAgICBzb3J0RmllbGQ6ICcnLFxyXG4gICAgICBzb3J0T3JkZXI6ICdhc2MnLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3RNYXRlcmlhbFRhYmxlTG9hZERhdGEge1xyXG4gIGZpcnN0OiBudW1iZXI7XHJcbiAgcm93czogbnVtYmVyO1xyXG4gIGdsb2JhbEZpbHRlcjogc3RyaW5nO1xyXG4gIHNvcnRGaWVsZDogc3RyaW5nO1xyXG4gIHNvcnRPcmRlcjogU29ydERpcmVjdGlvbjtcclxuICBmaWx0ZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN0TWF0ZXJpYWxUYWJsZUxvY2FsU3RvcmFnZSBleHRlbmRzIElDYXB0aW9uRGF0YUNoYW5nZWQge1xyXG4gIHBhZ2VTaXplOiBudW1iZXI7XHJcbiAgcGFnZUluZGV4OiBudW1iZXI7XHJcbiAgc29ydEZpZWxkOiBzdHJpbmc7XHJcbiAgc29ydE9yZGVyOiBTb3J0RGlyZWN0aW9uO1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzdC1tYXRlcmlhbC10YWJsZVwiPlxyXG4gIEBpZiAoaXNMb2FkaW5nKCkpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nLXNwaW5uZXJcIj5cclxuICAgICAgPG1hdC1zcGlubmVyIGNvbG9yPVwiYWNjZW50XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuXHJcbiAgQGlmIChzaG93VGFibGUpIHtcclxuICAgIDxzdC1tYXRlcmlhbC10YWJsZS1jYXB0aW9uXHJcbiAgICAgIFt0YWJsZVRpdGxlXT1cInRhYmxlVGl0bGUoKVwiXHJcbiAgICAgIFthbGxvd1BpY2tDb2x1bW5zXT1cImFsbG93UGlja0NvbHVtbnMoKVwiXHJcbiAgICAgIFtzaG93R2xvYmFsU2VhcmNoXT1cInNob3dHbG9iYWxTZWFyY2goKVwiXHJcbiAgICAgIFthbGxvd1Jlb3JkZXJDb2x1bW5zXT1cImFsbG93UmVvcmRlckNvbHVtbnMoKVwiXHJcbiAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxyXG4gICAgICBbaW5pdEZpbHRlcnNdPVwiaW5pdEZpbHRlcnNcIlxyXG4gICAgICBbaW5pdEdsb2JhbFNlYXJjaF09XCJpbml0R2xvYmFsU2VhcmNoXCJcclxuICAgICAgKGNhcHRpb25EYXRhQ2hhbmdlZCk9XCJjYXB0aW9uRGF0YUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgIChyZXNldFRhYmxlU2V0dGluZ3MpPVwicmVzZXRUYWJsZVNldHRpbmdzKClcIlxyXG4gICAgPjwvc3QtbWF0ZXJpYWwtdGFibGUtY2FwdGlvbj5cclxuICB9XHJcblxyXG4gIDx0YWJsZVxyXG4gICAgW25nQ2xhc3NdPVwieyAnbm8taG92ZXInOiAhcm93Q2xpY2tBY3Rpb24oKSB9XCJcclxuICAgIG1hdC10YWJsZVxyXG4gICAgW2RhdGFTb3VyY2VdPVwidGFibGVTb3VyY2VcIlxyXG4gICAgbWF0U29ydFxyXG4gID5cclxuICAgIEBmb3IgKGNvbHVtbiBvZiBzZWxlY3RlZENvbHVtbnM7IHRyYWNrIGNvbHVtbikge1xyXG4gICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLmZpZWxkXCI+XHJcbiAgICAgICAgPHRoXHJcbiAgICAgICAgICBtYXQtaGVhZGVyLWNlbGxcclxuICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXHJcbiAgICAgICAgICBzdHlsZT1cInt7IGNvbHVtbi53aWR0aCA/ICd3aWR0aDonICsgY29sdW1uLndpZHRoIDogJycgfX1cIlxyXG4gICAgICAgICAgbWF0LXNvcnQtaGVhZGVyXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNvbHVtbi5zb3J0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBAaWYgKGNvbHVtbi50eXBlID09PSAnYWN0aW9ucy1yb3ctc2VsZWN0aW5nJykge1xyXG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHRvZ2dsZUFsbFJvd3MoKSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIGlzQWxsU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAge3sgY29sdW1uLmhlYWRlciB9fVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvdGg+XHJcbiAgICAgICAgPHRkXHJcbiAgICAgICAgICBtYXQtY2VsbFxyXG4gICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiXHJcbiAgICAgICAgICBzdHlsZT1cInt7IGNvbHVtbi53aWR0aCA/ICd3aWR0aDonICsgY29sdW1uLndpZHRoIDogJycgfX1cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzdC1tYXRlcmlhbC10YWJsZS1yb3ctY2VsbFxyXG4gICAgICAgICAgICBbY29sdW1uXT1cImNvbHVtblwiXHJcbiAgICAgICAgICAgIFtyb3dEYXRhXT1cImVsZW1lbnRcIlxyXG4gICAgICAgICAgICBbcm93RGF0YUNvcHldPVwiYWN0aXZlUm93c0VkaXRpbmdbZWxlbWVudC5pZF1cIlxyXG4gICAgICAgICAgICBbcm93RWRpdGluZ109XCIhIWFjdGl2ZVJvd3NFZGl0aW5nW2VsZW1lbnQuaWRdXCJcclxuICAgICAgICAgICAgW3Jvd0lzU2VsZWN0ZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQoZWxlbWVudClcIlxyXG4gICAgICAgICAgICAoZWRpdFJvd0VtaXR0ZXIpPVwiZWRpdFJvdyhlbGVtZW50LCBjb2x1bW4pXCJcclxuICAgICAgICAgICAgKHNhdmVFZGl0Um93RW1pdHRlcik9XCJzYXZlRWRpdFJvdyhlbGVtZW50LCBjb2x1bW4pXCJcclxuICAgICAgICAgICAgKGNhbmNlbEVkaXRSb3dFbWl0dGVyKT1cImNhbmNlbEVkaXRSb3coZWxlbWVudCwgY29sdW1uKVwiXHJcbiAgICAgICAgICAgIChzZWxlY3RSb3dDaGFuZ2UpPVwic2VsZWN0Um93Q2hhbmdlZCgkZXZlbnQsIGVsZW1lbnQpXCJcclxuICAgICAgICAgID48L3N0LW1hdGVyaWFsLXRhYmxlLXJvdy1jZWxsPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgfVxyXG5cclxuICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwic2VsZWN0ZWRDb2x1bW5zU3RyaW5nXCI+PC90cj5cclxuICAgIDx0clxyXG4gICAgICBtYXQtcm93XHJcbiAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBzZWxlY3RlZENvbHVtbnNTdHJpbmdcIlxyXG4gICAgICAoY2xpY2spPVwicm93Q2xpY2tBY3Rpb24oKSA/IHJvd0NsaWNrQWN0aW9uKCkhKHJvdykgOiBudWxsXCJcclxuICAgID48L3RyPlxyXG4gIDwvdGFibGU+XHJcbiAgPG1hdC1wYWdpbmF0b3JcclxuICAgIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCJcclxuICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwiWzUsIDEwLCAxNSwgMjAsIDI1XVwiXHJcbiAgICBbbGVuZ3RoXT1cImRhdGFMZW5ndGgoKVwiXHJcbiAgPjwvbWF0LXBhZ2luYXRvcj5cclxuICBAaWYgKHJvd1NlbGVjdGluZygpKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwic3QtbWF0ZXJpYWwtdGFibGUtc2VsZWN0ZWQtcm93c1wiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiPlxyXG4gICAgICAgIHt7IHNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGggfX1cclxuICAgICAgICB7eyBzdFRhYmxlVHJhbnNsYXRpb25zLmdldFRyYW5zbGF0aW9ucygpKCkucm93U2VsZWN0ZWQgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICBAZm9yIChyb3cgb2Ygc2VsZWN0aW9uLnNlbGVjdGVkOyB0cmFjayByb3cpIHtcclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwicmVtb3ZlU2VsZWN0ZWRSb3cocm93KVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAge3sgcm93W3NlbGVjdGlvbkZpZWxkTGFiZWwoKV1cclxuICAgICAgICAgICAgICB9fTxtYXQtaWNvbiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMDsgbWFyZ2luLWxlZnQ6IDEwcHhcIlxyXG4gICAgICAgICAgICAgICAgPmRlbGV0ZTwvbWF0LWljb25cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L21hdC1tZW51PlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG48L2Rpdj5cclxuIl19
|
|
399
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXRhYmxlcy9zcmMvbGliL2NvbXBvbmVudHMvbWF0ZXJpYWwtdGFibGUvbWF0ZXJpYWwtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXRhYmxlcy9zcmMvbGliL2NvbXBvbmVudHMvbWF0ZXJpYWwtdGFibGUvbWF0ZXJpYWwtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxFQUVMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sRUFDTixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsMkJBQTJCLEdBQzVCLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFhMUQsTUFBTSxPQUFPLHNCQUNYLFNBQVEsMkJBQTJCO0lBNEJuQyxJQUNJLElBQUksQ0FBQyxJQUFXO1FBQ2xCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQzdDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FB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QkFBaUIsQ0FBQyxJQUFJO2dLQU1aLFNBQVM7c0JBQWpDLFNBQVM7dUJBQUMsWUFBWTtnQkFDSCxJQUFJO3NCQUF2QixTQUFTO3VCQUFDLE9BQU87Z0JBeUJkLElBQUk7c0JBRFAsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBpbnB1dCxcclxuICBvdXRwdXQsXHJcbiAgbW9kZWwsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQsIFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBTdE1hdGVyaWFsVGFibGVDb2x1bW5Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zdC1tYXRlcmlhbC10YWJsZS1jb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQgeyBWaWV3U3RNYXRlcmlhbFRhYmxlQ29sdW1uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvdmlldy92aWV3LXN0LW1hdGVyaWFsLXRhYmxlLWNvbHVtbi5tb2RlbCc7XHJcbmltcG9ydCB7IElDYXB0aW9uRGF0YUNoYW5nZWQgfSBmcm9tICcuL21hdGVyaWFsLXRhYmxlLWNhcHRpb24vbWF0ZXJpYWwtdGFibGUtY2FwdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gIFN0QmFzZVNlcnZpY2UsXHJcbiAgU3RTdWJzY3JpYmVEZXN0cm95Q29tcG9uZW50LFxyXG59IGZyb20gJ25neC1zdC1iYXNlLWZ1bmN0aW9ucyc7XHJcbmltcG9ydCB7IFN0U25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnbmd4LXN0LXNuYWNrLWJhcic7XHJcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgU3RUYWJsZXNUcmFuc2xhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3QtdGFibGVzLXRyYW5zbGF0aW9ucy5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmd4LXN0LW1hdGVyaWFsLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWF0ZXJpYWwtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogW1xyXG4gICAgJy4vbWF0ZXJpYWwtdGFibGUuY29tcG9uZW50LnNjc3MnLFxyXG4gICAgJy4uLy4uLy4uLy4uL2Fzc2V0cy9iYXNlLXRhYmxlLnNjc3MnLFxyXG4gIF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsVGFibGVDb21wb25lbnRcclxuICBleHRlbmRzIFN0U3Vic2NyaWJlRGVzdHJveUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0XHJcbntcclxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcikgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XHJcbiAgQFZpZXdDaGlsZChNYXRTb3J0KSBzb3J0OiBNYXRTb3J0O1xyXG5cclxuICBzaG93R2xvYmFsU2VhcmNoID0gaW5wdXQoZmFsc2UpO1xyXG5cclxuICB0YWJsZVRpdGxlID0gaW5wdXQoJycpO1xyXG5cclxuICBwYWdlU2l6ZSA9IGlucHV0PG51bWJlcj4oMTApO1xyXG5cclxuICBkYXRhTGVuZ3RoID0gaW5wdXQ8bnVtYmVyPigwKTtcclxuXHJcbiAgYWxsb3dQaWNrQ29sdW1ucyA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG5cclxuICBhbGxvd1Jlb3JkZXJDb2x1bW5zID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblxyXG4gIGxvY2FsU3RvcmFnZU5hbWUgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuXHJcbiAgbGF6eUxvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIGlzTG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgaW5pdENvbHVtbnMgPSBtb2RlbDxTdE1hdGVyaWFsVGFibGVDb2x1bW5Nb2RlbFtdPihbXSk7XHJcblxyXG4gIHJvd0NsaWNrQWN0aW9uID0gaW5wdXQ8KHJvdzogYW55KSA9PiB2b2lkPigpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBkYXRhKGRhdGE6IGFueVtdKSB7XHJcbiAgICBpZiAodGhpcy5yb3dFZGl0aW5nKCkgfHwgdGhpcy5yb3dTZWxlY3RpbmcoKSkge1xyXG4gICAgICBpZiAoZGF0YS5sZW5ndGggPiAwICYmICFkYXRhWzBdLmlkKSB7XHJcbiAgICAgICAgZGF0YSA9IGRhdGEubWFwKHJvdyA9PiB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi5yb3csXHJcbiAgICAgICAgICAgIGlkOiBTdEJhc2VTZXJ2aWNlLmdlbmVyYXRlR1VJRCgpLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5fZGF0YSA9IGRhdGEgfHwgW107XHJcblxyXG4gICAgaWYgKHRoaXMudGFibGVTb3VyY2UpIHtcclxuICAgICAgdGhpcy50YWJsZVNvdXJjZS5kYXRhID0gZGF0YTtcclxuICAgICAgaWYgKCF0aGlzLmxhenlMb2FkaW5nKCkgJiYgdGhpcy5sb2NhbFN0b3JhZ2VEYXRhKSB7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID0gdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLnBhZ2VJbmRleDtcclxuICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICB0aGlzLnBhZ2luYXRvci5fZW1pdFBhZ2VFdmVudCh0aGlzLmxvY2FsU3RvcmFnZURhdGEucGFnZUluZGV4KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGdldCBkYXRhKCk6IGFueVtdIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhO1xyXG4gIH1cclxuXHJcbiAgcm93RWRpdGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgcm93U2VsZWN0aW5nID0gaW5wdXQoZmFsc2UpO1xyXG5cclxuICBzZWxlY3Rpb25GaWVsZExhYmVsID0gaW5wdXQoJycpO1xyXG5cclxuICBsb2FkRGF0YSA9IG91dHB1dDxTdE1hdGVyaWFsVGFibGVMb2FkRGF0YT4oKTtcclxuXHJcbiAgc2F2ZU5ld1JvdyA9IG91dHB1dDxhbnk+KCk7XHJcblxyXG4gIHNlbGVjdFJvd0NoYW5nZSA9IG91dHB1dDxhbnlbXT4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfZGF0YTogYW55W10gPSBbXTtcclxuXHJcbiAgY29sdW1uczogVmlld1N0TWF0ZXJpYWxUYWJsZUNvbHVtbk1vZGVsW10gPSBbXTtcclxuICBzZWxlY3RlZENvbHVtbnM6IFZpZXdTdE1hdGVyaWFsVGFibGVDb2x1bW5Nb2RlbFtdID0gW107XHJcbiAgc2VsZWN0ZWRDb2x1bW5zU3RyaW5nOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICB0YWJsZVNvdXJjZTogTWF0VGFibGVEYXRhU291cmNlPGFueT47XHJcblxyXG4gIGluaXRGaWx0ZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcbiAgaW5pdEdsb2JhbFNlYXJjaDogc3RyaW5nID0gJyc7XHJcblxyXG4gIHNob3dUYWJsZSA9IHRydWU7XHJcblxyXG4gIGFjdGl2ZVJvd3NFZGl0aW5nOiB7IFtyb3dJZDogc3RyaW5nXTogeyBbcHJvcDogc3RyaW5nXTogYW55IH0gfSA9IHt9O1xyXG4gIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRydWUsIFtdKTtcclxuXHJcbiAgcHJpdmF0ZSBsb2NhbFN0b3JhZ2VEYXRhOiBTdE1hdGVyaWFsVGFibGVMb2NhbFN0b3JhZ2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHNuYWNrYmFyOiBTdFNuYWNrQmFyU2VydmljZSxcclxuICAgIHB1YmxpYyBzdFRhYmxlVHJhbnNsYXRpb25zOiBTdFRhYmxlc1RyYW5zbGF0aW9uc1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnJvd1NlbGVjdGluZygpKSB7XHJcbiAgICAgIHRoaXMuaW5pdENvbHVtbnMoKS51bnNoaWZ0KHtcclxuICAgICAgICBmaWVsZDogJ2FjdGlvbnMtcm93LXNlbGVjdGluZycsXHJcbiAgICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgICB0eXBlOiAnYWN0aW9ucy1yb3ctc2VsZWN0aW5nJyxcclxuICAgICAgICBzb3J0OiBmYWxzZSxcclxuICAgICAgICBmaWx0ZXI6IGZhbHNlLFxyXG4gICAgICAgIHdpZHRoOiAnNjBweCcsXHJcbiAgICAgICAgc2VsZWN0Q29sdW1uTGFiZWw6XHJcbiAgICAgICAgICB0aGlzLnN0VGFibGVUcmFuc2xhdGlvbnMuZ2V0VHJhbnNsYXRpb25zKCkoKS5yb3dTZWxlY3RDb2x1bW5MYWJlbCxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmluaXRDb2x1bW5zLnVwZGF0ZShvbGRWYWwgPT5cclxuICAgICAgICBvbGRWYWwuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmllbGQgIT09ICdhY3Rpb24tcm93LXNlbGVjdGluZycpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucm93RWRpdGluZygpKSB7XHJcbiAgICAgIHRoaXMuaW5pdENvbHVtbnMoKS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogJ2FjdGlvbnMtcm93LWVkaXRpbmcnLFxyXG4gICAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgICAgdHlwZTogJ2FjdGlvbnMtcm93LWVkaXRpbmcnLFxyXG4gICAgICAgIHNvcnQ6IGZhbHNlLFxyXG4gICAgICAgIGZpbHRlcjogZmFsc2UsXHJcbiAgICAgICAgd2lkdGg6ICcxMTBweCcsXHJcbiAgICAgICAgc2VsZWN0Q29sdW1uTGFiZWw6XHJcbiAgICAgICAgICB0aGlzLnN0VGFibGVUcmFuc2xhdGlvbnMuZ2V0VHJhbnNsYXRpb25zKCkoKS5yb3dBY3Rpb25zQ29sdW1uTGFiZWwsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbml0Q29sdW1ucy51cGRhdGUob2xkVmFsID0+XHJcbiAgICAgICAgb2xkVmFsLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmZpZWxkICE9PSAnYWN0aW9uLXJvdy1lZGl0aW5nJylcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvYWRMb2NhbFN0b3JhZ2VEYXRhKCk7XHJcbiAgICB0aGlzLnNldERpc3BsYXllZENvbHVtbnMoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuc2V0SW5pdFRhYmxlKCk7XHJcbiAgICB0aGlzLnNldFNvcnRQYWdlU3Vic2NyaXB0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBjYXB0aW9uRGF0YUNoYW5nZWQoZXZlbnQ6IElDYXB0aW9uRGF0YUNoYW5nZWQpIHtcclxuICAgIGxldCBsb2FkTGF6eURhdGEgPSBmYWxzZTtcclxuICAgIGlmIChcclxuICAgICAgZXZlbnQuZ2xvYmFsU2VhcmNoICE9PSB0aGlzLmxvY2FsU3RvcmFnZURhdGEuZ2xvYmFsU2VhcmNoIHx8XHJcbiAgICAgIGV2ZW50LmZpbHRlcnMgIT09IHRoaXMubG9jYWxTdG9yYWdlRGF0YS5maWx0ZXJzXHJcbiAgICApIHtcclxuICAgICAgbG9hZExhenlEYXRhID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvY2FsU3RvcmFnZURhdGEgPSB7XHJcbiAgICAgIC4uLmV2ZW50LFxyXG4gICAgICBwYWdlU2l6ZTogdGhpcy5wYWdpbmF0b3IucGFnZVNpemUsXHJcbiAgICAgIHBhZ2VJbmRleDogdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4LFxyXG4gICAgICBzb3J0RmllbGQ6IHRoaXMuc29ydC5hY3RpdmUsXHJcbiAgICAgIHNvcnRPcmRlcjogdGhpcy5zb3J0LmRpcmVjdGlvbixcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5zZXRDb2x1bW5zT3JkZXIoKTtcclxuICAgIHRoaXMuc2V0Q29sdW1uc1Zpc2libGUoKTtcclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRDb2x1bW5zKCk7XHJcbiAgICB0aGlzLnVwZGF0ZURhdGFUb0xvY2FsU3RvcmFnZSgpO1xyXG5cclxuICAgIGlmIChsb2FkTGF6eURhdGEpIHtcclxuICAgICAgdGhpcy5lbWl0TGF6eUxvYWRpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRUYWJsZVNldHRpbmdzKCkge1xyXG4gICAgdGhpcy5zaG93VGFibGUgPSBmYWxzZTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgdGhpcy5zZXROZXdFbXB0eUxvY2FsU3RvcmFnZURhdGEoKTtcclxuICAgIHRoaXMudXBkYXRlRGF0YVRvTG9jYWxTdG9yYWdlKCk7XHJcbiAgICB0aGlzLmVtaXRMYXp5TG9hZGluZygpO1xyXG4gICAgdGhpcy5pbml0RmlsdGVycyA9IHt9O1xyXG4gICAgdGhpcy5pbml0R2xvYmFsU2VhcmNoID0gJyc7XHJcbiAgICB0aGlzLnNvcnQuc29ydCh7IGlkOiAnJywgc3RhcnQ6ICdhc2MnLCBkaXNhYmxlQ2xlYXI6IGZhbHNlIH0pO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNob3dUYWJsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2V0RGlzcGxheWVkQ29sdW1ucygpO1xyXG4gICAgICB0aGlzLnNldEluaXRUYWJsZSgpO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIGVkaXRSb3cocm93OiBhbnksIGNvbHVtbjogVmlld1N0TWF0ZXJpYWxUYWJsZUNvbHVtbk1vZGVsKSB7XHJcbiAgICB0aGlzLmFjdGl2ZVJvd3NFZGl0aW5nW3Jvdy5pZF0gPSB7IC4uLnJvdyB9O1xyXG4gIH1cclxuXHJcbiAgc2F2ZUVkaXRSb3cocm93OiBhbnksIGNvbHVtbjogVmlld1N0TWF0ZXJpYWxUYWJsZUNvbHVtbk1vZGVsKSB7XHJcbiAgICBsZXQgYWxsb3dTYXZlID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmNvbHVtbnNcclxuICAgICAgLmZpbHRlcihjb2wgPT4gY29sLmFsbG93RWRpdENvbHVtbilcclxuICAgICAgLmZvckVhY2goY29sID0+IHtcclxuICAgICAgICBpZiAoY29sLmN1c3RvbUVkaXRSb3dWYWxpZGF0b3IpIHtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbC5jdXN0b21FZGl0Um93VmFsaWRhdG9yKFxyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVJvd3NFZGl0aW5nW3Jvdy5pZF1bY29sLmZpZWxkXSxcclxuICAgICAgICAgICAgcm93W2NvbC5maWVsZF0sXHJcbiAgICAgICAgICAgIHJvd1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQpIHtcclxuICAgICAgICAgICAgYWxsb3dTYXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc25hY2tiYXIuZXJyb3IocmVzdWx0LmVycm9yTWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIGlmIChhbGxvd1NhdmUpIHtcclxuICAgICAgdGhpcy5zYXZlTmV3Um93LmVtaXQodGhpcy5hY3RpdmVSb3dzRWRpdGluZ1tyb3cuaWRdKTtcclxuICAgICAgdGhpcy5jb2x1bW5zXHJcbiAgICAgICAgLmZpbHRlcihjb2wgPT4gY29sLmFsbG93RWRpdENvbHVtbilcclxuICAgICAgICAuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICAgICAgcm93W2NvbC5maWVsZF0gPSB0aGlzLmFjdGl2ZVJvd3NFZGl0aW5nW3Jvdy5pZF1bY29sLmZpZWxkXTtcclxuICAgICAgICB9KTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICAgIGRlbGV0ZSB0aGlzLmFjdGl2ZVJvd3NFZGl0aW5nW3Jvdy5pZF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5jZWxFZGl0Um93KHJvdzogYW55LCBjb2x1bW46IFZpZXdTdE1hdGVyaWFsVGFibGVDb2x1bW5Nb2RlbCkge1xyXG4gICAgZGVsZXRlIHRoaXMuYWN0aXZlUm93c0VkaXRpbmdbcm93LmlkXTtcclxuICB9XHJcblxyXG4gIGlzQWxsU2VsZWN0ZWQoKSB7XHJcbiAgICBjb25zdCBudW1TZWxlY3RlZCA9IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aDtcclxuICAgIGNvbnN0IG51bVJvd3MgPSB0aGlzLnRhYmxlU291cmNlLmRhdGEubGVuZ3RoO1xyXG4gICAgcmV0dXJuIG51bVNlbGVjdGVkID09PSBudW1Sb3dzO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQWxsUm93cygpIHtcclxuICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KC4uLnRoaXMudGFibGVTb3VyY2UuZGF0YSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RSb3dDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVTZWxlY3RlZFJvdyhyb3c6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3Rpb24uZGVzZWxlY3Qocm93KTtcclxuICAgIHRoaXMuc2VsZWN0Um93Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Um93Q2hhbmdlZCh2YWx1ZTogYm9vbGVhbiwgcm93OiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3Qocm93KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmRlc2VsZWN0KHJvdyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMuc2VsZWN0Um93Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVDdXN0b21GaWx0ZXJGb3JMb2NhbFRhYmxlKCkge1xyXG4gICAgbGV0IGZpbHRlckZ1bmN0aW9uID0gKGRhdGE6IGFueSwgZmlsdGVyOiBzdHJpbmcpOiBib29sZWFuID0+IHtcclxuICAgICAgY29uc3Qgc2VhcmNoVGVybXM6IHsgW2NvbHVtbjogc3RyaW5nXTogc3RyaW5nOyBzdEdsb2JhbFNlYXJjaDogc3RyaW5nIH0gPVxyXG4gICAgICAgIEpTT04ucGFyc2UoZmlsdGVyKTtcclxuICAgICAgY29uc3Qgc2VhcmNoVGVybXNLZXlzID0gT2JqZWN0LmtleXMoc2VhcmNoVGVybXMpO1xyXG4gICAgICBsZXQgc2VhcmNoT2sgPSB0cnVlO1xyXG4gICAgICBsZXQgc2VhcmNoT2tHbG9iYWwgPSB0cnVlO1xyXG5cclxuICAgICAgc2VhcmNoVGVybXNLZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAga2V5ICE9PSAnc3RHbG9iYWxTZWFyY2gnICYmXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uc1N0cmluZy5pbmNsdWRlcyhrZXkpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBzZWFyY2hPayA9XHJcbiAgICAgICAgICAgIHNlYXJjaE9rICYmXHJcbiAgICAgICAgICAgIGRhdGFba2V5XVxyXG4gICAgICAgICAgICAgIC50b1N0cmluZygpXHJcbiAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgICAuaW5kZXhPZihzZWFyY2hUZXJtc1trZXldLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkgIT09IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChzZWFyY2hUZXJtcy5zdEdsb2JhbFNlYXJjaCkge1xyXG4gICAgICAgIHNlYXJjaE9rR2xvYmFsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNTdHJpbmcuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICAgICAgaWYgKGRhdGFbY29sXSkge1xyXG4gICAgICAgICAgICBzZWFyY2hPa0dsb2JhbCA9XHJcbiAgICAgICAgICAgICAgc2VhcmNoT2tHbG9iYWwgfHxcclxuICAgICAgICAgICAgICBkYXRhW2NvbF1cclxuICAgICAgICAgICAgICAgIC50b1N0cmluZygpXHJcbiAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAgICAgLmluZGV4T2YoXHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaFRlcm1zLnN0R2xvYmFsU2VhcmNoLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAgICAgKSAhPT0gLTE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBzZWFyY2hPayAmJiBzZWFyY2hPa0dsb2JhbDtcclxuICAgIH07XHJcbiAgICByZXR1cm4gZmlsdGVyRnVuY3Rpb247XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXRMYXp5TG9hZGluZygpIHtcclxuICAgIGlmICh0aGlzLmxhenlMb2FkaW5nKCkpIHtcclxuICAgICAgdGhpcy5sb2FkRGF0YS5lbWl0KHtcclxuICAgICAgICBmaXJzdDogdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ICogdGhpcy5wYWdpbmF0b3IucGFnZVNpemUsXHJcbiAgICAgICAgcm93czogdGhpcy5wYWdpbmF0b3IucGFnZVNpemUsXHJcbiAgICAgICAgZ2xvYmFsRmlsdGVyOiB0aGlzLmxvY2FsU3RvcmFnZURhdGEuZ2xvYmFsU2VhcmNoLFxyXG4gICAgICAgIHNvcnRGaWVsZDogdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLnNvcnRGaWVsZCxcclxuICAgICAgICBzb3J0T3JkZXI6IHRoaXMubG9jYWxTdG9yYWdlRGF0YS5zb3J0T3JkZXIsXHJcbiAgICAgICAgZmlsdGVyczogdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLmZpbHRlcnMsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50YWJsZVNvdXJjZS5maWx0ZXIgPSBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgLi4udGhpcy5sb2NhbFN0b3JhZ2VEYXRhLmZpbHRlcnMsXHJcbiAgICAgICAgc3RHbG9iYWxTZWFyY2g6IHRoaXMubG9jYWxTdG9yYWdlRGF0YS5nbG9iYWxTZWFyY2gsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVEYXRhVG9Mb2NhbFN0b3JhZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VOYW1lKCkpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VOYW1lKCkhLFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMubG9jYWxTdG9yYWdlRGF0YSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0SW5pdFRhYmxlKCkge1xyXG4gICAgdGhpcy50YWJsZVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UodGhpcy5fZGF0YSk7XHJcblxyXG4gICAgdGhpcy5wYWdpbmF0b3IucGFnZVNpemUgPSB0aGlzLmxvY2FsU3RvcmFnZURhdGEucGFnZVNpemU7XHJcbiAgICB0aGlzLnBhZ2luYXRvci5wYWdlSW5kZXggPSB0aGlzLmxvY2FsU3RvcmFnZURhdGEucGFnZUluZGV4O1xyXG5cclxuICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZURhdGEuc29ydEZpZWxkICYmIHRoaXMubG9jYWxTdG9yYWdlRGF0YS5zb3J0T3JkZXIpIHtcclxuICAgICAgY29uc3QgZGlzYWJsZUNsZWFyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc29ydC5zb3J0KHsgaWQ6ICcnLCBzdGFydDogJ2FzYycsIGRpc2FibGVDbGVhciB9KTtcclxuICAgICAgdGhpcy5zb3J0LnNvcnQoe1xyXG4gICAgICAgIGlkOiB0aGlzLmxvY2FsU3RvcmFnZURhdGEuc29ydEZpZWxkLFxyXG4gICAgICAgIHN0YXJ0OiB0aGlzLmxvY2FsU3RvcmFnZURhdGEuc29ydE9yZGVyLFxyXG4gICAgICAgIGRpc2FibGVDbGVhcixcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmxhenlMb2FkaW5nKCkhKSB7XHJcbiAgICAgIHRoaXMudGFibGVTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5wYWdpbmF0b3I7XHJcbiAgICAgIHRoaXMudGFibGVTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcclxuICAgICAgdGhpcy50YWJsZVNvdXJjZS5maWx0ZXJQcmVkaWNhdGUgPSB0aGlzLmNyZWF0ZUN1c3RvbUZpbHRlckZvckxvY2FsVGFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVtaXRMYXp5TG9hZGluZygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTb3J0UGFnZVN1YnNjcmlwdGlvbigpIHtcclxuICAgIHRoaXMuc29ydC5zb3J0Q2hhbmdlXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXHJcbiAgICAgICAgICAocHJldiwgY3VycikgPT4gSlNPTi5zdHJpbmdpZnkocHJldikgPT09IEpTT04uc3RyaW5naWZ5KGN1cnIpXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZURhdGEgPSB7XHJcbiAgICAgICAgICAuLi50aGlzLmxvY2FsU3RvcmFnZURhdGEsXHJcbiAgICAgICAgICBzb3J0RmllbGQ6IHJlcy5hY3RpdmUsXHJcbiAgICAgICAgICBzb3J0T3JkZXI6IHJlcy5kaXJlY3Rpb24sXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhdGFUb0xvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgIHRoaXMuZW1pdExhenlMb2FkaW5nKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcclxuICAgICAgICAgIChwcmV2LCBjdXJyKSA9PiBKU09OLnN0cmluZ2lmeShwcmV2KSA9PT0gSlNPTi5zdHJpbmdpZnkoY3VycilcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMubG9jYWxTdG9yYWdlRGF0YSA9IHtcclxuICAgICAgICAgIC4uLnRoaXMubG9jYWxTdG9yYWdlRGF0YSxcclxuICAgICAgICAgIHBhZ2VJbmRleDogdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4LFxyXG4gICAgICAgICAgcGFnZVNpemU6IHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlRGF0YVRvTG9jYWxTdG9yYWdlKCk7XHJcbiAgICAgICAgdGhpcy5lbWl0TGF6eUxvYWRpbmcoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldERpc3BsYXllZENvbHVtbnMoKSB7XHJcbiAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmluaXRDb2x1bW5zKCkubWFwKGNvbCA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uY29sLFxyXG4gICAgICAgIHR5cGU6IGNvbC50eXBlID8gY29sLnR5cGUgOiAnc3RyaW5nJyxcclxuICAgICAgICB2aXNpYmxlOiB0cnVlLFxyXG4gICAgICAgIGV4cGFuZGVkOiB0cnVlLFxyXG4gICAgICAgIGlzRWRpdGluZzogZmFsc2UsXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNldENvbHVtbnNPcmRlcigpO1xyXG4gICAgdGhpcy5zZXRDb2x1bW5zVmlzaWJsZSgpO1xyXG4gICAgdGhpcy5zZXRTZWxlY3RlZENvbHVtbnMoKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldENvbHVtbnNPcmRlcigpIHtcclxuICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZURhdGE/LmNvbHVtbnNPcmRlcikge1xyXG4gICAgICB0aGlzLmNvbHVtbnMgPSBbXHJcbiAgICAgICAgLi4udGhpcy5sb2NhbFN0b3JhZ2VEYXRhLmNvbHVtbnNPcmRlclxyXG4gICAgICAgICAgLmZpbHRlcihjb2x1bW4gPT4gdGhpcy5jb2x1bW5zLmZpbmQoY29sID0+IGNvbC5maWVsZCA9PT0gY29sdW1uKSlcclxuICAgICAgICAgIC5tYXAoY29sdW1uID0+IHRoaXMuY29sdW1ucy5maW5kKGNvbCA9PiBjb2wuZmllbGQgPT09IGNvbHVtbikhKSxcclxuICAgICAgICAuLi50aGlzLmNvbHVtbnMuZmlsdGVyKFxyXG4gICAgICAgICAgY29sdW1uID0+ICF0aGlzLmxvY2FsU3RvcmFnZURhdGEuY29sdW1uc09yZGVyLmluY2x1ZGVzKGNvbHVtbi5maWVsZClcclxuICAgICAgICApLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDb2x1bW5zVmlzaWJsZSgpIHtcclxuICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZURhdGE/LnNlbGVjdGVkQ29sdW1ucykge1xyXG4gICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnMubWFwKGNvbCA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIC4uLmNvbCxcclxuICAgICAgICAgIHZpc2libGU6XHJcbiAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlRGF0YS5zZWxlY3RlZENvbHVtbnMuaW5jbHVkZXMoY29sLmZpZWxkKSB8fFxyXG4gICAgICAgICAgICAhdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLmNvbHVtbnNPcmRlci5pbmNsdWRlcyhjb2wuZmllbGQpLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTZWxlY3RlZENvbHVtbnMoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoY29sID0+IHtcclxuICAgICAgcmV0dXJuIGNvbC52aXNpYmxlO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1uc1N0cmluZyA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5zLm1hcChjb2wgPT4gY29sLmZpZWxkKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRMb2NhbFN0b3JhZ2VEYXRhKCkge1xyXG4gICAgaWYgKHRoaXMubG9jYWxTdG9yYWdlTmFtZSgpKSB7XHJcbiAgICAgIGNvbnN0IGxvY2FsU3RvcmFnZURhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmxvY2FsU3RvcmFnZU5hbWUoKSEpO1xyXG5cclxuICAgICAgaWYgKGxvY2FsU3RvcmFnZURhdGEpIHtcclxuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZURhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZURhdGEpO1xyXG4gICAgICAgIHRoaXMuaW5pdEZpbHRlcnMgPSB0aGlzLmxvY2FsU3RvcmFnZURhdGEuZmlsdGVycyB8fCB7fTtcclxuICAgICAgICB0aGlzLmluaXRHbG9iYWxTZWFyY2ggPSB0aGlzLmxvY2FsU3RvcmFnZURhdGEuZ2xvYmFsU2VhcmNoO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0TmV3RW1wdHlMb2NhbFN0b3JhZ2VEYXRhKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0TmV3RW1wdHlMb2NhbFN0b3JhZ2VEYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldE5ld0VtcHR5TG9jYWxTdG9yYWdlRGF0YSgpIHtcclxuICAgIHRoaXMubG9jYWxTdG9yYWdlRGF0YSA9IHtcclxuICAgICAgcGFnZVNpemU6IHRoaXMucGFnZVNpemUoKSxcclxuICAgICAgcGFnZUluZGV4OiAwLFxyXG4gICAgICBzZWxlY3RlZENvbHVtbnM6IHRoaXMuaW5pdENvbHVtbnMoKS5tYXAoY29sID0+IGNvbC5maWVsZCksXHJcbiAgICAgIGdsb2JhbFNlYXJjaDogJycsXHJcbiAgICAgIGNvbHVtbnNPcmRlcjogdGhpcy5pbml0Q29sdW1ucygpLm1hcChjb2wgPT4gY29sLmZpZWxkKSxcclxuICAgICAgZmlsdGVyczoge30sXHJcbiAgICAgIHNvcnRGaWVsZDogJycsXHJcbiAgICAgIHNvcnRPcmRlcjogJ2FzYycsXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdE1hdGVyaWFsVGFibGVMb2FkRGF0YSB7XHJcbiAgZmlyc3Q6IG51bWJlcjtcclxuICByb3dzOiBudW1iZXI7XHJcbiAgZ2xvYmFsRmlsdGVyOiBzdHJpbmc7XHJcbiAgc29ydEZpZWxkOiBzdHJpbmc7XHJcbiAgc29ydE9yZGVyOiBTb3J0RGlyZWN0aW9uO1xyXG4gIGZpbHRlcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3RNYXRlcmlhbFRhYmxlTG9jYWxTdG9yYWdlIGV4dGVuZHMgSUNhcHRpb25EYXRhQ2hhbmdlZCB7XHJcbiAgcGFnZVNpemU6IG51bWJlcjtcclxuICBwYWdlSW5kZXg6IG51bWJlcjtcclxuICBzb3J0RmllbGQ6IHN0cmluZztcclxuICBzb3J0T3JkZXI6IFNvcnREaXJlY3Rpb247XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInN0LW1hdGVyaWFsLXRhYmxlXCI+XHJcbiAgQGlmIChpc0xvYWRpbmcoKSkge1xyXG4gICAgPGRpdiBjbGFzcz1cImxvYWRpbmctc3Bpbm5lclwiPlxyXG4gICAgICA8bWF0LXNwaW5uZXIgY29sb3I9XCJhY2NlbnRcIj48L21hdC1zcGlubmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG5cclxuICBAaWYgKHNob3dUYWJsZSkge1xyXG4gICAgPHN0LW1hdGVyaWFsLXRhYmxlLWNhcHRpb25cclxuICAgICAgW3RhYmxlVGl0bGVdPVwidGFibGVUaXRsZSgpXCJcclxuICAgICAgW2FsbG93UGlja0NvbHVtbnNdPVwiYWxsb3dQaWNrQ29sdW1ucygpXCJcclxuICAgICAgW3Nob3dHbG9iYWxTZWFyY2hdPVwic2hvd0dsb2JhbFNlYXJjaCgpXCJcclxuICAgICAgW2FsbG93UmVvcmRlckNvbHVtbnNdPVwiYWxsb3dSZW9yZGVyQ29sdW1ucygpXCJcclxuICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgICAgIFtpbml0RmlsdGVyc109XCJpbml0RmlsdGVyc1wiXHJcbiAgICAgIFtpbml0R2xvYmFsU2VhcmNoXT1cImluaXRHbG9iYWxTZWFyY2hcIlxyXG4gICAgICAoY2FwdGlvbkRhdGFDaGFuZ2VkKT1cImNhcHRpb25EYXRhQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgKHJlc2V0VGFibGVTZXR0aW5ncyk9XCJyZXNldFRhYmxlU2V0dGluZ3MoKVwiXHJcbiAgICA+PC9zdC1tYXRlcmlhbC10YWJsZS1jYXB0aW9uPlxyXG4gIH1cclxuXHJcbiAgPHRhYmxlXHJcbiAgICBbbmdDbGFzc109XCJ7ICduby1ob3Zlcic6ICFyb3dDbGlja0FjdGlvbigpIH1cIlxyXG4gICAgbWF0LXRhYmxlXHJcbiAgICBbZGF0YVNvdXJjZV09XCJ0YWJsZVNvdXJjZVwiXHJcbiAgICBtYXRTb3J0XHJcbiAgPlxyXG4gICAgQGZvciAoY29sdW1uIG9mIHNlbGVjdGVkQ29sdW1uczsgdHJhY2sgY29sdW1uKSB7XHJcbiAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4uZmllbGRcIj5cclxuICAgICAgICA8dGhcclxuICAgICAgICAgIG1hdC1oZWFkZXItY2VsbFxyXG4gICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcclxuICAgICAgICAgIHN0eWxlPVwie3sgY29sdW1uLndpZHRoID8gJ3dpZHRoOicgKyBjb2x1bW4ud2lkdGggOiAnJyB9fVwiXHJcbiAgICAgICAgICBtYXQtc29ydC1oZWFkZXJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhY29sdW1uLnNvcnRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIEBpZiAoY29sdW1uLnR5cGUgPT09ICdhY3Rpb25zLXJvdy1zZWxlY3RpbmcnKSB7XHJcbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gdG9nZ2xlQWxsUm93cygpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICB7eyBjb2x1bW4uaGVhZGVyIH19XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8dGRcclxuICAgICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCJcclxuICAgICAgICAgIHN0eWxlPVwie3sgY29sdW1uLndpZHRoID8gJ3dpZHRoOicgKyBjb2x1bW4ud2lkdGggOiAnJyB9fVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHN0LW1hdGVyaWFsLXRhYmxlLXJvdy1jZWxsXHJcbiAgICAgICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcclxuICAgICAgICAgICAgW3Jvd0RhdGFdPVwiZWxlbWVudFwiXHJcbiAgICAgICAgICAgIFtyb3dEYXRhQ29weV09XCJhY3RpdmVSb3dzRWRpdGluZ1tlbGVtZW50LmlkXVwiXHJcbiAgICAgICAgICAgIFtyb3dFZGl0aW5nXT1cIiEhYWN0aXZlUm93c0VkaXRpbmdbZWxlbWVudC5pZF1cIlxyXG4gICAgICAgICAgICBbcm93SXNTZWxlY3RlZF09XCJzZWxlY3Rpb24uaXNTZWxlY3RlZChlbGVtZW50KVwiXHJcbiAgICAgICAgICAgIChlZGl0Um93RW1pdHRlcik9XCJlZGl0Um93KGVsZW1lbnQsIGNvbHVtbilcIlxyXG4gICAgICAgICAgICAoc2F2ZUVkaXRSb3dFbWl0dGVyKT1cInNhdmVFZGl0Um93KGVsZW1lbnQsIGNvbHVtbilcIlxyXG4gICAgICAgICAgICAoY2FuY2VsRWRpdFJvd0VtaXR0ZXIpPVwiY2FuY2VsRWRpdFJvdyhlbGVtZW50LCBjb2x1bW4pXCJcclxuICAgICAgICAgICAgKHNlbGVjdFJvd0NoYW5nZSk9XCJzZWxlY3RSb3dDaGFuZ2VkKCRldmVudCwgZWxlbWVudClcIlxyXG4gICAgICAgICAgPjwvc3QtbWF0ZXJpYWwtdGFibGUtcm93LWNlbGw+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICB9XHJcblxyXG4gICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJzZWxlY3RlZENvbHVtbnNTdHJpbmdcIj48L3RyPlxyXG4gICAgPHRyXHJcbiAgICAgIG1hdC1yb3dcclxuICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IHNlbGVjdGVkQ29sdW1uc1N0cmluZ1wiXHJcbiAgICAgIChjbGljayk9XCJyb3dDbGlja0FjdGlvbigpID8gcm93Q2xpY2tBY3Rpb24oKSEocm93KSA6IG51bGxcIlxyXG4gICAgPjwvdHI+XHJcbiAgPC90YWJsZT5cclxuICA8bWF0LXBhZ2luYXRvclxyXG4gICAgW3Nob3dGaXJzdExhc3RCdXR0b25zXT1cInRydWVcIlxyXG4gICAgW3BhZ2VTaXplT3B0aW9uc109XCJbNSwgMTAsIDE1LCAyMCwgMjVdXCJcclxuICAgIFtsZW5ndGhdPVwiZGF0YUxlbmd0aCgpXCJcclxuICA+PC9tYXQtcGFnaW5hdG9yPlxyXG4gIEBpZiAocm93U2VsZWN0aW5nKCkpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJzdC1tYXRlcmlhbC10YWJsZS1zZWxlY3RlZC1yb3dzXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XHJcbiAgICAgICAge3sgc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCB9fVxyXG4gICAgICAgIHt7IHN0VGFibGVUcmFuc2xhdGlvbnMuZ2V0VHJhbnNsYXRpb25zKCkoKS5yb3dTZWxlY3RlZCB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgIEBmb3IgKHJvdyBvZiBzZWxlY3Rpb24uc2VsZWN0ZWQ7IHRyYWNrIHJvdykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJyZW1vdmVTZWxlY3RlZFJvdyhyb3cpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICB7eyByb3dbc2VsZWN0aW9uRmllbGRMYWJlbCgpXVxyXG4gICAgICAgICAgICAgIH19PG1hdC1pY29uIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAwOyBtYXJnaW4tbGVmdDogMTBweFwiXHJcbiAgICAgICAgICAgICAgICA+ZGVsZXRlPC9tYXQtaWNvblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { signal, Injectable, Optional, Inject, EventEmitter, Component, ViewChild, Input, Output, ChangeDetectionStrategy, input, output, ViewEncapsulation, NgModule } from '@angular/core';
|
|
2
|
+
import { signal, Injectable, Optional, Inject, EventEmitter, Component, ViewChild, Input, Output, ChangeDetectionStrategy, input, output, model, ViewEncapsulation, NgModule } from '@angular/core';
|
|
3
3
|
import * as i4 from '@angular/material/paginator';
|
|
4
4
|
import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
|
|
5
5
|
import * as i3 from '@angular/material/table';
|
|
@@ -515,7 +515,7 @@ class MaterialTableComponent extends StSubscribeDestroyComponent {
|
|
|
515
515
|
this.localStorageName = input('');
|
|
516
516
|
this.lazyLoading = input(false);
|
|
517
517
|
this.isLoading = input(false);
|
|
518
|
-
this.initColumns =
|
|
518
|
+
this.initColumns = model([]);
|
|
519
519
|
this.rowClickAction = input();
|
|
520
520
|
this.rowEditing = input(false);
|
|
521
521
|
this.rowSelecting = input(false);
|
|
@@ -545,6 +545,9 @@ class MaterialTableComponent extends StSubscribeDestroyComponent {
|
|
|
545
545
|
selectColumnLabel: this.stTableTranslations.getTranslations()().rowSelectColumnLabel,
|
|
546
546
|
});
|
|
547
547
|
}
|
|
548
|
+
else {
|
|
549
|
+
this.initColumns.update(oldVal => oldVal.filter(column => column.field !== 'action-row-selecting'));
|
|
550
|
+
}
|
|
548
551
|
if (this.rowEditing()) {
|
|
549
552
|
this.initColumns().push({
|
|
550
553
|
field: 'actions-row-editing',
|
|
@@ -556,6 +559,9 @@ class MaterialTableComponent extends StSubscribeDestroyComponent {
|
|
|
556
559
|
selectColumnLabel: this.stTableTranslations.getTranslations()().rowActionsColumnLabel,
|
|
557
560
|
});
|
|
558
561
|
}
|
|
562
|
+
else {
|
|
563
|
+
this.initColumns.update(oldVal => oldVal.filter(column => column.field !== 'action-row-editing'));
|
|
564
|
+
}
|
|
559
565
|
this.loadLocalStorageData();
|
|
560
566
|
this.setDisplayedColumns();
|
|
561
567
|
}
|
|
@@ -832,7 +838,7 @@ class MaterialTableComponent extends StSubscribeDestroyComponent {
|
|
|
832
838
|
};
|
|
833
839
|
}
|
|
834
840
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MaterialTableComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$2.StSnackBarService }, { token: StTablesTranslationsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
835
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MaterialTableComponent, selector: "ngx-st-material-table", inputs: { showGlobalSearch: { classPropertyName: "showGlobalSearch", publicName: "showGlobalSearch", isSignal: true, isRequired: false, transformFunction: null }, tableTitle: { classPropertyName: "tableTitle", publicName: "tableTitle", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, dataLength: { classPropertyName: "dataLength", publicName: "dataLength", isSignal: true, isRequired: false, transformFunction: null }, allowPickColumns: { classPropertyName: "allowPickColumns", publicName: "allowPickColumns", isSignal: true, isRequired: false, transformFunction: null }, allowReorderColumns: { classPropertyName: "allowReorderColumns", publicName: "allowReorderColumns", isSignal: true, isRequired: false, transformFunction: null }, localStorageName: { classPropertyName: "localStorageName", publicName: "localStorageName", isSignal: true, isRequired: false, transformFunction: null }, lazyLoading: { classPropertyName: "lazyLoading", publicName: "lazyLoading", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, initColumns: { classPropertyName: "initColumns", publicName: "initColumns", isSignal: true, isRequired: false, transformFunction: null }, rowClickAction: { classPropertyName: "rowClickAction", publicName: "rowClickAction", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: false, isRequired: false, transformFunction: null }, rowEditing: { classPropertyName: "rowEditing", publicName: "rowEditing", isSignal: true, isRequired: false, transformFunction: null }, rowSelecting: { classPropertyName: "rowSelecting", publicName: "rowSelecting", isSignal: true, isRequired: false, transformFunction: null }, selectionFieldLabel: { classPropertyName: "selectionFieldLabel", publicName: "selectionFieldLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { loadData: "loadData", saveNewRow: "saveNewRow", selectRowChange: "selectRowChange" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"st-material-table\">\r\n @if (isLoading()) {\r\n <div class=\"loading-spinner\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n }\r\n\r\n @if (showTable) {\r\n <st-material-table-caption\r\n [tableTitle]=\"tableTitle()\"\r\n [allowPickColumns]=\"allowPickColumns()\"\r\n [showGlobalSearch]=\"showGlobalSearch()\"\r\n [allowReorderColumns]=\"allowReorderColumns()\"\r\n [columns]=\"columns\"\r\n [initFilters]=\"initFilters\"\r\n [initGlobalSearch]=\"initGlobalSearch\"\r\n (captionDataChanged)=\"captionDataChanged($event)\"\r\n (resetTableSettings)=\"resetTableSettings()\"\r\n ></st-material-table-caption>\r\n }\r\n\r\n <table\r\n [ngClass]=\"{ 'no-hover': !rowClickAction() }\"\r\n mat-table\r\n [dataSource]=\"tableSource\"\r\n matSort\r\n >\r\n @for (column of selectedColumns; track column) {\r\n <ng-container [matColumnDef]=\"column.field\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"{{ column.width ? 'width:' + column.width : '' }}\"\r\n mat-sort-header\r\n [disabled]=\"!column.sort\"\r\n >\r\n @if (column.type === 'actions-row-selecting') {\r\n <mat-checkbox\r\n color=\"primary\"\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\r\n >\r\n </mat-checkbox>\r\n } @else {\r\n {{ column.header }}\r\n }\r\n </th>\r\n <td\r\n mat-cell\r\n *matCellDef=\"let element\"\r\n style=\"{{ column.width ? 'width:' + column.width : '' }}\"\r\n >\r\n <st-material-table-row-cell\r\n [column]=\"column\"\r\n [rowData]=\"element\"\r\n [rowDataCopy]=\"activeRowsEditing[element.id]\"\r\n [rowEditing]=\"!!activeRowsEditing[element.id]\"\r\n [rowIsSelected]=\"selection.isSelected(element)\"\r\n (editRowEmitter)=\"editRow(element, column)\"\r\n (saveEditRowEmitter)=\"saveEditRow(element, column)\"\r\n (cancelEditRowEmitter)=\"cancelEditRow(element, column)\"\r\n (selectRowChange)=\"selectRowChanged($event, element)\"\r\n ></st-material-table-row-cell>\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"selectedColumnsString\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: selectedColumnsString\"\r\n (click)=\"rowClickAction() ? rowClickAction()!(row) : null\"\r\n ></tr>\r\n </table>\r\n <mat-paginator\r\n [showFirstLastButtons]=\"true\"\r\n [pageSizeOptions]=\"[5, 10, 15, 20, 25]\"\r\n [length]=\"dataLength()\"\r\n ></mat-paginator>\r\n @if (rowSelecting()) {\r\n <div class=\"st-material-table-selected-rows\">\r\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">\r\n {{ selection.selected.length }}\r\n {{ stTableTranslations.getTranslations()().rowSelected }}\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n @for (row of selection.selected; track row) {\r\n <button mat-menu-item (click)=\"removeSelectedRow(row)\">\r\n <div class=\"d-flex\">\r\n {{ row[selectionFieldLabel()]\r\n }}<mat-icon style=\"margin-right: 0; margin-left: 10px\"\r\n >delete</mat-icon\r\n >\r\n </div>\r\n </button>\r\n }\r\n </mat-menu>\r\n </div>\r\n }\r\n</div>\r\n", styles: [".st-material-table{position:relative}.st-material-table .loading-spinner{position:absolute;top:0;left:0;width:100%;height:100%;background:#00000026;z-index:1;display:flex;justify-content:center}.st-material-table .loading-spinner mat-spinner{margin-top:5rem}.st-material-table .st-material-table-selected-rows{position:absolute;bottom:12px;left:5px}\n", ".st-material-table .search-form button{height:40px}.st-material-table .search-form mat-form-field:first-child{padding-left:0}.st-material-table .search-form mat-form-field:last-child{padding-right:0}.st-material-table .search-form .clear{padding:0}.st-material-table .search-form .clear mat-icon{height:20px;width:20px;font-size:20px;cursor:pointer}.st-material-table table{width:100%;box-shadow:none}.st-material-table table th.mat-mdc-header-cell,.st-material-table table td.mat-mdc-cell,.st-material-table table td.mat-mdc-footer-cell{padding:0}.st-material-table table th.mat-mdc-header-cell:first-of-type,.st-material-table table td.mat-mdc-cell:first-of-type,.st-material-table table td.mat-mdc-footer-cell:first-of-type{padding-left:12px}.st-material-table table th.mat-mdc-header-cell:last-of-type,.st-material-table table td.mat-mdc-cell:last-of-type,.st-material-table table td.mat-mdc-footer-cell:last-of-type{padding-right:12px}.st-material-table table thead tr{background-color:#fff9c4;height:40px!important}.st-material-table table thead tr th{border-color:#fdd835;font-size:.9rem;font-weight:600;color:#424242}.st-material-table table tbody{background-color:transparent!important}.st-material-table table tbody>tr{cursor:pointer}.st-material-table table tbody>tr.active{background-color:#a5d6a7}.st-material-table table tbody>tr.active td{border-bottom-color:#81c784!important}.st-material-table table tbody>tr:hover{background-color:#f5f5f5}.st-material-table table tbody>tr.disabled{cursor:not-allowed}.st-material-table table tbody>tr.disabled:hover{background-color:inherit!important}.st-material-table table tbody>tr.detail-row{height:0;cursor:default}.st-material-table table tbody>tr.detail-row:hover{background-color:transparent}.st-material-table table tbody>tr.detail-row .element-detail{overflow:hidden;display:flex}.st-material-table table tbody>tr.detail-row .element-detail p{padding:20px 0;margin-bottom:0;white-space:pre-wrap}.st-material-table table tbody>tr td i.active-row{color:#1b5e20;font-weight:700;font-size:25px;height:25px;width:25px;margin-top:2px}.st-material-table table tbody>tr td>div{max-height:200px;overflow:hidden;overflow-y:auto}.st-material-table table tbody>tr td a button{color:#000}.st-material-table table tbody>tr td a mat-icon{color:#333}.st-material-table table .mat-column-active{width:48px}.st-material-table table.no-hover tbody tr{cursor:default}.st-material-table table.no-hover tbody tr.active{background-color:transparent!important}.st-material-table table.no-hover tbody tr.active td{border-bottom-color:#0000001f!important}.st-material-table table.no-hover tbody tr:hover{background-color:transparent!important}.st-material-table table.no-hover tbody tr:hover td{border-bottom-color:#0000001f!important}.st-material-table table.admin-table .actions-cell{width:100px}.dark-theme .st-material-table table{background-color:transparent!important}.dark-theme .st-material-table table thead tr{background-color:#5e4803!important}.dark-theme .st-material-table table thead tr th{border-color:#816204!important;color:#e0e0e0!important}.dark-theme .st-material-table tbody tr:hover{background-color:var(--primeng-table-hover-background)!important}.dark-theme mat-paginator{background-color:transparent!important}.dark-theme .reorder-column-list .reorder-column-element{background-color:#424242!important;color:#eee!important}.dark-theme .reorder-column-list .reorder-column-element p,.dark-theme .reorder-column-list .reorder-column-element mat-icon{color:#eee!important}.dark-theme .filter .filter-title{color:#eee!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i5$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i4.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "directive", type: i8$1.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i8$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i9$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i9$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i9$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i10.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i11$3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: MaterialTableCaptionComponent, selector: "st-material-table-caption", inputs: ["showGlobalSearch", "tableTitle", "allowPickColumns", "allowReorderColumns", "initGlobalSearch", "initFilters", "columns"], outputs: ["captionDataChanged", "resetTableSettings"] }, { kind: "component", type: MaterialTableRowCellComponent, selector: "st-material-table-row-cell", inputs: ["column", "rowData", "rowDataCopy", "rowEditing", "rowIsSelected"], outputs: ["saveEditRowEmitter", "cancelEditRowEmitter", "editRowEmitter", "selectRowChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
841
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MaterialTableComponent, selector: "ngx-st-material-table", inputs: { showGlobalSearch: { classPropertyName: "showGlobalSearch", publicName: "showGlobalSearch", isSignal: true, isRequired: false, transformFunction: null }, tableTitle: { classPropertyName: "tableTitle", publicName: "tableTitle", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, dataLength: { classPropertyName: "dataLength", publicName: "dataLength", isSignal: true, isRequired: false, transformFunction: null }, allowPickColumns: { classPropertyName: "allowPickColumns", publicName: "allowPickColumns", isSignal: true, isRequired: false, transformFunction: null }, allowReorderColumns: { classPropertyName: "allowReorderColumns", publicName: "allowReorderColumns", isSignal: true, isRequired: false, transformFunction: null }, localStorageName: { classPropertyName: "localStorageName", publicName: "localStorageName", isSignal: true, isRequired: false, transformFunction: null }, lazyLoading: { classPropertyName: "lazyLoading", publicName: "lazyLoading", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, initColumns: { classPropertyName: "initColumns", publicName: "initColumns", isSignal: true, isRequired: false, transformFunction: null }, rowClickAction: { classPropertyName: "rowClickAction", publicName: "rowClickAction", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: false, isRequired: false, transformFunction: null }, rowEditing: { classPropertyName: "rowEditing", publicName: "rowEditing", isSignal: true, isRequired: false, transformFunction: null }, rowSelecting: { classPropertyName: "rowSelecting", publicName: "rowSelecting", isSignal: true, isRequired: false, transformFunction: null }, selectionFieldLabel: { classPropertyName: "selectionFieldLabel", publicName: "selectionFieldLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { initColumns: "initColumnsChange", loadData: "loadData", saveNewRow: "saveNewRow", selectRowChange: "selectRowChange" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"st-material-table\">\r\n @if (isLoading()) {\r\n <div class=\"loading-spinner\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n }\r\n\r\n @if (showTable) {\r\n <st-material-table-caption\r\n [tableTitle]=\"tableTitle()\"\r\n [allowPickColumns]=\"allowPickColumns()\"\r\n [showGlobalSearch]=\"showGlobalSearch()\"\r\n [allowReorderColumns]=\"allowReorderColumns()\"\r\n [columns]=\"columns\"\r\n [initFilters]=\"initFilters\"\r\n [initGlobalSearch]=\"initGlobalSearch\"\r\n (captionDataChanged)=\"captionDataChanged($event)\"\r\n (resetTableSettings)=\"resetTableSettings()\"\r\n ></st-material-table-caption>\r\n }\r\n\r\n <table\r\n [ngClass]=\"{ 'no-hover': !rowClickAction() }\"\r\n mat-table\r\n [dataSource]=\"tableSource\"\r\n matSort\r\n >\r\n @for (column of selectedColumns; track column) {\r\n <ng-container [matColumnDef]=\"column.field\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"{{ column.width ? 'width:' + column.width : '' }}\"\r\n mat-sort-header\r\n [disabled]=\"!column.sort\"\r\n >\r\n @if (column.type === 'actions-row-selecting') {\r\n <mat-checkbox\r\n color=\"primary\"\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\r\n >\r\n </mat-checkbox>\r\n } @else {\r\n {{ column.header }}\r\n }\r\n </th>\r\n <td\r\n mat-cell\r\n *matCellDef=\"let element\"\r\n style=\"{{ column.width ? 'width:' + column.width : '' }}\"\r\n >\r\n <st-material-table-row-cell\r\n [column]=\"column\"\r\n [rowData]=\"element\"\r\n [rowDataCopy]=\"activeRowsEditing[element.id]\"\r\n [rowEditing]=\"!!activeRowsEditing[element.id]\"\r\n [rowIsSelected]=\"selection.isSelected(element)\"\r\n (editRowEmitter)=\"editRow(element, column)\"\r\n (saveEditRowEmitter)=\"saveEditRow(element, column)\"\r\n (cancelEditRowEmitter)=\"cancelEditRow(element, column)\"\r\n (selectRowChange)=\"selectRowChanged($event, element)\"\r\n ></st-material-table-row-cell>\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"selectedColumnsString\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: selectedColumnsString\"\r\n (click)=\"rowClickAction() ? rowClickAction()!(row) : null\"\r\n ></tr>\r\n </table>\r\n <mat-paginator\r\n [showFirstLastButtons]=\"true\"\r\n [pageSizeOptions]=\"[5, 10, 15, 20, 25]\"\r\n [length]=\"dataLength()\"\r\n ></mat-paginator>\r\n @if (rowSelecting()) {\r\n <div class=\"st-material-table-selected-rows\">\r\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">\r\n {{ selection.selected.length }}\r\n {{ stTableTranslations.getTranslations()().rowSelected }}\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n @for (row of selection.selected; track row) {\r\n <button mat-menu-item (click)=\"removeSelectedRow(row)\">\r\n <div class=\"d-flex\">\r\n {{ row[selectionFieldLabel()]\r\n }}<mat-icon style=\"margin-right: 0; margin-left: 10px\"\r\n >delete</mat-icon\r\n >\r\n </div>\r\n </button>\r\n }\r\n </mat-menu>\r\n </div>\r\n }\r\n</div>\r\n", styles: [".st-material-table{position:relative}.st-material-table .loading-spinner{position:absolute;top:0;left:0;width:100%;height:100%;background:#00000026;z-index:1;display:flex;justify-content:center}.st-material-table .loading-spinner mat-spinner{margin-top:5rem}.st-material-table .st-material-table-selected-rows{position:absolute;bottom:12px;left:5px}\n", ".st-material-table .search-form button{height:40px}.st-material-table .search-form mat-form-field:first-child{padding-left:0}.st-material-table .search-form mat-form-field:last-child{padding-right:0}.st-material-table .search-form .clear{padding:0}.st-material-table .search-form .clear mat-icon{height:20px;width:20px;font-size:20px;cursor:pointer}.st-material-table table{width:100%;box-shadow:none}.st-material-table table th.mat-mdc-header-cell,.st-material-table table td.mat-mdc-cell,.st-material-table table td.mat-mdc-footer-cell{padding:0}.st-material-table table th.mat-mdc-header-cell:first-of-type,.st-material-table table td.mat-mdc-cell:first-of-type,.st-material-table table td.mat-mdc-footer-cell:first-of-type{padding-left:12px}.st-material-table table th.mat-mdc-header-cell:last-of-type,.st-material-table table td.mat-mdc-cell:last-of-type,.st-material-table table td.mat-mdc-footer-cell:last-of-type{padding-right:12px}.st-material-table table thead tr{background-color:#fff9c4;height:40px!important}.st-material-table table thead tr th{border-color:#fdd835;font-size:.9rem;font-weight:600;color:#424242}.st-material-table table tbody{background-color:transparent!important}.st-material-table table tbody>tr{cursor:pointer}.st-material-table table tbody>tr.active{background-color:#a5d6a7}.st-material-table table tbody>tr.active td{border-bottom-color:#81c784!important}.st-material-table table tbody>tr:hover{background-color:#f5f5f5}.st-material-table table tbody>tr.disabled{cursor:not-allowed}.st-material-table table tbody>tr.disabled:hover{background-color:inherit!important}.st-material-table table tbody>tr.detail-row{height:0;cursor:default}.st-material-table table tbody>tr.detail-row:hover{background-color:transparent}.st-material-table table tbody>tr.detail-row .element-detail{overflow:hidden;display:flex}.st-material-table table tbody>tr.detail-row .element-detail p{padding:20px 0;margin-bottom:0;white-space:pre-wrap}.st-material-table table tbody>tr td i.active-row{color:#1b5e20;font-weight:700;font-size:25px;height:25px;width:25px;margin-top:2px}.st-material-table table tbody>tr td>div{max-height:200px;overflow:hidden;overflow-y:auto}.st-material-table table tbody>tr td a button{color:#000}.st-material-table table tbody>tr td a mat-icon{color:#333}.st-material-table table .mat-column-active{width:48px}.st-material-table table.no-hover tbody tr{cursor:default}.st-material-table table.no-hover tbody tr.active{background-color:transparent!important}.st-material-table table.no-hover tbody tr.active td{border-bottom-color:#0000001f!important}.st-material-table table.no-hover tbody tr:hover{background-color:transparent!important}.st-material-table table.no-hover tbody tr:hover td{border-bottom-color:#0000001f!important}.st-material-table table.admin-table .actions-cell{width:100px}.dark-theme .st-material-table table{background-color:transparent!important}.dark-theme .st-material-table table thead tr{background-color:#5e4803!important}.dark-theme .st-material-table table thead tr th{border-color:#816204!important;color:#e0e0e0!important}.dark-theme .st-material-table tbody tr:hover{background-color:var(--primeng-table-hover-background)!important}.dark-theme mat-paginator{background-color:transparent!important}.dark-theme .reorder-column-list .reorder-column-element{background-color:#424242!important;color:#eee!important}.dark-theme .reorder-column-list .reorder-column-element p,.dark-theme .reorder-column-list .reorder-column-element mat-icon{color:#eee!important}.dark-theme .filter .filter-title{color:#eee!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i5$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i4.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "directive", type: i8$1.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i8$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i9$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i9$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i9$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i10.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i11$3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: MaterialTableCaptionComponent, selector: "st-material-table-caption", inputs: ["showGlobalSearch", "tableTitle", "allowPickColumns", "allowReorderColumns", "initGlobalSearch", "initFilters", "columns"], outputs: ["captionDataChanged", "resetTableSettings"] }, { kind: "component", type: MaterialTableRowCellComponent, selector: "st-material-table-row-cell", inputs: ["column", "rowData", "rowDataCopy", "rowEditing", "rowIsSelected"], outputs: ["saveEditRowEmitter", "cancelEditRowEmitter", "editRowEmitter", "selectRowChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
836
842
|
}
|
|
837
843
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MaterialTableComponent, decorators: [{
|
|
838
844
|
type: Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-st-tables.mjs","sources":["../../../projects/ngx-st-tables/src/lib/constants/default-translations.ts","../../../projects/ngx-st-tables/src/lib/services/st-tables-translations.service.ts","../../../projects/ngx-st-tables/src/lib/components/select-table/select-table.component.ts","../../../projects/ngx-st-tables/src/lib/components/select-table/select-table.component.html","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table-caption/material-table-filter-dialog/material-table-filter-dialog.component.ts","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table-caption/material-table-filter-dialog/material-table-filter-dialog.component.html","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table-caption/material-table-order-column-dialog/material-table-order-column-dialog.component.ts","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table-caption/material-table-order-column-dialog/material-table-order-column-dialog.component.html","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table-caption/material-table-caption.component.ts","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table-caption/material-table-caption.component.html","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table-row-cell/material-table-row-cell.component.ts","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table-row-cell/material-table-row-cell.component.html","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table.component.ts","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table.component.html","../../../projects/ngx-st-tables/src/lib/ngx-st-tables.module.ts","../../../projects/ngx-st-tables/src/public-api.ts","../../../projects/ngx-st-tables/src/ngx-st-tables.ts"],"sourcesContent":["import { StTablesTranslationsModel } from '../models/st-tables-translations.model';\r\n\r\nexport const DEFAULT_TRANSLATIONS: StTablesTranslationsModel = {\r\n globalSearch: 'Search',\r\n cancel: 'Cancel',\r\n close: 'Close',\r\n save: 'Save',\r\n reorderColumnsTitle: 'Reorder Columns',\r\n reorderColumns: 'Reorder Columns',\r\n expandAllFilters: 'Expand all filters',\r\n collapseAllFilters: 'Collapse all filters',\r\n clearFilters: 'Clear Filters',\r\n filterTitle: 'Filters',\r\n filter: 'Filter',\r\n searchFilter: 'Search',\r\n filterChooseDate: 'Choose a date',\r\n booleanPickValue: 'Pick Value',\r\n booleanNone: 'None',\r\n booleanYes: 'Yes',\r\n booleanNo: 'No',\r\n customPickValue: 'Pick Value',\r\n customNone: 'None',\r\n rowSelected: 'row selected',\r\n rowSelectColumnLabel: 'Row Select',\r\n rowActionsColumnLabel: 'Row Actions',\r\n};\r\n","import { Inject, Injectable, Optional, signal } from '@angular/core';\r\nimport { StTablesTranslationsModel } from '../models/st-tables-translations.model';\r\nimport { DEFAULT_TRANSLATIONS } from '../constants/default-translations';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class StTablesTranslationsService {\r\n private readonly translations =\r\n signal<StTablesTranslationsModel>(DEFAULT_TRANSLATIONS);\r\n\r\n constructor(\r\n @Optional()\r\n @Inject('ST_TABLES_CONFIG')\r\n private config: { translations?: Partial<StTablesTranslationsModel> }\r\n ) {\r\n if (this.config?.translations) {\r\n this.setTranslations(this.config.translations);\r\n }\r\n }\r\n\r\n setTranslations(translations: Partial<StTablesTranslationsModel>) {\r\n this.translations.set({\r\n ...DEFAULT_TRANSLATIONS,\r\n ...translations,\r\n });\r\n }\r\n\r\n getTranslations() {\r\n return this.translations;\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { UntypedFormControl } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'ngx-st-select-table',\r\n templateUrl: './select-table.component.html',\r\n styleUrls: [\r\n './select-table.component.scss',\r\n '../../../../assets/base-table.scss',\r\n ],\r\n})\r\nexport class SelectTableComponent implements OnInit {\r\n @ViewChild(MatPaginator) paginator: MatPaginator;\r\n\r\n @Input()\r\n title: string;\r\n\r\n @Input()\r\n required: boolean = false;\r\n\r\n @Input()\r\n multiple: boolean = false;\r\n\r\n @Input()\r\n initSelected: any;\r\n\r\n @Input()\r\n initSearchVal: any;\r\n\r\n @Input()\r\n searchLabel: string = 'Search';\r\n\r\n @Input()\r\n selectedLabel: string = 'Selected';\r\n\r\n @Input()\r\n set setInitColumns(col: { [col: string]: string }) {\r\n this.columns = ['active', ...Object.keys(col)];\r\n this.initColumns = col;\r\n }\r\n\r\n @Input()\r\n set tableData(data: any[]) {\r\n this.tableSource = new MatTableDataSource(data);\r\n this.tableSource.paginator = this.paginator;\r\n }\r\n\r\n @Input()\r\n set validError(error: boolean) {\r\n this._validError = error;\r\n }\r\n\r\n get validError(): boolean {\r\n return this._validError;\r\n }\r\n\r\n private _validError = false;\r\n\r\n @Output()\r\n returnRowSelected: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n tableSource: MatTableDataSource<any>;\r\n columns: string[];\r\n initColumns: {\r\n [col: string]: string;\r\n };\r\n search: UntypedFormControl = new UntypedFormControl('');\r\n rowSelected: any[] = [];\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n this.search.valueChanges.subscribe(res => {\r\n this.tableSource.filter = res.trim().toLowerCase();\r\n });\r\n setTimeout(() => {\r\n if (this.initSearchVal) {\r\n this.search.setValue(this.initSearchVal);\r\n this.rowClick(this.initSelected);\r\n }\r\n }, 1000);\r\n }\r\n\r\n clearSearch() {\r\n this.search.setValue('');\r\n }\r\n\r\n rowClick(row: any) {\r\n const found = this.rowSelected.find(tmpRow => tmpRow === row);\r\n if (found) {\r\n this.rowSelected = this.rowSelected.filter(tmpRow => tmpRow !== row);\r\n } else {\r\n if (this.multiple) {\r\n this.rowSelected.push(row);\r\n } else {\r\n this.rowSelected = [row];\r\n }\r\n }\r\n this.returnRowSelected.emit(this.rowSelected);\r\n }\r\n\r\n checkActiveRow(row: any) {\r\n return !!this.rowSelected.find(activeRow => activeRow === row);\r\n }\r\n}\r\n","<div class=\"shared-table-selector\">\r\n <p class=\"title\" [ngClass]=\"{ 'error-text': validError }\">\r\n {{ title }} {{ required ? '*' : '' }}\r\n </p>\r\n\r\n <div class=\"search-form row align-items-center\">\r\n <div class=\"col-sm-12 col-md row align-items-center\">\r\n <mat-form-field class=\"col\">\r\n <input\r\n matInput\r\n placeholder=\"{{ searchLabel }}\"\r\n [formControl]=\"search\"\r\n />\r\n </mat-form-field>\r\n <div class=\"clear col-auto\">\r\n <mat-icon (click)=\"clearSearch()\">clear</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <table mat-table [dataSource]=\"tableSource\">\r\n @for (col of columns; track col) {\r\n <ng-container [matColumnDef]=\"col\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n {{ col === 'active' ? selectedLabel : initColumns[col] }}\r\n </th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n @if (col === 'active') {\r\n @if (checkActiveRow(element)) {\r\n <mat-icon class=\"active-row\">done</mat-icon>\r\n }\r\n }\r\n @if (col !== 'active') {\r\n {{ element[col] }}\r\n }\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columns\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: columns\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{ active: checkActiveRow(row) }\"\r\n ></tr>\r\n </table>\r\n <mat-paginator [pageSizeOptions]=\"[5]\"></mat-paginator>\r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Inject,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { ViewStMaterialTableColumnModel } from '../../../../models/view/view-st-material-table-column.model';\r\nimport { FormGroup, NonNullableFormBuilder } from '@angular/forms';\r\nimport { StTablesTranslationsService } from '../../../../services/st-tables-translations.service';\r\n\r\n@Component({\r\n selector: 'st-material-table-filter-dialog',\r\n templateUrl: './material-table-filter-dialog.component.html',\r\n styleUrls: ['./material-table-filter-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MaterialTableFilterDialogComponent implements OnInit {\r\n filterColumns: ViewStMaterialTableColumnModel[] = [];\r\n\r\n formGroup: FormGroup = this.fb.group({});\r\n\r\n allVisible = true;\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA)\r\n public dialogData: {\r\n columns: ViewStMaterialTableColumnModel[];\r\n initFilters: { [key: string]: string };\r\n },\r\n public dialogRef: MatDialogRef<\r\n MaterialTableFilterDialogComponent,\r\n MaterialTableFilterDialogResult\r\n >,\r\n private fb: NonNullableFormBuilder,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n public stTableTranslations: StTablesTranslationsService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.filterColumns = this.dialogData.columns\r\n .filter(column => column.filter)\r\n .map(col => {\r\n this.formGroup.addControl(col.field, this.fb.control(''));\r\n\r\n return {\r\n ...col,\r\n };\r\n });\r\n\r\n if (this.dialogData.initFilters) {\r\n const filtersKeys = Object.keys(this.dialogData.initFilters);\r\n filtersKeys.forEach(key => {\r\n if (this.formGroup.get(key)) {\r\n this.formGroup.get(key)?.setValue(this.dialogData.initFilters[key]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n clearAllFilters() {\r\n this.filterColumns.forEach(column => {\r\n if (this.formGroup.get(column.field)) {\r\n this.formGroup.get(column.field)?.setValue('');\r\n }\r\n });\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n showAllFilters() {\r\n this.filterColumns.forEach(column => {\r\n column.expanded = true;\r\n });\r\n this.allVisible = true;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n hideAllFilters() {\r\n this.filterColumns.forEach(column => {\r\n column.expanded = false;\r\n });\r\n this.allVisible = false;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n saveFilters() {\r\n this.dialogRef.close({\r\n filters: this.formGroup.getRawValue(),\r\n });\r\n }\r\n}\r\n\r\nexport interface MaterialTableFilterDialogResult {\r\n filters: { [key: string]: string };\r\n}\r\n","<h3 mat-dialog-title class=\"filters-dialog-title\">\n {{ stTableTranslations.getTranslations()().filterTitle }}\n <div class=\"filters-show-hide\">\n @if (!allVisible) {\n <button\n mat-icon-button\n (click)=\"showAllFilters()\"\n [matTooltip]=\"stTableTranslations.getTranslations()().expandAllFilters\"\n >\n <mat-icon>unfold_more</mat-icon>\n </button>\n }\n @if (allVisible) {\n <button\n mat-icon-button\n (click)=\"hideAllFilters()\"\n [matTooltip]=\"stTableTranslations.getTranslations()().collapseAllFilters\"\n >\n <mat-icon>unfold_less</mat-icon>\n </button>\n }\n <button\n mat-icon-button\n (click)=\"clearAllFilters()\"\n [matTooltip]=\"stTableTranslations.getTranslations()().clearFilters\"\n >\n <mat-icon>filter_alt_off</mat-icon>\n </button>\n </div>\n</h3>\n\n<mat-dialog-content>\n <form [formGroup]=\"formGroup\">\n @for (column of filterColumns; track column.field) {\n @switch (column.filterType || column.type || 'string') {\n @case ('string') {\n <div class=\"filter\">\n <ng-container\n *ngTemplateOutlet=\"filterHeader; context: { $implicit: column }\"\n ></ng-container>\n <div\n class=\"filter-content row\"\n [ngClass]=\"{ hide: !column.expanded }\"\n >\n <div class=\"col-auto\">\n <mat-form-field appearance=\"outline\" style=\"width: 100px\">\n <mat-label>{{\n stTableTranslations.getTranslations()().filter\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [disabled]=\"true\"\n [value]=\"'Contains'\"\n />\n </mat-form-field>\n </div>\n\n <div class=\"col\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{\n stTableTranslations.getTranslations()().searchFilter\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [disabled]=\"column.visible\"\n [formControlName]=\"column.field\"\n />\n <button\n matSuffix\n mat-icon-button\n aria-label=\"Clear\"\n (click)=\"formGroup.controls[column.field].setValue('')\"\n >\n <mat-icon style=\"font-size: 22px\">close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n </div>\n </div>\n }\n @case ('number') {\n <div class=\"filter\">\n <ng-container\n *ngTemplateOutlet=\"filterHeader; context: { $implicit: column }\"\n ></ng-container>\n <div\n class=\"filter-content row\"\n [ngClass]=\"{ hide: !column.expanded }\"\n >\n <div class=\"col-auto\">\n <mat-form-field appearance=\"outline\" style=\"width: 100px\">\n <mat-label>{{\n stTableTranslations.getTranslations()().filter\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [disabled]=\"true\"\n [value]=\"'Equal'\"\n />\n </mat-form-field>\n </div>\n\n <div class=\"col\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{\n stTableTranslations.getTranslations()().filter\n }}</mat-label>\n <input\n matInput\n type=\"number\"\n [disabled]=\"column.visible\"\n [formControlName]=\"column.field\"\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n }\n @case ('date') {\n <div class=\"filter\">\n <ng-container\n *ngTemplateOutlet=\"filterHeader; context: { $implicit: column }\"\n ></ng-container>\n <div\n class=\"filter-content row\"\n [ngClass]=\"{ hide: !column.expanded }\"\n >\n <div class=\"col-auto\">\n <mat-form-field appearance=\"outline\" style=\"width: 100px\">\n <mat-label>{{\n stTableTranslations.getTranslations()().filter\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [disabled]=\"true\"\n [value]=\"'Date is'\"\n />\n </mat-form-field>\n </div>\n\n <div class=\"col\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{\n stTableTranslations.getTranslations()().filterChooseDate\n }}</mat-label>\n <input\n matInput\n [matDatepicker]=\"picker\"\n [disabled]=\"column.visible\"\n [formControlName]=\"column.field\"\n />\n <mat-datepicker-toggle\n matIconSuffix\n [for]=\"picker\"\n ></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n </div>\n </div>\n </div>\n }\n @case ('boolean') {\n <div class=\"filter\">\n <ng-container\n *ngTemplateOutlet=\"filterHeader; context: { $implicit: column }\"\n ></ng-container>\n <div\n class=\"filter-content row\"\n [ngClass]=\"{ hide: !column.expanded }\"\n >\n <div class=\"col-auto\">\n <mat-form-field appearance=\"outline\" style=\"width: 100px\">\n <mat-label>{{\n stTableTranslations.getTranslations()().filter\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [disabled]=\"true\"\n [value]=\"'Data is'\"\n />\n </mat-form-field>\n </div>\n\n <div class=\"col\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{\n stTableTranslations.getTranslations()().booleanPickValue\n }}</mat-label>\n <mat-select>\n <mat-option value=\"\">{{\n stTableTranslations.getTranslations()().booleanNone\n }}</mat-option>\n <mat-option [value]=\"true\">{{\n stTableTranslations.getTranslations()().booleanYes\n }}</mat-option>\n <mat-option [value]=\"false\">{{\n stTableTranslations.getTranslations()().booleanNo\n }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n </div>\n }\n @case ('custom') {\n @if (column.customFilterOptions) {}\n <div class=\"filter\">\n <ng-container\n *ngTemplateOutlet=\"filterHeader; context: { $implicit: column }\"\n ></ng-container>\n <div\n class=\"filter-content row\"\n [ngClass]=\"{ hide: !column.expanded }\"\n >\n <div class=\"col-auto\">\n <mat-form-field appearance=\"outline\" style=\"width: 100px\">\n <mat-label>{{\n stTableTranslations.getTranslations()().filter\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [disabled]=\"true\"\n [value]=\"'Equal'\"\n />\n </mat-form-field>\n </div>\n\n <div class=\"col\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{\n stTableTranslations.getTranslations()().customPickValue\n }}</mat-label>\n <mat-select>\n <mat-option value=\"\">{{\n stTableTranslations.getTranslations()().customNone\n }}</mat-option>\n @for (option of column.customFilterOptions; track option) {\n <mat-option [value]=\"option.value\">\n {{ option.label }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n </div>\n }\n }\n }\n </form>\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"row justify-content-between\" style=\"width: 100%\">\n <button mat-flat-button mat-dialog-close>\n {{ stTableTranslations.getTranslations()().cancel }}\n </button>\n <button mat-flat-button color=\"accent\" (click)=\"saveFilters()\">\n {{ stTableTranslations.getTranslations()().save }}\n </button>\n </div>\n </mat-dialog-actions>\n\n <ng-template #filterHeader let-column>\n <div class=\"filter-title row justify-content-between\">\n {{ column.header }}\n\n @if (column.expanded) {\n <mat-icon (click)=\"column.expanded = !column.expanded\"\n >keyboard_arrow_up</mat-icon\n >\n } @else {\n <mat-icon (click)=\"column.expanded = !column.expanded\"\n >keyboard_arrow_down</mat-icon\n >\n }\n </div>\n </ng-template>\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { ViewStMaterialTableColumnModel } from '../../../../models/view/view-st-material-table-column.model';\r\nimport { StTablesTranslationsService } from '../../../../services/st-tables-translations.service';\r\n\r\n@Component({\r\n selector: 'st-material-table-order-column-dialog',\r\n templateUrl: './material-table-order-column-dialog.component.html',\r\n styleUrls: ['./material-table-order-column-dialog.component.scss'],\r\n})\r\nexport class MaterialTableOrderColumnDialogComponent implements OnInit {\r\n columns: ViewStMaterialTableColumnModel[] = [];\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA)\r\n public dialogData: { columns: ViewStMaterialTableColumnModel[] },\r\n public dialogRef: MatDialogRef<\r\n MaterialTableOrderColumnDialogComponent,\r\n MaterialTableOrderColumnDialogResult\r\n >,\r\n public stTablesTranslations: StTablesTranslationsService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.columns = this.dialogData.columns.map(column => ({ ...column }));\r\n }\r\n\r\n drop(event: CdkDragDrop<string[]>) {\r\n moveItemInArray(this.columns, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n saveOrder() {\r\n this.dialogRef.close({\r\n columnsOrder: this.columns.map(column => column.field),\r\n });\r\n }\r\n}\r\n\r\nexport interface MaterialTableOrderColumnDialogResult {\r\n columnsOrder: string[];\r\n}\r\n","<h3 mat-dialog-title>\r\n {{ stTablesTranslations.getTranslations()().reorderColumns }}\r\n</h3>\r\n<mat-dialog-content>\r\n <div\r\n cdkDropList\r\n class=\"reorder-column-list\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n >\r\n @for (column of columns; track column.field) {\r\n <div class=\"reorder-column-element\" cdkDrag>\r\n <div class=\"row\">\r\n <mat-icon>drag_indicator</mat-icon>\r\n <p>{{ column.selectColumnLabel || column.header }}</p>\r\n </div>\r\n @if (!column.visible) {\r\n <mat-icon class=\"column-hidden\">visibility_off</mat-icon>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div class=\"row justify-content-between\" style=\"width: 100%\">\r\n <button mat-flat-button mat-dialog-close>\r\n {{ stTablesTranslations.getTranslations()().close }}\r\n </button>\r\n <button mat-flat-button color=\"accent\" (click)=\"saveOrder()\">\r\n {{ stTablesTranslations.getTranslations()().save }}\r\n </button>\r\n </div>\r\n</mat-dialog-actions>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnInit,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { ViewStMaterialTableColumnModel } from '../../../models/view/view-st-material-table-column.model';\r\nimport { FormControl } from '@angular/forms';\r\nimport {\r\n StBaseService,\r\n StSubscribeDestroyComponent,\r\n} from 'ngx-st-base-functions';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n take,\r\n takeUntil,\r\n} from 'rxjs/operators';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport {\r\n MaterialTableFilterDialogComponent,\r\n MaterialTableFilterDialogResult,\r\n} from './material-table-filter-dialog/material-table-filter-dialog.component';\r\nimport { MaterialTableOrderColumnDialogComponent } from './material-table-order-column-dialog/material-table-order-column-dialog.component';\r\nimport { StTablesTranslationsService } from '../../../services/st-tables-translations.service';\r\n\r\n@Component({\r\n selector: 'st-material-table-caption',\r\n templateUrl: './material-table-caption.component.html',\r\n styleUrls: ['./material-table-caption.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MaterialTableCaptionComponent\r\n extends StSubscribeDestroyComponent\r\n implements OnInit\r\n{\r\n showGlobalSearch = input<boolean>();\r\n\r\n tableTitle = input('');\r\n\r\n allowPickColumns = input<boolean>(true);\r\n\r\n allowReorderColumns = input<boolean>(true);\r\n\r\n initGlobalSearch = input('');\r\n\r\n initFilters = input<{\r\n [key: string]: string;\r\n }>({});\r\n\r\n @Input()\r\n set columns(data: ViewStMaterialTableColumnModel[]) {\r\n this._columns = data ? data : [];\r\n this.updateColumns();\r\n }\r\n\r\n get columns() {\r\n return this._columns;\r\n }\r\n\r\n private _columns: ViewStMaterialTableColumnModel[] = [];\r\n\r\n captionDataChanged = output<ICaptionDataChanged>();\r\n\r\n resetTableSettings = output<boolean>();\r\n\r\n showFilterButton = false;\r\n\r\n selectedColumns = new FormControl(<string[]>[]);\r\n globalSearch = new FormControl('');\r\n\r\n activeFiltersCount = 0;\r\n\r\n private columnsOrder: string[] = [];\r\n private filters: { [key: string]: string } = {};\r\n\r\n constructor(\r\n public stTableTranslations: StTablesTranslationsService,\r\n private dialog: MatDialog\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.globalSearch.setValue(this.initGlobalSearch() || '');\r\n this.filters = this.initFilters() || {};\r\n this.setActiveFiltersCount();\r\n\r\n this.selectedColumns.valueChanges\r\n .pipe(\r\n takeUntil(this.ngDestroyed$),\r\n distinctUntilChanged(\r\n (prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)\r\n ),\r\n debounceTime(400)\r\n )\r\n .subscribe(value => {\r\n this.emitCaptionDataChanged();\r\n });\r\n\r\n this.globalSearch.valueChanges\r\n .pipe(\r\n takeUntil(this.ngDestroyed$),\r\n distinctUntilChanged(\r\n (prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)\r\n ),\r\n debounceTime(400)\r\n )\r\n .subscribe(value => {\r\n this.emitCaptionDataChanged();\r\n });\r\n }\r\n\r\n openFilterDialog() {\r\n this.dialog\r\n .open(MaterialTableFilterDialogComponent, {\r\n data: {\r\n initFilters: this.filters,\r\n columns: this.columns,\r\n },\r\n maxWidth: '450px',\r\n width: '100%',\r\n autoFocus: false,\r\n })\r\n .afterClosed()\r\n .pipe(take(1), filter(StBaseService.notNull))\r\n .subscribe((res: MaterialTableFilterDialogResult) => {\r\n this.filters = res.filters;\r\n this.setActiveFiltersCount();\r\n this.emitCaptionDataChanged();\r\n });\r\n }\r\n\r\n openReorderColumnsDialog() {\r\n this.dialog\r\n .open(MaterialTableOrderColumnDialogComponent, {\r\n data: {\r\n columns: this.columns,\r\n },\r\n maxWidth: '450px',\r\n width: '100%',\r\n autoFocus: false,\r\n })\r\n .afterClosed()\r\n .pipe(take(1), filter(StBaseService.notNull))\r\n .subscribe((result: { columnsOrder: string[] }) => {\r\n this.columnsOrder = result.columnsOrder;\r\n this.emitCaptionDataChanged();\r\n });\r\n }\r\n\r\n resetTable() {\r\n this.resetTableSettings.emit(true);\r\n }\r\n\r\n clearAllFilters() {\r\n const filtersKeys = Object.keys(this.filters);\r\n filtersKeys.forEach(key => {\r\n if (this.filters[key]) {\r\n this.filters[key] = '';\r\n }\r\n });\r\n\r\n this.setActiveFiltersCount();\r\n this.emitCaptionDataChanged();\r\n }\r\n\r\n private emitCaptionDataChanged() {\r\n this.captionDataChanged.emit({\r\n selectedColumns: this.selectedColumns.value || [],\r\n globalSearch: this.globalSearch.value || '',\r\n columnsOrder: this.columnsOrder || [],\r\n filters: this.filters,\r\n });\r\n }\r\n\r\n private updateColumns() {\r\n const columnsFilters = this._columns.filter(column => column.filter);\r\n this.showFilterButton = columnsFilters.length > 0;\r\n this.selectedColumns.setValue(\r\n this._columns.filter(col => col.visible).map(col => col.field) || []\r\n );\r\n this.columnsOrder = this._columns.map(col => col.field) || [];\r\n }\r\n\r\n private setActiveFiltersCount() {\r\n const filtersKeys = Object.keys(this.filters);\r\n this.activeFiltersCount =\r\n filtersKeys.filter(key => this.filters[key]).length || 0;\r\n }\r\n}\r\n\r\nexport interface ICaptionDataChanged {\r\n selectedColumns: string[];\r\n globalSearch: string;\r\n columnsOrder: string[];\r\n filters: { [key: string]: string };\r\n}\r\n","@if (\r\n allowPickColumns() ||\r\n tableTitle() ||\r\n allowReorderColumns() ||\r\n showGlobalSearch() ||\r\n showFilterButton\r\n) {\r\n <div\r\n class=\"st-material-table-caption row align-items-center\"\r\n [ngClass]=\"{\r\n 'justify-content-between':\r\n (allowPickColumns() || tableTitle() || allowReorderColumns()) &&\r\n (showGlobalSearch() || showFilterButton),\r\n 'justify-content-end':\r\n !allowPickColumns() && !tableTitle() && !allowReorderColumns()\r\n }\"\r\n >\r\n @if (allowPickColumns() || tableTitle() || allowReorderColumns()) {\r\n <div class=\"col-auto d-flex align-items-center\">\r\n @if (tableTitle()) {\r\n <p class=\"table-title\">{{ tableTitle() }}</p>\r\n }\r\n\r\n @if (allowPickColumns()) {\r\n <mat-form-field appearance=\"outline\">\r\n <mat-select [formControl]=\"selectedColumns\" multiple>\r\n <mat-select-trigger>\r\n {{ selectedColumns.value ? selectedColumns.value!.length : 0 }}\r\n columns selected\r\n </mat-select-trigger>\r\n @for (column of columns; track column.field) {\r\n <mat-option [value]=\"column.field\">{{\r\n column.selectColumnLabel || column.header\r\n }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n\r\n @if (allowPickColumns() || tableTitle()) {\r\n <button mat-icon-button (click)=\"resetTable()\">\r\n <mat-icon class=\"reorder-icon\">refresh</mat-icon>\r\n </button>\r\n }\r\n\r\n @if (allowReorderColumns()) {\r\n <button mat-icon-button (click)=\"openReorderColumnsDialog()\">\r\n <mat-icon class=\"reorder-icon\">low_priority</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n @if (showGlobalSearch() || showFilterButton) {\r\n <div class=\"col-auto d-flex align-items-center\">\r\n @if (showFilterButton) {\r\n <!-- @if (activeFiltersCount) {-->\r\n <!-- <button-->\r\n <!-- mat-icon-button-->\r\n <!-- (click)=\"clearAllFilters()\"-->\r\n <!-- [matTooltip]=\"'Clear Filters'\"-->\r\n <!-- >-->\r\n <!-- <mat-icon>filter_alt_off</mat-icon>-->\r\n <!-- </button>-->\r\n <!-- }-->\r\n\r\n <button mat-icon-button (click)=\"openFilterDialog()\">\r\n <mat-icon\r\n [matBadge]=\"activeFiltersCount\"\r\n [matBadgeHidden]=\"!activeFiltersCount\"\r\n [matBadgeSize]=\"'small'\"\r\n matBadgePosition=\"before\"\r\n >filter_alt</mat-icon\r\n >\r\n </button>\r\n }\r\n\r\n @if (showGlobalSearch()) {\r\n <mat-form-field appearance=\"outline\">\r\n <input\r\n matInput\r\n [formControl]=\"globalSearch\"\r\n [placeholder]=\"\r\n stTableTranslations.getTranslations()().globalSearch\r\n \"\r\n />\r\n <button\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"globalSearch.setValue('')\"\r\n >\r\n <mat-icon style=\"font-size: 22px\">close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnInit,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { StMaterialTableColumnModel } from '../../../models/st-material-table-column.model';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\n\r\n@Component({\r\n selector: 'st-material-table-row-cell',\r\n templateUrl: './material-table-row-cell.component.html',\r\n styleUrls: ['./material-table-row-cell.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MaterialTableRowCellComponent implements OnInit {\r\n column = input.required<StMaterialTableColumnModel>();\r\n\r\n rowData = input.required<{\r\n [prop: string]: any;\r\n }>();\r\n\r\n rowDataCopy = input<{\r\n [prop: string]: any;\r\n }>();\r\n\r\n @Input()\r\n set rowEditing(data: boolean) {\r\n this._rowEditing = data;\r\n }\r\n\r\n get rowEditing(): boolean {\r\n return this._rowEditing;\r\n }\r\n\r\n private _rowEditing: boolean = false;\r\n\r\n rowIsSelected = input<boolean>(false);\r\n\r\n saveEditRowEmitter = output<void>();\r\n\r\n cancelEditRowEmitter = output<void>();\r\n\r\n editRowEmitter = output<void>();\r\n\r\n selectRowChange = output<boolean>();\r\n\r\n mobileView = false;\r\n\r\n actionIconColorDef: {\r\n [key: string]: 'primary' | 'warn';\r\n } = {\r\n edit: 'primary',\r\n delete: 'warn',\r\n };\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n ngOnInit() {\r\n window.addEventListener('resize', event => {\r\n this.checkWidthSize();\r\n });\r\n }\r\n\r\n saveRow() {\r\n this.saveEditRowEmitter.emit();\r\n }\r\n\r\n cancelRow() {\r\n this.cancelEditRowEmitter.emit();\r\n }\r\n\r\n editRow() {\r\n this.editRowEmitter.emit();\r\n }\r\n\r\n selectRow(event: { checked: boolean }) {\r\n if (event) {\r\n this.selectRowChange.emit(event.checked);\r\n }\r\n }\r\n\r\n private checkWidthSize() {\r\n this.mobileView = document.body.clientWidth <= 1100;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n}\r\n","@switch (column().type || 'string') {\r\n @case ('custom-template') {\r\n <ng-container\r\n [ngTemplateOutlet]=\"column().customTemplate!\"\r\n [ngTemplateOutletContext]=\"{ data: rowData() }\"\r\n ></ng-container>\r\n }\r\n\r\n @case ('actions') {\r\n @if (column().actions) {\r\n @if (\r\n (!column().actionsInMenu && !mobileView) ||\r\n (mobileView && column().actions!.length <= 1)\r\n ) {\r\n <div [ngStyle]=\"{ float: column().flexRight ? 'right' : 'none' }\">\r\n @for (action of column().actions; track action) {\r\n @if ((action.show && action.show(rowData())) || !action.show) {\r\n @if (!action.url && action.action) {\r\n <button\r\n class=\"action-icon-button\"\r\n type=\"button\"\r\n mat-icon-button\r\n [color]=\"\r\n actionIconColorDef[action.iconName]\r\n ? actionIconColorDef[action.iconName]\r\n : action.iconColor\r\n \"\r\n [matTooltip]=\"action.tooltipName || ''\"\r\n [matTooltipDisabled]=\"!action.tooltipName\"\r\n (click)=\"$event.stopPropagation(); action.action!(rowData())\"\r\n >\r\n <mat-icon>{{ action.iconName }}</mat-icon>\r\n </button>\r\n }\r\n @if (action.url) {\r\n <a [routerLink]=\"action.url\">\r\n <button\r\n class=\"action-icon-button\"\r\n type=\"button\"\r\n mat-icon-button\r\n [color]=\"\r\n actionIconColorDef[action.iconName]\r\n ? actionIconColorDef[action.iconName]\r\n : action.iconColor\r\n \"\r\n [matTooltip]=\"action.tooltipName || ''\"\r\n [matTooltipDisabled]=\"!action.tooltipName\"\r\n >\r\n <mat-icon>{{ action.iconName }}</mat-icon>\r\n </button>\r\n </a>\r\n }\r\n }\r\n }\r\n </div>\r\n }\r\n @if (\r\n column().actionsInMenu || (mobileView && column().actions!.length > 1)\r\n ) {\r\n <button\r\n mat-icon-button\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n @for (action of column().actions; track action) {\r\n @if ((action.show && action.show(rowData())) || !action.show) {\r\n @if (!action.url && action.action) {\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n (click)=\"$event.stopPropagation(); action.action!(rowData())\"\r\n >\r\n {{ action.tooltipName }}\r\n </button>\r\n }\r\n @if (action.url) {\r\n <a [routerLink]=\"action.url\">\r\n <button type=\"button\" mat-menu-item>\r\n {{ action.tooltipName }}\r\n </button>\r\n </a>\r\n }\r\n }\r\n }\r\n </mat-menu>\r\n }\r\n }\r\n }\r\n\r\n @case ('string') {\r\n <ng-container\r\n *ngTemplateOutlet=\"baseFieldCell; context: { $implicit: column() }\"\r\n ></ng-container>\r\n }\r\n\r\n @case ('number') {\r\n <ng-container\r\n *ngTemplateOutlet=\"baseFieldCell; context: { $implicit: column() }\"\r\n ></ng-container>\r\n }\r\n\r\n @case ('boolean') {\r\n <ng-container\r\n *ngTemplateOutlet=\"baseFieldCell; context: { $implicit: column() }\"\r\n ></ng-container>\r\n }\r\n\r\n @case ('date') {\r\n {{ rowData()[column().field] | stDateTimeFormatPipe }}\r\n }\r\n\r\n @case ('actions-row-editing') {\r\n <div class=\"row justify-content-end\">\r\n @if (rowEditing) {\r\n <button\r\n mat-icon-button\r\n color=\"accent\"\r\n (click)=\"saveRow()\"\r\n [matTooltip]=\"'Save row'\"\r\n >\r\n <mat-icon>done</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n color=\"warn\"\r\n (click)=\"cancelRow()\"\r\n [matTooltip]=\"'Cancel row'\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n } @else {\r\n <button\r\n mat-icon-button\r\n color=\"primary\"\r\n (click)=\"editRow()\"\r\n [matTooltip]=\"'Edit row'\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n @case ('actions-row-selecting') {\r\n <mat-checkbox\r\n color=\"primary\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"selectRow($event)\"\r\n [checked]=\"rowIsSelected()\"\r\n >\r\n </mat-checkbox>\r\n }\r\n}\r\n\r\n<ng-template #baseFieldCell let-column>\r\n @if (rowEditing && column.allowEditColumn) {\r\n <mat-form-field appearance=\"outline\">\r\n @if (column.type === 'string') {\r\n <input matInput [(ngModel)]=\"rowDataCopy()![column.field]\" />\r\n }\r\n @if (column.type === 'number') {\r\n <input\r\n matInput\r\n type=\"number\"\r\n [(ngModel)]=\"rowDataCopy()![column.field]\"\r\n />\r\n }\r\n @if (column.type === 'boolean') {\r\n <mat-checkbox [(ngModel)]=\"rowDataCopy()![column.field]\"></mat-checkbox>\r\n }\r\n </mat-form-field>\r\n } @else {\r\n <div>\r\n @if (column.translateValue) {\r\n {{ column.translateValue![rowData()[column.field]] || '' }}\r\n }\r\n @if (column.customValueDisplay) {\r\n {{ column.customValueDisplay(rowData()[column.field]) }}\r\n }\r\n @if (!column.translateValue && !column.customValueDisplay) {\r\n {{ rowData()[column.field] }}\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnInit,\r\n ViewChild,\r\n ViewEncapsulation,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort, SortDirection } from '@angular/material/sort';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { StMaterialTableColumnModel } from '../../models/st-material-table-column.model';\r\nimport { ViewStMaterialTableColumnModel } from '../../models/view/view-st-material-table-column.model';\r\nimport { ICaptionDataChanged } from './material-table-caption/material-table-caption.component';\r\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\r\nimport {\r\n StBaseService,\r\n StSubscribeDestroyComponent,\r\n} from 'ngx-st-base-functions';\r\nimport { StSnackBarService } from 'ngx-st-snack-bar';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { StTablesTranslationsService } from '../../services/st-tables-translations.service';\r\n\r\n@Component({\r\n selector: 'ngx-st-material-table',\r\n templateUrl: './material-table.component.html',\r\n styleUrls: [\r\n './material-table.component.scss',\r\n '../../../../assets/base-table.scss',\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class MaterialTableComponent\r\n extends StSubscribeDestroyComponent\r\n implements OnInit, AfterViewInit\r\n{\r\n @ViewChild(MatPaginator) paginator: MatPaginator;\r\n @ViewChild(MatSort) sort: MatSort;\r\n\r\n showGlobalSearch = input(false);\r\n\r\n tableTitle = input('');\r\n\r\n pageSize = input<number>(10);\r\n\r\n dataLength = input<number>(0);\r\n\r\n allowPickColumns = input<boolean>(true);\r\n\r\n allowReorderColumns = input<boolean>(true);\r\n\r\n localStorageName = input<string>('');\r\n\r\n lazyLoading = input<boolean>(false);\r\n\r\n isLoading = input<boolean>(false);\r\n\r\n initColumns = input<StMaterialTableColumnModel[]>([]);\r\n\r\n rowClickAction = input<(row: any) => void>();\r\n\r\n @Input()\r\n set data(data: any[]) {\r\n if (this.rowEditing() || this.rowSelecting()) {\r\n if (data.length > 0 && !data[0].id) {\r\n data = data.map(row => {\r\n return {\r\n ...row,\r\n id: StBaseService.generateGUID(),\r\n };\r\n });\r\n }\r\n }\r\n this._data = data || [];\r\n\r\n if (this.tableSource) {\r\n this.tableSource.data = data;\r\n if (!this.lazyLoading() && this.localStorageData) {\r\n this.paginator.pageIndex = this.localStorageData.pageIndex;\r\n //@ts-ignore\r\n this.paginator._emitPageEvent(this.localStorageData.pageIndex);\r\n }\r\n }\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n get data(): any[] {\r\n return this._data;\r\n }\r\n\r\n rowEditing = input<boolean>(false);\r\n\r\n rowSelecting = input(false);\r\n\r\n selectionFieldLabel = input('');\r\n\r\n loadData = output<StMaterialTableLoadData>();\r\n\r\n saveNewRow = output<any>();\r\n\r\n selectRowChange = output<any[]>();\r\n\r\n private _data: any[] = [];\r\n\r\n columns: ViewStMaterialTableColumnModel[] = [];\r\n selectedColumns: ViewStMaterialTableColumnModel[] = [];\r\n selectedColumnsString: string[] = [];\r\n\r\n tableSource: MatTableDataSource<any>;\r\n\r\n initFilters: { [key: string]: string } = {};\r\n initGlobalSearch: string = '';\r\n\r\n showTable = true;\r\n\r\n activeRowsEditing: { [rowId: string]: { [prop: string]: any } } = {};\r\n selection = new SelectionModel<any>(true, []);\r\n\r\n private localStorageData: StMaterialTableLocalStorage;\r\n\r\n constructor(\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private snackbar: StSnackBarService,\r\n public stTableTranslations: StTablesTranslationsService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.rowSelecting()) {\r\n this.initColumns().unshift({\r\n field: 'actions-row-selecting',\r\n header: '',\r\n type: 'actions-row-selecting',\r\n sort: false,\r\n filter: false,\r\n width: '60px',\r\n selectColumnLabel:\r\n this.stTableTranslations.getTranslations()().rowSelectColumnLabel,\r\n });\r\n }\r\n\r\n if (this.rowEditing()) {\r\n this.initColumns().push({\r\n field: 'actions-row-editing',\r\n header: '',\r\n type: 'actions-row-editing',\r\n sort: false,\r\n filter: false,\r\n width: '110px',\r\n selectColumnLabel:\r\n this.stTableTranslations.getTranslations()().rowActionsColumnLabel,\r\n });\r\n }\r\n\r\n this.loadLocalStorageData();\r\n this.setDisplayedColumns();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setInitTable();\r\n this.setSortPageSubscription();\r\n }\r\n\r\n captionDataChanged(event: ICaptionDataChanged) {\r\n let loadLazyData = false;\r\n if (\r\n event.globalSearch !== this.localStorageData.globalSearch ||\r\n event.filters !== this.localStorageData.filters\r\n ) {\r\n loadLazyData = true;\r\n }\r\n\r\n this.localStorageData = {\r\n ...event,\r\n pageSize: this.paginator.pageSize,\r\n pageIndex: this.paginator.pageIndex,\r\n sortField: this.sort.active,\r\n sortOrder: this.sort.direction,\r\n };\r\n\r\n this.setColumnsOrder();\r\n this.setColumnsVisible();\r\n this.setSelectedColumns();\r\n this.updateDataToLocalStorage();\r\n\r\n if (loadLazyData) {\r\n this.emitLazyLoading();\r\n }\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n resetTableSettings() {\r\n this.showTable = false;\r\n this.changeDetectorRef.markForCheck();\r\n\r\n this.setNewEmptyLocalStorageData();\r\n this.updateDataToLocalStorage();\r\n this.emitLazyLoading();\r\n this.initFilters = {};\r\n this.initGlobalSearch = '';\r\n this.sort.sort({ id: '', start: 'asc', disableClear: false });\r\n\r\n setTimeout(() => {\r\n this.showTable = true;\r\n this.setDisplayedColumns();\r\n this.setInitTable();\r\n this.changeDetectorRef.markForCheck();\r\n }, 100);\r\n }\r\n\r\n editRow(row: any, column: ViewStMaterialTableColumnModel) {\r\n this.activeRowsEditing[row.id] = { ...row };\r\n }\r\n\r\n saveEditRow(row: any, column: ViewStMaterialTableColumnModel) {\r\n let allowSave = true;\r\n\r\n this.columns\r\n .filter(col => col.allowEditColumn)\r\n .forEach(col => {\r\n if (col.customEditRowValidator) {\r\n const result = col.customEditRowValidator(\r\n this.activeRowsEditing[row.id][col.field],\r\n row[col.field],\r\n row\r\n );\r\n if (!result.isValid) {\r\n allowSave = false;\r\n this.snackbar.error(result.errorMessage);\r\n }\r\n }\r\n });\r\n if (allowSave) {\r\n this.saveNewRow.emit(this.activeRowsEditing[row.id]);\r\n this.columns\r\n .filter(col => col.allowEditColumn)\r\n .forEach(col => {\r\n row[col.field] = this.activeRowsEditing[row.id][col.field];\r\n });\r\n this.changeDetectorRef.markForCheck();\r\n\r\n delete this.activeRowsEditing[row.id];\r\n }\r\n }\r\n\r\n cancelEditRow(row: any, column: ViewStMaterialTableColumnModel) {\r\n delete this.activeRowsEditing[row.id];\r\n }\r\n\r\n isAllSelected() {\r\n const numSelected = this.selection.selected.length;\r\n const numRows = this.tableSource.data.length;\r\n return numSelected === numRows;\r\n }\r\n\r\n toggleAllRows() {\r\n if (this.isAllSelected()) {\r\n this.selection.clear();\r\n return;\r\n }\r\n\r\n this.selection.select(...this.tableSource.data);\r\n\r\n this.selectRowChange.emit(this.selection.selected);\r\n }\r\n\r\n removeSelectedRow(row: any) {\r\n this.selection.deselect(row);\r\n this.selectRowChange.emit(this.selection.selected);\r\n }\r\n\r\n selectRowChanged(value: boolean, row: any) {\r\n if (value) {\r\n this.selection.select(row);\r\n } else {\r\n this.selection.deselect(row);\r\n }\r\n\r\n this.changeDetectorRef.markForCheck();\r\n this.selectRowChange.emit(this.selection.selected);\r\n }\r\n\r\n private createCustomFilterForLocalTable() {\r\n let filterFunction = (data: any, filter: string): boolean => {\r\n const searchTerms: { [column: string]: string; stGlobalSearch: string } =\r\n JSON.parse(filter);\r\n const searchTermsKeys = Object.keys(searchTerms);\r\n let searchOk = true;\r\n let searchOkGlobal = true;\r\n\r\n searchTermsKeys.forEach((key: string) => {\r\n if (\r\n key !== 'stGlobalSearch' &&\r\n this.selectedColumnsString.includes(key)\r\n ) {\r\n searchOk =\r\n searchOk &&\r\n data[key]\r\n .toString()\r\n .toLowerCase()\r\n .indexOf(searchTerms[key].toString().toLowerCase()) !== -1;\r\n }\r\n });\r\n if (searchTerms.stGlobalSearch) {\r\n searchOkGlobal = false;\r\n this.selectedColumnsString.forEach(col => {\r\n if (data[col]) {\r\n searchOkGlobal =\r\n searchOkGlobal ||\r\n data[col]\r\n .toString()\r\n .toLowerCase()\r\n .indexOf(\r\n searchTerms.stGlobalSearch.toString().toLowerCase()\r\n ) !== -1;\r\n }\r\n });\r\n }\r\n\r\n return searchOk && searchOkGlobal;\r\n };\r\n return filterFunction;\r\n }\r\n\r\n private emitLazyLoading() {\r\n if (this.lazyLoading()) {\r\n this.loadData.emit({\r\n first: this.paginator.pageIndex * this.paginator.pageSize,\r\n rows: this.paginator.pageSize,\r\n globalFilter: this.localStorageData.globalSearch,\r\n sortField: this.localStorageData.sortField,\r\n sortOrder: this.localStorageData.sortOrder,\r\n filters: this.localStorageData.filters,\r\n });\r\n } else {\r\n this.tableSource.filter = JSON.stringify({\r\n ...this.localStorageData.filters,\r\n stGlobalSearch: this.localStorageData.globalSearch,\r\n });\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n private updateDataToLocalStorage() {\r\n if (this.localStorageName()) {\r\n localStorage.setItem(\r\n this.localStorageName()!,\r\n JSON.stringify(this.localStorageData)\r\n );\r\n }\r\n }\r\n\r\n private setInitTable() {\r\n this.tableSource = new MatTableDataSource(this._data);\r\n\r\n this.paginator.pageSize = this.localStorageData.pageSize;\r\n this.paginator.pageIndex = this.localStorageData.pageIndex;\r\n\r\n if (this.localStorageData.sortField && this.localStorageData.sortOrder) {\r\n const disableClear = false;\r\n this.sort.sort({ id: '', start: 'asc', disableClear });\r\n this.sort.sort({\r\n id: this.localStorageData.sortField,\r\n start: this.localStorageData.sortOrder,\r\n disableClear,\r\n });\r\n }\r\n\r\n if (!this.lazyLoading()!) {\r\n this.tableSource.paginator = this.paginator;\r\n this.tableSource.sort = this.sort;\r\n this.tableSource.filterPredicate = this.createCustomFilterForLocalTable();\r\n }\r\n\r\n this.emitLazyLoading();\r\n }\r\n\r\n private setSortPageSubscription() {\r\n this.sort.sortChange\r\n .pipe(\r\n takeUntil(this.ngDestroyed$),\r\n distinctUntilChanged(\r\n (prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)\r\n )\r\n )\r\n .subscribe(res => {\r\n this.localStorageData = {\r\n ...this.localStorageData,\r\n sortField: res.active,\r\n sortOrder: res.direction,\r\n };\r\n this.updateDataToLocalStorage();\r\n this.emitLazyLoading();\r\n });\r\n\r\n this.paginator.page\r\n .pipe(\r\n takeUntil(this.ngDestroyed$),\r\n distinctUntilChanged(\r\n (prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)\r\n )\r\n )\r\n .subscribe(res => {\r\n this.localStorageData = {\r\n ...this.localStorageData,\r\n pageIndex: this.paginator.pageIndex,\r\n pageSize: this.paginator.pageSize,\r\n };\r\n\r\n this.updateDataToLocalStorage();\r\n this.emitLazyLoading();\r\n });\r\n }\r\n\r\n private setDisplayedColumns() {\r\n this.columns = this.initColumns().map(col => {\r\n return {\r\n ...col,\r\n type: col.type ? col.type : 'string',\r\n visible: true,\r\n expanded: true,\r\n isEditing: false,\r\n };\r\n });\r\n\r\n this.setColumnsOrder();\r\n this.setColumnsVisible();\r\n this.setSelectedColumns();\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n private setColumnsOrder() {\r\n if (this.localStorageData?.columnsOrder) {\r\n this.columns = [\r\n ...this.localStorageData.columnsOrder\r\n .filter(column => this.columns.find(col => col.field === column))\r\n .map(column => this.columns.find(col => col.field === column)!),\r\n ...this.columns.filter(\r\n column => !this.localStorageData.columnsOrder.includes(column.field)\r\n ),\r\n ];\r\n }\r\n }\r\n\r\n private setColumnsVisible() {\r\n if (this.localStorageData?.selectedColumns) {\r\n this.columns = this.columns.map(col => {\r\n return {\r\n ...col,\r\n visible:\r\n this.localStorageData.selectedColumns.includes(col.field) ||\r\n !this.localStorageData.columnsOrder.includes(col.field),\r\n };\r\n });\r\n }\r\n }\r\n\r\n private setSelectedColumns() {\r\n this.selectedColumns = this.columns.filter(col => {\r\n return col.visible;\r\n });\r\n this.selectedColumnsString = this.selectedColumns.map(col => col.field);\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n private loadLocalStorageData() {\r\n if (this.localStorageName()) {\r\n const localStorageData = localStorage.getItem(this.localStorageName()!);\r\n\r\n if (localStorageData) {\r\n this.localStorageData = JSON.parse(localStorageData);\r\n this.initFilters = this.localStorageData.filters || {};\r\n this.initGlobalSearch = this.localStorageData.globalSearch;\r\n } else {\r\n this.setNewEmptyLocalStorageData();\r\n }\r\n } else {\r\n this.setNewEmptyLocalStorageData();\r\n }\r\n }\r\n\r\n private setNewEmptyLocalStorageData() {\r\n this.localStorageData = {\r\n pageSize: this.pageSize(),\r\n pageIndex: 0,\r\n selectedColumns: this.initColumns().map(col => col.field),\r\n globalSearch: '',\r\n columnsOrder: this.initColumns().map(col => col.field),\r\n filters: {},\r\n sortField: '',\r\n sortOrder: 'asc',\r\n };\r\n }\r\n}\r\n\r\nexport interface StMaterialTableLoadData {\r\n first: number;\r\n rows: number;\r\n globalFilter: string;\r\n sortField: string;\r\n sortOrder: SortDirection;\r\n filters: { [key: string]: string };\r\n}\r\n\r\nexport interface StMaterialTableLocalStorage extends ICaptionDataChanged {\r\n pageSize: number;\r\n pageIndex: number;\r\n sortField: string;\r\n sortOrder: SortDirection;\r\n}\r\n","<div class=\"st-material-table\">\r\n @if (isLoading()) {\r\n <div class=\"loading-spinner\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n }\r\n\r\n @if (showTable) {\r\n <st-material-table-caption\r\n [tableTitle]=\"tableTitle()\"\r\n [allowPickColumns]=\"allowPickColumns()\"\r\n [showGlobalSearch]=\"showGlobalSearch()\"\r\n [allowReorderColumns]=\"allowReorderColumns()\"\r\n [columns]=\"columns\"\r\n [initFilters]=\"initFilters\"\r\n [initGlobalSearch]=\"initGlobalSearch\"\r\n (captionDataChanged)=\"captionDataChanged($event)\"\r\n (resetTableSettings)=\"resetTableSettings()\"\r\n ></st-material-table-caption>\r\n }\r\n\r\n <table\r\n [ngClass]=\"{ 'no-hover': !rowClickAction() }\"\r\n mat-table\r\n [dataSource]=\"tableSource\"\r\n matSort\r\n >\r\n @for (column of selectedColumns; track column) {\r\n <ng-container [matColumnDef]=\"column.field\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"{{ column.width ? 'width:' + column.width : '' }}\"\r\n mat-sort-header\r\n [disabled]=\"!column.sort\"\r\n >\r\n @if (column.type === 'actions-row-selecting') {\r\n <mat-checkbox\r\n color=\"primary\"\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\r\n >\r\n </mat-checkbox>\r\n } @else {\r\n {{ column.header }}\r\n }\r\n </th>\r\n <td\r\n mat-cell\r\n *matCellDef=\"let element\"\r\n style=\"{{ column.width ? 'width:' + column.width : '' }}\"\r\n >\r\n <st-material-table-row-cell\r\n [column]=\"column\"\r\n [rowData]=\"element\"\r\n [rowDataCopy]=\"activeRowsEditing[element.id]\"\r\n [rowEditing]=\"!!activeRowsEditing[element.id]\"\r\n [rowIsSelected]=\"selection.isSelected(element)\"\r\n (editRowEmitter)=\"editRow(element, column)\"\r\n (saveEditRowEmitter)=\"saveEditRow(element, column)\"\r\n (cancelEditRowEmitter)=\"cancelEditRow(element, column)\"\r\n (selectRowChange)=\"selectRowChanged($event, element)\"\r\n ></st-material-table-row-cell>\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"selectedColumnsString\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: selectedColumnsString\"\r\n (click)=\"rowClickAction() ? rowClickAction()!(row) : null\"\r\n ></tr>\r\n </table>\r\n <mat-paginator\r\n [showFirstLastButtons]=\"true\"\r\n [pageSizeOptions]=\"[5, 10, 15, 20, 25]\"\r\n [length]=\"dataLength()\"\r\n ></mat-paginator>\r\n @if (rowSelecting()) {\r\n <div class=\"st-material-table-selected-rows\">\r\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">\r\n {{ selection.selected.length }}\r\n {{ stTableTranslations.getTranslations()().rowSelected }}\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n @for (row of selection.selected; track row) {\r\n <button mat-menu-item (click)=\"removeSelectedRow(row)\">\r\n <div class=\"d-flex\">\r\n {{ row[selectionFieldLabel()]\r\n }}<mat-icon style=\"margin-right: 0; margin-left: 10px\"\r\n >delete</mat-icon\r\n >\r\n </div>\r\n </button>\r\n }\r\n </mat-menu>\r\n </div>\r\n }\r\n</div>\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { StDateFormatModule } from 'ngx-st-date-format';\r\nimport { MaterialTableComponent } from './components/material-table/material-table.component';\r\nimport { MaterialTableCaptionComponent } from './components/material-table/material-table-caption/material-table-caption.component';\r\nimport { MatBadge } from '@angular/material/badge';\r\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\r\nimport { StBaseFunctionsModule } from 'ngx-st-base-functions';\r\nimport { MaterialTableOrderColumnDialogComponent } from './components/material-table/material-table-caption/material-table-order-column-dialog/material-table-order-column-dialog.component';\r\nimport { MaterialTableFilterDialogComponent } from './components/material-table/material-table-caption/material-table-filter-dialog/material-table-filter-dialog.component';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { CdkDrag, CdkDropList } from '@angular/cdk/drag-drop';\r\nimport { MaterialTableRowCellComponent } from './components/material-table/material-table-row-cell/material-table-row-cell.component';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { PrimeTemplate } from 'primeng/api';\r\nimport { StQtyInputModule } from 'ngx-st-qty-input';\r\nimport { TableModule } from 'primeng/table';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { StSnackBarModule } from 'ngx-st-snack-bar';\r\nimport { StTablesTranslationsModel } from './models/st-tables-translations.model';\r\nimport { SelectTableComponent } from './components/select-table/select-table.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n MaterialTableCaptionComponent,\r\n MaterialTableComponent,\r\n MaterialTableOrderColumnDialogComponent,\r\n MaterialTableFilterDialogComponent,\r\n MaterialTableRowCellComponent,\r\n SelectTableComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatTableModule,\r\n MatPaginatorModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n StDateFormatModule,\r\n MatSortModule,\r\n MatMenuModule,\r\n MatSelectModule,\r\n MatCheckboxModule,\r\n MatBadge,\r\n MatProgressSpinner,\r\n StBaseFunctionsModule,\r\n MatDialogModule,\r\n MatExpansionModule,\r\n CdkDropList,\r\n CdkDrag,\r\n InputTextModule,\r\n PrimeTemplate,\r\n StQtyInputModule,\r\n TableModule,\r\n MatDatepickerModule,\r\n MatSlideToggleModule,\r\n MatNativeDateModule,\r\n StSnackBarModule,\r\n ],\r\n exports: [MaterialTableComponent, SelectTableComponent],\r\n providers: [MatDatepickerModule],\r\n})\r\nexport class StTablesModule {\r\n constructor(private matIconRegistry: MatIconRegistry) {\r\n this.matIconRegistry.setDefaultFontSetClass('material-symbols-outlined');\r\n }\r\n\r\n static forRoot(config?: {\r\n translations?: Partial<StTablesTranslationsModel>;\r\n }): ModuleWithProviders<StTablesModule> {\r\n return {\r\n ngModule: StTablesModule,\r\n providers: [\r\n {\r\n provide: 'ST_TABLES_CONFIG',\r\n useValue: config || {},\r\n },\r\n ],\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-st-tables\r\n */\r\n\r\nexport * from './lib/services/st-tables-translations.service';\r\nexport * from './lib/components/select-table/select-table.component';\r\nexport * from './lib/components/material-table/material-table-caption/material-table-caption.component';\r\nexport * from './lib/components/material-table/material-table.component';\r\nexport * from './lib/models/st-material-table-column.model';\r\nexport * from './lib/models/st-tables-translations.model';\r\nexport * from './lib/ngx-st-tables.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i5","i7","i1","i3.StTablesTranslationsService","i4","i6","i8","i10","i2.StTablesTranslationsService","i3","i1.StTablesTranslationsService","i9","i11","i12.MaterialTableCaptionComponent","i13.MaterialTableRowCellComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,MAAM,oBAAoB,GAA8B;AAC7D,IAAA,YAAY,EAAE,QAAQ;AACtB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,mBAAmB,EAAE,iBAAiB;AACtC,IAAA,cAAc,EAAE,iBAAiB;AACjC,IAAA,gBAAgB,EAAE,oBAAoB;AACtC,IAAA,kBAAkB,EAAE,sBAAsB;AAC1C,IAAA,YAAY,EAAE,eAAe;AAC7B,IAAA,WAAW,EAAE,SAAS;AACtB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,YAAY,EAAE,QAAQ;AACtB,IAAA,gBAAgB,EAAE,eAAe;AACjC,IAAA,gBAAgB,EAAE,YAAY;AAC9B,IAAA,WAAW,EAAE,MAAM;AACnB,IAAA,UAAU,EAAE,KAAK;AACjB,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,eAAe,EAAE,YAAY;AAC7B,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,WAAW,EAAE,cAAc;AAC3B,IAAA,oBAAoB,EAAE,YAAY;AAClC,IAAA,qBAAqB,EAAE,aAAa;CACrC;;MClBY,2BAA2B,CAAA;AAItC,IAAA,WAAA,CAGU,MAA6D,EAAA;QAA7D,IAAM,CAAA,MAAA,GAAN,MAAM;AANC,QAAA,IAAA,CAAA,YAAY,GAC3B,MAAM,CAA4B,oBAAoB,CAAC;AAOvD,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE;YAC7B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;;;AAIlD,IAAA,eAAe,CAAC,YAAgD,EAAA;AAC9D,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AACpB,YAAA,GAAG,oBAAoB;AACvB,YAAA,GAAG,YAAY;AAChB,SAAA,CAAC;;IAGJ,eAAe,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;;AAtBf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,kBAM5B,kBAAkB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AANjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cAF1B,MAAM,EAAA,CAAA,CAAA;;4FAEP,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;0BAMI;;0BACA,MAAM;2BAAC,kBAAkB;;;MCOjB,oBAAoB,CAAA;IAwB/B,IACI,cAAc,CAAC,GAA8B,EAAA;AAC/C,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG;;IAGxB,IACI,SAAS,CAAC,IAAW,EAAA;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC;QAC/C,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;;IAG7C,IACI,UAAU,CAAC,KAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;;AAG1B,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW;;AAgBzB,IAAA,WAAA,GAAA;QAnDA,IAAQ,CAAA,QAAA,GAAY,KAAK;QAGzB,IAAQ,CAAA,QAAA,GAAY,KAAK;QASzB,IAAW,CAAA,WAAA,GAAW,QAAQ;QAG9B,IAAa,CAAA,aAAA,GAAW,UAAU;QAuB1B,IAAW,CAAA,WAAA,GAAG,KAAK;AAG3B,QAAA,IAAA,CAAA,iBAAiB,GAAwB,IAAI,YAAY,EAAS;AAOlE,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,kBAAkB,CAAC,EAAE,CAAC;QACvD,IAAW,CAAA,WAAA,GAAU,EAAE;;IAIvB,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,IAAG;AACvC,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AACpD,SAAC,CAAC;QACF,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;AACxC,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;;SAEnC,EAAE,IAAI,CAAC;;IAGV,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;;AAG1B,IAAA,QAAQ,CAAC,GAAQ,EAAA;AACf,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,GAAG,CAAC;QAC7D,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,KAAK,GAAG,CAAC;;aAC/D;AACL,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;;iBACrB;AACL,gBAAA,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC;;;QAG5B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;;AAG/C,IAAA,cAAc,CAAC,GAAQ,EAAA;AACrB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,GAAG,CAAC;;+GA3FrD,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACpB,YAAY,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBzB,8lDAiDA,EAAA,MAAA,EAAA,CAAA,2FAAA,EAAA,qgHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD7Ba,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EAAA,8lDAAA,EAAA,MAAA,EAAA,CAAA,2FAAA,EAAA,qgHAAA,CAAA,EAAA;wDAQN,SAAS,EAAA,CAAA;sBAAjC,SAAS;uBAAC,YAAY;gBAGvB,KAAK,EAAA,CAAA;sBADJ;gBAID,QAAQ,EAAA,CAAA;sBADP;gBAID,QAAQ,EAAA,CAAA;sBADP;gBAID,YAAY,EAAA,CAAA;sBADX;gBAID,aAAa,EAAA,CAAA;sBADZ;gBAID,WAAW,EAAA,CAAA;sBADV;gBAID,aAAa,EAAA,CAAA;sBADZ;gBAIG,cAAc,EAAA,CAAA;sBADjB;gBAOG,SAAS,EAAA,CAAA;sBADZ;gBAOG,UAAU,EAAA,CAAA;sBADb;gBAYD,iBAAiB,EAAA,CAAA;sBADhB;;;MEjDU,kCAAkC,CAAA;IAO7C,WAES,CAAA,UAGN,EACM,SAGN,EACO,EAA0B,EAC1B,iBAAoC,EACrC,mBAAgD,EAAA;QAVhD,IAAU,CAAA,UAAA,GAAV,UAAU;QAIV,IAAS,CAAA,SAAA,GAAT,SAAS;QAIR,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QAClB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QAlB5B,IAAa,CAAA,aAAA,GAAqC,EAAE;QAEpD,IAAS,CAAA,SAAA,GAAc,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAExC,IAAU,CAAA,UAAA,GAAG,IAAI;;IAiBjB,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC;aAClC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM;aAC9B,GAAG,CAAC,GAAG,IAAG;AACT,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAEzD,OAAO;AACL,gBAAA,GAAG,GAAG;aACP;AACH,SAAC,CAAC;AAEJ,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AAC/B,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AAC5D,YAAA,WAAW,CAAC,OAAO,CAAC,GAAG,IAAG;gBACxB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC3B,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;;AAEvE,aAAC,CAAC;;;IAIN,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,IAAG;YAClC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACpC,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;;AAElD,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;;IAGvC,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,IAAG;AAClC,YAAA,MAAM,CAAC,QAAQ,GAAG,IAAI;AACxB,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;;IAGvC,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,IAAG;AAClC,YAAA,MAAM,CAAC,QAAQ,GAAG,KAAK;AACzB,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;;IAGvC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACnB,YAAA,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;AACtC,SAAA,CAAC;;AAvEO,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kCAAkC,kBAQnC,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,2BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AARd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,uEClB/C,s7YA2RA,EAAA,MAAA,EAAA,CAAA,mhBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDzQa,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAN9C,SAAS;+BACE,iCAAiC,EAAA,eAAA,EAG1B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,s7YAAA,EAAA,MAAA,EAAA,CAAA,mhBAAA,CAAA,EAAA;;0BAU5C,MAAM;2BAAC,eAAe;;;MEfd,uCAAuC,CAAA;AAGlD,IAAA,WAAA,CAES,UAAyD,EACzD,SAGN,EACM,oBAAiD,EAAA;QALjD,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAS,CAAA,SAAA,GAAT,SAAS;QAIT,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;QAT7B,IAAO,CAAA,OAAA,GAAqC,EAAE;;IAY9C,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;;AAGvE,IAAA,IAAI,CAAC,KAA4B,EAAA;AAC/B,QAAA,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC;;IAGxE,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACnB,YAAA,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC;AACvD,SAAA,CAAC;;AAxBO,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uCAAuC,kBAIxC,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,2BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAJd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uCAAuC,6ECXpD,2lCAgCA,EAAA,MAAA,EAAA,CAAA,ujCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDrBa,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBALnD,SAAS;+BACE,uCAAuC,EAAA,QAAA,EAAA,2lCAAA,EAAA,MAAA,EAAA,CAAA,ujCAAA,CAAA,EAAA;;0BAQ9C,MAAM;2BAAC,eAAe;;;AEoBrB,MAAO,6BACX,SAAQ,2BAA2B,CAAA;IAiBnC,IACI,OAAO,CAAC,IAAsC,EAAA;AAChD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE;QAChC,IAAI,CAAC,aAAa,EAAE;;AAGtB,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;;IAmBtB,WACS,CAAA,mBAAgD,EAC/C,MAAiB,EAAA;AAEzB,QAAA,KAAK,EAAE;QAHA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QAClB,IAAM,CAAA,MAAA,GAAN,MAAM;QA1ChB,IAAgB,CAAA,gBAAA,GAAG,KAAK,EAAW;AAEnC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,EAAE,CAAC;AAEtB,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAU,IAAI,CAAC;AAEvC,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAU,IAAI,CAAC;AAE1C,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,EAAE,CAAC;AAE5B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAEhB,EAAE,CAAC;QAYE,IAAQ,CAAA,QAAA,GAAqC,EAAE;QAEvD,IAAkB,CAAA,kBAAA,GAAG,MAAM,EAAuB;QAElD,IAAkB,CAAA,kBAAA,GAAG,MAAM,EAAW;QAEtC,IAAgB,CAAA,gBAAA,GAAG,KAAK;AAExB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,WAAW,CAAW,EAAE,CAAC;AAC/C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC;QAElC,IAAkB,CAAA,kBAAA,GAAG,CAAC;QAEd,IAAY,CAAA,YAAA,GAAa,EAAE;QAC3B,IAAO,CAAA,OAAA,GAA8B,EAAE;;IAS/C,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;QACvC,IAAI,CAAC,qBAAqB,EAAE;QAE5B,IAAI,CAAC,eAAe,CAAC;AAClB,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAC5B,oBAAoB,CAClB,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAC9D,EACD,YAAY,CAAC,GAAG,CAAC;aAElB,SAAS,CAAC,KAAK,IAAG;YACjB,IAAI,CAAC,sBAAsB,EAAE;AAC/B,SAAC,CAAC;QAEJ,IAAI,CAAC,YAAY,CAAC;AACf,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAC5B,oBAAoB,CAClB,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAC9D,EACD,YAAY,CAAC,GAAG,CAAC;aAElB,SAAS,CAAC,KAAK,IAAG;YACjB,IAAI,CAAC,sBAAsB,EAAE;AAC/B,SAAC,CAAC;;IAGN,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC;aACF,IAAI,CAAC,kCAAkC,EAAE;AACxC,YAAA,IAAI,EAAE;gBACJ,WAAW,EAAE,IAAI,CAAC,OAAO;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;AACtB,aAAA;AACD,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,SAAS,EAAE,KAAK;SACjB;AACA,aAAA,WAAW;AACX,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;AAC3C,aAAA,SAAS,CAAC,CAAC,GAAoC,KAAI;AAClD,YAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO;YAC1B,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,sBAAsB,EAAE;AAC/B,SAAC,CAAC;;IAGN,wBAAwB,GAAA;AACtB,QAAA,IAAI,CAAC;aACF,IAAI,CAAC,uCAAuC,EAAE;AAC7C,YAAA,IAAI,EAAE;gBACJ,OAAO,EAAE,IAAI,CAAC,OAAO;AACtB,aAAA;AACD,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,SAAS,EAAE,KAAK;SACjB;AACA,aAAA,WAAW;AACX,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;AAC3C,aAAA,SAAS,CAAC,CAAC,MAAkC,KAAI;AAChD,YAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY;YACvC,IAAI,CAAC,sBAAsB,EAAE;AAC/B,SAAC,CAAC;;IAGN,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGpC,eAAe,GAAA;QACb,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7C,QAAA,WAAW,CAAC,OAAO,CAAC,GAAG,IAAG;AACxB,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACrB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;;AAE1B,SAAC,CAAC;QAEF,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,sBAAsB,EAAE;;IAGvB,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC3B,YAAA,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;AACjD,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;AAC3C,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE;YACrC,OAAO,EAAE,IAAI,CAAC,OAAO;AACtB,SAAA,CAAC;;IAGI,aAAa,GAAA;AACnB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;QACpE,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC;AACjD,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAC3B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CACrE;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;;IAGvD,qBAAqB,GAAA;QAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7C,QAAA,IAAI,CAAC,kBAAkB;AACrB,YAAA,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC;;+GA5JjD,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAU,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,ksCCnC1C,+hHAoGA,EAAA,MAAA,EAAA,CAAA,6SAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,KAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDjEa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;+BACE,2BAA2B,EAAA,eAAA,EAGpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+hHAAA,EAAA,MAAA,EAAA,CAAA,6SAAA,CAAA,EAAA;uHAqB3C,OAAO,EAAA,CAAA;sBADV;;;MEnCU,6BAA6B,CAAA;IAWxC,IACI,UAAU,CAAC,IAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;AAGzB,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW;;AAwBzB,IAAA,WAAA,CAAoB,iBAAoC,EAAA;QAApC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;AAxCrC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,EAA8B;AAErD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,EAEpB;QAEJ,IAAW,CAAA,WAAA,GAAG,KAAK,EAEf;QAWI,IAAW,CAAA,WAAA,GAAY,KAAK;AAEpC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,KAAK,CAAC;QAErC,IAAkB,CAAA,kBAAA,GAAG,MAAM,EAAQ;QAEnC,IAAoB,CAAA,oBAAA,GAAG,MAAM,EAAQ;QAErC,IAAc,CAAA,cAAA,GAAG,MAAM,EAAQ;QAE/B,IAAe,CAAA,eAAA,GAAG,MAAM,EAAW;QAEnC,IAAU,CAAA,UAAA,GAAG,KAAK;AAElB,QAAA,IAAA,CAAA,kBAAkB,GAEd;AACF,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,MAAM;SACf;;IAID,QAAQ,GAAA;AACN,QAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,IAAG;YACxC,IAAI,CAAC,cAAc,EAAE;AACvB,SAAC,CAAC;;IAGJ,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE;;IAGhC,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE;;IAGlC,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;;AAG5B,IAAA,SAAS,CAAC,KAA2B,EAAA;QACnC,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;;IAIpC,cAAc,GAAA;QACpB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI;AACnD,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;;+GArE5B,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,k5BClB1C,8lMA4LA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,kBAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FD1Ka,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;+BACE,4BAA4B,EAAA,eAAA,EAGrB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8lMAAA,EAAA;sFAc3C,UAAU,EAAA,CAAA;sBADb;;;AEQG,MAAO,sBACX,SAAQ,2BAA2B,CAAA;IA4BnC,IACI,IAAI,CAAC,IAAW,EAAA;QAClB,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AAC5C,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAClC,gBAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAG;oBACpB,OAAO;AACL,wBAAA,GAAG,GAAG;AACN,wBAAA,EAAE,EAAE,aAAa,CAAC,YAAY,EAAE;qBACjC;AACH,iBAAC,CAAC;;;AAGN,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE;AAEvB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI;YAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBAChD,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS;;gBAE1D,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;;;AAGlE,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;;AAGvC,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;;AAiCnB,IAAA,WAAA,CACU,iBAAoC,EACpC,QAA2B,EAC5B,mBAAgD,EAAA;AAEvD,QAAA,KAAK,EAAE;QAJC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACT,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;AApF5B,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC;AAE/B,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,EAAE,CAAC;AAEtB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,CAAC;AAE5B,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,CAAC,CAAC;AAE7B,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAU,IAAI,CAAC;AAEvC,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAU,IAAI,CAAC;AAE1C,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAS,EAAE,CAAC;AAEpC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,KAAK,CAAC;AAEnC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAU,KAAK,CAAC;AAEjC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAA+B,EAAE,CAAC;QAErD,IAAc,CAAA,cAAA,GAAG,KAAK,EAAsB;AA+B5C,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAU,KAAK,CAAC;AAElC,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC;AAE3B,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAC,EAAE,CAAC;QAE/B,IAAQ,CAAA,QAAA,GAAG,MAAM,EAA2B;QAE5C,IAAU,CAAA,UAAA,GAAG,MAAM,EAAO;QAE1B,IAAe,CAAA,eAAA,GAAG,MAAM,EAAS;QAEzB,IAAK,CAAA,KAAA,GAAU,EAAE;QAEzB,IAAO,CAAA,OAAA,GAAqC,EAAE;QAC9C,IAAe,CAAA,eAAA,GAAqC,EAAE;QACtD,IAAqB,CAAA,qBAAA,GAAa,EAAE;QAIpC,IAAW,CAAA,WAAA,GAA8B,EAAE;QAC3C,IAAgB,CAAA,gBAAA,GAAW,EAAE;QAE7B,IAAS,CAAA,SAAA,GAAG,IAAI;QAEhB,IAAiB,CAAA,iBAAA,GAAiD,EAAE;QACpE,IAAS,CAAA,SAAA,GAAG,IAAI,cAAc,CAAM,IAAI,EAAE,EAAE,CAAC;;IAY7C,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC;AACzB,gBAAA,KAAK,EAAE,uBAAuB;AAC9B,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,IAAI,EAAE,uBAAuB;AAC7B,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,KAAK,EAAE,MAAM;gBACb,iBAAiB,EACf,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,EAAE,CAAC,oBAAoB;AACpE,aAAA,CAAC;;AAGJ,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC;AACtB,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,IAAI,EAAE,qBAAqB;AAC3B,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,KAAK,EAAE,OAAO;gBACd,iBAAiB,EACf,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,EAAE,CAAC,qBAAqB;AACrE,aAAA,CAAC;;QAGJ,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,mBAAmB,EAAE;;IAG5B,eAAe,GAAA;QACb,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,uBAAuB,EAAE;;AAGhC,IAAA,kBAAkB,CAAC,KAA0B,EAAA;QAC3C,IAAI,YAAY,GAAG,KAAK;QACxB,IACE,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,gBAAgB,CAAC,YAAY;YACzD,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAC/C;YACA,YAAY,GAAG,IAAI;;QAGrB,IAAI,CAAC,gBAAgB,GAAG;AACtB,YAAA,GAAG,KAAK;AACR,YAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;AACjC,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;AACnC,YAAA,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;AAC3B,YAAA,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;SAC/B;QAED,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,wBAAwB,EAAE;QAE/B,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,eAAe,EAAE;;AAGxB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;;IAGvC,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;QAErC,IAAI,CAAC,2BAA2B,EAAE;QAClC,IAAI,CAAC,wBAAwB,EAAE;QAC/B,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;AACrB,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QAE7D,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;YACrB,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;SACtC,EAAE,GAAG,CAAC;;IAGT,OAAO,CAAC,GAAQ,EAAE,MAAsC,EAAA;AACtD,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE;;IAG7C,WAAW,CAAC,GAAQ,EAAE,MAAsC,EAAA;QAC1D,IAAI,SAAS,GAAG,IAAI;AAEpB,QAAA,IAAI,CAAC;aACF,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,eAAe;aACjC,OAAO,CAAC,GAAG,IAAG;AACb,YAAA,IAAI,GAAG,CAAC,sBAAsB,EAAE;AAC9B,gBAAA,MAAM,MAAM,GAAG,GAAG,CAAC,sBAAsB,CACvC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EACzC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EACd,GAAG,CACJ;AACD,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;oBACnB,SAAS,GAAG,KAAK;oBACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;;;AAG9C,SAAC,CAAC;QACJ,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC;iBACF,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,eAAe;iBACjC,OAAO,CAAC,GAAG,IAAG;AACb,gBAAA,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5D,aAAC,CAAC;AACJ,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;YAErC,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;;;IAIzC,aAAa,CAAC,GAAQ,EAAE,MAAsC,EAAA;QAC5D,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;;IAGvC,aAAa,GAAA;QACX,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM;QAC5C,OAAO,WAAW,KAAK,OAAO;;IAGhC,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACtB;;AAGF,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAE/C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;;AAGpD,IAAA,iBAAiB,CAAC,GAAQ,EAAA;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC5B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;;IAGpD,gBAAgB,CAAC,KAAc,EAAE,GAAQ,EAAA;QACvC,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;;aACrB;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;;AAG9B,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;QACrC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;;IAG5C,+BAA+B,GAAA;AACrC,QAAA,IAAI,cAAc,GAAG,CAAC,IAAS,EAAE,MAAc,KAAa;YAC1D,MAAM,WAAW,GACf,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACpB,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;YAChD,IAAI,QAAQ,GAAG,IAAI;YACnB,IAAI,cAAc,GAAG,IAAI;AAEzB,YAAA,eAAe,CAAC,OAAO,CAAC,CAAC,GAAW,KAAI;gBACtC,IACE,GAAG,KAAK,gBAAgB;oBACxB,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,EACxC;oBACA,QAAQ;wBACN,QAAQ;4BACR,IAAI,CAAC,GAAG;AACL,iCAAA,QAAQ;AACR,iCAAA,WAAW;AACX,iCAAA,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;;AAElE,aAAC,CAAC;AACF,YAAA,IAAI,WAAW,CAAC,cAAc,EAAE;gBAC9B,cAAc,GAAG,KAAK;AACtB,gBAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,GAAG,IAAG;AACvC,oBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE;wBACb,cAAc;4BACZ,cAAc;gCACd,IAAI,CAAC,GAAG;AACL,qCAAA,QAAQ;AACR,qCAAA,WAAW;AACX,qCAAA,OAAO,CACN,WAAW,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CACpD,KAAK,CAAC,CAAC;;AAEhB,iBAAC,CAAC;;YAGJ,OAAO,QAAQ,IAAI,cAAc;AACnC,SAAC;AACD,QAAA,OAAO,cAAc;;IAGf,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACjB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ;AACzD,gBAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;AAC7B,gBAAA,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY;AAChD,gBAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS;AAC1C,gBAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS;AAC1C,gBAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO;AACvC,aAAA,CAAC;;aACG;YACL,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;AACvC,gBAAA,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO;AAChC,gBAAA,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY;AACnD,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;;;IAIjC,wBAAwB,GAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AAC3B,YAAA,YAAY,CAAC,OAAO,CAClB,IAAI,CAAC,gBAAgB,EAAG,EACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CACtC;;;IAIG,YAAY,GAAA;QAClB,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;QAErD,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ;QACxD,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS;AAE1D,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;YACtE,MAAM,YAAY,GAAG,KAAK;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;AACtD,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACb,gBAAA,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS;AACnC,gBAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS;gBACtC,YAAY;AACb,aAAA,CAAC;;AAGJ,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAG,EAAE;YACxB,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;YAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;YACjC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC,+BAA+B,EAAE;;QAG3E,IAAI,CAAC,eAAe,EAAE;;IAGhB,uBAAuB,GAAA;QAC7B,IAAI,CAAC,IAAI,CAAC;AACP,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAC5B,oBAAoB,CAClB,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAC9D;aAEF,SAAS,CAAC,GAAG,IAAG;YACf,IAAI,CAAC,gBAAgB,GAAG;gBACtB,GAAG,IAAI,CAAC,gBAAgB;gBACxB,SAAS,EAAE,GAAG,CAAC,MAAM;gBACrB,SAAS,EAAE,GAAG,CAAC,SAAS;aACzB;YACD,IAAI,CAAC,wBAAwB,EAAE;YAC/B,IAAI,CAAC,eAAe,EAAE;AACxB,SAAC,CAAC;QAEJ,IAAI,CAAC,SAAS,CAAC;AACZ,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAC5B,oBAAoB,CAClB,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAC9D;aAEF,SAAS,CAAC,GAAG,IAAG;YACf,IAAI,CAAC,gBAAgB,GAAG;gBACtB,GAAG,IAAI,CAAC,gBAAgB;AACxB,gBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;AACnC,gBAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;aAClC;YAED,IAAI,CAAC,wBAAwB,EAAE;YAC/B,IAAI,CAAC,eAAe,EAAE;AACxB,SAAC,CAAC;;IAGE,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,GAAG,IAAG;YAC1C,OAAO;AACL,gBAAA,GAAG,GAAG;AACN,gBAAA,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,QAAQ;AACpC,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,SAAS,EAAE,KAAK;aACjB;AACH,SAAC,CAAC;QAEF,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;;IAG/B,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,YAAY,EAAE;YACvC,IAAI,CAAC,OAAO,GAAG;AACb,gBAAA,GAAG,IAAI,CAAC,gBAAgB,CAAC;qBACtB,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC;qBAC/D,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM,CAAE,CAAC;gBACjE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CACpB,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CACrE;aACF;;;IAIG,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,eAAe,EAAE;YAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAG;gBACpC,OAAO;AACL,oBAAA,GAAG,GAAG;AACN,oBAAA,OAAO,EACL,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;wBACzD,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;iBAC1D;AACH,aAAC,CAAC;;;IAIE,kBAAkB,GAAA;QACxB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAG;YAC/C,OAAO,GAAG,CAAC,OAAO;AACpB,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC;AACvE,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;;IAG/B,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAC3B,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAG,CAAC;YAEvE,IAAI,gBAAgB,EAAE;gBACpB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;gBACpD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,EAAE;gBACtD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY;;iBACrD;gBACL,IAAI,CAAC,2BAA2B,EAAE;;;aAE/B;YACL,IAAI,CAAC,2BAA2B,EAAE;;;IAI9B,2BAA2B,GAAA;QACjC,IAAI,CAAC,gBAAgB,GAAG;AACtB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC;AACzD,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC;AACtD,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,SAAS,EAAE,KAAK;SACjB;;+GA7cQ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,2BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAItB,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,YAAY,EACZ,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,OAAO,uEC1CpB,yoHAqGA,EAAA,MAAA,EAAA,CAAA,iWAAA,EAAA,qgHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDhEa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,mBAMhB,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,yoHAAA,EAAA,MAAA,EAAA,CAAA,iWAAA,EAAA,qgHAAA,CAAA,EAAA;+JAMZ,SAAS,EAAA,CAAA;sBAAjC,SAAS;uBAAC,YAAY;gBACH,IAAI,EAAA,CAAA;sBAAvB,SAAS;uBAAC,OAAO;gBAyBd,IAAI,EAAA,CAAA;sBADP;;;MEiBU,cAAc,CAAA;AACzB,IAAA,WAAA,CAAoB,eAAgC,EAAA;QAAhC,IAAe,CAAA,eAAA,GAAf,eAAe;AACjC,QAAA,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,2BAA2B,CAAC;;IAG1E,OAAO,OAAO,CAAC,MAEd,EAAA;QACC,OAAO;AACL,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,kBAAkB;oBAC3B,QAAQ,EAAE,MAAM,IAAI,EAAE;AACvB,iBAAA;AACF,aAAA;SACF;;+GAhBQ,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAZ,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBA3CvB,6BAA6B;YAC7B,sBAAsB;YACtB,uCAAuC;YACvC,kCAAkC;YAClC,6BAA6B;AAC7B,YAAA,oBAAoB,aAGpB,YAAY;YACZ,eAAe;YACf,aAAa;YACb,cAAc;YACd,kBAAkB;YAClB,kBAAkB;YAClB,cAAc;YACd,gBAAgB;YAChB,WAAW;YACX,mBAAmB;YACnB,YAAY;YACZ,kBAAkB;YAClB,aAAa;YACb,aAAa;YACb,eAAe;YACf,iBAAiB;YACjB,QAAQ;YACR,kBAAkB;YAClB,qBAAqB;YACrB,eAAe;YACf,kBAAkB;YAClB,WAAW;YACX,OAAO;YACP,eAAe;YACf,aAAa;YACb,gBAAgB;YAChB,WAAW;YACX,mBAAmB;YACnB,oBAAoB;YACpB,mBAAmB;YACnB,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAER,sBAAsB,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAG3C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAFd,SAAA,EAAA,CAAC,mBAAmB,CAAC,YAjC9B,YAAY;YACZ,eAAe;YACf,aAAa;YACb,cAAc;YACd,kBAAkB;YAClB,kBAAkB;YAClB,cAAc;YACd,gBAAgB;YAChB,WAAW;YACX,mBAAmB;YACnB,YAAY;YACZ,kBAAkB;YAClB,aAAa;YACb,aAAa;YACb,eAAe;YACf,iBAAiB;YAEjB,kBAAkB;YAClB,qBAAqB;YACrB,eAAe;YACf,kBAAkB;YAGlB,eAAe;YAEf,gBAAgB;YAChB,WAAW;YACX,mBAAmB;YACnB,oBAAoB;YACpB,mBAAmB;YACnB,gBAAgB,CAAA,EAAA,CAAA,CAAA;;4FAKP,cAAc,EAAA,UAAA,EAAA,CAAA;kBA7C1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,6BAA6B;wBAC7B,sBAAsB;wBACtB,uCAAuC;wBACvC,kCAAkC;wBAClC,6BAA6B;wBAC7B,oBAAoB;AACrB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb,cAAc;wBACd,kBAAkB;wBAClB,kBAAkB;wBAClB,cAAc;wBACd,gBAAgB;wBAChB,WAAW;wBACX,mBAAmB;wBACnB,YAAY;wBACZ,kBAAkB;wBAClB,aAAa;wBACb,aAAa;wBACb,eAAe;wBACf,iBAAiB;wBACjB,QAAQ;wBACR,kBAAkB;wBAClB,qBAAqB;wBACrB,eAAe;wBACf,kBAAkB;wBAClB,WAAW;wBACX,OAAO;wBACP,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,WAAW;wBACX,mBAAmB;wBACnB,oBAAoB;wBACpB,mBAAmB;wBACnB,gBAAgB;AACjB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,oBAAoB,CAAC;oBACvD,SAAS,EAAE,CAAC,mBAAmB,CAAC;AACjC,iBAAA;;;AClFD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ngx-st-tables.mjs","sources":["../../../projects/ngx-st-tables/src/lib/constants/default-translations.ts","../../../projects/ngx-st-tables/src/lib/services/st-tables-translations.service.ts","../../../projects/ngx-st-tables/src/lib/components/select-table/select-table.component.ts","../../../projects/ngx-st-tables/src/lib/components/select-table/select-table.component.html","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table-caption/material-table-filter-dialog/material-table-filter-dialog.component.ts","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table-caption/material-table-filter-dialog/material-table-filter-dialog.component.html","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table-caption/material-table-order-column-dialog/material-table-order-column-dialog.component.ts","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table-caption/material-table-order-column-dialog/material-table-order-column-dialog.component.html","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table-caption/material-table-caption.component.ts","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table-caption/material-table-caption.component.html","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table-row-cell/material-table-row-cell.component.ts","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table-row-cell/material-table-row-cell.component.html","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table.component.ts","../../../projects/ngx-st-tables/src/lib/components/material-table/material-table.component.html","../../../projects/ngx-st-tables/src/lib/ngx-st-tables.module.ts","../../../projects/ngx-st-tables/src/public-api.ts","../../../projects/ngx-st-tables/src/ngx-st-tables.ts"],"sourcesContent":["import { StTablesTranslationsModel } from '../models/st-tables-translations.model';\r\n\r\nexport const DEFAULT_TRANSLATIONS: StTablesTranslationsModel = {\r\n globalSearch: 'Search',\r\n cancel: 'Cancel',\r\n close: 'Close',\r\n save: 'Save',\r\n reorderColumnsTitle: 'Reorder Columns',\r\n reorderColumns: 'Reorder Columns',\r\n expandAllFilters: 'Expand all filters',\r\n collapseAllFilters: 'Collapse all filters',\r\n clearFilters: 'Clear Filters',\r\n filterTitle: 'Filters',\r\n filter: 'Filter',\r\n searchFilter: 'Search',\r\n filterChooseDate: 'Choose a date',\r\n booleanPickValue: 'Pick Value',\r\n booleanNone: 'None',\r\n booleanYes: 'Yes',\r\n booleanNo: 'No',\r\n customPickValue: 'Pick Value',\r\n customNone: 'None',\r\n rowSelected: 'row selected',\r\n rowSelectColumnLabel: 'Row Select',\r\n rowActionsColumnLabel: 'Row Actions',\r\n};\r\n","import { Inject, Injectable, Optional, signal } from '@angular/core';\r\nimport { StTablesTranslationsModel } from '../models/st-tables-translations.model';\r\nimport { DEFAULT_TRANSLATIONS } from '../constants/default-translations';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class StTablesTranslationsService {\r\n private readonly translations =\r\n signal<StTablesTranslationsModel>(DEFAULT_TRANSLATIONS);\r\n\r\n constructor(\r\n @Optional()\r\n @Inject('ST_TABLES_CONFIG')\r\n private config: { translations?: Partial<StTablesTranslationsModel> }\r\n ) {\r\n if (this.config?.translations) {\r\n this.setTranslations(this.config.translations);\r\n }\r\n }\r\n\r\n setTranslations(translations: Partial<StTablesTranslationsModel>) {\r\n this.translations.set({\r\n ...DEFAULT_TRANSLATIONS,\r\n ...translations,\r\n });\r\n }\r\n\r\n getTranslations() {\r\n return this.translations;\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { UntypedFormControl } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'ngx-st-select-table',\r\n templateUrl: './select-table.component.html',\r\n styleUrls: [\r\n './select-table.component.scss',\r\n '../../../../assets/base-table.scss',\r\n ],\r\n})\r\nexport class SelectTableComponent implements OnInit {\r\n @ViewChild(MatPaginator) paginator: MatPaginator;\r\n\r\n @Input()\r\n title: string;\r\n\r\n @Input()\r\n required: boolean = false;\r\n\r\n @Input()\r\n multiple: boolean = false;\r\n\r\n @Input()\r\n initSelected: any;\r\n\r\n @Input()\r\n initSearchVal: any;\r\n\r\n @Input()\r\n searchLabel: string = 'Search';\r\n\r\n @Input()\r\n selectedLabel: string = 'Selected';\r\n\r\n @Input()\r\n set setInitColumns(col: { [col: string]: string }) {\r\n this.columns = ['active', ...Object.keys(col)];\r\n this.initColumns = col;\r\n }\r\n\r\n @Input()\r\n set tableData(data: any[]) {\r\n this.tableSource = new MatTableDataSource(data);\r\n this.tableSource.paginator = this.paginator;\r\n }\r\n\r\n @Input()\r\n set validError(error: boolean) {\r\n this._validError = error;\r\n }\r\n\r\n get validError(): boolean {\r\n return this._validError;\r\n }\r\n\r\n private _validError = false;\r\n\r\n @Output()\r\n returnRowSelected: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n tableSource: MatTableDataSource<any>;\r\n columns: string[];\r\n initColumns: {\r\n [col: string]: string;\r\n };\r\n search: UntypedFormControl = new UntypedFormControl('');\r\n rowSelected: any[] = [];\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n this.search.valueChanges.subscribe(res => {\r\n this.tableSource.filter = res.trim().toLowerCase();\r\n });\r\n setTimeout(() => {\r\n if (this.initSearchVal) {\r\n this.search.setValue(this.initSearchVal);\r\n this.rowClick(this.initSelected);\r\n }\r\n }, 1000);\r\n }\r\n\r\n clearSearch() {\r\n this.search.setValue('');\r\n }\r\n\r\n rowClick(row: any) {\r\n const found = this.rowSelected.find(tmpRow => tmpRow === row);\r\n if (found) {\r\n this.rowSelected = this.rowSelected.filter(tmpRow => tmpRow !== row);\r\n } else {\r\n if (this.multiple) {\r\n this.rowSelected.push(row);\r\n } else {\r\n this.rowSelected = [row];\r\n }\r\n }\r\n this.returnRowSelected.emit(this.rowSelected);\r\n }\r\n\r\n checkActiveRow(row: any) {\r\n return !!this.rowSelected.find(activeRow => activeRow === row);\r\n }\r\n}\r\n","<div class=\"shared-table-selector\">\r\n <p class=\"title\" [ngClass]=\"{ 'error-text': validError }\">\r\n {{ title }} {{ required ? '*' : '' }}\r\n </p>\r\n\r\n <div class=\"search-form row align-items-center\">\r\n <div class=\"col-sm-12 col-md row align-items-center\">\r\n <mat-form-field class=\"col\">\r\n <input\r\n matInput\r\n placeholder=\"{{ searchLabel }}\"\r\n [formControl]=\"search\"\r\n />\r\n </mat-form-field>\r\n <div class=\"clear col-auto\">\r\n <mat-icon (click)=\"clearSearch()\">clear</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <table mat-table [dataSource]=\"tableSource\">\r\n @for (col of columns; track col) {\r\n <ng-container [matColumnDef]=\"col\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n {{ col === 'active' ? selectedLabel : initColumns[col] }}\r\n </th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n @if (col === 'active') {\r\n @if (checkActiveRow(element)) {\r\n <mat-icon class=\"active-row\">done</mat-icon>\r\n }\r\n }\r\n @if (col !== 'active') {\r\n {{ element[col] }}\r\n }\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columns\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: columns\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{ active: checkActiveRow(row) }\"\r\n ></tr>\r\n </table>\r\n <mat-paginator [pageSizeOptions]=\"[5]\"></mat-paginator>\r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Inject,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { ViewStMaterialTableColumnModel } from '../../../../models/view/view-st-material-table-column.model';\r\nimport { FormGroup, NonNullableFormBuilder } from '@angular/forms';\r\nimport { StTablesTranslationsService } from '../../../../services/st-tables-translations.service';\r\n\r\n@Component({\r\n selector: 'st-material-table-filter-dialog',\r\n templateUrl: './material-table-filter-dialog.component.html',\r\n styleUrls: ['./material-table-filter-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MaterialTableFilterDialogComponent implements OnInit {\r\n filterColumns: ViewStMaterialTableColumnModel[] = [];\r\n\r\n formGroup: FormGroup = this.fb.group({});\r\n\r\n allVisible = true;\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA)\r\n public dialogData: {\r\n columns: ViewStMaterialTableColumnModel[];\r\n initFilters: { [key: string]: string };\r\n },\r\n public dialogRef: MatDialogRef<\r\n MaterialTableFilterDialogComponent,\r\n MaterialTableFilterDialogResult\r\n >,\r\n private fb: NonNullableFormBuilder,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n public stTableTranslations: StTablesTranslationsService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.filterColumns = this.dialogData.columns\r\n .filter(column => column.filter)\r\n .map(col => {\r\n this.formGroup.addControl(col.field, this.fb.control(''));\r\n\r\n return {\r\n ...col,\r\n };\r\n });\r\n\r\n if (this.dialogData.initFilters) {\r\n const filtersKeys = Object.keys(this.dialogData.initFilters);\r\n filtersKeys.forEach(key => {\r\n if (this.formGroup.get(key)) {\r\n this.formGroup.get(key)?.setValue(this.dialogData.initFilters[key]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n clearAllFilters() {\r\n this.filterColumns.forEach(column => {\r\n if (this.formGroup.get(column.field)) {\r\n this.formGroup.get(column.field)?.setValue('');\r\n }\r\n });\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n showAllFilters() {\r\n this.filterColumns.forEach(column => {\r\n column.expanded = true;\r\n });\r\n this.allVisible = true;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n hideAllFilters() {\r\n this.filterColumns.forEach(column => {\r\n column.expanded = false;\r\n });\r\n this.allVisible = false;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n saveFilters() {\r\n this.dialogRef.close({\r\n filters: this.formGroup.getRawValue(),\r\n });\r\n }\r\n}\r\n\r\nexport interface MaterialTableFilterDialogResult {\r\n filters: { [key: string]: string };\r\n}\r\n","<h3 mat-dialog-title class=\"filters-dialog-title\">\n {{ stTableTranslations.getTranslations()().filterTitle }}\n <div class=\"filters-show-hide\">\n @if (!allVisible) {\n <button\n mat-icon-button\n (click)=\"showAllFilters()\"\n [matTooltip]=\"stTableTranslations.getTranslations()().expandAllFilters\"\n >\n <mat-icon>unfold_more</mat-icon>\n </button>\n }\n @if (allVisible) {\n <button\n mat-icon-button\n (click)=\"hideAllFilters()\"\n [matTooltip]=\"stTableTranslations.getTranslations()().collapseAllFilters\"\n >\n <mat-icon>unfold_less</mat-icon>\n </button>\n }\n <button\n mat-icon-button\n (click)=\"clearAllFilters()\"\n [matTooltip]=\"stTableTranslations.getTranslations()().clearFilters\"\n >\n <mat-icon>filter_alt_off</mat-icon>\n </button>\n </div>\n</h3>\n\n<mat-dialog-content>\n <form [formGroup]=\"formGroup\">\n @for (column of filterColumns; track column.field) {\n @switch (column.filterType || column.type || 'string') {\n @case ('string') {\n <div class=\"filter\">\n <ng-container\n *ngTemplateOutlet=\"filterHeader; context: { $implicit: column }\"\n ></ng-container>\n <div\n class=\"filter-content row\"\n [ngClass]=\"{ hide: !column.expanded }\"\n >\n <div class=\"col-auto\">\n <mat-form-field appearance=\"outline\" style=\"width: 100px\">\n <mat-label>{{\n stTableTranslations.getTranslations()().filter\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [disabled]=\"true\"\n [value]=\"'Contains'\"\n />\n </mat-form-field>\n </div>\n\n <div class=\"col\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{\n stTableTranslations.getTranslations()().searchFilter\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [disabled]=\"column.visible\"\n [formControlName]=\"column.field\"\n />\n <button\n matSuffix\n mat-icon-button\n aria-label=\"Clear\"\n (click)=\"formGroup.controls[column.field].setValue('')\"\n >\n <mat-icon style=\"font-size: 22px\">close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n </div>\n </div>\n }\n @case ('number') {\n <div class=\"filter\">\n <ng-container\n *ngTemplateOutlet=\"filterHeader; context: { $implicit: column }\"\n ></ng-container>\n <div\n class=\"filter-content row\"\n [ngClass]=\"{ hide: !column.expanded }\"\n >\n <div class=\"col-auto\">\n <mat-form-field appearance=\"outline\" style=\"width: 100px\">\n <mat-label>{{\n stTableTranslations.getTranslations()().filter\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [disabled]=\"true\"\n [value]=\"'Equal'\"\n />\n </mat-form-field>\n </div>\n\n <div class=\"col\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{\n stTableTranslations.getTranslations()().filter\n }}</mat-label>\n <input\n matInput\n type=\"number\"\n [disabled]=\"column.visible\"\n [formControlName]=\"column.field\"\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n }\n @case ('date') {\n <div class=\"filter\">\n <ng-container\n *ngTemplateOutlet=\"filterHeader; context: { $implicit: column }\"\n ></ng-container>\n <div\n class=\"filter-content row\"\n [ngClass]=\"{ hide: !column.expanded }\"\n >\n <div class=\"col-auto\">\n <mat-form-field appearance=\"outline\" style=\"width: 100px\">\n <mat-label>{{\n stTableTranslations.getTranslations()().filter\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [disabled]=\"true\"\n [value]=\"'Date is'\"\n />\n </mat-form-field>\n </div>\n\n <div class=\"col\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{\n stTableTranslations.getTranslations()().filterChooseDate\n }}</mat-label>\n <input\n matInput\n [matDatepicker]=\"picker\"\n [disabled]=\"column.visible\"\n [formControlName]=\"column.field\"\n />\n <mat-datepicker-toggle\n matIconSuffix\n [for]=\"picker\"\n ></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n </div>\n </div>\n </div>\n }\n @case ('boolean') {\n <div class=\"filter\">\n <ng-container\n *ngTemplateOutlet=\"filterHeader; context: { $implicit: column }\"\n ></ng-container>\n <div\n class=\"filter-content row\"\n [ngClass]=\"{ hide: !column.expanded }\"\n >\n <div class=\"col-auto\">\n <mat-form-field appearance=\"outline\" style=\"width: 100px\">\n <mat-label>{{\n stTableTranslations.getTranslations()().filter\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [disabled]=\"true\"\n [value]=\"'Data is'\"\n />\n </mat-form-field>\n </div>\n\n <div class=\"col\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{\n stTableTranslations.getTranslations()().booleanPickValue\n }}</mat-label>\n <mat-select>\n <mat-option value=\"\">{{\n stTableTranslations.getTranslations()().booleanNone\n }}</mat-option>\n <mat-option [value]=\"true\">{{\n stTableTranslations.getTranslations()().booleanYes\n }}</mat-option>\n <mat-option [value]=\"false\">{{\n stTableTranslations.getTranslations()().booleanNo\n }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n </div>\n }\n @case ('custom') {\n @if (column.customFilterOptions) {}\n <div class=\"filter\">\n <ng-container\n *ngTemplateOutlet=\"filterHeader; context: { $implicit: column }\"\n ></ng-container>\n <div\n class=\"filter-content row\"\n [ngClass]=\"{ hide: !column.expanded }\"\n >\n <div class=\"col-auto\">\n <mat-form-field appearance=\"outline\" style=\"width: 100px\">\n <mat-label>{{\n stTableTranslations.getTranslations()().filter\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [disabled]=\"true\"\n [value]=\"'Equal'\"\n />\n </mat-form-field>\n </div>\n\n <div class=\"col\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{\n stTableTranslations.getTranslations()().customPickValue\n }}</mat-label>\n <mat-select>\n <mat-option value=\"\">{{\n stTableTranslations.getTranslations()().customNone\n }}</mat-option>\n @for (option of column.customFilterOptions; track option) {\n <mat-option [value]=\"option.value\">\n {{ option.label }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n </div>\n }\n }\n }\n </form>\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"row justify-content-between\" style=\"width: 100%\">\n <button mat-flat-button mat-dialog-close>\n {{ stTableTranslations.getTranslations()().cancel }}\n </button>\n <button mat-flat-button color=\"accent\" (click)=\"saveFilters()\">\n {{ stTableTranslations.getTranslations()().save }}\n </button>\n </div>\n </mat-dialog-actions>\n\n <ng-template #filterHeader let-column>\n <div class=\"filter-title row justify-content-between\">\n {{ column.header }}\n\n @if (column.expanded) {\n <mat-icon (click)=\"column.expanded = !column.expanded\"\n >keyboard_arrow_up</mat-icon\n >\n } @else {\n <mat-icon (click)=\"column.expanded = !column.expanded\"\n >keyboard_arrow_down</mat-icon\n >\n }\n </div>\n </ng-template>\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { ViewStMaterialTableColumnModel } from '../../../../models/view/view-st-material-table-column.model';\r\nimport { StTablesTranslationsService } from '../../../../services/st-tables-translations.service';\r\n\r\n@Component({\r\n selector: 'st-material-table-order-column-dialog',\r\n templateUrl: './material-table-order-column-dialog.component.html',\r\n styleUrls: ['./material-table-order-column-dialog.component.scss'],\r\n})\r\nexport class MaterialTableOrderColumnDialogComponent implements OnInit {\r\n columns: ViewStMaterialTableColumnModel[] = [];\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA)\r\n public dialogData: { columns: ViewStMaterialTableColumnModel[] },\r\n public dialogRef: MatDialogRef<\r\n MaterialTableOrderColumnDialogComponent,\r\n MaterialTableOrderColumnDialogResult\r\n >,\r\n public stTablesTranslations: StTablesTranslationsService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.columns = this.dialogData.columns.map(column => ({ ...column }));\r\n }\r\n\r\n drop(event: CdkDragDrop<string[]>) {\r\n moveItemInArray(this.columns, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n saveOrder() {\r\n this.dialogRef.close({\r\n columnsOrder: this.columns.map(column => column.field),\r\n });\r\n }\r\n}\r\n\r\nexport interface MaterialTableOrderColumnDialogResult {\r\n columnsOrder: string[];\r\n}\r\n","<h3 mat-dialog-title>\r\n {{ stTablesTranslations.getTranslations()().reorderColumns }}\r\n</h3>\r\n<mat-dialog-content>\r\n <div\r\n cdkDropList\r\n class=\"reorder-column-list\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n >\r\n @for (column of columns; track column.field) {\r\n <div class=\"reorder-column-element\" cdkDrag>\r\n <div class=\"row\">\r\n <mat-icon>drag_indicator</mat-icon>\r\n <p>{{ column.selectColumnLabel || column.header }}</p>\r\n </div>\r\n @if (!column.visible) {\r\n <mat-icon class=\"column-hidden\">visibility_off</mat-icon>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div class=\"row justify-content-between\" style=\"width: 100%\">\r\n <button mat-flat-button mat-dialog-close>\r\n {{ stTablesTranslations.getTranslations()().close }}\r\n </button>\r\n <button mat-flat-button color=\"accent\" (click)=\"saveOrder()\">\r\n {{ stTablesTranslations.getTranslations()().save }}\r\n </button>\r\n </div>\r\n</mat-dialog-actions>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnInit,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { ViewStMaterialTableColumnModel } from '../../../models/view/view-st-material-table-column.model';\r\nimport { FormControl } from '@angular/forms';\r\nimport {\r\n StBaseService,\r\n StSubscribeDestroyComponent,\r\n} from 'ngx-st-base-functions';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n take,\r\n takeUntil,\r\n} from 'rxjs/operators';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport {\r\n MaterialTableFilterDialogComponent,\r\n MaterialTableFilterDialogResult,\r\n} from './material-table-filter-dialog/material-table-filter-dialog.component';\r\nimport { MaterialTableOrderColumnDialogComponent } from './material-table-order-column-dialog/material-table-order-column-dialog.component';\r\nimport { StTablesTranslationsService } from '../../../services/st-tables-translations.service';\r\n\r\n@Component({\r\n selector: 'st-material-table-caption',\r\n templateUrl: './material-table-caption.component.html',\r\n styleUrls: ['./material-table-caption.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MaterialTableCaptionComponent\r\n extends StSubscribeDestroyComponent\r\n implements OnInit\r\n{\r\n showGlobalSearch = input<boolean>();\r\n\r\n tableTitle = input('');\r\n\r\n allowPickColumns = input<boolean>(true);\r\n\r\n allowReorderColumns = input<boolean>(true);\r\n\r\n initGlobalSearch = input('');\r\n\r\n initFilters = input<{\r\n [key: string]: string;\r\n }>({});\r\n\r\n @Input()\r\n set columns(data: ViewStMaterialTableColumnModel[]) {\r\n this._columns = data ? data : [];\r\n this.updateColumns();\r\n }\r\n\r\n get columns() {\r\n return this._columns;\r\n }\r\n\r\n private _columns: ViewStMaterialTableColumnModel[] = [];\r\n\r\n captionDataChanged = output<ICaptionDataChanged>();\r\n\r\n resetTableSettings = output<boolean>();\r\n\r\n showFilterButton = false;\r\n\r\n selectedColumns = new FormControl(<string[]>[]);\r\n globalSearch = new FormControl('');\r\n\r\n activeFiltersCount = 0;\r\n\r\n private columnsOrder: string[] = [];\r\n private filters: { [key: string]: string } = {};\r\n\r\n constructor(\r\n public stTableTranslations: StTablesTranslationsService,\r\n private dialog: MatDialog\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.globalSearch.setValue(this.initGlobalSearch() || '');\r\n this.filters = this.initFilters() || {};\r\n this.setActiveFiltersCount();\r\n\r\n this.selectedColumns.valueChanges\r\n .pipe(\r\n takeUntil(this.ngDestroyed$),\r\n distinctUntilChanged(\r\n (prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)\r\n ),\r\n debounceTime(400)\r\n )\r\n .subscribe(value => {\r\n this.emitCaptionDataChanged();\r\n });\r\n\r\n this.globalSearch.valueChanges\r\n .pipe(\r\n takeUntil(this.ngDestroyed$),\r\n distinctUntilChanged(\r\n (prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)\r\n ),\r\n debounceTime(400)\r\n )\r\n .subscribe(value => {\r\n this.emitCaptionDataChanged();\r\n });\r\n }\r\n\r\n openFilterDialog() {\r\n this.dialog\r\n .open(MaterialTableFilterDialogComponent, {\r\n data: {\r\n initFilters: this.filters,\r\n columns: this.columns,\r\n },\r\n maxWidth: '450px',\r\n width: '100%',\r\n autoFocus: false,\r\n })\r\n .afterClosed()\r\n .pipe(take(1), filter(StBaseService.notNull))\r\n .subscribe((res: MaterialTableFilterDialogResult) => {\r\n this.filters = res.filters;\r\n this.setActiveFiltersCount();\r\n this.emitCaptionDataChanged();\r\n });\r\n }\r\n\r\n openReorderColumnsDialog() {\r\n this.dialog\r\n .open(MaterialTableOrderColumnDialogComponent, {\r\n data: {\r\n columns: this.columns,\r\n },\r\n maxWidth: '450px',\r\n width: '100%',\r\n autoFocus: false,\r\n })\r\n .afterClosed()\r\n .pipe(take(1), filter(StBaseService.notNull))\r\n .subscribe((result: { columnsOrder: string[] }) => {\r\n this.columnsOrder = result.columnsOrder;\r\n this.emitCaptionDataChanged();\r\n });\r\n }\r\n\r\n resetTable() {\r\n this.resetTableSettings.emit(true);\r\n }\r\n\r\n clearAllFilters() {\r\n const filtersKeys = Object.keys(this.filters);\r\n filtersKeys.forEach(key => {\r\n if (this.filters[key]) {\r\n this.filters[key] = '';\r\n }\r\n });\r\n\r\n this.setActiveFiltersCount();\r\n this.emitCaptionDataChanged();\r\n }\r\n\r\n private emitCaptionDataChanged() {\r\n this.captionDataChanged.emit({\r\n selectedColumns: this.selectedColumns.value || [],\r\n globalSearch: this.globalSearch.value || '',\r\n columnsOrder: this.columnsOrder || [],\r\n filters: this.filters,\r\n });\r\n }\r\n\r\n private updateColumns() {\r\n const columnsFilters = this._columns.filter(column => column.filter);\r\n this.showFilterButton = columnsFilters.length > 0;\r\n this.selectedColumns.setValue(\r\n this._columns.filter(col => col.visible).map(col => col.field) || []\r\n );\r\n this.columnsOrder = this._columns.map(col => col.field) || [];\r\n }\r\n\r\n private setActiveFiltersCount() {\r\n const filtersKeys = Object.keys(this.filters);\r\n this.activeFiltersCount =\r\n filtersKeys.filter(key => this.filters[key]).length || 0;\r\n }\r\n}\r\n\r\nexport interface ICaptionDataChanged {\r\n selectedColumns: string[];\r\n globalSearch: string;\r\n columnsOrder: string[];\r\n filters: { [key: string]: string };\r\n}\r\n","@if (\r\n allowPickColumns() ||\r\n tableTitle() ||\r\n allowReorderColumns() ||\r\n showGlobalSearch() ||\r\n showFilterButton\r\n) {\r\n <div\r\n class=\"st-material-table-caption row align-items-center\"\r\n [ngClass]=\"{\r\n 'justify-content-between':\r\n (allowPickColumns() || tableTitle() || allowReorderColumns()) &&\r\n (showGlobalSearch() || showFilterButton),\r\n 'justify-content-end':\r\n !allowPickColumns() && !tableTitle() && !allowReorderColumns()\r\n }\"\r\n >\r\n @if (allowPickColumns() || tableTitle() || allowReorderColumns()) {\r\n <div class=\"col-auto d-flex align-items-center\">\r\n @if (tableTitle()) {\r\n <p class=\"table-title\">{{ tableTitle() }}</p>\r\n }\r\n\r\n @if (allowPickColumns()) {\r\n <mat-form-field appearance=\"outline\">\r\n <mat-select [formControl]=\"selectedColumns\" multiple>\r\n <mat-select-trigger>\r\n {{ selectedColumns.value ? selectedColumns.value!.length : 0 }}\r\n columns selected\r\n </mat-select-trigger>\r\n @for (column of columns; track column.field) {\r\n <mat-option [value]=\"column.field\">{{\r\n column.selectColumnLabel || column.header\r\n }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n\r\n @if (allowPickColumns() || tableTitle()) {\r\n <button mat-icon-button (click)=\"resetTable()\">\r\n <mat-icon class=\"reorder-icon\">refresh</mat-icon>\r\n </button>\r\n }\r\n\r\n @if (allowReorderColumns()) {\r\n <button mat-icon-button (click)=\"openReorderColumnsDialog()\">\r\n <mat-icon class=\"reorder-icon\">low_priority</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n @if (showGlobalSearch() || showFilterButton) {\r\n <div class=\"col-auto d-flex align-items-center\">\r\n @if (showFilterButton) {\r\n <!-- @if (activeFiltersCount) {-->\r\n <!-- <button-->\r\n <!-- mat-icon-button-->\r\n <!-- (click)=\"clearAllFilters()\"-->\r\n <!-- [matTooltip]=\"'Clear Filters'\"-->\r\n <!-- >-->\r\n <!-- <mat-icon>filter_alt_off</mat-icon>-->\r\n <!-- </button>-->\r\n <!-- }-->\r\n\r\n <button mat-icon-button (click)=\"openFilterDialog()\">\r\n <mat-icon\r\n [matBadge]=\"activeFiltersCount\"\r\n [matBadgeHidden]=\"!activeFiltersCount\"\r\n [matBadgeSize]=\"'small'\"\r\n matBadgePosition=\"before\"\r\n >filter_alt</mat-icon\r\n >\r\n </button>\r\n }\r\n\r\n @if (showGlobalSearch()) {\r\n <mat-form-field appearance=\"outline\">\r\n <input\r\n matInput\r\n [formControl]=\"globalSearch\"\r\n [placeholder]=\"\r\n stTableTranslations.getTranslations()().globalSearch\r\n \"\r\n />\r\n <button\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"globalSearch.setValue('')\"\r\n >\r\n <mat-icon style=\"font-size: 22px\">close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnInit,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { StMaterialTableColumnModel } from '../../../models/st-material-table-column.model';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\n\r\n@Component({\r\n selector: 'st-material-table-row-cell',\r\n templateUrl: './material-table-row-cell.component.html',\r\n styleUrls: ['./material-table-row-cell.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MaterialTableRowCellComponent implements OnInit {\r\n column = input.required<StMaterialTableColumnModel>();\r\n\r\n rowData = input.required<{\r\n [prop: string]: any;\r\n }>();\r\n\r\n rowDataCopy = input<{\r\n [prop: string]: any;\r\n }>();\r\n\r\n @Input()\r\n set rowEditing(data: boolean) {\r\n this._rowEditing = data;\r\n }\r\n\r\n get rowEditing(): boolean {\r\n return this._rowEditing;\r\n }\r\n\r\n private _rowEditing: boolean = false;\r\n\r\n rowIsSelected = input<boolean>(false);\r\n\r\n saveEditRowEmitter = output<void>();\r\n\r\n cancelEditRowEmitter = output<void>();\r\n\r\n editRowEmitter = output<void>();\r\n\r\n selectRowChange = output<boolean>();\r\n\r\n mobileView = false;\r\n\r\n actionIconColorDef: {\r\n [key: string]: 'primary' | 'warn';\r\n } = {\r\n edit: 'primary',\r\n delete: 'warn',\r\n };\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n ngOnInit() {\r\n window.addEventListener('resize', event => {\r\n this.checkWidthSize();\r\n });\r\n }\r\n\r\n saveRow() {\r\n this.saveEditRowEmitter.emit();\r\n }\r\n\r\n cancelRow() {\r\n this.cancelEditRowEmitter.emit();\r\n }\r\n\r\n editRow() {\r\n this.editRowEmitter.emit();\r\n }\r\n\r\n selectRow(event: { checked: boolean }) {\r\n if (event) {\r\n this.selectRowChange.emit(event.checked);\r\n }\r\n }\r\n\r\n private checkWidthSize() {\r\n this.mobileView = document.body.clientWidth <= 1100;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n}\r\n","@switch (column().type || 'string') {\r\n @case ('custom-template') {\r\n <ng-container\r\n [ngTemplateOutlet]=\"column().customTemplate!\"\r\n [ngTemplateOutletContext]=\"{ data: rowData() }\"\r\n ></ng-container>\r\n }\r\n\r\n @case ('actions') {\r\n @if (column().actions) {\r\n @if (\r\n (!column().actionsInMenu && !mobileView) ||\r\n (mobileView && column().actions!.length <= 1)\r\n ) {\r\n <div [ngStyle]=\"{ float: column().flexRight ? 'right' : 'none' }\">\r\n @for (action of column().actions; track action) {\r\n @if ((action.show && action.show(rowData())) || !action.show) {\r\n @if (!action.url && action.action) {\r\n <button\r\n class=\"action-icon-button\"\r\n type=\"button\"\r\n mat-icon-button\r\n [color]=\"\r\n actionIconColorDef[action.iconName]\r\n ? actionIconColorDef[action.iconName]\r\n : action.iconColor\r\n \"\r\n [matTooltip]=\"action.tooltipName || ''\"\r\n [matTooltipDisabled]=\"!action.tooltipName\"\r\n (click)=\"$event.stopPropagation(); action.action!(rowData())\"\r\n >\r\n <mat-icon>{{ action.iconName }}</mat-icon>\r\n </button>\r\n }\r\n @if (action.url) {\r\n <a [routerLink]=\"action.url\">\r\n <button\r\n class=\"action-icon-button\"\r\n type=\"button\"\r\n mat-icon-button\r\n [color]=\"\r\n actionIconColorDef[action.iconName]\r\n ? actionIconColorDef[action.iconName]\r\n : action.iconColor\r\n \"\r\n [matTooltip]=\"action.tooltipName || ''\"\r\n [matTooltipDisabled]=\"!action.tooltipName\"\r\n >\r\n <mat-icon>{{ action.iconName }}</mat-icon>\r\n </button>\r\n </a>\r\n }\r\n }\r\n }\r\n </div>\r\n }\r\n @if (\r\n column().actionsInMenu || (mobileView && column().actions!.length > 1)\r\n ) {\r\n <button\r\n mat-icon-button\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n @for (action of column().actions; track action) {\r\n @if ((action.show && action.show(rowData())) || !action.show) {\r\n @if (!action.url && action.action) {\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n (click)=\"$event.stopPropagation(); action.action!(rowData())\"\r\n >\r\n {{ action.tooltipName }}\r\n </button>\r\n }\r\n @if (action.url) {\r\n <a [routerLink]=\"action.url\">\r\n <button type=\"button\" mat-menu-item>\r\n {{ action.tooltipName }}\r\n </button>\r\n </a>\r\n }\r\n }\r\n }\r\n </mat-menu>\r\n }\r\n }\r\n }\r\n\r\n @case ('string') {\r\n <ng-container\r\n *ngTemplateOutlet=\"baseFieldCell; context: { $implicit: column() }\"\r\n ></ng-container>\r\n }\r\n\r\n @case ('number') {\r\n <ng-container\r\n *ngTemplateOutlet=\"baseFieldCell; context: { $implicit: column() }\"\r\n ></ng-container>\r\n }\r\n\r\n @case ('boolean') {\r\n <ng-container\r\n *ngTemplateOutlet=\"baseFieldCell; context: { $implicit: column() }\"\r\n ></ng-container>\r\n }\r\n\r\n @case ('date') {\r\n {{ rowData()[column().field] | stDateTimeFormatPipe }}\r\n }\r\n\r\n @case ('actions-row-editing') {\r\n <div class=\"row justify-content-end\">\r\n @if (rowEditing) {\r\n <button\r\n mat-icon-button\r\n color=\"accent\"\r\n (click)=\"saveRow()\"\r\n [matTooltip]=\"'Save row'\"\r\n >\r\n <mat-icon>done</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n color=\"warn\"\r\n (click)=\"cancelRow()\"\r\n [matTooltip]=\"'Cancel row'\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n } @else {\r\n <button\r\n mat-icon-button\r\n color=\"primary\"\r\n (click)=\"editRow()\"\r\n [matTooltip]=\"'Edit row'\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n @case ('actions-row-selecting') {\r\n <mat-checkbox\r\n color=\"primary\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"selectRow($event)\"\r\n [checked]=\"rowIsSelected()\"\r\n >\r\n </mat-checkbox>\r\n }\r\n}\r\n\r\n<ng-template #baseFieldCell let-column>\r\n @if (rowEditing && column.allowEditColumn) {\r\n <mat-form-field appearance=\"outline\">\r\n @if (column.type === 'string') {\r\n <input matInput [(ngModel)]=\"rowDataCopy()![column.field]\" />\r\n }\r\n @if (column.type === 'number') {\r\n <input\r\n matInput\r\n type=\"number\"\r\n [(ngModel)]=\"rowDataCopy()![column.field]\"\r\n />\r\n }\r\n @if (column.type === 'boolean') {\r\n <mat-checkbox [(ngModel)]=\"rowDataCopy()![column.field]\"></mat-checkbox>\r\n }\r\n </mat-form-field>\r\n } @else {\r\n <div>\r\n @if (column.translateValue) {\r\n {{ column.translateValue![rowData()[column.field]] || '' }}\r\n }\r\n @if (column.customValueDisplay) {\r\n {{ column.customValueDisplay(rowData()[column.field]) }}\r\n }\r\n @if (!column.translateValue && !column.customValueDisplay) {\r\n {{ rowData()[column.field] }}\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnInit,\r\n ViewChild,\r\n ViewEncapsulation,\r\n input,\r\n output,\r\n model,\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort, SortDirection } from '@angular/material/sort';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { StMaterialTableColumnModel } from '../../models/st-material-table-column.model';\r\nimport { ViewStMaterialTableColumnModel } from '../../models/view/view-st-material-table-column.model';\r\nimport { ICaptionDataChanged } from './material-table-caption/material-table-caption.component';\r\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\r\nimport {\r\n StBaseService,\r\n StSubscribeDestroyComponent,\r\n} from 'ngx-st-base-functions';\r\nimport { StSnackBarService } from 'ngx-st-snack-bar';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { StTablesTranslationsService } from '../../services/st-tables-translations.service';\r\n\r\n@Component({\r\n selector: 'ngx-st-material-table',\r\n templateUrl: './material-table.component.html',\r\n styleUrls: [\r\n './material-table.component.scss',\r\n '../../../../assets/base-table.scss',\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class MaterialTableComponent\r\n extends StSubscribeDestroyComponent\r\n implements OnInit, AfterViewInit\r\n{\r\n @ViewChild(MatPaginator) paginator: MatPaginator;\r\n @ViewChild(MatSort) sort: MatSort;\r\n\r\n showGlobalSearch = input(false);\r\n\r\n tableTitle = input('');\r\n\r\n pageSize = input<number>(10);\r\n\r\n dataLength = input<number>(0);\r\n\r\n allowPickColumns = input<boolean>(true);\r\n\r\n allowReorderColumns = input<boolean>(true);\r\n\r\n localStorageName = input<string>('');\r\n\r\n lazyLoading = input<boolean>(false);\r\n\r\n isLoading = input<boolean>(false);\r\n\r\n initColumns = model<StMaterialTableColumnModel[]>([]);\r\n\r\n rowClickAction = input<(row: any) => void>();\r\n\r\n @Input()\r\n set data(data: any[]) {\r\n if (this.rowEditing() || this.rowSelecting()) {\r\n if (data.length > 0 && !data[0].id) {\r\n data = data.map(row => {\r\n return {\r\n ...row,\r\n id: StBaseService.generateGUID(),\r\n };\r\n });\r\n }\r\n }\r\n this._data = data || [];\r\n\r\n if (this.tableSource) {\r\n this.tableSource.data = data;\r\n if (!this.lazyLoading() && this.localStorageData) {\r\n this.paginator.pageIndex = this.localStorageData.pageIndex;\r\n //@ts-ignore\r\n this.paginator._emitPageEvent(this.localStorageData.pageIndex);\r\n }\r\n }\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n get data(): any[] {\r\n return this._data;\r\n }\r\n\r\n rowEditing = input<boolean>(false);\r\n\r\n rowSelecting = input(false);\r\n\r\n selectionFieldLabel = input('');\r\n\r\n loadData = output<StMaterialTableLoadData>();\r\n\r\n saveNewRow = output<any>();\r\n\r\n selectRowChange = output<any[]>();\r\n\r\n private _data: any[] = [];\r\n\r\n columns: ViewStMaterialTableColumnModel[] = [];\r\n selectedColumns: ViewStMaterialTableColumnModel[] = [];\r\n selectedColumnsString: string[] = [];\r\n\r\n tableSource: MatTableDataSource<any>;\r\n\r\n initFilters: { [key: string]: string } = {};\r\n initGlobalSearch: string = '';\r\n\r\n showTable = true;\r\n\r\n activeRowsEditing: { [rowId: string]: { [prop: string]: any } } = {};\r\n selection = new SelectionModel<any>(true, []);\r\n\r\n private localStorageData: StMaterialTableLocalStorage;\r\n\r\n constructor(\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private snackbar: StSnackBarService,\r\n public stTableTranslations: StTablesTranslationsService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.rowSelecting()) {\r\n this.initColumns().unshift({\r\n field: 'actions-row-selecting',\r\n header: '',\r\n type: 'actions-row-selecting',\r\n sort: false,\r\n filter: false,\r\n width: '60px',\r\n selectColumnLabel:\r\n this.stTableTranslations.getTranslations()().rowSelectColumnLabel,\r\n });\r\n } else {\r\n this.initColumns.update(oldVal =>\r\n oldVal.filter(column => column.field !== 'action-row-selecting')\r\n );\r\n }\r\n\r\n if (this.rowEditing()) {\r\n this.initColumns().push({\r\n field: 'actions-row-editing',\r\n header: '',\r\n type: 'actions-row-editing',\r\n sort: false,\r\n filter: false,\r\n width: '110px',\r\n selectColumnLabel:\r\n this.stTableTranslations.getTranslations()().rowActionsColumnLabel,\r\n });\r\n } else {\r\n this.initColumns.update(oldVal =>\r\n oldVal.filter(column => column.field !== 'action-row-editing')\r\n );\r\n }\r\n\r\n this.loadLocalStorageData();\r\n this.setDisplayedColumns();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setInitTable();\r\n this.setSortPageSubscription();\r\n }\r\n\r\n captionDataChanged(event: ICaptionDataChanged) {\r\n let loadLazyData = false;\r\n if (\r\n event.globalSearch !== this.localStorageData.globalSearch ||\r\n event.filters !== this.localStorageData.filters\r\n ) {\r\n loadLazyData = true;\r\n }\r\n\r\n this.localStorageData = {\r\n ...event,\r\n pageSize: this.paginator.pageSize,\r\n pageIndex: this.paginator.pageIndex,\r\n sortField: this.sort.active,\r\n sortOrder: this.sort.direction,\r\n };\r\n\r\n this.setColumnsOrder();\r\n this.setColumnsVisible();\r\n this.setSelectedColumns();\r\n this.updateDataToLocalStorage();\r\n\r\n if (loadLazyData) {\r\n this.emitLazyLoading();\r\n }\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n resetTableSettings() {\r\n this.showTable = false;\r\n this.changeDetectorRef.markForCheck();\r\n\r\n this.setNewEmptyLocalStorageData();\r\n this.updateDataToLocalStorage();\r\n this.emitLazyLoading();\r\n this.initFilters = {};\r\n this.initGlobalSearch = '';\r\n this.sort.sort({ id: '', start: 'asc', disableClear: false });\r\n\r\n setTimeout(() => {\r\n this.showTable = true;\r\n this.setDisplayedColumns();\r\n this.setInitTable();\r\n this.changeDetectorRef.markForCheck();\r\n }, 100);\r\n }\r\n\r\n editRow(row: any, column: ViewStMaterialTableColumnModel) {\r\n this.activeRowsEditing[row.id] = { ...row };\r\n }\r\n\r\n saveEditRow(row: any, column: ViewStMaterialTableColumnModel) {\r\n let allowSave = true;\r\n\r\n this.columns\r\n .filter(col => col.allowEditColumn)\r\n .forEach(col => {\r\n if (col.customEditRowValidator) {\r\n const result = col.customEditRowValidator(\r\n this.activeRowsEditing[row.id][col.field],\r\n row[col.field],\r\n row\r\n );\r\n if (!result.isValid) {\r\n allowSave = false;\r\n this.snackbar.error(result.errorMessage);\r\n }\r\n }\r\n });\r\n if (allowSave) {\r\n this.saveNewRow.emit(this.activeRowsEditing[row.id]);\r\n this.columns\r\n .filter(col => col.allowEditColumn)\r\n .forEach(col => {\r\n row[col.field] = this.activeRowsEditing[row.id][col.field];\r\n });\r\n this.changeDetectorRef.markForCheck();\r\n\r\n delete this.activeRowsEditing[row.id];\r\n }\r\n }\r\n\r\n cancelEditRow(row: any, column: ViewStMaterialTableColumnModel) {\r\n delete this.activeRowsEditing[row.id];\r\n }\r\n\r\n isAllSelected() {\r\n const numSelected = this.selection.selected.length;\r\n const numRows = this.tableSource.data.length;\r\n return numSelected === numRows;\r\n }\r\n\r\n toggleAllRows() {\r\n if (this.isAllSelected()) {\r\n this.selection.clear();\r\n return;\r\n }\r\n\r\n this.selection.select(...this.tableSource.data);\r\n\r\n this.selectRowChange.emit(this.selection.selected);\r\n }\r\n\r\n removeSelectedRow(row: any) {\r\n this.selection.deselect(row);\r\n this.selectRowChange.emit(this.selection.selected);\r\n }\r\n\r\n selectRowChanged(value: boolean, row: any) {\r\n if (value) {\r\n this.selection.select(row);\r\n } else {\r\n this.selection.deselect(row);\r\n }\r\n\r\n this.changeDetectorRef.markForCheck();\r\n this.selectRowChange.emit(this.selection.selected);\r\n }\r\n\r\n private createCustomFilterForLocalTable() {\r\n let filterFunction = (data: any, filter: string): boolean => {\r\n const searchTerms: { [column: string]: string; stGlobalSearch: string } =\r\n JSON.parse(filter);\r\n const searchTermsKeys = Object.keys(searchTerms);\r\n let searchOk = true;\r\n let searchOkGlobal = true;\r\n\r\n searchTermsKeys.forEach((key: string) => {\r\n if (\r\n key !== 'stGlobalSearch' &&\r\n this.selectedColumnsString.includes(key)\r\n ) {\r\n searchOk =\r\n searchOk &&\r\n data[key]\r\n .toString()\r\n .toLowerCase()\r\n .indexOf(searchTerms[key].toString().toLowerCase()) !== -1;\r\n }\r\n });\r\n if (searchTerms.stGlobalSearch) {\r\n searchOkGlobal = false;\r\n this.selectedColumnsString.forEach(col => {\r\n if (data[col]) {\r\n searchOkGlobal =\r\n searchOkGlobal ||\r\n data[col]\r\n .toString()\r\n .toLowerCase()\r\n .indexOf(\r\n searchTerms.stGlobalSearch.toString().toLowerCase()\r\n ) !== -1;\r\n }\r\n });\r\n }\r\n\r\n return searchOk && searchOkGlobal;\r\n };\r\n return filterFunction;\r\n }\r\n\r\n private emitLazyLoading() {\r\n if (this.lazyLoading()) {\r\n this.loadData.emit({\r\n first: this.paginator.pageIndex * this.paginator.pageSize,\r\n rows: this.paginator.pageSize,\r\n globalFilter: this.localStorageData.globalSearch,\r\n sortField: this.localStorageData.sortField,\r\n sortOrder: this.localStorageData.sortOrder,\r\n filters: this.localStorageData.filters,\r\n });\r\n } else {\r\n this.tableSource.filter = JSON.stringify({\r\n ...this.localStorageData.filters,\r\n stGlobalSearch: this.localStorageData.globalSearch,\r\n });\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n private updateDataToLocalStorage() {\r\n if (this.localStorageName()) {\r\n localStorage.setItem(\r\n this.localStorageName()!,\r\n JSON.stringify(this.localStorageData)\r\n );\r\n }\r\n }\r\n\r\n private setInitTable() {\r\n this.tableSource = new MatTableDataSource(this._data);\r\n\r\n this.paginator.pageSize = this.localStorageData.pageSize;\r\n this.paginator.pageIndex = this.localStorageData.pageIndex;\r\n\r\n if (this.localStorageData.sortField && this.localStorageData.sortOrder) {\r\n const disableClear = false;\r\n this.sort.sort({ id: '', start: 'asc', disableClear });\r\n this.sort.sort({\r\n id: this.localStorageData.sortField,\r\n start: this.localStorageData.sortOrder,\r\n disableClear,\r\n });\r\n }\r\n\r\n if (!this.lazyLoading()!) {\r\n this.tableSource.paginator = this.paginator;\r\n this.tableSource.sort = this.sort;\r\n this.tableSource.filterPredicate = this.createCustomFilterForLocalTable();\r\n }\r\n\r\n this.emitLazyLoading();\r\n }\r\n\r\n private setSortPageSubscription() {\r\n this.sort.sortChange\r\n .pipe(\r\n takeUntil(this.ngDestroyed$),\r\n distinctUntilChanged(\r\n (prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)\r\n )\r\n )\r\n .subscribe(res => {\r\n this.localStorageData = {\r\n ...this.localStorageData,\r\n sortField: res.active,\r\n sortOrder: res.direction,\r\n };\r\n this.updateDataToLocalStorage();\r\n this.emitLazyLoading();\r\n });\r\n\r\n this.paginator.page\r\n .pipe(\r\n takeUntil(this.ngDestroyed$),\r\n distinctUntilChanged(\r\n (prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)\r\n )\r\n )\r\n .subscribe(res => {\r\n this.localStorageData = {\r\n ...this.localStorageData,\r\n pageIndex: this.paginator.pageIndex,\r\n pageSize: this.paginator.pageSize,\r\n };\r\n\r\n this.updateDataToLocalStorage();\r\n this.emitLazyLoading();\r\n });\r\n }\r\n\r\n private setDisplayedColumns() {\r\n this.columns = this.initColumns().map(col => {\r\n return {\r\n ...col,\r\n type: col.type ? col.type : 'string',\r\n visible: true,\r\n expanded: true,\r\n isEditing: false,\r\n };\r\n });\r\n\r\n this.setColumnsOrder();\r\n this.setColumnsVisible();\r\n this.setSelectedColumns();\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n private setColumnsOrder() {\r\n if (this.localStorageData?.columnsOrder) {\r\n this.columns = [\r\n ...this.localStorageData.columnsOrder\r\n .filter(column => this.columns.find(col => col.field === column))\r\n .map(column => this.columns.find(col => col.field === column)!),\r\n ...this.columns.filter(\r\n column => !this.localStorageData.columnsOrder.includes(column.field)\r\n ),\r\n ];\r\n }\r\n }\r\n\r\n private setColumnsVisible() {\r\n if (this.localStorageData?.selectedColumns) {\r\n this.columns = this.columns.map(col => {\r\n return {\r\n ...col,\r\n visible:\r\n this.localStorageData.selectedColumns.includes(col.field) ||\r\n !this.localStorageData.columnsOrder.includes(col.field),\r\n };\r\n });\r\n }\r\n }\r\n\r\n private setSelectedColumns() {\r\n this.selectedColumns = this.columns.filter(col => {\r\n return col.visible;\r\n });\r\n this.selectedColumnsString = this.selectedColumns.map(col => col.field);\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n private loadLocalStorageData() {\r\n if (this.localStorageName()) {\r\n const localStorageData = localStorage.getItem(this.localStorageName()!);\r\n\r\n if (localStorageData) {\r\n this.localStorageData = JSON.parse(localStorageData);\r\n this.initFilters = this.localStorageData.filters || {};\r\n this.initGlobalSearch = this.localStorageData.globalSearch;\r\n } else {\r\n this.setNewEmptyLocalStorageData();\r\n }\r\n } else {\r\n this.setNewEmptyLocalStorageData();\r\n }\r\n }\r\n\r\n private setNewEmptyLocalStorageData() {\r\n this.localStorageData = {\r\n pageSize: this.pageSize(),\r\n pageIndex: 0,\r\n selectedColumns: this.initColumns().map(col => col.field),\r\n globalSearch: '',\r\n columnsOrder: this.initColumns().map(col => col.field),\r\n filters: {},\r\n sortField: '',\r\n sortOrder: 'asc',\r\n };\r\n }\r\n}\r\n\r\nexport interface StMaterialTableLoadData {\r\n first: number;\r\n rows: number;\r\n globalFilter: string;\r\n sortField: string;\r\n sortOrder: SortDirection;\r\n filters: { [key: string]: string };\r\n}\r\n\r\nexport interface StMaterialTableLocalStorage extends ICaptionDataChanged {\r\n pageSize: number;\r\n pageIndex: number;\r\n sortField: string;\r\n sortOrder: SortDirection;\r\n}\r\n","<div class=\"st-material-table\">\r\n @if (isLoading()) {\r\n <div class=\"loading-spinner\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n }\r\n\r\n @if (showTable) {\r\n <st-material-table-caption\r\n [tableTitle]=\"tableTitle()\"\r\n [allowPickColumns]=\"allowPickColumns()\"\r\n [showGlobalSearch]=\"showGlobalSearch()\"\r\n [allowReorderColumns]=\"allowReorderColumns()\"\r\n [columns]=\"columns\"\r\n [initFilters]=\"initFilters\"\r\n [initGlobalSearch]=\"initGlobalSearch\"\r\n (captionDataChanged)=\"captionDataChanged($event)\"\r\n (resetTableSettings)=\"resetTableSettings()\"\r\n ></st-material-table-caption>\r\n }\r\n\r\n <table\r\n [ngClass]=\"{ 'no-hover': !rowClickAction() }\"\r\n mat-table\r\n [dataSource]=\"tableSource\"\r\n matSort\r\n >\r\n @for (column of selectedColumns; track column) {\r\n <ng-container [matColumnDef]=\"column.field\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"{{ column.width ? 'width:' + column.width : '' }}\"\r\n mat-sort-header\r\n [disabled]=\"!column.sort\"\r\n >\r\n @if (column.type === 'actions-row-selecting') {\r\n <mat-checkbox\r\n color=\"primary\"\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\r\n >\r\n </mat-checkbox>\r\n } @else {\r\n {{ column.header }}\r\n }\r\n </th>\r\n <td\r\n mat-cell\r\n *matCellDef=\"let element\"\r\n style=\"{{ column.width ? 'width:' + column.width : '' }}\"\r\n >\r\n <st-material-table-row-cell\r\n [column]=\"column\"\r\n [rowData]=\"element\"\r\n [rowDataCopy]=\"activeRowsEditing[element.id]\"\r\n [rowEditing]=\"!!activeRowsEditing[element.id]\"\r\n [rowIsSelected]=\"selection.isSelected(element)\"\r\n (editRowEmitter)=\"editRow(element, column)\"\r\n (saveEditRowEmitter)=\"saveEditRow(element, column)\"\r\n (cancelEditRowEmitter)=\"cancelEditRow(element, column)\"\r\n (selectRowChange)=\"selectRowChanged($event, element)\"\r\n ></st-material-table-row-cell>\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"selectedColumnsString\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: selectedColumnsString\"\r\n (click)=\"rowClickAction() ? rowClickAction()!(row) : null\"\r\n ></tr>\r\n </table>\r\n <mat-paginator\r\n [showFirstLastButtons]=\"true\"\r\n [pageSizeOptions]=\"[5, 10, 15, 20, 25]\"\r\n [length]=\"dataLength()\"\r\n ></mat-paginator>\r\n @if (rowSelecting()) {\r\n <div class=\"st-material-table-selected-rows\">\r\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">\r\n {{ selection.selected.length }}\r\n {{ stTableTranslations.getTranslations()().rowSelected }}\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n @for (row of selection.selected; track row) {\r\n <button mat-menu-item (click)=\"removeSelectedRow(row)\">\r\n <div class=\"d-flex\">\r\n {{ row[selectionFieldLabel()]\r\n }}<mat-icon style=\"margin-right: 0; margin-left: 10px\"\r\n >delete</mat-icon\r\n >\r\n </div>\r\n </button>\r\n }\r\n </mat-menu>\r\n </div>\r\n }\r\n</div>\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { StDateFormatModule } from 'ngx-st-date-format';\r\nimport { MaterialTableComponent } from './components/material-table/material-table.component';\r\nimport { MaterialTableCaptionComponent } from './components/material-table/material-table-caption/material-table-caption.component';\r\nimport { MatBadge } from '@angular/material/badge';\r\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\r\nimport { StBaseFunctionsModule } from 'ngx-st-base-functions';\r\nimport { MaterialTableOrderColumnDialogComponent } from './components/material-table/material-table-caption/material-table-order-column-dialog/material-table-order-column-dialog.component';\r\nimport { MaterialTableFilterDialogComponent } from './components/material-table/material-table-caption/material-table-filter-dialog/material-table-filter-dialog.component';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { CdkDrag, CdkDropList } from '@angular/cdk/drag-drop';\r\nimport { MaterialTableRowCellComponent } from './components/material-table/material-table-row-cell/material-table-row-cell.component';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { PrimeTemplate } from 'primeng/api';\r\nimport { StQtyInputModule } from 'ngx-st-qty-input';\r\nimport { TableModule } from 'primeng/table';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { StSnackBarModule } from 'ngx-st-snack-bar';\r\nimport { StTablesTranslationsModel } from './models/st-tables-translations.model';\r\nimport { SelectTableComponent } from './components/select-table/select-table.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n MaterialTableCaptionComponent,\r\n MaterialTableComponent,\r\n MaterialTableOrderColumnDialogComponent,\r\n MaterialTableFilterDialogComponent,\r\n MaterialTableRowCellComponent,\r\n SelectTableComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatTableModule,\r\n MatPaginatorModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n StDateFormatModule,\r\n MatSortModule,\r\n MatMenuModule,\r\n MatSelectModule,\r\n MatCheckboxModule,\r\n MatBadge,\r\n MatProgressSpinner,\r\n StBaseFunctionsModule,\r\n MatDialogModule,\r\n MatExpansionModule,\r\n CdkDropList,\r\n CdkDrag,\r\n InputTextModule,\r\n PrimeTemplate,\r\n StQtyInputModule,\r\n TableModule,\r\n MatDatepickerModule,\r\n MatSlideToggleModule,\r\n MatNativeDateModule,\r\n StSnackBarModule,\r\n ],\r\n exports: [MaterialTableComponent, SelectTableComponent],\r\n providers: [MatDatepickerModule],\r\n})\r\nexport class StTablesModule {\r\n constructor(private matIconRegistry: MatIconRegistry) {\r\n this.matIconRegistry.setDefaultFontSetClass('material-symbols-outlined');\r\n }\r\n\r\n static forRoot(config?: {\r\n translations?: Partial<StTablesTranslationsModel>;\r\n }): ModuleWithProviders<StTablesModule> {\r\n return {\r\n ngModule: StTablesModule,\r\n providers: [\r\n {\r\n provide: 'ST_TABLES_CONFIG',\r\n useValue: config || {},\r\n },\r\n ],\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-st-tables\r\n */\r\n\r\nexport * from './lib/services/st-tables-translations.service';\r\nexport * from './lib/components/select-table/select-table.component';\r\nexport * from './lib/components/material-table/material-table-caption/material-table-caption.component';\r\nexport * from './lib/components/material-table/material-table.component';\r\nexport * from './lib/models/st-material-table-column.model';\r\nexport * from './lib/models/st-tables-translations.model';\r\nexport * from './lib/ngx-st-tables.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i5","i7","i1","i3.StTablesTranslationsService","i4","i6","i8","i10","i2.StTablesTranslationsService","i3","i1.StTablesTranslationsService","i9","i11","i12.MaterialTableCaptionComponent","i13.MaterialTableRowCellComponent"],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ export declare class MaterialTableComponent extends StSubscribeDestroyComponent
|
|
|
25
25
|
localStorageName: import("@angular/core").InputSignal<string>;
|
|
26
26
|
lazyLoading: import("@angular/core").InputSignal<boolean>;
|
|
27
27
|
isLoading: import("@angular/core").InputSignal<boolean>;
|
|
28
|
-
initColumns: import("@angular/core").
|
|
28
|
+
initColumns: import("@angular/core").ModelSignal<StMaterialTableColumnModel[]>;
|
|
29
29
|
rowClickAction: import("@angular/core").InputSignal<((row: any) => void) | undefined>;
|
|
30
30
|
set data(data: any[]);
|
|
31
31
|
get data(): any[];
|
|
@@ -76,7 +76,7 @@ export declare class MaterialTableComponent extends StSubscribeDestroyComponent
|
|
|
76
76
|
private loadLocalStorageData;
|
|
77
77
|
private setNewEmptyLocalStorageData;
|
|
78
78
|
static ɵfac: i0.ɵɵFactoryDeclaration<MaterialTableComponent, never>;
|
|
79
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MaterialTableComponent, "ngx-st-material-table", never, { "showGlobalSearch": { "alias": "showGlobalSearch"; "required": false; "isSignal": true; }; "tableTitle": { "alias": "tableTitle"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "dataLength": { "alias": "dataLength"; "required": false; "isSignal": true; }; "allowPickColumns": { "alias": "allowPickColumns"; "required": false; "isSignal": true; }; "allowReorderColumns": { "alias": "allowReorderColumns"; "required": false; "isSignal": true; }; "localStorageName": { "alias": "localStorageName"; "required": false; "isSignal": true; }; "lazyLoading": { "alias": "lazyLoading"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "initColumns": { "alias": "initColumns"; "required": false; "isSignal": true; }; "rowClickAction": { "alias": "rowClickAction"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; }; "rowEditing": { "alias": "rowEditing"; "required": false; "isSignal": true; }; "rowSelecting": { "alias": "rowSelecting"; "required": false; "isSignal": true; }; "selectionFieldLabel": { "alias": "selectionFieldLabel"; "required": false; "isSignal": true; }; }, { "loadData": "loadData"; "saveNewRow": "saveNewRow"; "selectRowChange": "selectRowChange"; }, never, never, false, never>;
|
|
79
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MaterialTableComponent, "ngx-st-material-table", never, { "showGlobalSearch": { "alias": "showGlobalSearch"; "required": false; "isSignal": true; }; "tableTitle": { "alias": "tableTitle"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "dataLength": { "alias": "dataLength"; "required": false; "isSignal": true; }; "allowPickColumns": { "alias": "allowPickColumns"; "required": false; "isSignal": true; }; "allowReorderColumns": { "alias": "allowReorderColumns"; "required": false; "isSignal": true; }; "localStorageName": { "alias": "localStorageName"; "required": false; "isSignal": true; }; "lazyLoading": { "alias": "lazyLoading"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "initColumns": { "alias": "initColumns"; "required": false; "isSignal": true; }; "rowClickAction": { "alias": "rowClickAction"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; }; "rowEditing": { "alias": "rowEditing"; "required": false; "isSignal": true; }; "rowSelecting": { "alias": "rowSelecting"; "required": false; "isSignal": true; }; "selectionFieldLabel": { "alias": "selectionFieldLabel"; "required": false; "isSignal": true; }; }, { "initColumns": "initColumnsChange"; "loadData": "loadData"; "saveNewRow": "saveNewRow"; "selectRowChange": "selectRowChange"; }, never, never, false, never>;
|
|
80
80
|
}
|
|
81
81
|
export interface StMaterialTableLoadData {
|
|
82
82
|
first: number;
|