@skyux/ag-grid 5.2.0 → 5.2.1
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.
|
@@ -1416,18 +1416,17 @@
|
|
|
1416
1416
|
_this.changeDetector.markForCheck();
|
|
1417
1417
|
});
|
|
1418
1418
|
agGrid.sortChanged.pipe(operators.takeUntil(this.ngUnsubscribe)).subscribe(function () {
|
|
1419
|
-
var
|
|
1419
|
+
var gridColumnStates = agGrid.columnApi.getColumnState();
|
|
1420
1420
|
var sortOption;
|
|
1421
1421
|
/* istanbul ignore else */
|
|
1422
|
-
if (
|
|
1423
|
-
var
|
|
1424
|
-
var activeSortColumn_1 = agGrid.columnApi.getColumn(activeSortModel_1.colId);
|
|
1422
|
+
if (gridColumnStates.length) {
|
|
1423
|
+
var activeSortColumnState_1 = gridColumnStates.find(function (aGridColumnState) { return aGridColumnState.sortIndex === 0; });
|
|
1425
1424
|
var dataManagerConfig = _this.dataManagerSvc.getCurrentDataManagerConfig();
|
|
1426
1425
|
/* istanbul ignore else */
|
|
1427
|
-
if (dataManagerConfig.sortOptions) {
|
|
1426
|
+
if (dataManagerConfig.sortOptions && activeSortColumnState_1) {
|
|
1428
1427
|
sortOption = dataManagerConfig.sortOptions.find(function (option) {
|
|
1429
|
-
return (option.propertyName ===
|
|
1430
|
-
option.descending === (
|
|
1428
|
+
return (option.propertyName === activeSortColumnState_1.colId &&
|
|
1429
|
+
option.descending === (activeSortColumnState_1.sort === 'desc'));
|
|
1431
1430
|
});
|
|
1432
1431
|
}
|
|
1433
1432
|
else {
|
package/documentation.json
CHANGED
|
@@ -747,22 +747,32 @@
|
|
|
747
747
|
{
|
|
748
748
|
"fileName": "data-manager-data-entry-grid-docs-demo-filter-modal.component.ts",
|
|
749
749
|
"filePath": "/projects/ag-grid/documentation/code-examples/data-entry-grid/data-manager-added/data-manager-data-entry-grid-docs-demo-filter-modal.component.ts",
|
|
750
|
-
"rawContents": "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n} from '@angular/core';\nimport {\n SkyDataManagerFilterData,\n SkyDataManagerFilterModalContext,\n} from '@skyux/data-manager';\nimport { SkyModalInstance } from '@skyux/modals';\n\n@Component({\n selector: 'app-data-manager-data-entry-grid-docs-demo-filter-modal',\n templateUrl:\n './data-manager-data-entry-grid-docs-demo-filter-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataManagerDataEntryGridDocsDemoFiltersModalComponent {\n public jobTitle: string = '';\n\n public hideSales: boolean = false;\n\n constructor(\n public context: SkyDataManagerFilterModalContext,\n public instance: SkyModalInstance,\n private changeDetector: ChangeDetectorRef\n ) {\n if (this.context.filterData && this.context.filterData.filters) {\n let filters = this.context.filterData.filters;\n this.jobTitle = filters.jobTitle
|
|
750
|
+
"rawContents": "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n} from '@angular/core';\nimport {\n SkyDataManagerFilterData,\n SkyDataManagerFilterModalContext,\n} from '@skyux/data-manager';\nimport { SkyModalInstance } from '@skyux/modals';\n\n@Component({\n selector: 'app-data-manager-data-entry-grid-docs-demo-filter-modal',\n templateUrl:\n './data-manager-data-entry-grid-docs-demo-filter-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataManagerDataEntryGridDocsDemoFiltersModalComponent {\n public jobTitle: string = '';\n\n public hideSales: boolean = false;\n\n constructor(\n public context: SkyDataManagerFilterModalContext,\n public instance: SkyModalInstance,\n private changeDetector: ChangeDetectorRef\n ) {\n if (this.context.filterData && this.context.filterData.filters) {\n let filters = this.context.filterData.filters;\n this.jobTitle = filters.jobTitle || 'any';\n this.hideSales = filters.hideSales || false;\n }\n this.changeDetector.markForCheck();\n }\n\n public applyFilters() {\n let result: SkyDataManagerFilterData = {};\n\n result.filtersApplied = this.jobTitle !== 'any' || this.hideSales;\n result.filters = {\n jobTitle: this.jobTitle,\n hideSales: this.hideSales,\n };\n this.changeDetector.markForCheck();\n\n this.instance.save(result);\n }\n\n public clearAllFilters() {\n this.hideSales = false;\n this.jobTitle = 'any';\n this.changeDetector.markForCheck();\n }\n\n public cancel() {\n this.instance.cancel();\n }\n}\n"
|
|
751
|
+
},
|
|
752
|
+
{
|
|
753
|
+
"fileName": "data-manager-data-entry-grid-docs-demo-view-grid.component.html",
|
|
754
|
+
"filePath": "/projects/ag-grid/documentation/code-examples/data-entry-grid/data-manager-added/data-manager-data-entry-grid-docs-demo-view-grid.component.html",
|
|
755
|
+
"rawContents": "<sky-data-view skyAgGridDataManagerAdapter [viewId]=\"viewConfig.id\">\n <sky-ag-grid-wrapper *ngIf=\"isActive && gridInitialized\">\n <ag-grid-angular\n [gridOptions]=\"gridOptions\"\n [rowData]=\"displayedItems\"\n [overlayNoRowsTemplate]=\"noRowsTemplate\"\n (rowSelected)=\"onRowSelected($event)\"\n >\n </ag-grid-angular>\n </sky-ag-grid-wrapper>\n</sky-data-view>\n"
|
|
756
|
+
},
|
|
757
|
+
{
|
|
758
|
+
"fileName": "data-manager-data-entry-grid-docs-demo-view-grid.component.ts",
|
|
759
|
+
"filePath": "/projects/ag-grid/documentation/code-examples/data-entry-grid/data-manager-added/data-manager-data-entry-grid-docs-demo-view-grid.component.ts",
|
|
760
|
+
"rawContents": "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { SkyAgGridService, SkyCellType } from '@skyux/ag-grid';\nimport {\n SkyDataManagerState,\n SkyDataViewConfig,\n SkyDataManagerService,\n} from '@skyux/data-manager';\n\nimport {\n ColDef,\n ColumnApi,\n GridApi,\n GridOptions,\n GridReadyEvent,\n RowSelectedEvent,\n ValueFormatterParams,\n} from 'ag-grid-community';\n\n@Component({\n selector: 'app-data-manager-data-entry-grid-docs-demo-view-grid',\n templateUrl:\n './data-manager-data-entry-grid-docs-demo-view-grid.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataManagerDataEntryGridDocsDemoViewGridComponent\n implements OnInit\n{\n @Input()\n public set items(value: any[]) {\n this._items = value;\n this.changeDetector.markForCheck();\n if (this.gridApi) {\n this.gridApi.refreshCells();\n }\n }\n\n public viewId = 'dataEntryGridWithDataManagerView';\n\n public columnDefs: ColDef[] = [\n {\n field: 'selected',\n type: SkyCellType.RowSelector,\n },\n {\n field: 'name',\n headerName: 'Name',\n },\n {\n field: 'age',\n headerName: 'Age',\n type: SkyCellType.Number,\n maxWidth: 60,\n },\n {\n field: 'startDate',\n headerName: 'Start date',\n type: SkyCellType.Date,\n sort: 'asc',\n },\n {\n field: 'endDate',\n headerName: 'End date',\n type: SkyCellType.Date,\n valueFormatter: this.endDateFormatter,\n },\n {\n field: 'department',\n headerName: 'Department',\n type: SkyCellType.Autocomplete,\n },\n {\n field: 'jobTitle',\n headerName: 'Title',\n type: SkyCellType.Autocomplete,\n },\n {\n field: 'validationCurrency',\n headerName: 'Validation currency',\n type: [SkyCellType.CurrencyValidator],\n },\n {\n field: 'validationDate',\n headerName: 'Validation date',\n type: [SkyCellType.Date, SkyCellType.Validator],\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value: Date) => !!value && value > new Date(1985, 9, 26),\n validatorMessage: 'Please enter a future date',\n },\n },\n },\n ];\n\n public dataState = new SkyDataManagerState({});\n\n public columnApi?: ColumnApi;\n public displayedItems: any[] = [];\n public gridApi?: GridApi;\n public gridInitialized = false;\n public gridOptions!: GridOptions;\n public noRowsTemplate: string;\n public isActive: boolean = false;\n\n public viewConfig: SkyDataViewConfig = {\n id: this.viewId,\n name: 'Data Grid View',\n icon: 'table',\n searchEnabled: true,\n sortEnabled: true,\n multiselectToolbarEnabled: true,\n columnPickerEnabled: true,\n filterButtonEnabled: true,\n columnOptions: [\n {\n id: 'selected',\n label: 'selected',\n alwaysDisplayed: true,\n },\n {\n id: 'name',\n label: 'Name',\n description: 'The name of the employee.',\n },\n {\n id: 'age',\n label: 'Age',\n description: 'The age of the employee.',\n },\n {\n id: 'startDate',\n label: 'Start date',\n description: 'The start date of the employee.',\n },\n {\n id: 'endDate',\n label: 'End date',\n description: 'The end date of the employee.',\n },\n {\n id: 'department',\n label: 'Department',\n description: 'The department of the employee',\n },\n {\n id: 'jobTitle',\n label: 'Title',\n description: 'The job title of the employee.',\n },\n {\n id: 'validationCurrency',\n label: 'Validation currency',\n description: 'An example column for currency validation.',\n },\n {\n id: 'validationDate',\n label: 'Validation date',\n description: 'An example column for date validation.',\n },\n ],\n };\n\n private _items: any[] = [];\n\n constructor(\n private agGridService: SkyAgGridService,\n private changeDetector: ChangeDetectorRef,\n private dataManagerService: SkyDataManagerService\n ) {\n this.noRowsTemplate = `<div class=\"sky-deemphasized\">No results found.</div>`;\n }\n\n public ngOnInit(): void {\n this.displayedItems = this._items;\n\n this.dataManagerService.initDataView(this.viewConfig);\n\n this.gridOptions = this.agGridService.getGridOptions({\n gridOptions: {\n columnDefs: this.columnDefs,\n onGridReady: this.onGridReady.bind(this),\n },\n });\n\n this.dataManagerService\n .getDataStateUpdates(this.viewId)\n .subscribe((state) => {\n this.dataState = state;\n this.setInitialColumnOrder();\n this.updateData();\n this.changeDetector.detectChanges();\n });\n\n this.dataManagerService.getActiveViewIdUpdates().subscribe((id) => {\n this.isActive = id === this.viewId;\n this.changeDetector.detectChanges();\n });\n }\n\n public updateData(): void {\n this.sortItems();\n this.displayedItems = this.filterItems(this.searchItems(this._items));\n\n if (this.dataState.onlyShowSelected) {\n this.displayedItems = this.displayedItems.filter((item) => item.selected);\n }\n\n if (this.displayedItems.length > 0) {\n this.gridApi?.hideOverlay();\n } else {\n this.gridApi?.showNoRowsOverlay();\n }\n\n this.changeDetector.markForCheck();\n }\n\n public setInitialColumnOrder(): void {\n let viewState = this.dataState.getViewStateById(this.viewId);\n let visibleColumns = viewState.displayedColumnIds;\n\n this.columnDefs.sort((col1, col2) => {\n let col1Index = visibleColumns.findIndex(\n (colId: string) => colId === col1.colId\n );\n let col2Index = visibleColumns.findIndex(\n (colId: string) => colId === col2.colId\n );\n\n if (col1Index === -1) {\n col1.hide = true;\n return 0;\n } else if (col2Index === -1) {\n col2.hide = true;\n return 0;\n } else {\n return col1Index - col2Index;\n }\n });\n\n this.gridInitialized = true;\n this.changeDetector.markForCheck();\n }\n\n public onGridReady(gridReadyEvent: GridReadyEvent): void {\n this.gridApi = gridReadyEvent.api;\n this.gridApi.sizeColumnsToFit();\n this.columnApi = gridReadyEvent.columnApi;\n this.updateData();\n this.changeDetector.markForCheck();\n }\n\n public onRowSelected(rowSelectedEvent: RowSelectedEvent): void {\n if (!rowSelectedEvent.data.selected) {\n this.updateData();\n }\n }\n\n public sortItems(): void {\n let sortOption = this.dataState.activeSortOption;\n if (this.columnApi && sortOption) {\n this.columnApi.applyColumnState({\n state: [\n {\n colId: sortOption.propertyName,\n sort: sortOption.descending ? 'desc' : 'asc',\n },\n ],\n });\n }\n }\n\n public searchItems(items: any[]): any[] {\n let searchedItems = items;\n let searchText = this.dataState && this.dataState.searchText;\n\n if (searchText) {\n searchedItems = items.filter(function (item: any) {\n let property: any;\n\n for (property in item) {\n if (\n item.hasOwnProperty(property) &&\n (property === 'name' || property === 'description')\n ) {\n const propertyText = item[property].toLowerCase();\n if (propertyText.indexOf(searchText) > -1) {\n return true;\n }\n }\n }\n\n return false;\n });\n }\n\n return searchedItems;\n }\n\n public filterItems(items: any[]): any[] {\n let filteredItems = items;\n let filterData = this.dataState && this.dataState.filterData;\n\n if (filterData && filterData.filters) {\n let filters = filterData.filters;\n filteredItems = items.filter((item: any) => {\n return (\n ((filters.hideSales && item.department.name !== 'Sales') ||\n !filters.hideSales) &&\n ((filters.jobTitle !== 'any' &&\n item.jobTitle?.name === filters.jobTitle) ||\n !filters.jobTitle ||\n filters.jobTitle === 'any')\n );\n });\n }\n\n return filteredItems;\n }\n\n private endDateFormatter(params: ValueFormatterParams): string {\n const dateConfig = { year: 'numeric', month: '2-digit', day: '2-digit' };\n return params.value\n ? params.value.toLocaleDateString('en-us', dateConfig)\n : 'N/A';\n }\n}\n"
|
|
751
761
|
},
|
|
752
762
|
{
|
|
753
763
|
"fileName": "data-manager-data-entry-grid-docs-demo.component.html",
|
|
754
764
|
"filePath": "/projects/ag-grid/documentation/code-examples/data-entry-grid/data-manager-added/data-manager-data-entry-grid-docs-demo.component.html",
|
|
755
|
-
"rawContents": "<sky-data-manager>\n <sky-data-manager-toolbar>\n <sky-data-manager-toolbar-left-item>\n <button\n class=\"sky-btn sky-btn-primary\"\n id=\"edit-btn\"\n (click)=\"openModal()\"\n >\n Edit\n </button>\n </sky-data-manager-toolbar-left-item>\n </sky-data-manager-toolbar>\n <
|
|
765
|
+
"rawContents": "<sky-data-manager>\n <sky-data-manager-toolbar>\n <sky-data-manager-toolbar-left-item>\n <button\n class=\"sky-btn sky-btn-primary\"\n id=\"edit-btn\"\n (click)=\"openModal()\"\n >\n Edit\n </button>\n </sky-data-manager-toolbar-left-item>\n </sky-data-manager-toolbar>\n <app-data-manager-data-entry-grid-docs-demo-view-grid\n [items]=\"items\"\n ></app-data-manager-data-entry-grid-docs-demo-view-grid>\n</sky-data-manager>\n"
|
|
756
766
|
},
|
|
757
767
|
{
|
|
758
768
|
"fileName": "data-manager-data-entry-grid-docs-demo.component.ts",
|
|
759
769
|
"filePath": "/projects/ag-grid/documentation/code-examples/data-entry-grid/data-manager-added/data-manager-data-entry-grid-docs-demo.component.ts",
|
|
760
|
-
"rawContents": "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { SkyAgGridService, SkyCellType } from '@skyux/ag-grid';\n\nimport {\n ColDef,\n ColumnApi,\n GridApi,\n GridOptions,\n GridReadyEvent,\n ValueFormatterParams,\n} from 'ag-grid-community';\n\nimport {\n SkyDataManagerState,\n SkyDataViewConfig,\n SkyDataManagerService,\n} from '@skyux/data-manager';\n\nimport { SkyDataManagerDataEntryGridContextMenuComponent } from './data-manager-data-entry-grid-docs-demo-context-menu.component';\nimport { SKY_AG_GRID_DEMO_DATA } from './data-manager-data-entry-grid-docs-demo-data';\nimport { SkyDataEntryGridEditModalContext } from './data-manager-data-entry-grid-docs-demo-edit-modal-context';\nimport { SkyDataManagerDataEntryGridEditModalComponent } from './data-manager-data-entry-grid-docs-demo-edit-modal.component';\nimport { SkyModalCloseArgs, SkyModalService } from '@skyux/modals';\nimport { DataManagerDataEntryGridDocsDemoFiltersModalComponent } from './data-manager-data-entry-grid-docs-demo-filter-modal.component';\n\n@Component({\n selector: 'app-data-manager-data-entry-grid-docs-demo',\n templateUrl: './data-manager-data-entry-grid-docs-demo.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [SkyDataManagerService],\n})\nexport class SkyDataManagerDataEntryGridDemoComponent implements OnInit {\n public columnDefs: ColDef[] = [\n {\n field: 'selected',\n type: SkyCellType.RowSelector,\n },\n {\n field: 'context',\n headerName: '',\n maxWidth: 50,\n sortable: false,\n cellRendererFramework: SkyDataManagerDataEntryGridContextMenuComponent,\n },\n {\n field: 'name',\n headerName: 'Name',\n },\n {\n field: 'age',\n headerName: 'Age',\n type: SkyCellType.Number,\n maxWidth: 60,\n },\n {\n field: 'startDate',\n headerName: 'Start date',\n type: SkyCellType.Date,\n sort: 'asc',\n },\n {\n field: 'endDate',\n headerName: 'End date',\n type: SkyCellType.Date,\n valueFormatter: this.endDateFormatter,\n },\n {\n field: 'department',\n headerName: 'Department',\n type: SkyCellType.Autocomplete,\n },\n {\n field: 'jobTitle',\n headerName: 'Title',\n type: SkyCellType.Autocomplete,\n },\n {\n field: 'validationCurrency',\n headerName: 'Validation currency',\n type: [SkyCellType.CurrencyValidator],\n },\n {\n field: 'validationDate',\n headerName: 'Validation date',\n type: [SkyCellType.Date, SkyCellType.Validator],\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value: Date) => !!value && value > new Date(1985, 9, 26),\n validatorMessage: 'Please enter a future date',\n },\n },\n },\n ];\n public columnApi?: ColumnApi;\n public displayedItems: any[] = [];\n public gridData = SKY_AG_GRID_DEMO_DATA;\n\n public viewId = 'gridView';\n public activeViewId = 'gridView';\n\n public dataState = new SkyDataManagerState({});\n\n public viewConfig: SkyDataViewConfig = {\n id: this.viewId,\n name: 'Grid View',\n icon: 'table',\n searchEnabled: true,\n sortEnabled: true,\n multiselectToolbarEnabled: true,\n columnPickerEnabled: true,\n filterButtonEnabled: true,\n columnOptions: [\n {\n id: 'selected',\n label: 'selected',\n alwaysDisplayed: true,\n },\n\n {\n id: 'context',\n label: 'context',\n alwaysDisplayed: true,\n },\n {\n id: 'name',\n label: 'Name',\n description: 'The name of the employee.',\n },\n {\n id: 'age',\n label: 'Age',\n description: 'The age of the employee.',\n },\n {\n id: 'startDate',\n label: 'Start date',\n description: 'The start date of the employee.',\n },\n {\n id: 'endDate',\n label: 'End date',\n description: 'The end date of the employee.',\n },\n {\n id: 'department',\n label: 'Department',\n description: 'The department of the employee',\n },\n {\n id: 'jobTitle',\n label: 'Title',\n description: 'The job title of the employee.',\n },\n {\n id: 'validationCurrency',\n label: 'Validation currency',\n description: 'An example column for currency validation.',\n },\n {\n id: 'validationDate',\n label: 'Validation date',\n description: 'An example column for date validation.',\n },\n ],\n };\n\n public dataManagerConfig = {\n filterModalComponent: DataManagerDataEntryGridDocsDemoFiltersModalComponent,\n sortOptions: [\n {\n id: 'az',\n label: 'Name (A - Z)',\n descending: false,\n propertyName: 'name',\n },\n {\n id: 'za',\n label: 'Name (Z - A)',\n descending: true,\n propertyName: 'name',\n },\n ],\n };\n\n public defaultDataState = new SkyDataManagerState({\n filterData: {\n filtersApplied: false,\n filters: {\n hideSales: false,\n },\n },\n views: [\n {\n viewId: this.viewId,\n displayedColumnIds: [\n 'selected',\n 'name',\n 'age',\n 'startDate',\n 'endDate',\n 'department',\n 'jobTitle',\n 'validationCurrency',\n 'validationDate',\n ],\n },\n ],\n });\n\n public gridApi?: GridApi;\n public gridInitialized = false;\n public gridOptions!: GridOptions;\n public noRowsTemplate: string;\n\n constructor(\n private agGridService: SkyAgGridService,\n private changeDetector: ChangeDetectorRef,\n private dataManagerService: SkyDataManagerService,\n private modalService: SkyModalService\n ) {\n this.noRowsTemplate = `<div class=\"sky-deemphasized\">No results found.</div>`;\n this.dataManagerService\n .getDataStateUpdates(this.viewId)\n .subscribe((state) => {\n this.dataState = state;\n this.setInitialColumnOrder();\n this.updateData();\n this.changeDetector.markForCheck();\n });\n }\n\n public ngOnInit(): void {\n this.displayedItems = this.gridData;\n\n this.dataManagerService.initDataManager({\n activeViewId: this.activeViewId,\n dataManagerConfig: this.dataManagerConfig,\n defaultDataState: this.defaultDataState,\n });\n\n this.dataManagerService.initDataView(this.viewConfig);\n\n this.gridOptions = this.agGridService.getGridOptions({\n gridOptions: {\n columnDefs: this.columnDefs,\n onGridReady: this.onGridReady.bind(this),\n },\n });\n this.changeDetector.markForCheck();\n }\n\n public updateData(): void {\n this.sortItems();\n this.displayedItems = this.filterItems(this.searchItems(this.gridData));\n\n if (this.dataState.onlyShowSelected) {\n this.displayedItems = this.displayedItems.filter((item) => item.selected);\n }\n\n if (this.displayedItems.length > 0) {\n this.gridApi?.hideOverlay();\n } else {\n this.gridApi?.showNoRowsOverlay();\n }\n\n this.changeDetector.markForCheck();\n }\n\n public setInitialColumnOrder(): void {\n let viewState = this.dataState.getViewStateById(this.viewId);\n let visibleColumns = viewState.displayedColumnIds;\n\n this.columnDefs.sort((col1, col2) => {\n let col1Index = visibleColumns.findIndex(\n (colId: string) => colId === col1.colId\n );\n let col2Index = visibleColumns.findIndex(\n (colId: string) => colId === col2.colId\n );\n\n if (col1Index === -1) {\n col1.hide = true;\n return 0;\n } else if (col2Index === -1) {\n col2.hide = true;\n return 0;\n } else {\n return col1Index - col2Index;\n }\n });\n\n this.gridInitialized = true;\n this.changeDetector.markForCheck();\n }\n\n public onGridReady(event: GridReadyEvent): void {\n this.columnApi = event.columnApi;\n this.gridApi = event.api;\n this.gridApi.sizeColumnsToFit();\n this.updateData();\n this.changeDetector.markForCheck();\n }\n\n public sortItems(): void {\n let sortOption = this.dataState.activeSortOption;\n if (this.columnApi && sortOption) {\n const allColumns = this.columnApi.getAllColumns() || [];\n allColumns.forEach((column) => {\n if (column.getColId() === sortOption.propertyName) {\n column.setSort(sortOption.descending ? 'desc' : 'asc');\n } else {\n column.setSort('none');\n }\n });\n }\n }\n\n public clearAll(): void {\n if (this.dataState) {\n let selectedIds = this.dataState.selectedIds || [];\n\n this.displayedItems.forEach((item) => {\n if (item.selected) {\n let itemIndex = selectedIds.indexOf(item.id);\n item.selected = false;\n selectedIds.splice(itemIndex, 1);\n }\n });\n this.dataState.selectedIds = selectedIds;\n this.dataManagerService.updateDataState(this.dataState, this.viewId);\n }\n }\n\n public selectAll(): void {\n if (this.dataState) {\n let selectedIds = this.dataState.selectedIds || [];\n\n this.displayedItems.forEach((item) => {\n if (!item.selected) {\n item.selected = true;\n selectedIds.push(item.id);\n }\n });\n\n this.dataState.selectedIds = selectedIds;\n this.dataManagerService.updateDataState(this.dataState, this.viewId);\n }\n }\n\n public searchItems(items: any[]): any[] {\n let searchedItems = items;\n let searchText = this.dataState && this.dataState.searchText;\n\n if (searchText) {\n searchedItems = items.filter(function (item: any) {\n let property: any;\n\n for (property in item) {\n if (\n item.hasOwnProperty(property) &&\n (property === 'name' || property === 'description')\n ) {\n const propertyText = item[property].toLowerCase();\n if (propertyText.indexOf(searchText) > -1) {\n return true;\n }\n }\n }\n\n return false;\n });\n }\n return searchedItems;\n }\n\n public filterItems(items: any[]): any[] {\n let filteredItems = items;\n let filterData = this.dataState && this.dataState.filterData;\n\n if (filterData && filterData.filters) {\n let filters = filterData.filters;\n filteredItems = items.filter((item: any) => {\n return (\n ((filters.hideOrange && item.color !== 'orange') ||\n !filters.hideOrange) &&\n ((filters.type !== 'any' && item.type === filters.type) ||\n !filters.type ||\n filters.type === 'any')\n );\n });\n }\n\n return filteredItems;\n }\n\n public openModal(): void {\n const context = new SkyDataEntryGridEditModalContext();\n context.gridData = this.gridData;\n this.changeDetector.markForCheck();\n\n const options = {\n providers: [\n { provide: SkyDataEntryGridEditModalContext, useValue: context },\n ],\n ariaDescribedBy: 'docs-edit-grid-modal-content',\n size: 'large',\n };\n\n const modalInstance = this.modalService.open(\n SkyDataManagerDataEntryGridEditModalComponent,\n options\n );\n\n modalInstance.closed.subscribe((result: SkyModalCloseArgs) => {\n if (result.reason === 'cancel' || result.reason === 'close') {\n alert('Edits canceled!');\n } else {\n this.gridData = result.data;\n if (this.gridApi) {\n this.gridApi.refreshCells();\n }\n alert('Saving data!');\n }\n this.changeDetector.markForCheck();\n });\n }\n\n private endDateFormatter(params: ValueFormatterParams): string {\n const dateConfig = { year: 'numeric', month: '2-digit', day: '2-digit' };\n return params.value\n ? params.value.toLocaleDateString('en-us', dateConfig)\n : 'N/A';\n }\n}\n"
|
|
770
|
+
"rawContents": "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnInit,\n} from '@angular/core';\n\nimport {\n SkyDataManagerState,\n SkyDataViewConfig,\n SkyDataManagerService,\n} from '@skyux/data-manager';\n\nimport { SkyDataManagerDataEntryGridContextMenuComponent } from './data-manager-data-entry-grid-docs-demo-context-menu.component';\nimport { SKY_AG_GRID_DEMO_DATA } from './data-manager-data-entry-grid-docs-demo-data';\nimport { SkyDataEntryGridEditModalContext } from './data-manager-data-entry-grid-docs-demo-edit-modal-context';\nimport { SkyDataManagerDataEntryGridEditModalComponent } from './data-manager-data-entry-grid-docs-demo-edit-modal.component';\nimport { SkyModalCloseArgs, SkyModalService } from '@skyux/modals';\nimport { DataManagerDataEntryGridDocsDemoFiltersModalComponent } from './data-manager-data-entry-grid-docs-demo-filter-modal.component';\nimport { DataManagerDataEntryGridDocsDemoViewGridComponent } from './data-manager-data-entry-grid-docs-demo-view-grid.component';\n\n@Component({\n selector: 'app-data-manager-data-entry-grid-docs-demo',\n templateUrl: './data-manager-data-entry-grid-docs-demo.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [SkyDataManagerService],\n})\nexport class SkyDataManagerDataEntryGridDemoComponent implements OnInit {\n public items = SKY_AG_GRID_DEMO_DATA;\n\n public activeViewId = 'dataEntryGridWithDataManagerView';\n\n public dataState = new SkyDataManagerState({});\n\n public dataManagerConfig = {\n filterModalComponent: DataManagerDataEntryGridDocsDemoFiltersModalComponent,\n sortOptions: [\n {\n id: 'az',\n label: 'Name (A - Z)',\n descending: false,\n propertyName: 'name',\n },\n {\n id: 'za',\n label: 'Name (Z - A)',\n descending: true,\n propertyName: 'name',\n },\n ],\n };\n\n public defaultDataState = new SkyDataManagerState({\n filterData: {\n filtersApplied: false,\n filters: {\n hideSales: false,\n },\n },\n views: [\n {\n viewId: 'dataEntryGridWithDataManagerView',\n displayedColumnIds: [\n 'selected',\n 'name',\n 'age',\n 'startDate',\n 'endDate',\n 'department',\n 'jobTitle',\n 'validationCurrency',\n 'validationDate',\n ],\n },\n ],\n });\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private dataManagerService: SkyDataManagerService,\n private modalService: SkyModalService\n ) {\n this.dataManagerService\n .getDataStateUpdates('dataEntryGridDataManager')\n .subscribe((state) => {\n this.dataState = state;\n this.changeDetector.detectChanges();\n });\n this.dataManagerService\n .getActiveViewIdUpdates()\n .subscribe((activeViewId) => {\n this.activeViewId = activeViewId;\n this.changeDetector.detectChanges();\n });\n }\n\n public ngOnInit(): void {\n this.dataManagerService.initDataManager({\n activeViewId: this.activeViewId,\n dataManagerConfig: this.dataManagerConfig,\n defaultDataState: this.defaultDataState,\n });\n }\n\n public openModal(): void {\n const context = new SkyDataEntryGridEditModalContext();\n context.gridData = this.items.slice();\n this.changeDetector.markForCheck();\n\n const options = {\n providers: [\n { provide: SkyDataEntryGridEditModalContext, useValue: context },\n ],\n ariaDescribedBy: 'docs-edit-grid-modal-content',\n size: 'large',\n };\n\n const modalInstance = this.modalService.open(\n SkyDataManagerDataEntryGridEditModalComponent,\n options\n );\n\n modalInstance.closed.subscribe((result: SkyModalCloseArgs) => {\n if (result.reason === 'cancel' || result.reason === 'close') {\n alert('Edits canceled!');\n } else {\n this.items = result.data;\n alert('Saving data!');\n }\n this.changeDetector.markForCheck();\n });\n }\n}\n"
|
|
761
771
|
},
|
|
762
772
|
{
|
|
763
773
|
"fileName": "data-manager-data-entry-grid-docs-demo.module.ts",
|
|
764
774
|
"filePath": "/projects/ag-grid/documentation/code-examples/data-entry-grid/data-manager-added/data-manager-data-entry-grid-docs-demo.module.ts",
|
|
765
|
-
"rawContents": "import { NgModule } from '@angular/core';\nimport { SkyAgGridModule } from '@skyux/ag-grid';\nimport { SkyDataManagerModule } from '@skyux/data-manager';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkySearchModule } from '@skyux/lookup';\nimport { SkyModalModule } from '@skyux/modals';\nimport { SkyDropdownModule } from '@skyux/popovers';\n\nimport { AgGridModule } from 'ag-grid-angular';\nimport { DataManagerDataEntryGridDocsDemoFiltersModalComponent } from './data-manager-data-entry-grid-docs-demo-filter-modal.component';\nimport { SkyDataManagerDataEntryGridContextMenuComponent } from './data-manager-data-entry-grid-docs-demo-context-menu.component';\nimport { SkyDataManagerDataEntryGridEditModalComponent } from './data-manager-data-entry-grid-docs-demo-edit-modal.component';\nimport { SkyDataManagerDataEntryGridDemoComponent } from './data-manager-data-entry-grid-docs-demo.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [\n SkyDataManagerDataEntryGridContextMenuComponent,\n SkyDataManagerDataEntryGridDemoComponent,\n SkyDataManagerDataEntryGridEditModalComponent,\n DataManagerDataEntryGridDocsDemoFiltersModalComponent,\n ],\n imports: [\n AgGridModule.withComponents([\n SkyDataManagerDataEntryGridContextMenuComponent,\n ]),\n CommonModule,\n FormsModule,\n SkyToolbarModule,\n SkySearchModule,\n AgGridModule,\n SkyAgGridModule,\n SkyModalModule,\n SkyDropdownModule,\n SkyDataManagerModule,\n SkyCheckboxModule,\n ],\n exports: [SkyDataManagerDataEntryGridDemoComponent],\n entryComponents: [\n SkyDataManagerDataEntryGridEditModalComponent,\n DataManagerDataEntryGridDocsDemoFiltersModalComponent,\n ],\n})\nexport class SkyDataManagerDataEntryGridDocsDemoModule {}\n"
|
|
775
|
+
"rawContents": "import { NgModule } from '@angular/core';\nimport { SkyAgGridModule } from '@skyux/ag-grid';\nimport { SkyDataManagerModule } from '@skyux/data-manager';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkySearchModule } from '@skyux/lookup';\nimport { SkyModalModule } from '@skyux/modals';\nimport { SkyDropdownModule } from '@skyux/popovers';\n\nimport { AgGridModule } from 'ag-grid-angular';\nimport { DataManagerDataEntryGridDocsDemoFiltersModalComponent } from './data-manager-data-entry-grid-docs-demo-filter-modal.component';\nimport { SkyDataManagerDataEntryGridContextMenuComponent } from './data-manager-data-entry-grid-docs-demo-context-menu.component';\nimport { SkyDataManagerDataEntryGridEditModalComponent } from './data-manager-data-entry-grid-docs-demo-edit-modal.component';\nimport { SkyDataManagerDataEntryGridDemoComponent } from './data-manager-data-entry-grid-docs-demo.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { DataManagerDataEntryGridDocsDemoViewGridComponent } from './data-manager-data-entry-grid-docs-demo-view-grid.component';\n\n@NgModule({\n declarations: [\n SkyDataManagerDataEntryGridContextMenuComponent,\n SkyDataManagerDataEntryGridDemoComponent,\n SkyDataManagerDataEntryGridEditModalComponent,\n DataManagerDataEntryGridDocsDemoFiltersModalComponent,\n DataManagerDataEntryGridDocsDemoViewGridComponent,\n ],\n imports: [\n AgGridModule.withComponents([\n SkyDataManagerDataEntryGridContextMenuComponent,\n ]),\n CommonModule,\n FormsModule,\n SkyToolbarModule,\n SkySearchModule,\n AgGridModule,\n SkyAgGridModule,\n SkyModalModule,\n SkyDropdownModule,\n SkyDataManagerModule,\n SkyCheckboxModule,\n ],\n exports: [SkyDataManagerDataEntryGridDemoComponent],\n entryComponents: [\n SkyDataManagerDataEntryGridEditModalComponent,\n DataManagerDataEntryGridDocsDemoFiltersModalComponent,\n ],\n})\nexport class SkyDataManagerDataEntryGridDocsDemoModule {}\n"
|
|
766
776
|
},
|
|
767
777
|
{
|
|
768
778
|
"fileName": "basic-data-grid-docs-demo-data.ts",
|
|
@@ -797,22 +807,32 @@
|
|
|
797
807
|
{
|
|
798
808
|
"fileName": "data-manager-data-grid-docs-demo-filter-modal.component.ts",
|
|
799
809
|
"filePath": "/projects/ag-grid/documentation/code-examples/data-grid/data-manager-added/data-manager-data-grid-docs-demo-filter-modal.component.ts",
|
|
800
|
-
"rawContents": "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n} from '@angular/core';\nimport {\n SkyDataManagerFilterData,\n SkyDataManagerFilterModalContext,\n} from '@skyux/data-manager';\nimport { SkyModalInstance } from '@skyux/modals';\n\n@Component({\n selector: 'app-data-manager-data-grid-docs-demo-filter-modal',\n templateUrl: './data-manager-data-grid-docs-demo-filter-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataManagerDataGridDocsDemoFiltersModalComponent {\n public jobTitle: string = '';\n\n public hideSales: boolean = false;\n\n constructor(\n public context: SkyDataManagerFilterModalContext,\n public instance: SkyModalInstance,\n private changeDetector: ChangeDetectorRef\n ) {\n if (this.context.filterData && this.context.filterData.filters) {\n let filters = this.context.filterData.filters;\n this.jobTitle = filters.jobTitle
|
|
810
|
+
"rawContents": "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n} from '@angular/core';\nimport {\n SkyDataManagerFilterData,\n SkyDataManagerFilterModalContext,\n} from '@skyux/data-manager';\nimport { SkyModalInstance } from '@skyux/modals';\n\n@Component({\n selector: 'app-data-manager-data-grid-docs-demo-filter-modal',\n templateUrl: './data-manager-data-grid-docs-demo-filter-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataManagerDataGridDocsDemoFiltersModalComponent {\n public jobTitle: string = '';\n\n public hideSales: boolean = false;\n\n constructor(\n public context: SkyDataManagerFilterModalContext,\n public instance: SkyModalInstance,\n private changeDetector: ChangeDetectorRef\n ) {\n if (this.context.filterData && this.context.filterData.filters) {\n let filters = this.context.filterData.filters;\n this.jobTitle = filters.jobTitle || 'any';\n this.hideSales = filters.hideSales || false;\n }\n this.changeDetector.markForCheck();\n }\n\n public applyFilters() {\n let result: SkyDataManagerFilterData = {};\n\n result.filtersApplied = this.jobTitle !== 'any' || this.hideSales;\n result.filters = {\n jobTitle: this.jobTitle,\n hideSales: this.hideSales,\n };\n this.changeDetector.markForCheck();\n\n this.instance.save(result);\n }\n\n public clearAllFilters() {\n this.hideSales = false;\n this.jobTitle = 'any';\n this.changeDetector.markForCheck();\n }\n\n public cancel() {\n this.instance.cancel();\n }\n}\n"
|
|
811
|
+
},
|
|
812
|
+
{
|
|
813
|
+
"fileName": "data-manager-data-grid-docs-demo-view-grid.component.html",
|
|
814
|
+
"filePath": "/projects/ag-grid/documentation/code-examples/data-grid/data-manager-added/data-manager-data-grid-docs-demo-view-grid.component.html",
|
|
815
|
+
"rawContents": "<sky-data-view skyAgGridDataManagerAdapter [viewId]=\"viewConfig.id\">\n <sky-ag-grid-wrapper *ngIf=\"isActive && gridInitialized\">\n <ag-grid-angular\n [gridOptions]=\"gridOptions\"\n [overlayNoRowsTemplate]=\"noRowsTemplate\"\n [rowData]=\"displayedItems\"\n (rowSelected)=\"onRowSelected($event)\"\n >\n </ag-grid-angular>\n </sky-ag-grid-wrapper>\n</sky-data-view>\n"
|
|
816
|
+
},
|
|
817
|
+
{
|
|
818
|
+
"fileName": "data-manager-data-grid-docs-demo-view-grid.component.ts",
|
|
819
|
+
"filePath": "/projects/ag-grid/documentation/code-examples/data-grid/data-manager-added/data-manager-data-grid-docs-demo-view-grid.component.ts",
|
|
820
|
+
"rawContents": "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { SkyAgGridService, SkyCellType } from '@skyux/ag-grid';\nimport {\n SkyDataManagerState,\n SkyDataViewConfig,\n SkyDataManagerService,\n} from '@skyux/data-manager';\n\nimport {\n ColDef,\n ColumnApi,\n GridApi,\n GridOptions,\n GridReadyEvent,\n RowSelectedEvent,\n ValueFormatterParams,\n} from 'ag-grid-community';\n\n@Component({\n selector: 'app-data-manager-data-grid-docs-demo-view-grid',\n templateUrl: './data-manager-data-grid-docs-demo-view-grid.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataManagerDataGridsDocsDemoViewGridComponent implements OnInit {\n @Input()\n public items: any[] = [];\n\n public viewId = 'dataGridWithDataManagerView';\n\n public columnDefs: ColDef[] = [\n {\n field: 'selected',\n type: SkyCellType.RowSelector,\n },\n {\n field: 'name',\n headerName: 'Name',\n },\n {\n field: 'age',\n headerName: 'Age',\n type: SkyCellType.Number,\n maxWidth: 60,\n },\n {\n field: 'startDate',\n headerName: 'Start date',\n type: SkyCellType.Date,\n sort: 'asc',\n },\n {\n field: 'endDate',\n headerName: 'End date',\n type: SkyCellType.Date,\n valueFormatter: this.endDateFormatter,\n },\n {\n field: 'department',\n headerName: 'Department',\n type: SkyCellType.Autocomplete,\n },\n {\n field: 'jobTitle',\n headerName: 'Title',\n type: SkyCellType.Autocomplete,\n },\n ];\n\n public dataState = new SkyDataManagerState({});\n\n public columnApi?: ColumnApi;\n public displayedItems: any[] = [];\n public gridApi?: GridApi;\n public gridInitialized = false;\n public gridOptions!: GridOptions;\n public noRowsTemplate: string;\n public isActive: boolean = false;\n\n public viewConfig: SkyDataViewConfig = {\n id: this.viewId,\n name: 'Data Grid View',\n icon: 'table',\n searchEnabled: true,\n sortEnabled: true,\n multiselectToolbarEnabled: true,\n columnPickerEnabled: true,\n filterButtonEnabled: true,\n columnOptions: [\n {\n id: 'selected',\n label: 'selected',\n alwaysDisplayed: true,\n },\n {\n id: 'name',\n label: 'Name',\n description: 'The name of the employee.',\n },\n {\n id: 'age',\n label: 'Age',\n description: 'The age of the employee.',\n },\n {\n id: 'startDate',\n label: 'Start date',\n description: 'The start date of the employee.',\n },\n {\n id: 'endDate',\n label: 'End date',\n description: 'The end date of the employee.',\n },\n {\n id: 'department',\n label: 'Department',\n description: 'The department of the employee',\n },\n {\n id: 'jobTitle',\n label: 'Title',\n description: 'The job title of the employee.',\n },\n ],\n };\n\n constructor(\n private agGridService: SkyAgGridService,\n private changeDetector: ChangeDetectorRef,\n private dataManagerService: SkyDataManagerService\n ) {\n this.noRowsTemplate = `<div class=\"sky-deemphasized\">No results found.</div>`;\n }\n\n public ngOnInit(): void {\n this.displayedItems = this.items;\n\n this.dataManagerService.initDataView(this.viewConfig);\n\n this.gridOptions = this.agGridService.getGridOptions({\n gridOptions: {\n columnDefs: this.columnDefs,\n onGridReady: this.onGridReady.bind(this),\n },\n });\n\n this.dataManagerService\n .getDataStateUpdates(this.viewId)\n .subscribe((state) => {\n this.dataState = state;\n this.setInitialColumnOrder();\n this.updateData();\n this.changeDetector.detectChanges();\n });\n\n this.dataManagerService.getActiveViewIdUpdates().subscribe((id) => {\n this.isActive = id === this.viewId;\n this.changeDetector.detectChanges();\n });\n }\n\n public updateData(): void {\n this.sortItems();\n this.displayedItems = this.filterItems(this.searchItems(this.items));\n\n if (this.dataState.onlyShowSelected) {\n this.displayedItems = this.displayedItems.filter((item) => item.selected);\n }\n\n if (this.displayedItems.length > 0) {\n this.gridApi?.hideOverlay();\n } else {\n this.gridApi?.showNoRowsOverlay();\n }\n\n this.changeDetector.markForCheck();\n }\n\n public setInitialColumnOrder(): void {\n let viewState = this.dataState.getViewStateById(this.viewId);\n let visibleColumns = viewState.displayedColumnIds;\n\n this.columnDefs.sort((col1, col2) => {\n let col1Index = visibleColumns.findIndex(\n (colId: string) => colId === col1.colId\n );\n let col2Index = visibleColumns.findIndex(\n (colId: string) => colId === col2.colId\n );\n\n if (col1Index === -1) {\n col1.hide = true;\n return 0;\n } else if (col2Index === -1) {\n col2.hide = true;\n return 0;\n } else {\n return col1Index - col2Index;\n }\n });\n\n this.gridInitialized = true;\n this.changeDetector.markForCheck();\n }\n\n public onGridReady(gridReadyEvent: GridReadyEvent): void {\n this.gridApi = gridReadyEvent.api;\n this.gridApi.sizeColumnsToFit();\n this.columnApi = gridReadyEvent.columnApi;\n this.updateData();\n this.changeDetector.markForCheck();\n }\n\n public onRowSelected(rowSelectedEvent: RowSelectedEvent): void {\n if (!rowSelectedEvent.data.selected) {\n this.updateData();\n }\n }\n\n public sortItems(): void {\n let sortOption = this.dataState.activeSortOption;\n if (this.columnApi && sortOption) {\n this.columnApi.applyColumnState({\n state: [\n {\n colId: sortOption.propertyName,\n sort: sortOption.descending ? 'desc' : 'asc',\n },\n ],\n });\n }\n }\n\n public searchItems(items: any[]): any[] {\n let searchedItems = items;\n let searchText = this.dataState && this.dataState.searchText;\n\n if (searchText) {\n searchedItems = items.filter(function (item: any) {\n let property: any;\n\n for (property in item) {\n if (\n item.hasOwnProperty(property) &&\n (property === 'name' || property === 'description')\n ) {\n const propertyText = item[property].toLowerCase();\n if (propertyText.indexOf(searchText) > -1) {\n return true;\n }\n }\n }\n return false;\n });\n }\n return searchedItems;\n }\n\n public filterItems(items: any[]): any[] {\n let filteredItems = items;\n let filterData = this.dataState && this.dataState.filterData;\n\n if (filterData && filterData.filters) {\n let filters = filterData.filters;\n filteredItems = items.filter((item: any) => {\n return (\n ((filters.hideSales && item.department.name !== 'Sales') ||\n !filters.hideSales) &&\n ((filters.jobTitle !== 'any' &&\n item.jobTitle?.name === filters.jobTitle) ||\n !filters.jobTitle ||\n filters.jobTitle === 'any')\n );\n });\n }\n\n return filteredItems;\n }\n\n private endDateFormatter(params: ValueFormatterParams): string {\n const dateConfig = { year: 'numeric', month: '2-digit', day: '2-digit' };\n return params.value\n ? params.value.toLocaleDateString('en-us', dateConfig)\n : 'N/A';\n }\n}\n"
|
|
801
821
|
},
|
|
802
822
|
{
|
|
803
823
|
"fileName": "data-manager-data-grid-docs-demo.component.html",
|
|
804
824
|
"filePath": "/projects/ag-grid/documentation/code-examples/data-grid/data-manager-added/data-manager-data-grid-docs-demo.component.html",
|
|
805
|
-
"rawContents": "<sky-data-manager>\n <sky-data-manager-toolbar></sky-data-manager-toolbar>\n <
|
|
825
|
+
"rawContents": "<sky-data-manager>\n <sky-data-manager-toolbar></sky-data-manager-toolbar>\n <app-data-manager-data-grid-docs-demo-view-grid [items]=\"items\">\n </app-data-manager-data-grid-docs-demo-view-grid>\n</sky-data-manager>\n"
|
|
806
826
|
},
|
|
807
827
|
{
|
|
808
828
|
"fileName": "data-manager-data-grid-docs-demo.component.ts",
|
|
809
829
|
"filePath": "/projects/ag-grid/documentation/code-examples/data-grid/data-manager-added/data-manager-data-grid-docs-demo.component.ts",
|
|
810
|
-
"rawContents": "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnInit,\n} from '@angular/core';\nimport {
|
|
830
|
+
"rawContents": "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnInit,\n} from '@angular/core';\nimport {\n SkyDataManagerService,\n SkyDataManagerState,\n} from '@skyux/data-manager';\n\nimport { SKY_AG_GRID_DEMO_DATA } from './data-manager-data-grid-docs-demo-data';\nimport { DataManagerDataGridDocsDemoFiltersModalComponent } from './data-manager-data-grid-docs-demo-filter-modal.component';\n\n@Component({\n selector: 'app-data-manager-data-grid-docs-demo',\n templateUrl: './data-manager-data-grid-docs-demo.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [SkyDataManagerService],\n})\nexport class SkyDataManagerDataGridDemoComponent implements OnInit {\n public items = SKY_AG_GRID_DEMO_DATA;\n\n public dataState = new SkyDataManagerState({});\n\n public dataManagerConfig = {\n filterModalComponent: DataManagerDataGridDocsDemoFiltersModalComponent,\n sortOptions: [\n {\n id: 'az',\n label: 'Name (A - Z)',\n descending: false,\n propertyName: 'name',\n },\n {\n id: 'za',\n label: 'Name (Z - A)',\n descending: true,\n propertyName: 'name',\n },\n ],\n };\n\n public defaultDataState = new SkyDataManagerState({\n filterData: {\n filtersApplied: false,\n filters: {\n hideSales: false,\n },\n },\n views: [\n {\n viewId: 'dataGridWithDataManagerView',\n displayedColumnIds: [\n 'selected',\n 'name',\n 'age',\n 'startDate',\n 'endDate',\n 'department',\n 'jobTitle',\n ],\n },\n ],\n });\n\n public activeViewId = 'dataGridWithDataManagerView';\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private dataManagerService: SkyDataManagerService\n ) {\n this.dataManagerService\n .getDataStateUpdates('dataGridDataManager')\n .subscribe((state) => {\n this.dataState = state;\n this.changeDetector.detectChanges();\n });\n this.dataManagerService\n .getActiveViewIdUpdates()\n .subscribe((activeViewId) => {\n this.activeViewId = activeViewId;\n this.changeDetector.detectChanges();\n });\n }\n\n public ngOnInit(): void {\n this.dataManagerService.initDataManager({\n activeViewId: this.activeViewId,\n dataManagerConfig: this.dataManagerConfig,\n defaultDataState: this.defaultDataState,\n });\n }\n}\n"
|
|
811
831
|
},
|
|
812
832
|
{
|
|
813
833
|
"fileName": "data-manager-data-grid-docs-demo.module.ts",
|
|
814
834
|
"filePath": "/projects/ag-grid/documentation/code-examples/data-grid/data-manager-added/data-manager-data-grid-docs-demo.module.ts",
|
|
815
|
-
"rawContents": "import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SkyAgGridModule } from '@skyux/ag-grid';\nimport { SkyDataManagerModule } from '@skyux/data-manager';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkySearchModule } from '@skyux/lookup';\nimport { SkyModalModule } from '@skyux/modals';\n\nimport { AgGridModule } from 'ag-grid-angular';\n\nimport { DataManagerDataGridDocsDemoFiltersModalComponent } from './data-manager-data-grid-docs-demo-filter-modal.component';\nimport { SkyDataManagerDataGridDemoComponent } from './data-manager-data-grid-docs-demo.component';\n\n@NgModule({\n declarations: [\n SkyDataManagerDataGridDemoComponent,\n DataManagerDataGridDocsDemoFiltersModalComponent,\n ],\n entryComponents: [DataManagerDataGridDocsDemoFiltersModalComponent],\n exports: [SkyDataManagerDataGridDemoComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyToolbarModule,\n SkySearchModule,\n SkyDataManagerModule,\n SkyAgGridModule,\n AgGridModule,\n SkyDataManagerModule,\n SkyModalModule,\n SkyCheckboxModule,\n ],\n})\nexport class SkyDataManagerDataGridDocsDemoModule {}\n"
|
|
835
|
+
"rawContents": "import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SkyAgGridModule } from '@skyux/ag-grid';\nimport { SkyDataManagerModule } from '@skyux/data-manager';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkySearchModule } from '@skyux/lookup';\nimport { SkyModalModule } from '@skyux/modals';\n\nimport { AgGridModule } from 'ag-grid-angular';\n\nimport { DataManagerDataGridDocsDemoFiltersModalComponent } from './data-manager-data-grid-docs-demo-filter-modal.component';\nimport { DataManagerDataGridsDocsDemoViewGridComponent } from './data-manager-data-grid-docs-demo-view-grid.component';\nimport { SkyDataManagerDataGridDemoComponent } from './data-manager-data-grid-docs-demo.component';\n\n@NgModule({\n declarations: [\n SkyDataManagerDataGridDemoComponent,\n DataManagerDataGridDocsDemoFiltersModalComponent,\n DataManagerDataGridsDocsDemoViewGridComponent,\n ],\n entryComponents: [DataManagerDataGridDocsDemoFiltersModalComponent],\n exports: [SkyDataManagerDataGridDemoComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyToolbarModule,\n SkySearchModule,\n SkyDataManagerModule,\n SkyAgGridModule,\n AgGridModule,\n SkyDataManagerModule,\n SkyModalModule,\n SkyCheckboxModule,\n ],\n})\nexport class SkyDataManagerDataGridDocsDemoModule {}\n"
|
|
816
836
|
}
|
|
817
837
|
]
|
|
818
838
|
}
|
|
@@ -134,18 +134,17 @@ export class SkyAgGridDataManagerAdapterDirective {
|
|
|
134
134
|
this.changeDetector.markForCheck();
|
|
135
135
|
});
|
|
136
136
|
agGrid.sortChanged.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {
|
|
137
|
-
const
|
|
137
|
+
const gridColumnStates = agGrid.columnApi.getColumnState();
|
|
138
138
|
let sortOption;
|
|
139
139
|
/* istanbul ignore else */
|
|
140
|
-
if (
|
|
141
|
-
const
|
|
142
|
-
const activeSortColumn = agGrid.columnApi.getColumn(activeSortModel.colId);
|
|
140
|
+
if (gridColumnStates.length) {
|
|
141
|
+
const activeSortColumnState = gridColumnStates.find((aGridColumnState) => aGridColumnState.sortIndex === 0);
|
|
143
142
|
const dataManagerConfig = this.dataManagerSvc.getCurrentDataManagerConfig();
|
|
144
143
|
/* istanbul ignore else */
|
|
145
|
-
if (dataManagerConfig.sortOptions) {
|
|
144
|
+
if (dataManagerConfig.sortOptions && activeSortColumnState) {
|
|
146
145
|
sortOption = dataManagerConfig.sortOptions.find((option) => {
|
|
147
|
-
return (option.propertyName ===
|
|
148
|
-
option.descending === (
|
|
146
|
+
return (option.propertyName === activeSortColumnState.colId &&
|
|
147
|
+
option.descending === (activeSortColumnState.sort === 'desc'));
|
|
149
148
|
});
|
|
150
149
|
}
|
|
151
150
|
else {
|
|
@@ -208,4 +207,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
208
207
|
type: ContentChildren,
|
|
209
208
|
args: [SkyAgGridWrapperComponent, { descendants: true }]
|
|
210
209
|
}] } });
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1kYXRhLW1hbmFnZXItYWRhcHRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZy1ncmlkL3NyYy9tb2R1bGVzL2FnLWdyaWQvYWctZ3JpZC1kYXRhLW1hbmFnZXItYWRhcHRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLGVBQWUsRUFDZixTQUFTLEVBQ1QsS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBaUJoRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBRXhFOztHQUVHO0FBSUgsTUFBTSxPQUFPLG9DQUFvQztJQW1CL0MsWUFDVSxjQUFpQyxFQUNqQyxjQUFxQztRQURyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBSnZDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUtuQyxDQUFDO0lBRUcsa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFFdEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBRWhDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTzthQUNw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LHlCQUF5Qjs0RkFUL0Isb0NBQW9DO2tCQUhoRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwrQkFBK0I7aUJBQzFDOzRJQUtRLE1BQU07c0JBRFosS0FBSztnQkFJQyxVQUFVO3NCQURoQixlQUFlO3VCQUFDLGFBQWEsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBSTlDLG9CQUFvQjtzQkFEMUIsZUFBZTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyB0YWtlVW50aWwsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQWdHcmlkQW5ndWxhciB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5cbmltcG9ydCB7XG4gIENvbHVtbkFwaSxcbiAgQ29sdW1uTW92ZWRFdmVudCxcbiAgRHJhZ1N0YXJ0ZWRFdmVudCxcbiAgRHJhZ1N0b3BwZWRFdmVudCxcbiAgUm93U2VsZWN0ZWRFdmVudCxcbn0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuXG5pbXBvcnQge1xuICBTa3lEYXRhTWFuYWdlclNlcnZpY2UsXG4gIFNreURhdGFNYW5hZ2VyU29ydE9wdGlvbixcbiAgU2t5RGF0YU1hbmFnZXJTdGF0ZSxcbiAgU2t5RGF0YVZpZXdDb25maWcsXG59IGZyb20gJ0Bza3l1eC9kYXRhLW1hbmFnZXInO1xuXG5pbXBvcnQgeyBTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9hZy1ncmlkLXdyYXBwZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreUFnR3JpZERhdGFNYW5hZ2VyQWRhcHRlcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBZ0dyaWREYXRhTWFuYWdlckFkYXB0ZXJEaXJlY3RpdmVcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KClcbiAgcHVibGljIHZpZXdJZDogc3RyaW5nO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oQWdHcmlkQW5ndWxhciwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwdWJsaWMgYWdHcmlkTGlzdDogUXVlcnlMaXN0PEFnR3JpZEFuZ3VsYXI+O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5QWdHcmlkV3JhcHBlckNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwdWJsaWMgc2t5QWdHcmlkV3JhcHBlckxpc3Q6IFF1ZXJ5TGlzdDxTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50PjtcblxuICBwcml2YXRlIGN1cnJlbnRBZ0dyaWQ6IEFnR3JpZEFuZ3VsYXI7XG4gIHByaXZhdGUgY3VycmVudERhdGFTdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZTtcbiAgcHJpdmF0ZSBjdXJyZW50U2t5QWdHcmlkV3JhcHBlcjogU2t5QWdHcmlkV3JhcHBlckNvbXBvbmVudDtcbiAgcHJpdmF0ZSBkYXRhU3RhdGVTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSB2aWV3Q29uZmlnOiBTa3lEYXRhVmlld0NvbmZpZztcbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGRhdGFNYW5hZ2VyU3ZjOiBTa3lEYXRhTWFuYWdlclNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhTWFuYWdlclN2Yy5zZXRWaWV3a2VlcGVyQ2xhc3Nlcyh0aGlzLnZpZXdJZCwgWycuYWctaGVhZGVyJ10pO1xuXG4gICAgdGhpcy52aWV3Q29uZmlnID0gdGhpcy5kYXRhTWFuYWdlclN2Yy5nZXRWaWV3QnlJZCh0aGlzLnZpZXdJZCk7XG4gICAgdGhpcy5jaGVja0ZvckFnR3JpZCgpO1xuICAgIHRoaXMuY2hlY2tGb3JTa3lBZ0dyaWRXcmFwcGVyKCk7XG5cbiAgICB0aGlzLmFnR3JpZExpc3QuY2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hlY2tGb3JBZ0dyaWQoKSk7XG5cbiAgICB0aGlzLnNreUFnR3JpZFdyYXBwZXJMaXN0LmNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNoZWNrRm9yU2t5QWdHcmlkV3JhcHBlcigpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0ZvckFnR3JpZCgpOiB2b2lkIHtcbiAgICBjb25zdCBhZ0dyaWRDb3VudCA9IHRoaXMuYWdHcmlkTGlzdC5sZW5ndGg7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChhZ0dyaWRDb3VudCA9PT0gMCkge1xuICAgICAgdGhpcy51bnJlZ2lzdGVyQWdHcmlkKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFnR3JpZExpc3QuZmlyc3QgIT09IHRoaXMuY3VycmVudEFnR3JpZCkge1xuICAgICAgdGhpcy5yZWdpc3RlckFnR3JpZCgpO1xuICAgIH1cblxuICAgIGlmIChhZ0dyaWRDb3VudCA+IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ01vcmUgdGhhbiBvbmUgYWctZ3JpZCBjaGlsZCBjb21wb25lbnQgd2FzIGZvdW5kLiBVc2luZyB0aGUgZmlyc3QgYWctR3JpZC4nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGb3JTa3lBZ0dyaWRXcmFwcGVyKCk6IHZvaWQge1xuICAgIGNvbnN0IHNreUFnR3JpZFdyYXBwZXJDb3VudCA9IHRoaXMuc2t5QWdHcmlkV3JhcHBlckxpc3QubGVuZ3RoO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoc2t5QWdHcmlkV3JhcHBlckNvdW50ID09PSAwKSB7XG4gICAgICB0aGlzLnVucmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuc2t5QWdHcmlkV3JhcHBlckxpc3QuZmlyc3QgIT09IHRoaXMuY3VycmVudFNreUFnR3JpZFdyYXBwZXJcbiAgICApIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk7XG4gICAgfVxuXG4gICAgaWYgKHNreUFnR3JpZFdyYXBwZXJDb3VudCA+IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ01vcmUgdGhhbiBvbmUgYWctZ3JpZCBjaGlsZCBjb21wb25lbnQgd2FzIGZvdW5kLiBVc2luZyB0aGUgZmlyc3QgYWctR3JpZC4nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdW5yZWdpc3RlckFnR3JpZCgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRBZ0dyaWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAodGhpcy5kYXRhU3RhdGVTdWIpIHtcbiAgICAgIHRoaXMuZGF0YVN0YXRlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1bnJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlclNreUFnR3JpZFdyYXBwZXIoKTogdm9pZCB7XG4gICAgdGhpcy51bnJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpO1xuXG4gICAgdGhpcy5jdXJyZW50U2t5QWdHcmlkV3JhcHBlciA9IHRoaXMuc2t5QWdHcmlkV3JhcHBlckxpc3QuZmlyc3Q7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFNreUFnR3JpZFdyYXBwZXIudmlld2tlZXBlckNsYXNzZXMgPSBbXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJBZ0dyaWQoKTogdm9pZCB7XG4gICAgdGhpcy51bnJlZ2lzdGVyQWdHcmlkKCk7XG5cbiAgICBjb25zdCBhZ0dyaWQgPSB0aGlzLmFnR3JpZExpc3QuZmlyc3Q7XG5cbiAgICB0aGlzLmN1cnJlbnRBZ0dyaWQgPSBhZ0dyaWQ7XG5cbiAgICBhZ0dyaWQuZ3JpZFJlYWR5LnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnZpZXdDb25maWcub25TZWxlY3RBbGxDbGljayA9IHRoaXMuc2VsZWN0QWxsLmJpbmQodGhpcyk7XG4gICAgICB0aGlzLnZpZXdDb25maWcub25DbGVhckFsbENsaWNrID0gdGhpcy5jbGVhckFsbC5iaW5kKHRoaXMpO1xuXG4gICAgICB0aGlzLmRhdGFNYW5hZ2VyU3ZjLnVwZGF0ZVZpZXdDb25maWcodGhpcy52aWV3Q29uZmlnKTtcblxuICAgICAgdGhpcy5kYXRhU3RhdGVTdWIgPSB0aGlzLmRhdGFNYW5hZ2VyU3ZjXG4gICAgICAgIC5nZXREYXRhU3RhdGVVcGRhdGVzKHRoaXMudmlld0NvbmZpZy5pZClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGRhdGFTdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuY3VycmVudERhdGFTdGF0ZSA9IGRhdGFTdGF0ZTtcbiAgICAgICAgICB0aGlzLmRpc3BsYXlDb2x1bW5zKGRhdGFTdGF0ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICBhZ0dyaWQuYXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcbiAgICB9KTtcblxuICAgIGFnR3JpZC5jb2x1bW5Nb3ZlZFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgKGV2ZW50OiBDb2x1bW5Nb3ZlZEV2ZW50KSA9PlxuICAgICAgICAgICAgIVtcbiAgICAgICAgICAgICAgJ2dyaWRJbml0aWFsaXppbmcnLFxuICAgICAgICAgICAgICAndWlDb2x1bW5SZXNpemVkJyxcbiAgICAgICAgICAgICAgJ3VpQ29sdW1uRHJhZ2dlZCcsXG4gICAgICAgICAgICAgICdhcGknLFxuICAgICAgICAgICAgXS5pbmNsdWRlcyhldmVudC5zb3VyY2UpXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBDb2x1bW5Nb3ZlZEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlQ29sdW1uc0luQ3VycmVudERhdGFTdGF0ZSh2YWx1ZS5jb2x1bW5BcGkpO1xuICAgICAgfSk7XG4gICAgbGV0IGN1cnJlbnRDb2x1bW5zOiBzdHJpbmdbXTtcbiAgICBhZ0dyaWQuZHJhZ1N0YXJ0ZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IERyYWdTdGFydGVkRXZlbnQpID0+IHtcbiAgICAgICAgY3VycmVudENvbHVtbnMgPSB0aGlzLmdldENvbHVtbk9yZGVyKHZhbHVlLmNvbHVtbkFwaSk7XG4gICAgICB9KTtcbiAgICBhZ0dyaWQuZHJhZ1N0b3BwZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IERyYWdTdG9wcGVkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1ucyA9IHRoaXMuZ2V0Q29sdW1uT3JkZXIodmFsdWUuY29sdW1uQXBpKTtcbiAgICAgICAgY29uc3QgaGFzQ2hhbmdlZCA9IGN1cnJlbnRDb2x1bW5zLmZpbmRJbmRleChcbiAgICAgICAgICAoY29sSWQsIGkpID0+IGNvbElkICE9PSBuZXdDb2x1bW5zW2ldXG4gICAgICAgICk7XG4gICAgICAgIGlmIChoYXNDaGFuZ2VkID4gLTEpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbnNJbkN1cnJlbnREYXRhU3RhdGUodmFsdWUuY29sdW1uQXBpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBhZ0dyaWQucm93U2VsZWN0ZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFJvd1NlbGVjdGVkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgcm93ID0gZXZlbnQubm9kZTtcbiAgICAgICAgbGV0IHNlbGVjdGVkSWRzID0gdGhpcy5jdXJyZW50RGF0YVN0YXRlLnNlbGVjdGVkSWRzIHx8IFtdO1xuICAgICAgICBjb25zdCByb3dJbmRleCA9IHNlbGVjdGVkSWRzLmluZGV4T2Yocm93LmRhdGEuaWQpO1xuXG4gICAgICAgIGlmIChyb3cuaXNTZWxlY3RlZCgpICYmIHJvd0luZGV4ID09PSAtMSkge1xuICAgICAgICAgIHNlbGVjdGVkSWRzLnB1c2gocm93LmRhdGEuaWQpO1xuICAgICAgICB9IGVsc2UgaWYgKCFyb3cuaXNTZWxlY3RlZCgpICYmIHJvd0luZGV4ICE9PSAtMSkge1xuICAgICAgICAgIHNlbGVjdGVkSWRzLnNwbGljZShyb3dJbmRleCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmN1cnJlbnREYXRhU3RhdGUuc2VsZWN0ZWRJZHMgPSBzZWxlY3RlZElkcztcbiAgICAgICAgdGhpcy5kYXRhTWFuYWdlclN2Yy51cGRhdGVEYXRhU3RhdGUoXG4gICAgICAgICAgdGhpcy5jdXJyZW50RGF0YVN0YXRlLFxuICAgICAgICAgIHRoaXMudmlld0NvbmZpZy5pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICBhZ0dyaWQuc29ydENoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IGdyaWRTb3J0TW9kZWwgPSBhZ0dyaWQuYXBpLmdldFNvcnRNb2RlbCgpO1xuICAgICAgbGV0IHNvcnRPcHRpb246IFNreURhdGFNYW5hZ2VyU29ydE9wdGlvbjtcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChncmlkU29ydE1vZGVsLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBhY3RpdmVTb3J0TW9kZWwgPSBncmlkU29ydE1vZGVsWzBdO1xuICAgICAgICBjb25zdCBhY3RpdmVTb3J0Q29sdW1uID0gYWdHcmlkLmNvbHVtbkFwaS5nZXRDb2x1bW4oXG4gICAgICAgICAgYWN0aXZlU29ydE1vZGVsLmNvbElkXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGRhdGFNYW5hZ2VyQ29uZmlnID1cbiAgICAgICAgICB0aGlzLmRhdGFNYW5hZ2VyU3ZjLmdldEN1cnJlbnREYXRhTWFuYWdlckNvbmZpZygpO1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChkYXRhTWFuYWdlckNvbmZpZy5zb3J0T3B0aW9ucykge1xuICAgICAgICAgIHNvcnRPcHRpb24gPSBkYXRhTWFuYWdlckNvbmZpZy5zb3J0T3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgKG9wdGlvbjogU2t5RGF0YU1hbmFnZXJTb3J0T3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgb3B0aW9uLnByb3BlcnR5TmFtZSA9PT0gYWN0aXZlU29ydENvbHVtbi5nZXRDb2xEZWYoKS5maWVsZCAmJlxuICAgICAgICAgICAgICAgIG9wdGlvbi5kZXNjZW5kaW5nID09PSAoYWN0aXZlU29ydE1vZGVsLnNvcnQgPT09ICdkZXNjJylcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNvcnRPcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuY3VycmVudERhdGFTdGF0ZS5hY3RpdmVTb3J0T3B0aW9uID0gc29ydE9wdGlvbjtcbiAgICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMudXBkYXRlRGF0YVN0YXRlKFxuICAgICAgICB0aGlzLmN1cnJlbnREYXRhU3RhdGUsXG4gICAgICAgIHRoaXMudmlld0NvbmZpZy5pZFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29sdW1uc0luQ3VycmVudERhdGFTdGF0ZShjb2x1bW5BcGk6IENvbHVtbkFwaSkge1xuICAgIGNvbnN0IGNvbHVtbk9yZGVyID0gdGhpcy5nZXRDb2x1bW5PcmRlcihjb2x1bW5BcGkpO1xuXG4gICAgY29uc3Qgdmlld1N0YXRlID0gdGhpcy5jdXJyZW50RGF0YVN0YXRlLmdldFZpZXdTdGF0ZUJ5SWQoXG4gICAgICB0aGlzLnZpZXdDb25maWcuaWRcbiAgICApO1xuICAgIHZpZXdTdGF0ZS5kaXNwbGF5ZWRDb2x1bW5JZHMgPSBjb2x1bW5PcmRlcjtcblxuICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMudXBkYXRlRGF0YVN0YXRlKFxuICAgICAgdGhpcy5jdXJyZW50RGF0YVN0YXRlLmFkZE9yVXBkYXRlVmlldyh0aGlzLnZpZXdDb25maWcuaWQsIHZpZXdTdGF0ZSksXG4gICAgICB0aGlzLnZpZXdDb25maWcuaWRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2x1bW5PcmRlcihjb2x1bW5BcGk6IENvbHVtbkFwaSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gY29sdW1uQXBpXG4gICAgICAuZ2V0QWxsRGlzcGxheWVkVmlydHVhbENvbHVtbnMoKVxuICAgICAgLm1hcCgoY29sKSA9PiBjb2wuZ2V0Q29sRGVmKCkuY29sSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5Q29sdW1ucyhkYXRhU3RhdGU6IFNreURhdGFNYW5hZ2VyU3RhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBhZ0dyaWQgPSB0aGlzLmN1cnJlbnRBZ0dyaWQ7XG4gICAgY29uc3Qgdmlld1N0YXRlID0gZGF0YVN0YXRlLmdldFZpZXdTdGF0ZUJ5SWQodGhpcy52aWV3Q29uZmlnLmlkKTtcbiAgICBsZXQgZGlzcGxheWVkQ29sdW1uSWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzKSB7XG4gICAgICBkaXNwbGF5ZWRDb2x1bW5JZHMgPSB2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW5zID0gYWdHcmlkLmNvbHVtbkFwaS5nZXRBbGxDb2x1bW5zKCk7XG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XG4gICAgICBjb25zdCBjb2xJZCA9IGNvbHVtbi5nZXRDb2xJZCgpO1xuICAgICAgY29uc3QgY29sSW5kZXggPSBkaXNwbGF5ZWRDb2x1bW5JZHMuaW5kZXhPZihjb2xJZCk7XG5cbiAgICAgIGFnR3JpZC5jb2x1bW5BcGkuc2V0Q29sdW1uVmlzaWJsZShjb2xJZCwgY29sSW5kZXggIT09IC0xKTtcbiAgICAgIGFnR3JpZC5jb2x1bW5BcGkubW92ZUNvbHVtbihjb2xJZCwgY29sSW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIGNvbnN0IGFnR3JpZCA9IHRoaXMuYWdHcmlkTGlzdC5maXJzdDtcbiAgICBhZ0dyaWQuYXBpLnNlbGVjdEFsbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckFsbCgpOiB2b2lkIHtcbiAgICBjb25zdCBhZ0dyaWQgPSB0aGlzLmFnR3JpZExpc3QuZmlyc3Q7XG4gICAgYWdHcmlkLmFwaS5kZXNlbGVjdEFsbCgpO1xuICB9XG59XG4iXX0=
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1kYXRhLW1hbmFnZXItYWRhcHRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZy1ncmlkL3NyYy9tb2R1bGVzL2FnLWdyaWQvYWctZ3JpZC1kYXRhLW1hbmFnZXItYWRhcHRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLGVBQWUsRUFDZixTQUFTLEVBQ1QsS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBa0JoRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBRXhFOztHQUVHO0FBSUgsTUFBTSxPQUFPLG9DQUFvQztJQW1CL0MsWUFDVSxjQUFpQyxFQUNqQyxjQUFxQztRQURyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBSnZDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUtuQyxDQUFDO0lBRUcsa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFFdEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBRWhDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTzthQUNw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L0Isb0NBQW9DO2tCQUhoRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwrQkFBK0I7aUJBQzFDOzRJQUtRLE1BQU07c0JBRFosS0FBSztnQkFJQyxVQUFVO3NCQURoQixlQUFlO3VCQUFDLGFBQWEsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBSTlDLG9CQUFvQjtzQkFEMUIsZUFBZTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyB0YWtlVW50aWwsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQWdHcmlkQW5ndWxhciB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5cbmltcG9ydCB7XG4gIENvbHVtbkFwaSxcbiAgQ29sdW1uTW92ZWRFdmVudCxcbiAgQ29sdW1uU3RhdGUsXG4gIERyYWdTdGFydGVkRXZlbnQsXG4gIERyYWdTdG9wcGVkRXZlbnQsXG4gIFJvd1NlbGVjdGVkRXZlbnQsXG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcblxuaW1wb3J0IHtcbiAgU2t5RGF0YU1hbmFnZXJTZXJ2aWNlLFxuICBTa3lEYXRhTWFuYWdlclNvcnRPcHRpb24sXG4gIFNreURhdGFNYW5hZ2VyU3RhdGUsXG4gIFNreURhdGFWaWV3Q29uZmlnLFxufSBmcm9tICdAc2t5dXgvZGF0YS1tYW5hZ2VyJztcblxuaW1wb3J0IHsgU2t5QWdHcmlkV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4vYWctZ3JpZC13cmFwcGVyLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tza3lBZ0dyaWREYXRhTWFuYWdlckFkYXB0ZXJdJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5QWdHcmlkRGF0YU1hbmFnZXJBZGFwdGVyRGlyZWN0aXZlXG4gIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB2aWV3SWQ6IHN0cmluZztcblxuICBAQ29udGVudENoaWxkcmVuKEFnR3JpZEFuZ3VsYXIsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgcHVibGljIGFnR3JpZExpc3Q6IFF1ZXJ5TGlzdDxBZ0dyaWRBbmd1bGFyPjtcblxuICBAQ29udGVudENoaWxkcmVuKFNreUFnR3JpZFdyYXBwZXJDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgcHVibGljIHNreUFnR3JpZFdyYXBwZXJMaXN0OiBRdWVyeUxpc3Q8U2t5QWdHcmlkV3JhcHBlckNvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSBjdXJyZW50QWdHcmlkOiBBZ0dyaWRBbmd1bGFyO1xuICBwcml2YXRlIGN1cnJlbnREYXRhU3RhdGU6IFNreURhdGFNYW5hZ2VyU3RhdGU7XG4gIHByaXZhdGUgY3VycmVudFNreUFnR3JpZFdyYXBwZXI6IFNreUFnR3JpZFdyYXBwZXJDb21wb25lbnQ7XG4gIHByaXZhdGUgZGF0YVN0YXRlU3ViOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgdmlld0NvbmZpZzogU2t5RGF0YVZpZXdDb25maWc7XG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBkYXRhTWFuYWdlclN2YzogU2t5RGF0YU1hbmFnZXJTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMuc2V0Vmlld2tlZXBlckNsYXNzZXModGhpcy52aWV3SWQsIFsnLmFnLWhlYWRlciddKTtcblxuICAgIHRoaXMudmlld0NvbmZpZyA9IHRoaXMuZGF0YU1hbmFnZXJTdmMuZ2V0Vmlld0J5SWQodGhpcy52aWV3SWQpO1xuICAgIHRoaXMuY2hlY2tGb3JBZ0dyaWQoKTtcbiAgICB0aGlzLmNoZWNrRm9yU2t5QWdHcmlkV3JhcHBlcigpO1xuXG4gICAgdGhpcy5hZ0dyaWRMaXN0LmNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNoZWNrRm9yQWdHcmlkKCkpO1xuXG4gICAgdGhpcy5za3lBZ0dyaWRXcmFwcGVyTGlzdC5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jaGVja0ZvclNreUFnR3JpZFdyYXBwZXIoKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGb3JBZ0dyaWQoKTogdm9pZCB7XG4gICAgY29uc3QgYWdHcmlkQ291bnQgPSB0aGlzLmFnR3JpZExpc3QubGVuZ3RoO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoYWdHcmlkQ291bnQgPT09IDApIHtcbiAgICAgIHRoaXMudW5yZWdpc3RlckFnR3JpZCgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hZ0dyaWRMaXN0LmZpcnN0ICE9PSB0aGlzLmN1cnJlbnRBZ0dyaWQpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJBZ0dyaWQoKTtcbiAgICB9XG5cbiAgICBpZiAoYWdHcmlkQ291bnQgPiAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdNb3JlIHRoYW4gb25lIGFnLWdyaWQgY2hpbGQgY29tcG9uZW50IHdhcyBmb3VuZC4gVXNpbmcgdGhlIGZpcnN0IGFnLUdyaWQuJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRm9yU2t5QWdHcmlkV3JhcHBlcigpOiB2b2lkIHtcbiAgICBjb25zdCBza3lBZ0dyaWRXcmFwcGVyQ291bnQgPSB0aGlzLnNreUFnR3JpZFdyYXBwZXJMaXN0Lmxlbmd0aDtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHNreUFnR3JpZFdyYXBwZXJDb3VudCA9PT0gMCkge1xuICAgICAgdGhpcy51bnJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLnNreUFnR3JpZFdyYXBwZXJMaXN0LmZpcnN0ICE9PSB0aGlzLmN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyXG4gICAgKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpO1xuICAgIH1cblxuICAgIGlmIChza3lBZ0dyaWRXcmFwcGVyQ291bnQgPiAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdNb3JlIHRoYW4gb25lIGFnLWdyaWQgY2hpbGQgY29tcG9uZW50IHdhcyBmb3VuZC4gVXNpbmcgdGhlIGZpcnN0IGFnLUdyaWQuJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVucmVnaXN0ZXJBZ0dyaWQoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50QWdHcmlkID0gdW5kZWZpbmVkO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHRoaXMuZGF0YVN0YXRlU3ViKSB7XG4gICAgICB0aGlzLmRhdGFTdGF0ZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdW5yZWdpc3RlclNreUFnR3JpZFdyYXBwZXIoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50U2t5QWdHcmlkV3JhcHBlciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk6IHZvaWQge1xuICAgIHRoaXMudW5yZWdpc3RlclNreUFnR3JpZFdyYXBwZXIoKTtcblxuICAgIHRoaXMuY3VycmVudFNreUFnR3JpZFdyYXBwZXIgPSB0aGlzLnNreUFnR3JpZFdyYXBwZXJMaXN0LmZpcnN0O1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50U2t5QWdHcmlkV3JhcHBlcikge1xuICAgICAgICB0aGlzLmN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyLnZpZXdrZWVwZXJDbGFzc2VzID0gW107XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyQWdHcmlkKCk6IHZvaWQge1xuICAgIHRoaXMudW5yZWdpc3RlckFnR3JpZCgpO1xuXG4gICAgY29uc3QgYWdHcmlkID0gdGhpcy5hZ0dyaWRMaXN0LmZpcnN0O1xuXG4gICAgdGhpcy5jdXJyZW50QWdHcmlkID0gYWdHcmlkO1xuXG4gICAgYWdHcmlkLmdyaWRSZWFkeS5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy52aWV3Q29uZmlnLm9uU2VsZWN0QWxsQ2xpY2sgPSB0aGlzLnNlbGVjdEFsbC5iaW5kKHRoaXMpO1xuICAgICAgdGhpcy52aWV3Q29uZmlnLm9uQ2xlYXJBbGxDbGljayA9IHRoaXMuY2xlYXJBbGwuYmluZCh0aGlzKTtcblxuICAgICAgdGhpcy5kYXRhTWFuYWdlclN2Yy51cGRhdGVWaWV3Q29uZmlnKHRoaXMudmlld0NvbmZpZyk7XG5cbiAgICAgIHRoaXMuZGF0YVN0YXRlU3ViID0gdGhpcy5kYXRhTWFuYWdlclN2Y1xuICAgICAgICAuZ2V0RGF0YVN0YXRlVXBkYXRlcyh0aGlzLnZpZXdDb25maWcuaWQpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChkYXRhU3RhdGU6IFNreURhdGFNYW5hZ2VyU3RhdGUpID0+IHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnREYXRhU3RhdGUgPSBkYXRhU3RhdGU7XG4gICAgICAgICAgdGhpcy5kaXNwbGF5Q29sdW1ucyhkYXRhU3RhdGUpO1xuICAgICAgICB9KTtcblxuICAgICAgYWdHcmlkLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XG4gICAgfSk7XG5cbiAgICBhZ0dyaWQuY29sdW1uTW92ZWRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgICAgZmlsdGVyKFxuICAgICAgICAgIChldmVudDogQ29sdW1uTW92ZWRFdmVudCkgPT5cbiAgICAgICAgICAgICFbXG4gICAgICAgICAgICAgICdncmlkSW5pdGlhbGl6aW5nJyxcbiAgICAgICAgICAgICAgJ3VpQ29sdW1uUmVzaXplZCcsXG4gICAgICAgICAgICAgICd1aUNvbHVtbkRyYWdnZWQnLFxuICAgICAgICAgICAgICAnYXBpJyxcbiAgICAgICAgICAgIF0uaW5jbHVkZXMoZXZlbnQuc291cmNlKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogQ29sdW1uTW92ZWRFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbnNJbkN1cnJlbnREYXRhU3RhdGUodmFsdWUuY29sdW1uQXBpKTtcbiAgICAgIH0pO1xuICAgIGxldCBjdXJyZW50Q29sdW1uczogc3RyaW5nW107XG4gICAgYWdHcmlkLmRyYWdTdGFydGVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBEcmFnU3RhcnRlZEV2ZW50KSA9PiB7XG4gICAgICAgIGN1cnJlbnRDb2x1bW5zID0gdGhpcy5nZXRDb2x1bW5PcmRlcih2YWx1ZS5jb2x1bW5BcGkpO1xuICAgICAgfSk7XG4gICAgYWdHcmlkLmRyYWdTdG9wcGVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBEcmFnU3RvcHBlZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbnMgPSB0aGlzLmdldENvbHVtbk9yZGVyKHZhbHVlLmNvbHVtbkFwaSk7XG4gICAgICAgIGNvbnN0IGhhc0NoYW5nZWQgPSBjdXJyZW50Q29sdW1ucy5maW5kSW5kZXgoXG4gICAgICAgICAgKGNvbElkLCBpKSA9PiBjb2xJZCAhPT0gbmV3Q29sdW1uc1tpXVxuICAgICAgICApO1xuICAgICAgICBpZiAoaGFzQ2hhbmdlZCA+IC0xKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVDb2x1bW5zSW5DdXJyZW50RGF0YVN0YXRlKHZhbHVlLmNvbHVtbkFwaSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgYWdHcmlkLnJvd1NlbGVjdGVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBSb3dTZWxlY3RlZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHJvdyA9IGV2ZW50Lm5vZGU7XG4gICAgICAgIGxldCBzZWxlY3RlZElkcyA9IHRoaXMuY3VycmVudERhdGFTdGF0ZS5zZWxlY3RlZElkcyB8fCBbXTtcbiAgICAgICAgY29uc3Qgcm93SW5kZXggPSBzZWxlY3RlZElkcy5pbmRleE9mKHJvdy5kYXRhLmlkKTtcblxuICAgICAgICBpZiAocm93LmlzU2VsZWN0ZWQoKSAmJiByb3dJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICBzZWxlY3RlZElkcy5wdXNoKHJvdy5kYXRhLmlkKTtcbiAgICAgICAgfSBlbHNlIGlmICghcm93LmlzU2VsZWN0ZWQoKSAmJiByb3dJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBzZWxlY3RlZElkcy5zcGxpY2Uocm93SW5kZXgsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50RGF0YVN0YXRlLnNlbGVjdGVkSWRzID0gc2VsZWN0ZWRJZHM7XG4gICAgICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMudXBkYXRlRGF0YVN0YXRlKFxuICAgICAgICAgIHRoaXMuY3VycmVudERhdGFTdGF0ZSxcbiAgICAgICAgICB0aGlzLnZpZXdDb25maWcuaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgYWdHcmlkLnNvcnRDaGFuZ2VkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCBncmlkQ29sdW1uU3RhdGVzOiBDb2x1bW5TdGF0ZVtdID0gYWdHcmlkLmNvbHVtbkFwaS5nZXRDb2x1bW5TdGF0ZSgpO1xuICAgICAgbGV0IHNvcnRPcHRpb246IFNreURhdGFNYW5hZ2VyU29ydE9wdGlvbjtcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChncmlkQ29sdW1uU3RhdGVzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBhY3RpdmVTb3J0Q29sdW1uU3RhdGUgPSBncmlkQ29sdW1uU3RhdGVzLmZpbmQoXG4gICAgICAgICAgKGFHcmlkQ29sdW1uU3RhdGUpID0+IGFHcmlkQ29sdW1uU3RhdGUuc29ydEluZGV4ID09PSAwXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgZGF0YU1hbmFnZXJDb25maWcgPVxuICAgICAgICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMuZ2V0Q3VycmVudERhdGFNYW5hZ2VyQ29uZmlnKCk7XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGRhdGFNYW5hZ2VyQ29uZmlnLnNvcnRPcHRpb25zICYmIGFjdGl2ZVNvcnRDb2x1bW5TdGF0ZSkge1xuICAgICAgICAgIHNvcnRPcHRpb24gPSBkYXRhTWFuYWdlckNvbmZpZy5zb3J0T3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgKG9wdGlvbjogU2t5RGF0YU1hbmFnZXJTb3J0T3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgb3B0aW9uLnByb3BlcnR5TmFtZSA9PT0gYWN0aXZlU29ydENvbHVtblN0YXRlLmNvbElkICYmXG4gICAgICAgICAgICAgICAgb3B0aW9uLmRlc2NlbmRpbmcgPT09IChhY3RpdmVTb3J0Q29sdW1uU3RhdGUuc29ydCA9PT0gJ2Rlc2MnKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc29ydE9wdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5jdXJyZW50RGF0YVN0YXRlLmFjdGl2ZVNvcnRPcHRpb24gPSBzb3J0T3B0aW9uO1xuICAgICAgdGhpcy5kYXRhTWFuYWdlclN2Yy51cGRhdGVEYXRhU3RhdGUoXG4gICAgICAgIHRoaXMuY3VycmVudERhdGFTdGF0ZSxcbiAgICAgICAgdGhpcy52aWV3Q29uZmlnLmlkXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb2x1bW5zSW5DdXJyZW50RGF0YVN0YXRlKGNvbHVtbkFwaTogQ29sdW1uQXBpKSB7XG4gICAgY29uc3QgY29sdW1uT3JkZXIgPSB0aGlzLmdldENvbHVtbk9yZGVyKGNvbHVtbkFwaSk7XG5cbiAgICBjb25zdCB2aWV3U3RhdGUgPSB0aGlzLmN1cnJlbnREYXRhU3RhdGUuZ2V0Vmlld1N0YXRlQnlJZChcbiAgICAgIHRoaXMudmlld0NvbmZpZy5pZFxuICAgICk7XG4gICAgdmlld1N0YXRlLmRpc3BsYXllZENvbHVtbklkcyA9IGNvbHVtbk9yZGVyO1xuXG4gICAgdGhpcy5kYXRhTWFuYWdlclN2Yy51cGRhdGVEYXRhU3RhdGUoXG4gICAgICB0aGlzLmN1cnJlbnREYXRhU3RhdGUuYWRkT3JVcGRhdGVWaWV3KHRoaXMudmlld0NvbmZpZy5pZCwgdmlld1N0YXRlKSxcbiAgICAgIHRoaXMudmlld0NvbmZpZy5pZFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldENvbHVtbk9yZGVyKGNvbHVtbkFwaTogQ29sdW1uQXBpKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBjb2x1bW5BcGlcbiAgICAgIC5nZXRBbGxEaXNwbGF5ZWRWaXJ0dWFsQ29sdW1ucygpXG4gICAgICAubWFwKChjb2wpID0+IGNvbC5nZXRDb2xEZWYoKS5jb2xJZCk7XG4gIH1cblxuICBwcml2YXRlIGRpc3BsYXlDb2x1bW5zKGRhdGFTdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IGFnR3JpZCA9IHRoaXMuY3VycmVudEFnR3JpZDtcbiAgICBjb25zdCB2aWV3U3RhdGUgPSBkYXRhU3RhdGUuZ2V0Vmlld1N0YXRlQnlJZCh0aGlzLnZpZXdDb25maWcuaWQpO1xuICAgIGxldCBkaXNwbGF5ZWRDb2x1bW5JZHM6IHN0cmluZ1tdID0gW107XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHZpZXdTdGF0ZS5kaXNwbGF5ZWRDb2x1bW5JZHMpIHtcbiAgICAgIGRpc3BsYXllZENvbHVtbklkcyA9IHZpZXdTdGF0ZS5kaXNwbGF5ZWRDb2x1bW5JZHM7XG4gICAgfVxuICAgIGNvbnN0IGNvbHVtbnMgPSBhZ0dyaWQuY29sdW1uQXBpLmdldEFsbENvbHVtbnMoKTtcblxuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICAgIGNvbnN0IGNvbElkID0gY29sdW1uLmdldENvbElkKCk7XG4gICAgICBjb25zdCBjb2xJbmRleCA9IGRpc3BsYXllZENvbHVtbklkcy5pbmRleE9mKGNvbElkKTtcblxuICAgICAgYWdHcmlkLmNvbHVtbkFwaS5zZXRDb2x1bW5WaXNpYmxlKGNvbElkLCBjb2xJbmRleCAhPT0gLTEpO1xuICAgICAgYWdHcmlkLmNvbHVtbkFwaS5tb3ZlQ29sdW1uKGNvbElkLCBjb2xJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgY29uc3QgYWdHcmlkID0gdGhpcy5hZ0dyaWRMaXN0LmZpcnN0O1xuICAgIGFnR3JpZC5hcGkuc2VsZWN0QWxsKCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyQWxsKCk6IHZvaWQge1xuICAgIGNvbnN0IGFnR3JpZCA9IHRoaXMuYWdHcmlkTGlzdC5maXJzdDtcbiAgICBhZ0dyaWQuYXBpLmRlc2VsZWN0QWxsKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1016,18 +1016,17 @@ class SkyAgGridDataManagerAdapterDirective {
|
|
|
1016
1016
|
this.changeDetector.markForCheck();
|
|
1017
1017
|
});
|
|
1018
1018
|
agGrid.sortChanged.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {
|
|
1019
|
-
const
|
|
1019
|
+
const gridColumnStates = agGrid.columnApi.getColumnState();
|
|
1020
1020
|
let sortOption;
|
|
1021
1021
|
/* istanbul ignore else */
|
|
1022
|
-
if (
|
|
1023
|
-
const
|
|
1024
|
-
const activeSortColumn = agGrid.columnApi.getColumn(activeSortModel.colId);
|
|
1022
|
+
if (gridColumnStates.length) {
|
|
1023
|
+
const activeSortColumnState = gridColumnStates.find((aGridColumnState) => aGridColumnState.sortIndex === 0);
|
|
1025
1024
|
const dataManagerConfig = this.dataManagerSvc.getCurrentDataManagerConfig();
|
|
1026
1025
|
/* istanbul ignore else */
|
|
1027
|
-
if (dataManagerConfig.sortOptions) {
|
|
1026
|
+
if (dataManagerConfig.sortOptions && activeSortColumnState) {
|
|
1028
1027
|
sortOption = dataManagerConfig.sortOptions.find((option) => {
|
|
1029
|
-
return (option.propertyName ===
|
|
1030
|
-
option.descending === (
|
|
1028
|
+
return (option.propertyName === activeSortColumnState.colId &&
|
|
1029
|
+
option.descending === (activeSortColumnState.sort === 'desc'));
|
|
1031
1030
|
});
|
|
1032
1031
|
}
|
|
1033
1032
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skyux-ag-grid.js","sources":["../../../projects/ag-grid/src/modules/ag-grid/ag-grid-adapter.service.ts","../../../projects/ag-grid/src/modules/ag-grid/ag-grid-wrapper.component.ts","../../../projects/ag-grid/src/modules/ag-grid/ag-grid-wrapper.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.html","../../../projects/ag-grid/src/modules/shared/ag-grid-resources.module.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.module.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.module.ts","../../../projects/ag-grid/src/modules/ag-grid/types/lookup-properties.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.module.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.module.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.module.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.module.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.module.ts","../../../projects/ag-grid/src/modules/ag-grid/ag-grid-data-manager-adapter.directive.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-validator/ag-grid-cell-validator.module.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.module.ts","../../../projects/ag-grid/src/modules/ag-grid/ag-grid-row-delete.component.ts","../../../projects/ag-grid/src/modules/ag-grid/ag-grid-row-delete.directive.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.module.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.module.ts","../../../projects/ag-grid/src/modules/ag-grid/ag-grid.module.ts","../../../projects/ag-grid/src/modules/ag-grid/types/cell-class.ts","../../../projects/ag-grid/src/modules/ag-grid/types/cell-type.ts","../../../projects/ag-grid/src/modules/ag-grid/types/header-class.ts","../../../projects/ag-grid/src/modules/ag-grid/ag-grid.service.ts","../../../projects/ag-grid/src/public-api.ts","../../../projects/ag-grid/src/skyux-ag-grid.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { SkyCoreAdapterService } from '@skyux/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAgGridAdapterService {\n constructor(private skyAdapterService: SkyCoreAdapterService) {}\n\n public getElementOrParentWithClass(\n element: HTMLElement,\n className: string\n ): HTMLElement | undefined {\n if (element && element.classList.contains(className)) {\n return element;\n } else if (element.parentElement) {\n return this.getElementOrParentWithClass(element.parentElement, className);\n }\n }\n\n public setFocusedElementById(parentEl: HTMLElement, selector: string): void {\n const element = parentEl.querySelector(`#${selector}`) as HTMLElement;\n\n /* istanbul ignore else */\n if (element) {\n element.focus();\n }\n }\n\n public getFocusedElement(): HTMLElement {\n return document.activeElement as HTMLElement;\n }\n\n public getNextFocusableElement(\n currentEl: HTMLElement,\n parentEl: HTMLElement,\n moveFocusLeft?: boolean\n ): HTMLElement | undefined {\n if (parentEl) {\n const focusableChildren =\n this.skyAdapterService.getFocusableChildren(parentEl);\n const currentElementIndex = focusableChildren.indexOf(currentEl);\n const nextIndex = moveFocusLeft\n ? currentElementIndex - 1\n : currentElementIndex + 1;\n\n if (\n (!moveFocusLeft && focusableChildren.length >= nextIndex) ||\n (moveFocusLeft && nextIndex >= 0)\n ) {\n return focusableChildren[nextIndex];\n }\n }\n }\n\n public focusOnFocusableChildren(element: HTMLElement): void {\n let focusableChildren =\n this.skyAdapterService.getFocusableChildren(element);\n\n if (focusableChildren.length) {\n focusableChildren[0].focus();\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n} from '@angular/core';\n\nimport { AgGridAngular } from 'ag-grid-angular';\n\nimport { DetailGridInfo } from 'ag-grid-community';\n\nimport { SkyAgGridAdapterService } from './ag-grid-adapter.service';\n\nlet idIndex = 0;\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-wrapper',\n templateUrl: './ag-grid-wrapper.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridWrapperComponent implements AfterContentInit {\n @ContentChild(AgGridAngular, {\n static: true,\n })\n public agGrid: AgGridAngular;\n\n public afterAnchorId: string;\n public beforeAnchorId: string;\n public gridId: string;\n\n public get viewkeeperClasses(): string[] {\n return this._viewkeeperClasses;\n }\n\n public set viewkeeperClasses(value: string[]) {\n this._viewkeeperClasses = value;\n this.changeDetector.markForCheck();\n }\n\n private _viewkeeperClasses: string[] = [];\n\n constructor(\n private adapterService: SkyAgGridAdapterService,\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef\n ) {\n idIndex++;\n this.afterAnchorId = 'sky-ag-grid-nav-anchor-after-' + idIndex;\n this.beforeAnchorId = 'sky-ag-grid-nav-anchor-before-' + idIndex;\n this.gridId = 'sky-ag-grid-' + idIndex;\n }\n\n public ngAfterContentInit(): void {\n if (\n this.agGrid.gridOptions &&\n this.agGrid.gridOptions.domLayout === 'autoHeight'\n ) {\n this.viewkeeperClasses.push('.ag-header');\n }\n }\n\n public onGridKeydown(event: KeyboardEvent): void {\n if (this.agGrid && !this.isInEditMode && event.key === 'Tab') {\n const idToFocus = event.shiftKey\n ? this.beforeAnchorId\n : this.afterAnchorId;\n this.adapterService.setFocusedElementById(\n this.elementRef.nativeElement,\n idToFocus\n );\n }\n }\n\n public onAnchorFocus(event: FocusEvent): void {\n const gridId = this.gridId;\n const relatedTarget = event.relatedTarget as HTMLElement;\n const previousFocusedId = relatedTarget && relatedTarget.id;\n const previousWasCell =\n relatedTarget &&\n !!this.adapterService.getElementOrParentWithClass(\n relatedTarget,\n 'ag-cell'\n );\n\n if (previousFocusedId !== gridId && !previousWasCell) {\n const columns = this.agGrid.columnApi.getAllDisplayedColumns();\n const firstColumn = columns && columns[0];\n const rowIndex = this.agGrid.api.getFirstDisplayedRow();\n\n if (firstColumn && rowIndex >= 0) {\n this.agGrid.api.setFocusedCell(rowIndex, firstColumn);\n }\n }\n }\n\n private get isInEditMode(): boolean {\n /* Sanity check */\n /* istanbul ignore else */\n if (this.agGrid && this.agGrid.api) {\n const primaryGridEditing = this.agGrid.api.getEditingCells().length > 0;\n if (primaryGridEditing) {\n return true;\n } else {\n let innerEditing: boolean = false;\n this.agGrid.api.forEachDetailGridInfo((detailGrid: DetailGridInfo) => {\n if (detailGrid.api.getEditingCells().length > 0) {\n innerEditing = true;\n }\n });\n\n return innerEditing;\n }\n } else {\n return false;\n }\n }\n}\n","<span\n class=\"nav-anchor\"\n tabindex=\"0\"\n [id]=\"beforeAnchorId\"\n (focusin)=\"onAnchorFocus($event)\"\n>\n</span>\n<div\n class=\"sky-ag-grid\"\n tabindex=\"0\"\n [id]=\"gridId\"\n [skyViewkeeper]=\"viewkeeperClasses\"\n (keydown)=\"onGridKeydown($event)\"\n>\n <ng-content></ng-content>\n</div>\n<span\n tabindex=\"0\"\n class=\"nav-anchor\"\n [id]=\"afterAnchorId\"\n (focusin)=\"onAnchorFocus($event)\"\n>\n</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewChild,\n} from '@angular/core';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellEditorAutocompleteParams } from '../../types/cell-editor-autocomplete-params';\n\nimport { SkyAutocompleteProperties } from '../../types/autocomplete-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-autocomplete',\n templateUrl: './cell-editor-autocomplete.component.html',\n styleUrls: ['./cell-editor-autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellEditorAutocompleteComponent\n implements ICellEditorAngularComp\n{\n public currentSelection: any;\n public columnHeader: string;\n public rowNumber: number;\n public skyComponentProperties: SkyAutocompleteProperties = {};\n private params: SkyCellEditorAutocompleteParams;\n\n @ViewChild('skyCellEditorAutocomplete', { read: ElementRef })\n public input: ElementRef;\n\n public agInit(params: SkyCellEditorAutocompleteParams) {\n this.params = params;\n this.currentSelection = this.params.value;\n this.columnHeader = this.params.colDef && this.params.colDef.headerName;\n this.rowNumber = this.params.rowIndex + 1;\n this.skyComponentProperties = this.params.skyComponentProperties || {};\n }\n\n public afterGuiAttached(): void {\n this.input.nativeElement.focus();\n }\n\n public getValue(): any {\n return this.currentSelection;\n }\n}\n","<div class=\"sky-ag-grid-cell-editor-autocomplete\">\n <sky-autocomplete\n [data]=\"skyComponentProperties.data\"\n [debounceTime]=\"skyComponentProperties.debounceTime\"\n [descriptorProperty]=\"skyComponentProperties.descriptorProperty\"\n [propertiesToSearch]=\"skyComponentProperties.propertiesToSearch\"\n [search]=\"skyComponentProperties.search\"\n [searchFilters]=\"skyComponentProperties.searchFilters\"\n [searchResultsLimit]=\"skyComponentProperties.searchResultsLimit\"\n [searchResultTemplate]=\"skyComponentProperties.searchResultTemplate\"\n [searchTextMinimumCharacters]=\"\n skyComponentProperties.searchTextMinimumCharacters\n \"\n (selectionChange)=\"\n skyComponentProperties.selectionChange &&\n skyComponentProperties.selectionChange($event)\n \"\n >\n <input\n skyAutocomplete\n #skyCellEditorAutocomplete\n type=\"text\"\n [(ngModel)]=\"currentSelection\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_autocomplete_aria_label'\n | skyLibResources: columnHeader:rowNumber\n \"\n />\n </sky-autocomplete>\n</div>\n","/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module modules/shared/ag-grid' schematic.\n * To update this file, simply rerun the command.\n */\n\nimport { NgModule } from '@angular/core';\nimport {\n getLibStringForLocale,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n SKY_LIB_RESOURCES_PROVIDERS,\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\n sky_ag_grid_row_selector_aria_label: {\n message: 'Row selector for row {0}',\n },\n sky_ag_grid_cell_editor_number_aria_label: {\n message: 'Editable number {0} for row {1}',\n },\n sky_ag_grid_cell_editor_text_aria_label: {\n message: 'Editable text {0} for row {1}',\n },\n sky_ag_grid_cell_editor_autocomplete_aria_label: {\n message: 'Editable autocomplete {0} for row {1}',\n },\n sky_ag_grid_cell_renderer_currency_aria_label: {\n message: 'Editable currency {0} for row {1}',\n },\n sky_ag_grid_cell_renderer_number_validator_message: {\n message: 'Please enter a valid number',\n },\n sky_ag_grid_cell_renderer_currency_validator_message: {\n message: 'Please enter a valid currency',\n },\n skyux_lookup_tokens_summary: { message: '{0} items selected' },\n },\n};\n\nexport class AgGridResourcesProvider implements SkyLibResourcesProvider {\n public getString(localeInfo: SkyAppLocaleInfo, name: string): string {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [\n {\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: AgGridResourcesProvider,\n multi: true,\n },\n ],\n})\nexport class AgGridResourcesModule {}\n","import { NgModule } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\n\nimport { SkyAutocompleteModule } from '@skyux/lookup';\n\nimport { SkyAgGridCellEditorAutocompleteComponent } from '../cell-editor-autocomplete/cell-editor-autocomplete.component';\n\nimport { AgGridResourcesModule } from '../../../shared/ag-grid-resources.module';\n\n@NgModule({\n imports: [FormsModule, AgGridResourcesModule, SkyAutocompleteModule],\n declarations: [SkyAgGridCellEditorAutocompleteComponent],\n exports: [SkyAgGridCellEditorAutocompleteComponent],\n})\nexport class SkyAgGridCellEditorAutocompleteModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Optional,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\n\nimport { PopupComponent } from 'ag-grid-community';\n\nimport { SkyCellEditorDatepickerParams } from '../../types/cell-editor-datepicker-params';\n\nimport { SkyDatepickerProperties } from '../../types/datepicker-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-datepicker',\n templateUrl: './cell-editor-datepicker.component.html',\n styleUrls: ['./cell-editor-datepicker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SkyAgGridCellEditorDatepickerComponent\n extends PopupComponent\n implements ICellEditorAngularComp\n{\n public columnWidth: number;\n public currentDate: Date;\n public columnWidthWithoutBorders: number;\n public rowHeightWithoutBorders: number;\n public skyComponentProperties: SkyDatepickerProperties = {};\n private params: SkyCellEditorDatepickerParams;\n\n @ViewChild('skyCellEditorDatepickerInput', { read: ElementRef })\n private datepickerInput: ElementRef;\n\n constructor(@Optional() private themeSvc?: SkyThemeService) {\n super();\n }\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorDatepickerParams): void {\n this.params = params;\n this.currentDate = this.params.value;\n this.skyComponentProperties = this.params.skyComponentProperties || {};\n this.columnWidth = this.params.column.getActualWidth();\n this.columnWidthWithoutBorders = this.columnWidth - 2;\n this.rowHeightWithoutBorders =\n this.params.node && this.params.node.rowHeight - 3;\n this.themeSvc?.settingsChange.subscribe((themeSettings) => {\n if (themeSettings.currentSettings.theme.name === 'modern') {\n this.columnWidthWithoutBorders = this.columnWidth;\n this.rowHeightWithoutBorders =\n this.params.node && this.params.node.rowHeight;\n } else {\n this.columnWidthWithoutBorders = this.columnWidth - 2;\n this.rowHeightWithoutBorders =\n this.params.node && this.params.node.rowHeight - 3;\n }\n });\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n this.focusOnDatepickerInput();\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): Date {\n this.datepickerInput.nativeElement.blur();\n return this.currentDate;\n }\n\n public focusOnDatepickerInput(): void {\n this.datepickerInput.nativeElement.focus();\n }\n}\n","<div\n class=\"sky-ag-grid-cell-editor-datepicker\"\n [style.width.px]=\"columnWidthWithoutBorders\"\n>\n <sky-datepicker\n data-sky-id=\"cell-datepicker\"\n pickerClass=\"ag-custom-component-popup\"\n >\n <input\n skyDatepickerInput\n [disabled]=\"skyComponentProperties.disabled\"\n [minDate]=\"skyComponentProperties.minDate\"\n [maxDate]=\"skyComponentProperties.maxDate\"\n [dateFormat]=\"skyComponentProperties.dateFormat\"\n [startingDay]=\"skyComponentProperties.startingDay\"\n [skyDatepickerNoValidate]=\"skyComponentProperties.skyDatepickerNoValidate\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n [(ngModel)]=\"currentDate\"\n #skyCellEditorDatepickerInput\n />\n </sky-datepicker>\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\n\nimport { SkyDatepickerModule } from '@skyux/datetime';\n\nimport { SkyAgGridCellEditorDatepickerComponent } from '../cell-editor-datepicker/cell-editor-datepicker.component';\n\n@NgModule({\n imports: [SkyDatepickerModule, FormsModule],\n declarations: [SkyAgGridCellEditorDatepickerComponent],\n exports: [SkyAgGridCellEditorDatepickerComponent],\n})\nexport class SkyAgGridCellEditorDatepickerModule {}\n","import { TemplateRef } from '@angular/core';\nimport {\n SkyAutocompleteSearchFunction,\n SkyAutocompleteSearchFunctionFilter,\n SkyLookupSelectModeType,\n SkyLookupShowMoreConfig,\n} from '@skyux/lookup';\n\nexport interface SkyLookupProperties {\n ariaLabel?: string;\n autocompleteAttribute?: string;\n data: any[];\n debounceTime?: number;\n descriptorProperty?: string;\n disabled?: boolean;\n enableShowMore?: boolean;\n idProperty?: string;\n placeholderText?: string;\n propertiesToSearch?: string[];\n search?: SkyAutocompleteSearchFunction;\n searchFilters?: SkyAutocompleteSearchFunctionFilter[];\n searchResultsLimit?: number;\n searchResultTemplate?: TemplateRef<any>;\n searchTextMinimumCharacters?: number;\n selectMode?: SkyLookupSelectModeType;\n showAddButton?: boolean;\n showMoreConfig?: SkyLookupShowMoreConfig;\n wrapperClass?: string;\n}\n\nexport function applySkyLookupPropertiesDefaults(\n skyLookupProperties: SkyLookupProperties\n) {\n return {\n ariaLabel: skyLookupProperties.ariaLabel || '',\n autocompleteAttribute: skyLookupProperties.autocompleteAttribute || 'off',\n data: skyLookupProperties.data || [],\n debounceTime: skyLookupProperties.debounceTime || 0,\n descriptorProperty: skyLookupProperties.descriptorProperty || 'name',\n disabled: skyLookupProperties.disabled || false,\n enableShowMore: skyLookupProperties.enableShowMore || false,\n idProperty: skyLookupProperties.idProperty || undefined,\n placeholderText: skyLookupProperties.placeholderText || '',\n propertiesToSearch: skyLookupProperties.propertiesToSearch || undefined,\n search: skyLookupProperties.search || undefined,\n searchFilters: skyLookupProperties.searchFilters || [],\n searchResultsLimit: skyLookupProperties.searchResultsLimit || undefined,\n searchResultTemplate: skyLookupProperties.searchResultTemplate || undefined,\n searchTextMinimumCharacters:\n skyLookupProperties.searchTextMinimumCharacters || 1,\n selectMode: skyLookupProperties.selectMode || undefined,\n showAddButton: skyLookupProperties.showAddButton || false,\n showMoreConfig: skyLookupProperties.showMoreConfig || {},\n wrapperClass: 'ag-custom-component-popup',\n };\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n} from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\nimport { IPopupComponent } from 'ag-grid-community/dist/lib/interfaces/iPopupComponent';\nimport { SkyCellEditorLookupParams } from '../../types/cell-editor-lookup-params';\nimport {\n applySkyLookupPropertiesDefaults,\n SkyLookupProperties,\n} from '../../types/lookup-properties';\n\n@Component({\n selector: 'sky-ag-grid-cell-editor-lookup',\n templateUrl: './cell-editor-lookup.component.html',\n styleUrls: ['./cell-editor-lookup.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellEditorLookupComponent\n implements ICellEditorAngularComp, IPopupComponent<any>\n{\n public skyComponentProperties?: SkyLookupProperties;\n public isAlive = true;\n public lookupForm = new FormGroup({\n currentSelection: new FormControl({\n value: [],\n disabled: false,\n }),\n });\n\n private params: SkyCellEditorLookupParams;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef\n ) {}\n\n public agInit(params: SkyCellEditorLookupParams): void {\n this.params = params;\n if (!Array.isArray(this.params.value)) {\n throw new Error(`Lookup value must be an array`);\n }\n const control = this.lookupForm.get('currentSelection');\n control.setValue(this.params.value);\n if (this.params.skyComponentProperties.disabled) {\n control.disable();\n }\n this.skyComponentProperties = this.updateComponentProperties(this.params);\n this.changeDetector.markForCheck();\n }\n\n public isCancelAfterEnd(): boolean {\n // Shut down components to commit values before final value syncs to grid.\n this.isAlive = false;\n this.changeDetector.detectChanges();\n return false;\n }\n\n public getGui(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n public getValue(): any[] {\n return this.lookupForm.get('currentSelection').value;\n }\n\n public isPopup(): boolean {\n return true;\n }\n\n /*istanbul ignore next*/\n public afterGuiAttached(): void {\n this.elementRef.nativeElement.querySelector('.sky-lookup-input')?.focus();\n }\n\n private updateComponentProperties(\n params: SkyCellEditorLookupParams\n ): SkyLookupProperties {\n const skyLookupProperties = params.skyComponentProperties;\n return applySkyLookupPropertiesDefaults(skyLookupProperties);\n }\n}\n","<sky-input-box\n *ngIf=\"isAlive\"\n [disabled]=\"skyComponentProperties?.disabled\"\n [formGroup]=\"lookupForm\"\n>\n <sky-lookup\n [ariaLabel]=\"skyComponentProperties?.ariaLabel\"\n [autocompleteAttribute]=\"skyComponentProperties?.autocompleteAttribute\"\n [data]=\"skyComponentProperties?.data\"\n [debounceTime]=\"skyComponentProperties?.debounceTime\"\n [descriptorProperty]=\"skyComponentProperties?.descriptorProperty\"\n [enableShowMore]=\"skyComponentProperties?.enableShowMore\"\n formControlName=\"currentSelection\"\n [idProperty]=\"skyComponentProperties?.idProperty\"\n [placeholderText]=\"skyComponentProperties?.placeholderText\"\n [propertiesToSearch]=\"skyComponentProperties?.propertiesToSearch\"\n [search]=\"skyComponentProperties?.search\"\n [searchFilters]=\"skyComponentProperties?.searchFilters\"\n [searchResultsLimit]=\"skyComponentProperties?.searchResultsLimit\"\n [searchResultTemplate]=\"skyComponentProperties?.searchResultTemplate\"\n [searchTextMinimumCharacters]=\"\n skyComponentProperties?.searchTextMinimumCharacters\n \"\n [selectMode]=\"skyComponentProperties?.selectMode\"\n [showAddButton]=\"skyComponentProperties?.showAddButton\"\n [showMoreConfig]=\"skyComponentProperties?.showMoreConfig\"\n [wrapperClass]=\"skyComponentProperties?.wrapperClass\"\n >\n </sky-lookup>\n</sky-input-box>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { SkyInputBoxModule } from '@skyux/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyLookupModule } from '@skyux/lookup';\nimport { SkyAgGridCellEditorLookupComponent } from './cell-editor-lookup.component';\n\n@NgModule({\n declarations: [SkyAgGridCellEditorLookupComponent],\n exports: [SkyAgGridCellEditorLookupComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n SkyI18nModule,\n SkyInputBoxModule,\n SkyLookupModule,\n ],\n})\nexport class SkyAgGridCellEditorLookupModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewChild,\n} from '@angular/core';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\n\nimport { ICellEditorParams } from 'ag-grid-community';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-number',\n templateUrl: './cell-editor-number.component.html',\n styleUrls: ['./cell-editor-number.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellEditorNumberComponent\n implements ICellEditorAngularComp\n{\n public value: number;\n public columnHeader: string;\n public columnWidth: number;\n public rowHeightWithoutBorders: number;\n public rowNumber: number;\n\n private params: ICellEditorParams;\n\n @ViewChild('skyCellEditorNumber', { read: ElementRef })\n private input: ElementRef;\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: ICellEditorParams): void {\n this.params = params;\n this.value = this.params.value;\n this.columnHeader = this.params.colDef.headerName;\n this.rowNumber = this.params.rowIndex + 1;\n this.columnWidth = this.params.column.getActualWidth();\n this.rowHeightWithoutBorders =\n this.params.node && this.params.node.rowHeight - 4;\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n this.input.nativeElement.focus();\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): number {\n return this.value;\n }\n}\n","<input\n type=\"number\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_number_aria_label'\n | skyLibResources: columnHeader:rowNumber\n \"\n [style.width.px]=\"columnWidth\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n [(ngModel)]=\"value\"\n #skyCellEditorNumber\n/>\n","import { NgModule } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\n\nimport { AgGridResourcesModule } from '../../../shared/ag-grid-resources.module';\n\nimport { SkyAgGridCellEditorNumberComponent } from '../cell-editor-number/cell-editor-number.component';\n\n@NgModule({\n imports: [AgGridResourcesModule, FormsModule],\n declarations: [SkyAgGridCellEditorNumberComponent],\n exports: [SkyAgGridCellEditorNumberComponent],\n})\nexport class SkyAgGridCellEditorNumberModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewChild,\n} from '@angular/core';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\n\nimport { ICellEditorParams } from 'ag-grid-community';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-text',\n templateUrl: './cell-editor-text.component.html',\n styleUrls: ['./cell-editor-text.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellEditorTextComponent\n implements ICellEditorAngularComp\n{\n public value: string;\n public textInputLabel: string;\n public columnHeader: string;\n public columnWidth: number;\n public rowHeightWithoutBorders: number;\n public rowNumber: number;\n\n private params: ICellEditorParams;\n\n @ViewChild('skyCellEditorText', { read: ElementRef })\n private input: ElementRef;\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: ICellEditorParams): void {\n this.params = params;\n this.value = this.params.charPress || this.params.value;\n this.columnHeader = this.params.colDef.headerName;\n this.rowNumber = this.params.rowIndex + 1;\n this.columnWidth = this.params.column.getActualWidth();\n this.rowHeightWithoutBorders =\n this.params.node && this.params.node.rowHeight - 4;\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n this.input.nativeElement.focus();\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): string {\n return this.value;\n }\n}\n","<input\n type=\"text\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_text_aria_label'\n | skyLibResources: columnHeader:rowNumber\n \"\n [style.width.px]=\"columnWidth\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n [(ngModel)]=\"value\"\n #skyCellEditorText\n/>\n","import { NgModule } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\n\nimport { AgGridResourcesModule } from '../../../shared/ag-grid-resources.module';\n\nimport { SkyAgGridCellEditorTextComponent } from './cell-editor-text.component';\n\n@NgModule({\n imports: [AgGridResourcesModule, FormsModule],\n declarations: [SkyAgGridCellEditorTextComponent],\n exports: [SkyAgGridCellEditorTextComponent],\n})\nexport class SkyAgGridCellEditorTextModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n} from '@angular/core';\nimport { SkyPopoverMessage, SkyPopoverMessageType } from '@skyux/popovers';\nimport { CellFocusedEvent, Events } from 'ag-grid-community';\nimport { Subject } from 'rxjs';\nimport { SkyCellRendererValidatorParams } from '../types/cell-renderer-validator-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-validator-tooltip',\n styleUrls: ['ag-grid-cell-validator-tooltip.component.scss'],\n templateUrl: 'ag-grid-cell-validator-tooltip.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellValidatorTooltipComponent {\n @Input()\n public set params(value: SkyCellRendererValidatorParams) {\n this.cellRendererParams = value;\n\n /*istanbul ignore next*/\n this.cellRendererParams.api?.addEventListener(\n Events.EVENT_CELL_FOCUSED,\n (eventParams: CellFocusedEvent) => {\n // We want to close any popovers that are opened when other cells are focused, but open a popover if the current cell is focused.\n if (\n eventParams.column.getColId() !==\n this.cellRendererParams.column.getColId() ||\n eventParams.rowIndex !== this.cellRendererParams.rowIndex\n ) {\n this.hidePopover();\n }\n }\n );\n\n /*istanbul ignore next*/\n this.cellRendererParams.eGridCell?.addEventListener('keyup', (event) => {\n if (\n ['ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowUp'].includes(event.key)\n ) {\n this.showPopover();\n }\n });\n\n /*istanbul ignore next*/\n this.cellRendererParams.api?.addEventListener(\n Events.EVENT_CELL_EDITING_STARTED,\n () => {\n this.hidePopover();\n }\n );\n\n if (\n typeof this.cellRendererParams.skyComponentProperties\n ?.validatorMessage === 'function'\n ) {\n this.validatorMessage =\n this.cellRendererParams.skyComponentProperties.validatorMessage(\n this.cellRendererParams.value,\n this.cellRendererParams.data,\n this.cellRendererParams.rowIndex\n );\n } else {\n this.validatorMessage =\n this.cellRendererParams.skyComponentProperties?.validatorMessage;\n }\n\n this.changeDetector.markForCheck();\n }\n\n public indicatorShouldShow = true;\n public popoverMessageStream = new Subject<SkyPopoverMessage>();\n public validatorMessage: string;\n\n public cellRendererParams: SkyCellRendererValidatorParams;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private zone: NgZone\n ) {}\n\n public hideIndicator(): void {\n this.zone.run(() => {\n this.indicatorShouldShow = false;\n this.changeDetector.detectChanges();\n });\n }\n\n public hidePopover(): void {\n this.popoverMessageStream.next({ type: SkyPopoverMessageType.Close });\n }\n\n public showIndicator(): void {\n this.zone.run(() => {\n this.indicatorShouldShow = true;\n this.changeDetector.detectChanges();\n });\n }\n\n public showPopover(): void {\n this.popoverMessageStream.next({ type: SkyPopoverMessageType.Open });\n }\n}\n","<div\n [skyPopover]=\"validatorPopover\"\n [skyPopoverMessageStream]=\"popoverMessageStream\"\n class=\"sky-validator-cell\"\n>\n <ng-content></ng-content>\n <sky-status-indicator\n *ngIf=\"indicatorShouldShow\"\n descriptionType=\"none\"\n indicatorType=\"danger\"\n class=\"sky-pull-right\"\n ></sky-status-indicator>\n</div>\n<sky-popover\n #validatorPopover\n (popoverClosed)=\"showIndicator()\"\n (popoverOpened)=\"hideIndicator()\"\n popoverType=\"danger\"\n>\n {{ validatorMessage }}\n</sky-popover>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NumericOptions } from '@skyux/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellRendererCurrencyParams } from '../../types/cell-renderer-currency-params';\n\nimport { ValidatorOptions } from '../../types/validator-options';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-currency',\n templateUrl: './cell-renderer-currency.component.html',\n styleUrls: ['./cell-renderer-currency.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellRendererCurrencyComponent\n implements ICellRendererAngularComp\n{\n @Input()\n public set params(value: SkyCellRendererCurrencyParams) {\n this.agInit(value);\n }\n\n public columnHeader: string;\n public columnWidth: number;\n public rowHeightWithoutBorders: number;\n public rowNumber: number;\n public skyComponentProperties: NumericOptions & ValidatorOptions = {};\n public numericOptions: NumericOptions = {};\n public value: number;\n\n private _params: SkyCellRendererCurrencyParams;\n\n /**\n * agInit is called by agGrid once after the renderer is created and provides the renderer with the information it needs.\n * @param params The cell renderer params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellRendererCurrencyParams) {\n this.updateProperties(params);\n }\n\n public refresh(params: SkyCellRendererCurrencyParams): boolean {\n return false;\n }\n\n private updateProperties(params: SkyCellRendererCurrencyParams) {\n this._params = params;\n this.value = this._params.value;\n this.columnHeader = this._params.colDef && this._params.colDef.headerName;\n this.rowNumber = this._params.rowIndex + 1;\n this.columnWidth = this._params.column?.getActualWidth();\n this.rowHeightWithoutBorders =\n this._params.node && this._params.node.rowHeight - 4;\n this.skyComponentProperties = this._params.skyComponentProperties || {};\n this.skyComponentProperties.format = 'currency';\n this.skyComponentProperties.minDigits = 2;\n this.skyComponentProperties.truncate = false;\n }\n}\n","<span\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_renderer_currency_aria_label'\n | skyLibResources: columnHeader:rowNumber\n \"\n [style.width.px]=\"columnWidth\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n>\n {{ value | skyNumeric: skyComponentProperties }}\n</span>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n} from '@angular/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellRendererCurrencyParams } from '../../types/cell-renderer-currency-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-currency-validator',\n templateUrl: 'cell-renderer-currency-validator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellRendererCurrencyValidatorComponent\n implements ICellRendererAngularComp\n{\n @Input()\n public set parameters(value: SkyCellRendererCurrencyParams) {\n this.agInit(value);\n }\n\n public cellRendererParams: SkyCellRendererCurrencyParams;\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n /**\n * agInit is called by agGrid once after the renderer is created and provides the renderer with the information it needs.\n * @param params The cell renderer params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellRendererCurrencyParams) {\n this.cellRendererParams = params;\n this.changeDetector.markForCheck();\n }\n\n public isNumeric(value: any) {\n return !isNaN(parseFloat(value));\n }\n\n public refresh(params: SkyCellRendererCurrencyParams): boolean {\n return false;\n }\n}\n","<sky-ag-grid-cell-validator-tooltip [params]=\"cellRendererParams\">\n <sky-ag-grid-cell-renderer-currency\n *ngIf=\"isNumeric(cellRendererParams.value); else rawValue\"\n [params]=\"cellRendererParams\"\n ></sky-ag-grid-cell-renderer-currency>\n <ng-template #rawValue>{{ cellRendererParams.value }}</ng-template>\n</sky-ag-grid-cell-validator-tooltip>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n} from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { SkyCellRendererLookupParams } from '../../types/cell-renderer-lookup-params';\nimport {\n applySkyLookupPropertiesDefaults,\n SkyLookupProperties,\n} from '../../types/lookup-properties';\n\n@Component({\n selector: 'sky-cell-renderer-lookup',\n templateUrl: './cell-renderer-lookup.component.html',\n styleUrls: ['./cell-renderer-lookup.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellRendererLookupComponent\n implements ICellRendererAngularComp\n{\n public value: string = '';\n public summaryCount = 0;\n private lookupProperties: SkyLookupProperties;\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n public agInit(params: SkyCellRendererLookupParams): void {\n this.lookupProperties = applySkyLookupPropertiesDefaults(params);\n this.summaryCount = params.value?.length || 0;\n this.value = `${params.valueFormatted}`;\n this.changeDetector.markForCheck();\n }\n\n public refresh(params: SkyCellRendererLookupParams): boolean {\n this.agInit(params);\n return true;\n }\n}\n","<ng-container *ngIf=\"summaryCount > 5; else showValue\">\n {{ 'skyux_lookup_tokens_summary' | skyLibResources: summaryCount }}\n</ng-container>\n<ng-template #showValue>{{ value }}</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AgGridResourcesModule } from '../../../shared/ag-grid-resources.module';\nimport { SkyAgGridCellRendererLookupComponent } from './cell-renderer-lookup.component';\n\n@NgModule({\n declarations: [SkyAgGridCellRendererLookupComponent],\n exports: [SkyAgGridCellRendererLookupComponent],\n imports: [CommonModule, AgGridResourcesModule],\n})\nexport class SkyAgGridCellRendererLookupModule {}\n","import {\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nimport {\n ICellRendererParams,\n RowNode,\n RowSelectedEvent,\n} from 'ag-grid-community';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-row-selector',\n templateUrl: './cell-renderer-row-selector.component.html',\n styleUrls: ['./cell-renderer-row-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SkyAgGridCellRendererRowSelectorComponent\n implements ICellRendererAngularComp\n{\n public checked: boolean;\n public dataField: string;\n public rowNode: RowNode;\n public rowNumber: number;\n\n private params: ICellRendererParams;\n\n constructor(private changeDetection: ChangeDetectorRef) {}\n\n /**\n * agInit is called by agGrid once after the cell is created and provides the renderer with the information it needs.\n * @param params The cell renderer params that include data about the cell, column, row, and grid.\n */\n public agInit(params: ICellRendererParams): void {\n this.params = params;\n this.dataField = this.params.colDef && this.params.colDef.field;\n this.rowNode = this.params.node;\n this.rowNumber = this.params.rowIndex + 1;\n\n if (this.dataField) {\n this.checked = this.params.value;\n this.rowNode.setSelected(this.checked);\n } else {\n this.checked = this.rowNode.isSelected();\n }\n\n this.rowNode.addEventListener(\n RowNode.EVENT_ROW_SELECTED,\n (event: RowSelectedEvent) => {\n this.rowSelectedListener(event);\n }\n );\n }\n\n /**\n * Used by agGrid to update cell value after a user triggers a refresh. It updates the cell DOM and returns true when the refresh is\n * successful, or false if the cell should be destroyed and rerendered. If consumers have external logic that changes the value of a\n * checkbox cell, rerendering it will gurantee the change applies without knowing the consumer's implementation.\n */\n public refresh(): boolean {\n return false;\n }\n\n public updateRow(): void {\n this.rowNode.setSelected(this.checked);\n\n if (this.dataField) {\n this.rowNode.data[this.dataField] = this.checked;\n }\n }\n\n private rowSelectedListener(event: RowSelectedEvent): void {\n this.checked = event.node.isSelected();\n\n if (this.dataField) {\n this.rowNode.data[this.dataField] = this.checked;\n }\n\n this.changeDetection.markForCheck();\n }\n}\n","<sky-checkbox\n data-sky-id=\"row-checkbox\"\n tabindex=\"-1\"\n [label]=\"'sky_ag_grid_row_selector_aria_label' | skyLibResources: rowNumber\"\n [attr.aria-label]=\"\n 'sky_ag_grid_row_selector_aria_label' | skyLibResources: rowNumber\n \"\n [(ngModel)]=\"checked\"\n (change)=\"updateRow()\"\n>\n</sky-checkbox>\n","import { NgModule } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\n\nimport { SkyCheckboxModule } from '@skyux/forms';\n\nimport { AgGridResourcesModule } from '../../../shared/ag-grid-resources.module';\n\nimport { SkyAgGridCellRendererRowSelectorComponent } from '../cell-renderer-row-selector/cell-renderer-row-selector.component';\n\n@NgModule({\n imports: [AgGridResourcesModule, SkyCheckboxModule, FormsModule],\n declarations: [SkyAgGridCellRendererRowSelectorComponent],\n exports: [SkyAgGridCellRendererRowSelectorComponent],\n})\nexport class SkyAgGridCellRendererRowSelectorModule {}\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n ContentChildren,\n Directive,\n Input,\n OnDestroy,\n QueryList,\n} from '@angular/core';\n\nimport { Subject, Subscription } from 'rxjs';\n\nimport { takeUntil, filter } from 'rxjs/operators';\n\nimport { AgGridAngular } from 'ag-grid-angular';\n\nimport {\n ColumnApi,\n ColumnMovedEvent,\n DragStartedEvent,\n DragStoppedEvent,\n RowSelectedEvent,\n} from 'ag-grid-community';\n\nimport {\n SkyDataManagerService,\n SkyDataManagerSortOption,\n SkyDataManagerState,\n SkyDataViewConfig,\n} from '@skyux/data-manager';\n\nimport { SkyAgGridWrapperComponent } from './ag-grid-wrapper.component';\n\n/**\n * @internal\n */\n@Directive({\n selector: '[skyAgGridDataManagerAdapter]',\n})\nexport class SkyAgGridDataManagerAdapterDirective\n implements AfterContentInit, OnDestroy\n{\n @Input()\n public viewId: string;\n\n @ContentChildren(AgGridAngular, { descendants: true })\n public agGridList: QueryList<AgGridAngular>;\n\n @ContentChildren(SkyAgGridWrapperComponent, { descendants: true })\n public skyAgGridWrapperList: QueryList<SkyAgGridWrapperComponent>;\n\n private currentAgGrid: AgGridAngular;\n private currentDataState: SkyDataManagerState;\n private currentSkyAgGridWrapper: SkyAgGridWrapperComponent;\n private dataStateSub: Subscription;\n private viewConfig: SkyDataViewConfig;\n private ngUnsubscribe = new Subject();\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private dataManagerSvc: SkyDataManagerService\n ) {}\n\n public ngAfterContentInit(): void {\n this.dataManagerSvc.setViewkeeperClasses(this.viewId, ['.ag-header']);\n\n this.viewConfig = this.dataManagerSvc.getViewById(this.viewId);\n this.checkForAgGrid();\n this.checkForSkyAgGridWrapper();\n\n this.agGridList.changes\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => this.checkForAgGrid());\n\n this.skyAgGridWrapperList.changes\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => this.checkForSkyAgGridWrapper());\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n private checkForAgGrid(): void {\n const agGridCount = this.agGridList.length;\n\n /* istanbul ignore else */\n if (agGridCount === 0) {\n this.unregisterAgGrid();\n } else if (this.agGridList.first !== this.currentAgGrid) {\n this.registerAgGrid();\n }\n\n if (agGridCount > 1) {\n console.warn(\n 'More than one ag-grid child component was found. Using the first ag-Grid.'\n );\n }\n }\n\n private checkForSkyAgGridWrapper(): void {\n const skyAgGridWrapperCount = this.skyAgGridWrapperList.length;\n\n /* istanbul ignore else */\n if (skyAgGridWrapperCount === 0) {\n this.unregisterSkyAgGridWrapper();\n } else if (\n this.skyAgGridWrapperList.first !== this.currentSkyAgGridWrapper\n ) {\n this.registerSkyAgGridWrapper();\n }\n\n if (skyAgGridWrapperCount > 1) {\n console.warn(\n 'More than one ag-grid child component was found. Using the first ag-Grid.'\n );\n }\n }\n\n private unregisterAgGrid(): void {\n this.currentAgGrid = undefined;\n\n /* istanbul ignore if */\n if (this.dataStateSub) {\n this.dataStateSub.unsubscribe();\n }\n }\n\n private unregisterSkyAgGridWrapper(): void {\n this.currentSkyAgGridWrapper = undefined;\n }\n\n private registerSkyAgGridWrapper(): void {\n this.unregisterSkyAgGridWrapper();\n\n this.currentSkyAgGridWrapper = this.skyAgGridWrapperList.first;\n\n setTimeout(() => {\n if (this.currentSkyAgGridWrapper) {\n this.currentSkyAgGridWrapper.viewkeeperClasses = [];\n }\n });\n }\n\n private registerAgGrid(): void {\n this.unregisterAgGrid();\n\n const agGrid = this.agGridList.first;\n\n this.currentAgGrid = agGrid;\n\n agGrid.gridReady.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {\n this.viewConfig.onSelectAllClick = this.selectAll.bind(this);\n this.viewConfig.onClearAllClick = this.clearAll.bind(this);\n\n this.dataManagerSvc.updateViewConfig(this.viewConfig);\n\n this.dataStateSub = this.dataManagerSvc\n .getDataStateUpdates(this.viewConfig.id)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((dataState: SkyDataManagerState) => {\n this.currentDataState = dataState;\n this.displayColumns(dataState);\n });\n\n agGrid.api.sizeColumnsToFit();\n });\n\n agGrid.columnMoved\n .pipe(\n takeUntil(this.ngUnsubscribe),\n filter(\n (event: ColumnMovedEvent) =>\n ![\n 'gridInitializing',\n 'uiColumnResized',\n 'uiColumnDragged',\n 'api',\n ].includes(event.source)\n )\n )\n .subscribe((value: ColumnMovedEvent) => {\n this.updateColumnsInCurrentDataState(value.columnApi);\n });\n let currentColumns: string[];\n agGrid.dragStarted\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((value: DragStartedEvent) => {\n currentColumns = this.getColumnOrder(value.columnApi);\n });\n agGrid.dragStopped\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((value: DragStoppedEvent) => {\n const newColumns = this.getColumnOrder(value.columnApi);\n const hasChanged = currentColumns.findIndex(\n (colId, i) => colId !== newColumns[i]\n );\n if (hasChanged > -1) {\n this.updateColumnsInCurrentDataState(value.columnApi);\n }\n });\n\n agGrid.rowSelected\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((event: RowSelectedEvent) => {\n const row = event.node;\n let selectedIds = this.currentDataState.selectedIds || [];\n const rowIndex = selectedIds.indexOf(row.data.id);\n\n if (row.isSelected() && rowIndex === -1) {\n selectedIds.push(row.data.id);\n } else if (!row.isSelected() && rowIndex !== -1) {\n selectedIds.splice(rowIndex, 1);\n }\n\n this.currentDataState.selectedIds = selectedIds;\n this.dataManagerSvc.updateDataState(\n this.currentDataState,\n this.viewConfig.id\n );\n this.changeDetector.markForCheck();\n });\n\n agGrid.sortChanged.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {\n const gridSortModel = agGrid.api.getSortModel();\n let sortOption: SkyDataManagerSortOption;\n\n /* istanbul ignore else */\n if (gridSortModel.length) {\n const activeSortModel = gridSortModel[0];\n const activeSortColumn = agGrid.columnApi.getColumn(\n activeSortModel.colId\n );\n const dataManagerConfig =\n this.dataManagerSvc.getCurrentDataManagerConfig();\n\n /* istanbul ignore else */\n if (dataManagerConfig.sortOptions) {\n sortOption = dataManagerConfig.sortOptions.find(\n (option: SkyDataManagerSortOption) => {\n return (\n option.propertyName === activeSortColumn.getColDef().field &&\n option.descending === (activeSortModel.sort === 'desc')\n );\n }\n );\n } else {\n sortOption = undefined;\n }\n }\n this.currentDataState.activeSortOption = sortOption;\n this.dataManagerSvc.updateDataState(\n this.currentDataState,\n this.viewConfig.id\n );\n });\n }\n\n private updateColumnsInCurrentDataState(columnApi: ColumnApi) {\n const columnOrder = this.getColumnOrder(columnApi);\n\n const viewState = this.currentDataState.getViewStateById(\n this.viewConfig.id\n );\n viewState.displayedColumnIds = columnOrder;\n\n this.dataManagerSvc.updateDataState(\n this.currentDataState.addOrUpdateView(this.viewConfig.id, viewState),\n this.viewConfig.id\n );\n }\n\n private getColumnOrder(columnApi: ColumnApi): string[] {\n return columnApi\n .getAllDisplayedVirtualColumns()\n .map((col) => col.getColDef().colId);\n }\n\n private displayColumns(dataState: SkyDataManagerState): void {\n const agGrid = this.currentAgGrid;\n const viewState = dataState.getViewStateById(this.viewConfig.id);\n let displayedColumnIds: string[] = [];\n /*istanbul ignore else*/\n if (viewState.displayedColumnIds) {\n displayedColumnIds = viewState.displayedColumnIds;\n }\n const columns = agGrid.columnApi.getAllColumns();\n\n for (const column of columns) {\n const colId = column.getColId();\n const colIndex = displayedColumnIds.indexOf(colId);\n\n agGrid.columnApi.setColumnVisible(colId, colIndex !== -1);\n agGrid.columnApi.moveColumn(colId, colIndex);\n }\n }\n\n private selectAll(): void {\n const agGrid = this.agGridList.first;\n agGrid.api.selectAll();\n }\n\n private clearAll(): void {\n const agGrid = this.agGridList.first;\n agGrid.api.deselectAll();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyStatusIndicatorModule } from '@skyux/indicators';\nimport { SkyPopoverModule } from '@skyux/popovers';\nimport { SkyAgGridCellValidatorTooltipComponent } from './ag-grid-cell-validator-tooltip.component';\n\n@NgModule({\n declarations: [SkyAgGridCellValidatorTooltipComponent],\n exports: [SkyAgGridCellValidatorTooltipComponent],\n imports: [CommonModule, SkyPopoverModule, SkyStatusIndicatorModule],\n})\nexport class SkyAgGridCellValidatorModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\n\nimport { SkyNumericModule } from '@skyux/core';\n\nimport { AgGridResourcesModule } from '../../../shared/ag-grid-resources.module';\n\nimport { SkyAgGridCellRendererCurrencyValidatorComponent } from './cell-renderer-currency-validator.component';\n\nimport { SkyAgGridCellRendererCurrencyComponent } from './cell-renderer-currency.component';\n\nimport { SkyAgGridCellValidatorModule } from '../../cell-validator/ag-grid-cell-validator.module';\n\n@NgModule({\n imports: [\n CommonModule,\n AgGridResourcesModule,\n SkyAgGridCellValidatorModule,\n FormsModule,\n SkyNumericModule,\n ],\n declarations: [\n SkyAgGridCellRendererCurrencyComponent,\n SkyAgGridCellRendererCurrencyValidatorComponent,\n ],\n exports: [\n SkyAgGridCellRendererCurrencyComponent,\n SkyAgGridCellRendererCurrencyValidatorComponent,\n ],\n})\nexport class SkyAgGridCellRendererCurrencyModule {}\n","import {\n Component,\n ElementRef,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\n\n/**\n * Component for rendering the inline delete template in the overlay.\n * @internal\n */\n@Component({\n template: `\n <ng-template\n let-row\n let-tableWidth=\"tableWidth()\"\n let-getRowDeleteItem=\"getRowDeleteItem\"\n let-cancelRowDelete=\"cancelRowDelete\"\n let-confirmRowDelete=\"confirmRowDelete\"\n #inlineDeleteTemplateRef\n >\n <div\n class=\"sky-ag-grid-row-delete\"\n [id]=\"'row-delete-ref-' + row.id\"\n [ngStyle]=\"{\n height: row.rowHeight + 'px',\n position: 'fixed',\n width: tableWidth + 'px'\n }\"\n #inlineDeleteRef\n >\n <sky-inline-delete\n [pending]=\"getRowDeleteItem(row).pending\"\n (cancelTriggered)=\"cancelRowDelete(row)\"\n (deleteTriggered)=\"confirmRowDelete(row)\"\n ></sky-inline-delete>\n </div>\n </ng-template>\n `,\n})\nexport class SkyAgGridRowDeleteComponent {\n @ViewChildren('inlineDeleteRef')\n public inlineDeleteRefs: QueryList<ElementRef>;\n @ViewChild('inlineDeleteTemplateRef', { read: TemplateRef })\n public inlineDeleteTemplateRef: TemplateRef<any>;\n}\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n ComponentFactoryResolver,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewContainerRef,\n} from '@angular/core';\n\nimport {\n SkyAffixAutoFitContext,\n SkyAffixer,\n SkyAffixService,\n SkyOverlayService,\n} from '@skyux/core';\n\nimport { AgGridAngular } from 'ag-grid-angular';\n\nimport { RowNode } from 'ag-grid-community';\n\nimport { Subject } from 'rxjs';\n\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyAgGridRowDeleteComponent } from './ag-grid-row-delete.component';\n\nimport { SkyAgGridRowDeleteCancelArgs } from './types/ag-grid-row-delete-cancel-args';\n\nimport { SkyAgGridRowDeleteConfig } from './types/ag-grid-row-delete-config';\n\nimport { SkyAgGridRowDeleteConfirmArgs } from './types/ag-grid-row-delete-confirm-args';\n\nimport { SkyAgGridRowDeleteContents } from './types/ag-grid-row-delete-contents';\n\n/**\n * @internal\n */\n@Directive({\n selector: '[skyAgGridRowDelete]',\n})\nexport class SkyAgGridRowDeleteDirective\n implements AfterContentInit, OnDestroy\n{\n /**\n * Specifies the ids of the data in the rows on which inline delete's should be shown.\n */\n @Input()\n set rowDeleteIds(value: string[]) {\n this._rowDeleteIds = value;\n\n if (!value) {\n for (let config of this.rowDeleteConfigs) {\n this.destroyRowDelete(config.id);\n }\n\n this.changeDetector.markForCheck();\n\n return;\n }\n\n for (let id of value) {\n const existingConfig = this.rowDeleteConfigs.find(\n (config) => config.id === id\n );\n if (existingConfig) {\n existingConfig.pending = false;\n } else {\n this.rowDeleteConfigs.push({\n id: id,\n pending: false,\n });\n\n let overlay = this.overlayService.create({\n enableScroll: true,\n showBackdrop: false,\n closeOnNavigation: true,\n enableClose: false,\n enablePointerEvents: true,\n });\n\n overlay.attachTemplate(\n this.rowDeleteComponent.inlineDeleteTemplateRef,\n {\n $implicit: this.agGrid.api.getRowNode(id),\n tableWidth: () => {\n return this.tableWidth;\n },\n getRowDeleteItem: (row: RowNode) => this.getRowDeleteItem(row),\n cancelRowDelete: (row: RowNode) => this.cancelRowDelete(row),\n confirmRowDelete: (row: RowNode) => this.confirmRowDelete(row),\n }\n );\n\n /**\n * We are manually setting the z-index here because overlays will always be on top of\n * the omnibar. This manual setting is 2 less than the omnibar's z-index of 1000 and one less than\n * the header row's viewkeeper which is 999. We discussed changing the overlay service to allow for this\n * but decided against that change at this time due to its niche nature.\n */\n overlay.componentRef.instance.zIndex = '998';\n\n setTimeout(() => {\n const inlineDeleteRef = this.rowDeleteComponent.inlineDeleteRefs\n .toArray()\n .find((elRef) => {\n return elRef.nativeElement.id === 'row-delete-ref-' + id;\n });\n let affixer = this.affixService.createAffixer(inlineDeleteRef);\n\n this.affixToRow(affixer, id);\n\n this.rowDeleteContents[id] = {\n affixer: affixer,\n overlay: overlay,\n };\n });\n }\n }\n\n for (let config of this.rowDeleteConfigs) {\n if (value.indexOf(config.id) < 0) {\n this.destroyRowDelete(config.id);\n }\n }\n\n this.changeDetector.markForCheck();\n }\n\n get rowDeleteIds(): string[] {\n return this._rowDeleteIds;\n }\n\n /**\n * Emits a `SkyAgGridRowDeleteCancelArgs` object when a row's inline delete is cancelled.\n */\n @Output()\n public rowDeleteCancel = new EventEmitter<SkyAgGridRowDeleteCancelArgs>();\n\n /**\n * Emits a `SkyAgGridRowDeleteConfirmArgs` object when a row's inline delete is confirmed.\n */\n @Output()\n public rowDeleteConfirm = new EventEmitter<SkyAgGridRowDeleteConfirmArgs>();\n\n /**\n * Emits when the list of ids of the data in the rows where inline deletes are shown changes.\n */\n @Output()\n public rowDeleteIdsChange = new EventEmitter<string[]>();\n\n public rowDeleteConfigs: SkyAgGridRowDeleteConfig[] = [];\n\n public get tableWidth() {\n return this.elementRef.nativeElement.querySelectorAll('.sky-ag-grid')[0]\n .offsetWidth;\n }\n\n @ContentChild(AgGridAngular)\n public agGrid: AgGridAngular;\n\n private ngUnsubscribe = new Subject();\n private rowDeleteComponent: SkyAgGridRowDeleteComponent;\n private rowDeleteContents: { [id: string]: SkyAgGridRowDeleteContents } = {};\n\n private _rowDeleteIds: string[];\n\n constructor(\n private affixService: SkyAffixService,\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef,\n private resolver: ComponentFactoryResolver,\n private overlayService: SkyOverlayService,\n private viewContainerRef: ViewContainerRef\n ) {}\n\n public ngAfterContentInit(): void {\n const factory = this.resolver.resolveComponentFactory(\n SkyAgGridRowDeleteComponent\n );\n this.rowDeleteComponent =\n this.viewContainerRef.createComponent(factory).instance;\n this.agGrid.rowDataChanged\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.updateRowDeleteStates();\n });\n\n this.agGrid.rowDataUpdated\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.updateRowDeleteStates();\n });\n\n this.agGrid.sortChanged\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.updateRowDeleteStates();\n });\n\n this.agGrid.filterChanged\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.updateRowDeleteStates();\n });\n\n this.agGrid.getRowNodeId = (data: any) => {\n return data.id.toString();\n };\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n\n Object.keys(this.rowDeleteContents).forEach((id) => {\n this.destroyRowDelete(id);\n });\n }\n\n public cancelRowDelete(row: RowNode): void {\n this.rowDeleteConfigs = this.rowDeleteConfigs.filter(\n (config) => config.id !== row.id\n );\n this.rowDeleteCancel.emit({ id: row.id });\n\n this.destroyRowDelete(row.id);\n }\n\n public confirmRowDelete(row: RowNode): void {\n this.rowDeleteConfigs.find((config) => config.id === row.id).pending = true;\n this.rowDeleteConfirm.emit({ id: row.id });\n }\n\n public getRowDeleteItem(row: RowNode): SkyAgGridRowDeleteConfig {\n return this.rowDeleteConfigs.find((rowDelete) => rowDelete.id === row.id);\n }\n\n private affixToRow(affixer: SkyAffixer, id: string) {\n let rowElement: HTMLElement = this.elementRef.nativeElement.querySelector(`\n [row-id=\"${id}\"] div[aria-colindex=\"1\"],\n .ag-row.sky-ag-grid-row-${id} div[aria-colindex=\"1\"]\n `);\n\n // This covers cases where AG Grid places the column index on an inner element (such as with the `enableCellTextSelection` option)\n // This appears to have been fixed by AG Grid in version 24 and so it is not testable after that version.\n /* istanbul ignore if */\n if (!rowElement) {\n const columns = this.elementRef.nativeElement.querySelectorAll(\n '[row-id=\"' + id + '\"] > div'\n );\n\n for (let i = 0; i < columns.length; i++) {\n if (columns[i].querySelector('[aria-colindex=\"1\"]')) {\n rowElement = columns[i];\n break;\n }\n }\n }\n\n affixer.affixTo(rowElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n isSticky: true,\n placement: 'above',\n verticalAlignment: 'top',\n horizontalAlignment: 'left',\n enableAutoFit: false,\n });\n }\n\n private destroyRowDelete(id: string): void {\n const rowDeleteContents = this.rowDeleteContents[id];\n\n /* sanity check */\n /* istanbul ignore else */\n if (rowDeleteContents) {\n rowDeleteContents.affixer.destroy();\n this.overlayService.close(rowDeleteContents.overlay);\n delete this.rowDeleteContents[id];\n this.rowDeleteConfigs = this.rowDeleteConfigs.filter(\n (config) => config.id !== id\n );\n this._rowDeleteIds = this.rowDeleteIds?.filter(\n (arrayId) => arrayId !== id\n );\n this.rowDeleteIdsChange.emit(this._rowDeleteIds);\n }\n }\n\n private updateRowDeleteStates(): void {\n this.rowDeleteConfigs.forEach((config: SkyAgGridRowDeleteConfig) => {\n if (!this.agGrid.api.getRowNode(config.id)) {\n this.destroyRowDelete(config.id);\n } else {\n // We must reaffix things when the data changes because the rows rerender and the previous element that the delete was affixed\n // to is destroyed.\n this.affixToRow(this.rowDeleteContents[config.id].affixer, config.id);\n }\n });\n this.changeDetector.markForCheck();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewChild,\n} from '@angular/core';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellEditorCurrencyParams } from '../../types/cell-editor-currency-params';\n\nimport { SkyCurrencyProperties } from '../../types/currency-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-currency',\n templateUrl: './cell-editor-currency.component.html',\n styleUrls: ['./cell-editor-currency.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellEditorCurrencyComponent\n implements ICellEditorAngularComp\n{\n public value: number;\n public skyComponentProperties: SkyCurrencyProperties = {};\n public columnHeader: string;\n public columnWidth: number;\n public rowHeightWithoutBorders: number;\n public rowNumber: number;\n\n private params: SkyCellEditorCurrencyParams;\n\n @ViewChild('skyCellEditorCurrency', { read: ElementRef })\n private input: ElementRef;\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorCurrencyParams): void {\n this.params = params;\n this.value = this.params.value;\n this.columnHeader = this.params.colDef.headerName;\n this.rowNumber = this.params.rowIndex + 1;\n this.columnWidth = this.params.column.getActualWidth();\n this.rowHeightWithoutBorders =\n this.params.node && this.params.node.rowHeight - 4;\n this.skyComponentProperties = this.params.skyComponentProperties || {\n decimalPlaces: 2,\n currencySymbol: '$',\n };\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n this.input.nativeElement.focus();\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): number {\n return this.value;\n }\n}\n","<input\n type=\"text\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_currency_aria_label'\n | skyLibResources: columnHeader:rowNumber\n \"\n [style.width.px]=\"columnWidth\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n [(ngModel)]=\"value\"\n [skyAutonumeric]=\"skyComponentProperties\"\n #skyCellEditorCurrency\n/>\n","import { NgModule } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { SkyAutonumericModule } from '@skyux/autonumeric';\n\nimport { AgGridResourcesModule } from '../../../shared/ag-grid-resources.module';\n\nimport { SkyAgGridCellEditorCurrencyComponent } from './cell-editor-currency.component';\n\n@NgModule({\n imports: [AgGridResourcesModule, FormsModule, SkyAutonumericModule],\n declarations: [SkyAgGridCellEditorCurrencyComponent],\n exports: [SkyAgGridCellEditorCurrencyComponent],\n})\nexport class SkyAgGridCellEditorCurrencyModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n} from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { ValueFormatterParams } from 'ag-grid-community';\nimport { SkyCellRendererValidatorParams } from '../../types/cell-renderer-validator-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-validator-tooltip',\n templateUrl: 'cell-renderer-validator-tooltip.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellRendererValidatorTooltipComponent\n implements ICellRendererAngularComp\n{\n @Input()\n public set params(value: SkyCellRendererValidatorParams) {\n this.agInit(value);\n }\n\n public cellRendererParams: SkyCellRendererValidatorParams;\n public value: any;\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n public agInit(params: SkyCellRendererValidatorParams): void {\n this.cellRendererParams = params;\n if (typeof params.colDef?.valueFormatter === 'function') {\n this.value = params.colDef.valueFormatter(params as ValueFormatterParams);\n } else {\n this.value = params.value;\n }\n this.changeDetector.markForCheck();\n }\n\n public refresh(params: any): boolean {\n return false;\n }\n}\n","<sky-ag-grid-cell-validator-tooltip [params]=\"cellRendererParams\">\n {{ value }}\n</sky-ag-grid-cell-validator-tooltip>\n","import { NgModule } from '@angular/core';\nimport { SkyAgGridCellValidatorModule } from '../../cell-validator/ag-grid-cell-validator.module';\nimport { SkyAgGridCellRendererValidatorTooltipComponent } from './cell-renderer-validator-tooltip.component';\n\n@NgModule({\n declarations: [SkyAgGridCellRendererValidatorTooltipComponent],\n exports: [SkyAgGridCellRendererValidatorTooltipComponent],\n imports: [SkyAgGridCellValidatorModule],\n})\nexport class SkyAgGridCellRendererValidatorTooltipModule {}\n","import { CommonModule } from '@angular/common';\n\nimport { NgModule } from '@angular/core';\n\nimport { SkyViewkeeperModule } from '@skyux/core';\n\nimport { AgGridModule } from 'ag-grid-angular';\n\nimport { SkyDataManagerModule } from '@skyux/data-manager';\n\nimport { SkyInlineDeleteModule } from '@skyux/layout';\n\nimport { SkyAgGridWrapperComponent } from './ag-grid-wrapper.component';\n\nimport { SkyAgGridCellEditorAutocompleteComponent } from './cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component';\n\nimport { SkyAgGridCellEditorAutocompleteModule } from './cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.module';\n\nimport { SkyAgGridCellEditorDatepickerComponent } from './cell-editors/cell-editor-datepicker/cell-editor-datepicker.component';\n\nimport { SkyAgGridCellEditorDatepickerModule } from './cell-editors/cell-editor-datepicker/cell-editor-datepicker.module';\n\nimport { SkyAgGridCellEditorLookupModule } from './cell-editors/cell-editor-lookup/cell-editor-lookup.module';\n\nimport { SkyAgGridCellEditorNumberComponent } from './cell-editors/cell-editor-number/cell-editor-number.component';\n\nimport { SkyAgGridCellEditorNumberModule } from './cell-editors/cell-editor-number/cell-editor-number.module';\n\nimport { SkyAgGridCellEditorTextComponent } from './cell-editors/cell-editor-text/cell-editor-text.component';\n\nimport { SkyAgGridCellEditorTextModule } from './cell-editors/cell-editor-text/cell-editor-text.module';\n\nimport { SkyAgGridCellRendererCurrencyValidatorComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component';\n\nimport { SkyAgGridCellRendererLookupModule } from './cell-renderers/cell-renderer-lookup/cell-renderer-lookup.module';\n\nimport { SkyAgGridCellRendererRowSelectorComponent } from './cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component';\n\nimport { SkyAgGridCellRendererRowSelectorModule } from './cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.module';\n\nimport { SkyAgGridDataManagerAdapterDirective } from './ag-grid-data-manager-adapter.directive';\n\nimport { SkyAgGridCellRendererCurrencyModule } from './cell-renderers/cell-renderer-currency/cell-renderer-currency.module';\n\nimport { SkyAgGridCellRendererCurrencyComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency.component';\n\nimport { SkyAgGridRowDeleteComponent } from './ag-grid-row-delete.component';\n\nimport { SkyAgGridRowDeleteDirective } from './ag-grid-row-delete.directive';\n\nimport { SkyAgGridCellEditorCurrencyModule } from './cell-editors/cell-editor-currency/cell-editor-currency.module';\n\nimport { SkyAgGridCellEditorCurrencyComponent } from './cell-editors/cell-editor-currency/cell-editor-currency.component';\n\nimport { SkyAgGridCellRendererValidatorTooltipComponent } from './cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component';\n\nimport { SkyAgGridCellRendererValidatorTooltipModule } from './cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.module';\n\nimport { SkyAgGridCellValidatorModule } from './cell-validator/ag-grid-cell-validator.module';\n\n@NgModule({\n declarations: [\n SkyAgGridDataManagerAdapterDirective,\n SkyAgGridRowDeleteComponent,\n SkyAgGridRowDeleteDirective,\n SkyAgGridWrapperComponent,\n ],\n imports: [\n AgGridModule,\n CommonModule,\n SkyAgGridCellEditorAutocompleteModule,\n SkyAgGridCellEditorDatepickerModule,\n SkyAgGridCellEditorLookupModule,\n SkyAgGridCellEditorNumberModule,\n SkyAgGridCellEditorCurrencyModule,\n SkyAgGridCellRendererCurrencyModule,\n SkyAgGridCellRendererLookupModule,\n SkyAgGridCellRendererRowSelectorModule,\n SkyAgGridCellRendererValidatorTooltipModule,\n SkyAgGridCellValidatorModule,\n SkyAgGridCellEditorTextModule,\n SkyDataManagerModule,\n SkyInlineDeleteModule,\n SkyViewkeeperModule,\n ],\n exports: [\n SkyAgGridDataManagerAdapterDirective,\n SkyAgGridRowDeleteComponent,\n SkyAgGridRowDeleteDirective,\n SkyAgGridWrapperComponent,\n ],\n entryComponents: [\n SkyAgGridCellEditorAutocompleteComponent,\n SkyAgGridCellEditorDatepickerComponent,\n SkyAgGridCellEditorNumberComponent,\n SkyAgGridCellEditorCurrencyComponent,\n SkyAgGridCellRendererCurrencyComponent,\n SkyAgGridCellRendererCurrencyValidatorComponent,\n SkyAgGridCellRendererRowSelectorComponent,\n SkyAgGridCellRendererValidatorTooltipComponent,\n SkyAgGridCellEditorTextComponent,\n SkyAgGridRowDeleteComponent,\n ],\n})\nexport class SkyAgGridModule {}\n","/**\n * @internal\n */\nexport enum SkyCellClass {\n Autocomplete = 'sky-ag-grid-cell-autocomplete',\n Currency = 'sky-ag-grid-cell-currency',\n Date = 'sky-ag-grid-cell-date',\n Editable = 'sky-ag-grid-cell-editable',\n Invalid = 'sky-ag-grid-cell-invalid',\n Lookup = 'sky-ag-grid-cell-lookup',\n Number = 'sky-ag-grid-cell-number',\n RowSelector = 'sky-ag-grid-cell-row-selector',\n Text = 'sky-ag-grid-cell-text',\n Uneditable = 'sky-ag-grid-cell-uneditable',\n}\n","/**\n * These column types can be used by setting the AG Grid [column definition `type`](https://www.ag-grid.com/javascript-grid-column-properties/) to one of the following values.\n * <br/>\n * Any [SKY UX component](https://developer.blackbaud.com/skyux/components) can be made into a [cell editor](https://www.ag-grid.com/javascript-grid-cell-editor/) or [cell renderer](https://www.ag-grid.com/javascript-grid-cell-rendering-components/) component. If you would like to use a component that does not have a column definition yet, please consider [contributing it](https://developer.blackbaud.com/skyux/contribute/contribution-process) to the SKY UX data entry grid module, or [file an issue](https://developer.blackbaud.com/skyux/contribute/contribution-process/file-issue) in the [`@skyux/ag-grid` repo](https://github.com/blackbaud/skyux-ag-grid).\n */\nexport enum SkyCellType {\n /**\n * **Edit mode**\n * <br/>\n * Specifies that cells in the column will be edited as [SKY UX autocomplete components](https://developer.blackbaud.com/skyux/components/autocomplete). You can set any of the autocomplete component's properties by passing them in the [column definition's `cellEditorParams` property](https://www.ag-grid.com/javascript-grid-column-properties/). These params can be updated as other cell edits are made or [provided dynamically](https://www.ag-grid.com/javascript-grid-cell-editing/#dynamic-parameters) based on other cell values. See the demo for an example. Text can be entered and a value selected from the provided list.\n * <br/><br/>\n * **Read-only mode**\n * <br/>\n * Specifies that cells the column will display the currently selected value's name property by default. If the autocomplete needs to show a different property or needs to be formatted in any way, you can [define a `valueFormatter`](https://www.ag-grid.com/javascript-grid-value-formatters/) on the column definition.\n */\n Autocomplete = 'skyCellAutocomplete',\n /**\n * **Edit mode**\n * <br/>\n * Specifies that cells in the column will be edited as a currency amount.\n * <br/><br/>\n * **Read-only mode**\n * <br/>\n * Formats the display as currency using [SKY UX numeric components](https://developer.blackbaud.com/skyux/components/numeric).\n */\n Currency = 'skyCellCurrency',\n /**\n * **Edit and read-only modes**\n * <br/>\n * Combines SkyCellType.Currency and SkyCellType.Validator, where the value is displayed as a currency and passed to a validator function.\n */\n CurrencyValidator = 'skyCellCurrencyValidator',\n /**\n * **Edit mode**\n * <br/>\n * Specifies that cells in the column will be edited as [SKY UX datepicker components](https://developer.blackbaud.com/skyux/components/datepicker). You can set any of the datepicker component's properties by passing them in the [column definition's `cellEditorParams` property](https://www.ag-grid.com/javascript-grid-column-properties/). These params can be updated as other cell edits are made or [provided dynamically](https://www.ag-grid.com/javascript-grid-cell-editing/#dynamic-parameters) based on other cell values. See the demo for an example. Date values can be entered.\n * <br/><br/>\n * **Read-only mode**\n * <br/>\n * Specifies that cells in the column will display the currently selected date formatted as `MM-DD-YYYY`, or the date format of the locale passed to `getGridOptions()`. If you would like to overwrite this format, you can [define a `valueFormatter`](https://www.ag-grid.com/javascript-grid-value-formatters/) on the column definition. See the demo for an example.\n */\n Date = 'skyCellDate',\n Lookup = 'skyCellLookup',\n /**\n * **Edit mode**\n * <br/>\n * Specifies that cells in the column will be edited as HTML number `inputs`. Only numbers can be entered.\n * <br/><br/>\n * **Read-only mode**\n * <br/>\n * Specifies that cells in the column will render as the number value.\n */\n Number = 'skyCellNumber',\n /**\n * **Edit and read-only modes**\n * <br/>\n * Combines SkyCellType.Number and SkyCellType.Validator, where the value is displayed as a number and passed to a validator function.\n */\n NumberValidator = 'skyCellNumberValidator',\n /**\n * **Edit and read-only modes**\n * <br/>\n * Specifies that cells in the column will render as [SKY UX checkbox components](https://developer.blackbaud.com/skyux/components/checkbox). It allows the user to select multiple rows, and adds a highlight to selected rows. The [Ag Grid `rowNode`](https://www.ag-grid.com/javascript-grid-row-node/) will be updated to reflect the selected state.\n */\n RowSelector = 'skyCellRowSelector',\n /**\n * **Edit mode**\n * <br/>\n * Specifies that cells in the column will be edited as HTML text `inputs`. Any characters can be entered.\n * <br/><br/>\n * **Read-only mode**\n * <br/>\n * Specifies cells in the column will render as their string value.\n */\n Text = 'skyCellText',\n /**\n * **Edit and read-only modes**\n * <br/>\n * Specifies cell in the column will be passed to a validator function which flags erroneous entries. You can set the validator function and message by passing them to [column definition's `cellRendererParams` property](https://www.ag-grid.com/javascript-grid-column-properties/) as `skyComponentProperties.validator` and `skyComponentProperties.validatorMessage`. SkyCellType.Validator can be combined with other cell types, such as SkyCellType.Autocomplete or SkyCellType.Date, by using the array syntax for the [column definition's `type` property](https://www.ag-grid.com/javascript-grid-column-properties/).\n */\n Validator = 'skyCellValidator',\n}\n","/**\n * @internal\n */\nexport enum SkyHeaderClass {\n RightAligned = 'sky-ag-grid-header-right-aligned',\n}\n","import { Injectable, OnDestroy, Optional } from '@angular/core';\n\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport {\n CellClassParams,\n GridOptions,\n ICellRendererParams,\n RowClassParams,\n SuppressKeyboardEventParams,\n ValueFormatterParams,\n} from 'ag-grid-community';\n\nimport { EditableCallbackParams } from 'ag-grid-community/dist/lib/entities/colDef';\n\nimport { Subject } from 'rxjs';\n\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyThemeService, SkyThemeSettings } from '@skyux/theme';\n\nimport { SkyAgGridCellEditorAutocompleteComponent } from './cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component';\n\nimport { SkyAgGridCellEditorDatepickerComponent } from './cell-editors/cell-editor-datepicker/cell-editor-datepicker.component';\n\nimport { SkyAgGridCellEditorLookupComponent } from './cell-editors/cell-editor-lookup/cell-editor-lookup.component';\n\nimport { SkyAgGridCellEditorNumberComponent } from './cell-editors/cell-editor-number/cell-editor-number.component';\n\nimport { SkyAgGridCellEditorTextComponent } from './cell-editors/cell-editor-text/cell-editor-text.component';\n\nimport { SkyAgGridCellRendererCurrencyValidatorComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component';\n\nimport { SkyAgGridCellRendererLookupComponent } from './cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component';\n\nimport { SkyAgGridCellRendererRowSelectorComponent } from './cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component';\n\nimport { SkyAgGridCellRendererValidatorTooltipComponent } from './cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component';\n\nimport { SkyCellClass } from './types/cell-class';\n\nimport { SkyCellType } from './types/cell-type';\n\nimport { SkyHeaderClass } from './types/header-class';\nimport { applySkyLookupPropertiesDefaults } from './types/lookup-properties';\n\nimport { SkyGetGridOptionsArgs } from './types/sky-grid-options';\n\nimport { SkyAgGridAdapterService } from './ag-grid-adapter.service';\n\nimport { SkyAgGridCellRendererCurrencyComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency.component';\n\nimport { SkyAgGridCellEditorCurrencyComponent } from './cell-editors/cell-editor-currency/cell-editor-currency.component';\n\nfunction autocompleteComparator(\n value1: { name: string },\n value2: { name: string }\n): number {\n if (value1 && value2) {\n if (value1.name > value2.name) {\n return 1;\n }\n\n if (value1.name < value2.name) {\n return -1;\n }\n\n return 0;\n }\n\n return value1 ? 1 : -1;\n}\n\nfunction autocompleteFormatter(\n params: ValueFormatterParams\n): string | undefined {\n return params.value && params.value.name;\n}\n\nfunction dateComparator(date1: any, date2: any): number {\n let date1value = date1;\n let date2value = date2;\n\n if (typeof date1value === 'string') {\n date1value = new Date(date1);\n }\n\n if (typeof date2value === 'string') {\n date2value = new Date(date2);\n }\n\n if (date1value && date2value) {\n if (date1value > date2value) {\n return 1;\n }\n\n if (date1value < date2value) {\n return -1;\n }\n\n return 0;\n }\n\n return date1value ? 1 : -1;\n}\n\nfunction getValidatorCellRendererSelector(component: string, fallback?: any) {\n return (params: ICellRendererParams) => {\n if (\n params.colDef &&\n typeof params.colDef.cellRendererParams?.skyComponentProperties\n ?.validator === 'function'\n ) {\n if (\n !params.colDef.cellRendererParams.skyComponentProperties.validator(\n params.value,\n params.data,\n params.rowIndex\n )\n ) {\n return {\n component,\n params: {\n ...params.colDef.cellRendererParams,\n },\n };\n }\n }\n return fallback;\n };\n}\n\nlet rowNodeId = -1;\n\n/**\n * `SkyAgGridService` provides methods to get AG Grid `gridOptions` to ensure grids match SKY UX functionality. The `gridOptions` can be overridden, and include registered SKY UX column types.\n */\n@Injectable({\n providedIn: 'any',\n})\nexport class SkyAgGridService implements OnDestroy {\n /**\n * @internal\n */\n public currentTheme: SkyThemeSettings;\n private ngUnsubscribe = new Subject();\n\n constructor(\n private agGridAdapterService: SkyAgGridAdapterService,\n @Optional() private themeSvc?: SkyThemeService,\n @Optional() private resources?: SkyLibResourcesService\n ) {\n /*istanbul ignore else*/\n if (this.themeSvc) {\n this.themeSvc.settingsChange\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n (settingsChange) =>\n (this.currentTheme = settingsChange.currentSettings)\n );\n }\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n /**\n * Returns [AG Grid `gridOptions`](https://www.ag-grid.com/javascript-grid-properties/) with default SKY UX options, styling, and cell renderers registered for read-only grids.\n * @param args\n * @returns\n */\n public getGridOptions(args: SkyGetGridOptionsArgs): GridOptions {\n const defaultGridOptions = this.getDefaultGridOptions(args);\n const mergedGridOptions = this.mergeGridOptions(\n defaultGridOptions,\n args.gridOptions\n );\n\n return mergedGridOptions;\n }\n\n /**\n * Returns [AG Grid `gridOptions`](https://www.ag-grid.com/javascript-grid-properties/) with default SKY UX options, styling, and cell editors registered for editable grids.\n * @param args\n * @returns\n */\n public getEditableGridOptions(args: SkyGetGridOptionsArgs): GridOptions {\n const defaultGridOptions = this.getDefaultEditableGridOptions(args);\n const mergedGridOptions = this.mergeGridOptions(\n defaultGridOptions,\n args.gridOptions\n );\n\n return mergedGridOptions;\n }\n\n private mergeGridOptions(\n defaultGridOptions: GridOptions,\n providedGridOptions: GridOptions\n ): GridOptions {\n let mergedGridOptions = {\n ...defaultGridOptions,\n ...providedGridOptions,\n columnTypes: {\n ...providedGridOptions.columnTypes,\n // apply default second to prevent consumers from overwriting our default column types\n ...defaultGridOptions.columnTypes,\n },\n defaultColDef: {\n ...defaultGridOptions.defaultColDef,\n ...providedGridOptions.defaultColDef,\n // allow consumers to override all defaultColDef properties except cellClassRules, which we reserve for styling\n cellClassRules: defaultGridOptions.defaultColDef.cellClassRules,\n },\n icons: {\n ...defaultGridOptions.icons,\n ...providedGridOptions.icons,\n },\n };\n\n return mergedGridOptions;\n }\n\n private getDefaultGridOptions(args: SkyGetGridOptionsArgs): GridOptions {\n // cellClassRules can be functions or string expressions\n const cellClassRuleTrueExpression = 'true';\n\n function getEditableFn(\n isUneditable?: boolean\n ): (params: CellClassParams) => boolean {\n return function (params: CellClassParams): boolean {\n let isEditable = params.colDef.editable;\n\n if (typeof isEditable === 'function') {\n const column = params.columnApi.getColumn(params.colDef.field);\n isEditable = isEditable({\n ...params,\n column,\n } as EditableCallbackParams);\n }\n\n return isUneditable ? !isEditable : isEditable;\n };\n }\n\n const editableCellClassRules = {\n [SkyCellClass.Editable]: getEditableFn(),\n [SkyCellClass.Uneditable]: getEditableFn(true),\n };\n\n function getValidatorFn(): (params: CellClassParams) => boolean {\n return function (param: CellClassParams) {\n if (\n param.colDef &&\n typeof param.colDef.cellRendererParams?.skyComponentProperties\n ?.validator === 'function'\n ) {\n return !param.colDef.cellRendererParams.skyComponentProperties.validator(\n param.value,\n param.data,\n param.rowIndex\n );\n }\n return false;\n };\n }\n\n const validatorCellClassRules = {\n [SkyCellClass.Invalid]: getValidatorFn(),\n };\n\n const defaultSkyGridOptions: GridOptions = {\n columnTypes: {\n [SkyCellType.Autocomplete]: {\n cellClassRules: {\n [SkyCellClass.Autocomplete]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditorFramework: SkyAgGridCellEditorAutocompleteComponent,\n valueFormatter: autocompleteFormatter,\n comparator: autocompleteComparator,\n minWidth: 185,\n },\n [SkyCellType.Currency]: {\n cellClassRules: {\n [SkyCellClass.Currency]: cellClassRuleTrueExpression,\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-currency-validator',\n { component: 'sky-ag-grid-cell-renderer-currency' }\n ),\n cellEditorFramework: SkyAgGridCellEditorCurrencyComponent,\n headerClass: SkyHeaderClass.RightAligned,\n minWidth: 185,\n },\n [SkyCellType.Date]: {\n cellClassRules: {\n [SkyCellClass.Date]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditorFramework: SkyAgGridCellEditorDatepickerComponent,\n comparator: dateComparator,\n minWidth: this.currentTheme?.theme?.name === 'modern' ? 180 : 160,\n valueFormatter: (params: ValueFormatterParams) =>\n this.dateFormatter(params, args.locale),\n },\n [SkyCellType.Lookup]: {\n cellClassRules: {\n [SkyCellClass.Lookup]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditorFramework: SkyAgGridCellEditorLookupComponent,\n cellRendererFramework: SkyAgGridCellRendererLookupComponent,\n valueFormatter: (params) => {\n const lookupProperties = applySkyLookupPropertiesDefaults(params);\n return (params.value || [])\n .map((value) => {\n return value[lookupProperties.descriptorProperty];\n })\n .filter((value) => value !== '' && value !== undefined)\n .join('; ');\n },\n minWidth: 185,\n },\n [SkyCellType.Number]: {\n cellClassRules: {\n [SkyCellClass.Number]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditorFramework: SkyAgGridCellEditorNumberComponent,\n headerClass: SkyHeaderClass.RightAligned,\n },\n [SkyCellType.RowSelector]: {\n cellClassRules: {\n [SkyCellClass.RowSelector]: cellClassRuleTrueExpression,\n [SkyCellClass.Uneditable]: cellClassRuleTrueExpression,\n },\n cellRendererFramework: SkyAgGridCellRendererRowSelectorComponent,\n headerName: '',\n minWidth: 55,\n maxWidth: 55,\n sortable: false,\n width: 55,\n },\n [SkyCellType.Text]: {\n cellClassRules: {\n [SkyCellClass.Text]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditorFramework: SkyAgGridCellEditorTextComponent,\n },\n [SkyCellType.Validator]: {\n cellClassRules: {\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-validator-tooltip'\n ),\n },\n },\n defaultColDef: {\n cellClassRules: editableCellClassRules,\n minWidth: 100,\n resizable: true,\n sortable: true,\n suppressKeyboardEvent: (keypress: SuppressKeyboardEventParams) =>\n this.suppressTab(keypress),\n },\n domLayout: 'autoHeight',\n enterMovesDownAfterEdit: true,\n frameworkComponents: {\n 'sky-ag-grid-cell-renderer-currency':\n SkyAgGridCellRendererCurrencyComponent,\n 'sky-ag-grid-cell-renderer-currency-validator':\n SkyAgGridCellRendererCurrencyValidatorComponent,\n 'sky-ag-grid-cell-renderer-validator-tooltip':\n SkyAgGridCellRendererValidatorTooltipComponent,\n },\n getRowNodeId(data: any): string {\n if ('id' in data && data.id !== undefined) {\n return `${data.id}`;\n }\n return `${rowNodeId--}`;\n },\n getRowClass: (params: RowClassParams) => {\n if (params.node.id) {\n return `sky-ag-grid-row-${params.node.id}`;\n } else {\n return undefined;\n }\n },\n headerHeight: this.currentTheme?.theme?.name === 'modern' ? 60 : 37,\n icons: {\n sortDescending: this.getIconTemplate('caret-down'),\n sortAscending: this.getIconTemplate('caret-up'),\n columnMoveMove: this.getIconTemplate('arrows'),\n columnMoveHide: this.getIconTemplate('arrows'),\n columnMoveLeft: this.getIconTemplate('arrows'),\n columnMoveRight: this.getIconTemplate('arrows'),\n columnMovePin: this.getIconTemplate('arrows'),\n },\n onCellFocused: () => this.onCellFocused(),\n rowHeight: this.currentTheme?.theme?.name === 'modern' ? 60 : 38,\n rowMultiSelectWithClick: true,\n rowSelection: 'multiple',\n singleClickEdit: true,\n // tslint:disable-next-line: no-null-keyword\n sortingOrder: ['desc', 'asc', null],\n stopEditingWhenGridLosesFocus: false,\n suppressRowClickSelection: true,\n suppressDragLeaveHidesColumns: true,\n };\n\n defaultSkyGridOptions.columnTypes[SkyCellType.CurrencyValidator] = {\n ...defaultSkyGridOptions.columnTypes[SkyCellType.Currency],\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value: any, data: any, rowIndex: number) => {\n return !!`${value || ''}`.match(/^[^0-9]*(\\d+[,.]?)+\\d*[^0-9]*$/);\n },\n validatorMessage: 'Please enter a valid currency',\n },\n },\n };\n /*istanbul ignore else*/\n if (this.resources) {\n this.resources\n .getString('sky_ag_grid_cell_renderer_currency_validator_message')\n .subscribe((value) => {\n defaultSkyGridOptions.columnTypes[\n SkyCellType.CurrencyValidator\n ].cellRendererParams.skyComponentProperties.validatorMessage = value;\n });\n }\n\n defaultSkyGridOptions.columnTypes[SkyCellType.NumberValidator] = {\n ...defaultSkyGridOptions.columnTypes[SkyCellType.Validator],\n ...defaultSkyGridOptions.columnTypes[SkyCellType.Number],\n cellClassRules: {\n ...defaultSkyGridOptions.columnTypes[SkyCellType.Validator]\n .cellClassRules,\n ...defaultSkyGridOptions.columnTypes[SkyCellType.Number].cellClassRules,\n },\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value: any, data: any, rowIndex: number) => {\n return !!value && !isNaN(parseFloat(value));\n },\n validatorMessage: 'Please enter a valid number',\n },\n },\n };\n /*istanbul ignore else*/\n if (this.resources) {\n this.resources\n .getString('sky_ag_grid_cell_renderer_number_validator_message')\n .subscribe((value) => {\n defaultSkyGridOptions.columnTypes[\n SkyCellType.NumberValidator\n ].cellRendererParams.skyComponentProperties.validatorMessage = value;\n });\n }\n\n return defaultSkyGridOptions;\n }\n\n private onCellFocused(): void {\n const currentElement = this.agGridAdapterService.getFocusedElement();\n\n this.agGridAdapterService.focusOnFocusableChildren(currentElement);\n }\n\n private getDefaultEditableGridOptions(\n args: SkyGetGridOptionsArgs\n ): GridOptions {\n let defaultGridOptions = this.getDefaultGridOptions(args);\n\n defaultGridOptions.rowSelection = 'none';\n\n return defaultGridOptions;\n }\n\n private dateFormatter(\n params: ValueFormatterParams,\n locale: string = 'en-us'\n ): string | undefined {\n const dateConfig = { year: 'numeric', month: '2-digit', day: '2-digit' };\n let date: Date = params.value;\n\n if (date && typeof date === 'string') {\n date = new Date(params.value);\n }\n\n let formattedDate =\n date &&\n date.toLocaleDateString &&\n date.toLocaleDateString(locale, dateConfig as Intl.DateTimeFormatOptions);\n\n if (date && date.getTime && !isNaN(date.getTime())) {\n return formattedDate;\n }\n }\n\n private getIconTemplate(iconName: string): string {\n return `<i class=\"fa fa-${iconName}\"></i>`;\n }\n\n private suppressTab(params: SuppressKeyboardEventParams): boolean {\n if (params.event.code === 'Tab') {\n if (params.editing) {\n const currentlyFocusedEl =\n this.agGridAdapterService.getFocusedElement();\n // inline cell editors have the 'ag-cell' class, while popup editors have the 'ag-popup-editor' class\n const cellEl = this.agGridAdapterService.getElementOrParentWithClass(\n currentlyFocusedEl,\n 'ag-cell'\n );\n const popupEl = this.agGridAdapterService.getElementOrParentWithClass(\n currentlyFocusedEl,\n 'ag-popup-editor'\n );\n const parentEl = cellEl || popupEl;\n\n const nextFocusableElementInCell =\n this.agGridAdapterService.getNextFocusableElement(\n currentlyFocusedEl,\n parentEl,\n params.event.shiftKey\n );\n return !!nextFocusableElementInCell;\n }\n return true;\n }\n return false;\n }\n}\n","// Export any types that should be included in the root.\nexport * from './modules/ag-grid/ag-grid.module';\nexport * from './modules/ag-grid/ag-grid.service';\nexport * from './modules/ag-grid/types/ag-grid-row-delete-cancel-args';\nexport * from './modules/ag-grid/types/ag-grid-row-delete-confirm-args';\nexport * from './modules/ag-grid/types/autocomplete-properties';\nexport * from './modules/ag-grid/types/cell-class';\nexport * from './modules/ag-grid/types/cell-type';\nexport * from './modules/ag-grid/types/datepicker-properties';\nexport * from './modules/ag-grid/types/header-class';\nexport * from './modules/ag-grid/types/sky-grid-options';\n\n// Components and directives must be exported to support Angular's \"partial\" Ivy compiler.\n// Obscure names are used to indicate types are not part of the public API.\nexport { SkyAgGridCellEditorAutocompleteComponent as λ1 } from './modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component';\nexport { SkyAgGridCellEditorTextComponent as λ2 } from './modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component';\nexport { SkyAgGridCellEditorCurrencyComponent as λ3 } from './modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component';\nexport { SkyAgGridCellEditorNumberComponent as λ4 } from './modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component';\nexport { SkyAgGridCellEditorDatepickerComponent as λ5 } from './modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component';\nexport { SkyAgGridRowDeleteComponent as λ6 } from './modules/ag-grid/ag-grid-row-delete.component';\nexport { SkyAgGridCellRendererRowSelectorComponent as λ7 } from './modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component';\nexport { SkyAgGridCellRendererCurrencyValidatorComponent as λ8 } from './modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component';\nexport { SkyAgGridCellRendererCurrencyComponent as λ9 } from './modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component';\nexport { SkyAgGridCellRendererValidatorTooltipComponent as λ10 } from './modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component';\nexport { SkyAgGridCellValidatorTooltipComponent as λ11 } from './modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component';\nexport { SkyAgGridWrapperComponent as λ12 } from './modules/ag-grid/ag-grid-wrapper.component';\nexport { SkyAgGridRowDeleteDirective as λ13 } from './modules/ag-grid/ag-grid-row-delete.directive';\nexport { SkyAgGridDataManagerAdapterDirective as λ14 } from './modules/ag-grid/ag-grid-data-manager-adapter.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skyux-ag-grid.js","sources":["../../../projects/ag-grid/src/modules/ag-grid/ag-grid-adapter.service.ts","../../../projects/ag-grid/src/modules/ag-grid/ag-grid-wrapper.component.ts","../../../projects/ag-grid/src/modules/ag-grid/ag-grid-wrapper.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.html","../../../projects/ag-grid/src/modules/shared/ag-grid-resources.module.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.module.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.module.ts","../../../projects/ag-grid/src/modules/ag-grid/types/lookup-properties.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.module.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.module.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.module.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.module.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.module.ts","../../../projects/ag-grid/src/modules/ag-grid/ag-grid-data-manager-adapter.directive.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-validator/ag-grid-cell-validator.module.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.module.ts","../../../projects/ag-grid/src/modules/ag-grid/ag-grid-row-delete.component.ts","../../../projects/ag-grid/src/modules/ag-grid/ag-grid-row-delete.directive.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.module.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.ts","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.html","../../../projects/ag-grid/src/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.module.ts","../../../projects/ag-grid/src/modules/ag-grid/ag-grid.module.ts","../../../projects/ag-grid/src/modules/ag-grid/types/cell-class.ts","../../../projects/ag-grid/src/modules/ag-grid/types/cell-type.ts","../../../projects/ag-grid/src/modules/ag-grid/types/header-class.ts","../../../projects/ag-grid/src/modules/ag-grid/ag-grid.service.ts","../../../projects/ag-grid/src/public-api.ts","../../../projects/ag-grid/src/skyux-ag-grid.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { SkyCoreAdapterService } from '@skyux/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAgGridAdapterService {\n constructor(private skyAdapterService: SkyCoreAdapterService) {}\n\n public getElementOrParentWithClass(\n element: HTMLElement,\n className: string\n ): HTMLElement | undefined {\n if (element && element.classList.contains(className)) {\n return element;\n } else if (element.parentElement) {\n return this.getElementOrParentWithClass(element.parentElement, className);\n }\n }\n\n public setFocusedElementById(parentEl: HTMLElement, selector: string): void {\n const element = parentEl.querySelector(`#${selector}`) as HTMLElement;\n\n /* istanbul ignore else */\n if (element) {\n element.focus();\n }\n }\n\n public getFocusedElement(): HTMLElement {\n return document.activeElement as HTMLElement;\n }\n\n public getNextFocusableElement(\n currentEl: HTMLElement,\n parentEl: HTMLElement,\n moveFocusLeft?: boolean\n ): HTMLElement | undefined {\n if (parentEl) {\n const focusableChildren =\n this.skyAdapterService.getFocusableChildren(parentEl);\n const currentElementIndex = focusableChildren.indexOf(currentEl);\n const nextIndex = moveFocusLeft\n ? currentElementIndex - 1\n : currentElementIndex + 1;\n\n if (\n (!moveFocusLeft && focusableChildren.length >= nextIndex) ||\n (moveFocusLeft && nextIndex >= 0)\n ) {\n return focusableChildren[nextIndex];\n }\n }\n }\n\n public focusOnFocusableChildren(element: HTMLElement): void {\n let focusableChildren =\n this.skyAdapterService.getFocusableChildren(element);\n\n if (focusableChildren.length) {\n focusableChildren[0].focus();\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n} from '@angular/core';\n\nimport { AgGridAngular } from 'ag-grid-angular';\n\nimport { DetailGridInfo } from 'ag-grid-community';\n\nimport { SkyAgGridAdapterService } from './ag-grid-adapter.service';\n\nlet idIndex = 0;\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-wrapper',\n templateUrl: './ag-grid-wrapper.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridWrapperComponent implements AfterContentInit {\n @ContentChild(AgGridAngular, {\n static: true,\n })\n public agGrid: AgGridAngular;\n\n public afterAnchorId: string;\n public beforeAnchorId: string;\n public gridId: string;\n\n public get viewkeeperClasses(): string[] {\n return this._viewkeeperClasses;\n }\n\n public set viewkeeperClasses(value: string[]) {\n this._viewkeeperClasses = value;\n this.changeDetector.markForCheck();\n }\n\n private _viewkeeperClasses: string[] = [];\n\n constructor(\n private adapterService: SkyAgGridAdapterService,\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef\n ) {\n idIndex++;\n this.afterAnchorId = 'sky-ag-grid-nav-anchor-after-' + idIndex;\n this.beforeAnchorId = 'sky-ag-grid-nav-anchor-before-' + idIndex;\n this.gridId = 'sky-ag-grid-' + idIndex;\n }\n\n public ngAfterContentInit(): void {\n if (\n this.agGrid.gridOptions &&\n this.agGrid.gridOptions.domLayout === 'autoHeight'\n ) {\n this.viewkeeperClasses.push('.ag-header');\n }\n }\n\n public onGridKeydown(event: KeyboardEvent): void {\n if (this.agGrid && !this.isInEditMode && event.key === 'Tab') {\n const idToFocus = event.shiftKey\n ? this.beforeAnchorId\n : this.afterAnchorId;\n this.adapterService.setFocusedElementById(\n this.elementRef.nativeElement,\n idToFocus\n );\n }\n }\n\n public onAnchorFocus(event: FocusEvent): void {\n const gridId = this.gridId;\n const relatedTarget = event.relatedTarget as HTMLElement;\n const previousFocusedId = relatedTarget && relatedTarget.id;\n const previousWasCell =\n relatedTarget &&\n !!this.adapterService.getElementOrParentWithClass(\n relatedTarget,\n 'ag-cell'\n );\n\n if (previousFocusedId !== gridId && !previousWasCell) {\n const columns = this.agGrid.columnApi.getAllDisplayedColumns();\n const firstColumn = columns && columns[0];\n const rowIndex = this.agGrid.api.getFirstDisplayedRow();\n\n if (firstColumn && rowIndex >= 0) {\n this.agGrid.api.setFocusedCell(rowIndex, firstColumn);\n }\n }\n }\n\n private get isInEditMode(): boolean {\n /* Sanity check */\n /* istanbul ignore else */\n if (this.agGrid && this.agGrid.api) {\n const primaryGridEditing = this.agGrid.api.getEditingCells().length > 0;\n if (primaryGridEditing) {\n return true;\n } else {\n let innerEditing: boolean = false;\n this.agGrid.api.forEachDetailGridInfo((detailGrid: DetailGridInfo) => {\n if (detailGrid.api.getEditingCells().length > 0) {\n innerEditing = true;\n }\n });\n\n return innerEditing;\n }\n } else {\n return false;\n }\n }\n}\n","<span\n class=\"nav-anchor\"\n tabindex=\"0\"\n [id]=\"beforeAnchorId\"\n (focusin)=\"onAnchorFocus($event)\"\n>\n</span>\n<div\n class=\"sky-ag-grid\"\n tabindex=\"0\"\n [id]=\"gridId\"\n [skyViewkeeper]=\"viewkeeperClasses\"\n (keydown)=\"onGridKeydown($event)\"\n>\n <ng-content></ng-content>\n</div>\n<span\n tabindex=\"0\"\n class=\"nav-anchor\"\n [id]=\"afterAnchorId\"\n (focusin)=\"onAnchorFocus($event)\"\n>\n</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewChild,\n} from '@angular/core';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellEditorAutocompleteParams } from '../../types/cell-editor-autocomplete-params';\n\nimport { SkyAutocompleteProperties } from '../../types/autocomplete-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-autocomplete',\n templateUrl: './cell-editor-autocomplete.component.html',\n styleUrls: ['./cell-editor-autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellEditorAutocompleteComponent\n implements ICellEditorAngularComp\n{\n public currentSelection: any;\n public columnHeader: string;\n public rowNumber: number;\n public skyComponentProperties: SkyAutocompleteProperties = {};\n private params: SkyCellEditorAutocompleteParams;\n\n @ViewChild('skyCellEditorAutocomplete', { read: ElementRef })\n public input: ElementRef;\n\n public agInit(params: SkyCellEditorAutocompleteParams) {\n this.params = params;\n this.currentSelection = this.params.value;\n this.columnHeader = this.params.colDef && this.params.colDef.headerName;\n this.rowNumber = this.params.rowIndex + 1;\n this.skyComponentProperties = this.params.skyComponentProperties || {};\n }\n\n public afterGuiAttached(): void {\n this.input.nativeElement.focus();\n }\n\n public getValue(): any {\n return this.currentSelection;\n }\n}\n","<div class=\"sky-ag-grid-cell-editor-autocomplete\">\n <sky-autocomplete\n [data]=\"skyComponentProperties.data\"\n [debounceTime]=\"skyComponentProperties.debounceTime\"\n [descriptorProperty]=\"skyComponentProperties.descriptorProperty\"\n [propertiesToSearch]=\"skyComponentProperties.propertiesToSearch\"\n [search]=\"skyComponentProperties.search\"\n [searchFilters]=\"skyComponentProperties.searchFilters\"\n [searchResultsLimit]=\"skyComponentProperties.searchResultsLimit\"\n [searchResultTemplate]=\"skyComponentProperties.searchResultTemplate\"\n [searchTextMinimumCharacters]=\"\n skyComponentProperties.searchTextMinimumCharacters\n \"\n (selectionChange)=\"\n skyComponentProperties.selectionChange &&\n skyComponentProperties.selectionChange($event)\n \"\n >\n <input\n skyAutocomplete\n #skyCellEditorAutocomplete\n type=\"text\"\n [(ngModel)]=\"currentSelection\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_autocomplete_aria_label'\n | skyLibResources: columnHeader:rowNumber\n \"\n />\n </sky-autocomplete>\n</div>\n","/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module modules/shared/ag-grid' schematic.\n * To update this file, simply rerun the command.\n */\n\nimport { NgModule } from '@angular/core';\nimport {\n getLibStringForLocale,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n SKY_LIB_RESOURCES_PROVIDERS,\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\n sky_ag_grid_row_selector_aria_label: {\n message: 'Row selector for row {0}',\n },\n sky_ag_grid_cell_editor_number_aria_label: {\n message: 'Editable number {0} for row {1}',\n },\n sky_ag_grid_cell_editor_text_aria_label: {\n message: 'Editable text {0} for row {1}',\n },\n sky_ag_grid_cell_editor_autocomplete_aria_label: {\n message: 'Editable autocomplete {0} for row {1}',\n },\n sky_ag_grid_cell_renderer_currency_aria_label: {\n message: 'Editable currency {0} for row {1}',\n },\n sky_ag_grid_cell_renderer_number_validator_message: {\n message: 'Please enter a valid number',\n },\n sky_ag_grid_cell_renderer_currency_validator_message: {\n message: 'Please enter a valid currency',\n },\n skyux_lookup_tokens_summary: { message: '{0} items selected' },\n },\n};\n\nexport class AgGridResourcesProvider implements SkyLibResourcesProvider {\n public getString(localeInfo: SkyAppLocaleInfo, name: string): string {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [\n {\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: AgGridResourcesProvider,\n multi: true,\n },\n ],\n})\nexport class AgGridResourcesModule {}\n","import { NgModule } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\n\nimport { SkyAutocompleteModule } from '@skyux/lookup';\n\nimport { SkyAgGridCellEditorAutocompleteComponent } from '../cell-editor-autocomplete/cell-editor-autocomplete.component';\n\nimport { AgGridResourcesModule } from '../../../shared/ag-grid-resources.module';\n\n@NgModule({\n imports: [FormsModule, AgGridResourcesModule, SkyAutocompleteModule],\n declarations: [SkyAgGridCellEditorAutocompleteComponent],\n exports: [SkyAgGridCellEditorAutocompleteComponent],\n})\nexport class SkyAgGridCellEditorAutocompleteModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Optional,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\n\nimport { PopupComponent } from 'ag-grid-community';\n\nimport { SkyCellEditorDatepickerParams } from '../../types/cell-editor-datepicker-params';\n\nimport { SkyDatepickerProperties } from '../../types/datepicker-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-datepicker',\n templateUrl: './cell-editor-datepicker.component.html',\n styleUrls: ['./cell-editor-datepicker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SkyAgGridCellEditorDatepickerComponent\n extends PopupComponent\n implements ICellEditorAngularComp\n{\n public columnWidth: number;\n public currentDate: Date;\n public columnWidthWithoutBorders: number;\n public rowHeightWithoutBorders: number;\n public skyComponentProperties: SkyDatepickerProperties = {};\n private params: SkyCellEditorDatepickerParams;\n\n @ViewChild('skyCellEditorDatepickerInput', { read: ElementRef })\n private datepickerInput: ElementRef;\n\n constructor(@Optional() private themeSvc?: SkyThemeService) {\n super();\n }\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorDatepickerParams): void {\n this.params = params;\n this.currentDate = this.params.value;\n this.skyComponentProperties = this.params.skyComponentProperties || {};\n this.columnWidth = this.params.column.getActualWidth();\n this.columnWidthWithoutBorders = this.columnWidth - 2;\n this.rowHeightWithoutBorders =\n this.params.node && this.params.node.rowHeight - 3;\n this.themeSvc?.settingsChange.subscribe((themeSettings) => {\n if (themeSettings.currentSettings.theme.name === 'modern') {\n this.columnWidthWithoutBorders = this.columnWidth;\n this.rowHeightWithoutBorders =\n this.params.node && this.params.node.rowHeight;\n } else {\n this.columnWidthWithoutBorders = this.columnWidth - 2;\n this.rowHeightWithoutBorders =\n this.params.node && this.params.node.rowHeight - 3;\n }\n });\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n this.focusOnDatepickerInput();\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): Date {\n this.datepickerInput.nativeElement.blur();\n return this.currentDate;\n }\n\n public focusOnDatepickerInput(): void {\n this.datepickerInput.nativeElement.focus();\n }\n}\n","<div\n class=\"sky-ag-grid-cell-editor-datepicker\"\n [style.width.px]=\"columnWidthWithoutBorders\"\n>\n <sky-datepicker\n data-sky-id=\"cell-datepicker\"\n pickerClass=\"ag-custom-component-popup\"\n >\n <input\n skyDatepickerInput\n [disabled]=\"skyComponentProperties.disabled\"\n [minDate]=\"skyComponentProperties.minDate\"\n [maxDate]=\"skyComponentProperties.maxDate\"\n [dateFormat]=\"skyComponentProperties.dateFormat\"\n [startingDay]=\"skyComponentProperties.startingDay\"\n [skyDatepickerNoValidate]=\"skyComponentProperties.skyDatepickerNoValidate\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n [(ngModel)]=\"currentDate\"\n #skyCellEditorDatepickerInput\n />\n </sky-datepicker>\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\n\nimport { SkyDatepickerModule } from '@skyux/datetime';\n\nimport { SkyAgGridCellEditorDatepickerComponent } from '../cell-editor-datepicker/cell-editor-datepicker.component';\n\n@NgModule({\n imports: [SkyDatepickerModule, FormsModule],\n declarations: [SkyAgGridCellEditorDatepickerComponent],\n exports: [SkyAgGridCellEditorDatepickerComponent],\n})\nexport class SkyAgGridCellEditorDatepickerModule {}\n","import { TemplateRef } from '@angular/core';\nimport {\n SkyAutocompleteSearchFunction,\n SkyAutocompleteSearchFunctionFilter,\n SkyLookupSelectModeType,\n SkyLookupShowMoreConfig,\n} from '@skyux/lookup';\n\nexport interface SkyLookupProperties {\n ariaLabel?: string;\n autocompleteAttribute?: string;\n data: any[];\n debounceTime?: number;\n descriptorProperty?: string;\n disabled?: boolean;\n enableShowMore?: boolean;\n idProperty?: string;\n placeholderText?: string;\n propertiesToSearch?: string[];\n search?: SkyAutocompleteSearchFunction;\n searchFilters?: SkyAutocompleteSearchFunctionFilter[];\n searchResultsLimit?: number;\n searchResultTemplate?: TemplateRef<any>;\n searchTextMinimumCharacters?: number;\n selectMode?: SkyLookupSelectModeType;\n showAddButton?: boolean;\n showMoreConfig?: SkyLookupShowMoreConfig;\n wrapperClass?: string;\n}\n\nexport function applySkyLookupPropertiesDefaults(\n skyLookupProperties: SkyLookupProperties\n) {\n return {\n ariaLabel: skyLookupProperties.ariaLabel || '',\n autocompleteAttribute: skyLookupProperties.autocompleteAttribute || 'off',\n data: skyLookupProperties.data || [],\n debounceTime: skyLookupProperties.debounceTime || 0,\n descriptorProperty: skyLookupProperties.descriptorProperty || 'name',\n disabled: skyLookupProperties.disabled || false,\n enableShowMore: skyLookupProperties.enableShowMore || false,\n idProperty: skyLookupProperties.idProperty || undefined,\n placeholderText: skyLookupProperties.placeholderText || '',\n propertiesToSearch: skyLookupProperties.propertiesToSearch || undefined,\n search: skyLookupProperties.search || undefined,\n searchFilters: skyLookupProperties.searchFilters || [],\n searchResultsLimit: skyLookupProperties.searchResultsLimit || undefined,\n searchResultTemplate: skyLookupProperties.searchResultTemplate || undefined,\n searchTextMinimumCharacters:\n skyLookupProperties.searchTextMinimumCharacters || 1,\n selectMode: skyLookupProperties.selectMode || undefined,\n showAddButton: skyLookupProperties.showAddButton || false,\n showMoreConfig: skyLookupProperties.showMoreConfig || {},\n wrapperClass: 'ag-custom-component-popup',\n };\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n} from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\nimport { IPopupComponent } from 'ag-grid-community/dist/lib/interfaces/iPopupComponent';\nimport { SkyCellEditorLookupParams } from '../../types/cell-editor-lookup-params';\nimport {\n applySkyLookupPropertiesDefaults,\n SkyLookupProperties,\n} from '../../types/lookup-properties';\n\n@Component({\n selector: 'sky-ag-grid-cell-editor-lookup',\n templateUrl: './cell-editor-lookup.component.html',\n styleUrls: ['./cell-editor-lookup.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellEditorLookupComponent\n implements ICellEditorAngularComp, IPopupComponent<any>\n{\n public skyComponentProperties?: SkyLookupProperties;\n public isAlive = true;\n public lookupForm = new FormGroup({\n currentSelection: new FormControl({\n value: [],\n disabled: false,\n }),\n });\n\n private params: SkyCellEditorLookupParams;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef\n ) {}\n\n public agInit(params: SkyCellEditorLookupParams): void {\n this.params = params;\n if (!Array.isArray(this.params.value)) {\n throw new Error(`Lookup value must be an array`);\n }\n const control = this.lookupForm.get('currentSelection');\n control.setValue(this.params.value);\n if (this.params.skyComponentProperties.disabled) {\n control.disable();\n }\n this.skyComponentProperties = this.updateComponentProperties(this.params);\n this.changeDetector.markForCheck();\n }\n\n public isCancelAfterEnd(): boolean {\n // Shut down components to commit values before final value syncs to grid.\n this.isAlive = false;\n this.changeDetector.detectChanges();\n return false;\n }\n\n public getGui(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n public getValue(): any[] {\n return this.lookupForm.get('currentSelection').value;\n }\n\n public isPopup(): boolean {\n return true;\n }\n\n /*istanbul ignore next*/\n public afterGuiAttached(): void {\n this.elementRef.nativeElement.querySelector('.sky-lookup-input')?.focus();\n }\n\n private updateComponentProperties(\n params: SkyCellEditorLookupParams\n ): SkyLookupProperties {\n const skyLookupProperties = params.skyComponentProperties;\n return applySkyLookupPropertiesDefaults(skyLookupProperties);\n }\n}\n","<sky-input-box\n *ngIf=\"isAlive\"\n [disabled]=\"skyComponentProperties?.disabled\"\n [formGroup]=\"lookupForm\"\n>\n <sky-lookup\n [ariaLabel]=\"skyComponentProperties?.ariaLabel\"\n [autocompleteAttribute]=\"skyComponentProperties?.autocompleteAttribute\"\n [data]=\"skyComponentProperties?.data\"\n [debounceTime]=\"skyComponentProperties?.debounceTime\"\n [descriptorProperty]=\"skyComponentProperties?.descriptorProperty\"\n [enableShowMore]=\"skyComponentProperties?.enableShowMore\"\n formControlName=\"currentSelection\"\n [idProperty]=\"skyComponentProperties?.idProperty\"\n [placeholderText]=\"skyComponentProperties?.placeholderText\"\n [propertiesToSearch]=\"skyComponentProperties?.propertiesToSearch\"\n [search]=\"skyComponentProperties?.search\"\n [searchFilters]=\"skyComponentProperties?.searchFilters\"\n [searchResultsLimit]=\"skyComponentProperties?.searchResultsLimit\"\n [searchResultTemplate]=\"skyComponentProperties?.searchResultTemplate\"\n [searchTextMinimumCharacters]=\"\n skyComponentProperties?.searchTextMinimumCharacters\n \"\n [selectMode]=\"skyComponentProperties?.selectMode\"\n [showAddButton]=\"skyComponentProperties?.showAddButton\"\n [showMoreConfig]=\"skyComponentProperties?.showMoreConfig\"\n [wrapperClass]=\"skyComponentProperties?.wrapperClass\"\n >\n </sky-lookup>\n</sky-input-box>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { SkyInputBoxModule } from '@skyux/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyLookupModule } from '@skyux/lookup';\nimport { SkyAgGridCellEditorLookupComponent } from './cell-editor-lookup.component';\n\n@NgModule({\n declarations: [SkyAgGridCellEditorLookupComponent],\n exports: [SkyAgGridCellEditorLookupComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n SkyI18nModule,\n SkyInputBoxModule,\n SkyLookupModule,\n ],\n})\nexport class SkyAgGridCellEditorLookupModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewChild,\n} from '@angular/core';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\n\nimport { ICellEditorParams } from 'ag-grid-community';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-number',\n templateUrl: './cell-editor-number.component.html',\n styleUrls: ['./cell-editor-number.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellEditorNumberComponent\n implements ICellEditorAngularComp\n{\n public value: number;\n public columnHeader: string;\n public columnWidth: number;\n public rowHeightWithoutBorders: number;\n public rowNumber: number;\n\n private params: ICellEditorParams;\n\n @ViewChild('skyCellEditorNumber', { read: ElementRef })\n private input: ElementRef;\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: ICellEditorParams): void {\n this.params = params;\n this.value = this.params.value;\n this.columnHeader = this.params.colDef.headerName;\n this.rowNumber = this.params.rowIndex + 1;\n this.columnWidth = this.params.column.getActualWidth();\n this.rowHeightWithoutBorders =\n this.params.node && this.params.node.rowHeight - 4;\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n this.input.nativeElement.focus();\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): number {\n return this.value;\n }\n}\n","<input\n type=\"number\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_number_aria_label'\n | skyLibResources: columnHeader:rowNumber\n \"\n [style.width.px]=\"columnWidth\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n [(ngModel)]=\"value\"\n #skyCellEditorNumber\n/>\n","import { NgModule } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\n\nimport { AgGridResourcesModule } from '../../../shared/ag-grid-resources.module';\n\nimport { SkyAgGridCellEditorNumberComponent } from '../cell-editor-number/cell-editor-number.component';\n\n@NgModule({\n imports: [AgGridResourcesModule, FormsModule],\n declarations: [SkyAgGridCellEditorNumberComponent],\n exports: [SkyAgGridCellEditorNumberComponent],\n})\nexport class SkyAgGridCellEditorNumberModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewChild,\n} from '@angular/core';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\n\nimport { ICellEditorParams } from 'ag-grid-community';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-text',\n templateUrl: './cell-editor-text.component.html',\n styleUrls: ['./cell-editor-text.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellEditorTextComponent\n implements ICellEditorAngularComp\n{\n public value: string;\n public textInputLabel: string;\n public columnHeader: string;\n public columnWidth: number;\n public rowHeightWithoutBorders: number;\n public rowNumber: number;\n\n private params: ICellEditorParams;\n\n @ViewChild('skyCellEditorText', { read: ElementRef })\n private input: ElementRef;\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: ICellEditorParams): void {\n this.params = params;\n this.value = this.params.charPress || this.params.value;\n this.columnHeader = this.params.colDef.headerName;\n this.rowNumber = this.params.rowIndex + 1;\n this.columnWidth = this.params.column.getActualWidth();\n this.rowHeightWithoutBorders =\n this.params.node && this.params.node.rowHeight - 4;\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n this.input.nativeElement.focus();\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): string {\n return this.value;\n }\n}\n","<input\n type=\"text\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_text_aria_label'\n | skyLibResources: columnHeader:rowNumber\n \"\n [style.width.px]=\"columnWidth\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n [(ngModel)]=\"value\"\n #skyCellEditorText\n/>\n","import { NgModule } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\n\nimport { AgGridResourcesModule } from '../../../shared/ag-grid-resources.module';\n\nimport { SkyAgGridCellEditorTextComponent } from './cell-editor-text.component';\n\n@NgModule({\n imports: [AgGridResourcesModule, FormsModule],\n declarations: [SkyAgGridCellEditorTextComponent],\n exports: [SkyAgGridCellEditorTextComponent],\n})\nexport class SkyAgGridCellEditorTextModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n} from '@angular/core';\nimport { SkyPopoverMessage, SkyPopoverMessageType } from '@skyux/popovers';\nimport { CellFocusedEvent, Events } from 'ag-grid-community';\nimport { Subject } from 'rxjs';\nimport { SkyCellRendererValidatorParams } from '../types/cell-renderer-validator-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-validator-tooltip',\n styleUrls: ['ag-grid-cell-validator-tooltip.component.scss'],\n templateUrl: 'ag-grid-cell-validator-tooltip.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellValidatorTooltipComponent {\n @Input()\n public set params(value: SkyCellRendererValidatorParams) {\n this.cellRendererParams = value;\n\n /*istanbul ignore next*/\n this.cellRendererParams.api?.addEventListener(\n Events.EVENT_CELL_FOCUSED,\n (eventParams: CellFocusedEvent) => {\n // We want to close any popovers that are opened when other cells are focused, but open a popover if the current cell is focused.\n if (\n eventParams.column.getColId() !==\n this.cellRendererParams.column.getColId() ||\n eventParams.rowIndex !== this.cellRendererParams.rowIndex\n ) {\n this.hidePopover();\n }\n }\n );\n\n /*istanbul ignore next*/\n this.cellRendererParams.eGridCell?.addEventListener('keyup', (event) => {\n if (\n ['ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowUp'].includes(event.key)\n ) {\n this.showPopover();\n }\n });\n\n /*istanbul ignore next*/\n this.cellRendererParams.api?.addEventListener(\n Events.EVENT_CELL_EDITING_STARTED,\n () => {\n this.hidePopover();\n }\n );\n\n if (\n typeof this.cellRendererParams.skyComponentProperties\n ?.validatorMessage === 'function'\n ) {\n this.validatorMessage =\n this.cellRendererParams.skyComponentProperties.validatorMessage(\n this.cellRendererParams.value,\n this.cellRendererParams.data,\n this.cellRendererParams.rowIndex\n );\n } else {\n this.validatorMessage =\n this.cellRendererParams.skyComponentProperties?.validatorMessage;\n }\n\n this.changeDetector.markForCheck();\n }\n\n public indicatorShouldShow = true;\n public popoverMessageStream = new Subject<SkyPopoverMessage>();\n public validatorMessage: string;\n\n public cellRendererParams: SkyCellRendererValidatorParams;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private zone: NgZone\n ) {}\n\n public hideIndicator(): void {\n this.zone.run(() => {\n this.indicatorShouldShow = false;\n this.changeDetector.detectChanges();\n });\n }\n\n public hidePopover(): void {\n this.popoverMessageStream.next({ type: SkyPopoverMessageType.Close });\n }\n\n public showIndicator(): void {\n this.zone.run(() => {\n this.indicatorShouldShow = true;\n this.changeDetector.detectChanges();\n });\n }\n\n public showPopover(): void {\n this.popoverMessageStream.next({ type: SkyPopoverMessageType.Open });\n }\n}\n","<div\n [skyPopover]=\"validatorPopover\"\n [skyPopoverMessageStream]=\"popoverMessageStream\"\n class=\"sky-validator-cell\"\n>\n <ng-content></ng-content>\n <sky-status-indicator\n *ngIf=\"indicatorShouldShow\"\n descriptionType=\"none\"\n indicatorType=\"danger\"\n class=\"sky-pull-right\"\n ></sky-status-indicator>\n</div>\n<sky-popover\n #validatorPopover\n (popoverClosed)=\"showIndicator()\"\n (popoverOpened)=\"hideIndicator()\"\n popoverType=\"danger\"\n>\n {{ validatorMessage }}\n</sky-popover>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NumericOptions } from '@skyux/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellRendererCurrencyParams } from '../../types/cell-renderer-currency-params';\n\nimport { ValidatorOptions } from '../../types/validator-options';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-currency',\n templateUrl: './cell-renderer-currency.component.html',\n styleUrls: ['./cell-renderer-currency.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellRendererCurrencyComponent\n implements ICellRendererAngularComp\n{\n @Input()\n public set params(value: SkyCellRendererCurrencyParams) {\n this.agInit(value);\n }\n\n public columnHeader: string;\n public columnWidth: number;\n public rowHeightWithoutBorders: number;\n public rowNumber: number;\n public skyComponentProperties: NumericOptions & ValidatorOptions = {};\n public numericOptions: NumericOptions = {};\n public value: number;\n\n private _params: SkyCellRendererCurrencyParams;\n\n /**\n * agInit is called by agGrid once after the renderer is created and provides the renderer with the information it needs.\n * @param params The cell renderer params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellRendererCurrencyParams) {\n this.updateProperties(params);\n }\n\n public refresh(params: SkyCellRendererCurrencyParams): boolean {\n return false;\n }\n\n private updateProperties(params: SkyCellRendererCurrencyParams) {\n this._params = params;\n this.value = this._params.value;\n this.columnHeader = this._params.colDef && this._params.colDef.headerName;\n this.rowNumber = this._params.rowIndex + 1;\n this.columnWidth = this._params.column?.getActualWidth();\n this.rowHeightWithoutBorders =\n this._params.node && this._params.node.rowHeight - 4;\n this.skyComponentProperties = this._params.skyComponentProperties || {};\n this.skyComponentProperties.format = 'currency';\n this.skyComponentProperties.minDigits = 2;\n this.skyComponentProperties.truncate = false;\n }\n}\n","<span\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_renderer_currency_aria_label'\n | skyLibResources: columnHeader:rowNumber\n \"\n [style.width.px]=\"columnWidth\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n>\n {{ value | skyNumeric: skyComponentProperties }}\n</span>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n} from '@angular/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellRendererCurrencyParams } from '../../types/cell-renderer-currency-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-currency-validator',\n templateUrl: 'cell-renderer-currency-validator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellRendererCurrencyValidatorComponent\n implements ICellRendererAngularComp\n{\n @Input()\n public set parameters(value: SkyCellRendererCurrencyParams) {\n this.agInit(value);\n }\n\n public cellRendererParams: SkyCellRendererCurrencyParams;\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n /**\n * agInit is called by agGrid once after the renderer is created and provides the renderer with the information it needs.\n * @param params The cell renderer params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellRendererCurrencyParams) {\n this.cellRendererParams = params;\n this.changeDetector.markForCheck();\n }\n\n public isNumeric(value: any) {\n return !isNaN(parseFloat(value));\n }\n\n public refresh(params: SkyCellRendererCurrencyParams): boolean {\n return false;\n }\n}\n","<sky-ag-grid-cell-validator-tooltip [params]=\"cellRendererParams\">\n <sky-ag-grid-cell-renderer-currency\n *ngIf=\"isNumeric(cellRendererParams.value); else rawValue\"\n [params]=\"cellRendererParams\"\n ></sky-ag-grid-cell-renderer-currency>\n <ng-template #rawValue>{{ cellRendererParams.value }}</ng-template>\n</sky-ag-grid-cell-validator-tooltip>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n} from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { SkyCellRendererLookupParams } from '../../types/cell-renderer-lookup-params';\nimport {\n applySkyLookupPropertiesDefaults,\n SkyLookupProperties,\n} from '../../types/lookup-properties';\n\n@Component({\n selector: 'sky-cell-renderer-lookup',\n templateUrl: './cell-renderer-lookup.component.html',\n styleUrls: ['./cell-renderer-lookup.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellRendererLookupComponent\n implements ICellRendererAngularComp\n{\n public value: string = '';\n public summaryCount = 0;\n private lookupProperties: SkyLookupProperties;\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n public agInit(params: SkyCellRendererLookupParams): void {\n this.lookupProperties = applySkyLookupPropertiesDefaults(params);\n this.summaryCount = params.value?.length || 0;\n this.value = `${params.valueFormatted}`;\n this.changeDetector.markForCheck();\n }\n\n public refresh(params: SkyCellRendererLookupParams): boolean {\n this.agInit(params);\n return true;\n }\n}\n","<ng-container *ngIf=\"summaryCount > 5; else showValue\">\n {{ 'skyux_lookup_tokens_summary' | skyLibResources: summaryCount }}\n</ng-container>\n<ng-template #showValue>{{ value }}</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AgGridResourcesModule } from '../../../shared/ag-grid-resources.module';\nimport { SkyAgGridCellRendererLookupComponent } from './cell-renderer-lookup.component';\n\n@NgModule({\n declarations: [SkyAgGridCellRendererLookupComponent],\n exports: [SkyAgGridCellRendererLookupComponent],\n imports: [CommonModule, AgGridResourcesModule],\n})\nexport class SkyAgGridCellRendererLookupModule {}\n","import {\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nimport {\n ICellRendererParams,\n RowNode,\n RowSelectedEvent,\n} from 'ag-grid-community';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-row-selector',\n templateUrl: './cell-renderer-row-selector.component.html',\n styleUrls: ['./cell-renderer-row-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SkyAgGridCellRendererRowSelectorComponent\n implements ICellRendererAngularComp\n{\n public checked: boolean;\n public dataField: string;\n public rowNode: RowNode;\n public rowNumber: number;\n\n private params: ICellRendererParams;\n\n constructor(private changeDetection: ChangeDetectorRef) {}\n\n /**\n * agInit is called by agGrid once after the cell is created and provides the renderer with the information it needs.\n * @param params The cell renderer params that include data about the cell, column, row, and grid.\n */\n public agInit(params: ICellRendererParams): void {\n this.params = params;\n this.dataField = this.params.colDef && this.params.colDef.field;\n this.rowNode = this.params.node;\n this.rowNumber = this.params.rowIndex + 1;\n\n if (this.dataField) {\n this.checked = this.params.value;\n this.rowNode.setSelected(this.checked);\n } else {\n this.checked = this.rowNode.isSelected();\n }\n\n this.rowNode.addEventListener(\n RowNode.EVENT_ROW_SELECTED,\n (event: RowSelectedEvent) => {\n this.rowSelectedListener(event);\n }\n );\n }\n\n /**\n * Used by agGrid to update cell value after a user triggers a refresh. It updates the cell DOM and returns true when the refresh is\n * successful, or false if the cell should be destroyed and rerendered. If consumers have external logic that changes the value of a\n * checkbox cell, rerendering it will gurantee the change applies without knowing the consumer's implementation.\n */\n public refresh(): boolean {\n return false;\n }\n\n public updateRow(): void {\n this.rowNode.setSelected(this.checked);\n\n if (this.dataField) {\n this.rowNode.data[this.dataField] = this.checked;\n }\n }\n\n private rowSelectedListener(event: RowSelectedEvent): void {\n this.checked = event.node.isSelected();\n\n if (this.dataField) {\n this.rowNode.data[this.dataField] = this.checked;\n }\n\n this.changeDetection.markForCheck();\n }\n}\n","<sky-checkbox\n data-sky-id=\"row-checkbox\"\n tabindex=\"-1\"\n [label]=\"'sky_ag_grid_row_selector_aria_label' | skyLibResources: rowNumber\"\n [attr.aria-label]=\"\n 'sky_ag_grid_row_selector_aria_label' | skyLibResources: rowNumber\n \"\n [(ngModel)]=\"checked\"\n (change)=\"updateRow()\"\n>\n</sky-checkbox>\n","import { NgModule } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\n\nimport { SkyCheckboxModule } from '@skyux/forms';\n\nimport { AgGridResourcesModule } from '../../../shared/ag-grid-resources.module';\n\nimport { SkyAgGridCellRendererRowSelectorComponent } from '../cell-renderer-row-selector/cell-renderer-row-selector.component';\n\n@NgModule({\n imports: [AgGridResourcesModule, SkyCheckboxModule, FormsModule],\n declarations: [SkyAgGridCellRendererRowSelectorComponent],\n exports: [SkyAgGridCellRendererRowSelectorComponent],\n})\nexport class SkyAgGridCellRendererRowSelectorModule {}\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n ContentChildren,\n Directive,\n Input,\n OnDestroy,\n QueryList,\n} from '@angular/core';\n\nimport { Subject, Subscription } from 'rxjs';\n\nimport { takeUntil, filter } from 'rxjs/operators';\n\nimport { AgGridAngular } from 'ag-grid-angular';\n\nimport {\n ColumnApi,\n ColumnMovedEvent,\n ColumnState,\n DragStartedEvent,\n DragStoppedEvent,\n RowSelectedEvent,\n} from 'ag-grid-community';\n\nimport {\n SkyDataManagerService,\n SkyDataManagerSortOption,\n SkyDataManagerState,\n SkyDataViewConfig,\n} from '@skyux/data-manager';\n\nimport { SkyAgGridWrapperComponent } from './ag-grid-wrapper.component';\n\n/**\n * @internal\n */\n@Directive({\n selector: '[skyAgGridDataManagerAdapter]',\n})\nexport class SkyAgGridDataManagerAdapterDirective\n implements AfterContentInit, OnDestroy\n{\n @Input()\n public viewId: string;\n\n @ContentChildren(AgGridAngular, { descendants: true })\n public agGridList: QueryList<AgGridAngular>;\n\n @ContentChildren(SkyAgGridWrapperComponent, { descendants: true })\n public skyAgGridWrapperList: QueryList<SkyAgGridWrapperComponent>;\n\n private currentAgGrid: AgGridAngular;\n private currentDataState: SkyDataManagerState;\n private currentSkyAgGridWrapper: SkyAgGridWrapperComponent;\n private dataStateSub: Subscription;\n private viewConfig: SkyDataViewConfig;\n private ngUnsubscribe = new Subject();\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private dataManagerSvc: SkyDataManagerService\n ) {}\n\n public ngAfterContentInit(): void {\n this.dataManagerSvc.setViewkeeperClasses(this.viewId, ['.ag-header']);\n\n this.viewConfig = this.dataManagerSvc.getViewById(this.viewId);\n this.checkForAgGrid();\n this.checkForSkyAgGridWrapper();\n\n this.agGridList.changes\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => this.checkForAgGrid());\n\n this.skyAgGridWrapperList.changes\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => this.checkForSkyAgGridWrapper());\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n private checkForAgGrid(): void {\n const agGridCount = this.agGridList.length;\n\n /* istanbul ignore else */\n if (agGridCount === 0) {\n this.unregisterAgGrid();\n } else if (this.agGridList.first !== this.currentAgGrid) {\n this.registerAgGrid();\n }\n\n if (agGridCount > 1) {\n console.warn(\n 'More than one ag-grid child component was found. Using the first ag-Grid.'\n );\n }\n }\n\n private checkForSkyAgGridWrapper(): void {\n const skyAgGridWrapperCount = this.skyAgGridWrapperList.length;\n\n /* istanbul ignore else */\n if (skyAgGridWrapperCount === 0) {\n this.unregisterSkyAgGridWrapper();\n } else if (\n this.skyAgGridWrapperList.first !== this.currentSkyAgGridWrapper\n ) {\n this.registerSkyAgGridWrapper();\n }\n\n if (skyAgGridWrapperCount > 1) {\n console.warn(\n 'More than one ag-grid child component was found. Using the first ag-Grid.'\n );\n }\n }\n\n private unregisterAgGrid(): void {\n this.currentAgGrid = undefined;\n\n /* istanbul ignore if */\n if (this.dataStateSub) {\n this.dataStateSub.unsubscribe();\n }\n }\n\n private unregisterSkyAgGridWrapper(): void {\n this.currentSkyAgGridWrapper = undefined;\n }\n\n private registerSkyAgGridWrapper(): void {\n this.unregisterSkyAgGridWrapper();\n\n this.currentSkyAgGridWrapper = this.skyAgGridWrapperList.first;\n\n setTimeout(() => {\n if (this.currentSkyAgGridWrapper) {\n this.currentSkyAgGridWrapper.viewkeeperClasses = [];\n }\n });\n }\n\n private registerAgGrid(): void {\n this.unregisterAgGrid();\n\n const agGrid = this.agGridList.first;\n\n this.currentAgGrid = agGrid;\n\n agGrid.gridReady.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {\n this.viewConfig.onSelectAllClick = this.selectAll.bind(this);\n this.viewConfig.onClearAllClick = this.clearAll.bind(this);\n\n this.dataManagerSvc.updateViewConfig(this.viewConfig);\n\n this.dataStateSub = this.dataManagerSvc\n .getDataStateUpdates(this.viewConfig.id)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((dataState: SkyDataManagerState) => {\n this.currentDataState = dataState;\n this.displayColumns(dataState);\n });\n\n agGrid.api.sizeColumnsToFit();\n });\n\n agGrid.columnMoved\n .pipe(\n takeUntil(this.ngUnsubscribe),\n filter(\n (event: ColumnMovedEvent) =>\n ![\n 'gridInitializing',\n 'uiColumnResized',\n 'uiColumnDragged',\n 'api',\n ].includes(event.source)\n )\n )\n .subscribe((value: ColumnMovedEvent) => {\n this.updateColumnsInCurrentDataState(value.columnApi);\n });\n let currentColumns: string[];\n agGrid.dragStarted\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((value: DragStartedEvent) => {\n currentColumns = this.getColumnOrder(value.columnApi);\n });\n agGrid.dragStopped\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((value: DragStoppedEvent) => {\n const newColumns = this.getColumnOrder(value.columnApi);\n const hasChanged = currentColumns.findIndex(\n (colId, i) => colId !== newColumns[i]\n );\n if (hasChanged > -1) {\n this.updateColumnsInCurrentDataState(value.columnApi);\n }\n });\n\n agGrid.rowSelected\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((event: RowSelectedEvent) => {\n const row = event.node;\n let selectedIds = this.currentDataState.selectedIds || [];\n const rowIndex = selectedIds.indexOf(row.data.id);\n\n if (row.isSelected() && rowIndex === -1) {\n selectedIds.push(row.data.id);\n } else if (!row.isSelected() && rowIndex !== -1) {\n selectedIds.splice(rowIndex, 1);\n }\n\n this.currentDataState.selectedIds = selectedIds;\n this.dataManagerSvc.updateDataState(\n this.currentDataState,\n this.viewConfig.id\n );\n this.changeDetector.markForCheck();\n });\n\n agGrid.sortChanged.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {\n const gridColumnStates: ColumnState[] = agGrid.columnApi.getColumnState();\n let sortOption: SkyDataManagerSortOption;\n\n /* istanbul ignore else */\n if (gridColumnStates.length) {\n const activeSortColumnState = gridColumnStates.find(\n (aGridColumnState) => aGridColumnState.sortIndex === 0\n );\n\n const dataManagerConfig =\n this.dataManagerSvc.getCurrentDataManagerConfig();\n\n /* istanbul ignore else */\n if (dataManagerConfig.sortOptions && activeSortColumnState) {\n sortOption = dataManagerConfig.sortOptions.find(\n (option: SkyDataManagerSortOption) => {\n return (\n option.propertyName === activeSortColumnState.colId &&\n option.descending === (activeSortColumnState.sort === 'desc')\n );\n }\n );\n } else {\n sortOption = undefined;\n }\n }\n this.currentDataState.activeSortOption = sortOption;\n this.dataManagerSvc.updateDataState(\n this.currentDataState,\n this.viewConfig.id\n );\n });\n }\n\n private updateColumnsInCurrentDataState(columnApi: ColumnApi) {\n const columnOrder = this.getColumnOrder(columnApi);\n\n const viewState = this.currentDataState.getViewStateById(\n this.viewConfig.id\n );\n viewState.displayedColumnIds = columnOrder;\n\n this.dataManagerSvc.updateDataState(\n this.currentDataState.addOrUpdateView(this.viewConfig.id, viewState),\n this.viewConfig.id\n );\n }\n\n private getColumnOrder(columnApi: ColumnApi): string[] {\n return columnApi\n .getAllDisplayedVirtualColumns()\n .map((col) => col.getColDef().colId);\n }\n\n private displayColumns(dataState: SkyDataManagerState): void {\n const agGrid = this.currentAgGrid;\n const viewState = dataState.getViewStateById(this.viewConfig.id);\n let displayedColumnIds: string[] = [];\n /*istanbul ignore else*/\n if (viewState.displayedColumnIds) {\n displayedColumnIds = viewState.displayedColumnIds;\n }\n const columns = agGrid.columnApi.getAllColumns();\n\n for (const column of columns) {\n const colId = column.getColId();\n const colIndex = displayedColumnIds.indexOf(colId);\n\n agGrid.columnApi.setColumnVisible(colId, colIndex !== -1);\n agGrid.columnApi.moveColumn(colId, colIndex);\n }\n }\n\n private selectAll(): void {\n const agGrid = this.agGridList.first;\n agGrid.api.selectAll();\n }\n\n private clearAll(): void {\n const agGrid = this.agGridList.first;\n agGrid.api.deselectAll();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyStatusIndicatorModule } from '@skyux/indicators';\nimport { SkyPopoverModule } from '@skyux/popovers';\nimport { SkyAgGridCellValidatorTooltipComponent } from './ag-grid-cell-validator-tooltip.component';\n\n@NgModule({\n declarations: [SkyAgGridCellValidatorTooltipComponent],\n exports: [SkyAgGridCellValidatorTooltipComponent],\n imports: [CommonModule, SkyPopoverModule, SkyStatusIndicatorModule],\n})\nexport class SkyAgGridCellValidatorModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\n\nimport { SkyNumericModule } from '@skyux/core';\n\nimport { AgGridResourcesModule } from '../../../shared/ag-grid-resources.module';\n\nimport { SkyAgGridCellRendererCurrencyValidatorComponent } from './cell-renderer-currency-validator.component';\n\nimport { SkyAgGridCellRendererCurrencyComponent } from './cell-renderer-currency.component';\n\nimport { SkyAgGridCellValidatorModule } from '../../cell-validator/ag-grid-cell-validator.module';\n\n@NgModule({\n imports: [\n CommonModule,\n AgGridResourcesModule,\n SkyAgGridCellValidatorModule,\n FormsModule,\n SkyNumericModule,\n ],\n declarations: [\n SkyAgGridCellRendererCurrencyComponent,\n SkyAgGridCellRendererCurrencyValidatorComponent,\n ],\n exports: [\n SkyAgGridCellRendererCurrencyComponent,\n SkyAgGridCellRendererCurrencyValidatorComponent,\n ],\n})\nexport class SkyAgGridCellRendererCurrencyModule {}\n","import {\n Component,\n ElementRef,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\n\n/**\n * Component for rendering the inline delete template in the overlay.\n * @internal\n */\n@Component({\n template: `\n <ng-template\n let-row\n let-tableWidth=\"tableWidth()\"\n let-getRowDeleteItem=\"getRowDeleteItem\"\n let-cancelRowDelete=\"cancelRowDelete\"\n let-confirmRowDelete=\"confirmRowDelete\"\n #inlineDeleteTemplateRef\n >\n <div\n class=\"sky-ag-grid-row-delete\"\n [id]=\"'row-delete-ref-' + row.id\"\n [ngStyle]=\"{\n height: row.rowHeight + 'px',\n position: 'fixed',\n width: tableWidth + 'px'\n }\"\n #inlineDeleteRef\n >\n <sky-inline-delete\n [pending]=\"getRowDeleteItem(row).pending\"\n (cancelTriggered)=\"cancelRowDelete(row)\"\n (deleteTriggered)=\"confirmRowDelete(row)\"\n ></sky-inline-delete>\n </div>\n </ng-template>\n `,\n})\nexport class SkyAgGridRowDeleteComponent {\n @ViewChildren('inlineDeleteRef')\n public inlineDeleteRefs: QueryList<ElementRef>;\n @ViewChild('inlineDeleteTemplateRef', { read: TemplateRef })\n public inlineDeleteTemplateRef: TemplateRef<any>;\n}\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n ComponentFactoryResolver,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewContainerRef,\n} from '@angular/core';\n\nimport {\n SkyAffixAutoFitContext,\n SkyAffixer,\n SkyAffixService,\n SkyOverlayService,\n} from '@skyux/core';\n\nimport { AgGridAngular } from 'ag-grid-angular';\n\nimport { RowNode } from 'ag-grid-community';\n\nimport { Subject } from 'rxjs';\n\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyAgGridRowDeleteComponent } from './ag-grid-row-delete.component';\n\nimport { SkyAgGridRowDeleteCancelArgs } from './types/ag-grid-row-delete-cancel-args';\n\nimport { SkyAgGridRowDeleteConfig } from './types/ag-grid-row-delete-config';\n\nimport { SkyAgGridRowDeleteConfirmArgs } from './types/ag-grid-row-delete-confirm-args';\n\nimport { SkyAgGridRowDeleteContents } from './types/ag-grid-row-delete-contents';\n\n/**\n * @internal\n */\n@Directive({\n selector: '[skyAgGridRowDelete]',\n})\nexport class SkyAgGridRowDeleteDirective\n implements AfterContentInit, OnDestroy\n{\n /**\n * Specifies the ids of the data in the rows on which inline delete's should be shown.\n */\n @Input()\n set rowDeleteIds(value: string[]) {\n this._rowDeleteIds = value;\n\n if (!value) {\n for (let config of this.rowDeleteConfigs) {\n this.destroyRowDelete(config.id);\n }\n\n this.changeDetector.markForCheck();\n\n return;\n }\n\n for (let id of value) {\n const existingConfig = this.rowDeleteConfigs.find(\n (config) => config.id === id\n );\n if (existingConfig) {\n existingConfig.pending = false;\n } else {\n this.rowDeleteConfigs.push({\n id: id,\n pending: false,\n });\n\n let overlay = this.overlayService.create({\n enableScroll: true,\n showBackdrop: false,\n closeOnNavigation: true,\n enableClose: false,\n enablePointerEvents: true,\n });\n\n overlay.attachTemplate(\n this.rowDeleteComponent.inlineDeleteTemplateRef,\n {\n $implicit: this.agGrid.api.getRowNode(id),\n tableWidth: () => {\n return this.tableWidth;\n },\n getRowDeleteItem: (row: RowNode) => this.getRowDeleteItem(row),\n cancelRowDelete: (row: RowNode) => this.cancelRowDelete(row),\n confirmRowDelete: (row: RowNode) => this.confirmRowDelete(row),\n }\n );\n\n /**\n * We are manually setting the z-index here because overlays will always be on top of\n * the omnibar. This manual setting is 2 less than the omnibar's z-index of 1000 and one less than\n * the header row's viewkeeper which is 999. We discussed changing the overlay service to allow for this\n * but decided against that change at this time due to its niche nature.\n */\n overlay.componentRef.instance.zIndex = '998';\n\n setTimeout(() => {\n const inlineDeleteRef = this.rowDeleteComponent.inlineDeleteRefs\n .toArray()\n .find((elRef) => {\n return elRef.nativeElement.id === 'row-delete-ref-' + id;\n });\n let affixer = this.affixService.createAffixer(inlineDeleteRef);\n\n this.affixToRow(affixer, id);\n\n this.rowDeleteContents[id] = {\n affixer: affixer,\n overlay: overlay,\n };\n });\n }\n }\n\n for (let config of this.rowDeleteConfigs) {\n if (value.indexOf(config.id) < 0) {\n this.destroyRowDelete(config.id);\n }\n }\n\n this.changeDetector.markForCheck();\n }\n\n get rowDeleteIds(): string[] {\n return this._rowDeleteIds;\n }\n\n /**\n * Emits a `SkyAgGridRowDeleteCancelArgs` object when a row's inline delete is cancelled.\n */\n @Output()\n public rowDeleteCancel = new EventEmitter<SkyAgGridRowDeleteCancelArgs>();\n\n /**\n * Emits a `SkyAgGridRowDeleteConfirmArgs` object when a row's inline delete is confirmed.\n */\n @Output()\n public rowDeleteConfirm = new EventEmitter<SkyAgGridRowDeleteConfirmArgs>();\n\n /**\n * Emits when the list of ids of the data in the rows where inline deletes are shown changes.\n */\n @Output()\n public rowDeleteIdsChange = new EventEmitter<string[]>();\n\n public rowDeleteConfigs: SkyAgGridRowDeleteConfig[] = [];\n\n public get tableWidth() {\n return this.elementRef.nativeElement.querySelectorAll('.sky-ag-grid')[0]\n .offsetWidth;\n }\n\n @ContentChild(AgGridAngular)\n public agGrid: AgGridAngular;\n\n private ngUnsubscribe = new Subject();\n private rowDeleteComponent: SkyAgGridRowDeleteComponent;\n private rowDeleteContents: { [id: string]: SkyAgGridRowDeleteContents } = {};\n\n private _rowDeleteIds: string[];\n\n constructor(\n private affixService: SkyAffixService,\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef,\n private resolver: ComponentFactoryResolver,\n private overlayService: SkyOverlayService,\n private viewContainerRef: ViewContainerRef\n ) {}\n\n public ngAfterContentInit(): void {\n const factory = this.resolver.resolveComponentFactory(\n SkyAgGridRowDeleteComponent\n );\n this.rowDeleteComponent =\n this.viewContainerRef.createComponent(factory).instance;\n this.agGrid.rowDataChanged\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.updateRowDeleteStates();\n });\n\n this.agGrid.rowDataUpdated\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.updateRowDeleteStates();\n });\n\n this.agGrid.sortChanged\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.updateRowDeleteStates();\n });\n\n this.agGrid.filterChanged\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.updateRowDeleteStates();\n });\n\n this.agGrid.getRowNodeId = (data: any) => {\n return data.id.toString();\n };\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n\n Object.keys(this.rowDeleteContents).forEach((id) => {\n this.destroyRowDelete(id);\n });\n }\n\n public cancelRowDelete(row: RowNode): void {\n this.rowDeleteConfigs = this.rowDeleteConfigs.filter(\n (config) => config.id !== row.id\n );\n this.rowDeleteCancel.emit({ id: row.id });\n\n this.destroyRowDelete(row.id);\n }\n\n public confirmRowDelete(row: RowNode): void {\n this.rowDeleteConfigs.find((config) => config.id === row.id).pending = true;\n this.rowDeleteConfirm.emit({ id: row.id });\n }\n\n public getRowDeleteItem(row: RowNode): SkyAgGridRowDeleteConfig {\n return this.rowDeleteConfigs.find((rowDelete) => rowDelete.id === row.id);\n }\n\n private affixToRow(affixer: SkyAffixer, id: string) {\n let rowElement: HTMLElement = this.elementRef.nativeElement.querySelector(`\n [row-id=\"${id}\"] div[aria-colindex=\"1\"],\n .ag-row.sky-ag-grid-row-${id} div[aria-colindex=\"1\"]\n `);\n\n // This covers cases where AG Grid places the column index on an inner element (such as with the `enableCellTextSelection` option)\n // This appears to have been fixed by AG Grid in version 24 and so it is not testable after that version.\n /* istanbul ignore if */\n if (!rowElement) {\n const columns = this.elementRef.nativeElement.querySelectorAll(\n '[row-id=\"' + id + '\"] > div'\n );\n\n for (let i = 0; i < columns.length; i++) {\n if (columns[i].querySelector('[aria-colindex=\"1\"]')) {\n rowElement = columns[i];\n break;\n }\n }\n }\n\n affixer.affixTo(rowElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n isSticky: true,\n placement: 'above',\n verticalAlignment: 'top',\n horizontalAlignment: 'left',\n enableAutoFit: false,\n });\n }\n\n private destroyRowDelete(id: string): void {\n const rowDeleteContents = this.rowDeleteContents[id];\n\n /* sanity check */\n /* istanbul ignore else */\n if (rowDeleteContents) {\n rowDeleteContents.affixer.destroy();\n this.overlayService.close(rowDeleteContents.overlay);\n delete this.rowDeleteContents[id];\n this.rowDeleteConfigs = this.rowDeleteConfigs.filter(\n (config) => config.id !== id\n );\n this._rowDeleteIds = this.rowDeleteIds?.filter(\n (arrayId) => arrayId !== id\n );\n this.rowDeleteIdsChange.emit(this._rowDeleteIds);\n }\n }\n\n private updateRowDeleteStates(): void {\n this.rowDeleteConfigs.forEach((config: SkyAgGridRowDeleteConfig) => {\n if (!this.agGrid.api.getRowNode(config.id)) {\n this.destroyRowDelete(config.id);\n } else {\n // We must reaffix things when the data changes because the rows rerender and the previous element that the delete was affixed\n // to is destroyed.\n this.affixToRow(this.rowDeleteContents[config.id].affixer, config.id);\n }\n });\n this.changeDetector.markForCheck();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewChild,\n} from '@angular/core';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellEditorCurrencyParams } from '../../types/cell-editor-currency-params';\n\nimport { SkyCurrencyProperties } from '../../types/currency-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-currency',\n templateUrl: './cell-editor-currency.component.html',\n styleUrls: ['./cell-editor-currency.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellEditorCurrencyComponent\n implements ICellEditorAngularComp\n{\n public value: number;\n public skyComponentProperties: SkyCurrencyProperties = {};\n public columnHeader: string;\n public columnWidth: number;\n public rowHeightWithoutBorders: number;\n public rowNumber: number;\n\n private params: SkyCellEditorCurrencyParams;\n\n @ViewChild('skyCellEditorCurrency', { read: ElementRef })\n private input: ElementRef;\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorCurrencyParams): void {\n this.params = params;\n this.value = this.params.value;\n this.columnHeader = this.params.colDef.headerName;\n this.rowNumber = this.params.rowIndex + 1;\n this.columnWidth = this.params.column.getActualWidth();\n this.rowHeightWithoutBorders =\n this.params.node && this.params.node.rowHeight - 4;\n this.skyComponentProperties = this.params.skyComponentProperties || {\n decimalPlaces: 2,\n currencySymbol: '$',\n };\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n this.input.nativeElement.focus();\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): number {\n return this.value;\n }\n}\n","<input\n type=\"text\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_currency_aria_label'\n | skyLibResources: columnHeader:rowNumber\n \"\n [style.width.px]=\"columnWidth\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n [(ngModel)]=\"value\"\n [skyAutonumeric]=\"skyComponentProperties\"\n #skyCellEditorCurrency\n/>\n","import { NgModule } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { SkyAutonumericModule } from '@skyux/autonumeric';\n\nimport { AgGridResourcesModule } from '../../../shared/ag-grid-resources.module';\n\nimport { SkyAgGridCellEditorCurrencyComponent } from './cell-editor-currency.component';\n\n@NgModule({\n imports: [AgGridResourcesModule, FormsModule, SkyAutonumericModule],\n declarations: [SkyAgGridCellEditorCurrencyComponent],\n exports: [SkyAgGridCellEditorCurrencyComponent],\n})\nexport class SkyAgGridCellEditorCurrencyModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n} from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { ValueFormatterParams } from 'ag-grid-community';\nimport { SkyCellRendererValidatorParams } from '../../types/cell-renderer-validator-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-validator-tooltip',\n templateUrl: 'cell-renderer-validator-tooltip.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridCellRendererValidatorTooltipComponent\n implements ICellRendererAngularComp\n{\n @Input()\n public set params(value: SkyCellRendererValidatorParams) {\n this.agInit(value);\n }\n\n public cellRendererParams: SkyCellRendererValidatorParams;\n public value: any;\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n public agInit(params: SkyCellRendererValidatorParams): void {\n this.cellRendererParams = params;\n if (typeof params.colDef?.valueFormatter === 'function') {\n this.value = params.colDef.valueFormatter(params as ValueFormatterParams);\n } else {\n this.value = params.value;\n }\n this.changeDetector.markForCheck();\n }\n\n public refresh(params: any): boolean {\n return false;\n }\n}\n","<sky-ag-grid-cell-validator-tooltip [params]=\"cellRendererParams\">\n {{ value }}\n</sky-ag-grid-cell-validator-tooltip>\n","import { NgModule } from '@angular/core';\nimport { SkyAgGridCellValidatorModule } from '../../cell-validator/ag-grid-cell-validator.module';\nimport { SkyAgGridCellRendererValidatorTooltipComponent } from './cell-renderer-validator-tooltip.component';\n\n@NgModule({\n declarations: [SkyAgGridCellRendererValidatorTooltipComponent],\n exports: [SkyAgGridCellRendererValidatorTooltipComponent],\n imports: [SkyAgGridCellValidatorModule],\n})\nexport class SkyAgGridCellRendererValidatorTooltipModule {}\n","import { CommonModule } from '@angular/common';\n\nimport { NgModule } from '@angular/core';\n\nimport { SkyViewkeeperModule } from '@skyux/core';\n\nimport { AgGridModule } from 'ag-grid-angular';\n\nimport { SkyDataManagerModule } from '@skyux/data-manager';\n\nimport { SkyInlineDeleteModule } from '@skyux/layout';\n\nimport { SkyAgGridWrapperComponent } from './ag-grid-wrapper.component';\n\nimport { SkyAgGridCellEditorAutocompleteComponent } from './cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component';\n\nimport { SkyAgGridCellEditorAutocompleteModule } from './cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.module';\n\nimport { SkyAgGridCellEditorDatepickerComponent } from './cell-editors/cell-editor-datepicker/cell-editor-datepicker.component';\n\nimport { SkyAgGridCellEditorDatepickerModule } from './cell-editors/cell-editor-datepicker/cell-editor-datepicker.module';\n\nimport { SkyAgGridCellEditorLookupModule } from './cell-editors/cell-editor-lookup/cell-editor-lookup.module';\n\nimport { SkyAgGridCellEditorNumberComponent } from './cell-editors/cell-editor-number/cell-editor-number.component';\n\nimport { SkyAgGridCellEditorNumberModule } from './cell-editors/cell-editor-number/cell-editor-number.module';\n\nimport { SkyAgGridCellEditorTextComponent } from './cell-editors/cell-editor-text/cell-editor-text.component';\n\nimport { SkyAgGridCellEditorTextModule } from './cell-editors/cell-editor-text/cell-editor-text.module';\n\nimport { SkyAgGridCellRendererCurrencyValidatorComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component';\n\nimport { SkyAgGridCellRendererLookupModule } from './cell-renderers/cell-renderer-lookup/cell-renderer-lookup.module';\n\nimport { SkyAgGridCellRendererRowSelectorComponent } from './cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component';\n\nimport { SkyAgGridCellRendererRowSelectorModule } from './cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.module';\n\nimport { SkyAgGridDataManagerAdapterDirective } from './ag-grid-data-manager-adapter.directive';\n\nimport { SkyAgGridCellRendererCurrencyModule } from './cell-renderers/cell-renderer-currency/cell-renderer-currency.module';\n\nimport { SkyAgGridCellRendererCurrencyComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency.component';\n\nimport { SkyAgGridRowDeleteComponent } from './ag-grid-row-delete.component';\n\nimport { SkyAgGridRowDeleteDirective } from './ag-grid-row-delete.directive';\n\nimport { SkyAgGridCellEditorCurrencyModule } from './cell-editors/cell-editor-currency/cell-editor-currency.module';\n\nimport { SkyAgGridCellEditorCurrencyComponent } from './cell-editors/cell-editor-currency/cell-editor-currency.component';\n\nimport { SkyAgGridCellRendererValidatorTooltipComponent } from './cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component';\n\nimport { SkyAgGridCellRendererValidatorTooltipModule } from './cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.module';\n\nimport { SkyAgGridCellValidatorModule } from './cell-validator/ag-grid-cell-validator.module';\n\n@NgModule({\n declarations: [\n SkyAgGridDataManagerAdapterDirective,\n SkyAgGridRowDeleteComponent,\n SkyAgGridRowDeleteDirective,\n SkyAgGridWrapperComponent,\n ],\n imports: [\n AgGridModule,\n CommonModule,\n SkyAgGridCellEditorAutocompleteModule,\n SkyAgGridCellEditorDatepickerModule,\n SkyAgGridCellEditorLookupModule,\n SkyAgGridCellEditorNumberModule,\n SkyAgGridCellEditorCurrencyModule,\n SkyAgGridCellRendererCurrencyModule,\n SkyAgGridCellRendererLookupModule,\n SkyAgGridCellRendererRowSelectorModule,\n SkyAgGridCellRendererValidatorTooltipModule,\n SkyAgGridCellValidatorModule,\n SkyAgGridCellEditorTextModule,\n SkyDataManagerModule,\n SkyInlineDeleteModule,\n SkyViewkeeperModule,\n ],\n exports: [\n SkyAgGridDataManagerAdapterDirective,\n SkyAgGridRowDeleteComponent,\n SkyAgGridRowDeleteDirective,\n SkyAgGridWrapperComponent,\n ],\n entryComponents: [\n SkyAgGridCellEditorAutocompleteComponent,\n SkyAgGridCellEditorDatepickerComponent,\n SkyAgGridCellEditorNumberComponent,\n SkyAgGridCellEditorCurrencyComponent,\n SkyAgGridCellRendererCurrencyComponent,\n SkyAgGridCellRendererCurrencyValidatorComponent,\n SkyAgGridCellRendererRowSelectorComponent,\n SkyAgGridCellRendererValidatorTooltipComponent,\n SkyAgGridCellEditorTextComponent,\n SkyAgGridRowDeleteComponent,\n ],\n})\nexport class SkyAgGridModule {}\n","/**\n * @internal\n */\nexport enum SkyCellClass {\n Autocomplete = 'sky-ag-grid-cell-autocomplete',\n Currency = 'sky-ag-grid-cell-currency',\n Date = 'sky-ag-grid-cell-date',\n Editable = 'sky-ag-grid-cell-editable',\n Invalid = 'sky-ag-grid-cell-invalid',\n Lookup = 'sky-ag-grid-cell-lookup',\n Number = 'sky-ag-grid-cell-number',\n RowSelector = 'sky-ag-grid-cell-row-selector',\n Text = 'sky-ag-grid-cell-text',\n Uneditable = 'sky-ag-grid-cell-uneditable',\n}\n","/**\n * These column types can be used by setting the AG Grid [column definition `type`](https://www.ag-grid.com/javascript-grid-column-properties/) to one of the following values.\n * <br/>\n * Any [SKY UX component](https://developer.blackbaud.com/skyux/components) can be made into a [cell editor](https://www.ag-grid.com/javascript-grid-cell-editor/) or [cell renderer](https://www.ag-grid.com/javascript-grid-cell-rendering-components/) component. If you would like to use a component that does not have a column definition yet, please consider [contributing it](https://developer.blackbaud.com/skyux/contribute/contribution-process) to the SKY UX data entry grid module, or [file an issue](https://developer.blackbaud.com/skyux/contribute/contribution-process/file-issue) in the [`@skyux/ag-grid` repo](https://github.com/blackbaud/skyux-ag-grid).\n */\nexport enum SkyCellType {\n /**\n * **Edit mode**\n * <br/>\n * Specifies that cells in the column will be edited as [SKY UX autocomplete components](https://developer.blackbaud.com/skyux/components/autocomplete). You can set any of the autocomplete component's properties by passing them in the [column definition's `cellEditorParams` property](https://www.ag-grid.com/javascript-grid-column-properties/). These params can be updated as other cell edits are made or [provided dynamically](https://www.ag-grid.com/javascript-grid-cell-editing/#dynamic-parameters) based on other cell values. See the demo for an example. Text can be entered and a value selected from the provided list.\n * <br/><br/>\n * **Read-only mode**\n * <br/>\n * Specifies that cells the column will display the currently selected value's name property by default. If the autocomplete needs to show a different property or needs to be formatted in any way, you can [define a `valueFormatter`](https://www.ag-grid.com/javascript-grid-value-formatters/) on the column definition.\n */\n Autocomplete = 'skyCellAutocomplete',\n /**\n * **Edit mode**\n * <br/>\n * Specifies that cells in the column will be edited as a currency amount.\n * <br/><br/>\n * **Read-only mode**\n * <br/>\n * Formats the display as currency using [SKY UX numeric components](https://developer.blackbaud.com/skyux/components/numeric).\n */\n Currency = 'skyCellCurrency',\n /**\n * **Edit and read-only modes**\n * <br/>\n * Combines SkyCellType.Currency and SkyCellType.Validator, where the value is displayed as a currency and passed to a validator function.\n */\n CurrencyValidator = 'skyCellCurrencyValidator',\n /**\n * **Edit mode**\n * <br/>\n * Specifies that cells in the column will be edited as [SKY UX datepicker components](https://developer.blackbaud.com/skyux/components/datepicker). You can set any of the datepicker component's properties by passing them in the [column definition's `cellEditorParams` property](https://www.ag-grid.com/javascript-grid-column-properties/). These params can be updated as other cell edits are made or [provided dynamically](https://www.ag-grid.com/javascript-grid-cell-editing/#dynamic-parameters) based on other cell values. See the demo for an example. Date values can be entered.\n * <br/><br/>\n * **Read-only mode**\n * <br/>\n * Specifies that cells in the column will display the currently selected date formatted as `MM-DD-YYYY`, or the date format of the locale passed to `getGridOptions()`. If you would like to overwrite this format, you can [define a `valueFormatter`](https://www.ag-grid.com/javascript-grid-value-formatters/) on the column definition. See the demo for an example.\n */\n Date = 'skyCellDate',\n Lookup = 'skyCellLookup',\n /**\n * **Edit mode**\n * <br/>\n * Specifies that cells in the column will be edited as HTML number `inputs`. Only numbers can be entered.\n * <br/><br/>\n * **Read-only mode**\n * <br/>\n * Specifies that cells in the column will render as the number value.\n */\n Number = 'skyCellNumber',\n /**\n * **Edit and read-only modes**\n * <br/>\n * Combines SkyCellType.Number and SkyCellType.Validator, where the value is displayed as a number and passed to a validator function.\n */\n NumberValidator = 'skyCellNumberValidator',\n /**\n * **Edit and read-only modes**\n * <br/>\n * Specifies that cells in the column will render as [SKY UX checkbox components](https://developer.blackbaud.com/skyux/components/checkbox). It allows the user to select multiple rows, and adds a highlight to selected rows. The [Ag Grid `rowNode`](https://www.ag-grid.com/javascript-grid-row-node/) will be updated to reflect the selected state.\n */\n RowSelector = 'skyCellRowSelector',\n /**\n * **Edit mode**\n * <br/>\n * Specifies that cells in the column will be edited as HTML text `inputs`. Any characters can be entered.\n * <br/><br/>\n * **Read-only mode**\n * <br/>\n * Specifies cells in the column will render as their string value.\n */\n Text = 'skyCellText',\n /**\n * **Edit and read-only modes**\n * <br/>\n * Specifies cell in the column will be passed to a validator function which flags erroneous entries. You can set the validator function and message by passing them to [column definition's `cellRendererParams` property](https://www.ag-grid.com/javascript-grid-column-properties/) as `skyComponentProperties.validator` and `skyComponentProperties.validatorMessage`. SkyCellType.Validator can be combined with other cell types, such as SkyCellType.Autocomplete or SkyCellType.Date, by using the array syntax for the [column definition's `type` property](https://www.ag-grid.com/javascript-grid-column-properties/).\n */\n Validator = 'skyCellValidator',\n}\n","/**\n * @internal\n */\nexport enum SkyHeaderClass {\n RightAligned = 'sky-ag-grid-header-right-aligned',\n}\n","import { Injectable, OnDestroy, Optional } from '@angular/core';\n\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport {\n CellClassParams,\n GridOptions,\n ICellRendererParams,\n RowClassParams,\n SuppressKeyboardEventParams,\n ValueFormatterParams,\n} from 'ag-grid-community';\n\nimport { EditableCallbackParams } from 'ag-grid-community/dist/lib/entities/colDef';\n\nimport { Subject } from 'rxjs';\n\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyThemeService, SkyThemeSettings } from '@skyux/theme';\n\nimport { SkyAgGridCellEditorAutocompleteComponent } from './cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component';\n\nimport { SkyAgGridCellEditorDatepickerComponent } from './cell-editors/cell-editor-datepicker/cell-editor-datepicker.component';\n\nimport { SkyAgGridCellEditorLookupComponent } from './cell-editors/cell-editor-lookup/cell-editor-lookup.component';\n\nimport { SkyAgGridCellEditorNumberComponent } from './cell-editors/cell-editor-number/cell-editor-number.component';\n\nimport { SkyAgGridCellEditorTextComponent } from './cell-editors/cell-editor-text/cell-editor-text.component';\n\nimport { SkyAgGridCellRendererCurrencyValidatorComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component';\n\nimport { SkyAgGridCellRendererLookupComponent } from './cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component';\n\nimport { SkyAgGridCellRendererRowSelectorComponent } from './cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component';\n\nimport { SkyAgGridCellRendererValidatorTooltipComponent } from './cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component';\n\nimport { SkyCellClass } from './types/cell-class';\n\nimport { SkyCellType } from './types/cell-type';\n\nimport { SkyHeaderClass } from './types/header-class';\nimport { applySkyLookupPropertiesDefaults } from './types/lookup-properties';\n\nimport { SkyGetGridOptionsArgs } from './types/sky-grid-options';\n\nimport { SkyAgGridAdapterService } from './ag-grid-adapter.service';\n\nimport { SkyAgGridCellRendererCurrencyComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency.component';\n\nimport { SkyAgGridCellEditorCurrencyComponent } from './cell-editors/cell-editor-currency/cell-editor-currency.component';\n\nfunction autocompleteComparator(\n value1: { name: string },\n value2: { name: string }\n): number {\n if (value1 && value2) {\n if (value1.name > value2.name) {\n return 1;\n }\n\n if (value1.name < value2.name) {\n return -1;\n }\n\n return 0;\n }\n\n return value1 ? 1 : -1;\n}\n\nfunction autocompleteFormatter(\n params: ValueFormatterParams\n): string | undefined {\n return params.value && params.value.name;\n}\n\nfunction dateComparator(date1: any, date2: any): number {\n let date1value = date1;\n let date2value = date2;\n\n if (typeof date1value === 'string') {\n date1value = new Date(date1);\n }\n\n if (typeof date2value === 'string') {\n date2value = new Date(date2);\n }\n\n if (date1value && date2value) {\n if (date1value > date2value) {\n return 1;\n }\n\n if (date1value < date2value) {\n return -1;\n }\n\n return 0;\n }\n\n return date1value ? 1 : -1;\n}\n\nfunction getValidatorCellRendererSelector(component: string, fallback?: any) {\n return (params: ICellRendererParams) => {\n if (\n params.colDef &&\n typeof params.colDef.cellRendererParams?.skyComponentProperties\n ?.validator === 'function'\n ) {\n if (\n !params.colDef.cellRendererParams.skyComponentProperties.validator(\n params.value,\n params.data,\n params.rowIndex\n )\n ) {\n return {\n component,\n params: {\n ...params.colDef.cellRendererParams,\n },\n };\n }\n }\n return fallback;\n };\n}\n\nlet rowNodeId = -1;\n\n/**\n * `SkyAgGridService` provides methods to get AG Grid `gridOptions` to ensure grids match SKY UX functionality. The `gridOptions` can be overridden, and include registered SKY UX column types.\n */\n@Injectable({\n providedIn: 'any',\n})\nexport class SkyAgGridService implements OnDestroy {\n /**\n * @internal\n */\n public currentTheme: SkyThemeSettings;\n private ngUnsubscribe = new Subject();\n\n constructor(\n private agGridAdapterService: SkyAgGridAdapterService,\n @Optional() private themeSvc?: SkyThemeService,\n @Optional() private resources?: SkyLibResourcesService\n ) {\n /*istanbul ignore else*/\n if (this.themeSvc) {\n this.themeSvc.settingsChange\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n (settingsChange) =>\n (this.currentTheme = settingsChange.currentSettings)\n );\n }\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n /**\n * Returns [AG Grid `gridOptions`](https://www.ag-grid.com/javascript-grid-properties/) with default SKY UX options, styling, and cell renderers registered for read-only grids.\n * @param args\n * @returns\n */\n public getGridOptions(args: SkyGetGridOptionsArgs): GridOptions {\n const defaultGridOptions = this.getDefaultGridOptions(args);\n const mergedGridOptions = this.mergeGridOptions(\n defaultGridOptions,\n args.gridOptions\n );\n\n return mergedGridOptions;\n }\n\n /**\n * Returns [AG Grid `gridOptions`](https://www.ag-grid.com/javascript-grid-properties/) with default SKY UX options, styling, and cell editors registered for editable grids.\n * @param args\n * @returns\n */\n public getEditableGridOptions(args: SkyGetGridOptionsArgs): GridOptions {\n const defaultGridOptions = this.getDefaultEditableGridOptions(args);\n const mergedGridOptions = this.mergeGridOptions(\n defaultGridOptions,\n args.gridOptions\n );\n\n return mergedGridOptions;\n }\n\n private mergeGridOptions(\n defaultGridOptions: GridOptions,\n providedGridOptions: GridOptions\n ): GridOptions {\n let mergedGridOptions = {\n ...defaultGridOptions,\n ...providedGridOptions,\n columnTypes: {\n ...providedGridOptions.columnTypes,\n // apply default second to prevent consumers from overwriting our default column types\n ...defaultGridOptions.columnTypes,\n },\n defaultColDef: {\n ...defaultGridOptions.defaultColDef,\n ...providedGridOptions.defaultColDef,\n // allow consumers to override all defaultColDef properties except cellClassRules, which we reserve for styling\n cellClassRules: defaultGridOptions.defaultColDef.cellClassRules,\n },\n icons: {\n ...defaultGridOptions.icons,\n ...providedGridOptions.icons,\n },\n };\n\n return mergedGridOptions;\n }\n\n private getDefaultGridOptions(args: SkyGetGridOptionsArgs): GridOptions {\n // cellClassRules can be functions or string expressions\n const cellClassRuleTrueExpression = 'true';\n\n function getEditableFn(\n isUneditable?: boolean\n ): (params: CellClassParams) => boolean {\n return function (params: CellClassParams): boolean {\n let isEditable = params.colDef.editable;\n\n if (typeof isEditable === 'function') {\n const column = params.columnApi.getColumn(params.colDef.field);\n isEditable = isEditable({\n ...params,\n column,\n } as EditableCallbackParams);\n }\n\n return isUneditable ? !isEditable : isEditable;\n };\n }\n\n const editableCellClassRules = {\n [SkyCellClass.Editable]: getEditableFn(),\n [SkyCellClass.Uneditable]: getEditableFn(true),\n };\n\n function getValidatorFn(): (params: CellClassParams) => boolean {\n return function (param: CellClassParams) {\n if (\n param.colDef &&\n typeof param.colDef.cellRendererParams?.skyComponentProperties\n ?.validator === 'function'\n ) {\n return !param.colDef.cellRendererParams.skyComponentProperties.validator(\n param.value,\n param.data,\n param.rowIndex\n );\n }\n return false;\n };\n }\n\n const validatorCellClassRules = {\n [SkyCellClass.Invalid]: getValidatorFn(),\n };\n\n const defaultSkyGridOptions: GridOptions = {\n columnTypes: {\n [SkyCellType.Autocomplete]: {\n cellClassRules: {\n [SkyCellClass.Autocomplete]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditorFramework: SkyAgGridCellEditorAutocompleteComponent,\n valueFormatter: autocompleteFormatter,\n comparator: autocompleteComparator,\n minWidth: 185,\n },\n [SkyCellType.Currency]: {\n cellClassRules: {\n [SkyCellClass.Currency]: cellClassRuleTrueExpression,\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-currency-validator',\n { component: 'sky-ag-grid-cell-renderer-currency' }\n ),\n cellEditorFramework: SkyAgGridCellEditorCurrencyComponent,\n headerClass: SkyHeaderClass.RightAligned,\n minWidth: 185,\n },\n [SkyCellType.Date]: {\n cellClassRules: {\n [SkyCellClass.Date]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditorFramework: SkyAgGridCellEditorDatepickerComponent,\n comparator: dateComparator,\n minWidth: this.currentTheme?.theme?.name === 'modern' ? 180 : 160,\n valueFormatter: (params: ValueFormatterParams) =>\n this.dateFormatter(params, args.locale),\n },\n [SkyCellType.Lookup]: {\n cellClassRules: {\n [SkyCellClass.Lookup]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditorFramework: SkyAgGridCellEditorLookupComponent,\n cellRendererFramework: SkyAgGridCellRendererLookupComponent,\n valueFormatter: (params) => {\n const lookupProperties = applySkyLookupPropertiesDefaults(params);\n return (params.value || [])\n .map((value) => {\n return value[lookupProperties.descriptorProperty];\n })\n .filter((value) => value !== '' && value !== undefined)\n .join('; ');\n },\n minWidth: 185,\n },\n [SkyCellType.Number]: {\n cellClassRules: {\n [SkyCellClass.Number]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditorFramework: SkyAgGridCellEditorNumberComponent,\n headerClass: SkyHeaderClass.RightAligned,\n },\n [SkyCellType.RowSelector]: {\n cellClassRules: {\n [SkyCellClass.RowSelector]: cellClassRuleTrueExpression,\n [SkyCellClass.Uneditable]: cellClassRuleTrueExpression,\n },\n cellRendererFramework: SkyAgGridCellRendererRowSelectorComponent,\n headerName: '',\n minWidth: 55,\n maxWidth: 55,\n sortable: false,\n width: 55,\n },\n [SkyCellType.Text]: {\n cellClassRules: {\n [SkyCellClass.Text]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditorFramework: SkyAgGridCellEditorTextComponent,\n },\n [SkyCellType.Validator]: {\n cellClassRules: {\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-validator-tooltip'\n ),\n },\n },\n defaultColDef: {\n cellClassRules: editableCellClassRules,\n minWidth: 100,\n resizable: true,\n sortable: true,\n suppressKeyboardEvent: (keypress: SuppressKeyboardEventParams) =>\n this.suppressTab(keypress),\n },\n domLayout: 'autoHeight',\n enterMovesDownAfterEdit: true,\n frameworkComponents: {\n 'sky-ag-grid-cell-renderer-currency':\n SkyAgGridCellRendererCurrencyComponent,\n 'sky-ag-grid-cell-renderer-currency-validator':\n SkyAgGridCellRendererCurrencyValidatorComponent,\n 'sky-ag-grid-cell-renderer-validator-tooltip':\n SkyAgGridCellRendererValidatorTooltipComponent,\n },\n getRowNodeId(data: any): string {\n if ('id' in data && data.id !== undefined) {\n return `${data.id}`;\n }\n return `${rowNodeId--}`;\n },\n getRowClass: (params: RowClassParams) => {\n if (params.node.id) {\n return `sky-ag-grid-row-${params.node.id}`;\n } else {\n return undefined;\n }\n },\n headerHeight: this.currentTheme?.theme?.name === 'modern' ? 60 : 37,\n icons: {\n sortDescending: this.getIconTemplate('caret-down'),\n sortAscending: this.getIconTemplate('caret-up'),\n columnMoveMove: this.getIconTemplate('arrows'),\n columnMoveHide: this.getIconTemplate('arrows'),\n columnMoveLeft: this.getIconTemplate('arrows'),\n columnMoveRight: this.getIconTemplate('arrows'),\n columnMovePin: this.getIconTemplate('arrows'),\n },\n onCellFocused: () => this.onCellFocused(),\n rowHeight: this.currentTheme?.theme?.name === 'modern' ? 60 : 38,\n rowMultiSelectWithClick: true,\n rowSelection: 'multiple',\n singleClickEdit: true,\n // tslint:disable-next-line: no-null-keyword\n sortingOrder: ['desc', 'asc', null],\n stopEditingWhenGridLosesFocus: false,\n suppressRowClickSelection: true,\n suppressDragLeaveHidesColumns: true,\n };\n\n defaultSkyGridOptions.columnTypes[SkyCellType.CurrencyValidator] = {\n ...defaultSkyGridOptions.columnTypes[SkyCellType.Currency],\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value: any, data: any, rowIndex: number) => {\n return !!`${value || ''}`.match(/^[^0-9]*(\\d+[,.]?)+\\d*[^0-9]*$/);\n },\n validatorMessage: 'Please enter a valid currency',\n },\n },\n };\n /*istanbul ignore else*/\n if (this.resources) {\n this.resources\n .getString('sky_ag_grid_cell_renderer_currency_validator_message')\n .subscribe((value) => {\n defaultSkyGridOptions.columnTypes[\n SkyCellType.CurrencyValidator\n ].cellRendererParams.skyComponentProperties.validatorMessage = value;\n });\n }\n\n defaultSkyGridOptions.columnTypes[SkyCellType.NumberValidator] = {\n ...defaultSkyGridOptions.columnTypes[SkyCellType.Validator],\n ...defaultSkyGridOptions.columnTypes[SkyCellType.Number],\n cellClassRules: {\n ...defaultSkyGridOptions.columnTypes[SkyCellType.Validator]\n .cellClassRules,\n ...defaultSkyGridOptions.columnTypes[SkyCellType.Number].cellClassRules,\n },\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value: any, data: any, rowIndex: number) => {\n return !!value && !isNaN(parseFloat(value));\n },\n validatorMessage: 'Please enter a valid number',\n },\n },\n };\n /*istanbul ignore else*/\n if (this.resources) {\n this.resources\n .getString('sky_ag_grid_cell_renderer_number_validator_message')\n .subscribe((value) => {\n defaultSkyGridOptions.columnTypes[\n SkyCellType.NumberValidator\n ].cellRendererParams.skyComponentProperties.validatorMessage = value;\n });\n }\n\n return defaultSkyGridOptions;\n }\n\n private onCellFocused(): void {\n const currentElement = this.agGridAdapterService.getFocusedElement();\n\n this.agGridAdapterService.focusOnFocusableChildren(currentElement);\n }\n\n private getDefaultEditableGridOptions(\n args: SkyGetGridOptionsArgs\n ): GridOptions {\n let defaultGridOptions = this.getDefaultGridOptions(args);\n\n defaultGridOptions.rowSelection = 'none';\n\n return defaultGridOptions;\n }\n\n private dateFormatter(\n params: ValueFormatterParams,\n locale: string = 'en-us'\n ): string | undefined {\n const dateConfig = { year: 'numeric', month: '2-digit', day: '2-digit' };\n let date: Date = params.value;\n\n if (date && typeof date === 'string') {\n date = new Date(params.value);\n }\n\n let formattedDate =\n date &&\n date.toLocaleDateString &&\n date.toLocaleDateString(locale, dateConfig as Intl.DateTimeFormatOptions);\n\n if (date && date.getTime && !isNaN(date.getTime())) {\n return formattedDate;\n }\n }\n\n private getIconTemplate(iconName: string): string {\n return `<i class=\"fa fa-${iconName}\"></i>`;\n }\n\n private suppressTab(params: SuppressKeyboardEventParams): boolean {\n if (params.event.code === 'Tab') {\n if (params.editing) {\n const currentlyFocusedEl =\n this.agGridAdapterService.getFocusedElement();\n // inline cell editors have the 'ag-cell' class, while popup editors have the 'ag-popup-editor' class\n const cellEl = this.agGridAdapterService.getElementOrParentWithClass(\n currentlyFocusedEl,\n 'ag-cell'\n );\n const popupEl = this.agGridAdapterService.getElementOrParentWithClass(\n currentlyFocusedEl,\n 'ag-popup-editor'\n );\n const parentEl = cellEl || popupEl;\n\n const nextFocusableElementInCell =\n this.agGridAdapterService.getNextFocusableElement(\n currentlyFocusedEl,\n parentEl,\n params.event.shiftKey\n );\n return !!nextFocusableElementInCell;\n }\n return true;\n }\n return false;\n }\n}\n","// Export any types that should be included in the root.\nexport * from './modules/ag-grid/ag-grid.module';\nexport * from './modules/ag-grid/ag-grid.service';\nexport * from './modules/ag-grid/types/ag-grid-row-delete-cancel-args';\nexport * from './modules/ag-grid/types/ag-grid-row-delete-confirm-args';\nexport * from './modules/ag-grid/types/autocomplete-properties';\nexport * from './modules/ag-grid/types/cell-class';\nexport * from './modules/ag-grid/types/cell-type';\nexport * from './modules/ag-grid/types/datepicker-properties';\nexport * from './modules/ag-grid/types/header-class';\nexport * from './modules/ag-grid/types/sky-grid-options';\n\n// Components and directives must be exported to support Angular's \"partial\" Ivy compiler.\n// Obscure names are used to indicate types are not part of the public API.\nexport { SkyAgGridCellEditorAutocompleteComponent as λ1 } from './modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component';\nexport { SkyAgGridCellEditorTextComponent as λ2 } from './modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component';\nexport { SkyAgGridCellEditorCurrencyComponent as λ3 } from './modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component';\nexport { SkyAgGridCellEditorNumberComponent as λ4 } from './modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component';\nexport { SkyAgGridCellEditorDatepickerComponent as λ5 } from './modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component';\nexport { SkyAgGridRowDeleteComponent as λ6 } from './modules/ag-grid/ag-grid-row-delete.component';\nexport { SkyAgGridCellRendererRowSelectorComponent as λ7 } from './modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component';\nexport { SkyAgGridCellRendererCurrencyValidatorComponent as λ8 } from './modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component';\nexport { SkyAgGridCellRendererCurrencyComponent as λ9 } from './modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component';\nexport { SkyAgGridCellRendererValidatorTooltipComponent as λ10 } from './modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component';\nexport { SkyAgGridCellValidatorTooltipComponent as λ11 } from './modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component';\nexport { SkyAgGridWrapperComponent as λ12 } from './modules/ag-grid/ag-grid-wrapper.component';\nexport { SkyAgGridRowDeleteDirective as λ13 } from './modules/ag-grid/ag-grid-row-delete.directive';\nexport { SkyAgGridDataManagerAdapterDirective as λ14 } from './modules/ag-grid/ag-grid-data-manager-adapter.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAOa,uBAAuB;IAClC,YAAoB,iBAAwC;QAAxC,sBAAiB,GAAjB,iBAAiB,CAAuB;KAAI;IAEzD,2BAA2B,CAChC,OAAoB,EACpB,SAAiB;QAEjB,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YACpD,OAAO,OAAO,CAAC;SAChB;aAAM,IAAI,OAAO,CAAC,aAAa,EAAE;YAChC,OAAO,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;SAC3E;KACF;IAEM,qBAAqB,CAAC,QAAqB,EAAE,QAAgB;QAClE,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,QAAQ,EAAE,CAAgB,CAAC;;QAGtE,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,KAAK,EAAE,CAAC;SACjB;KACF;IAEM,iBAAiB;QACtB,OAAO,QAAQ,CAAC,aAA4B,CAAC;KAC9C;IAEM,uBAAuB,CAC5B,SAAsB,EACtB,QAAqB,EACrB,aAAuB;QAEvB,IAAI,QAAQ,EAAE;YACZ,MAAM,iBAAiB,GACrB,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YACxD,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACjE,MAAM,SAAS,GAAG,aAAa;kBAC3B,mBAAmB,GAAG,CAAC;kBACvB,mBAAmB,GAAG,CAAC,CAAC;YAE5B,IACE,CAAC,CAAC,aAAa,IAAI,iBAAiB,CAAC,MAAM,IAAI,SAAS;iBACvD,aAAa,IAAI,SAAS,IAAI,CAAC,CAAC,EACjC;gBACA,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;aACrC;SACF;KACF;IAEM,wBAAwB,CAAC,OAAoB;QAClD,IAAI,iBAAiB,GACnB,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAEvD,IAAI,iBAAiB,CAAC,MAAM,EAAE;YAC5B,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;SAC9B;KACF;;qHAxDU,uBAAuB;yHAAvB,uBAAuB,cAFtB,MAAM;4FAEP,uBAAuB;kBAHnC,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;ACSD,IAAI,OAAO,GAAG,CAAC,CAAC;AAEhB;;;MAQa,yBAAyB;IAqBpC,YACU,cAAuC,EACvC,cAAiC,EACjC,UAAsB;QAFtB,mBAAc,GAAd,cAAc,CAAyB;QACvC,mBAAc,GAAd,cAAc,CAAmB;QACjC,eAAU,GAAV,UAAU,CAAY;QALxB,uBAAkB,GAAa,EAAE,CAAC;QAOxC,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,aAAa,GAAG,+BAA+B,GAAG,OAAO,CAAC;QAC/D,IAAI,CAAC,cAAc,GAAG,gCAAgC,GAAG,OAAO,CAAC;QACjE,IAAI,CAAC,MAAM,GAAG,cAAc,GAAG,OAAO,CAAC;KACxC;IApBD,IAAW,iBAAiB;QAC1B,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAChC;IAED,IAAW,iBAAiB,CAAC,KAAe;QAC1C,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;IAeM,kBAAkB;QACvB,IACE,IAAI,CAAC,MAAM,CAAC,WAAW;YACvB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,KAAK,YAAY,EAClD;YACA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC3C;KACF;IAEM,aAAa,CAAC,KAAoB;QACvC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;YAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ;kBAC5B,IAAI,CAAC,cAAc;kBACnB,IAAI,CAAC,aAAa,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,qBAAqB,CACvC,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,SAAS,CACV,CAAC;SACH;KACF;IAEM,aAAa,CAAC,KAAiB;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,aAAa,GAAG,KAAK,CAAC,aAA4B,CAAC;QACzD,MAAM,iBAAiB,GAAG,aAAa,IAAI,aAAa,CAAC,EAAE,CAAC;QAC5D,MAAM,eAAe,GACnB,aAAa;YACb,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,2BAA2B,CAC/C,aAAa,EACb,SAAS,CACV,CAAC;QAEJ,IAAI,iBAAiB,KAAK,MAAM,IAAI,CAAC,eAAe,EAAE;YACpD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC;YAC/D,MAAM,WAAW,GAAG,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;YAExD,IAAI,WAAW,IAAI,QAAQ,IAAI,CAAC,EAAE;gBAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;aACvD;SACF;KACF;IAED,IAAY,YAAY;;;QAGtB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YAClC,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;YACxE,IAAI,kBAAkB,EAAE;gBACtB,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,IAAI,YAAY,GAAY,KAAK,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,UAA0B;oBAC/D,IAAI,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC/C,YAAY,GAAG,IAAI,CAAC;qBACrB;iBACF,CAAC,CAAC;gBAEH,OAAO,YAAY,CAAC;aACrB;SACF;aAAM;YACL,OAAO,KAAK,CAAC;SACd;KACF;;uHA/FU,yBAAyB;2GAAzB,yBAAyB,+FACtB,aAAa,8DC1B7B,2bAuBA;4FDEa,yBAAyB;kBALrC,SAAS;mBAAC;oBACT,QAAQ,EAAE,qBAAqB;oBAC/B,WAAW,EAAE,kCAAkC;oBAC/C,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;oKAKQ,MAAM;sBAHZ,YAAY;uBAAC,aAAa,EAAE;wBAC3B,MAAM,EAAE,IAAI;qBACb;;;AEfH;;;MASa,wCAAwC;IANrD;QAYS,2BAAsB,GAA8B,EAAE,CAAC;KAqB/D;IAfQ,MAAM,CAAC,MAAuC;QACnD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;QACxE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,IAAI,EAAE,CAAC;KACxE;IAEM,gBAAgB;QACrB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAClC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;;sIA1BU,wCAAwC;0HAAxC,wCAAwC,2KASH,UAAU,6BC/B5D,8nCA8BA;4FDRa,wCAAwC;kBANpD,SAAS;mBAAC;oBACT,QAAQ,EAAE,sCAAsC;oBAChD,WAAW,EAAE,2CAA2C;oBACxD,SAAS,EAAE,CAAC,2CAA2C,CAAC;oBACxD,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;8BAWQ,KAAK;sBADX,SAAS;uBAAC,2BAA2B,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;;AE/B9D;;;;;;AAiBA,MAAM,SAAS,GAA0C;IACvD,OAAO,EAAE;QACP,mCAAmC,EAAE;YACnC,OAAO,EAAE,0BAA0B;SACpC;QACD,yCAAyC,EAAE;YACzC,OAAO,EAAE,iCAAiC;SAC3C;QACD,uCAAuC,EAAE;YACvC,OAAO,EAAE,+BAA+B;SACzC;QACD,+CAA+C,EAAE;YAC/C,OAAO,EAAE,uCAAuC;SACjD;QACD,6CAA6C,EAAE;YAC7C,OAAO,EAAE,mCAAmC;SAC7C;QACD,kDAAkD,EAAE;YAClD,OAAO,EAAE,6BAA6B;SACvC;QACD,oDAAoD,EAAE;YACpD,OAAO,EAAE,+BAA+B;SACzC;QACD,2BAA2B,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE;KAC/D;CACF,CAAC;MAEW,uBAAuB;IAC3B,SAAS,CAAC,UAA4B,EAAE,IAAY;QACzD,OAAO,qBAAqB,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAClE;CACF;AAED;;;MAaa,qBAAqB;;mHAArB,qBAAqB;oHAArB,qBAAqB,YATtB,aAAa;oHASZ,qBAAqB,aARrB;QACT;YACE,OAAO,EAAE,2BAA2B;YACpC,QAAQ,EAAE,uBAAuB;YACjC,KAAK,EAAE,IAAI;SACZ;KACF,YAPS,aAAa;4FASZ,qBAAqB;kBAVjC,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,aAAa,CAAC;oBACxB,SAAS,EAAE;wBACT;4BACE,OAAO,EAAE,2BAA2B;4BACpC,QAAQ,EAAE,uBAAuB;4BACjC,KAAK,EAAE,IAAI;yBACZ;qBACF;iBACF;;;MC/CY,qCAAqC;;mIAArC,qCAAqC;oIAArC,qCAAqC,iBAHjC,wCAAwC,aAD7C,WAAW,EAAE,qBAAqB,EAAE,qBAAqB,aAEzD,wCAAwC;oIAEvC,qCAAqC,YAJvC,CAAC,WAAW,EAAE,qBAAqB,EAAE,qBAAqB,CAAC;4FAIzD,qCAAqC;kBALjD,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,WAAW,EAAE,qBAAqB,EAAE,qBAAqB,CAAC;oBACpE,YAAY,EAAE,CAAC,wCAAwC,CAAC;oBACxD,OAAO,EAAE,CAAC,wCAAwC,CAAC;iBACpD;;;ACKD;;;MAUa,sCACX,SAAQ,cAAc;IAatB,YAAgC,QAA0B;QACxD,KAAK,EAAE,CAAC;QADsB,aAAQ,GAAR,QAAQ,CAAkB;QANnD,2BAAsB,GAA4B,EAAE,CAAC;KAQ3D;;;;;IAMM,MAAM,CAAC,MAAqC;;QACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,IAAI,EAAE,CAAC;QACvE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACvD,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,uBAAuB;YAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACrD,MAAA,IAAI,CAAC,QAAQ,0CAAE,cAAc,CAAC,SAAS,CAAC,CAAC,aAAa;YACpD,IAAI,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACzD,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,WAAW,CAAC;gBAClD,IAAI,CAAC,uBAAuB;oBAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;aAClD;iBAAM;gBACL,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;gBACtD,IAAI,CAAC,uBAAuB;oBAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;aACtD;SACF,CAAC,CAAC;KACJ;;;;IAKM,gBAAgB;QACrB,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;;;;IAKM,QAAQ;QACb,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IAEM,sBAAsB;QAC3B,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAC5C;;oIA5DU,sCAAsC;wHAAtC,sCAAsC,sLAWE,UAAU,oDCxC/D,ywBAsBA;4FDOa,sCAAsC;kBAPlD,SAAS;mBAAC;oBACT,QAAQ,EAAE,oCAAoC;oBAC9C,WAAW,EAAE,yCAAyC;oBACtD,SAAS,EAAE,CAAC,yCAAyC,CAAC;oBACtD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;iBACtC;;0BAec,QAAQ;4CAFb,eAAe;sBADtB,SAAS;uBAAC,8BAA8B,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;;ME3BpD,mCAAmC;;iIAAnC,mCAAmC;kIAAnC,mCAAmC,iBAH/B,sCAAsC,aAD3C,mBAAmB,EAAE,WAAW,aAEhC,sCAAsC;kIAErC,mCAAmC,YAJrC,CAAC,mBAAmB,EAAE,WAAW,CAAC;4FAIhC,mCAAmC;kBAL/C,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,mBAAmB,EAAE,WAAW,CAAC;oBAC3C,YAAY,EAAE,CAAC,sCAAsC,CAAC;oBACtD,OAAO,EAAE,CAAC,sCAAsC,CAAC;iBAClD;;;SCkBe,gCAAgC,CAC9C,mBAAwC;IAExC,OAAO;QACL,SAAS,EAAE,mBAAmB,CAAC,SAAS,IAAI,EAAE;QAC9C,qBAAqB,EAAE,mBAAmB,CAAC,qBAAqB,IAAI,KAAK;QACzE,IAAI,EAAE,mBAAmB,CAAC,IAAI,IAAI,EAAE;QACpC,YAAY,EAAE,mBAAmB,CAAC,YAAY,IAAI,CAAC;QACnD,kBAAkB,EAAE,mBAAmB,CAAC,kBAAkB,IAAI,MAAM;QACpE,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,IAAI,KAAK;QAC/C,cAAc,EAAE,mBAAmB,CAAC,cAAc,IAAI,KAAK;QAC3D,UAAU,EAAE,mBAAmB,CAAC,UAAU,IAAI,SAAS;QACvD,eAAe,EAAE,mBAAmB,CAAC,eAAe,IAAI,EAAE;QAC1D,kBAAkB,EAAE,mBAAmB,CAAC,kBAAkB,IAAI,SAAS;QACvE,MAAM,EAAE,mBAAmB,CAAC,MAAM,IAAI,SAAS;QAC/C,aAAa,EAAE,mBAAmB,CAAC,aAAa,IAAI,EAAE;QACtD,kBAAkB,EAAE,mBAAmB,CAAC,kBAAkB,IAAI,SAAS;QACvE,oBAAoB,EAAE,mBAAmB,CAAC,oBAAoB,IAAI,SAAS;QAC3E,2BAA2B,EACzB,mBAAmB,CAAC,2BAA2B,IAAI,CAAC;QACtD,UAAU,EAAE,mBAAmB,CAAC,UAAU,IAAI,SAAS;QACvD,aAAa,EAAE,mBAAmB,CAAC,aAAa,IAAI,KAAK;QACzD,cAAc,EAAE,mBAAmB,CAAC,cAAc,IAAI,EAAE;QACxD,YAAY,EAAE,2BAA2B;KAC1C,CAAC;AACJ;;MClCa,kCAAkC;IAc7C,YACU,cAAiC,EACjC,UAAsB;QADtB,mBAAc,GAAd,cAAc,CAAmB;QACjC,eAAU,GAAV,UAAU,CAAY;QAZzB,YAAO,GAAG,IAAI,CAAC;QACf,eAAU,GAAG,IAAI,SAAS,CAAC;YAChC,gBAAgB,EAAE,IAAI,WAAW,CAAC;gBAChC,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,KAAK;aAChB,CAAC;SACH,CAAC,CAAC;KAOC;IAEG,MAAM,CAAC,MAAiC;QAC7C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACrC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SAClD;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACxD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE;YAC/C,OAAO,CAAC,OAAO,EAAE,CAAC;SACnB;QACD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;IAEM,gBAAgB;;QAErB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;KACd;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;KACtC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC;KACtD;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC;KACb;;IAGM,gBAAgB;;QACrB,MAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC,0CAAE,KAAK,EAAE,CAAC;KAC3E;IAEO,yBAAyB,CAC/B,MAAiC;QAEjC,MAAM,mBAAmB,GAAG,MAAM,CAAC,sBAAsB,CAAC;QAC1D,OAAO,gCAAgC,CAAC,mBAAmB,CAAC,CAAC;KAC9D;;gIA9DU,kCAAkC;oHAAlC,kCAAkC,sECrB/C,g4CA8BA;4FDTa,kCAAkC;kBAN9C,SAAS;mBAAC;oBACT,QAAQ,EAAE,gCAAgC;oBAC1C,WAAW,EAAE,qCAAqC;oBAClD,SAAS,EAAE,CAAC,qCAAqC,CAAC;oBAClD,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;;;MEDY,+BAA+B;;6HAA/B,+BAA+B;8HAA/B,+BAA+B,iBAV3B,kCAAkC,aAG/C,YAAY;QACZ,mBAAmB;QACnB,aAAa;QACb,iBAAiB;QACjB,eAAe,aANP,kCAAkC;8HASjC,+BAA+B,YARjC;YACP,YAAY;YACZ,mBAAmB;YACnB,aAAa;YACb,iBAAiB;YACjB,eAAe;SAChB;4FAEU,+BAA+B;kBAX3C,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,kCAAkC,CAAC;oBAClD,OAAO,EAAE,CAAC,kCAAkC,CAAC;oBAC7C,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,aAAa;wBACb,iBAAiB;wBACjB,eAAe;qBAChB;iBACF;;;ACPD;;;MASa,kCAAkC;;;;;IAkBtC,MAAM,CAAC,MAAyB;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACvD,IAAI,CAAC,uBAAuB;YAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;KACtD;;;;IAKM,gBAAgB;QACrB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAClC;;;;IAKM,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;;gIAxCU,kCAAkC;oHAAlC,kCAAkC,+JAWH,UAAU,6BC/BtD,uSAWA;4FDSa,kCAAkC;kBAN9C,SAAS;mBAAC;oBACT,QAAQ,EAAE,gCAAgC;oBAC1C,WAAW,EAAE,qCAAqC;oBAClD,SAAS,EAAE,CAAC,qCAAqC,CAAC;oBAClD,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;8BAaS,KAAK;sBADZ,SAAS;uBAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;;MElB3C,+BAA+B;;6HAA/B,+BAA+B;8HAA/B,+BAA+B,iBAH3B,kCAAkC,aADvC,qBAAqB,EAAE,WAAW,aAElC,kCAAkC;8HAEjC,+BAA+B,YAJjC,CAAC,qBAAqB,EAAE,WAAW,CAAC;4FAIlC,+BAA+B;kBAL3C,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,qBAAqB,EAAE,WAAW,CAAC;oBAC7C,YAAY,EAAE,CAAC,kCAAkC,CAAC;oBAClD,OAAO,EAAE,CAAC,kCAAkC,CAAC;iBAC9C;;;ACDD;;;MASa,gCAAgC;;;;;IAmBpC,MAAM,CAAC,MAAyB;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACxD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACvD,IAAI,CAAC,uBAAuB;YAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;KACtD;;;;IAKM,gBAAgB;QACrB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAClC;;;;IAKM,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;;8HAzCU,gCAAgC;kHAAhC,gCAAgC,2JAYH,UAAU,6BChCpD,iSAWA;4FDSa,gCAAgC;kBAN5C,SAAS;mBAAC;oBACT,QAAQ,EAAE,8BAA8B;oBACxC,WAAW,EAAE,mCAAmC;oBAChD,SAAS,EAAE,CAAC,mCAAmC,CAAC;oBAChD,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;8BAcS,KAAK;sBADZ,SAAS;uBAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;;MEnBzC,6BAA6B;;2HAA7B,6BAA6B;4HAA7B,6BAA6B,iBAHzB,gCAAgC,aADrC,qBAAqB,EAAE,WAAW,aAElC,gCAAgC;4HAE/B,6BAA6B,YAJ/B,CAAC,qBAAqB,EAAE,WAAW,CAAC;4FAIlC,6BAA6B;kBALzC,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,qBAAqB,EAAE,WAAW,CAAC;oBAC7C,YAAY,EAAE,CAAC,gCAAgC,CAAC;oBAChD,OAAO,EAAE,CAAC,gCAAgC,CAAC;iBAC5C;;;ACAD;;;MASa,sCAAsC;IA6DjD,YACU,cAAiC,EACjC,IAAY;QADZ,mBAAc,GAAd,cAAc,CAAmB;QACjC,SAAI,GAAJ,IAAI,CAAQ;QARf,wBAAmB,GAAG,IAAI,CAAC;QAC3B,yBAAoB,GAAG,IAAI,OAAO,EAAqB,CAAC;KAQ3D;IA/DJ,IACW,MAAM,CAAC,KAAqC;;QACrD,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;;QAGhC,MAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,0CAAE,gBAAgB,CAC3C,MAAM,CAAC,kBAAkB,EACzB,CAAC,WAA6B;;YAE5B,IACE,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE;gBAC3B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,EAAE;gBAC3C,WAAW,CAAC,QAAQ,KAAK,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EACzD;gBACA,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;SACF,CACF,CAAC;;QAGF,MAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,0CAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK;YACjE,IACE,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EACvE;gBACA,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;SACF,CAAC,CAAC;;QAGH,MAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,0CAAE,gBAAgB,CAC3C,MAAM,CAAC,0BAA0B,EACjC;YACE,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB,CACF,CAAC;QAEF,IACE,QAAO,MAAA,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,0CACjD,gBAAgB,CAAA,KAAK,UAAU,EACnC;YACA,IAAI,CAAC,gBAAgB;gBACnB,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,gBAAgB,CAC7D,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAC7B,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAC5B,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CACjC,CAAC;SACL;aAAM;YACL,IAAI,CAAC,gBAAgB;gBACnB,MAAA,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,0CAAE,gBAAgB,CAAC;SACpE;QAED,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;IAaM,aAAa;QAClB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACZ,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;SACrC,CAAC,CAAC;KACJ;IAEM,WAAW;QAChB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC;KACvE;IAEM,aAAa;QAClB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACZ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;SACrC,CAAC,CAAC;KACJ;IAEM,WAAW;QAChB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC;KACtE;;oIAtFU,sCAAsC;wHAAtC,sCAAsC,wGCrBnD,qhBAqBA;4FDAa,sCAAsC;kBANlD,SAAS;mBAAC;oBACT,QAAQ,EAAE,oCAAoC;oBAC9C,SAAS,EAAE,CAAC,+CAA+C,CAAC;oBAC5D,WAAW,EAAE,+CAA+C;oBAC5D,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;6HAGY,MAAM;sBADhB,KAAK;;;AEbR;;;MASa,sCAAsC;IANnD;QAkBS,2BAAsB,GAAsC,EAAE,CAAC;QAC/D,mBAAc,GAAmB,EAAE,CAAC;KA8B5C;IAxCC,IACW,MAAM,CAAC,KAAoC;QACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACpB;;;;;IAgBM,MAAM,CAAC,MAAqC;QACjD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;KAC/B;IAEM,OAAO,CAAC,MAAqC;QAClD,OAAO,KAAK,CAAC;KACd;IAEO,gBAAgB,CAAC,MAAqC;;QAC5D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;QAC1E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,MAAA,IAAI,CAAC,OAAO,CAAC,MAAM,0CAAE,cAAc,EAAE,CAAC;QACzD,IAAI,CAAC,uBAAuB;YAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,EAAE,CAAC;QACxE,IAAI,CAAC,sBAAsB,CAAC,MAAM,GAAG,UAAU,CAAC;QAChD,IAAI,CAAC,sBAAsB,CAAC,SAAS,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,sBAAsB,CAAC,QAAQ,GAAG,KAAK,CAAC;KAC9C;;oIA1CU,sCAAsC;wHAAtC,sCAAsC,wGClBnD,kSAUA;4FDQa,sCAAsC;kBANlD,SAAS;mBAAC;oBACT,QAAQ,EAAE,oCAAoC;oBAC9C,WAAW,EAAE,yCAAyC;oBACtD,SAAS,EAAE,CAAC,yCAAyC,CAAC;oBACtD,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;8BAKY,MAAM;sBADhB,KAAK;;;AEVR;;;MAQa,+CAA+C;IAU1D,YAAoB,cAAiC;QAAjC,mBAAc,GAAd,cAAc,CAAmB;KAAI;IAPzD,IACW,UAAU,CAAC,KAAoC;QACxD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACpB;;;;;IAUM,MAAM,CAAC,MAAqC;QACjD,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC;QACjC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;IAEM,SAAS,CAAC,KAAU;QACzB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;KAClC;IAEM,OAAO,CAAC,MAAqC;QAClD,OAAO,KAAK,CAAC;KACd;;6IA3BU,+CAA+C;iIAA/C,+CAA+C,0HCnB5D,8WAOA;4FDYa,+CAA+C;kBAL3D,SAAS;mBAAC;oBACT,QAAQ,EAAE,8CAA8C;oBACxD,WAAW,EAAE,iDAAiD;oBAC9D,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;wGAKY,UAAU;sBADpB,KAAK;;;MEJK,oCAAoC;IAO/C,YAAoB,cAAiC;QAAjC,mBAAc,GAAd,cAAc,CAAmB;QAJ9C,UAAK,GAAW,EAAE,CAAC;QACnB,iBAAY,GAAG,CAAC,CAAC;KAGiC;IAElD,MAAM,CAAC,MAAmC;;QAC/C,IAAI,CAAC,gBAAgB,GAAG,gCAAgC,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,YAAY,GAAG,CAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,KAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;IAEM,OAAO,CAAC,MAAmC;QAChD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;KACb;;kIAnBU,oCAAoC;sHAApC,oCAAoC,gEClBjD,wMAIA;4FDca,oCAAoC;kBANhD,SAAS;mBAAC;oBACT,QAAQ,EAAE,0BAA0B;oBACpC,WAAW,EAAE,uCAAuC;oBACpD,SAAS,EAAE,CAAC,uCAAuC,CAAC;oBACpD,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;;;MEPY,iCAAiC;;+HAAjC,iCAAiC;gIAAjC,iCAAiC,iBAJ7B,oCAAoC,aAEzC,YAAY,EAAE,qBAAqB,aADnC,oCAAoC;gIAGnC,iCAAiC,YAFnC,CAAC,YAAY,EAAE,qBAAqB,CAAC;4FAEnC,iCAAiC;kBAL7C,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,oCAAoC,CAAC;oBACpD,OAAO,EAAE,CAAC,oCAAoC,CAAC;oBAC/C,OAAO,EAAE,CAAC,YAAY,EAAE,qBAAqB,CAAC;iBAC/C;;;ACMD;;;MAUa,yCAAyC;IAUpD,YAAoB,eAAkC;QAAlC,oBAAe,GAAf,eAAe,CAAmB;KAAI;;;;;IAMnD,MAAM,CAAC,MAA2B;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAChE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACxC;aAAM;YACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;SAC1C;QAED,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAC3B,OAAO,CAAC,kBAAkB,EAC1B,CAAC,KAAuB;YACtB,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;SACjC,CACF,CAAC;KACH;;;;;;IAOM,OAAO;QACZ,OAAO,KAAK,CAAC;KACd;IAEM,SAAS;QACd,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEvC,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;SAClD;KACF;IAEO,mBAAmB,CAAC,KAAuB;QACjD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAEvC,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;SAClD;QAED,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KACrC;;uIA9DU,yCAAyC;2HAAzC,yCAAyC,8ECzBtD,uUAWA;4FDca,yCAAyC;kBAPrD,SAAS;mBAAC;oBACT,QAAQ,EAAE,wCAAwC;oBAClD,WAAW,EAAE,6CAA6C;oBAC1D,SAAS,EAAE,CAAC,6CAA6C,CAAC;oBAC1D,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;iBACtC;;;METY,sCAAsC;;oIAAtC,sCAAsC;qIAAtC,sCAAsC,iBAHlC,yCAAyC,aAD9C,qBAAqB,EAAE,iBAAiB,EAAE,WAAW,aAErD,yCAAyC;qIAExC,sCAAsC,YAJxC,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,WAAW,CAAC;4FAIrD,sCAAsC;kBALlD,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,WAAW,CAAC;oBAChE,YAAY,EAAE,CAAC,yCAAyC,CAAC;oBACzD,OAAO,EAAE,CAAC,yCAAyC,CAAC;iBACrD;;;ACoBD;;;MAMa,oCAAoC;IAmB/C,YACU,cAAiC,EACjC,cAAqC;QADrC,mBAAc,GAAd,cAAc,CAAmB;QACjC,mBAAc,GAAd,cAAc,CAAuB;QAJvC,kBAAa,GAAG,IAAI,OAAO,EAAE,CAAC;KAKlC;IAEG,kBAAkB;QACvB,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,IAAI,CAAC,UAAU,CAAC,OAAO;aACpB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAE1C,IAAI,CAAC,oBAAoB,CAAC,OAAO;aAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;KACrD;IAEM,WAAW;QAChB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;KAC/B;IAEO,cAAc;QACpB,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;;QAG3C,IAAI,WAAW,KAAK,CAAC,EAAE;YACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,EAAE;YACvD,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;QAED,IAAI,WAAW,GAAG,CAAC,EAAE;YACnB,OAAO,CAAC,IAAI,CACV,2EAA2E,CAC5E,CAAC;SACH;KACF;IAEO,wBAAwB;QAC9B,MAAM,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;;QAG/D,IAAI,qBAAqB,KAAK,CAAC,EAAE;YAC/B,IAAI,CAAC,0BAA0B,EAAE,CAAC;SACnC;aAAM,IACL,IAAI,CAAC,oBAAoB,CAAC,KAAK,KAAK,IAAI,CAAC,uBAAuB,EAChE;YACA,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC;QAED,IAAI,qBAAqB,GAAG,CAAC,EAAE;YAC7B,OAAO,CAAC,IAAI,CACV,2EAA2E,CAC5E,CAAC;SACH;KACF;IAEO,gBAAgB;QACtB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;;QAG/B,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACjC;KACF;IAEO,0BAA0B;QAChC,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;KAC1C;IAEO,wBAAwB;QAC9B,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAElC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;QAE/D,UAAU,CAAC;YACT,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBAChC,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,GAAG,EAAE,CAAC;aACrD;SACF,CAAC,CAAC;KACJ;IAEO,cAAc;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAErC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAE5B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7D,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE3D,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEtD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc;iBACpC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;iBACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACnC,SAAS,CAAC,CAAC,SAA8B;gBACxC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;gBAClC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;aAChC,CAAC,CAAC;YAEL,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;SAC/B,CAAC,CAAC;QAEH,MAAM,CAAC,WAAW;aACf,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC7B,MAAM,CACJ,CAAC,KAAuB,KACtB,CAAC;YACC,kBAAkB;YAClB,iBAAiB;YACjB,iBAAiB;YACjB,KAAK;SACN,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAC3B,CACF;aACA,SAAS,CAAC,CAAC,KAAuB;YACjC,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;SACvD,CAAC,CAAC;QACL,IAAI,cAAwB,CAAC;QAC7B,MAAM,CAAC,WAAW;aACf,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,KAAuB;YACjC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;SACvD,CAAC,CAAC;QACL,MAAM,CAAC,WAAW;aACf,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,KAAuB;YACjC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACxD,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,CACzC,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,CACtC,CAAC;YACF,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE;gBACnB,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;aACvD;SACF,CAAC,CAAC;QAEL,MAAM,CAAC,WAAW;aACf,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,KAAuB;YACjC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;YACvB,IAAI,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,IAAI,EAAE,CAAC;YAC1D,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAElD,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;gBACvC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC/B;iBAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;gBAC/C,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;aACjC;YAED,IAAI,CAAC,gBAAgB,CAAC,WAAW,GAAG,WAAW,CAAC;YAChD,IAAI,CAAC,cAAc,CAAC,eAAe,CACjC,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,UAAU,CAAC,EAAE,CACnB,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;SACpC,CAAC,CAAC;QAEL,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/D,MAAM,gBAAgB,GAAkB,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;YAC1E,IAAI,UAAoC,CAAC;;YAGzC,IAAI,gBAAgB,CAAC,MAAM,EAAE;gBAC3B,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,IAAI,CACjD,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,SAAS,KAAK,CAAC,CACvD,CAAC;gBAEF,MAAM,iBAAiB,GACrB,IAAI,CAAC,cAAc,CAAC,2BAA2B,EAAE,CAAC;;gBAGpD,IAAI,iBAAiB,CAAC,WAAW,IAAI,qBAAqB,EAAE;oBAC1D,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAC7C,CAAC,MAAgC;wBAC/B,QACE,MAAM,CAAC,YAAY,KAAK,qBAAqB,CAAC,KAAK;4BACnD,MAAM,CAAC,UAAU,MAAM,qBAAqB,CAAC,IAAI,KAAK,MAAM,CAAC,EAC7D;qBACH,CACF,CAAC;iBACH;qBAAM;oBACL,UAAU,GAAG,SAAS,CAAC;iBACxB;aACF;YACD,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,GAAG,UAAU,CAAC;YACpD,IAAI,CAAC,cAAc,CAAC,eAAe,CACjC,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,UAAU,CAAC,EAAE,CACnB,CAAC;SACH,CAAC,CAAC;KACJ;IAEO,+BAA+B,CAAC,SAAoB;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAEnD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CACtD,IAAI,CAAC,UAAU,CAAC,EAAE,CACnB,CAAC;QACF,SAAS,CAAC,kBAAkB,GAAG,WAAW,CAAC;QAE3C,IAAI,CAAC,cAAc,CAAC,eAAe,CACjC,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,CAAC,EACpE,IAAI,CAAC,UAAU,CAAC,EAAE,CACnB,CAAC;KACH;IAEO,cAAc,CAAC,SAAoB;QACzC,OAAO,SAAS;aACb,6BAA6B,EAAE;aAC/B,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC;KACxC;IAEO,cAAc,CAAC,SAA8B;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;QAClC,MAAM,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACjE,IAAI,kBAAkB,GAAa,EAAE,CAAC;;QAEtC,IAAI,SAAS,CAAC,kBAAkB,EAAE;YAChC,kBAAkB,GAAG,SAAS,CAAC,kBAAkB,CAAC;SACnD;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QAEjD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAEnD,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SAC9C;KACF;IAEO,SAAS;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;KACxB;IAEO,QAAQ;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KAC1B;;kIA3QU,oCAAoC;sHAApC,oCAAoC,8HAM9B,aAAa,0EAGb,yBAAyB;4FAT/B,oCAAoC;kBAHhD,SAAS;mBAAC;oBACT,QAAQ,EAAE,+BAA+B;iBAC1C;8IAKQ,MAAM;sBADZ,KAAK;gBAIC,UAAU;sBADhB,eAAe;uBAAC,aAAa,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAI9C,oBAAoB;sBAD1B,eAAe;uBAAC,yBAAyB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;;MCtCtD,4BAA4B;;0HAA5B,4BAA4B;2HAA5B,4BAA4B,iBAJxB,sCAAsC,aAE3C,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,aADxD,sCAAsC;2HAGrC,4BAA4B,YAF9B,CAAC,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,CAAC;4FAExD,4BAA4B;kBALxC,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,sCAAsC,CAAC;oBACtD,OAAO,EAAE,CAAC,sCAAsC,CAAC;oBACjD,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,CAAC;iBACpE;;;MCsBY,mCAAmC;;iIAAnC,mCAAmC;kIAAnC,mCAAmC,iBAR5C,sCAAsC;QACtC,+CAA+C,aAR/C,YAAY;QACZ,qBAAqB;QACrB,4BAA4B;QAC5B,WAAW;QACX,gBAAgB,aAOhB,sCAAsC;QACtC,+CAA+C;kIAGtC,mCAAmC,YAhBrC;YACP,YAAY;YACZ,qBAAqB;YACrB,4BAA4B;YAC5B,WAAW;YACX,gBAAgB;SACjB;4FAUU,mCAAmC;kBAjB/C,QAAQ;mBAAC;oBACR,OAAO,EAAE;wBACP,YAAY;wBACZ,qBAAqB;wBACrB,4BAA4B;wBAC5B,WAAW;wBACX,gBAAgB;qBACjB;oBACD,YAAY,EAAE;wBACZ,sCAAsC;wBACtC,+CAA+C;qBAChD;oBACD,OAAO,EAAE;wBACP,sCAAsC;wBACtC,+CAA+C;qBAChD;iBACF;;;ACtBD;;;;MAiCa,2BAA2B;;yHAA3B,2BAA2B;6GAA3B,2BAA2B,mKAGQ,WAAW,sHA/B/C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BT;4FAEU,2BAA2B;kBA7BvC,SAAS;mBAAC;oBACT,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BT;iBACF;8BAGQ,gBAAgB;sBADtB,YAAY;uBAAC,iBAAiB;gBAGxB,uBAAuB;sBAD7B,SAAS;uBAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;;;ACN7D;;;MAMa,2BAA2B;IA8HtC,YACU,YAA6B,EAC7B,cAAiC,EACjC,UAAsB,EACtB,QAAkC,EAClC,cAAiC,EACjC,gBAAkC;QALlC,iBAAY,GAAZ,YAAY,CAAiB;QAC7B,mBAAc,GAAd,cAAc,CAAmB;QACjC,eAAU,GAAV,UAAU,CAAY;QACtB,aAAQ,GAAR,QAAQ,CAA0B;QAClC,mBAAc,GAAd,cAAc,CAAmB;QACjC,qBAAgB,GAAhB,gBAAgB,CAAkB;;;;QApCrC,oBAAe,GAAG,IAAI,YAAY,EAAgC,CAAC;;;;QAMnE,qBAAgB,GAAG,IAAI,YAAY,EAAiC,CAAC;;;;QAMrE,uBAAkB,GAAG,IAAI,YAAY,EAAY,CAAC;QAElD,qBAAgB,GAA+B,EAAE,CAAC;QAUjD,kBAAa,GAAG,IAAI,OAAO,EAAE,CAAC;QAE9B,sBAAiB,GAAiD,EAAE,CAAC;KAWzE;;;;IA/HJ,IACI,YAAY,CAAC,KAAe;QAC9B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAE3B,IAAI,CAAC,KAAK,EAAE;YACV,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACxC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aAClC;YAED,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;YAEnC,OAAO;SACR;QAED,KAAK,IAAI,EAAE,IAAI,KAAK,EAAE;YACpB,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAC/C,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,EAAE,CAC7B,CAAC;YACF,IAAI,cAAc,EAAE;gBAClB,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;aAChC;iBAAM;gBACL,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;oBACzB,EAAE,EAAE,EAAE;oBACN,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;gBAEH,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;oBACvC,YAAY,EAAE,IAAI;oBAClB,YAAY,EAAE,KAAK;oBACnB,iBAAiB,EAAE,IAAI;oBACvB,WAAW,EAAE,KAAK;oBAClB,mBAAmB,EAAE,IAAI;iBAC1B,CAAC,CAAC;gBAEH,OAAO,CAAC,cAAc,CACpB,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,EAC/C;oBACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;oBACzC,UAAU,EAAE;wBACV,OAAO,IAAI,CAAC,UAAU,CAAC;qBACxB;oBACD,gBAAgB,EAAE,CAAC,GAAY,KAAK,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;oBAC9D,eAAe,EAAE,CAAC,GAAY,KAAK,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;oBAC5D,gBAAgB,EAAE,CAAC,GAAY,KAAK,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;iBAC/D,CACF,CAAC;;;;;;;gBAQF,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;gBAE7C,UAAU,CAAC;oBACT,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB;yBAC7D,OAAO,EAAE;yBACT,IAAI,CAAC,CAAC,KAAK;wBACV,OAAO,KAAK,CAAC,aAAa,CAAC,EAAE,KAAK,iBAAiB,GAAG,EAAE,CAAC;qBAC1D,CAAC,CAAC;oBACL,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;oBAE/D,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBAE7B,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,GAAG;wBAC3B,OAAO,EAAE,OAAO;wBAChB,OAAO,EAAE,OAAO;qBACjB,CAAC;iBACH,CAAC,CAAC;aACJ;SACF;QAED,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACxC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;gBAChC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aAClC;SACF;QAED,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IAsBD,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;aACrE,WAAW,CAAC;KAChB;IAoBM,kBAAkB;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CACnD,2BAA2B,CAC5B,CAAC;QACF,IAAI,CAAC,kBAAkB;YACrB,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,cAAc;aACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC;YACT,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B,CAAC,CAAC;QAEL,IAAI,CAAC,MAAM,CAAC,cAAc;aACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC;YACT,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B,CAAC,CAAC;QAEL,IAAI,CAAC,MAAM,CAAC,WAAW;aACpB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC;YACT,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B,CAAC,CAAC;QAEL,IAAI,CAAC,MAAM,CAAC,aAAa;aACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC;YACT,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B,CAAC,CAAC;QAEL,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,IAAS;YACnC,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;SAC3B,CAAC;KACH;IAEM,WAAW;QAChB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QAE9B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;YAC7C,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;SAC3B,CAAC,CAAC;KACJ;IAEM,eAAe,CAAC,GAAY;QACjC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAClD,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CACjC,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAE1C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KAC/B;IAEM,gBAAgB,CAAC,GAAY;QAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;QAC5E,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;KAC5C;IAEM,gBAAgB,CAAC,GAAY;QAClC,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;KAC3E;IAEO,UAAU,CAAC,OAAmB,EAAE,EAAU;QAChD,IAAI,UAAU,GAAgB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC;iBAC7D,EAAE;gCACa,EAAE;KAC7B,CAAC,CAAC;;;;QAKH,IAAI,CAAC,UAAU,EAAE;YACf,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAC5D,WAAW,GAAG,EAAE,GAAG,UAAU,CAC9B,CAAC;YAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE;oBACnD,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACxB,MAAM;iBACP;aACF;SACF;QAED,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE;YAC1B,cAAc,EAAE,sBAAsB,CAAC,QAAQ;YAC/C,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,OAAO;YAClB,iBAAiB,EAAE,KAAK;YACxB,mBAAmB,EAAE,MAAM;YAC3B,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;KACJ;IAEO,gBAAgB,CAAC,EAAU;;QACjC,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;;;QAIrD,IAAI,iBAAiB,EAAE;YACrB,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAClD,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,EAAE,CAC7B,CAAC;YACF,IAAI,CAAC,aAAa,GAAG,MAAA,IAAI,CAAC,YAAY,0CAAE,MAAM,CAC5C,CAAC,OAAO,KAAK,OAAO,KAAK,EAAE,CAC5B,CAAC;YACF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAClD;KACF;IAEO,qBAAqB;QAC3B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAgC;YAC7D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;gBAC1C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aAClC;iBAAM;;;gBAGL,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;aACvE;SACF,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;;yHAnQU,2BAA2B;6GAA3B,2BAA2B,2QAqHxB,aAAa;4FArHhB,2BAA2B;kBAHvC,SAAS;mBAAC;oBACT,QAAQ,EAAE,sBAAsB;iBACjC;qQAQK,YAAY;sBADf,KAAK;gBA0FC,eAAe;sBADrB,MAAM;gBAOA,gBAAgB;sBADtB,MAAM;gBAOA,kBAAkB;sBADxB,MAAM;gBAWA,MAAM;sBADZ,YAAY;uBAAC,aAAa;;;ACrJ7B;;;MASa,oCAAoC;IANjD;QAUS,2BAAsB,GAA0B,EAAE,CAAC;KA0C3D;;;;;IA3BQ,MAAM,CAAC,MAAmC;QAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACvD,IAAI,CAAC,uBAAuB;YAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,IAAI;YAClE,aAAa,EAAE,CAAC;YAChB,cAAc,EAAE,GAAG;SACpB,CAAC;KACH;;;;IAKM,gBAAgB;QACrB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAClC;;;;IAKM,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;;kIA7CU,oCAAoC;sHAApC,oCAAoC,mKAYH,UAAU,6BClCxD,wVAYA;4FDUa,oCAAoC;kBANhD,SAAS;mBAAC;oBACT,QAAQ,EAAE,kCAAkC;oBAC5C,WAAW,EAAE,uCAAuC;oBACpD,SAAS,EAAE,CAAC,uCAAuC,CAAC;oBACpD,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;8BAcS,KAAK;sBADZ,SAAS;uBAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;;MEpB7C,iCAAiC;;+HAAjC,iCAAiC;gIAAjC,iCAAiC,iBAH7B,oCAAoC,aADzC,qBAAqB,EAAE,WAAW,EAAE,oBAAoB,aAExD,oCAAoC;gIAEnC,iCAAiC,YAJnC,CAAC,qBAAqB,EAAE,WAAW,EAAE,oBAAoB,CAAC;4FAIxD,iCAAiC;kBAL7C,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,oBAAoB,CAAC;oBACnE,YAAY,EAAE,CAAC,oCAAoC,CAAC;oBACpD,OAAO,EAAE,CAAC,oCAAoC,CAAC;iBAChD;;;ACHD;;;MAQa,8CAA8C;IAWzD,YAAoB,cAAiC;QAAjC,mBAAc,GAAd,cAAc,CAAmB;KAAI;IARzD,IACW,MAAM,CAAC,KAAqC;QACrD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACpB;IAOM,MAAM,CAAC,MAAsC;;QAClD,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC;QACjC,IAAI,QAAO,MAAA,MAAM,CAAC,MAAM,0CAAE,cAAc,CAAA,KAAK,UAAU,EAAE;YACvD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAA8B,CAAC,CAAC;SAC3E;aAAM;YACL,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;SAC3B;QACD,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;IAEM,OAAO,CAAC,MAAW;QACxB,OAAO,KAAK,CAAC;KACd;;4IAzBU,8CAA8C;gIAA9C,8CAA8C,iHClB3D,8HAGA;4FDea,8CAA8C;kBAL1D,SAAS;mBAAC;oBACT,QAAQ,EAAE,6CAA6C;oBACvD,WAAW,EAAE,gDAAgD;oBAC7D,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;wGAKY,MAAM;sBADhB,KAAK;;;MEZK,2CAA2C;;yIAA3C,2CAA2C;0IAA3C,2CAA2C,iBAJvC,8CAA8C,aAEnD,4BAA4B,aAD5B,8CAA8C;0IAG7C,2CAA2C,YAF7C,CAAC,4BAA4B,CAAC;4FAE5B,2CAA2C;kBALvD,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,8CAA8C,CAAC;oBAC9D,OAAO,EAAE,CAAC,8CAA8C,CAAC;oBACzD,OAAO,EAAE,CAAC,4BAA4B,CAAC;iBACxC;;;MCgGY,eAAe;;6GAAf,eAAe;8GAAf,eAAe,iBA1CxB,oCAAoC;QACpC,2BAA2B;QAC3B,2BAA2B;QAC3B,yBAAyB,aAGzB,YAAY;QACZ,YAAY;QACZ,qCAAqC;QACrC,mCAAmC;QACnC,+BAA+B;QAC/B,+BAA+B;QAC/B,iCAAiC;QACjC,mCAAmC;QACnC,iCAAiC;QACjC,sCAAsC;QACtC,2CAA2C;QAC3C,4BAA4B;QAC5B,6BAA6B;QAC7B,oBAAoB;QACpB,qBAAqB;QACrB,mBAAmB,aAGnB,oCAAoC;QACpC,2BAA2B;QAC3B,2BAA2B;QAC3B,yBAAyB;8GAehB,eAAe,YArCjB;YACP,YAAY;YACZ,YAAY;YACZ,qCAAqC;YACrC,mCAAmC;YACnC,+BAA+B;YAC/B,+BAA+B;YAC/B,iCAAiC;YACjC,mCAAmC;YACnC,iCAAiC;YACjC,sCAAsC;YACtC,2CAA2C;YAC3C,4BAA4B;YAC5B,6BAA6B;YAC7B,oBAAoB;YACpB,qBAAqB;YACrB,mBAAmB;SACpB;4FAoBU,eAAe;kBA5C3B,QAAQ;mBAAC;oBACR,YAAY,EAAE;wBACZ,oCAAoC;wBACpC,2BAA2B;wBAC3B,2BAA2B;wBAC3B,yBAAyB;qBAC1B;oBACD,OAAO,EAAE;wBACP,YAAY;wBACZ,YAAY;wBACZ,qCAAqC;wBACrC,mCAAmC;wBACnC,+BAA+B;wBAC/B,+BAA+B;wBAC/B,iCAAiC;wBACjC,mCAAmC;wBACnC,iCAAiC;wBACjC,sCAAsC;wBACtC,2CAA2C;wBAC3C,4BAA4B;wBAC5B,6BAA6B;wBAC7B,oBAAoB;wBACpB,qBAAqB;wBACrB,mBAAmB;qBACpB;oBACD,OAAO,EAAE;wBACP,oCAAoC;wBACpC,2BAA2B;wBAC3B,2BAA2B;wBAC3B,yBAAyB;qBAC1B;oBACD,eAAe,EAAE;wBACf,wCAAwC;wBACxC,sCAAsC;wBACtC,kCAAkC;wBAClC,oCAAoC;wBACpC,sCAAsC;wBACtC,+CAA+C;wBAC/C,yCAAyC;wBACzC,8CAA8C;wBAC9C,gCAAgC;wBAChC,2BAA2B;qBAC5B;iBACF;;;ACvGD;;;IAGY;AAAZ,WAAY,YAAY;IACtB,8DAA8C,CAAA;IAC9C,sDAAsC,CAAA;IACtC,8CAA8B,CAAA;IAC9B,sDAAsC,CAAA;IACtC,oDAAoC,CAAA;IACpC,kDAAkC,CAAA;IAClC,kDAAkC,CAAA;IAClC,6DAA6C,CAAA;IAC7C,8CAA8B,CAAA;IAC9B,0DAA0C,CAAA;AAC5C,CAAC,EAXW,YAAY,KAAZ,YAAY;;ACHxB;;;;;IAKY;AAAZ,WAAY,WAAW;;;;;;;;;;IAUrB,mDAAoC,CAAA;;;;;;;;;;IAUpC,2CAA4B,CAAA;;;;;;IAM5B,6DAA8C,CAAA;;;;;;;;;;IAU9C,mCAAoB,CAAA;IACpB,uCAAwB,CAAA;;;;;;;;;;IAUxB,uCAAwB,CAAA;;;;;;IAMxB,yDAA0C,CAAA;;;;;;IAM1C,iDAAkC,CAAA;;;;;;;;;;IAUlC,mCAAoB,CAAA;;;;;;IAMpB,6CAA8B,CAAA;AAChC,CAAC,EA5EW,WAAW,KAAX,WAAW;;ACLvB;;;IAGY;AAAZ,WAAY,cAAc;IACxB,mEAAiD,CAAA;AACnD,CAAC,EAFW,cAAc,KAAd,cAAc;;ACmD1B,SAAS,sBAAsB,CAC7B,MAAwB,EACxB,MAAwB;IAExB,IAAI,MAAM,IAAI,MAAM,EAAE;QACpB,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE;YAC7B,OAAO,CAAC,CAAC;SACV;QAED,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE;YAC7B,OAAO,CAAC,CAAC,CAAC;SACX;QAED,OAAO,CAAC,CAAC;KACV;IAED,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAA4B;IAE5B,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAC3C,CAAC;AAED,SAAS,cAAc,CAAC,KAAU,EAAE,KAAU;IAC5C,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAClC,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;IAED,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAClC,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;IAED,IAAI,UAAU,IAAI,UAAU,EAAE;QAC5B,IAAI,UAAU,GAAG,UAAU,EAAE;YAC3B,OAAO,CAAC,CAAC;SACV;QAED,IAAI,UAAU,GAAG,UAAU,EAAE;YAC3B,OAAO,CAAC,CAAC,CAAC;SACX;QAED,OAAO,CAAC,CAAC;KACV;IAED,OAAO,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,gCAAgC,CAAC,SAAiB,EAAE,QAAc;IACzE,OAAO,CAAC,MAA2B;;QACjC,IACE,MAAM,CAAC,MAAM;YACb,QAAO,MAAA,MAAA,MAAM,CAAC,MAAM,CAAC,kBAAkB,0CAAE,sBAAsB,0CAC3D,SAAS,CAAA,KAAK,UAAU,EAC5B;YACA,IACE,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,SAAS,CAChE,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,QAAQ,CAChB,EACD;gBACA,OAAO;oBACL,SAAS;oBACT,MAAM,oBACD,MAAM,CAAC,MAAM,CAAC,kBAAkB,CACpC;iBACF,CAAC;aACH;SACF;QACD,OAAO,QAAQ,CAAC;KACjB,CAAC;AACJ,CAAC;AAED,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;AAEnB;;;MAMa,gBAAgB;IAO3B,YACU,oBAA6C,EACjC,QAA0B,EAC1B,SAAkC;QAF9C,yBAAoB,GAApB,oBAAoB,CAAyB;QACjC,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,cAAS,GAAT,SAAS,CAAyB;QALhD,kBAAa,GAAG,IAAI,OAAO,EAAE,CAAC;;QAQpC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,cAAc;iBACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACnC,SAAS,CACR,CAAC,cAAc,MACZ,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,eAAe,CAAC,CACvD,CAAC;SACL;KACF;IAEM,WAAW;QAChB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;KAC/B;;;;;;IAOM,cAAc,CAAC,IAA2B;QAC/C,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAC7C,kBAAkB,EAClB,IAAI,CAAC,WAAW,CACjB,CAAC;QAEF,OAAO,iBAAiB,CAAC;KAC1B;;;;;;IAOM,sBAAsB,CAAC,IAA2B;QACvD,MAAM,kBAAkB,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAC7C,kBAAkB,EAClB,IAAI,CAAC,WAAW,CACjB,CAAC;QAEF,OAAO,iBAAiB,CAAC;KAC1B;IAEO,gBAAgB,CACtB,kBAA+B,EAC/B,mBAAgC;QAEhC,IAAI,iBAAiB,iDAChB,kBAAkB,GAClB,mBAAmB,KACtB,WAAW,kCACN,mBAAmB,CAAC,WAAW,GAE/B,kBAAkB,CAAC,WAAW,GAEnC,aAAa,gDACR,kBAAkB,CAAC,aAAa,GAChC,mBAAmB,CAAC,aAAa;;gBAEpC,cAAc,EAAE,kBAAkB,CAAC,aAAa,CAAC,cAAc,KAEjE,KAAK,kCACA,kBAAkB,CAAC,KAAK,GACxB,mBAAmB,CAAC,KAAK,IAE/B,CAAC;QAEF,OAAO,iBAAiB,CAAC;KAC1B;IAEO,qBAAqB,CAAC,IAA2B;;;QAEvD,MAAM,2BAA2B,GAAG,MAAM,CAAC;QAE3C,SAAS,aAAa,CACpB,YAAsB;YAEtB,OAAO,UAAU,MAAuB;gBACtC,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAExC,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;oBACpC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC/D,UAAU,GAAG,UAAU,CAAC,gCACnB,MAAM,KACT,MAAM,GACmB,CAAC,CAAC;iBAC9B;gBAED,OAAO,YAAY,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;aAChD,CAAC;SACH;QAED,MAAM,sBAAsB,GAAG;YAC7B,CAAC,YAAY,CAAC,QAAQ,GAAG,aAAa,EAAE;YACxC,CAAC,YAAY,CAAC,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC;SAC/C,CAAC;QAEF,SAAS,cAAc;YACrB,OAAO,UAAU,KAAsB;;gBACrC,IACE,KAAK,CAAC,MAAM;oBACZ,QAAO,MAAA,MAAA,KAAK,CAAC,MAAM,CAAC,kBAAkB,0CAAE,sBAAsB,0CAC1D,SAAS,CAAA,KAAK,UAAU,EAC5B;oBACA,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,SAAS,CACtE,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,QAAQ,CACf,CAAC;iBACH;gBACD,OAAO,KAAK,CAAC;aACd,CAAC;SACH;QAED,MAAM,uBAAuB,GAAG;YAC9B,CAAC,YAAY,CAAC,OAAO,GAAG,cAAc,EAAE;SACzC,CAAC;QAEF,MAAM,qBAAqB,GAAgB;YACzC,WAAW,EAAE;gBACX,CAAC,WAAW,CAAC,YAAY,GAAG;oBAC1B,cAAc,kBACZ,CAAC,YAAY,CAAC,YAAY,GAAG,2BAA2B,IACrD,sBAAsB,CAC1B;oBACD,mBAAmB,EAAE,wCAAwC;oBAC7D,cAAc,EAAE,qBAAqB;oBACrC,UAAU,EAAE,sBAAsB;oBAClC,QAAQ,EAAE,GAAG;iBACd;gBACD,CAAC,WAAW,CAAC,QAAQ,GAAG;oBACtB,cAAc,gCACZ,CAAC,YAAY,CAAC,QAAQ,GAAG,2BAA2B,IACjD,uBAAuB,GACvB,sBAAsB,CAC1B;oBACD,oBAAoB,EAAE,gCAAgC,CACpD,8CAA8C,EAC9C,EAAE,SAAS,EAAE,oCAAoC,EAAE,CACpD;oBACD,mBAAmB,EAAE,oCAAoC;oBACzD,WAAW,EAAE,cAAc,CAAC,YAAY;oBACxC,QAAQ,EAAE,GAAG;iBACd;gBACD,CAAC,WAAW,CAAC,IAAI,GAAG;oBAClB,cAAc,kBACZ,CAAC,YAAY,CAAC,IAAI,GAAG,2BAA2B,IAC7C,sBAAsB,CAC1B;oBACD,mBAAmB,EAAE,sCAAsC;oBAC3D,UAAU,EAAE,cAAc;oBAC1B,QAAQ,EAAE,CAAA,MAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,KAAK,0CAAE,IAAI,MAAK,QAAQ,GAAG,GAAG,GAAG,GAAG;oBACjE,cAAc,EAAE,CAAC,MAA4B,KAC3C,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;iBAC1C;gBACD,CAAC,WAAW,CAAC,MAAM,GAAG;oBACpB,cAAc,kBACZ,CAAC,YAAY,CAAC,MAAM,GAAG,2BAA2B,IAC/C,sBAAsB,CAC1B;oBACD,mBAAmB,EAAE,kCAAkC;oBACvD,qBAAqB,EAAE,oCAAoC;oBAC3D,cAAc,EAAE,CAAC,MAAM;wBACrB,MAAM,gBAAgB,GAAG,gCAAgC,CAAC,MAAM,CAAC,CAAC;wBAClE,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;6BACvB,GAAG,CAAC,CAAC,KAAK;4BACT,OAAO,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;yBACnD,CAAC;6BACD,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,SAAS,CAAC;6BACtD,IAAI,CAAC,IAAI,CAAC,CAAC;qBACf;oBACD,QAAQ,EAAE,GAAG;iBACd;gBACD,CAAC,WAAW,CAAC,MAAM,GAAG;oBACpB,cAAc,kBACZ,CAAC,YAAY,CAAC,MAAM,GAAG,2BAA2B,IAC/C,sBAAsB,CAC1B;oBACD,mBAAmB,EAAE,kCAAkC;oBACvD,WAAW,EAAE,cAAc,CAAC,YAAY;iBACzC;gBACD,CAAC,WAAW,CAAC,WAAW,GAAG;oBACzB,cAAc,EAAE;wBACd,CAAC,YAAY,CAAC,WAAW,GAAG,2BAA2B;wBACvD,CAAC,YAAY,CAAC,UAAU,GAAG,2BAA2B;qBACvD;oBACD,qBAAqB,EAAE,yCAAyC;oBAChE,UAAU,EAAE,EAAE;oBACd,QAAQ,EAAE,EAAE;oBACZ,QAAQ,EAAE,EAAE;oBACZ,QAAQ,EAAE,KAAK;oBACf,KAAK,EAAE,EAAE;iBACV;gBACD,CAAC,WAAW,CAAC,IAAI,GAAG;oBAClB,cAAc,kBACZ,CAAC,YAAY,CAAC,IAAI,GAAG,2BAA2B,IAC7C,sBAAsB,CAC1B;oBACD,mBAAmB,EAAE,gCAAgC;iBACtD;gBACD,CAAC,WAAW,CAAC,SAAS,GAAG;oBACvB,cAAc,kCACT,uBAAuB,GACvB,sBAAsB,CAC1B;oBACD,oBAAoB,EAAE,gCAAgC,CACpD,6CAA6C,CAC9C;iBACF;aACF;YACD,aAAa,EAAE;gBACb,cAAc,EAAE,sBAAsB;gBACtC,QAAQ,EAAE,GAAG;gBACb,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,IAAI;gBACd,qBAAqB,EAAE,CAAC,QAAqC,KAC3D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;aAC7B;YACD,SAAS,EAAE,YAAY;YACvB,uBAAuB,EAAE,IAAI;YAC7B,mBAAmB,EAAE;gBACnB,oCAAoC,EAClC,sCAAsC;gBACxC,8CAA8C,EAC5C,+CAA+C;gBACjD,6CAA6C,EAC3C,8CAA8C;aACjD;YACD,YAAY,CAAC,IAAS;gBACpB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE;oBACzC,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;iBACrB;gBACD,OAAO,GAAG,SAAS,EAAE,EAAE,CAAC;aACzB;YACD,WAAW,EAAE,CAAC,MAAsB;gBAClC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE;oBAClB,OAAO,mBAAmB,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;iBAC5C;qBAAM;oBACL,OAAO,SAAS,CAAC;iBAClB;aACF;YACD,YAAY,EAAE,CAAA,MAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,KAAK,0CAAE,IAAI,MAAK,QAAQ,GAAG,EAAE,GAAG,EAAE;YACnE,KAAK,EAAE;gBACL,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;gBAClD,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;gBAC/C,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;gBAC9C,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;gBAC9C,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;gBAC9C,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;gBAC/C,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;aAC9C;YACD,aAAa,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE;YACzC,SAAS,EAAE,CAAA,MAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,KAAK,0CAAE,IAAI,MAAK,QAAQ,GAAG,EAAE,GAAG,EAAE;YAChE,uBAAuB,EAAE,IAAI;YAC7B,YAAY,EAAE,UAAU;YACxB,eAAe,EAAE,IAAI;;YAErB,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;YACnC,6BAA6B,EAAE,KAAK;YACpC,yBAAyB,EAAE,IAAI;YAC/B,6BAA6B,EAAE,IAAI;SACpC,CAAC;QAEF,qBAAqB,CAAC,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,mCAC3D,qBAAqB,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,KAC1D,kBAAkB,EAAE;gBAClB,sBAAsB,EAAE;oBACtB,SAAS,EAAE,CAAC,KAAU,EAAE,IAAS,EAAE,QAAgB;wBACjD,OAAO,CAAC,CAAC,GAAG,KAAK,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;qBACnE;oBACD,gBAAgB,EAAE,+BAA+B;iBAClD;aACF,GACF,CAAC;;QAEF,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS;iBACX,SAAS,CAAC,sDAAsD,CAAC;iBACjE,SAAS,CAAC,CAAC,KAAK;gBACf,qBAAqB,CAAC,WAAW,CAC/B,WAAW,CAAC,iBAAiB,CAC9B,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,gBAAgB,GAAG,KAAK,CAAC;aACtE,CAAC,CAAC;SACN;QAED,qBAAqB,CAAC,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC,iDACzD,qBAAqB,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,GACxD,qBAAqB,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,KACxD,cAAc,kCACT,qBAAqB,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC;iBACxD,cAAc,GACd,qBAAqB,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,cAAc,GAEzE,kBAAkB,EAAE;gBAClB,sBAAsB,EAAE;oBACtB,SAAS,EAAE,CAAC,KAAU,EAAE,IAAS,EAAE,QAAgB;wBACjD,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;qBAC7C;oBACD,gBAAgB,EAAE,6BAA6B;iBAChD;aACF,GACF,CAAC;;QAEF,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS;iBACX,SAAS,CAAC,oDAAoD,CAAC;iBAC/D,SAAS,CAAC,CAAC,KAAK;gBACf,qBAAqB,CAAC,WAAW,CAC/B,WAAW,CAAC,eAAe,CAC5B,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,gBAAgB,GAAG,KAAK,CAAC;aACtE,CAAC,CAAC;SACN;QAED,OAAO,qBAAqB,CAAC;KAC9B;IAEO,aAAa;QACnB,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,CAAC;QAErE,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;KACpE;IAEO,6BAA6B,CACnC,IAA2B;QAE3B,IAAI,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAE1D,kBAAkB,CAAC,YAAY,GAAG,MAAM,CAAC;QAEzC,OAAO,kBAAkB,CAAC;KAC3B;IAEO,aAAa,CACnB,MAA4B,EAC5B,SAAiB,OAAO;QAExB,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;QACzE,IAAI,IAAI,GAAS,MAAM,CAAC,KAAK,CAAC;QAE9B,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACpC,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC/B;QAED,IAAI,aAAa,GACf,IAAI;YACJ,IAAI,CAAC,kBAAkB;YACvB,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,UAAwC,CAAC,CAAC;QAE5E,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;YAClD,OAAO,aAAa,CAAC;SACtB;KACF;IAEO,eAAe,CAAC,QAAgB;QACtC,OAAO,mBAAmB,QAAQ,QAAQ,CAAC;KAC5C;IAEO,WAAW,CAAC,MAAmC;QACrD,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;YAC/B,IAAI,MAAM,CAAC,OAAO,EAAE;gBAClB,MAAM,kBAAkB,GACtB,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,CAAC;;gBAEhD,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,2BAA2B,CAClE,kBAAkB,EAClB,SAAS,CACV,CAAC;gBACF,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,2BAA2B,CACnE,kBAAkB,EAClB,iBAAiB,CAClB,CAAC;gBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAC;gBAEnC,MAAM,0BAA0B,GAC9B,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,CAC/C,kBAAkB,EAClB,QAAQ,EACR,MAAM,CAAC,KAAK,CAAC,QAAQ,CACtB,CAAC;gBACJ,OAAO,CAAC,CAAC,0BAA0B,CAAC;aACrC;YACD,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;KACd;;8GA/YU,gBAAgB;kHAAhB,gBAAgB,cAFf,KAAK;4FAEN,gBAAgB;kBAH5B,UAAU;mBAAC;oBACV,UAAU,EAAE,KAAK;iBAClB;;0BAUI,QAAQ;;0BACR,QAAQ;;;ACtJb;;ACAA;;;;;;"}
|