@acorex/data-grid 6.6.8 → 6.6.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -610,10 +610,10 @@ export class AXDataGridComponent {
610
610
  }
611
611
  internalGridFirstDataRendered(e) {
612
612
  this.performSizeColumnsToFit(e.api);
613
- this.headerHeightSetter();
613
+ // this.headerHeightSetter();
614
614
  }
615
615
  handleColumnResized(e) {
616
- this.headerHeightSetter();
616
+ // this.headerHeightSetter();
617
617
  }
618
618
  performSizeColumnsToFit(api) {
619
619
  if (this.sizeColumnsToFit) {
@@ -643,19 +643,6 @@ export class AXDataGridComponent {
643
643
  select.style.borderRadius = '4px';
644
644
  pagingPanel.appendChild(select);
645
645
  }
646
- headerHeightSetter() {
647
- const padding = 20;
648
- const height = this.headerHeightGetter() + padding;
649
- this.gridApi.setHeaderHeight(height);
650
- }
651
- headerHeightGetter() {
652
- const columnHeaderTexts = [
653
- ...document.querySelectorAll('.ag-header-cell-text'),
654
- ];
655
- const clientHeights = columnHeaderTexts.map((headerText) => headerText.clientHeight);
656
- const tallestHeaderTextHeight = Math.max(...clientHeights);
657
- return tallestHeaderTextHeight;
658
- }
659
646
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXDataGridComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
660
647
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AXDataGridComponent, selector: "ax-data-grid", inputs: { paginationAutoPageSize: "paginationAutoPageSize", paginationPageSize: "paginationPageSize", remoteOperation: "remoteOperation", rowMultiSelectWithClick: "rowMultiSelectWithClick", suppressRowClickSelection: "suppressRowClickSelection", suppressCellSelection: "suppressCellSelection", sizeColumnsToFit: "sizeColumnsToFit", showCheckBox: "showCheckBox", floatingFilter: "floatingFilter", autoExpand: "autoExpand", rowSelectableConditionField: "rowSelectableConditionField", selectionMode: "selectionMode", pagination: "pagination", selectRow: "selectRow", rowGroupPanelShow: "rowGroupPanelShow", loadOnInit: "loadOnInit", enableRangeSelection: "enableRangeSelection", keyField: "keyField", hasChildField: "hasChildField", searchText: "searchText", filter: "filter", columns: "columns", rowHeight: "rowHeight", dataSource: "dataSource", groupHideOpenParents: "groupHideOpenParents", rowClass: "rowClass", rtl: "rtl" }, outputs: { columnsChange: "columnsChange", cellClick: "cellClick", cellDbClick: "cellDbClick", cellFocuse: "cellFocuse", rowClick: "rowClick", rowDbClick: "rowDbClick", selectionChanged: "selectionChanged", rowSelectionChange: "rowSelectionChange", onRowSelectionChanged: "onRowSelectionChanged" }, queries: [{ propertyName: "searchInput", first: true, predicate: AXToolbarSearchComponent, descendants: true, static: true }, { propertyName: "toolbar", first: true, predicate: AXToolbarComponent, descendants: true, static: true }, { propertyName: "rowTemplate", first: true, predicate: AXDataGridRowTemplateComponent, descendants: true, static: true }, { propertyName: "gridDetailTemplate", first: true, predicate: AXDataGridDetailTemplateComponent, descendants: true, static: true }, { propertyName: "_contentDataSource", first: true, predicate: AXDataSourceComponent, descendants: true, static: true }, { propertyName: "_inlineColumns", predicate: AXGridDataColumn }], ngImport: i0, template: "<div class=\"ax-grid-toolbar\" *ngIf=\"toolbar\">\n <ng-content select=\"ax-toolbar\"></ng-content>\n</div>\n<!-- [enableSorting]=\"true\" [enableColResize]=\"true\" [enableFilter]=\"allowFiltering\" -->\n\n<ag-grid-angular\n *ngIf=\"gridView\"\n class=\"ag-theme-balham\"\n [getRowClass]=\"internalGetRowClass\"\n [suppressCopyRowsToClipboard]=\"true\"\n [enableRangeSelection]=\"enableRangeSelection\"\n [serverSideStoreType]=\"'partial'\"\n [style.height]=\"internalHeight\"\n [columnDefs]=\"columnDefs\"\n [enableRtl]=\"rtl\"\n [pagination]=\"pagination\"\n [rowGroupPanelShow]=\"rowGroupPanelShow\"\n [rowModelType]=\"rowModelType\"\n [detailRowHeight]=\"detailRowHeight\"\n [paginationAutoPageSize]=\"paginationAutoPageSize\"\n [paginationPageSize]=\"paginationPageSize\"\n [suppressMenuHide]=\"true\"\n [frameworkComponents]=\"frameworkComponents\"\n [isFullWidthCell]=\"isFullWidthCell\"\n [rowSelection]=\"selectionMode\"\n [rowMultiSelectWithClick]=\"rowMultiSelectWithClick\"\n [fullWidthCellRendererFramework]=\"fullWidthCellRendererFramework\"\n [cacheBlockSize]=\"cacheBlockSize\"\n [fullWidthCellRendererParams]=\"fullWidthCellRendererParams\"\n (columnResized)=\"handleColumnResized($event)\"\n (cellClicked)=\"internalGridCellClicked($event)\"\n (cellDoubleClicked)=\"internalGridCellDoubleClicked($event)\"\n (cellFocused)=\"internalGridCellFocused($event)\"\n (rowClicked)=\"internalGridRowClicked($event)\"\n (selectionChanged)=\"internalGridSelectionChanged($event)\"\n (rowSelected)=\"rowSelectionChanged($event)\"\n (rowDoubleClicked)=\"internalGridRowDoubleClicked($event)\"\n (gridReady)=\"internalGridReady($event)\"\n [groupSelectsChildren]=\"groupSelectsChildren\"\n [suppressRowClickSelection]=\"suppressRowClickSelection\"\n [groupSelectsFiltered]=\"true\"\n [suppressCellSelection]=\"suppressCellSelection\"\n [autoGroupColumnDef]=\"autoGroupColumnDef\"\n [suppressAggFuncInHeader]=\"true\"\n [treeData]=\"treeData\"\n [animateRows]=\"true\"\n [isServerSideGroup]=\"isServerSideGroup\"\n [getServerSideGroupKey]=\"getServerSideGroupKey\"\n [masterDetail]=\"masterDetail\"\n [detailCellRendererParams]=\"detailCellRendererParams\"\n [detailCellRenderer]=\"detailCellRenderer\"\n (gridSizeChanged)=\"internalGridSizeChanged($event)\"\n (firstDataRendered)=\"internalGridFirstDataRendered($event)\"\n [localeText]=\"localeText\"\n [groupHideOpenParents]=\"groupHideOpenParents\"\n [allowContextMenuWithControlKey]=\"false\"\n [getMainMenuItems]=\"getMainMenuItems\"\n>\n</ag-grid-angular>\n\n<!-- (displayedColumnsChanged)=\"displayedColumnsChanged($event)\" -->\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "suppressMenuHide", "enableBrowserTooltips", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "maintainColumnOrder", "suppressFieldDotNotation", "deltaColumnMode", "applyColumnDefOrder", "immutableColumns", "suppressSetColumnStateEvents", "suppressColumnStateEvents", "colWidth", "minColWidth", "maxColWidth", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "components", "frameworkComponents", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "stopEditingWhenGridLosesFocus", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "defaultExportParams", "quickFilterText", "cacheQuickFilter", "excludeChildrenWhenTreeDataFiltering", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "chartToolPanelsDef", "loadingCellRenderer", "loadingCellRendererFramework", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererFramework", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentFramework", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentFramework", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDelay", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererFramework", "fullWidthCellRendererParams", "embedFullWidthRows", "deprecatedEmbedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererFramework", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "groupRowsSticky", "groupRowInnerRenderer", "groupRowInnerRendererFramework", "groupMultiAutoColumn", "groupUseEntireRow", "groupSuppressAutoColumn", "rememberGroupStateWhenNewData", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "immutableData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "deltaRowDataMode", "batchUpdateWaitMillis", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "serverSideStoreType", "serverSideInfiniteScroll", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSideSortingAlwaysResets", "serverSideFilteringAlwaysResets", "suppressEnterpriseResetOnNewColumns", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellSelection", "suppressCellFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "deltaSort", "treeDataDisplayType", "angularCompileRows", "angularCompileFilters", "functionsPassive", "enableGroupEdit", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "suppressKeyboardEvent", "localeTextFunc", "getLocaleText", "getDocument", "paginationNumberFormatter", "groupRowAggNodes", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "defaultGroupOrderComparator", "processSecondaryColDef", "processSecondaryColGroupDef", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "defaultGroupSortComparator", "getChildCount", "getServerSideGroupLevelParams", "getServerSideStoreParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowNodeId", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSort", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthCell", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "filterOpened", "filterChanged", "filterModified", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "cellKeyPress", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pinnedRowDataChanged", "rowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }], encapsulation: i0.ViewEncapsulation.None });
661
648
  }
@@ -753,4 +740,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
753
740
  }], rtl: [{
754
741
  type: Input
755
742
  }] } });
756
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWdyaWQvc3JjL2xpYi9kYXRhLWdyaWQvZGF0YWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWdyaWQvc3JjL2xpYi9kYXRhLWdyaWQvZGF0YWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHFCQUFxQixHQUV0QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQVd2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBUXBELE9BQU8sRUFDTCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixZQUFZLEdBQ2IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7OztBQUVwRixjQUFjLENBQUMsU0FBUyxDQUFDLGtCQUFrQixHQUFHLEdBQUcsRUFBRTtJQUNqRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztB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c0JBRFYsTUFBTTtnQkFLUCxVQUFVO3NCQURULE1BQU07Z0JBS1AsUUFBUTtzQkFEUCxNQUFNO2dCQUtQLFVBQVU7c0JBRFQsTUFBTTtnQkFLUCxnQkFBZ0I7c0JBRGYsTUFBTTtnQkFLUCxrQkFBa0I7c0JBRGpCLE1BQU07Z0JBS1AscUJBQXFCO3NCQURwQixNQUFNO2dCQUtQLFFBQVE7c0JBRFAsS0FBSztnQkFNTixHQUFHO3NCQURGLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWERhdGFTb3VyY2VDb21wb25lbnQsXG4gIEFYRGF0YVNvdXJjZVJlYWRQYXJhbXMsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2VsbENsaWNrZWRFdmVudCxcbiAgQ2VsbEV2ZW50LFxuICBGaXJzdERhdGFSZW5kZXJlZEV2ZW50LFxuICBHcmlkQXBpLFxuICBHcmlkT3B0aW9ucyxcbiAgR3JpZFNpemVDaGFuZ2VkRXZlbnQsXG4gIFJvd0NsaWNrZWRFdmVudCxcbiAgUm93RXZlbnQsXG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IEFYR3JpZERhdGFDb2x1bW4gfSBmcm9tICcuL2NvbHVtbnMvY29sdW1uLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWNlbnNlTWFuYWdlciB9IGZyb20gJ2FnLWdyaWQtZW50ZXJwcmlzZSc7XG5pbXBvcnQge1xuICBBWEdyaWRDZWxsRXZlbnQsXG4gIEFYR3JpZFJvd0V2ZW50LFxuICBBWEdyaWRSb3dQYXJhbXMsXG4gIEFYR3JpZFJvd1NlbGVjdGlvbkV2ZW50LFxufSBmcm9tICcuL2RhdGFncmlkLmV2ZW50cyc7XG5cbmltcG9ydCB7XG4gIEFYRGF0YUV2ZW50LFxuICBBWFRvb2xiYXJDb21wb25lbnQsXG4gIEFYVG9vbGJhclNlYXJjaENvbXBvbmVudCxcbiAgQVhWYWx1ZUV2ZW50LFxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhDb25maWcsIEFYVHJhbnNsYXRvciB9IGZyb20gJ0BhY29yZXgvY29yZSc7XG5pbXBvcnQgeyBBWERhdGVQaWNrZXJGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbHVtbnMvZGF0ZS1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IEFYRGF0YUdyaWREZXRhaWxUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vdGVtcGxhdGVzL2RldGFpbC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhEYXRhR3JpZFJvd1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi90ZW1wbGF0ZXMvcm93LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5cbkxpY2Vuc2VNYW5hZ2VyLnByb3RvdHlwZS5pc0Rpc3BsYXlXYXRlcm1hcmsgPSAoKSA9PiB7XG4gIHJldHVybiBmYWxzZTtcbn07XG5MaWNlbnNlTWFuYWdlci5wcm90b3R5cGUudmFsaWRhdGVMaWNlbnNlID0gZnVuY3Rpb24gKCkge1xuICAvL2NvbnNvbGUuaW5mbygnQ3JhY2tlZCBieSBBcmFzaCBPc2hub3VkaSEnKTtcbn07XG5cbi8vIFdhdGVybWFya0NvbXAucHJvdG90eXBlLnNob3VsZERpc3BsYXlXYXRlcm1hcmsgPSBmdW5jdGlvbiAoKSB7XG4vLyAgIHJldHVybiBmYWxzZTtcbi8vIH1cblxuZXhwb3J0IGNsYXNzIEFYRGF0YUdyaWRDb2x1bW5zQ2hhbmdlRXZlbnQgZXh0ZW5kcyBBWFZhbHVlRXZlbnQ8XG4gIEFYR3JpZERhdGFDb2x1bW5bXVxuPiB7XG4gIGRlY2xhcmUgY29tcG9uZW50OiBBWERhdGFHcmlkQ29tcG9uZW50O1xufVxuZXhwb3J0IGNsYXNzIEFYRGF0YUdyaWRDZWxsRXZlbnQgZXh0ZW5kcyBBWERhdGFFdmVudDxBWEdyaWRDZWxsRXZlbnQ+IHtcbiAgZGVjbGFyZSBjb21wb25lbnQ6IEFYRGF0YUdyaWRDb21wb25lbnQ7XG59XG5leHBvcnQgY2xhc3MgQVhEYWFncmlkUm93Q2xpY2tFdmVudCBleHRlbmRzIEFYRGF0YUV2ZW50PEFYR3JpZFJvd0V2ZW50PiB7XG4gIGRlY2xhcmUgY29tcG9uZW50OiBBWERhdGFHcmlkQ29tcG9uZW50O1xufVxuXG5leHBvcnQgY2xhc3MgQVhEYXRhR3JpZFNlbGVjdGlvbkNoYW5nZUV2ZW50IGV4dGVuZHMgQVhEYXRhRXZlbnQ8QVhHcmlkUm93U2VsZWN0aW9uRXZlbnQ+IHtcbiAgZGVjbGFyZSBjb21wb25lbnQ6IEFYRGF0YUdyaWRDb21wb25lbnQ7XG59XG5cbmV4cG9ydCBjbGFzcyBBWERhdGFHcmlkUm93U2VsZWN0aW9uQ2hhbmdlRXZlbnQgZXh0ZW5kcyBBWERhdGFFdmVudDxhbnk+IHtcbiAgZGVjbGFyZSBjb21wb25lbnQ6IEFYRGF0YUdyaWRDb21wb25lbnQ7XG4gIGRlY2xhcmUgc2VsZWN0ZWQ6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWRhdGEtZ3JpZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhZ3JpZC5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFYRGF0YUdyaWRDb21wb25lbnQge1xuICBwcml2YXRlIGdyaWRBcGk7XG4gIHByaXZhdGUgZGF0YVNvdXJjZVN1Y2Nlc3NDYWxsYmFjaztcbiAgbG9jYWxlVGV4dDogYW55O1xuXG4gIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucztcbiAgY29sdW1uRGVmczogYW55W10gPSBbXTtcbiAgcm93TW9kZWxUeXBlID0gJ2NsaWVudFNpZGUnO1xuICBmdWxsV2lkdGhDZWxsUmVuZGVyZXJGcmFtZXdvcms6IGFueTtcbiAgZnVsbFdpZHRoQ2VsbFJlbmRlcmVyUGFyYW1zOiBhbnk7XG4gIGZyYW1ld29ya0NvbXBvbmVudHM6IGFueSA9IHt9O1xuICBpc0Z1bGxXaWR0aENlbGw6IEZ1bmN0aW9uO1xuICBpbnRlcm5hbEhlaWdodCA9ICcxMDAlJztcbiAgZGV0YWlsQ2VsbFJlbmRlcmVyOiBhbnk7XG4gIGRldGFpbENlbGxSZW5kZXJlclBhcmFtczogYW55O1xuICBkZXRhaWxSb3dIZWlnaHQ6IG51bWJlcjtcbiAgbWFzdGVyRGV0YWlsID0gZmFsc2U7XG4gIHRyZWVEYXRhID0gZmFsc2U7XG4gIGVuYWJlbFNlbGVjdCA9IGZhbHNlO1xuICBncmlkVmlldyA9IGZhbHNlO1xuICBncm91cFNlbGVjdHNDaGlsZHJlbiA9IGZhbHNlO1xuICBvbGRTZWxlY3Rpb25Ob2RlczogYW55W10gPSBbXTtcbiAgLy8gQElucHV0KClcbiAgLy8gc2hvd1Jvd051bWJlcjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHBhZ2luYXRpb25BdXRvUGFnZVNpemUgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwYWdpbmF0aW9uUGFnZVNpemUgPSAyMDtcblxuICBjYWNoZUJsb2NrU2l6ZSA9IHRoaXMucGFnaW5hdGlvblBhZ2VTaXplO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZW1vdGVPcGVyYXRpb24gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcm93TXVsdGlTZWxlY3RXaXRoQ2xpY2sgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdXBwcmVzc0NlbGxTZWxlY3Rpb24gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2l6ZUNvbHVtbnNUb0ZpdCA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgc2hvd0NoZWNrQm94ID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBmbG9hdGluZ0ZpbHRlciA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGF1dG9FeHBhbmQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICByb3dTZWxlY3RhYmxlQ29uZGl0aW9uRmllbGQ6IHN0cmluZztcblxuICAvLyBASW5wdXQoKVxuICAvLyB0YWtlQ291bnQ6IG51bWJlcjtcblxuICBhdXRvR3JvdXBDb2x1bW5EZWY6IGFueSA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGlvbk1vZGU6ICdzaW5nbGUnIHwgJ211bHRpcGxlJyA9ICdzaW5nbGUnO1xuXG4gIC8vIEBJbnB1dCgpXG4gIC8vIGFsbG93RmlsdGVyaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcGFnaW5hdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgc2VsZWN0Um93OiBhbnlbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHJvd0dyb3VwUGFuZWxTaG93OiAnYWx3YXlzJyB8ICduZXZlcicgPSAnbmV2ZXInO1xuXG4gIEBJbnB1dCgpXG4gIGxvYWRPbkluaXQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGVuYWJsZVJhbmdlU2VsZWN0aW9uID0gZmFsc2U7XG5cbiAgLy8gQElucHV0KClcbiAgLy8gZ3JvdXBEZWZhdWx0RXhwYW5kZWQ6IG51bWJlciA9IDA7XG5cbiAgQElucHV0KClcbiAga2V5RmllbGQ6IHN0cmluZyA9ICdudWxsJztcblxuICBASW5wdXQoKVxuICBoYXNDaGlsZEZpZWxkOiBzdHJpbmcgPSAnbnVsbCc7XG5cbiAgcHJpdmF0ZSBfc2VhcmNoVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHNlYXJjaFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoVGV4dDtcbiAgfVxuICBwdWJsaWMgc2V0IHNlYXJjaFRleHQodjogc3RyaW5nKSB7XG4gICAgaWYgKHYgIT09IHRoaXMuX3NlYXJjaFRleHQpIHtcbiAgICAgIHRoaXMuX3NlYXJjaFRleHQgPSB2O1xuICAgICAgaWYgKHRoaXMuZ3JpZEFwaSkge1xuICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgICAgdGhpcy5ncmlkQXBpLnNldFF1aWNrRmlsdGVyKHRoaXMuc2VhcmNoVGV4dCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZmlsdGVyOiBhbnlbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGdldCBmaWx0ZXIoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXI7XG4gIH1cbiAgcHVibGljIHNldCBmaWx0ZXIodjogYW55W10pIHtcbiAgICBpZiAodiAhPT0gdGhpcy5fZmlsdGVyKSB7XG4gICAgICB0aGlzLl9maWx0ZXIgPSB2O1xuICAgICAgdGhpcy5fZmlsdGVyLmZvckVhY2goKGYpID0+IHtcbiAgICAgICAgY29uc3QgZmMgPSB0aGlzLmdyaWRBcGkuZ2V0RmlsdGVySW5zdGFuY2UoZi5maWVsZCk7XG4gICAgICAgIGlmIChmYykge1xuICAgICAgICAgIGNvbnN0IGZmID0gZmMuZ2V0RnJhbWV3b3JrQ29tcG9uZW50SW5zdGFuY2UoKTtcbiAgICAgICAgICBmZi5zZXRNb2RlbChmKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgQENvbnRlbnRDaGlsZHJlbihBWEdyaWREYXRhQ29sdW1uKVxuICBwcml2YXRlIF9pbmxpbmVDb2x1bW5zOiBRdWVyeUxpc3Q8QVhHcmlkRGF0YUNvbHVtbj47XG5cbiAgQE91dHB1dCgpXG4gIGNvbHVtbnNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkQ29sdW1uc0NoYW5nZUV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkQ29sdW1uc0NoYW5nZUV2ZW50PigpO1xuXG4gIHByaXZhdGUgX2NvbHVtbnM6IEFYR3JpZERhdGFDb2x1bW5bXSA9IFtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGNvbHVtbnMoKTogQVhHcmlkRGF0YUNvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpcy5faW5saW5lQ29sdW1uc1xuICAgICAgPyBbLi4udGhpcy5fY29sdW1ucywgLi4udGhpcy5faW5saW5lQ29sdW1ucy50b0FycmF5KCldXG4gICAgICA6IHRoaXMuX2NvbHVtbnM7XG4gIH1cblxuICBwdWJsaWMgc2V0IGNvbHVtbnModmFsOiBBWEdyaWREYXRhQ29sdW1uW10pIHtcbiAgICBpZiAodmFsICYmIHZhbC5sZW5ndGgpIHtcbiAgICAgIGxldCBvbGQgPSB0aGlzLl9jb2x1bW5zO1xuICAgICAgdGhpcy5fY29sdW1ucyA9IHZhbDtcbiAgICAgIHRoaXMuY29sdW1uc0NoYW5nZS5lbWl0KHtcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICB2YWx1ZTogdmFsLFxuICAgICAgICBvbGRWYWx1ZTogb2xkLFxuICAgICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGRlZmF1bHRDb2xEZWY6IGFueSA9IHtcbiAgICBmaWx0ZXI6IHRydWUsXG4gICAgZmxvYXRpbmdGaWx0ZXI6IHRydWUsXG4gIH07XG5cbiAgQElucHV0KClcbiAgcm93SGVpZ2h0OiBhbnk7XG5cbiAgQENvbnRlbnRDaGlsZChBWFRvb2xiYXJTZWFyY2hDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHNlYXJjaElucHV0OiBBWFRvb2xiYXJTZWFyY2hDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZChBWFRvb2xiYXJDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHRvb2xiYXI6IEFYVG9vbGJhckNvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkKEFYRGF0YUdyaWRSb3dUZW1wbGF0ZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcm93VGVtcGxhdGU6IEFYRGF0YUdyaWRSb3dUZW1wbGF0ZUNvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkKEFYRGF0YUdyaWREZXRhaWxUZW1wbGF0ZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgZ3JpZERldGFpbFRlbXBsYXRlOiBBWERhdGFHcmlkRGV0YWlsVGVtcGxhdGVDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZChBWERhdGFTb3VyY2VDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHByaXZhdGUgX2NvbnRlbnREYXRhU291cmNlOiBBWERhdGFTb3VyY2VDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSBfZGF0YVNvdXJjZTogQVhEYXRhU291cmNlQ29tcG9uZW50O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgZGF0YVNvdXJjZSgpOiBBWERhdGFTb3VyY2VDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlID8gdGhpcy5fZGF0YVNvdXJjZSA6IHRoaXMuX2NvbnRlbnREYXRhU291cmNlO1xuICB9XG5cbiAgcHVibGljIHNldCBkYXRhU291cmNlKHY6IEFYRGF0YVNvdXJjZUNvbXBvbmVudCkge1xuICAgIHRoaXMuX2RhdGFTb3VyY2UgPSB2O1xuICB9XG5cbiAgQElucHV0KClcbiAgZ3JvdXBIaWRlT3BlblBhcmVudHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgY2VsbENsaWNrOiBFdmVudEVtaXR0ZXI8QVhEYXRhR3JpZENlbGxFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhR3JpZENlbGxFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgY2VsbERiQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkQ2VsbEV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkQ2VsbEV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBjZWxsRm9jdXNlOiBFdmVudEVtaXR0ZXI8QVhEYXRhR3JpZENlbGxFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhR3JpZENlbGxFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgcm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxBWERhYWdyaWRSb3dDbGlja0V2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWERhYWdyaWRSb3dDbGlja0V2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICByb3dEYkNsaWNrOiBFdmVudEVtaXR0ZXI8QVhEYWFncmlkUm93Q2xpY2tFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhEYWFncmlkUm93Q2xpY2tFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgc2VsZWN0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYRGF0YUdyaWRTZWxlY3Rpb25DaGFuZ2VFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhR3JpZFNlbGVjdGlvbkNoYW5nZUV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICByb3dTZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkU2VsZWN0aW9uQ2hhbmdlRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEFYRGF0YUdyaWRTZWxlY3Rpb25DaGFuZ2VFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgb25Sb3dTZWxlY3Rpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhEYXRhR3JpZFJvd1NlbGVjdGlvbkNoYW5nZUV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkUm93U2VsZWN0aW9uQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgQElucHV0KClcbiAgcm93Q2xhc3M/OiAoXG4gICAgcGFyYW1zOiBBWEdyaWRSb3dQYXJhbXNcbiAgKSA9PiAoc3RyaW5nIHwgc3RyaW5nW10pIHwgKHN0cmluZyB8IHN0cmluZ1tdKTtcblxuICBASW5wdXQoKVxuICBydGw6IGJvb2xlYW4gPSBBWENvbmZpZy5nZXQoJ2xheW91dC5ydGwnKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlZjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4sXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMubG9jYWxlVGV4dCA9IEFYVHJhbnNsYXRvci5nZXQoJ2RhdGFHcmlkJyk7XG4gIH1cblxuICBwcml2YXRlIGNhbGNIZWlnaHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9vbGJhcikge1xuICAgICAgdGhpcy5pbnRlcm5hbEhlaWdodCA9IGBjYWxjKDEwMCUgLSAkezQwfXB4KWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxIZWlnaHQgPSAnMTAwJSc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaW50ZW5hbEdyaWREYXRhU291cmNlKCkge1xuICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgIHJldHVybiB7XG4gICAgICByb3dDb3VudDogbnVsbCxcbiAgICAgIGdldFJvd3M6IChwYXJhbXMpID0+IHtcbiAgICAgICAgdGhhdC5kYXRhU291cmNlU3VjY2Vzc0NhbGxiYWNrID0gcGFyYW1zLnN1Y2Nlc3NDYWxsYmFjaztcblxuICAgICAgICBjb25zdCBsb2FkUGFyYW1zOiBBWERhdGFTb3VyY2VSZWFkUGFyYW1zID0ge307XG5cbiAgICAgICAgbG9hZFBhcmFtcy5zZWFyY2hUZXh0ID0gdGhhdC5zZWFyY2hUZXh0O1xuXG4gICAgICAgIGxvYWRQYXJhbXMuc2tpcCA9IHBhcmFtcy5yZXF1ZXN0LnN0YXJ0Um93O1xuXG4gICAgICAgIGxvYWRQYXJhbXMudGFrZSA9IHBhcmFtcy5yZXF1ZXN0LmVuZFJvdyAtIHBhcmFtcy5yZXF1ZXN0LnN0YXJ0Um93O1xuXG4gICAgICAgIGxvYWRQYXJhbXMuc29ydCA9IHBhcmFtcy5yZXF1ZXN0LnNvcnRNb2RlbC5tYXAoKGMpID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmllbGQ6IGMuY29sSWQsXG4gICAgICAgICAgICBkaXI6IGMuc29ydCxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICBsb2FkUGFyYW1zLmdyb3VwID0ge1xuICAgICAgICAgIGZpZWxkczogcGFyYW1zLnJlcXVlc3Qucm93R3JvdXBDb2xzLm1hcCgocikgPT4gci5maWVsZCksXG4gICAgICAgICAga2V5czogcGFyYW1zLnJlcXVlc3QuZ3JvdXBLZXlzLFxuICAgICAgICAgIHBhcmVudERhdGE6IHBhcmFtcy5wYXJlbnROb2RlLmRhdGEsXG4gICAgICAgIH07XG5cbiAgICAgICAgbG9hZFBhcmFtcy5maWx0ZXIgPSBwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbDtcblxuICAgICAgICB0aGF0LmRhdGFTb3VyY2UuZmV0Y2gobG9hZFBhcmFtcyk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgZ2V0TWFpbk1lbnVJdGVtcyhlKSB7XG4gICAgcmV0dXJuIFsncGluU3ViTWVudScsICdzZXBhcmF0b3InXTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZ3JpZEFwaS5kZXN0cm95KCk7XG4gIH1cblxuICBpc1NlcnZlclNpZGVHcm91cCA9IChlKSA9PiB7XG4gICAgcmV0dXJuIGVbdGhpcy5oYXNDaGlsZEZpZWxkXTtcbiAgfTtcblxuICBnZXRDb2x1bW5EZWZzID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmdyaWRBcGkuZ2V0Q29sdW1uRGVmcygpO1xuICB9O1xuXG4gIGdldEN1cnJlbnRQYWdlTnVtYmVyID0gKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBjdXJyZW50OiB0aGlzLmdyaWRBcGkucGFnaW5hdGlvbkdldEN1cnJlbnRQYWdlKCkgKyAxLFxuICAgICAgdG90YWw6IHRoaXMuZ3JpZEFwaS5wYWdpbmF0aW9uR2V0VG90YWxQYWdlcygpLFxuICAgIH07XG4gIH07XG5cbiAgcGFnaW5hdGlvbkdvVG9QYWdlKG51bWJlcikge1xuICAgIHRoaXMuZ3JpZEFwaS5wYWdpbmF0aW9uR29Ub1BhZ2UobnVtYmVyIC0gMSk7XG4gIH1cblxuICBnZXRTZXJ2ZXJTaWRlR3JvdXBLZXkgPSAoZSkgPT4ge1xuICAgIHJldHVybiBlW3RoaXMua2V5RmllbGRdO1xuICB9O1xuICBpbnRlcm5hbEdyaWRSZWFkeShncmlkT3B0aW9ucykge1xuICAgIGlmICh0aGlzLnJlbW90ZU9wZXJhdGlvbiAmJiAhdGhpcy5wYWdpbmF0aW9uQXV0b1BhZ2VTaXplKSB7XG4gICAgICB0aGlzLmhhbmRsZVBhZ2VTaXplKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FjaGVCbG9ja1NpemUgPVxuICAgICAgICB0aGlzLnBhZ2luYXRpb25QYWdlU2l6ZSA+IDIwID8gdGhpcy5wYWdpbmF0aW9uUGFnZVNpemUgOiAxMDA7XG4gICAgfVxuXG4gICAgdGhpcy5ncmlkQXBpID0gZ3JpZE9wdGlvbnMuYXBpO1xuXG4gICAgdGhpcy5tYXBDb2x1bW5zKCk7XG4gICAgdGhpcy5jYWxjSGVpZ2h0KCk7XG5cbiAgICBpZiAoIXRoaXMubG9hZE9uSW5pdCkge1xuICAgICAgdGhpcy5sb2FkT25Jbml0ID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZW1vdGVPcGVyYXRpb24pIHtcbiAgICAgIHRoaXMuZ3JpZEFwaS5zZXRTZXJ2ZXJTaWRlRGF0YXNvdXJjZSh0aGlzLmludGVuYWxHcmlkRGF0YVNvdXJjZSk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnJlbW90ZU9wZXJhdGlvbikge1xuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgIGlmICh0aGlzLnJvd1RlbXBsYXRlKSB7XG4gICAgICB0aGlzLmZ1bGxXaWR0aENlbGxSZW5kZXJlckZyYW1ld29yayA9IHRoaXMucm93VGVtcGxhdGUucmVuZGVyZXI7XG4gICAgICB0aGlzLmZ1bGxXaWR0aENlbGxSZW5kZXJlclBhcmFtcyA9IHRoaXMucm93VGVtcGxhdGUucGFyYW1zO1xuICAgIH1cbiAgICB0aGlzLmZyYW1ld29ya0NvbXBvbmVudHMuYWdEYXRlSW5wdXQgPSBBWERhdGVQaWNrZXJGaWx0ZXJDb21wb25lbnQ7XG5cbiAgICBpZiAodGhpcy5ncmlkRGV0YWlsVGVtcGxhdGUpIHtcbiAgICAgIHRoaXMubWFzdGVyRGV0YWlsID0gdHJ1ZTtcbiAgICAgIHRoaXMuZGV0YWlsQ2VsbFJlbmRlcmVyUGFyYW1zID0gdGhpcy5ncmlkRGV0YWlsVGVtcGxhdGUucGFyYW1zO1xuICAgICAgdGhpcy5kZXRhaWxDZWxsUmVuZGVyZXIgPSAnZGV0YWlsUmVuZGVyZXJGcmFtZXdvcmsnO1xuICAgICAgdGhpcy5mcmFtZXdvcmtDb21wb25lbnRzLmRldGFpbFJlbmRlcmVyRnJhbWV3b3JrID1cbiAgICAgICAgdGhpcy5ncmlkRGV0YWlsVGVtcGxhdGUucmVuZGVyZXI7XG5cbiAgICAgIHRoaXMuZGV0YWlsUm93SGVpZ2h0ID0gdGhpcy5ncmlkRGV0YWlsVGVtcGxhdGUuaGVpZ2h0O1xuICAgIH1cbiAgICB0aGlzLmlzRnVsbFdpZHRoQ2VsbCA9ICgpID0+IHtcbiAgICAgIHJldHVybiB0aGF0LnJvd1RlbXBsYXRlICE9IG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICB0aGlzLmdyb3VwU2VsZWN0c0NoaWxkcmVuID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLmtleUZpZWxkICE9PSAnbnVsbCcgJiYgdGhpcy5oYXNDaGlsZEZpZWxkICE9PSAnbnVsbCcpIHtcbiAgICAgIHRoaXMucm93R3JvdXBQYW5lbFNob3cgPSAnbmV2ZXInO1xuICAgICAgdGhpcy50cmVlRGF0YSA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlbW90ZU9wZXJhdGlvbikge1xuICAgICAgdGhpcy5yb3dNb2RlbFR5cGUgPSAnc2VydmVyU2lkZSc7XG4gICAgfVxuICAgIC8vXG4gICAgaWYgKHRoaXMucnRsID09IG51bGwpIHtcbiAgICAgIHRoaXMucnRsID1cbiAgICAgICAgd2luZG93XG4gICAgICAgICAgLmdldENvbXB1dGVkU3R5bGUodGhpcy5yZWYubmF0aXZlRWxlbWVudCwgbnVsbClcbiAgICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZSgnZGlyZWN0aW9uJykgPT09ICdydGwnO1xuICAgIH1cbiAgICAvL1xuICB9XG5cbiAgZ3JpZFNlbGVjdFJvdygpIHtcbiAgICBpZiAodGhpcy5ncmlkQXBpKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuc2VsZWN0Um93ICYmXG4gICAgICAgIHRoaXMuc2VsZWN0Um93Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgdGhpcy5ncmlkQXBpICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgdHlwZW9mIHRoaXMuc2VsZWN0Um93WzBdICE9ICdvYmplY3QnXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5ncmlkQXBpLmZvckVhY2hOb2RlKChub2RlKSA9PiB7XG4gICAgICAgICAgaWYgKG5vZGUuZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdFJvdy5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICAgICAgICBpZiAobm9kZS5kYXRhW3RoaXMua2V5RmllbGRdID09PSBpZCkge1xuICAgICAgICAgICAgICAgIHNlbGVjdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgbm9kZS5zZXRTZWxlY3RlZChzZWxlY3QpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ncmlkQXBpLmZvckVhY2hOb2RlKChub2RlKSA9PiB7XG4gICAgICAgICAgaWYgKG5vZGUuZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RSb3cubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0Um93LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5yb3dJbmRleCAhPSB1bmRlZmluZWQgJiYgaXRlbS5yb3dMZXZlbCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChub2RlLmRhdGFbdGhpcy5rZXlGaWVsZF0gPT09IGl0ZW0uZGF0YVt0aGlzLmtleUZpZWxkXSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3QgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMua2V5RmllbGQgIT09ICdudWxsJyAmJlxuICAgICAgICAgICAgICAgICAgICBub2RlLmRhdGFbdGhpcy5rZXlGaWVsZF0gPT09IGl0ZW1bdGhpcy5rZXlGaWVsZF1cbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3QgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5yb3dTZWxlY3RhYmxlQ29uZGl0aW9uRmllbGQpIHtcbiAgICAgICAgICAgICAgbm9kZS5zZXRSb3dTZWxlY3RhYmxlKFxuICAgICAgICAgICAgICAgIG5vZGUuZGF0YVt0aGlzLnJvd1NlbGVjdGFibGVDb25kaXRpb25GaWVsZF1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGUuc2V0U2VsZWN0ZWQoc2VsZWN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlYnVpbGRHcmlkKCkge1xuICAgIHRoaXMubWFwQ29sdW1ucygpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2l6ZUNvbHVtbnNUb0ZpdCkge1xuICAgICAgICB0aGlzLmdyaWRBcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50cmVlRGF0YSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5jb2x1bW5EZWZzID0gdGhpcy5jb2x1bW5zLm1hcCgoYykgPT4gYy5yZW5kZXIoKSk7XG5cbiAgICAgIGNvbnN0IGdyb3VwQ29sdW1uID0gdGhpcy5jb2x1bW5EZWZzLmZpbmQoXG4gICAgICAgIChjKSA9PiBjLnJvd0dyb3VwSW5kZXggPT0gJzAnICYmIGMuZmllbGQgIT09ICcnXG4gICAgICApO1xuXG4gICAgICB0aGlzLmF1dG9Hcm91cENvbHVtbkRlZiA9IHtcbiAgICAgICAgaGVhZGVyTmFtZTogZ3JvdXBDb2x1bW4uaGVhZGVyTmFtZSxcbiAgICAgICAgd2lkdGg6IGdyb3VwQ29sdW1uLndpZHRoLFxuICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHsgY2hlY2tib3g6IHRoaXMuc2hvd0NoZWNrQm94IH0sXG4gICAgICAgIGZpZWxkOiBncm91cENvbHVtbi5maWVsZCxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuY29sdW1uRGVmcy5mb3JFYWNoKChlbG0pID0+IHtcbiAgICAgICAgaWYgKGVsbS5yb3dHcm91cEluZGV4ID4gLTEpIHtcbiAgICAgICAgICBlbG0uaGlkZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmdyaWRWaWV3ID0gdHJ1ZTtcblxuICAgIHRoaXMuZW5hYmVsU2VsZWN0ID0gdHJ1ZTtcbiAgICB0aGlzLmRhdGFTb3VyY2Uub25EYXRhUmVjZWl2ZWQuc3Vic2NyaWJlKChfZGF0YSkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gX2RhdGEuZGF0YS5yZXN1bHQ7XG4gICAgICB0aGlzLmhpZGVMb2FkaW5nKCk7XG4gICAgICBsZXQgaXRlbXM6IGFueVtdO1xuICAgICAgbGV0IHRvdGFsQ291bnQ6IG51bWJlcjtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICAgICAgaXRlbXMgPSByZXN1bHQ7XG4gICAgICAgIHRvdGFsQ291bnQgPSByZXN1bHQubGVuZ3RoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlbXMgPSByZXN1bHQuaXRlbXM7XG4gICAgICAgIHRvdGFsQ291bnQgPSByZXN1bHQudG90YWxDb3VudDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2VTdWNjZXNzQ2FsbGJhY2spIHtcbiAgICAgICAgaWYgKCF0aGlzLmxvYWRPbkluaXQpIHtcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2VTdWNjZXNzQ2FsbGJhY2soW10sIDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZVN1Y2Nlc3NDYWxsYmFjayhpdGVtcywgdG90YWxDb3VudCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghdGhpcy5sb2FkT25Jbml0ICYmIHRoaXMuZ3JpZEFwaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5ncmlkQXBpLnNldFJvd0RhdGEoW10pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ3JpZEFwaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5ncmlkQXBpLnNldFJvd0RhdGEoaXRlbXMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZ3JpZFNlbGVjdFJvdygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kYXRhU291cmNlLm9uRmV0Y2hTdGFydC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zaG93TG9hZGluZygpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQub25WYWx1ZUNoYW5nZWQuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IGMudmFsdWU7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbWFwQ29sdW1ucygpIHtcbiAgICB0aGlzLmNvbHVtbkRlZnMgPSB0aGlzLmNvbHVtbnMubWFwKChjKSA9PiBjLnJlbmRlcigpKTtcbiAgICBpZiAodGhpcy5ncmlkRGV0YWlsVGVtcGxhdGUpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5jb2x1bW5EZWZzWzBdLmNoZWNrYm94U2VsZWN0aW9uID09PSB0cnVlICYmXG4gICAgICAgIHRoaXMuY29sdW1uRGVmc1swXS5maWVsZCA9PT0gJydcbiAgICAgICkge1xuICAgICAgICB0aGlzLmNvbHVtbkRlZnNbMV0uY2VsbFJlbmRlcmVyID0gJ2FnR3JvdXBDZWxsUmVuZGVyZXInO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb2x1bW5EZWZzWzBdLmNlbGxSZW5kZXJlciA9ICdhZ0dyb3VwQ2VsbFJlbmRlcmVyJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNDaGlsZEZpZWxkID09PSAnbnVsbCcpIHtcbiAgICAgIGNvbnN0IGdyb3VwQ29sdW1uID0gdGhpcy5jb2x1bW5EZWZzLmZpbmQoXG4gICAgICAgIChjKSA9PiBjLnJvd0dyb3VwSW5kZXggPT09IHVuZGVmaW5lZCAmJiBjLmZpZWxkICE9PSAnJ1xuICAgICAgKTtcbiAgICAgIGlmIChncm91cENvbHVtbiAmJiB0aGlzLmdyb3VwSGlkZU9wZW5QYXJlbnRzID09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuYXV0b0dyb3VwQ29sdW1uRGVmID0ge1xuICAgICAgICAgIGhlYWRlck5hbWU6IGdyb3VwQ29sdW1uLmhlYWRlck5hbWUsXG4gICAgICAgICAgd2lkdGg6IGdyb3VwQ29sdW1uLndpZHRoLFxuICAgICAgICAgIGNlbGxSZW5kZXJlclBhcmFtczogeyBjaGVja2JveDogdGhpcy5zaG93Q2hlY2tCb3ggfSxcbiAgICAgICAgICBmaWVsZDogZ3JvdXBDb2x1bW4uZmllbGQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jb2x1bW5EZWZzLmZvckVhY2goKGVsbSkgPT4ge1xuICAgICAgaWYgKGVsbS5yb3dHcm91cEluZGV4ID4gLTEpIHtcbiAgICAgICAgZWxtLmhpZGUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZGlzcGxheWVkQ29sdW1uc0NoYW5nZWQoZSkge1xuICAgIGlmICh0aGlzLmhhc0NoaWxkRmllbGQgPT09ICdudWxsJykge1xuICAgICAgY29uc3QgZWUgPSBlLmNvbHVtbkFwaS5nZXRBbGxEaXNwbGF5ZWRDb2x1bW5Hcm91cHMoKTtcbiAgICAgIGNvbnN0IGVlZSA9IGVlLmZpbmQoXG4gICAgICAgIChjKSA9PiBjLmNvbElkICE9PSAnYWctR3JpZC1BdXRvQ29sdW1uJyAmJiBjLmNvbElkICE9PSAnMCdcbiAgICAgICk7XG4gICAgICBpZiAoZWVlICYmIGVlZS5jb2xJZCkge1xuICAgICAgICB0aGlzLmF1dG9Hcm91cENvbHVtbkRlZiA9IHtcbiAgICAgICAgICBoZWFkZXJOYW1lOiBlZWUuY29sRGVmLmhlYWRlck5hbWUsXG4gICAgICAgICAgd2lkdGg6IGVlZS5jb2xEZWYud2lkdGgsXG4gICAgICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7IGNoZWNrYm94OiB0aGlzLnNob3dDaGVja0JveCB9LFxuICAgICAgICAgIGZpZWxkOiBlZWUuY29sRGVmLmZpZWxkLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2gocm91dGU6IGFueVtdID0gW10pIHtcbiAgICBpZiAodGhpcy5yZW1vdGVPcGVyYXRpb24gJiYgdGhpcy5ncmlkQXBpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vICB0aGlzLmdyaWRBcGkucHVyZ2VTZXJ2ZXJTaWRlQ2FjaGUocm91dGUpO1xuICAgICAgdGhpcy5ncmlkQXBpLnNldFNlcnZlclNpZGVEYXRhc291cmNlKHRoaXMuaW50ZW5hbEdyaWREYXRhU291cmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRhU291cmNlLmZldGNoKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIGludGVybmFsR3JpZENlbGxDbGlja2VkKGU6IENlbGxDbGlja2VkRXZlbnQpIHtcbiAgICB0aGlzLmNlbGxDbGljay5lbWl0KHtcbiAgICAgIGRhdGE6IHRoaXMubWFwQ2VsbEV2ZW50KGUpLFxuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgfSk7XG4gIH1cblxuICBpbnRlcm5hbEdyaWRDZWxsRG91YmxlQ2xpY2tlZChlOiBDZWxsQ2xpY2tlZEV2ZW50KSB7XG4gICAgdGhpcy5jZWxsRGJDbGljay5lbWl0KHtcbiAgICAgIGRhdGE6IHRoaXMubWFwQ2VsbEV2ZW50KGUpLFxuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgfSk7XG4gIH1cblxuICBpbnRlcm5hbEdyaWRDZWxsRm9jdXNlZChlOiBDZWxsQ2xpY2tlZEV2ZW50KSB7XG4gICAgdGhpcy5jZWxsRm9jdXNlLmVtaXQoe1xuICAgICAgZGF0YTogdGhpcy5tYXBDZWxsRXZlbnQoZSksXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIGludGVybmFsR3JpZFJvd0NsaWNrZWQoZTogUm93Q2xpY2tlZEV2ZW50KSB7XG4gICAgaWYgKCFlLm5vZGUuZ3JvdXApIHtcbiAgICAgIHRoaXMucm93Q2xpY2suZW1pdCh7XG4gICAgICAgIGRhdGE6IHRoaXMubWFwUm93RXZlbnQoZSksXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpbnRlcm5hbEdyaWRSb3dEb3VibGVDbGlja2VkKGU6IENlbGxDbGlja2VkRXZlbnQpIHtcbiAgICBpZiAoIWUubm9kZS5ncm91cCkge1xuICAgICAgdGhpcy5yb3dEYkNsaWNrLmVtaXQoe1xuICAgICAgICBkYXRhOiB0aGlzLm1hcFJvd0V2ZW50KGUpLFxuICAgICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZGlmZmVyZW5jZU9mMkFycmF5cyhhcnJheTE6IGFueSwgYXJyYXkyOiBhbnkpIHtcbiAgICBjb25zdCB0ZW1wID0gW107XG4gICAgZm9yIChjb25zdCBpIGluIGFycmF5MSkge1xuICAgICAgaWYgKGFycmF5Mi5pbmRleE9mKGFycmF5MVtpXSkgPT09IC0xKSB7XG4gICAgICAgIHRlbXAucHVzaChhcnJheTFbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGkgaW4gYXJyYXkyKSB7XG4gICAgICBpZiAoYXJyYXkxLmluZGV4T2YoYXJyYXkyW2ldKSA9PT0gLTEpIHtcbiAgICAgICAgdGVtcC5wdXNoKGFycmF5MltpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0ZW1wLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgfVxuXG4gIHJvd1NlbGVjdGlvbkNoYW5nZWQoZSkge1xuICAgIGlmIChlLm5vZGUuc2VsZWN0ZWQgPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RSb3cgPSB0aGlzLnNlbGVjdFJvdy5maWx0ZXIoXG4gICAgICAgIChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9IGUuZGF0YVt0aGlzLmtleUZpZWxkXVxuICAgICAgKTtcbiAgICAgIHRoaXMuc2VsZWN0Um93LnB1c2goZS5kYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RSb3cgPSB0aGlzLnNlbGVjdFJvdy5maWx0ZXIoXG4gICAgICAgIChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9IGUuZGF0YVt0aGlzLmtleUZpZWxkXVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5yb3dTZWxlY3Rpb25DaGFuZ2UuZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBkYXRhOiBlLFxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgfSk7XG4gIH1cblxuICBpbnRlcm5hbEdyaWRTZWxlY3Rpb25DaGFuZ2VkKGUpIHtcbiAgICBjb25zdCBhcmdzOiBBWEdyaWRSb3dTZWxlY3Rpb25FdmVudCA9IHsgaXRlbXM6IFtdIH07XG4gICAgY29uc3Qgb2xkTm9kZXMgPSB0aGlzLm9sZFNlbGVjdGlvbk5vZGVzO1xuICAgIGNvbnN0IG5vZGVzID0gdGhpcy5ncmlkQXBpLmdldFNlbGVjdGVkTm9kZXMoKTtcblxuICAgIGlmICh0aGlzLmF1dG9FeHBhbmQpIHtcbiAgICAgIGNvbnN0IHVuc2VsZWN0ZWROb2RlcyA9IG9sZE5vZGVzLmZpbHRlcihcbiAgICAgICAgKG9sZE5vZGUpID0+ICFub2Rlcy5zb21lKChuZXdOb2RlKSA9PiBuZXdOb2RlID09PSBvbGROb2RlKVxuICAgICAgKTtcbiAgICAgIHVuc2VsZWN0ZWROb2Rlcy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICBlbC5zZXRFeHBhbmRlZChmYWxzZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBub2Rlcy5mb3JFYWNoKChpKSA9PiB7XG4gICAgICBpZiAodGhpcy5hdXRvRXhwYW5kKSB7XG4gICAgICAgIGkuc2V0RXhwYW5kZWQodHJ1ZSk7XG4gICAgICB9XG4gICAgICBhcmdzLml0ZW1zLnB1c2goe1xuICAgICAgICByb3dMZXZlbDogaS5sZXZlbCxcbiAgICAgICAgcm93SW5kZXg6IGkucm93SW5kZXgsXG4gICAgICAgIGRhdGE6IGkuZGF0YSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHtcbiAgICAgIGRhdGE6IGFyZ3MsXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcbiAgICB9KTtcbiAgICBsZXQgYWN0aW9uID0gbm9kZXMubGVuZ3RoID4gb2xkTm9kZXMubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlO1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmRpZmZlcmVuY2VPZjJBcnJheXMobm9kZXMsIG9sZE5vZGVzKTtcbiAgICB0aGlzLm9uUm93U2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIHNlbGVjdGVkOiBhY3Rpb24sXG4gICAgICBkYXRhOiBub2RlLFxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgfSk7XG4gICAgdGhpcy5vbGRTZWxlY3Rpb25Ob2RlcyA9IG5vZGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBDZWxsRXZlbnQoZTogQ2VsbEV2ZW50KTogQVhHcmlkQ2VsbEV2ZW50IHtcbiAgICByZXR1cm4ge1xuICAgICAgcm93TGV2ZWw6IDAsXG4gICAgICBjb2x1bW46IGUuY29sdW1uLFxuICAgICAgZGF0YTogZS5kYXRhLFxuICAgICAgcm93SW5kZXg6IGUucm93SW5kZXgsXG4gICAgICB2YWx1ZTogZS52YWx1ZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBSb3dFdmVudChlOiBSb3dFdmVudCk6IEFYR3JpZFJvd0V2ZW50IHtcbiAgICByZXR1cm4ge1xuICAgICAgcm93TGV2ZWw6IDAsXG4gICAgICBkYXRhOiBlLmRhdGEsXG4gICAgICByb3dJbmRleDogZS5yb3dJbmRleCxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGRlc2VsZWN0QWxsKCkge1xuICAgIHRoaXMuZ3JpZEFwaS5kZXNlbGVjdEFsbCgpO1xuICB9XG5cbiAgcHVibGljIGRlc2VsZWN0QnlLZXlGaWVsZChrZXlGaWVsZCkge1xuICAgIHRoaXMuZ3JpZEFwaS5mb3JFYWNoTm9kZSgobm9kZSkgPT4ge1xuICAgICAgaWYgKG5vZGUuZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxldCBzZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgICAgaWYgKG5vZGUuZGF0YVt0aGlzLmtleUZpZWxkXSA9PT0ga2V5RmllbGQpIHtcbiAgICAgICAgICBub2RlLnNldFNlbGVjdGVkKHNlbGVjdCk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RSb3cgPSB0aGlzLnNlbGVjdFJvdy5maWx0ZXIoXG4gICAgICAgICAgICAoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPSBrZXlGaWVsZFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGludGVybmFsR2V0Um93Q2xhc3MgPSAocDogYW55KSA9PiB7XG4gICAgaWYgKHRoaXMucm93Q2xhc3MpIHtcbiAgICAgIGlmICh0aGlzLnJvd0NsYXNzIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm93Q2xhc3Moe1xuICAgICAgICAgIHJvd0luZGV4OiBwLm5vZGUucm93SW5kZXgsXG4gICAgICAgICAgcm93TGV2ZWw6IHAubm9kZS5sZXZlbCxcbiAgICAgICAgICBkYXRhOiBwLmRhdGEsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm93Q2xhc3M7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHNob3dMb2FkaW5nKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmdyaWRBcGkpIHtcbiAgICAgIHRoaXMuZ3JpZEFwaS5zaG93TG9hZGluZ092ZXJsYXkoKTtcbiAgICB9XG4gIH1cblxuICBoaWRlTG9hZGluZygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ncmlkQXBpKSB7XG4gICAgICB0aGlzLmdyaWRBcGkuaGlkZU92ZXJsYXkoKTtcbiAgICB9XG4gIH1cblxuICBpbnRlcm5hbEdyaWRTaXplQ2hhbmdlZChlOiBHcmlkU2l6ZUNoYW5nZWRFdmVudCkge1xuICAgIGlmIChlLmNsaWVudFdpZHRoID4gMCAmJiBlLmNsaWVudEhlaWdodCA+IDApIHtcbiAgICAgIHRoaXMucGVyZm9ybVNpemVDb2x1bW5zVG9GaXQoZS5hcGkpO1xuICAgIH1cbiAgfVxuXG4gIGludGVybmFsR3JpZEZpcnN0RGF0YVJlbmRlcmVkKGU6IEZpcnN0RGF0YVJlbmRlcmVkRXZlbnQpIHtcbiAgICB0aGlzLnBlcmZvcm1TaXplQ29sdW1uc1RvRml0KGUuYXBpKTtcbiAgICB0aGlzLmhlYWRlckhlaWdodFNldHRlcigpO1xuICB9XG5cbiAgaGFuZGxlQ29sdW1uUmVzaXplZChlKSB7XG4gICAgdGhpcy5oZWFkZXJIZWlnaHRTZXR0ZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgcGVyZm9ybVNpemVDb2x1bW5zVG9GaXQoYXBpOiBHcmlkQXBpKSB7XG4gICAgaWYgKHRoaXMuc2l6ZUNvbHVtbnNUb0ZpdCkge1xuICAgICAgYXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVBhZ2VTaXplKCkge1xuICAgIGNvbnN0IHBhZ2luZ1BhbmVsID1cbiAgICAgIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmFnLXBhZ2luZy1wYW5lbCcpO1xuXG4gICAgY29uc3Qgc2VsZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2VsZWN0Jyk7XG5cbiAgICBzZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGU6IGFueSkgPT4ge1xuICAgICAgdGhpcy5ncmlkQXBpLnBhZ2luYXRpb25TZXRQYWdlU2l6ZShOdW1iZXIoZS50YXJnZXQudmFsdWUpKTtcbiAgICAgIHRoaXMuZ3JpZEFwaS5zZXRDYWNoZUJsb2NrU2l6ZShOdW1iZXIoZS50YXJnZXQudmFsdWUpKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IG9wdGlvbjEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTtcblxuICAgIG9wdGlvbjEuc2V0QXR0cmlidXRlKCd2YWx1ZScsICcxMCcpO1xuXG4gICAgb3B0aW9uMS50ZXh0Q29udGVudCA9ICcxMCc7XG5cbiAgICBjb25zdCBvcHRpb24yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7XG5cbiAgICBvcHRpb24yLnNldEF0dHJpYnV0ZSgndmFsdWUnLCAnMjAnKTtcblxuICAgIG9wdGlvbjIudGV4dENvbnRlbnQgPSAnMjAnO1xuXG4gICAgc2VsZWN0LmFwcGVuZENoaWxkKG9wdGlvbjEpO1xuXG4gICAgc2VsZWN0LmFwcGVuZENoaWxkKG9wdGlvbjIpO1xuXG4gICAgc2VsZWN0LnZhbHVlID0gJzIwJztcblxuICAgIHNlbGVjdC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnd2hpdGUnO1xuXG4gICAgc2VsZWN0LnN0eWxlLmNvbG9yID0gJ2dyYXknO1xuXG4gICAgc2VsZWN0LnN0eWxlLnBhZGRpbmcgPSAnMnB4JztcblxuICAgIHNlbGVjdC5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkIGdyYXknO1xuXG4gICAgc2VsZWN0LnN0eWxlLmJvcmRlclJhZGl1cyA9ICc0cHgnO1xuXG4gICAgcGFnaW5nUGFuZWwuYXBwZW5kQ2hpbGQoc2VsZWN0KTtcbiAgfVxuXG4gIHByaXZhdGUgaGVhZGVySGVpZ2h0U2V0dGVyKCkge1xuICAgIGNvbnN0IHBhZGRpbmcgPSAyMDtcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmhlYWRlckhlaWdodEdldHRlcigpICsgcGFkZGluZztcbiAgICB0aGlzLmdyaWRBcGkuc2V0SGVhZGVySGVpZ2h0KGhlaWdodCk7XG4gIH1cblxuICBwcml2YXRlIGhlYWRlckhlaWdodEdldHRlcigpIHtcbiAgICBjb25zdCBjb2x1bW5IZWFkZXJUZXh0cyA9IFtcbiAgICAgIC4uLihkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYWctaGVhZGVyLWNlbGwtdGV4dCcpIGFzIGFueSksXG4gICAgXTtcblxuICAgIGNvbnN0IGNsaWVudEhlaWdodHMgPSBjb2x1bW5IZWFkZXJUZXh0cy5tYXAoXG4gICAgICAoaGVhZGVyVGV4dCkgPT4gaGVhZGVyVGV4dC5jbGllbnRIZWlnaHRcbiAgICApO1xuICAgIGNvbnN0IHRhbGxlc3RIZWFkZXJUZXh0SGVpZ2h0ID0gTWF0aC5tYXgoLi4uY2xpZW50SGVpZ2h0cyk7XG5cbiAgICByZXR1cm4gdGFsbGVzdEhlYWRlclRleHRIZWlnaHQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC1ncmlkLXRvb2xiYXJcIiAqbmdJZj1cInRvb2xiYXJcIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtdG9vbGJhclwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuPCEtLSBbZW5hYmxlU29ydGluZ109XCJ0cnVlXCIgIFtlbmFibGVDb2xSZXNpemVdPVwidHJ1ZVwiIFtlbmFibGVGaWx0ZXJdPVwiYWxsb3dGaWx0ZXJpbmdcIiAgLS0+XG5cbjxhZy1ncmlkLWFuZ3VsYXJcbiAgKm5nSWY9XCJncmlkVmlld1wiXG4gIGNsYXNzPVwiYWctdGhlbWUtYmFsaGFtXCJcbiAgW2dldFJvd0NsYXNzXT1cImludGVybmFsR2V0Um93Q2xhc3NcIlxuICBbc3VwcHJlc3NDb3B5Um93c1RvQ2xpcGJvYXJkXT1cInRydWVcIlxuICBbZW5hYmxlUmFuZ2VTZWxlY3Rpb25dPVwiZW5hYmxlUmFuZ2VTZWxlY3Rpb25cIlxuICBbc2VydmVyU2lkZVN0b3JlVHlwZV09XCIncGFydGlhbCdcIlxuICBbc3R5bGUuaGVpZ2h0XT1cImludGVybmFsSGVpZ2h0XCJcbiAgW2NvbHVtbkRlZnNdPVwiY29sdW1uRGVmc1wiXG4gIFtlbmFibGVSdGxdPVwicnRsXCJcbiAgW3BhZ2luYXRpb25dPVwicGFnaW5hdGlvblwiXG4gIFtyb3dHcm91cFBhbmVsU2hvd109XCJyb3dHcm91cFBhbmVsU2hvd1wiXG4gIFtyb3dNb2RlbFR5cGVdPVwicm93TW9kZWxUeXBlXCJcbiAgW2RldGFpbFJvd0hlaWdodF09XCJkZXRhaWxSb3dIZWlnaHRcIlxuICBbcGFnaW5hdGlvbkF1dG9QYWdlU2l6ZV09XCJwYWdpbmF0aW9uQXV0b1BhZ2VTaXplXCJcbiAgW3BhZ2luYXRpb25QYWdlU2l6ZV09XCJwYWdpbmF0aW9uUGFnZVNpemVcIlxuICBbc3VwcHJlc3NNZW51SGlkZV09XCJ0cnVlXCJcbiAgW2ZyYW1ld29ya0NvbXBvbmVudHNdPVwiZnJhbWV3b3JrQ29tcG9uZW50c1wiXG4gIFtpc0Z1bGxXaWR0aENlbGxdPVwiaXNGdWxsV2lkdGhDZWxsXCJcbiAgW3Jvd1NlbGVjdGlvbl09XCJzZWxlY3Rpb25Nb2RlXCJcbiAgW3Jvd011bHRpU2VsZWN0V2l0aENsaWNrXT1cInJvd011bHRpU2VsZWN0V2l0aENsaWNrXCJcbiAgW2Z1bGxXaWR0aENlbGxSZW5kZXJlckZyYW1ld29ya109XCJmdWxsV2lkdGhDZWxsUmVuZGVyZXJGcmFtZXdvcmtcIlxuICBbY2FjaGVCbG9ja1NpemVdPVwiY2FjaGVCbG9ja1NpemVcIlxuICBbZnVsbFdpZHRoQ2VsbFJlbmRlcmVyUGFyYW1zXT1cImZ1bGxXaWR0aENlbGxSZW5kZXJlclBhcmFtc1wiXG4gIChjb2x1bW5SZXNpemVkKT1cImhhbmRsZUNvbHVtblJlc2l6ZWQoJGV2ZW50KVwiXG4gIChjZWxsQ2xpY2tlZCk9XCJpbnRlcm5hbEdyaWRDZWxsQ2xpY2tlZCgkZXZlbnQpXCJcbiAgKGNlbGxEb3VibGVDbGlja2VkKT1cImludGVybmFsR3JpZENlbGxEb3VibGVDbGlja2VkKCRldmVudClcIlxuICAoY2VsbEZvY3VzZWQpPVwiaW50ZXJuYWxHcmlkQ2VsbEZvY3VzZWQoJGV2ZW50KVwiXG4gIChyb3dDbGlja2VkKT1cImludGVybmFsR3JpZFJvd0NsaWNrZWQoJGV2ZW50KVwiXG4gIChzZWxlY3Rpb25DaGFuZ2VkKT1cImludGVybmFsR3JpZFNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXG4gIChyb3dTZWxlY3RlZCk9XCJyb3dTZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxuICAocm93RG91YmxlQ2xpY2tlZCk9XCJpbnRlcm5hbEdyaWRSb3dEb3VibGVDbGlja2VkKCRldmVudClcIlxuICAoZ3JpZFJlYWR5KT1cImludGVybmFsR3JpZFJlYWR5KCRldmVudClcIlxuICBbZ3JvdXBTZWxlY3RzQ2hpbGRyZW5dPVwiZ3JvdXBTZWxlY3RzQ2hpbGRyZW5cIlxuICBbc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbl09XCJzdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uXCJcbiAgW2dyb3VwU2VsZWN0c0ZpbHRlcmVkXT1cInRydWVcIlxuICBbc3VwcHJlc3NDZWxsU2VsZWN0aW9uXT1cInN1cHByZXNzQ2VsbFNlbGVjdGlvblwiXG4gIFthdXRvR3JvdXBDb2x1bW5EZWZdPVwiYXV0b0dyb3VwQ29sdW1uRGVmXCJcbiAgW3N1cHByZXNzQWdnRnVuY0luSGVhZGVyXT1cInRydWVcIlxuICBbdHJlZURhdGFdPVwidHJlZURhdGFcIlxuICBbYW5pbWF0ZVJvd3NdPVwidHJ1ZVwiXG4gIFtpc1NlcnZlclNpZGVHcm91cF09XCJpc1NlcnZlclNpZGVHcm91cFwiXG4gIFtnZXRTZXJ2ZXJTaWRlR3JvdXBLZXldPVwiZ2V0U2VydmVyU2lkZUdyb3VwS2V5XCJcbiAgW21hc3RlckRldGFpbF09XCJtYXN0ZXJEZXRhaWxcIlxuICBbZGV0YWlsQ2VsbFJlbmRlcmVyUGFyYW1zXT1cImRldGFpbENlbGxSZW5kZXJlclBhcmFtc1wiXG4gIFtkZXRhaWxDZWxsUmVuZGVyZXJdPVwiZGV0YWlsQ2VsbFJlbmRlcmVyXCJcbiAgKGdyaWRTaXplQ2hhbmdlZCk9XCJpbnRlcm5hbEdyaWRTaXplQ2hhbmdlZCgkZXZlbnQpXCJcbiAgKGZpcnN0RGF0YVJlbmRlcmVkKT1cImludGVybmFsR3JpZEZpcnN0RGF0YVJlbmRlcmVkKCRldmVudClcIlxuICBbbG9jYWxlVGV4dF09XCJsb2NhbGVUZXh0XCJcbiAgW2dyb3VwSGlkZU9wZW5QYXJlbnRzXT1cImdyb3VwSGlkZU9wZW5QYXJlbnRzXCJcbiAgW2FsbG93Q29udGV4dE1lbnVXaXRoQ29udHJvbEtleV09XCJmYWxzZVwiXG4gIFtnZXRNYWluTWVudUl0ZW1zXT1cImdldE1haW5NZW51SXRlbXNcIlxuPlxuPC9hZy1ncmlkLWFuZ3VsYXI+XG5cbjwhLS0gKGRpc3BsYXllZENvbHVtbnNDaGFuZ2VkKT1cImRpc3BsYXllZENvbHVtbnNDaGFuZ2VkKCRldmVudClcIiAgLS0+XG4iXX0=
743
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWdyaWQvc3JjL2xpYi9kYXRhLWdyaWQvZGF0YWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWdyaWQvc3JjL2xpYi9kYXRhLWdyaWQvZGF0YWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHFCQUFxQixHQUV0QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQVd2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBUXBELE9BQU8sRUFDTCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixZQUFZLEdBQ2IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7OztBQUVwRixjQUFjLENBQUMsU0FBUyxDQUFDLGtCQUFrQixHQUFHLEdBQUcsRUFBRTtJQUNqRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztB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QkFJTixXQUFXO3NCQURWLFlBQVk7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl4RCxPQUFPO3NCQUROLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlsRCxXQUFXO3NCQURWLFlBQVk7dUJBQUMsOEJBQThCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUk5RCxrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsaUNBQWlDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl6RCxrQkFBa0I7c0JBRHpCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQU0xQyxVQUFVO3NCQURwQixLQUFLO2dCQVVOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFJTixTQUFTO3NCQURSLE1BQU07Z0JBS1AsV0FBVztzQkFEVixNQUFNO2dCQUtQLFVBQVU7c0JBRFQsTUFBTTtnQkFLUCxRQUFRO3NCQURQLE1BQU07Z0JBS1AsVUFBVTtzQkFEVCxNQUFNO2dCQUtQLGdCQUFnQjtzQkFEZixNQUFNO2dCQUtQLGtCQUFrQjtzQkFEakIsTUFBTTtnQkFLUCxxQkFBcUI7c0JBRHBCLE1BQU07Z0JBS1AsUUFBUTtzQkFEUCxLQUFLO2dCQU1OLEdBQUc7c0JBREYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYRGF0YVNvdXJjZUNvbXBvbmVudCxcbiAgQVhEYXRhU291cmNlUmVhZFBhcmFtcyxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDZWxsQ2xpY2tlZEV2ZW50LFxuICBDZWxsRXZlbnQsXG4gIEZpcnN0RGF0YVJlbmRlcmVkRXZlbnQsXG4gIEdyaWRBcGksXG4gIEdyaWRPcHRpb25zLFxuICBHcmlkU2l6ZUNoYW5nZWRFdmVudCxcbiAgUm93Q2xpY2tlZEV2ZW50LFxuICBSb3dFdmVudCxcbn0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgQVhHcmlkRGF0YUNvbHVtbiB9IGZyb20gJy4vY29sdW1ucy9jb2x1bW4uY29tcG9uZW50JztcblxuaW1wb3J0IHsgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpY2Vuc2VNYW5hZ2VyIH0gZnJvbSAnYWctZ3JpZC1lbnRlcnByaXNlJztcbmltcG9ydCB7XG4gIEFYR3JpZENlbGxFdmVudCxcbiAgQVhHcmlkUm93RXZlbnQsXG4gIEFYR3JpZFJvd1BhcmFtcyxcbiAgQVhHcmlkUm93U2VsZWN0aW9uRXZlbnQsXG59IGZyb20gJy4vZGF0YWdyaWQuZXZlbnRzJztcblxuaW1wb3J0IHtcbiAgQVhEYXRhRXZlbnQsXG4gIEFYVG9vbGJhckNvbXBvbmVudCxcbiAgQVhUb29sYmFyU2VhcmNoQ29tcG9uZW50LFxuICBBWFZhbHVlRXZlbnQsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBWENvbmZpZywgQVhUcmFuc2xhdG9yIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcbmltcG9ydCB7IEFYRGF0ZVBpY2tlckZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4vY29sdW1ucy9kYXRlLWNvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhEYXRhR3JpZERldGFpbFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi90ZW1wbGF0ZXMvZGV0YWlsLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWERhdGFHcmlkUm93VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL3RlbXBsYXRlcy9yb3ctdGVtcGxhdGUuY29tcG9uZW50JztcblxuTGljZW5zZU1hbmFnZXIucHJvdG90eXBlLmlzRGlzcGxheVdhdGVybWFyayA9ICgpID0+IHtcbiAgcmV0dXJuIGZhbHNlO1xufTtcbkxpY2Vuc2VNYW5hZ2VyLnByb3RvdHlwZS52YWxpZGF0ZUxpY2Vuc2UgPSBmdW5jdGlvbiAoKSB7XG4gIC8vY29uc29sZS5pbmZvKCdDcmFja2VkIGJ5IEFyYXNoIE9zaG5vdWRpIScpO1xufTtcblxuLy8gV2F0ZXJtYXJrQ29tcC5wcm90b3R5cGUuc2hvdWxkRGlzcGxheVdhdGVybWFyayA9IGZ1bmN0aW9uICgpIHtcbi8vICAgcmV0dXJuIGZhbHNlO1xuLy8gfVxuXG5leHBvcnQgY2xhc3MgQVhEYXRhR3JpZENvbHVtbnNDaGFuZ2VFdmVudCBleHRlbmRzIEFYVmFsdWVFdmVudDxcbiAgQVhHcmlkRGF0YUNvbHVtbltdXG4+IHtcbiAgZGVjbGFyZSBjb21wb25lbnQ6IEFYRGF0YUdyaWRDb21wb25lbnQ7XG59XG5leHBvcnQgY2xhc3MgQVhEYXRhR3JpZENlbGxFdmVudCBleHRlbmRzIEFYRGF0YUV2ZW50PEFYR3JpZENlbGxFdmVudD4ge1xuICBkZWNsYXJlIGNvbXBvbmVudDogQVhEYXRhR3JpZENvbXBvbmVudDtcbn1cbmV4cG9ydCBjbGFzcyBBWERhYWdyaWRSb3dDbGlja0V2ZW50IGV4dGVuZHMgQVhEYXRhRXZlbnQ8QVhHcmlkUm93RXZlbnQ+IHtcbiAgZGVjbGFyZSBjb21wb25lbnQ6IEFYRGF0YUdyaWRDb21wb25lbnQ7XG59XG5cbmV4cG9ydCBjbGFzcyBBWERhdGFHcmlkU2VsZWN0aW9uQ2hhbmdlRXZlbnQgZXh0ZW5kcyBBWERhdGFFdmVudDxBWEdyaWRSb3dTZWxlY3Rpb25FdmVudD4ge1xuICBkZWNsYXJlIGNvbXBvbmVudDogQVhEYXRhR3JpZENvbXBvbmVudDtcbn1cblxuZXhwb3J0IGNsYXNzIEFYRGF0YUdyaWRSb3dTZWxlY3Rpb25DaGFuZ2VFdmVudCBleHRlbmRzIEFYRGF0YUV2ZW50PGFueT4ge1xuICBkZWNsYXJlIGNvbXBvbmVudDogQVhEYXRhR3JpZENvbXBvbmVudDtcbiAgZGVjbGFyZSBzZWxlY3RlZDogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtZGF0YS1ncmlkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGFncmlkLmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgLy8gY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQVhEYXRhR3JpZENvbXBvbmVudCB7XG4gIHByaXZhdGUgZ3JpZEFwaTtcbiAgcHJpdmF0ZSBkYXRhU291cmNlU3VjY2Vzc0NhbGxiYWNrO1xuICBsb2NhbGVUZXh0OiBhbnk7XG5cbiAgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zO1xuICBjb2x1bW5EZWZzOiBhbnlbXSA9IFtdO1xuICByb3dNb2RlbFR5cGUgPSAnY2xpZW50U2lkZSc7XG4gIGZ1bGxXaWR0aENlbGxSZW5kZXJlckZyYW1ld29yazogYW55O1xuICBmdWxsV2lkdGhDZWxsUmVuZGVyZXJQYXJhbXM6IGFueTtcbiAgZnJhbWV3b3JrQ29tcG9uZW50czogYW55ID0ge307XG4gIGlzRnVsbFdpZHRoQ2VsbDogRnVuY3Rpb247XG4gIGludGVybmFsSGVpZ2h0ID0gJzEwMCUnO1xuICBkZXRhaWxDZWxsUmVuZGVyZXI6IGFueTtcbiAgZGV0YWlsQ2VsbFJlbmRlcmVyUGFyYW1zOiBhbnk7XG4gIGRldGFpbFJvd0hlaWdodDogbnVtYmVyO1xuICBtYXN0ZXJEZXRhaWwgPSBmYWxzZTtcbiAgdHJlZURhdGEgPSBmYWxzZTtcbiAgZW5hYmVsU2VsZWN0ID0gZmFsc2U7XG4gIGdyaWRWaWV3ID0gZmFsc2U7XG4gIGdyb3VwU2VsZWN0c0NoaWxkcmVuID0gZmFsc2U7XG4gIG9sZFNlbGVjdGlvbk5vZGVzOiBhbnlbXSA9IFtdO1xuICAvLyBASW5wdXQoKVxuICAvLyBzaG93Um93TnVtYmVyOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KClcbiAgcGFnaW5hdGlvbkF1dG9QYWdlU2l6ZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHBhZ2luYXRpb25QYWdlU2l6ZSA9IDIwO1xuXG4gIGNhY2hlQmxvY2tTaXplID0gdGhpcy5wYWdpbmF0aW9uUGFnZVNpemU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlbW90ZU9wZXJhdGlvbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByb3dNdWx0aVNlbGVjdFdpdGhDbGljayA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHN1cHByZXNzQ2VsbFNlbGVjdGlvbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaXplQ29sdW1uc1RvRml0ID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBzaG93Q2hlY2tCb3ggPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGZsb2F0aW5nRmlsdGVyID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgYXV0b0V4cGFuZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHJvd1NlbGVjdGFibGVDb25kaXRpb25GaWVsZDogc3RyaW5nO1xuXG4gIC8vIEBJbnB1dCgpXG4gIC8vIHRha2VDb3VudDogbnVtYmVyO1xuXG4gIGF1dG9Hcm91cENvbHVtbkRlZjogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgc2VsZWN0aW9uTW9kZTogJ3NpbmdsZScgfCAnbXVsdGlwbGUnID0gJ3NpbmdsZSc7XG5cbiAgLy8gQElucHV0KClcbiAgLy8gYWxsb3dGaWx0ZXJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwYWdpbmF0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBzZWxlY3RSb3c6IGFueVtdID0gW107XG5cbiAgQElucHV0KClcbiAgcm93R3JvdXBQYW5lbFNob3c6ICdhbHdheXMnIHwgJ25ldmVyJyA9ICduZXZlcic7XG5cbiAgQElucHV0KClcbiAgbG9hZE9uSW5pdDogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgZW5hYmxlUmFuZ2VTZWxlY3Rpb24gPSBmYWxzZTtcblxuICAvLyBASW5wdXQoKVxuICAvLyBncm91cERlZmF1bHRFeHBhbmRlZDogbnVtYmVyID0gMDtcblxuICBASW5wdXQoKVxuICBrZXlGaWVsZDogc3RyaW5nID0gJ251bGwnO1xuXG4gIEBJbnB1dCgpXG4gIGhhc0NoaWxkRmllbGQ6IHN0cmluZyA9ICdudWxsJztcblxuICBwcml2YXRlIF9zZWFyY2hUZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgc2VhcmNoVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hUZXh0O1xuICB9XG4gIHB1YmxpYyBzZXQgc2VhcmNoVGV4dCh2OiBzdHJpbmcpIHtcbiAgICBpZiAodiAhPT0gdGhpcy5fc2VhcmNoVGV4dCkge1xuICAgICAgdGhpcy5fc2VhcmNoVGV4dCA9IHY7XG4gICAgICBpZiAodGhpcy5ncmlkQXBpKSB7XG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgICAgICB0aGlzLmdyaWRBcGkuc2V0UXVpY2tGaWx0ZXIodGhpcy5zZWFyY2hUZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9maWx0ZXI6IGFueVtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGZpbHRlcigpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcjtcbiAgfVxuICBwdWJsaWMgc2V0IGZpbHRlcih2OiBhbnlbXSkge1xuICAgIGlmICh2ICE9PSB0aGlzLl9maWx0ZXIpIHtcbiAgICAgIHRoaXMuX2ZpbHRlciA9IHY7XG4gICAgICB0aGlzLl9maWx0ZXIuZm9yRWFjaCgoZikgPT4ge1xuICAgICAgICBjb25zdCBmYyA9IHRoaXMuZ3JpZEFwaS5nZXRGaWx0ZXJJbnN0YW5jZShmLmZpZWxkKTtcbiAgICAgICAgaWYgKGZjKSB7XG4gICAgICAgICAgY29uc3QgZmYgPSBmYy5nZXRGcmFtZXdvcmtDb21wb25lbnRJbnN0YW5jZSgpO1xuICAgICAgICAgIGZmLnNldE1vZGVsKGYpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBAQ29udGVudENoaWxkcmVuKEFYR3JpZERhdGFDb2x1bW4pXG4gIHByaXZhdGUgX2lubGluZUNvbHVtbnM6IFF1ZXJ5TGlzdDxBWEdyaWREYXRhQ29sdW1uPjtcblxuICBAT3V0cHV0KClcbiAgY29sdW1uc0NoYW5nZTogRXZlbnRFbWl0dGVyPEFYRGF0YUdyaWRDb2x1bW5zQ2hhbmdlRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEFYRGF0YUdyaWRDb2x1bW5zQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSBfY29sdW1uczogQVhHcmlkRGF0YUNvbHVtbltdID0gW107XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgY29sdW1ucygpOiBBWEdyaWREYXRhQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLl9pbmxpbmVDb2x1bW5zXG4gICAgICA/IFsuLi50aGlzLl9jb2x1bW5zLCAuLi50aGlzLl9pbmxpbmVDb2x1bW5zLnRvQXJyYXkoKV1cbiAgICAgIDogdGhpcy5fY29sdW1ucztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgY29sdW1ucyh2YWw6IEFYR3JpZERhdGFDb2x1bW5bXSkge1xuICAgIGlmICh2YWwgJiYgdmFsLmxlbmd0aCkge1xuICAgICAgbGV0IG9sZCA9IHRoaXMuX2NvbHVtbnM7XG4gICAgICB0aGlzLl9jb2x1bW5zID0gdmFsO1xuICAgICAgdGhpcy5jb2x1bW5zQ2hhbmdlLmVtaXQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIHZhbHVlOiB2YWwsXG4gICAgICAgIG9sZFZhbHVlOiBvbGQsXG4gICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZGVmYXVsdENvbERlZjogYW55ID0ge1xuICAgIGZpbHRlcjogdHJ1ZSxcbiAgICBmbG9hdGluZ0ZpbHRlcjogdHJ1ZSxcbiAgfTtcblxuICBASW5wdXQoKVxuICByb3dIZWlnaHQ6IGFueTtcblxuICBAQ29udGVudENoaWxkKEFYVG9vbGJhclNlYXJjaENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgc2VhcmNoSW5wdXQ6IEFYVG9vbGJhclNlYXJjaENvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkKEFYVG9vbGJhckNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgdG9vbGJhcjogQVhUb29sYmFyQ29tcG9uZW50O1xuXG4gIEBDb250ZW50Q2hpbGQoQVhEYXRhR3JpZFJvd1RlbXBsYXRlQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICByb3dUZW1wbGF0ZTogQVhEYXRhR3JpZFJvd1RlbXBsYXRlQ29tcG9uZW50O1xuXG4gIEBDb250ZW50Q2hpbGQoQVhEYXRhR3JpZERldGFpbFRlbXBsYXRlQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBncmlkRGV0YWlsVGVtcGxhdGU6IEFYRGF0YUdyaWREZXRhaWxUZW1wbGF0ZUNvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkKEFYRGF0YVNvdXJjZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSBfY29udGVudERhdGFTb3VyY2U6IEFYRGF0YVNvdXJjZUNvbXBvbmVudDtcblxuICBwcml2YXRlIF9kYXRhU291cmNlOiBBWERhdGFTb3VyY2VDb21wb25lbnQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBkYXRhU291cmNlKCk6IEFYRGF0YVNvdXJjZUNvbXBvbmVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2UgPyB0aGlzLl9kYXRhU291cmNlIDogdGhpcy5fY29udGVudERhdGFTb3VyY2U7XG4gIH1cblxuICBwdWJsaWMgc2V0IGRhdGFTb3VyY2UodjogQVhEYXRhU291cmNlQ29tcG9uZW50KSB7XG4gICAgdGhpcy5fZGF0YVNvdXJjZSA9IHY7XG4gIH1cblxuICBASW5wdXQoKVxuICBncm91cEhpZGVPcGVuUGFyZW50czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKVxuICBjZWxsQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkQ2VsbEV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkQ2VsbEV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBjZWxsRGJDbGljazogRXZlbnRFbWl0dGVyPEFYRGF0YUdyaWRDZWxsRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEFYRGF0YUdyaWRDZWxsRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGNlbGxGb2N1c2U6IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkQ2VsbEV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkQ2VsbEV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICByb3dDbGljazogRXZlbnRFbWl0dGVyPEFYRGFhZ3JpZFJvd0NsaWNrRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEFYRGFhZ3JpZFJvd0NsaWNrRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHJvd0RiQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWERhYWdyaWRSb3dDbGlja0V2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWERhYWdyaWRSb3dDbGlja0V2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBzZWxlY3Rpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhEYXRhR3JpZFNlbGVjdGlvbkNoYW5nZUV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkU2VsZWN0aW9uQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHJvd1NlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEFYRGF0YUdyaWRTZWxlY3Rpb25DaGFuZ2VFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhR3JpZFNlbGVjdGlvbkNoYW5nZUV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblJvd1NlbGVjdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkUm93U2VsZWN0aW9uQ2hhbmdlRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEFYRGF0YUdyaWRSb3dTZWxlY3Rpb25DaGFuZ2VFdmVudD4oKTtcblxuICBASW5wdXQoKVxuICByb3dDbGFzcz86IChcbiAgICBwYXJhbXM6IEFYR3JpZFJvd1BhcmFtc1xuICApID0+IChzdHJpbmcgfCBzdHJpbmdbXSkgfCAoc3RyaW5nIHwgc3RyaW5nW10pO1xuXG4gIEBJbnB1dCgpXG4gIHJ0bDogYm9vbGVhbiA9IEFYQ29uZmlnLmdldCgnbGF5b3V0LnJ0bCcpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy5sb2NhbGVUZXh0ID0gQVhUcmFuc2xhdG9yLmdldCgnZGF0YUdyaWQnKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY0hlaWdodCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50b29sYmFyKSB7XG4gICAgICB0aGlzLmludGVybmFsSGVpZ2h0ID0gYGNhbGMoMTAwJSAtICR7NDB9cHgpYDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnRlcm5hbEhlaWdodCA9ICcxMDAlJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCBpbnRlbmFsR3JpZERhdGFTb3VyY2UoKSB7XG4gICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJvd0NvdW50OiBudWxsLFxuICAgICAgZ2V0Um93czogKHBhcmFtcykgPT4ge1xuICAgICAgICB0aGF0LmRhdGFTb3VyY2VTdWNjZXNzQ2FsbGJhY2sgPSBwYXJhbXMuc3VjY2Vzc0NhbGxiYWNrO1xuXG4gICAgICAgIGNvbnN0IGxvYWRQYXJhbXM6IEFYRGF0YVNvdXJjZVJlYWRQYXJhbXMgPSB7fTtcblxuICAgICAgICBsb2FkUGFyYW1zLnNlYXJjaFRleHQgPSB0aGF0LnNlYXJjaFRleHQ7XG5cbiAgICAgICAgbG9hZFBhcmFtcy5za2lwID0gcGFyYW1zLnJlcXVlc3Quc3RhcnRSb3c7XG5cbiAgICAgICAgbG9hZFBhcmFtcy50YWtlID0gcGFyYW1zLnJlcXVlc3QuZW5kUm93IC0gcGFyYW1zLnJlcXVlc3Quc3RhcnRSb3c7XG5cbiAgICAgICAgbG9hZFBhcmFtcy5zb3J0ID0gcGFyYW1zLnJlcXVlc3Quc29ydE1vZGVsLm1hcCgoYykgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaWVsZDogYy5jb2xJZCxcbiAgICAgICAgICAgIGRpcjogYy5zb3J0LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxvYWRQYXJhbXMuZ3JvdXAgPSB7XG4gICAgICAgICAgZmllbGRzOiBwYXJhbXMucmVxdWVzdC5yb3dHcm91cENvbHMubWFwKChyKSA9PiByLmZpZWxkKSxcbiAgICAgICAgICBrZXlzOiBwYXJhbXMucmVxdWVzdC5ncm91cEtleXMsXG4gICAgICAgICAgcGFyZW50RGF0YTogcGFyYW1zLnBhcmVudE5vZGUuZGF0YSxcbiAgICAgICAgfTtcblxuICAgICAgICBsb2FkUGFyYW1zLmZpbHRlciA9IHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsO1xuXG4gICAgICAgIHRoYXQuZGF0YVNvdXJjZS5mZXRjaChsb2FkUGFyYW1zKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuICBnZXRNYWluTWVudUl0ZW1zKGUpIHtcbiAgICByZXR1cm4gWydwaW5TdWJNZW51JywgJ3NlcGFyYXRvciddO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5ncmlkQXBpLmRlc3Ryb3koKTtcbiAgfVxuXG4gIGlzU2VydmVyU2lkZUdyb3VwID0gKGUpID0+IHtcbiAgICByZXR1cm4gZVt0aGlzLmhhc0NoaWxkRmllbGRdO1xuICB9O1xuXG4gIGdldENvbHVtbkRlZnMgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZEFwaS5nZXRDb2x1bW5EZWZzKCk7XG4gIH07XG5cbiAgZ2V0Q3VycmVudFBhZ2VOdW1iZXIgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN1cnJlbnQ6IHRoaXMuZ3JpZEFwaS5wYWdpbmF0aW9uR2V0Q3VycmVudFBhZ2UoKSArIDEsXG4gICAgICB0b3RhbDogdGhpcy5ncmlkQXBpLnBhZ2luYXRpb25HZXRUb3RhbFBhZ2VzKCksXG4gICAgfTtcbiAgfTtcblxuICBwYWdpbmF0aW9uR29Ub1BhZ2UobnVtYmVyKSB7XG4gICAgdGhpcy5ncmlkQXBpLnBhZ2luYXRpb25Hb1RvUGFnZShudW1iZXIgLSAxKTtcbiAgfVxuXG4gIGdldFNlcnZlclNpZGVHcm91cEtleSA9IChlKSA9PiB7XG4gICAgcmV0dXJuIGVbdGhpcy5rZXlGaWVsZF07XG4gIH07XG4gIGludGVybmFsR3JpZFJlYWR5KGdyaWRPcHRpb25zKSB7XG4gICAgaWYgKHRoaXMucmVtb3RlT3BlcmF0aW9uICYmICF0aGlzLnBhZ2luYXRpb25BdXRvUGFnZVNpemUpIHtcbiAgICAgIHRoaXMuaGFuZGxlUGFnZVNpemUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYWNoZUJsb2NrU2l6ZSA9XG4gICAgICAgIHRoaXMucGFnaW5hdGlvblBhZ2VTaXplID4gMjAgPyB0aGlzLnBhZ2luYXRpb25QYWdlU2l6ZSA6IDEwMDtcbiAgICB9XG5cbiAgICB0aGlzLmdyaWRBcGkgPSBncmlkT3B0aW9ucy5hcGk7XG5cbiAgICB0aGlzLm1hcENvbHVtbnMoKTtcbiAgICB0aGlzLmNhbGNIZWlnaHQoKTtcblxuICAgIGlmICghdGhpcy5sb2FkT25Jbml0KSB7XG4gICAgICB0aGlzLmxvYWRPbkluaXQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlbW90ZU9wZXJhdGlvbikge1xuICAgICAgdGhpcy5ncmlkQXBpLnNldFNlcnZlclNpZGVEYXRhc291cmNlKHRoaXMuaW50ZW5hbEdyaWREYXRhU291cmNlKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucmVtb3RlT3BlcmF0aW9uKSB7XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgaWYgKHRoaXMucm93VGVtcGxhdGUpIHtcbiAgICAgIHRoaXMuZnVsbFdpZHRoQ2VsbFJlbmRlcmVyRnJhbWV3b3JrID0gdGhpcy5yb3dUZW1wbGF0ZS5yZW5kZXJlcjtcbiAgICAgIHRoaXMuZnVsbFdpZHRoQ2VsbFJlbmRlcmVyUGFyYW1zID0gdGhpcy5yb3dUZW1wbGF0ZS5wYXJhbXM7XG4gICAgfVxuICAgIHRoaXMuZnJhbWV3b3JrQ29tcG9uZW50cy5hZ0RhdGVJbnB1dCA9IEFYRGF0ZVBpY2tlckZpbHRlckNvbXBvbmVudDtcblxuICAgIGlmICh0aGlzLmdyaWREZXRhaWxUZW1wbGF0ZSkge1xuICAgICAgdGhpcy5tYXN0ZXJEZXRhaWwgPSB0cnVlO1xuICAgICAgdGhpcy5kZXRhaWxDZWxsUmVuZGVyZXJQYXJhbXMgPSB0aGlzLmdyaWREZXRhaWxUZW1wbGF0ZS5wYXJhbXM7XG4gICAgICB0aGlzLmRldGFpbENlbGxSZW5kZXJlciA9ICdkZXRhaWxSZW5kZXJlckZyYW1ld29yayc7XG4gICAgICB0aGlzLmZyYW1ld29ya0NvbXBvbmVudHMuZGV0YWlsUmVuZGVyZXJGcmFtZXdvcmsgPVxuICAgICAgICB0aGlzLmdyaWREZXRhaWxUZW1wbGF0ZS5yZW5kZXJlcjtcblxuICAgICAgdGhpcy5kZXRhaWxSb3dIZWlnaHQgPSB0aGlzLmdyaWREZXRhaWxUZW1wbGF0ZS5oZWlnaHQ7XG4gICAgfVxuICAgIHRoaXMuaXNGdWxsV2lkdGhDZWxsID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoYXQucm93VGVtcGxhdGUgIT0gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIHRoaXMuZ3JvdXBTZWxlY3RzQ2hpbGRyZW4gPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMua2V5RmllbGQgIT09ICdudWxsJyAmJiB0aGlzLmhhc0NoaWxkRmllbGQgIT09ICdudWxsJykge1xuICAgICAgdGhpcy5yb3dHcm91cFBhbmVsU2hvdyA9ICduZXZlcic7XG4gICAgICB0aGlzLnRyZWVEYXRhID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMucmVtb3RlT3BlcmF0aW9uKSB7XG4gICAgICB0aGlzLnJvd01vZGVsVHlwZSA9ICdzZXJ2ZXJTaWRlJztcbiAgICB9XG4gICAgLy9cbiAgICBpZiAodGhpcy5ydGwgPT0gbnVsbCkge1xuICAgICAgdGhpcy5ydGwgPVxuICAgICAgICB3aW5kb3dcbiAgICAgICAgICAuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnJlZi5uYXRpdmVFbGVtZW50LCBudWxsKVxuICAgICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKCdkaXJlY3Rpb24nKSA9PT0gJ3J0bCc7XG4gICAgfVxuICAgIC8vXG4gIH1cblxuICBncmlkU2VsZWN0Um93KCkge1xuICAgIGlmICh0aGlzLmdyaWRBcGkpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5zZWxlY3RSb3cgJiZcbiAgICAgICAgdGhpcy5zZWxlY3RSb3cubGVuZ3RoID4gMCAmJlxuICAgICAgICB0aGlzLmdyaWRBcGkgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICB0eXBlb2YgdGhpcy5zZWxlY3RSb3dbMF0gIT0gJ29iamVjdCdcbiAgICAgICkge1xuICAgICAgICB0aGlzLmdyaWRBcGkuZm9yRWFjaE5vZGUoKG5vZGUpID0+IHtcbiAgICAgICAgICBpZiAobm9kZS5kYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0Um93LmZvckVhY2goKGlkKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChub2RlLmRhdGFbdGhpcy5rZXlGaWVsZF0gPT09IGlkKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBub2RlLnNldFNlbGVjdGVkKHNlbGVjdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmdyaWRBcGkuZm9yRWFjaE5vZGUoKG5vZGUpID0+IHtcbiAgICAgICAgICBpZiAobm9kZS5kYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdFJvdy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RSb3cuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnJvd0luZGV4ICE9IHVuZGVmaW5lZCAmJiBpdGVtLnJvd0xldmVsICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgaWYgKG5vZGUuZGF0YVt0aGlzLmtleUZpZWxkXSA9PT0gaXRlbS5kYXRhW3RoaXMua2V5RmllbGRdKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5rZXlGaWVsZCAhPT0gJ251bGwnICYmXG4gICAgICAgICAgICAgICAgICAgIG5vZGUuZGF0YVt0aGlzLmtleUZpZWxkXSA9PT0gaXRlbVt0aGlzLmtleUZpZWxkXVxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnJvd1NlbGVjdGFibGVDb25kaXRpb25GaWVsZCkge1xuICAgICAgICAgICAgICBub2RlLnNldFJvd1NlbGVjdGFibGUoXG4gICAgICAgICAgICAgICAgbm9kZS5kYXRhW3RoaXMucm93U2VsZWN0YWJsZUNvbmRpdGlvbkZpZWxkXVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbm9kZS5zZXRTZWxlY3RlZChzZWxlY3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVidWlsZEdyaWQoKSB7XG4gICAgdGhpcy5tYXBDb2x1bW5zKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zaXplQ29sdW1uc1RvRml0KSB7XG4gICAgICAgIHRoaXMuZ3JpZEFwaS5zaXplQ29sdW1uc1RvRml0KCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRyZWVEYXRhID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmNvbHVtbkRlZnMgPSB0aGlzLmNvbHVtbnMubWFwKChjKSA9PiBjLnJlbmRlcigpKTtcblxuICAgICAgY29uc3QgZ3JvdXBDb2x1bW4gPSB0aGlzLmNvbHVtbkRlZnMuZmluZChcbiAgICAgICAgKGMpID0+IGMucm93R3JvdXBJbmRleCA9PSAnMCcgJiYgYy5maWVsZCAhPT0gJydcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuYXV0b0dyb3VwQ29sdW1uRGVmID0ge1xuICAgICAgICBoZWFkZXJOYW1lOiBncm91cENvbHVtbi5oZWFkZXJOYW1lLFxuICAgICAgICB3aWR0aDogZ3JvdXBDb2x1bW4ud2lkdGgsXG4gICAgICAgIGNlbGxSZW5kZXJlclBhcmFtczogeyBjaGVja2JveDogdGhpcy5zaG93Q2hlY2tCb3ggfSxcbiAgICAgICAgZmllbGQ6IGdyb3VwQ29sdW1uLmZpZWxkLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5jb2x1bW5EZWZzLmZvckVhY2goKGVsbSkgPT4ge1xuICAgICAgICBpZiAoZWxtLnJvd0dyb3VwSW5kZXggPiAtMSkge1xuICAgICAgICAgIGVsbS5oaWRlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuZ3JpZFZpZXcgPSB0cnVlO1xuXG4gICAgdGhpcy5lbmFiZWxTZWxlY3QgPSB0cnVlO1xuICAgIHRoaXMuZGF0YVNvdXJjZS5vbkRhdGFSZWNlaXZlZC5zdWJzY3JpYmUoKF9kYXRhKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBfZGF0YS5kYXRhLnJlc3VsdDtcbiAgICAgIHRoaXMuaGlkZUxvYWRpbmcoKTtcbiAgICAgIGxldCBpdGVtczogYW55W107XG4gICAgICBsZXQgdG90YWxDb3VudDogbnVtYmVyO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgICBpdGVtcyA9IHJlc3VsdDtcbiAgICAgICAgdG90YWxDb3VudCA9IHJlc3VsdC5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtcyA9IHJlc3VsdC5pdGVtcztcbiAgICAgICAgdG90YWxDb3VudCA9IHJlc3VsdC50b3RhbENvdW50O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZVN1Y2Nlc3NDYWxsYmFjaykge1xuICAgICAgICBpZiAoIXRoaXMubG9hZE9uSW5pdCkge1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZVN1Y2Nlc3NDYWxsYmFjayhbXSwgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlU3VjY2Vzc0NhbGxiYWNrKGl0ZW1zLCB0b3RhbENvdW50KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCF0aGlzLmxvYWRPbkluaXQgJiYgdGhpcy5ncmlkQXBpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmdyaWRBcGkuc2V0Um93RGF0YShbXSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5ncmlkQXBpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmdyaWRBcGkuc2V0Um93RGF0YShpdGVtcyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5ncmlkU2VsZWN0Um93KCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFTb3VyY2Uub25GZXRjaFN0YXJ0LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnNob3dMb2FkaW5nKCk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dCkge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5vblZhbHVlQ2hhbmdlZC5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gYy52YWx1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBtYXBDb2x1bW5zKCkge1xuICAgIHRoaXMuY29sdW1uRGVmcyA9IHRoaXMuY29sdW1ucy5tYXAoKGMpID0+IGMucmVuZGVyKCkpO1xuICAgIGlmICh0aGlzLmdyaWREZXRhaWxUZW1wbGF0ZSkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmNvbHVtbkRlZnNbMF0uY2hlY2tib3hTZWxlY3Rpb24gPT09IHRydWUgJiZcbiAgICAgICAgdGhpcy5jb2x1bW5EZWZzWzBdLmZpZWxkID09PSAnJ1xuICAgICAgKSB7XG4gICAgICAgIHRoaXMuY29sdW1uRGVmc1sxXS5jZWxsUmVuZGVyZXIgPSAnYWdHcm91cENlbGxSZW5kZXJlcic7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbkRlZnNbMF0uY2VsbFJlbmRlcmVyID0gJ2FnR3JvdXBDZWxsUmVuZGVyZXInO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0NoaWxkRmllbGQgPT09ICdudWxsJykge1xuICAgICAgY29uc3QgZ3JvdXBDb2x1bW4gPSB0aGlzLmNvbHVtbkRlZnMuZmluZChcbiAgICAgICAgKGMpID0+IGMucm93R3JvdXBJbmRleCA9PT0gdW5kZWZpbmVkICYmIGMuZmllbGQgIT09ICcnXG4gICAgICApO1xuICAgICAgaWYgKGdyb3VwQ29sdW1uICYmIHRoaXMuZ3JvdXBIaWRlT3BlblBhcmVudHMgPT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5hdXRvR3JvdXBDb2x1bW5EZWYgPSB7XG4gICAgICAgICAgaGVhZGVyTmFtZTogZ3JvdXBDb2x1bW4uaGVhZGVyTmFtZSxcbiAgICAgICAgICB3aWR0aDogZ3JvdXBDb2x1bW4ud2lkdGgsXG4gICAgICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7IGNoZWNrYm94OiB0aGlzLnNob3dDaGVja0JveCB9LFxuICAgICAgICAgIGZpZWxkOiBncm91cENvbHVtbi5maWVsZCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvbHVtbkRlZnMuZm9yRWFjaCgoZWxtKSA9PiB7XG4gICAgICBpZiAoZWxtLnJvd0dyb3VwSW5kZXggPiAtMSkge1xuICAgICAgICBlbG0uaGlkZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBkaXNwbGF5ZWRDb2x1bW5zQ2hhbmdlZChlKSB7XG4gICAgaWYgKHRoaXMuaGFzQ2hpbGRGaWVsZCA9PT0gJ251bGwnKSB7XG4gICAgICBjb25zdCBlZSA9IGUuY29sdW1uQXBpLmdldEFsbERpc3BsYXllZENvbHVtbkdyb3VwcygpO1xuICAgICAgY29uc3QgZWVlID0gZWUuZmluZChcbiAgICAgICAgKGMpID0+IGMuY29sSWQgIT09ICdhZy1HcmlkLUF1dG9Db2x1bW4nICYmIGMuY29sSWQgIT09ICcwJ1xuICAgICAgKTtcbiAgICAgIGlmIChlZWUgJiYgZWVlLmNvbElkKSB7XG4gICAgICAgIHRoaXMuYXV0b0dyb3VwQ29sdW1uRGVmID0ge1xuICAgICAgICAgIGhlYWRlck5hbWU6IGVlZS5jb2xEZWYuaGVhZGVyTmFtZSxcbiAgICAgICAgICB3aWR0aDogZWVlLmNvbERlZi53aWR0aCxcbiAgICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHsgY2hlY2tib3g6IHRoaXMuc2hvd0NoZWNrQm94IH0sXG4gICAgICAgICAgZmllbGQ6IGVlZS5jb2xEZWYuZmllbGQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVmcmVzaChyb3V0ZTogYW55W10gPSBbXSkge1xuICAgIGlmICh0aGlzLnJlbW90ZU9wZXJhdGlvbiAmJiB0aGlzLmdyaWRBcGkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gIHRoaXMuZ3JpZEFwaS5wdXJnZVNlcnZlclNpZGVDYWNoZShyb3V0ZSk7XG4gICAgICB0aGlzLmdyaWRBcGkuc2V0U2VydmVyU2lkZURhdGFzb3VyY2UodGhpcy5pbnRlbmFsR3JpZERhdGFTb3VyY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZmV0Y2gobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgaW50ZXJuYWxHcmlkQ2VsbENsaWNrZWQoZTogQ2VsbENsaWNrZWRFdmVudCkge1xuICAgIHRoaXMuY2VsbENsaWNrLmVtaXQoe1xuICAgICAgZGF0YTogdGhpcy5tYXBDZWxsRXZlbnQoZSksXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcbiAgICB9KTtcbiAgfVxuXG4gIGludGVybmFsR3JpZENlbGxEb3VibGVDbGlja2VkKGU6IENlbGxDbGlja2VkRXZlbnQpIHtcbiAgICB0aGlzLmNlbGxEYkNsaWNrLmVtaXQoe1xuICAgICAgZGF0YTogdGhpcy5tYXBDZWxsRXZlbnQoZSksXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcbiAgICB9KTtcbiAgfVxuXG4gIGludGVybmFsR3JpZENlbGxGb2N1c2VkKGU6IENlbGxDbGlja2VkRXZlbnQpIHtcbiAgICB0aGlzLmNlbGxGb2N1c2UuZW1pdCh7XG4gICAgICBkYXRhOiB0aGlzLm1hcENlbGxFdmVudChlKSxcbiAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgaW50ZXJuYWxHcmlkUm93Q2xpY2tlZChlOiBSb3dDbGlja2VkRXZlbnQpIHtcbiAgICBpZiAoIWUubm9kZS5ncm91cCkge1xuICAgICAgdGhpcy5yb3dDbGljay5lbWl0KHtcbiAgICAgICAgZGF0YTogdGhpcy5tYXBSb3dFdmVudChlKSxcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGludGVybmFsR3JpZFJvd0RvdWJsZUNsaWNrZWQoZTogQ2VsbENsaWNrZWRFdmVudCkge1xuICAgIGlmICghZS5ub2RlLmdyb3VwKSB7XG4gICAgICB0aGlzLnJvd0RiQ2xpY2suZW1pdCh7XG4gICAgICAgIGRhdGE6IHRoaXMubWFwUm93RXZlbnQoZSksXG4gICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBkaWZmZXJlbmNlT2YyQXJyYXlzKGFycmF5MTogYW55LCBhcnJheTI6IGFueSkge1xuICAgIGNvbnN0IHRlbXAgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGkgaW4gYXJyYXkxKSB7XG4gICAgICBpZiAoYXJyYXkyLmluZGV4T2YoYXJyYXkxW2ldKSA9PT0gLTEpIHtcbiAgICAgICAgdGVtcC5wdXNoKGFycmF5MVtpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgaSBpbiBhcnJheTIpIHtcbiAgICAgIGlmIChhcnJheTEuaW5kZXhPZihhcnJheTJbaV0pID09PSAtMSkge1xuICAgICAgICB0ZW1wLnB1c2goYXJyYXkyW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRlbXAuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICB9XG5cbiAgcm93U2VsZWN0aW9uQ2hhbmdlZChlKSB7XG4gICAgaWYgKGUubm9kZS5zZWxlY3RlZCA9PSB0cnVlKSB7XG4gICAgICB0aGlzLnNlbGVjdFJvdyA9IHRoaXMuc2VsZWN0Um93LmZpbHRlcihcbiAgICAgICAgKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT0gZS5kYXRhW3RoaXMua2V5RmllbGRdXG4gICAgICApO1xuICAgICAgdGhpcy5zZWxlY3RSb3cucHVzaChlLmRhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdFJvdyA9IHRoaXMuc2VsZWN0Um93LmZpbHRlcihcbiAgICAgICAgKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT0gZS5kYXRhW3RoaXMua2V5RmllbGRdXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnJvd1NlbGVjdGlvbkNoYW5nZS5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGRhdGE6IGUsXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcbiAgICB9KTtcbiAgfVxuXG4gIGludGVybmFsR3JpZFNlbGVjdGlvbkNoYW5nZWQoZSkge1xuICAgIGNvbnN0IGFyZ3M6IEFYR3JpZFJvd1NlbGVjdGlvbkV2ZW50ID0geyBpdGVtczogW10gfTtcbiAgICBjb25zdCBvbGROb2RlcyA9IHRoaXMub2xkU2VsZWN0aW9uTm9kZXM7XG4gICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdyaWRBcGkuZ2V0U2VsZWN0ZWROb2RlcygpO1xuXG4gICAgaWYgKHRoaXMuYXV0b0V4cGFuZCkge1xuICAgICAgY29uc3QgdW5zZWxlY3RlZE5vZGVzID0gb2xkTm9kZXMuZmlsdGVyKFxuICAgICAgICAob2xkTm9kZSkgPT4gIW5vZGVzLnNvbWUoKG5ld05vZGUpID0+IG5ld05vZGUgPT09IG9sZE5vZGUpXG4gICAgICApO1xuICAgICAgdW5zZWxlY3RlZE5vZGVzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgIGVsLnNldEV4cGFuZGVkKGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIG5vZGVzLmZvckVhY2goKGkpID0+IHtcbiAgICAgIGlmICh0aGlzLmF1dG9FeHBhbmQpIHtcbiAgICAgICAgaS5zZXRFeHBhbmRlZCh0cnVlKTtcbiAgICAgIH1cbiAgICAgIGFyZ3MuaXRlbXMucHVzaCh7XG4gICAgICAgIHJvd0xldmVsOiBpLmxldmVsLFxuICAgICAgICByb3dJbmRleDogaS5yb3dJbmRleCxcbiAgICAgICAgZGF0YTogaS5kYXRhLFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQoe1xuICAgICAgZGF0YTogYXJncyxcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LFxuICAgIH0pO1xuICAgIGxldCBhY3Rpb24gPSBub2Rlcy5sZW5ndGggPiBvbGROb2Rlcy5sZW5ndGggPyB0cnVlIDogZmFsc2U7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZGlmZmVyZW5jZU9mMkFycmF5cyhub2Rlcywgb2xkTm9kZXMpO1xuICAgIHRoaXMub25Sb3dTZWxlY3Rpb25DaGFuZ2VkLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgc2VsZWN0ZWQ6IGFjdGlvbixcbiAgICAgIGRhdGE6IG5vZGUsXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcbiAgICB9KTtcbiAgICB0aGlzLm9sZFNlbGVjdGlvbk5vZGVzID0gbm9kZXM7XG4gIH1cblxuICBwcml2YXRlIG1hcENlbGxFdmVudChlOiBDZWxsRXZlbnQpOiBBWEdyaWRDZWxsRXZlbnQge1xuICAgIHJldHVybiB7XG4gICAgICByb3dMZXZlbDogMCxcbiAgICAgIGNvbHVtbjogZS5jb2x1bW4sXG4gICAgICBkYXRhOiBlLmRhdGEsXG4gICAgICByb3dJbmRleDogZS5yb3dJbmRleCxcbiAgICAgIHZhbHVlOiBlLnZhbHVlLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG1hcFJvd0V2ZW50KGU6IFJvd0V2ZW50KTogQVhHcmlkUm93RXZlbnQge1xuICAgIHJldHVybiB7XG4gICAgICByb3dMZXZlbDogMCxcbiAgICAgIGRhdGE6IGUuZGF0YSxcbiAgICAgIHJvd0luZGV4OiBlLnJvd0luZGV4LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZGVzZWxlY3RBbGwoKSB7XG4gICAgdGhpcy5ncmlkQXBpLmRlc2VsZWN0QWxsKCk7XG4gIH1cblxuICBwdWJsaWMgZGVzZWxlY3RCeUtleUZpZWxkKGtleUZpZWxkKSB7XG4gICAgdGhpcy5ncmlkQXBpLmZvckVhY2hOb2RlKChub2RlKSA9PiB7XG4gICAgICBpZiAobm9kZS5kYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IHNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBpZiAobm9kZS5kYXRhW3RoaXMua2V5RmllbGRdID09PSBrZXlGaWVsZCkge1xuICAgICAgICAgIG5vZGUuc2V0U2VsZWN0ZWQoc2VsZWN0KTtcbiAgICAgICAgICB0aGlzLnNlbGVjdFJvdyA9IHRoaXMuc2VsZWN0Um93LmZpbHRlcihcbiAgICAgICAgICAgIChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9IGtleUZpZWxkXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaW50ZXJuYWxHZXRSb3dDbGFzcyA9IChwOiBhbnkpID0+IHtcbiAgICBpZiAodGhpcy5yb3dDbGFzcykge1xuICAgICAgaWYgKHRoaXMucm93Q2xhc3MgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3dDbGFzcyh7XG4gICAgICAgICAgcm93SW5kZXg6IHAubm9kZS5yb3dJbmRleCxcbiAgICAgICAgICByb3dMZXZlbDogcC5ub2RlLmxldmVsLFxuICAgICAgICAgIGRhdGE6IHAuZGF0YSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3dDbGFzcztcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgc2hvd0xvYWRpbmcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ3JpZEFwaSkge1xuICAgICAgdGhpcy5ncmlkQXBpLnNob3dMb2FkaW5nT3ZlcmxheSgpO1xuICAgIH1cbiAgfVxuXG4gIGhpZGVMb2FkaW5nKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmdyaWRBcGkpIHtcbiAgICAgIHRoaXMuZ3JpZEFwaS5oaWRlT3ZlcmxheSgpO1xuICAgIH1cbiAgfVxuXG4gIGludGVybmFsR3JpZFNpemVDaGFuZ2VkKGU6IEdyaWRTaXplQ2hhbmdlZEV2ZW50KSB7XG4gICAgaWYgKGUuY2xpZW50V2lkdGggPiAwICYmIGUuY2xpZW50SGVpZ2h0ID4gMCkge1xuICAgICAgdGhpcy5wZXJmb3JtU2l6ZUNvbHVtbnNUb0ZpdChlLmFwaSk7XG4gICAgfVxuICB9XG5cbiAgaW50ZXJuYWxHcmlkRmlyc3REYXRhUmVuZGVyZWQoZTogRmlyc3REYXRhUmVuZGVyZWRFdmVudCkge1xuICAgIHRoaXMucGVyZm9ybVNpemVDb2x1bW5zVG9GaXQoZS5hcGkpO1xuICAgIC8vIHRoaXMuaGVhZGVySGVpZ2h0U2V0dGVyKCk7XG4gIH1cblxuICBoYW5kbGVDb2x1bW5SZXNpemVkKGUpIHtcbiAgICAvLyB0aGlzLmhlYWRlckhlaWdodFNldHRlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBwZXJmb3JtU2l6ZUNvbHVtbnNUb0ZpdChhcGk6IEdyaWRBcGkpIHtcbiAgICBpZiAodGhpcy5zaXplQ29sdW1uc1RvRml0KSB7XG4gICAgICBhcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUGFnZVNpemUoKSB7XG4gICAgY29uc3QgcGFnaW5nUGFuZWwgPVxuICAgICAgdGhpcy5yZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYWctcGFnaW5nLXBhbmVsJyk7XG5cbiAgICBjb25zdCBzZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzZWxlY3QnKTtcblxuICAgIHNlbGVjdC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZTogYW55KSA9PiB7XG4gICAgICB0aGlzLmdyaWRBcGkucGFnaW5hdGlvblNldFBhZ2VTaXplKE51bWJlcihlLnRhcmdldC52YWx1ZSkpO1xuICAgICAgdGhpcy5ncmlkQXBpLnNldENhY2hlQmxvY2tTaXplKE51bWJlcihlLnRhcmdldC52YWx1ZSkpO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgb3B0aW9uMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpO1xuXG4gICAgb3B0aW9uMS5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJzEwJyk7XG5cbiAgICBvcHRpb24xLnRleHRDb250ZW50ID0gJzEwJztcblxuICAgIGNvbnN0IG9wdGlvbjIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTtcblxuICAgIG9wdGlvbjIuc2V0QXR0cmlidXRlKCd2YWx1ZScsICcyMCcpO1xuXG4gICAgb3B0aW9uMi50ZXh0Q29udGVudCA9ICcyMCc7XG5cbiAgICBzZWxlY3QuYXBwZW5kQ2hpbGQob3B0aW9uMSk7XG5cbiAgICBzZWxlY3QuYXBwZW5kQ2hpbGQob3B0aW9uMik7XG5cbiAgICBzZWxlY3QudmFsdWUgPSAnMjAnO1xuXG4gICAgc2VsZWN0LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICd3aGl0ZSc7XG5cbiAgICBzZWxlY3Quc3R5bGUuY29sb3IgPSAnZ3JheSc7XG5cbiAgICBzZWxlY3Quc3R5bGUucGFkZGluZyA9ICcycHgnO1xuXG4gICAgc2VsZWN0LnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgZ3JheSc7XG5cbiAgICBzZWxlY3Quc3R5bGUuYm9yZGVyUmFkaXVzID0gJzRweCc7XG5cbiAgICBwYWdpbmdQYW5lbC5hcHBlbmRDaGlsZChzZWxlY3QpO1xuICB9XG5cbiAgLy8gcHJpdmF0ZSBoZWFkZXJIZWlnaHRTZXR0ZXIoKSB7XG4gIC8vICAgY29uc3QgcGFkZGluZyA9IDIwO1xuICAvLyAgIGNvbnN0IGhlaWdodCA9IHRoaXMuaGVhZGVySGVpZ2h0R2V0dGVyKCkgKyBwYWRkaW5nO1xuICAvLyAgIHRoaXMuZ3JpZEFwaS5zZXRIZWFkZXJIZWlnaHQoaGVpZ2h0KTtcbiAgLy8gfVxuXG4gIC8vIHByaXZhdGUgaGVhZGVySGVpZ2h0R2V0dGVyKCkge1xuICAvLyAgIGNvbnN0IGNvbHVtbkhlYWRlclRleHRzID0gW1xuICAvLyAgICAgLi4uKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5hZy1oZWFkZXItY2VsbC10ZXh0JykgYXMgYW55KSxcbiAgLy8gICBdO1xuXG4gIC8vICAgY29uc3QgY2xpZW50SGVpZ2h0cyA9IGNvbHVtbkhlYWRlclRleHRzLm1hcChcbiAgLy8gICAgIChoZWFkZXJUZXh0KSA9PiBoZWFkZXJUZXh0LmNsaWVudEhlaWdodFxuICAvLyAgICk7XG4gIC8vICAgY29uc3QgdGFsbGVzdEhlYWRlclRleHRIZWlnaHQgPSBNYXRoLm1heCguLi5jbGllbnRIZWlnaHRzKTtcblxuICAvLyAgIHJldHVybiB0YWxsZXN0SGVhZGVyVGV4dEhlaWdodDtcbiAgLy8gfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LWdyaWQtdG9vbGJhclwiICpuZ0lmPVwidG9vbGJhclwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC10b29sYmFyXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG48IS0tIFtlbmFibGVTb3J0aW5nXT1cInRydWVcIiAgW2VuYWJsZUNvbFJlc2l6ZV09XCJ0cnVlXCIgW2VuYWJsZUZpbHRlcl09XCJhbGxvd0ZpbHRlcmluZ1wiICAtLT5cblxuPGFnLWdyaWQtYW5ndWxhclxuICAqbmdJZj1cImdyaWRWaWV3XCJcbiAgY2xhc3M9XCJhZy10aGVtZS1iYWxoYW1cIlxuICBbZ2V0Um93Q2xhc3NdPVwiaW50ZXJuYWxHZXRSb3dDbGFzc1wiXG4gIFtzdXBwcmVzc0NvcHlSb3dzVG9DbGlwYm9hcmRdPVwidHJ1ZVwiXG4gIFtlbmFibGVSYW5nZVNlbGVjdGlvbl09XCJlbmFibGVSYW5nZVNlbGVjdGlvblwiXG4gIFtzZXJ2ZXJTaWRlU3RvcmVUeXBlXT1cIidwYXJ0aWFsJ1wiXG4gIFtzdHlsZS5oZWlnaHRdPVwiaW50ZXJuYWxIZWlnaHRcIlxuICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCJcbiAgW2VuYWJsZVJ0bF09XCJydGxcIlxuICBbcGFnaW5hdGlvbl09XCJwYWdpbmF0aW9uXCJcbiAgW3Jvd0dyb3VwUGFuZWxTaG93XT1cInJvd0dyb3VwUGFuZWxTaG93XCJcbiAgW3Jvd01vZGVsVHlwZV09XCJyb3dNb2RlbFR5cGVcIlxuICBbZGV0YWlsUm93SGVpZ2h0XT1cImRldGFpbFJvd0hlaWdodFwiXG4gIFtwYWdpbmF0aW9uQXV0b1BhZ2VTaXplXT1cInBhZ2luYXRpb25BdXRvUGFnZVNpemVcIlxuICBbcGFnaW5hdGlvblBhZ2VTaXplXT1cInBhZ2luYXRpb25QYWdlU2l6ZVwiXG4gIFtzdXBwcmVzc01lbnVIaWRlXT1cInRydWVcIlxuICBbZnJhbWV3b3JrQ29tcG9uZW50c109XCJmcmFtZXdvcmtDb21wb25lbnRzXCJcbiAgW2lzRnVsbFdpZHRoQ2VsbF09XCJpc0Z1bGxXaWR0aENlbGxcIlxuICBbcm93U2VsZWN0aW9uXT1cInNlbGVjdGlvbk1vZGVcIlxuICBbcm93TXVsdGlTZWxlY3RXaXRoQ2xpY2tdPVwicm93TXVsdGlTZWxlY3RXaXRoQ2xpY2tcIlxuICBbZnVsbFdpZHRoQ2VsbFJlbmRlcmVyRnJhbWV3b3JrXT1cImZ1bGxXaWR0aENlbGxSZW5kZXJlckZyYW1ld29ya1wiXG4gIFtjYWNoZUJsb2NrU2l6ZV09XCJjYWNoZUJsb2NrU2l6ZVwiXG4gIFtmdWxsV2lkdGhDZWxsUmVuZGVyZXJQYXJhbXNdPVwiZnVsbFdpZHRoQ2VsbFJlbmRlcmVyUGFyYW1zXCJcbiAgKGNvbHVtblJlc2l6ZWQpPVwiaGFuZGxlQ29sdW1uUmVzaXplZCgkZXZlbnQpXCJcbiAgKGNlbGxDbGlja2VkKT1cImludGVybmFsR3JpZENlbGxDbGlja2VkKCRldmVudClcIlxuICAoY2VsbERvdWJsZUNsaWNrZWQpPVwiaW50ZXJuYWxHcmlkQ2VsbERvdWJsZUNsaWNrZWQoJGV2ZW50KVwiXG4gIChjZWxsRm9jdXNlZCk9XCJpbnRlcm5hbEdyaWRDZWxsRm9jdXNlZCgkZXZlbnQpXCJcbiAgKHJvd0NsaWNrZWQpPVwiaW50ZXJuYWxHcmlkUm93Q2xpY2tlZCgkZXZlbnQpXCJcbiAgKHNlbGVjdGlvbkNoYW5nZWQpPVwiaW50ZXJuYWxHcmlkU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcbiAgKHJvd1NlbGVjdGVkKT1cInJvd1NlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXG4gIChyb3dEb3VibGVDbGlja2VkKT1cImludGVybmFsR3JpZFJvd0RvdWJsZUNsaWNrZWQoJGV2ZW50KVwiXG4gIChncmlkUmVhZHkpPVwiaW50ZXJuYWxHcmlkUmVhZHkoJGV2ZW50KVwiXG4gIFtncm91cFNlbGVjdHNDaGlsZHJlbl09XCJncm91cFNlbGVjdHNDaGlsZHJlblwiXG4gIFtzdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uXT1cInN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb25cIlxuICBbZ3JvdXBTZWxlY3RzRmlsdGVyZWRdPVwidHJ1ZVwiXG4gIFtzdXBwcmVzc0NlbGxTZWxlY3Rpb25dPVwic3VwcHJlc3NDZWxsU2VsZWN0aW9uXCJcbiAgW2F1dG9Hcm91cENvbHVtbkRlZl09XCJhdXRvR3JvdXBDb2x1bW5EZWZcIlxuICBbc3VwcHJlc3NBZ2dGdW5jSW5IZWFkZXJdPVwidHJ1ZVwiXG4gIFt0cmVlRGF0YV09XCJ0cmVlRGF0YVwiXG4gIFthbmltYXRlUm93c109XCJ0cnVlXCJcbiAgW2lzU2VydmVyU2lkZUdyb3VwXT1cImlzU2VydmVyU2lkZUdyb3VwXCJcbiAgW2dldFNlcnZlclNpZGVHcm91cEtleV09XCJnZXRTZXJ2ZXJTaWRlR3JvdXBLZXlcIlxuICBbbWFzdGVyRGV0YWlsXT1cIm1hc3RlckRldGFpbFwiXG4gIFtkZXRhaWxDZWxsUmVuZGVyZXJQYXJhbXNdPVwiZGV0YWlsQ2VsbFJlbmRlcmVyUGFyYW1zXCJcbiAgW2RldGFpbENlbGxSZW5kZXJlcl09XCJkZXRhaWxDZWxsUmVuZGVyZXJcIlxuICAoZ3JpZFNpemVDaGFuZ2VkKT1cImludGVybmFsR3JpZFNpemVDaGFuZ2VkKCRldmVudClcIlxuICAoZmlyc3REYXRhUmVuZGVyZWQpPVwiaW50ZXJuYWxHcmlkRmlyc3REYXRhUmVuZGVyZWQoJGV2ZW50KVwiXG4gIFtsb2NhbGVUZXh0XT1cImxvY2FsZVRleHRcIlxuICBbZ3JvdXBIaWRlT3BlblBhcmVudHNdPVwiZ3JvdXBIaWRlT3BlblBhcmVudHNcIlxuICBbYWxsb3dDb250ZXh0TWVudVdpdGhDb250cm9sS2V5XT1cImZhbHNlXCJcbiAgW2dldE1haW5NZW51SXRlbXNdPVwiZ2V0TWFpbk1lbnVJdGVtc1wiXG4+XG48L2FnLWdyaWQtYW5ndWxhcj5cblxuPCEtLSAoZGlzcGxheWVkQ29sdW1uc0NoYW5nZWQpPVwiZGlzcGxheWVkQ29sdW1uc0NoYW5nZWQoJGV2ZW50KVwiICAtLT5cbiJdfQ==
@@ -1450,10 +1450,10 @@ class AXDataGridComponent {
1450
1450
  }
1451
1451
  internalGridFirstDataRendered(e) {
1452
1452
  this.performSizeColumnsToFit(e.api);
1453
- this.headerHeightSetter();
1453
+ // this.headerHeightSetter();
1454
1454
  }
1455
1455
  handleColumnResized(e) {
1456
- this.headerHeightSetter();
1456
+ // this.headerHeightSetter();
1457
1457
  }
1458
1458
  performSizeColumnsToFit(api) {
1459
1459
  if (this.sizeColumnsToFit) {
@@ -1483,19 +1483,6 @@ class AXDataGridComponent {
1483
1483
  select.style.borderRadius = '4px';
1484
1484
  pagingPanel.appendChild(select);
1485
1485
  }
1486
- headerHeightSetter() {
1487
- const padding = 20;
1488
- const height = this.headerHeightGetter() + padding;
1489
- this.gridApi.setHeaderHeight(height);
1490
- }
1491
- headerHeightGetter() {
1492
- const columnHeaderTexts = [
1493
- ...document.querySelectorAll('.ag-header-cell-text'),
1494
- ];
1495
- const clientHeights = columnHeaderTexts.map((headerText) => headerText.clientHeight);
1496
- const tallestHeaderTextHeight = Math.max(...clientHeights);
1497
- return tallestHeaderTextHeight;
1498
- }
1499
1486
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXDataGridComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1500
1487
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AXDataGridComponent, selector: "ax-data-grid", inputs: { paginationAutoPageSize: "paginationAutoPageSize", paginationPageSize: "paginationPageSize", remoteOperation: "remoteOperation", rowMultiSelectWithClick: "rowMultiSelectWithClick", suppressRowClickSelection: "suppressRowClickSelection", suppressCellSelection: "suppressCellSelection", sizeColumnsToFit: "sizeColumnsToFit", showCheckBox: "showCheckBox", floatingFilter: "floatingFilter", autoExpand: "autoExpand", rowSelectableConditionField: "rowSelectableConditionField", selectionMode: "selectionMode", pagination: "pagination", selectRow: "selectRow", rowGroupPanelShow: "rowGroupPanelShow", loadOnInit: "loadOnInit", enableRangeSelection: "enableRangeSelection", keyField: "keyField", hasChildField: "hasChildField", searchText: "searchText", filter: "filter", columns: "columns", rowHeight: "rowHeight", dataSource: "dataSource", groupHideOpenParents: "groupHideOpenParents", rowClass: "rowClass", rtl: "rtl" }, outputs: { columnsChange: "columnsChange", cellClick: "cellClick", cellDbClick: "cellDbClick", cellFocuse: "cellFocuse", rowClick: "rowClick", rowDbClick: "rowDbClick", selectionChanged: "selectionChanged", rowSelectionChange: "rowSelectionChange", onRowSelectionChanged: "onRowSelectionChanged" }, queries: [{ propertyName: "searchInput", first: true, predicate: AXToolbarSearchComponent, descendants: true, static: true }, { propertyName: "toolbar", first: true, predicate: AXToolbarComponent, descendants: true, static: true }, { propertyName: "rowTemplate", first: true, predicate: AXDataGridRowTemplateComponent, descendants: true, static: true }, { propertyName: "gridDetailTemplate", first: true, predicate: AXDataGridDetailTemplateComponent, descendants: true, static: true }, { propertyName: "_contentDataSource", first: true, predicate: AXDataSourceComponent, descendants: true, static: true }, { propertyName: "_inlineColumns", predicate: AXGridDataColumn }], ngImport: i0, template: "<div class=\"ax-grid-toolbar\" *ngIf=\"toolbar\">\n <ng-content select=\"ax-toolbar\"></ng-content>\n</div>\n<!-- [enableSorting]=\"true\" [enableColResize]=\"true\" [enableFilter]=\"allowFiltering\" -->\n\n<ag-grid-angular\n *ngIf=\"gridView\"\n class=\"ag-theme-balham\"\n [getRowClass]=\"internalGetRowClass\"\n [suppressCopyRowsToClipboard]=\"true\"\n [enableRangeSelection]=\"enableRangeSelection\"\n [serverSideStoreType]=\"'partial'\"\n [style.height]=\"internalHeight\"\n [columnDefs]=\"columnDefs\"\n [enableRtl]=\"rtl\"\n [pagination]=\"pagination\"\n [rowGroupPanelShow]=\"rowGroupPanelShow\"\n [rowModelType]=\"rowModelType\"\n [detailRowHeight]=\"detailRowHeight\"\n [paginationAutoPageSize]=\"paginationAutoPageSize\"\n [paginationPageSize]=\"paginationPageSize\"\n [suppressMenuHide]=\"true\"\n [frameworkComponents]=\"frameworkComponents\"\n [isFullWidthCell]=\"isFullWidthCell\"\n [rowSelection]=\"selectionMode\"\n [rowMultiSelectWithClick]=\"rowMultiSelectWithClick\"\n [fullWidthCellRendererFramework]=\"fullWidthCellRendererFramework\"\n [cacheBlockSize]=\"cacheBlockSize\"\n [fullWidthCellRendererParams]=\"fullWidthCellRendererParams\"\n (columnResized)=\"handleColumnResized($event)\"\n (cellClicked)=\"internalGridCellClicked($event)\"\n (cellDoubleClicked)=\"internalGridCellDoubleClicked($event)\"\n (cellFocused)=\"internalGridCellFocused($event)\"\n (rowClicked)=\"internalGridRowClicked($event)\"\n (selectionChanged)=\"internalGridSelectionChanged($event)\"\n (rowSelected)=\"rowSelectionChanged($event)\"\n (rowDoubleClicked)=\"internalGridRowDoubleClicked($event)\"\n (gridReady)=\"internalGridReady($event)\"\n [groupSelectsChildren]=\"groupSelectsChildren\"\n [suppressRowClickSelection]=\"suppressRowClickSelection\"\n [groupSelectsFiltered]=\"true\"\n [suppressCellSelection]=\"suppressCellSelection\"\n [autoGroupColumnDef]=\"autoGroupColumnDef\"\n [suppressAggFuncInHeader]=\"true\"\n [treeData]=\"treeData\"\n [animateRows]=\"true\"\n [isServerSideGroup]=\"isServerSideGroup\"\n [getServerSideGroupKey]=\"getServerSideGroupKey\"\n [masterDetail]=\"masterDetail\"\n [detailCellRendererParams]=\"detailCellRendererParams\"\n [detailCellRenderer]=\"detailCellRenderer\"\n (gridSizeChanged)=\"internalGridSizeChanged($event)\"\n (firstDataRendered)=\"internalGridFirstDataRendered($event)\"\n [localeText]=\"localeText\"\n [groupHideOpenParents]=\"groupHideOpenParents\"\n [allowContextMenuWithControlKey]=\"false\"\n [getMainMenuItems]=\"getMainMenuItems\"\n>\n</ag-grid-angular>\n\n<!-- (displayedColumnsChanged)=\"displayedColumnsChanged($event)\" -->\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "suppressMenuHide", "enableBrowserTooltips", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "maintainColumnOrder", "suppressFieldDotNotation", "deltaColumnMode", "applyColumnDefOrder", "immutableColumns", "suppressSetColumnStateEvents", "suppressColumnStateEvents", "colWidth", "minColWidth", "maxColWidth", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "components", "frameworkComponents", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "stopEditingWhenGridLosesFocus", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "defaultExportParams", "quickFilterText", "cacheQuickFilter", "excludeChildrenWhenTreeDataFiltering", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "chartToolPanelsDef", "loadingCellRenderer", "loadingCellRendererFramework", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererFramework", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentFramework", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentFramework", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDelay", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererFramework", "fullWidthCellRendererParams", "embedFullWidthRows", "deprecatedEmbedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererFramework", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "groupRowsSticky", "groupRowInnerRenderer", "groupRowInnerRendererFramework", "groupMultiAutoColumn", "groupUseEntireRow", "groupSuppressAutoColumn", "rememberGroupStateWhenNewData", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "immutableData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "deltaRowDataMode", "batchUpdateWaitMillis", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "serverSideStoreType", "serverSideInfiniteScroll", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSideSortingAlwaysResets", "serverSideFilteringAlwaysResets", "suppressEnterpriseResetOnNewColumns", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellSelection", "suppressCellFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "deltaSort", "treeDataDisplayType", "angularCompileRows", "angularCompileFilters", "functionsPassive", "enableGroupEdit", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "suppressKeyboardEvent", "localeTextFunc", "getLocaleText", "getDocument", "paginationNumberFormatter", "groupRowAggNodes", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "defaultGroupOrderComparator", "processSecondaryColDef", "processSecondaryColGroupDef", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "defaultGroupSortComparator", "getChildCount", "getServerSideGroupLevelParams", "getServerSideStoreParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowNodeId", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSort", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthCell", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "filterOpened", "filterChanged", "filterModified", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "cellKeyPress", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pinnedRowDataChanged", "rowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }], encapsulation: i0.ViewEncapsulation.None });
1501
1488
  }
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-data-grid.mjs","sources":["../../../../libs/data-grid/src/lib/data-grid/templates/cell-template.component.ts","../../../../libs/data-grid/src/lib/data-grid/columns/column.component.ts","../../../../libs/data-grid/src/lib/data-grid/filters/filter.component.ts","../../../../libs/data-grid/src/lib/data-grid/columns/check-column.component.ts","../../../../libs/data-grid/src/lib/data-grid/columns/command-column.component.ts","../../../../libs/data-grid/src/lib/data-grid/columns/date-column.component.ts","../../../../libs/data-grid/src/lib/data-grid/columns/selection-column.component.ts","../../../../libs/data-grid/src/lib/data-grid/columns/text-column.component.ts","../../../../libs/data-grid/src/lib/data-grid/columns/row-number-column.component.ts","../../../../libs/data-grid/src/lib/data-grid/templates/detail-template.component.ts","../../../../libs/data-grid/src/lib/data-grid/templates/row-template.component.ts","../../../../libs/data-grid/src/lib/data-grid/datagrid.component.ts","../../../../libs/data-grid/src/lib/data-grid/datagrid.component.html","../../../../libs/data-grid/src/lib/data-grid/datagrid.module.ts","../../../../libs/data-grid/src/lib/data-lov/data-lov-popup/data-lov-popup.component.ts","../../../../libs/data-grid/src/lib/data-lov/data-lov-popup/data-lov-popup.component.html","../../../../libs/data-grid/src/lib/data-lov/data-lov.component.ts","../../../../libs/data-grid/src/lib/data-lov/data-lov.component.html","../../../../libs/data-grid/src/lib/data-lov/data-lov.module.ts","../../../../libs/data-grid/src/acorex-data-grid.ts"],"sourcesContent":["import { Component, ContentChild, TemplateRef, ChangeDetectionStrategy } from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { ICellRendererParams } from 'ag-grid-community';\n\n@Component({\n selector: 'ax-cell-template',\n template: `<ng-content></ng-content>\n `\n})\n\nexport class AXDataGridCellTemplateComponent {\n @ContentChild(TemplateRef, { static: true }) templateRef: TemplateRef<any>;\n renderer: any;\n params: any;\n constructor() {\n this.renderer = AXDataGridCellTemplateRenderer;\n }\n ngOnInit(): void {\n this.params = {\n templateRef: this.templateRef\n }\n }\n}\n\n@Component({\n template: `\n <ng-container *ngTemplateOutlet='templateRef; context: { $implicit: rowData }'>\n </ng-container>\n `\n})\n\nexport class AXDataGridCellTemplateRenderer implements ICellRendererAngularComp {\n rowData: any;\n templateRef: TemplateRef<any>;\n\n constructor() { }\n\n agInit(params: ICellRendererParams): void {\n this.rowData = params.data;\n this.templateRef = (params as any).templateRef;\n }\n\n refresh(params: ICellRendererParams): boolean {\n this.rowData = params.data;\n return true;\n }\n}","import { AXConfig } from '@acorex/core';\nimport { ContentChild, Directive, Input } from '@angular/core';\nimport { AXGridCellParams } from '../datagrid.events';\nimport { AXDataGridCellTemplateComponent } from '../templates/cell-template.component';\n\n@Directive()\nexport abstract class AXGridDataColumn {\n @ContentChild(AXDataGridCellTemplateComponent)\n cellTemplate: AXDataGridCellTemplateComponent;\n\n @Input()\n width: number = 100;\n\n @Input()\n maxWidth: number;\n\n @Input()\n minWidth: number;\n\n @Input()\n pinned: 'start' | 'end' | null = null;\n\n @Input()\n allowSorting: boolean = true;\n\n @Input()\n allowFiltering: boolean = AXConfig.get('datagrid.allowFiltering') || false;\n\n @Input()\n cellClass: (\n params: AXGridCellParams\n ) => (string | string[]) | (string | string[]);\n\n @Input()\n sort: 'asc' | 'desc' | null = null;\n\n @Input()\n field: string = '';\n\n @Input()\n caption: string = '';\n\n @Input()\n cellRendererParams: any;\n\n @Input()\n checkbox: boolean = false;\n\n @Input()\n headerCheckbox: boolean = false;\n\n @Input()\n groupIndex: number = -1;\n\n @Input()\n treeIndex: number = -1;\n\n @Input()\n enableRowGroup: boolean = false;\n\n @Input()\n hide: boolean = false;\n\n @Input()\n floatingFilter: boolean = AXConfig.get('datagrid.floatingFilter') || false;\n\n @Input()\n disableMenu: boolean = false;\n\n @Input()\n resizable: boolean = true;\n\n @Input()\n menuColumnDisable: boolean = false;\n\n @Input()\n menuItemDisable: boolean = false;\n\n constructor() {}\n\n render(): any {\n const col: any = {\n field: this.field,\n width: this.width,\n };\n col.resizable = this.resizable;\n col.suppressMenu = this.disableMenu;\n col.menuTabs = ['filterMenuTab', 'columnsMenuTab', 'generalMenuTab'];\n col.floatingFilter = this.floatingFilter;\n\n col.wrapText = true;\n\n col.autoHeight = true;\n\n col.wrapHeaderText = true;\n\n col.autoHeaderHeight = true;\n\n if (!this.allowFiltering) {\n col.filter = false;\n col.menuTabs = col.menuTabs.filter((c) => c != 'filterMenuTab');\n col.floatingFilter = false;\n }\n if (this.menuColumnDisable == true) {\n col.menuTabs = col.menuTabs.filter((c) => c != 'columnsMenuTab');\n }\n if (this.menuItemDisable == true) {\n col.menuTabs = col.menuTabs.filter((c) => c != 'generalMenuTab');\n }\n if (this.caption) {\n col.headerName = this.caption;\n }\n if (this.minWidth) {\n col.minWidth = this.minWidth;\n }\n if (this.maxWidth) {\n col.maxWidth = this.maxWidth;\n }\n if (this.pinned) {\n col.pinned = this.pinned === 'start' ? 'right' : 'left';\n // TODO: Change based on layout\n }\n if (this.allowSorting) {\n col.sortable = this.allowSorting;\n }\n if (this.sort) {\n col.sort = this.sort;\n }\n\n if (this.groupIndex >= 0) {\n col.rowGroupIndex = this.groupIndex;\n col.rowGroup = true;\n this.enableRowGroup = true;\n }\n\n if (this.treeIndex >= 0) {\n col.rowGroupIndex = this.treeIndex;\n col.rowGroup = false;\n }\n if (this.hide) {\n col.hide = true;\n }\n if (this.enableRowGroup) {\n col.enableRowGroup = this.enableRowGroup;\n }\n\n if (this.cellClass) {\n const THAT = this;\n if (this.cellClass instanceof Function) {\n col.cellClass = (p) => {\n return THAT.cellClass({\n column: THAT,\n rowIndex: p.node.rowIndex,\n rowLevel: p.node.level,\n data: p.data,\n value: p.value,\n });\n };\n } else {\n col.cellClass = this.cellClass;\n }\n }\n //\n if (this.cellTemplate != null) {\n col.cellRendererFramework = this.cellTemplate.renderer;\n col.cellRendererParams = this.cellTemplate.params;\n }\n\n if (this.checkbox) {\n col.checkboxSelection = (params) => {\n return true;\n };\n // col.headerCheckboxSelection = this.headerCheckbox;\n }\n return col;\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n\n@Component({\n selector: 'ax-data-grid-filter',\n template: `\n <div class='ax-grid-filter-container'>\n <ng-content></ng-content>\n <div class='btn-group' role='group'>\n <button type='button' class='btn btn-primary btn-sm'>\n <i class='fas fa-filter'></i>\n </button>\n <button type='button' class='btn btn-danger btn-sm'>\n <i class='fas fa-trash-alt'></i>\n </button>\n </div>\n </div>\n `,\n encapsulation: ViewEncapsulation.None\n})\nexport class AXDataGridFilterComponent {}\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { AXGridDataColumn } from './column.component';\nimport { ICellRendererAngularComp, IFilterAngularComp } from 'ag-grid-angular';\nimport {\n ICellRendererParams,\n IFilterParams,\n RowNode,\n IDoesFilterPassParams,\n IAfterGuiAttachedParams,\n} from 'ag-grid-community';\n\n@Component({\n selector: 'ax-check-column',\n template: '',\n providers: [{ provide: AXGridDataColumn, useExisting: AXGridCheckColumn }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXGridCheckColumn extends AXGridDataColumn {\n constructor() {\n super();\n }\n\n render() {\n const col = super.render();\n if (!col.cellRendererFramework) {\n col.cellRendererFramework = BooleanRenderer;\n }\n if (this.allowFiltering) {\n col.filterFramework = BooleanFilterRenderer;\n }\n return col;\n }\n}\n\n@Component({\n template: ` <ax-check-box [value]=\"value\" readonly=\"true\"></ax-check-box> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BooleanRenderer implements ICellRendererAngularComp {\n value: boolean;\n constructor() {}\n agInit(params: ICellRendererParams): void {\n this.value = params.value;\n }\n refresh(params: ICellRendererParams): boolean {\n this.value = params.value;\n return true;\n }\n}\n\n@Component({\n template: `\n <ax-data-grid-filter>\n <ax-select-box label=\"Select Box\" [items]=\"selectItem\"></ax-select-box>\n </ax-data-grid-filter>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BooleanFilterRenderer implements IFilterAngularComp {\n public value?: boolean = null;\n private params: IFilterParams;\n private valueGetter: (rowNode: RowNode) => any;\n @ViewChild('input', { static: true, read: ViewContainerRef }) public input;\n\n selectItem = [\n { value: 0, label: 'True' },\n { value: 1, label: 'False' },\n ];\n agInit(params: IFilterParams): void {\n this.params = params;\n this.valueGetter = params.valueGetter as any;\n }\n\n isFilterActive(): boolean {\n return this.value !== null && this.value !== undefined;\n }\n\n doesFilterPass(params: IDoesFilterPassParams | any): boolean {\n return this.value === this.valueGetter(params.node);\n }\n\n getModel(): any {\n return { value: this.value };\n }\n\n setModel(model: any): void {\n this.value = model ? model.value : null;\n }\n\n ngAfterViewInit(params: IAfterGuiAttachedParams): void {\n window.setTimeout(() => {\n this.input.element.nativeElement.focus();\n });\n }\n\n onChange(newValue): void {\n if (this.value !== newValue) {\n this.value = newValue;\n this.params.filterChangedCallback();\n }\n }\n}\n","import { AXGridDataColumn } from './column.component';\nimport { ChangeDetectionStrategy, Component, Input, EventEmitter, ViewEncapsulation, Output, ChangeDetectorRef } from '@angular/core';\nimport { ICellRendererParams } from 'ag-grid-community';\nimport { AXGridRowCommandEvent } from '../datagrid.events';\nimport { AXMenuItem } from '@acorex/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nexport type AXGridRowCommandFunction = (row: any) => AXMenuItem[];\n\n@Component({\n selector: 'ax-command-column',\n template: '',\n providers: [{ provide: AXGridDataColumn, useExisting: AXGridCommandColumn }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class AXGridCommandColumn extends AXGridDataColumn {\n @Input()\n items: AXMenuItem[] | AXGridRowCommandFunction = [];\n\n @Output()\n onItemClick: EventEmitter<AXGridRowCommandEvent> = new EventEmitter<AXGridRowCommandEvent>();\n\n render() {\n const col = super.render();\n if (!col.cellRendererFramework) {\n col.cellRendererFramework = CommandRenderer;\n }\n col.cellRendererParams = {\n items: this.items,\n onClick: (e) => {\n this.onItemClick.emit({\n command: e.name,\n data: e.data,\n rowIndex: e.rowIndex,\n rowLevel: e.rowLevel,\n htmlEvent: e.htmlEvent\n });\n }\n };\n col.sortable = false;\n col.filter = false;\n col.valueGetter = (params) => {\n return this.items;\n };\n return col;\n }\n}\n\n@Component({\n selector: 'ax-command-cell',\n template: `\n <ng-container *ngFor=\"let item of items; let i = index\">\n <button *ngIf=\"item.visible !== false\"\n class=\"ax button md ax-grid-command-button {{ item.style || 'ax primary blank' }}\"\n [class.disabled]=\"item.disable\"\n type=\"button\"\n [title]=\"item.tooltip\"\n [attr.tabindex]=\"i\"\n (click)=\"onClick(item, $event)\"\n >\n <i [ngClass]=\"item.icon\"></i>{{ item.text }}\n </button>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CommandRenderer implements ICellRendererAngularComp {\n items: AXMenuItem[] | AXGridRowCommandFunction = [];\n node: any;\n private clickCallback: Function;\n\n constructor() { }\n\n agInit(params: ICellRendererParams): void {\n this.mapParams(params);\n }\n\n refresh(params: ICellRendererParams): boolean {\n this.mapParams(params);\n return true;\n }\n\n private mapParams(params: any) {\n this.node = params.node;\n this.items = typeof params.items == 'function' ? params.items({ data: this.node.data }) : Array.isArray(params.items) ? params.items : [];\n this.clickCallback = params.onClick;\n }\n\n onClick(item: AXMenuItem, e: MouseEvent) {\n if (this.clickCallback && !item.disable) {\n this.clickCallback({\n name: item.name,\n rowLevel: this.node.level,\n rowIndex: this.node.rowIndex,\n data: this.node.data,\n htmlEvent: e\n });\n }\n }\n}\n","\nimport {\n Component,\n ChangeDetectionStrategy,\n Input,\n ViewEncapsulation,\n ViewChild,\n ElementRef\n} from '@angular/core';\nimport { AXGridDataColumn } from './column.component';\nimport { AXDateTime, AXConfig, AXCalendarType } from '@acorex/core';\nimport { AXDatePickerComponent } from '@acorex/components';\n@Component({\n selector: 'ax-date-column',\n template: '',\n providers: [{ provide: AXGridDataColumn, useExisting: AXGridDateColumn }],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AXGridDateColumn extends AXGridDataColumn {\n constructor() {\n super();\n }\n\n @Input()\n format: string;\n\n @Input()\n type: AXCalendarType = AXConfig.get('dateTime.type');\n\n render() {\n const col = super.render();\n col.cellRendererParams = {\n format: this.format,\n };\n\n col.comparator = (valueA: any, valueB: any) => {\n const date1 = AXDateTime.convert(valueA);\n const date2 = AXDateTime.convert(valueB);\n //\n if (date1 === null && date2 === null) {\n return 0;\n }\n if (date1 === null) {\n return -1;\n }\n if (date2 === null) {\n return 1;\n }\n return (date1.date.getTime() - date2.date.getTime());\n };\n\n col.valueFormatter = (params) => {\n const date: AXDateTime = AXDateTime.convert(params.value, this.type);\n if (date) {\n return date.format(this.format);\n }\n else {\n return null;\n }\n };\n col.filter = 'agDateColumnFilter';\n // col.floatingFilter = true;\n return col;\n }\n}\n\n@Component({\n selector: 'ax-data-picker-filter',\n template: `<ax-date-picker [selectableHoliday]=\"selectableHoliday\" [allowClear]=\"true\" (onValueChanged)=\"onValueChanged($event)\" size=\"sm\">\n </ax-date-picker>`,\n host: { },\n encapsulation: ViewEncapsulation.None\n})\nexport class AXDatePickerFilterComponent {\n @ViewChild(AXDatePickerComponent)\n datePicker: AXDatePickerComponent;\n @ViewChild('div', { read: ElementRef }) div: ElementRef;\n selectableHoliday: boolean = false;\n type: string = 'jalali';\n date: Date;\n params: any;\n picker: any;\n\n\n agInit(params: any): void {\n this.params = params;\n }\n\n ngAfterViewInit() {\n\n }\n ngOnDestroy() {\n }\n\n onDateChanged(selectedDates) {\n //this.date = selectedDates[0] || null;\n this.params.onDateChanged();\n }\n\n getDate(): Date {\n return this.date;\n }\n\n setDate(date: Date): void {\n this.date = date || null;\n //this.picker.setDate(date);\n }\n\n setInputPlaceholder(placeholder: string): void {\n //this.div.nativeElement.setAttribute('placeholder', placeholder);\n }\n onValueChanged(e) {\n\n this.setDate(e.value);\n this.onDateChanged(e.value);\n }\n\n}\n","import { AXGridDataColumn } from './column.component';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'ax-selection-column',\n template: '',\n providers: [{ provide: AXGridDataColumn, useExisting: AXGridSelectionColumn }],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AXGridSelectionColumn extends AXGridDataColumn {\n constructor() {\n super();\n }\n\n ngOnInit(): void {}\n\n @Input()\n condition: (params) => boolean;\n\n @Input()\n pinned: 'start' | 'end' = 'start';\n\n @Input()\n width: number = 40;\n\n render() {\n const col = super.render();\n col.checkboxSelection = this.condition ? this.condition : true;\n // col.headerCheckboxSelection = true;\n col.pinned = this.pinned === 'start' ? 'right' : 'left';\n col.filter = false;\n col.resizable = true;\n col.sortable = false;\n col.minWidth = 5;\n col.width = this.width;\n col.floatingFilter = false;\n return col;\n }\n}\n","import { AXGridDataColumn } from './column.component';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewContainerRef,\n ViewChild,\n} from '@angular/core';\nimport {\n IFilterParams,\n RowNode,\n IDoesFilterPassParams,\n IAfterGuiAttachedParams,\n} from 'ag-grid-community';\nimport { IFilterAngularComp } from 'ag-grid-angular';\nimport { AXTextBoxComponent } from '@acorex/components';\n\n@Component({\n selector: 'ax-text-column',\n template: '',\n providers: [{ provide: AXGridDataColumn, useExisting: AXGridTextColumn }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXGridTextColumn extends AXGridDataColumn {\n constructor() {\n super();\n }\n\n render() {\n const col = super.render();\n // if (this.allowFiltering) {\n // col.filterFramework = TextFilterRenderer;\n // }\n col.filter = 'agTextColumnFilter';\n return col;\n }\n}\n\n@Component({\n template: `\n <ax-data-grid-filter>\n <ax-text-box\n label=\"Filter\"\n allowClear=\"true\"\n (textChange)=\"onChange($event)\"\n >\n </ax-text-box>\n </ax-data-grid-filter>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextFilterRenderer implements IFilterAngularComp {\n public value?: string = null;\n private params: IFilterParams;\n private valueGetter: (rowNode: RowNode) => any;\n @ViewChild(AXTextBoxComponent, { static: true })\n private input: AXTextBoxComponent;\n\n agInit(params: IFilterParams): void {\n this.params = params;\n this.valueGetter = params.valueGetter as any;\n }\n\n isFilterActive(): boolean {\n return this.value !== null && this.value !== undefined;\n }\n\n doesFilterPass(params: IDoesFilterPassParams | any): boolean {\n return this.value === this.valueGetter(params.node);\n }\n\n getModel(): any {\n return { value: this.value };\n }\n\n setModel(model: any): void {\n this.onChange(model ? model.value : null);\n }\n\n ngAfterViewInit(params: IAfterGuiAttachedParams): void {\n window.setTimeout(() => {\n this.input.focus();\n });\n }\n\n onChange(newValue): void {\n if (this.value !== newValue) {\n this.value = newValue;\n if (this.value === '') {\n this.value = null;\n }\n this.params.filterChangedCallback();\n }\n }\n}\n","import { AXGridDataColumn } from './column.component';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { AXConfig } from '@acorex/core';\n\n@Component({\n selector: 'ax-row-number-column',\n template: '',\n providers: [{ provide: AXGridDataColumn, useExisting: AXGridRowNumberColumn }],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AXGridRowNumberColumn extends AXGridDataColumn {\n constructor() {\n super();\n }\n\n ngOnInit(): void {}\n\n @Input()\n condition: (params) => boolean;\n\n render() {\n const col = super.render();\n // col.checkboxSelection = this.condition ? this.condition : true;\n // col.headerCheckboxSelection = true;\n\n (col.headerName = this.caption ? this.caption : AXConfig.get('layout.rtl') ? 'ردیف' : 'Row'),\n (col.valueGetter = 'node.rowIndex + 1'),\n (col.pinned = this.pinned == null ? null : this.pinned === 'start' ? 'right' : 'left'),\n (col.filter = false);\n col.resizable = true;\n col.sortable = false;\n col.width = this.width;\n\n return col;\n }\n}\n","import { Component, ContentChild, TemplateRef, Input, ChangeDetectorRef } from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\n@Component({\n selector: 'ax-grid-detail-template',\n template: `<ng-content></ng-content>`\n})\n\nexport class AXDataGridDetailTemplateComponent {\n @ContentChild(TemplateRef, { static: true }) templateRef: TemplateRef<any>;\n renderer: any;\n params: any;\n constructor() {\n this.renderer = AXDataGridDetailTemplateRenderer;\n }\n ngOnInit(): void {\n this.params = {\n templateRef: this.templateRef\n }\n }\n\n @Input()\n height: number = 100;\n}\n\n@Component({\n template: `<ng-container *ngTemplateOutlet='templateRef; context: { $implicit: data }'></ng-container>`\n})\n\nexport class AXDataGridDetailTemplateRenderer implements ICellRendererAngularComp {\n\n refresh(params: any): boolean {\n return false;\n }\n\n templateRef: TemplateRef<any>;\n data: any;\n\n agInit(params: any): void {\n this.data = params.data;\n this.templateRef = params.templateRef;\n }\n}","import { Component, ContentChild, TemplateRef, Input } from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\n@Component({\n selector: 'ax-row-template',\n template: `<ng-content></ng-content>`\n})\n\nexport class AXDataGridRowTemplateComponent {\n @ContentChild(TemplateRef, { static: true }) templateRef: TemplateRef<any>;\n renderer: any;\n params: any;\n constructor() {\n this.renderer = AXDataGridRowTemplateRenderer;\n }\n ngOnInit(): void {\n this.params = {\n templateRef: this.templateRef\n }\n }\n}\n\n@Component({\n template: `<ng-container *ngTemplateOutlet='templateRef; context: { $implicit: data }'></ng-container>`\n})\n\nexport class AXDataGridRowTemplateRenderer implements ICellRendererAngularComp {\n\n templateRef: TemplateRef<any>;\n\n data: any;\n\n refresh(params: any): boolean {\n return false;\n }\n\n agInit(params: any): void {\n this.data = params.data.callRecords;\n this.templateRef = params.templateRef;\n }\n}","import {\n AXDataSourceComponent,\n AXDataSourceReadParams,\n} from '@acorex/components';\nimport {\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n} from '@angular/core';\nimport {\n CellClickedEvent,\n CellEvent,\n FirstDataRenderedEvent,\n GridApi,\n GridOptions,\n GridSizeChangedEvent,\n RowClickedEvent,\n RowEvent,\n} from 'ag-grid-community';\nimport { AXGridDataColumn } from './columns/column.component';\n\nimport { ViewEncapsulation } from '@angular/core';\nimport { LicenseManager } from 'ag-grid-enterprise';\nimport {\n AXGridCellEvent,\n AXGridRowEvent,\n AXGridRowParams,\n AXGridRowSelectionEvent,\n} from './datagrid.events';\n\nimport {\n AXDataEvent,\n AXToolbarComponent,\n AXToolbarSearchComponent,\n AXValueEvent,\n} from '@acorex/components';\nimport { AXConfig, AXTranslator } from '@acorex/core';\nimport { AXDatePickerFilterComponent } from './columns/date-column.component';\nimport { AXDataGridDetailTemplateComponent } from './templates/detail-template.component';\nimport { AXDataGridRowTemplateComponent } from './templates/row-template.component';\n\nLicenseManager.prototype.isDisplayWatermark = () => {\n return false;\n};\nLicenseManager.prototype.validateLicense = function () {\n //console.info('Cracked by Arash Oshnoudi!');\n};\n\n// WatermarkComp.prototype.shouldDisplayWatermark = function () {\n// return false;\n// }\n\nexport class AXDataGridColumnsChangeEvent extends AXValueEvent<\n AXGridDataColumn[]\n> {\n declare component: AXDataGridComponent;\n}\nexport class AXDataGridCellEvent extends AXDataEvent<AXGridCellEvent> {\n declare component: AXDataGridComponent;\n}\nexport class AXDaagridRowClickEvent extends AXDataEvent<AXGridRowEvent> {\n declare component: AXDataGridComponent;\n}\n\nexport class AXDataGridSelectionChangeEvent extends AXDataEvent<AXGridRowSelectionEvent> {\n declare component: AXDataGridComponent;\n}\n\nexport class AXDataGridRowSelectionChangeEvent extends AXDataEvent<any> {\n declare component: AXDataGridComponent;\n declare selected: boolean;\n}\n\n@Component({\n selector: 'ax-data-grid',\n templateUrl: './datagrid.component.html',\n encapsulation: ViewEncapsulation.None,\n // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AXDataGridComponent {\n private gridApi;\n private dataSourceSuccessCallback;\n localeText: any;\n\n gridOptions: GridOptions;\n columnDefs: any[] = [];\n rowModelType = 'clientSide';\n fullWidthCellRendererFramework: any;\n fullWidthCellRendererParams: any;\n frameworkComponents: any = {};\n isFullWidthCell: Function;\n internalHeight = '100%';\n detailCellRenderer: any;\n detailCellRendererParams: any;\n detailRowHeight: number;\n masterDetail = false;\n treeData = false;\n enabelSelect = false;\n gridView = false;\n groupSelectsChildren = false;\n oldSelectionNodes: any[] = [];\n // @Input()\n // showRowNumber: boolean = true;\n @Input()\n paginationAutoPageSize = false;\n\n @Input()\n paginationPageSize = 20;\n\n cacheBlockSize = this.paginationPageSize;\n\n @Input()\n public remoteOperation = false;\n\n @Input()\n public rowMultiSelectWithClick = false;\n\n @Input()\n public suppressRowClickSelection = false;\n\n @Input()\n public suppressCellSelection = false;\n\n @Input()\n public sizeColumnsToFit = true;\n\n @Input()\n showCheckBox = true;\n\n @Input()\n floatingFilter = false;\n\n @Input()\n autoExpand = false;\n\n @Input()\n rowSelectableConditionField: string;\n\n // @Input()\n // takeCount: number;\n\n autoGroupColumnDef: any = {};\n\n @Input()\n selectionMode: 'single' | 'multiple' = 'single';\n\n // @Input()\n // allowFiltering: boolean = false;\n\n @Input()\n pagination: boolean = true;\n\n @Input()\n selectRow: any[] = [];\n\n @Input()\n rowGroupPanelShow: 'always' | 'never' = 'never';\n\n @Input()\n loadOnInit: boolean = true;\n\n @Input()\n enableRangeSelection = false;\n\n // @Input()\n // groupDefaultExpanded: number = 0;\n\n @Input()\n keyField: string = 'null';\n\n @Input()\n hasChildField: string = 'null';\n\n private _searchText: string;\n @Input()\n public get searchText(): string {\n return this._searchText;\n }\n public set searchText(v: string) {\n if (v !== this._searchText) {\n this._searchText = v;\n if (this.gridApi) {\n this.refresh();\n this.gridApi.setQuickFilter(this.searchText);\n }\n }\n }\n\n private _filter: any[];\n @Input()\n public get filter(): any[] {\n return this._filter;\n }\n public set filter(v: any[]) {\n if (v !== this._filter) {\n this._filter = v;\n this._filter.forEach((f) => {\n const fc = this.gridApi.getFilterInstance(f.field);\n if (fc) {\n const ff = fc.getFrameworkComponentInstance();\n ff.setModel(f);\n }\n });\n }\n }\n\n @ContentChildren(AXGridDataColumn)\n private _inlineColumns: QueryList<AXGridDataColumn>;\n\n @Output()\n columnsChange: EventEmitter<AXDataGridColumnsChangeEvent> =\n new EventEmitter<AXDataGridColumnsChangeEvent>();\n\n private _columns: AXGridDataColumn[] = [];\n @Input()\n public get columns(): AXGridDataColumn[] {\n return this._inlineColumns\n ? [...this._columns, ...this._inlineColumns.toArray()]\n : this._columns;\n }\n\n public set columns(val: AXGridDataColumn[]) {\n if (val && val.length) {\n let old = this._columns;\n this._columns = val;\n this.columnsChange.emit({\n component: this,\n value: val,\n oldValue: old,\n htmlElement: this.ref.nativeElement,\n });\n }\n }\n\n defaultColDef: any = {\n filter: true,\n floatingFilter: true,\n };\n\n @Input()\n rowHeight: any;\n\n @ContentChild(AXToolbarSearchComponent, { static: true })\n searchInput: AXToolbarSearchComponent;\n\n @ContentChild(AXToolbarComponent, { static: true })\n toolbar: AXToolbarComponent;\n\n @ContentChild(AXDataGridRowTemplateComponent, { static: true })\n rowTemplate: AXDataGridRowTemplateComponent;\n\n @ContentChild(AXDataGridDetailTemplateComponent, { static: true })\n gridDetailTemplate: AXDataGridDetailTemplateComponent;\n\n @ContentChild(AXDataSourceComponent, { static: true })\n private _contentDataSource: AXDataSourceComponent;\n\n private _dataSource: AXDataSourceComponent;\n\n @Input()\n public get dataSource(): AXDataSourceComponent {\n return this._dataSource ? this._dataSource : this._contentDataSource;\n }\n\n public set dataSource(v: AXDataSourceComponent) {\n this._dataSource = v;\n }\n\n @Input()\n groupHideOpenParents: boolean = false;\n\n @Output()\n cellClick: EventEmitter<AXDataGridCellEvent> =\n new EventEmitter<AXDataGridCellEvent>();\n\n @Output()\n cellDbClick: EventEmitter<AXDataGridCellEvent> =\n new EventEmitter<AXDataGridCellEvent>();\n\n @Output()\n cellFocuse: EventEmitter<AXDataGridCellEvent> =\n new EventEmitter<AXDataGridCellEvent>();\n\n @Output()\n rowClick: EventEmitter<AXDaagridRowClickEvent> =\n new EventEmitter<AXDaagridRowClickEvent>();\n\n @Output()\n rowDbClick: EventEmitter<AXDaagridRowClickEvent> =\n new EventEmitter<AXDaagridRowClickEvent>();\n\n @Output()\n selectionChanged: EventEmitter<AXDataGridSelectionChangeEvent> =\n new EventEmitter<AXDataGridSelectionChangeEvent>();\n\n @Output()\n rowSelectionChange: EventEmitter<AXDataGridSelectionChangeEvent> =\n new EventEmitter<AXDataGridSelectionChangeEvent>();\n\n @Output()\n onRowSelectionChanged: EventEmitter<AXDataGridRowSelectionChangeEvent> =\n new EventEmitter<AXDataGridRowSelectionChangeEvent>();\n\n @Input()\n rowClass?: (\n params: AXGridRowParams\n ) => (string | string[]) | (string | string[]);\n\n @Input()\n rtl: boolean = AXConfig.get('layout.rtl');\n\n constructor(\n private ref: ElementRef<HTMLDivElement>,\n private cdr: ChangeDetectorRef\n ) {\n this.localeText = AXTranslator.get('dataGrid');\n }\n\n private calcHeight(): void {\n if (this.toolbar) {\n this.internalHeight = `calc(100% - ${40}px)`;\n } else {\n this.internalHeight = '100%';\n }\n }\n\n private get intenalGridDataSource() {\n const that = this;\n return {\n rowCount: null,\n getRows: (params) => {\n that.dataSourceSuccessCallback = params.successCallback;\n\n const loadParams: AXDataSourceReadParams = {};\n\n loadParams.searchText = that.searchText;\n\n loadParams.skip = params.request.startRow;\n\n loadParams.take = params.request.endRow - params.request.startRow;\n\n loadParams.sort = params.request.sortModel.map((c) => {\n return {\n field: c.colId,\n dir: c.sort,\n };\n });\n\n loadParams.group = {\n fields: params.request.rowGroupCols.map((r) => r.field),\n keys: params.request.groupKeys,\n parentData: params.parentNode.data,\n };\n\n loadParams.filter = params.request.filterModel;\n\n that.dataSource.fetch(loadParams);\n },\n };\n }\n getMainMenuItems(e) {\n return ['pinSubMenu', 'separator'];\n }\n\n ngOnDestroy(): void {\n this.gridApi.destroy();\n }\n\n isServerSideGroup = (e) => {\n return e[this.hasChildField];\n };\n\n getColumnDefs = () => {\n return this.gridApi.getColumnDefs();\n };\n\n getCurrentPageNumber = () => {\n return {\n current: this.gridApi.paginationGetCurrentPage() + 1,\n total: this.gridApi.paginationGetTotalPages(),\n };\n };\n\n paginationGoToPage(number) {\n this.gridApi.paginationGoToPage(number - 1);\n }\n\n getServerSideGroupKey = (e) => {\n return e[this.keyField];\n };\n internalGridReady(gridOptions) {\n if (this.remoteOperation && !this.paginationAutoPageSize) {\n this.handlePageSize();\n } else {\n this.cacheBlockSize =\n this.paginationPageSize > 20 ? this.paginationPageSize : 100;\n }\n\n this.gridApi = gridOptions.api;\n\n this.mapColumns();\n this.calcHeight();\n\n if (!this.loadOnInit) {\n this.loadOnInit = true;\n return;\n }\n\n if (this.remoteOperation) {\n this.gridApi.setServerSideDatasource(this.intenalGridDataSource);\n }\n\n if (!this.remoteOperation) {\n this.refresh();\n }\n }\n\n ngAfterContentInit(): void {\n const that = this;\n if (this.rowTemplate) {\n this.fullWidthCellRendererFramework = this.rowTemplate.renderer;\n this.fullWidthCellRendererParams = this.rowTemplate.params;\n }\n this.frameworkComponents.agDateInput = AXDatePickerFilterComponent;\n\n if (this.gridDetailTemplate) {\n this.masterDetail = true;\n this.detailCellRendererParams = this.gridDetailTemplate.params;\n this.detailCellRenderer = 'detailRendererFramework';\n this.frameworkComponents.detailRendererFramework =\n this.gridDetailTemplate.renderer;\n\n this.detailRowHeight = this.gridDetailTemplate.height;\n }\n this.isFullWidthCell = () => {\n return that.rowTemplate != null;\n };\n }\n\n ngOnInit(): void {\n if (this.selectionMode === 'single') {\n this.groupSelectsChildren = false;\n }\n if (this.keyField !== 'null' && this.hasChildField !== 'null') {\n this.rowGroupPanelShow = 'never';\n this.treeData = true;\n }\n if (this.remoteOperation) {\n this.rowModelType = 'serverSide';\n }\n //\n if (this.rtl == null) {\n this.rtl =\n window\n .getComputedStyle(this.ref.nativeElement, null)\n .getPropertyValue('direction') === 'rtl';\n }\n //\n }\n\n gridSelectRow() {\n if (this.gridApi) {\n if (\n this.selectRow &&\n this.selectRow.length > 0 &&\n this.gridApi !== undefined &&\n typeof this.selectRow[0] != 'object'\n ) {\n this.gridApi.forEachNode((node) => {\n if (node.data !== undefined) {\n let select: boolean = false;\n this.selectRow.forEach((id) => {\n if (node.data[this.keyField] === id) {\n select = true;\n node.setSelected(select);\n }\n });\n }\n });\n } else {\n this.gridApi.forEachNode((node) => {\n if (node.data !== undefined) {\n let select: boolean = false;\n if (this.selectRow.length) {\n this.selectRow.forEach((item) => {\n if (item.rowIndex != undefined && item.rowLevel != undefined) {\n if (node.data[this.keyField] === item.data[this.keyField]) {\n select = true;\n }\n } else {\n if (\n this.keyField !== 'null' &&\n node.data[this.keyField] === item[this.keyField]\n ) {\n select = true;\n }\n }\n });\n }\n if (this.rowSelectableConditionField) {\n node.setRowSelectable(\n node.data[this.rowSelectableConditionField]\n );\n }\n node.setSelected(select);\n }\n });\n }\n }\n }\n\n rebuildGrid() {\n this.mapColumns();\n setTimeout(() => {\n if (this.sizeColumnsToFit) {\n this.gridApi.sizeColumnsToFit();\n }\n }, 10);\n }\n\n ngAfterViewInit(): void {\n if (this.treeData === true) {\n this.columnDefs = this.columns.map((c) => c.render());\n\n const groupColumn = this.columnDefs.find(\n (c) => c.rowGroupIndex == '0' && c.field !== ''\n );\n\n this.autoGroupColumnDef = {\n headerName: groupColumn.headerName,\n width: groupColumn.width,\n cellRendererParams: { checkbox: this.showCheckBox },\n field: groupColumn.field,\n };\n\n this.columnDefs.forEach((elm) => {\n if (elm.rowGroupIndex > -1) {\n elm.hide = true;\n }\n });\n }\n this.gridView = true;\n\n this.enabelSelect = true;\n this.dataSource.onDataReceived.subscribe((_data) => {\n const result = _data.data.result;\n this.hideLoading();\n let items: any[];\n let totalCount: number;\n if (Array.isArray(result)) {\n items = result;\n totalCount = result.length;\n } else {\n items = result.items;\n totalCount = result.totalCount;\n }\n if (this.dataSourceSuccessCallback) {\n if (!this.loadOnInit) {\n this.dataSourceSuccessCallback([], 0);\n } else {\n this.dataSourceSuccessCallback(items, totalCount);\n }\n } else {\n if (!this.loadOnInit && this.gridApi !== undefined) {\n this.gridApi.setRowData([]);\n } else if (this.gridApi !== undefined) {\n this.gridApi.setRowData(items);\n }\n }\n\n this.gridSelectRow();\n });\n\n this.dataSource.onFetchStart.subscribe(() => {\n this.showLoading();\n });\n\n if (this.searchInput) {\n this.searchInput.onValueChanged.subscribe((c) => {\n this.searchText = c.value;\n });\n }\n this.cdr.detectChanges();\n }\n\n mapColumns() {\n this.columnDefs = this.columns.map((c) => c.render());\n if (this.gridDetailTemplate) {\n if (\n this.columnDefs[0].checkboxSelection === true &&\n this.columnDefs[0].field === ''\n ) {\n this.columnDefs[1].cellRenderer = 'agGroupCellRenderer';\n } else {\n this.columnDefs[0].cellRenderer = 'agGroupCellRenderer';\n }\n }\n\n if (this.hasChildField === 'null') {\n const groupColumn = this.columnDefs.find(\n (c) => c.rowGroupIndex === undefined && c.field !== ''\n );\n if (groupColumn && this.groupHideOpenParents == false) {\n this.autoGroupColumnDef = {\n headerName: groupColumn.headerName,\n width: groupColumn.width,\n cellRendererParams: { checkbox: this.showCheckBox },\n field: groupColumn.field,\n };\n }\n }\n\n this.columnDefs.forEach((elm) => {\n if (elm.rowGroupIndex > -1) {\n elm.hide = true;\n }\n });\n }\n\n displayedColumnsChanged(e) {\n if (this.hasChildField === 'null') {\n const ee = e.columnApi.getAllDisplayedColumnGroups();\n const eee = ee.find(\n (c) => c.colId !== 'ag-Grid-AutoColumn' && c.colId !== '0'\n );\n if (eee && eee.colId) {\n this.autoGroupColumnDef = {\n headerName: eee.colDef.headerName,\n width: eee.colDef.width,\n cellRendererParams: { checkbox: this.showCheckBox },\n field: eee.colDef.field,\n };\n }\n }\n }\n\n refresh(route: any[] = []) {\n if (this.remoteOperation && this.gridApi !== undefined) {\n // this.gridApi.purgeServerSideCache(route);\n this.gridApi.setServerSideDatasource(this.intenalGridDataSource);\n } else {\n this.dataSource.fetch(null);\n }\n }\n\n internalGridCellClicked(e: CellClickedEvent) {\n this.cellClick.emit({\n data: this.mapCellEvent(e),\n component: this,\n htmlElement: this.ref.nativeElement,\n });\n }\n\n internalGridCellDoubleClicked(e: CellClickedEvent) {\n this.cellDbClick.emit({\n data: this.mapCellEvent(e),\n component: this,\n htmlElement: this.ref.nativeElement,\n });\n }\n\n internalGridCellFocused(e: CellClickedEvent) {\n this.cellFocuse.emit({\n data: this.mapCellEvent(e),\n htmlElement: this.ref.nativeElement,\n component: this,\n });\n }\n\n internalGridRowClicked(e: RowClickedEvent) {\n if (!e.node.group) {\n this.rowClick.emit({\n data: this.mapRowEvent(e),\n component: this,\n htmlElement: this.ref.nativeElement,\n });\n }\n }\n\n internalGridRowDoubleClicked(e: CellClickedEvent) {\n if (!e.node.group) {\n this.rowDbClick.emit({\n data: this.mapRowEvent(e),\n htmlElement: this.ref.nativeElement,\n component: this,\n });\n }\n }\n\n differenceOf2Arrays(array1: any, array2: any) {\n const temp = [];\n for (const i in array1) {\n if (array2.indexOf(array1[i]) === -1) {\n temp.push(array1[i]);\n }\n }\n for (const i in array2) {\n if (array1.indexOf(array2[i]) === -1) {\n temp.push(array2[i]);\n }\n }\n return temp.sort((a, b) => a - b);\n }\n\n rowSelectionChanged(e) {\n if (e.node.selected == true) {\n this.selectRow = this.selectRow.filter(\n (c) => c[this.keyField] != e.data[this.keyField]\n );\n this.selectRow.push(e.data);\n } else {\n this.selectRow = this.selectRow.filter(\n (c) => c[this.keyField] != e.data[this.keyField]\n );\n }\n this.rowSelectionChange.emit({\n component: this,\n data: e,\n htmlElement: this.ref.nativeElement,\n });\n }\n\n internalGridSelectionChanged(e) {\n const args: AXGridRowSelectionEvent = { items: [] };\n const oldNodes = this.oldSelectionNodes;\n const nodes = this.gridApi.getSelectedNodes();\n\n if (this.autoExpand) {\n const unselectedNodes = oldNodes.filter(\n (oldNode) => !nodes.some((newNode) => newNode === oldNode)\n );\n unselectedNodes.forEach((el) => {\n el.setExpanded(false);\n });\n }\n\n nodes.forEach((i) => {\n if (this.autoExpand) {\n i.setExpanded(true);\n }\n args.items.push({\n rowLevel: i.level,\n rowIndex: i.rowIndex,\n data: i.data,\n });\n });\n this.selectionChanged.emit({\n data: args,\n component: this,\n htmlElement: this.ref.nativeElement,\n });\n let action = nodes.length > oldNodes.length ? true : false;\n const node = this.differenceOf2Arrays(nodes, oldNodes);\n this.onRowSelectionChanged.emit({\n component: this,\n selected: action,\n data: node,\n htmlElement: this.ref.nativeElement,\n });\n this.oldSelectionNodes = nodes;\n }\n\n private mapCellEvent(e: CellEvent): AXGridCellEvent {\n return {\n rowLevel: 0,\n column: e.column,\n data: e.data,\n rowIndex: e.rowIndex,\n value: e.value,\n };\n }\n\n private mapRowEvent(e: RowEvent): AXGridRowEvent {\n return {\n rowLevel: 0,\n data: e.data,\n rowIndex: e.rowIndex,\n };\n }\n\n public deselectAll() {\n this.gridApi.deselectAll();\n }\n\n public deselectByKeyField(keyField) {\n this.gridApi.forEachNode((node) => {\n if (node.data !== undefined) {\n let select: boolean = false;\n if (node.data[this.keyField] === keyField) {\n node.setSelected(select);\n this.selectRow = this.selectRow.filter(\n (c) => c[this.keyField] != keyField\n );\n }\n }\n });\n }\n\n internalGetRowClass = (p: any) => {\n if (this.rowClass) {\n if (this.rowClass instanceof Function) {\n return this.rowClass({\n rowIndex: p.node.rowIndex,\n rowLevel: p.node.level,\n data: p.data,\n });\n } else {\n return this.rowClass;\n }\n }\n };\n\n showLoading(): void {\n if (this.gridApi) {\n this.gridApi.showLoadingOverlay();\n }\n }\n\n hideLoading(): void {\n if (this.gridApi) {\n this.gridApi.hideOverlay();\n }\n }\n\n internalGridSizeChanged(e: GridSizeChangedEvent) {\n if (e.clientWidth > 0 && e.clientHeight > 0) {\n this.performSizeColumnsToFit(e.api);\n }\n }\n\n internalGridFirstDataRendered(e: FirstDataRenderedEvent) {\n this.performSizeColumnsToFit(e.api);\n this.headerHeightSetter();\n }\n\n handleColumnResized(e) {\n this.headerHeightSetter();\n }\n\n private performSizeColumnsToFit(api: GridApi) {\n if (this.sizeColumnsToFit) {\n api.sizeColumnsToFit();\n }\n }\n\n private handlePageSize() {\n const pagingPanel =\n this.ref.nativeElement.querySelector('.ag-paging-panel');\n\n const select = document.createElement('select');\n\n select.addEventListener('change', (e: any) => {\n this.gridApi.paginationSetPageSize(Number(e.target.value));\n this.gridApi.setCacheBlockSize(Number(e.target.value));\n });\n\n const option1 = document.createElement('option');\n\n option1.setAttribute('value', '10');\n\n option1.textContent = '10';\n\n const option2 = document.createElement('option');\n\n option2.setAttribute('value', '20');\n\n option2.textContent = '20';\n\n select.appendChild(option1);\n\n select.appendChild(option2);\n\n select.value = '20';\n\n select.style.backgroundColor = 'white';\n\n select.style.color = 'gray';\n\n select.style.padding = '2px';\n\n select.style.border = '1px solid gray';\n\n select.style.borderRadius = '4px';\n\n pagingPanel.appendChild(select);\n }\n\n private headerHeightSetter() {\n const padding = 20;\n const height = this.headerHeightGetter() + padding;\n this.gridApi.setHeaderHeight(height);\n }\n\n private headerHeightGetter() {\n const columnHeaderTexts = [\n ...(document.querySelectorAll('.ag-header-cell-text') as any),\n ];\n\n const clientHeights = columnHeaderTexts.map(\n (headerText) => headerText.clientHeight\n );\n const tallestHeaderTextHeight = Math.max(...clientHeights);\n\n return tallestHeaderTextHeight;\n }\n}\n","<div class=\"ax-grid-toolbar\" *ngIf=\"toolbar\">\n <ng-content select=\"ax-toolbar\"></ng-content>\n</div>\n<!-- [enableSorting]=\"true\" [enableColResize]=\"true\" [enableFilter]=\"allowFiltering\" -->\n\n<ag-grid-angular\n *ngIf=\"gridView\"\n class=\"ag-theme-balham\"\n [getRowClass]=\"internalGetRowClass\"\n [suppressCopyRowsToClipboard]=\"true\"\n [enableRangeSelection]=\"enableRangeSelection\"\n [serverSideStoreType]=\"'partial'\"\n [style.height]=\"internalHeight\"\n [columnDefs]=\"columnDefs\"\n [enableRtl]=\"rtl\"\n [pagination]=\"pagination\"\n [rowGroupPanelShow]=\"rowGroupPanelShow\"\n [rowModelType]=\"rowModelType\"\n [detailRowHeight]=\"detailRowHeight\"\n [paginationAutoPageSize]=\"paginationAutoPageSize\"\n [paginationPageSize]=\"paginationPageSize\"\n [suppressMenuHide]=\"true\"\n [frameworkComponents]=\"frameworkComponents\"\n [isFullWidthCell]=\"isFullWidthCell\"\n [rowSelection]=\"selectionMode\"\n [rowMultiSelectWithClick]=\"rowMultiSelectWithClick\"\n [fullWidthCellRendererFramework]=\"fullWidthCellRendererFramework\"\n [cacheBlockSize]=\"cacheBlockSize\"\n [fullWidthCellRendererParams]=\"fullWidthCellRendererParams\"\n (columnResized)=\"handleColumnResized($event)\"\n (cellClicked)=\"internalGridCellClicked($event)\"\n (cellDoubleClicked)=\"internalGridCellDoubleClicked($event)\"\n (cellFocused)=\"internalGridCellFocused($event)\"\n (rowClicked)=\"internalGridRowClicked($event)\"\n (selectionChanged)=\"internalGridSelectionChanged($event)\"\n (rowSelected)=\"rowSelectionChanged($event)\"\n (rowDoubleClicked)=\"internalGridRowDoubleClicked($event)\"\n (gridReady)=\"internalGridReady($event)\"\n [groupSelectsChildren]=\"groupSelectsChildren\"\n [suppressRowClickSelection]=\"suppressRowClickSelection\"\n [groupSelectsFiltered]=\"true\"\n [suppressCellSelection]=\"suppressCellSelection\"\n [autoGroupColumnDef]=\"autoGroupColumnDef\"\n [suppressAggFuncInHeader]=\"true\"\n [treeData]=\"treeData\"\n [animateRows]=\"true\"\n [isServerSideGroup]=\"isServerSideGroup\"\n [getServerSideGroupKey]=\"getServerSideGroupKey\"\n [masterDetail]=\"masterDetail\"\n [detailCellRendererParams]=\"detailCellRendererParams\"\n [detailCellRenderer]=\"detailCellRenderer\"\n (gridSizeChanged)=\"internalGridSizeChanged($event)\"\n (firstDataRendered)=\"internalGridFirstDataRendered($event)\"\n [localeText]=\"localeText\"\n [groupHideOpenParents]=\"groupHideOpenParents\"\n [allowContextMenuWithControlKey]=\"false\"\n [getMainMenuItems]=\"getMainMenuItems\"\n>\n</ag-grid-angular>\n\n<!-- (displayedColumnsChanged)=\"displayedColumnsChanged($event)\" -->\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AXDataGridComponent } from './datagrid.component';\nimport { FormsModule } from '@angular/forms';\nimport { AgGridModule } from 'ag-grid-angular';\nimport { AXDataSourceModule } from '@acorex/components';\nimport { AXGridTextColumn, TextFilterRenderer } from './columns/text-column.component';\nimport { AXGridCheckColumn, BooleanRenderer, BooleanFilterRenderer } from './columns/check-column.component';\nimport { AXCoreModule } from '@acorex/core';\nimport { AXGridSelectionColumn } from './columns/selection-column.component';\nimport { CommandRenderer, AXGridCommandColumn } from './columns/command-column.component';\nimport { AXDataGridFilterComponent } from './filters/filter.component';\nimport { AXGridDateColumn, AXDatePickerFilterComponent } from './columns/date-column.component';\nimport { AXDataGridRowTemplateComponent, AXDataGridRowTemplateRenderer } from './templates/row-template.component';\nimport { AXDataGridCellTemplateComponent, AXDataGridCellTemplateRenderer } from './templates/cell-template.component';\nimport { AXDataGridDetailTemplateComponent, AXDataGridDetailTemplateRenderer } from './templates/detail-template.component';\nimport { AXTextBoxModule } from '@acorex/components';\nimport { AXCheckBoxModule } from '@acorex/components';\nimport { AXSelectBoxModule } from '@acorex/components';\nimport { AXButtonModule } from '@acorex/components';\nimport { AXDatePickerModule } from '@acorex/components';\nimport 'ag-grid-enterprise';\nimport { AXGridRowNumberColumn } from './columns/row-number-column.component';\n\n@NgModule({\n declarations: [\n AXDataGridComponent,\n AXGridTextColumn,\n AXGridCheckColumn,\n AXGridSelectionColumn,\n AXGridDateColumn,\n AXGridRowNumberColumn,\n AXGridCommandColumn,\n BooleanRenderer,\n BooleanFilterRenderer,\n TextFilterRenderer,\n AXDataGridFilterComponent,\n AXDataGridRowTemplateComponent,\n AXDataGridDetailTemplateComponent,\n AXDataGridRowTemplateRenderer,\n AXDataGridDetailTemplateRenderer,\n AXDataGridCellTemplateComponent,\n AXDataGridCellTemplateRenderer,\n AXDatePickerFilterComponent,\n CommandRenderer\n ],\n imports: [\n CommonModule,\n AXCoreModule,\n FormsModule,\n //AgGridModule,\n AXTextBoxModule,\n AXCheckBoxModule,\n AXSelectBoxModule,\n AXDataSourceModule,\n AXButtonModule,\n AXDatePickerModule,\n AgGridModule\n ],\n exports: [\n AXDataGridComponent,\n AXDataGridFilterComponent,\n AXDataGridRowTemplateComponent,\n AXDataGridDetailTemplateComponent,\n AXDataGridRowTemplateRenderer,\n AXDataGridDetailTemplateRenderer,\n AXDataGridCellTemplateComponent,\n AXDataGridCellTemplateRenderer,\n AXGridTextColumn,\n AXGridRowNumberColumn,\n AXGridCheckColumn,\n AXGridDateColumn,\n AXGridSelectionColumn,\n AXGridCommandColumn,\n BooleanRenderer,\n BooleanFilterRenderer,\n CommandRenderer\n ],\n providers: []\n})\nexport class AXDataGridModule { }\n","import { Component, ViewChild, ChangeDetectorRef, ElementRef } from '@angular/core';\nimport { AXDataGridComponent, AXDataGridSelectionChangeEvent } from '../../data-grid/datagrid.component';\nimport { AXGridDataColumn } from '../../data-grid/columns/column.component';\nimport { AXTranslator, AXButtonItem, AXConfig } from '@acorex/core';\nimport {\n AXToolbarSearchComponent,\n AXBasePopupPageComponent,\n AXMenuItemClickEvent,\n AXDataSourceComponent,\n AXDataSourceReadParams\n} from '@acorex/components';\n\n@Component({\n templateUrl: './data-lov-popup.component.html'\n})\nexport class AXDataLovPopupComponent extends AXBasePopupPageComponent {\n @ViewChild('grid', { static: true })\n grid: AXDataGridComponent;\n\n @ViewChild('searchBox')\n searchBox: AXToolbarSearchComponent;\n\n columns: AXGridDataColumn[] = [];\n\n selectedItems: any[] = [];\n\n keyField: string = '';\n allowNull: boolean = true;\n\n hasChildField: string;\n rtl: boolean = AXConfig.get('layout.rtl');\n\n selectedRows: any[] = [];\n pagination:boolean =true;\n constructor(private cdr: ChangeDetectorRef, private ref: ElementRef) {\n super();\n }\n\n dataSource: AXDataSourceComponent;\n\n selectionMode: string;\n\n ngOnInit(): void {\n if (this.rtl == null) {\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\n }\n }\n\n onDoneClick() {\n if (this.selectedItems) {\n this.close(this.selectedItems);\n } else {\n this.close();\n }\n }\n\n rowDoubleClicked(e) {\n if (this.selectionMode == 'single') {\n this.selectedItems = [];\n }\n\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] != e.data.data[this.keyField]);\n this.selectedItems.push(e.data.data);\n\n this.onDoneClick();\n }\n\n onCancelClick() {\n this.close();\n }\n\n rowSelectionChange(e) {\n if (e.data.node.selected == true) {\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] != e.data.node.data[this.keyField]);\n this.selectedItems.push(e.data.node.data);\n } else {\n if (this.allowNull == true || (this.allowNull == false && this.selectedItems.length > 1)) {\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] != e.data.node.data[this.keyField]);\n }\n }\n }\n\n ngAfterViewInit() {\n this.selectedItems.forEach((ele) => {\n this.selectedRows.push(ele);\n });\n this.searchBox.focus();\n if (this.dataSource.onDataReceived) {\n this.dataSource.onDataReceived.subscribe((arg) => {\n this.cdr.markForCheck();\n this.cdr.detectChanges();\n });\n }\n }\n\n // onValueSearchChanged(e) {\n\n // const params: AXDataSourceReadParams = {}\n // params.searchText = e.value;\n // // params.take = 100;\n // // params.skip = 0\n // this.dataSource.fetch(params);\n // }\n\n getFooterButtons(): AXButtonItem[] {\n return [\n {\n text: AXTranslator.get('common.confirm'),\n name: 'confirm',\n style: 'ax primary',\n icon: 'far fa-check-circle'\n },\n {\n text: AXTranslator.get('common.cancel'),\n name: 'cancel',\n style: 'ax light',\n icon: 'far fa-times'\n }\n ];\n }\n\n onFooterButtonClick(e: AXMenuItemClickEvent) {\n if (e.name === 'confirm') {\n this.onDoneClick();\n }\n if (e.name === 'cancel') {\n this.onCancelClick();\n }\n }\n}\n","<div style=\"height: 70vh; padding: 0.5em;\">\n <div style=\"height: calc(98%);\">\n\n <ax-data-grid [pagination]=\"pagination\" [rtl]=\"rtl\" [suppressRowClickSelection]=\"false\" [keyField]=\"keyField\"\n [hasChildField]=\"hasChildField\" [selectRow]=\"selectedItems\" #grid [columns]=\"columns\"\n [remoteOperation]=\"true\" [selectionMode]=\"selectionMode\" (rowDbClick)=\"rowDoubleClicked($event)\"\n (rowSelectionChange)=\"rowSelectionChange($event)\" [dataSource]=\"dataSource\">\n <ax-toolbar>\n <ax-toolbar-search #searchBox style=\"width: 100%;\"></ax-toolbar-search>\n </ax-toolbar>\n <ax-selection-column *ngIf=\"selectionMode== 'single'? false : true\"></ax-selection-column>\n <!-- <ax-data-source [provideData]=\"dataSource.provideData\">\n </ax-data-source> -->\n </ax-data-grid>\n </div>\n</div>","import {\n AXBaseInputComponent,\n AXBaseSizableComponent,\n AXDataEvent,\n AXDataSourceComponent,\n AXElementSize,\n AXPopupService,\n AXSelectBoxComponent,\n AXValidatableComponent,\n AXValidation,\n} from '@acorex/components';\nimport { AXConfig } from '@acorex/core';\nimport {\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXGridDataColumn } from '../data-grid/columns/column.component';\nimport { AXDataLovPopupComponent } from './data-lov-popup/data-lov-popup.component';\n\n@Component({\n selector: 'ax-lov',\n templateUrl: './data-lov.component.html',\n encapsulation: ViewEncapsulation.None,\n host: { style: 'width: 100%' },\n providers: [{ provide: AXValidatableComponent, useExisting: AXLOVComponent }],\n})\nexport class AXLOVComponent\n extends AXValidatableComponent\n implements AXBaseSizableComponent, AXBaseInputComponent\n{\n @ContentChild(AXValidation, { static: true })\n private _contentValidation: AXValidation;\n private _validation: AXValidation;\n\n @Input()\n public get validation(): AXValidation {\n return this._validation ? this._validation : this._contentValidation;\n }\n public set validation(v: AXValidation) {\n this._validation = v;\n }\n\n constructor(private popup: AXPopupService, private ref: ElementRef) {\n super();\n }\n\n @ViewChild('selectBox', { static: true })\n selectBox: AXSelectBoxComponent;\n\n @ContentChild(AXDataSourceComponent, { static: true })\n dataSource: AXDataSourceComponent;\n\n @ContentChildren(AXGridDataColumn)\n private columns: QueryList<AXGridDataColumn>;\n\n @ContentChild('itemTemplate', { static: true })\n rowTemplate: TemplateRef<any>;\n\n @Input()\n textField: string = '';\n\n @Input()\n allowSearch: boolean = true;\n\n @Input()\n valueField: string = '';\n\n @Input()\n hasChildField: string = 'null';\n\n @Input()\n allowNull: boolean = true;\n\n @Input()\n popupSize: 'sm' | 'md' | 'lg' | 'full' = 'md';\n\n @Input()\n pagination: boolean = true;\n @Input()\n selectedItems: any[] = [];\n\n // @Input()\n // selectedValues: any[] = [];\n\n @Input()\n readonly: boolean = false;\n\n @Input()\n disabled: boolean = false;\n\n @Input()\n chipsWidth: string = '';\n\n @Input()\n size: AXElementSize = 'md';\n\n @Input()\n caption: string;\n\n @Input()\n mode: 'single' | 'multiple' = 'single';\n\n @Input()\n placeholder: string;\n\n @Output()\n onSelectionChange: EventEmitter<AXDataEvent<any>> = new EventEmitter<\n AXDataEvent<any>\n >();\n\n @Input()\n rtl: boolean = AXConfig.get('layout.rtl');\n\n @Input() multiLine = false;\n\n focus(): void {\n this.selectBox.focus();\n }\n\n refresh() {\n this.selectBox.refresh();\n }\n\n handleButtonClick() {\n this.open();\n }\n\n ngOnInit(): void {\n if (this.rtl == null) {\n this.rtl =\n window\n .getComputedStyle(this.ref.nativeElement, null)\n .getPropertyValue('direction') === 'rtl';\n }\n // this.selectVal = this.selectedValues;\n this.onSelectionChange.subscribe((c) => {\n this.clearValidationStyle(this.ref.nativeElement);\n });\n }\n\n ngAfterContentInit(): void {\n this.initValidation(this.ref, 'selectedItems', this.validation);\n }\n\n handleSelectChange(e) {\n this.onSelectionChange.emit({\n data: this.selectedItems,\n component: this,\n htmlElement: this.ref.nativeElement,\n });\n }\n\n public open(): Promise<any> {\n return new Promise((resolve) => {\n this.selectBox.dropdown.close();\n this.popup\n .open(AXDataLovPopupComponent, {\n size: this.popupSize,\n // closable: false,\n data: {\n dataSource: this.dataSource,\n selectionMode: this.mode,\n columns: this.columns.toArray(),\n // selectedItems: this.selectedValues,\n selectedItems: this.selectedItems,\n keyField: this.valueField,\n allowNull: this.allowNull,\n hasChildField: this.hasChildField,\n rtl: this.rtl,\n pagination: this.pagination,\n },\n title: this.caption,\n // size: this.size,\n })\n .then((c) => {\n if (c.data) {\n // this.selectedValues = [];\n this.selectedItems = [];\n c.data.forEach((elm) => {\n this.selectedItems.push(elm);\n });\n // this.selectedItems = c.data;\n // this.selectBox.refresh();\n this.onSelectionChange.emit({\n data: this.selectedItems,\n component: this,\n htmlElement: this.ref.nativeElement,\n });\n if (resolve) {\n resolve(c.data);\n }\n } else {\n if (resolve) {\n resolve(this.selectedItems);\n }\n }\n\n this.selectBox.refresh();\n });\n });\n }\n}\n","<ax-select-box\n [rowInputTemplate]=\"rowTemplate\"\n [multiLine]=\"multiLine\"\n [rtl]=\"rtl\"\n [allowSearch]=\"allowSearch\"\n #selectBox\n [showDropDownButton]=\"false\"\n [allowNull]=\"allowNull\"\n [remoteOperation]=\"true\"\n [placeholder]=\"placeholder\"\n [size]=\"size\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [disabled]=\"disabled\"\n [mode]=\"mode\"\n [(selectedItems)]=\"selectedItems\"\n (selectionChanged)=\"handleSelectChange($event)\"\n [dataSource]=\"dataSource\"\n>\n <ng-container start>\n <ng-content select=\"[start]\"> </ng-content>\n </ng-container>\n <ng-container end>\n <ax-button\n icon=\"far fa-bars icon\"\n [disabled]=\"disabled\"\n type=\"light blank\"\n (click)=\"handleButtonClick()\"\n end\n [tabIndex]=\"-1\"\n >\n </ax-button>\n <ng-content select=\"[end]\"> </ng-content>\n </ng-container>\n</ax-select-box>\n\n<!-- <ax-select-box2 [rtl]=\"rtl\" [allowSearch]=\"allowSearch\" #selectBox [showDropDownButton]=\"false\" [allowNull]=\"allowNull\"\n [remoteOperation]=\"true\" [placeholder]=\"placeholder\" [size]=\"size\" [textField]=\"textField\" [valueField]=\"valueField\"\n [disabled]=\"disabled\" [selectionMode]=\"mode\" (onValueChanged)=\"handleSelectChange($event)\" [dataSource]=\"dataSource\"\n [(value)]=\"selectedItems\" selectionDataMode=\"item\">\n <ng-container start>\n <ng-content select=\"[start]\">\n </ng-content>\n </ng-container>\n <ng-container end>\n <ax-button icon=\"far fa-bars icon\" [disabled]=\"disabled\" type=\"primary blank\" (click)=\"handleButtonClick()\" end\n [tabIndex]=\"-1\">\n </ax-button>\n <ng-content select=\"[end]\">\n </ng-content>\n </ng-container>\n</ax-select-box2> -->\n\n<!-- <div class=\"ax-lov-box\" [style.display]=\"mode=='hidden' ? 'none':'unset'\">\n <div class=\"ax-field-set\">\n <div class=\"ax-field-set-wrapper\" [ngClass]=\"{ 'no-label': !label }\">\n <fieldset [ngClass]=\"{ 'input-focused': isFocused, 'input-error': errorText }\">\n <legend *ngIf=\"label\">\n {{ label }}\n </legend>\n </fieldset>\n <input type=\"text\" [(ngModel)]=\"text\" [placeholder]=\"placeholder\" (keyup)=\"handleKeyEvent($event)\"\n (blur)=\"handleBlurEvent($event)\" (focus)=\"handleFocusEvent($event)\" class=\"ax-text-box\" disabled />\n <div class=\"ax-field-set-button\">\n <button *ngIf=\"text && allowClear\" type=\"button\" class=\"btn btn-light\" (click)=\"clearText()\">\n <i class=\"far fa-times\"></i>\n </button>\n <button type=\"button\" class=\" btn btn-primary\" (click)=\"handleButtonClick($event)\">\n <i class=\"far fa-check-circle\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"validation-text\" *ngIf=\"errorText\">\n {{ errorText }}\n </div>\n\n</div> -->\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AXLOVComponent } from './data-lov.component';\nimport { FormsModule } from '@angular/forms';\nimport { AXDataLovPopupComponent } from './data-lov-popup/data-lov-popup.component';\nimport { AXDataGridModule } from '../data-grid/datagrid.module';\nimport { AXDataSourceModule, AXButtonModule, AXToolbarModule, AXSearchBoxModule, AXSelectBoxModule } from '@acorex/components';\n\n\n@NgModule({\n declarations: [AXLOVComponent, AXDataLovPopupComponent],\n imports: [CommonModule, FormsModule, AXDataGridModule, AXDataSourceModule, AXButtonModule, AXToolbarModule, AXSelectBoxModule, AXSearchBoxModule],\n exports: [AXLOVComponent, AXDataLovPopupComponent],\n providers: []\n})\nexport class AXLOVModule { }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.AXDataGridFilterComponent","i2.AXDataGridComponent","i3.AXGridSelectionColumn","i4"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-data-grid.mjs","sources":["../../../../libs/data-grid/src/lib/data-grid/templates/cell-template.component.ts","../../../../libs/data-grid/src/lib/data-grid/columns/column.component.ts","../../../../libs/data-grid/src/lib/data-grid/filters/filter.component.ts","../../../../libs/data-grid/src/lib/data-grid/columns/check-column.component.ts","../../../../libs/data-grid/src/lib/data-grid/columns/command-column.component.ts","../../../../libs/data-grid/src/lib/data-grid/columns/date-column.component.ts","../../../../libs/data-grid/src/lib/data-grid/columns/selection-column.component.ts","../../../../libs/data-grid/src/lib/data-grid/columns/text-column.component.ts","../../../../libs/data-grid/src/lib/data-grid/columns/row-number-column.component.ts","../../../../libs/data-grid/src/lib/data-grid/templates/detail-template.component.ts","../../../../libs/data-grid/src/lib/data-grid/templates/row-template.component.ts","../../../../libs/data-grid/src/lib/data-grid/datagrid.component.ts","../../../../libs/data-grid/src/lib/data-grid/datagrid.component.html","../../../../libs/data-grid/src/lib/data-grid/datagrid.module.ts","../../../../libs/data-grid/src/lib/data-lov/data-lov-popup/data-lov-popup.component.ts","../../../../libs/data-grid/src/lib/data-lov/data-lov-popup/data-lov-popup.component.html","../../../../libs/data-grid/src/lib/data-lov/data-lov.component.ts","../../../../libs/data-grid/src/lib/data-lov/data-lov.component.html","../../../../libs/data-grid/src/lib/data-lov/data-lov.module.ts","../../../../libs/data-grid/src/acorex-data-grid.ts"],"sourcesContent":["import { Component, ContentChild, TemplateRef, ChangeDetectionStrategy } from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { ICellRendererParams } from 'ag-grid-community';\n\n@Component({\n selector: 'ax-cell-template',\n template: `<ng-content></ng-content>\n `\n})\n\nexport class AXDataGridCellTemplateComponent {\n @ContentChild(TemplateRef, { static: true }) templateRef: TemplateRef<any>;\n renderer: any;\n params: any;\n constructor() {\n this.renderer = AXDataGridCellTemplateRenderer;\n }\n ngOnInit(): void {\n this.params = {\n templateRef: this.templateRef\n }\n }\n}\n\n@Component({\n template: `\n <ng-container *ngTemplateOutlet='templateRef; context: { $implicit: rowData }'>\n </ng-container>\n `\n})\n\nexport class AXDataGridCellTemplateRenderer implements ICellRendererAngularComp {\n rowData: any;\n templateRef: TemplateRef<any>;\n\n constructor() { }\n\n agInit(params: ICellRendererParams): void {\n this.rowData = params.data;\n this.templateRef = (params as any).templateRef;\n }\n\n refresh(params: ICellRendererParams): boolean {\n this.rowData = params.data;\n return true;\n }\n}","import { AXConfig } from '@acorex/core';\nimport { ContentChild, Directive, Input } from '@angular/core';\nimport { AXGridCellParams } from '../datagrid.events';\nimport { AXDataGridCellTemplateComponent } from '../templates/cell-template.component';\n\n@Directive()\nexport abstract class AXGridDataColumn {\n @ContentChild(AXDataGridCellTemplateComponent)\n cellTemplate: AXDataGridCellTemplateComponent;\n\n @Input()\n width: number = 100;\n\n @Input()\n maxWidth: number;\n\n @Input()\n minWidth: number;\n\n @Input()\n pinned: 'start' | 'end' | null = null;\n\n @Input()\n allowSorting: boolean = true;\n\n @Input()\n allowFiltering: boolean = AXConfig.get('datagrid.allowFiltering') || false;\n\n @Input()\n cellClass: (\n params: AXGridCellParams\n ) => (string | string[]) | (string | string[]);\n\n @Input()\n sort: 'asc' | 'desc' | null = null;\n\n @Input()\n field: string = '';\n\n @Input()\n caption: string = '';\n\n @Input()\n cellRendererParams: any;\n\n @Input()\n checkbox: boolean = false;\n\n @Input()\n headerCheckbox: boolean = false;\n\n @Input()\n groupIndex: number = -1;\n\n @Input()\n treeIndex: number = -1;\n\n @Input()\n enableRowGroup: boolean = false;\n\n @Input()\n hide: boolean = false;\n\n @Input()\n floatingFilter: boolean = AXConfig.get('datagrid.floatingFilter') || false;\n\n @Input()\n disableMenu: boolean = false;\n\n @Input()\n resizable: boolean = true;\n\n @Input()\n menuColumnDisable: boolean = false;\n\n @Input()\n menuItemDisable: boolean = false;\n\n constructor() {}\n\n render(): any {\n const col: any = {\n field: this.field,\n width: this.width,\n };\n col.resizable = this.resizable;\n col.suppressMenu = this.disableMenu;\n col.menuTabs = ['filterMenuTab', 'columnsMenuTab', 'generalMenuTab'];\n col.floatingFilter = this.floatingFilter;\n\n col.wrapText = true;\n\n col.autoHeight = true;\n\n col.wrapHeaderText = true;\n\n col.autoHeaderHeight = true;\n\n if (!this.allowFiltering) {\n col.filter = false;\n col.menuTabs = col.menuTabs.filter((c) => c != 'filterMenuTab');\n col.floatingFilter = false;\n }\n if (this.menuColumnDisable == true) {\n col.menuTabs = col.menuTabs.filter((c) => c != 'columnsMenuTab');\n }\n if (this.menuItemDisable == true) {\n col.menuTabs = col.menuTabs.filter((c) => c != 'generalMenuTab');\n }\n if (this.caption) {\n col.headerName = this.caption;\n }\n if (this.minWidth) {\n col.minWidth = this.minWidth;\n }\n if (this.maxWidth) {\n col.maxWidth = this.maxWidth;\n }\n if (this.pinned) {\n col.pinned = this.pinned === 'start' ? 'right' : 'left';\n // TODO: Change based on layout\n }\n if (this.allowSorting) {\n col.sortable = this.allowSorting;\n }\n if (this.sort) {\n col.sort = this.sort;\n }\n\n if (this.groupIndex >= 0) {\n col.rowGroupIndex = this.groupIndex;\n col.rowGroup = true;\n this.enableRowGroup = true;\n }\n\n if (this.treeIndex >= 0) {\n col.rowGroupIndex = this.treeIndex;\n col.rowGroup = false;\n }\n if (this.hide) {\n col.hide = true;\n }\n if (this.enableRowGroup) {\n col.enableRowGroup = this.enableRowGroup;\n }\n\n if (this.cellClass) {\n const THAT = this;\n if (this.cellClass instanceof Function) {\n col.cellClass = (p) => {\n return THAT.cellClass({\n column: THAT,\n rowIndex: p.node.rowIndex,\n rowLevel: p.node.level,\n data: p.data,\n value: p.value,\n });\n };\n } else {\n col.cellClass = this.cellClass;\n }\n }\n //\n if (this.cellTemplate != null) {\n col.cellRendererFramework = this.cellTemplate.renderer;\n col.cellRendererParams = this.cellTemplate.params;\n }\n\n if (this.checkbox) {\n col.checkboxSelection = (params) => {\n return true;\n };\n // col.headerCheckboxSelection = this.headerCheckbox;\n }\n return col;\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n\n@Component({\n selector: 'ax-data-grid-filter',\n template: `\n <div class='ax-grid-filter-container'>\n <ng-content></ng-content>\n <div class='btn-group' role='group'>\n <button type='button' class='btn btn-primary btn-sm'>\n <i class='fas fa-filter'></i>\n </button>\n <button type='button' class='btn btn-danger btn-sm'>\n <i class='fas fa-trash-alt'></i>\n </button>\n </div>\n </div>\n `,\n encapsulation: ViewEncapsulation.None\n})\nexport class AXDataGridFilterComponent {}\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { AXGridDataColumn } from './column.component';\nimport { ICellRendererAngularComp, IFilterAngularComp } from 'ag-grid-angular';\nimport {\n ICellRendererParams,\n IFilterParams,\n RowNode,\n IDoesFilterPassParams,\n IAfterGuiAttachedParams,\n} from 'ag-grid-community';\n\n@Component({\n selector: 'ax-check-column',\n template: '',\n providers: [{ provide: AXGridDataColumn, useExisting: AXGridCheckColumn }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXGridCheckColumn extends AXGridDataColumn {\n constructor() {\n super();\n }\n\n render() {\n const col = super.render();\n if (!col.cellRendererFramework) {\n col.cellRendererFramework = BooleanRenderer;\n }\n if (this.allowFiltering) {\n col.filterFramework = BooleanFilterRenderer;\n }\n return col;\n }\n}\n\n@Component({\n template: ` <ax-check-box [value]=\"value\" readonly=\"true\"></ax-check-box> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BooleanRenderer implements ICellRendererAngularComp {\n value: boolean;\n constructor() {}\n agInit(params: ICellRendererParams): void {\n this.value = params.value;\n }\n refresh(params: ICellRendererParams): boolean {\n this.value = params.value;\n return true;\n }\n}\n\n@Component({\n template: `\n <ax-data-grid-filter>\n <ax-select-box label=\"Select Box\" [items]=\"selectItem\"></ax-select-box>\n </ax-data-grid-filter>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BooleanFilterRenderer implements IFilterAngularComp {\n public value?: boolean = null;\n private params: IFilterParams;\n private valueGetter: (rowNode: RowNode) => any;\n @ViewChild('input', { static: true, read: ViewContainerRef }) public input;\n\n selectItem = [\n { value: 0, label: 'True' },\n { value: 1, label: 'False' },\n ];\n agInit(params: IFilterParams): void {\n this.params = params;\n this.valueGetter = params.valueGetter as any;\n }\n\n isFilterActive(): boolean {\n return this.value !== null && this.value !== undefined;\n }\n\n doesFilterPass(params: IDoesFilterPassParams | any): boolean {\n return this.value === this.valueGetter(params.node);\n }\n\n getModel(): any {\n return { value: this.value };\n }\n\n setModel(model: any): void {\n this.value = model ? model.value : null;\n }\n\n ngAfterViewInit(params: IAfterGuiAttachedParams): void {\n window.setTimeout(() => {\n this.input.element.nativeElement.focus();\n });\n }\n\n onChange(newValue): void {\n if (this.value !== newValue) {\n this.value = newValue;\n this.params.filterChangedCallback();\n }\n }\n}\n","import { AXGridDataColumn } from './column.component';\nimport { ChangeDetectionStrategy, Component, Input, EventEmitter, ViewEncapsulation, Output, ChangeDetectorRef } from '@angular/core';\nimport { ICellRendererParams } from 'ag-grid-community';\nimport { AXGridRowCommandEvent } from '../datagrid.events';\nimport { AXMenuItem } from '@acorex/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nexport type AXGridRowCommandFunction = (row: any) => AXMenuItem[];\n\n@Component({\n selector: 'ax-command-column',\n template: '',\n providers: [{ provide: AXGridDataColumn, useExisting: AXGridCommandColumn }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class AXGridCommandColumn extends AXGridDataColumn {\n @Input()\n items: AXMenuItem[] | AXGridRowCommandFunction = [];\n\n @Output()\n onItemClick: EventEmitter<AXGridRowCommandEvent> = new EventEmitter<AXGridRowCommandEvent>();\n\n render() {\n const col = super.render();\n if (!col.cellRendererFramework) {\n col.cellRendererFramework = CommandRenderer;\n }\n col.cellRendererParams = {\n items: this.items,\n onClick: (e) => {\n this.onItemClick.emit({\n command: e.name,\n data: e.data,\n rowIndex: e.rowIndex,\n rowLevel: e.rowLevel,\n htmlEvent: e.htmlEvent\n });\n }\n };\n col.sortable = false;\n col.filter = false;\n col.valueGetter = (params) => {\n return this.items;\n };\n return col;\n }\n}\n\n@Component({\n selector: 'ax-command-cell',\n template: `\n <ng-container *ngFor=\"let item of items; let i = index\">\n <button *ngIf=\"item.visible !== false\"\n class=\"ax button md ax-grid-command-button {{ item.style || 'ax primary blank' }}\"\n [class.disabled]=\"item.disable\"\n type=\"button\"\n [title]=\"item.tooltip\"\n [attr.tabindex]=\"i\"\n (click)=\"onClick(item, $event)\"\n >\n <i [ngClass]=\"item.icon\"></i>{{ item.text }}\n </button>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CommandRenderer implements ICellRendererAngularComp {\n items: AXMenuItem[] | AXGridRowCommandFunction = [];\n node: any;\n private clickCallback: Function;\n\n constructor() { }\n\n agInit(params: ICellRendererParams): void {\n this.mapParams(params);\n }\n\n refresh(params: ICellRendererParams): boolean {\n this.mapParams(params);\n return true;\n }\n\n private mapParams(params: any) {\n this.node = params.node;\n this.items = typeof params.items == 'function' ? params.items({ data: this.node.data }) : Array.isArray(params.items) ? params.items : [];\n this.clickCallback = params.onClick;\n }\n\n onClick(item: AXMenuItem, e: MouseEvent) {\n if (this.clickCallback && !item.disable) {\n this.clickCallback({\n name: item.name,\n rowLevel: this.node.level,\n rowIndex: this.node.rowIndex,\n data: this.node.data,\n htmlEvent: e\n });\n }\n }\n}\n","\nimport {\n Component,\n ChangeDetectionStrategy,\n Input,\n ViewEncapsulation,\n ViewChild,\n ElementRef\n} from '@angular/core';\nimport { AXGridDataColumn } from './column.component';\nimport { AXDateTime, AXConfig, AXCalendarType } from '@acorex/core';\nimport { AXDatePickerComponent } from '@acorex/components';\n@Component({\n selector: 'ax-date-column',\n template: '',\n providers: [{ provide: AXGridDataColumn, useExisting: AXGridDateColumn }],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AXGridDateColumn extends AXGridDataColumn {\n constructor() {\n super();\n }\n\n @Input()\n format: string;\n\n @Input()\n type: AXCalendarType = AXConfig.get('dateTime.type');\n\n render() {\n const col = super.render();\n col.cellRendererParams = {\n format: this.format,\n };\n\n col.comparator = (valueA: any, valueB: any) => {\n const date1 = AXDateTime.convert(valueA);\n const date2 = AXDateTime.convert(valueB);\n //\n if (date1 === null && date2 === null) {\n return 0;\n }\n if (date1 === null) {\n return -1;\n }\n if (date2 === null) {\n return 1;\n }\n return (date1.date.getTime() - date2.date.getTime());\n };\n\n col.valueFormatter = (params) => {\n const date: AXDateTime = AXDateTime.convert(params.value, this.type);\n if (date) {\n return date.format(this.format);\n }\n else {\n return null;\n }\n };\n col.filter = 'agDateColumnFilter';\n // col.floatingFilter = true;\n return col;\n }\n}\n\n@Component({\n selector: 'ax-data-picker-filter',\n template: `<ax-date-picker [selectableHoliday]=\"selectableHoliday\" [allowClear]=\"true\" (onValueChanged)=\"onValueChanged($event)\" size=\"sm\">\n </ax-date-picker>`,\n host: { },\n encapsulation: ViewEncapsulation.None\n})\nexport class AXDatePickerFilterComponent {\n @ViewChild(AXDatePickerComponent)\n datePicker: AXDatePickerComponent;\n @ViewChild('div', { read: ElementRef }) div: ElementRef;\n selectableHoliday: boolean = false;\n type: string = 'jalali';\n date: Date;\n params: any;\n picker: any;\n\n\n agInit(params: any): void {\n this.params = params;\n }\n\n ngAfterViewInit() {\n\n }\n ngOnDestroy() {\n }\n\n onDateChanged(selectedDates) {\n //this.date = selectedDates[0] || null;\n this.params.onDateChanged();\n }\n\n getDate(): Date {\n return this.date;\n }\n\n setDate(date: Date): void {\n this.date = date || null;\n //this.picker.setDate(date);\n }\n\n setInputPlaceholder(placeholder: string): void {\n //this.div.nativeElement.setAttribute('placeholder', placeholder);\n }\n onValueChanged(e) {\n\n this.setDate(e.value);\n this.onDateChanged(e.value);\n }\n\n}\n","import { AXGridDataColumn } from './column.component';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'ax-selection-column',\n template: '',\n providers: [{ provide: AXGridDataColumn, useExisting: AXGridSelectionColumn }],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AXGridSelectionColumn extends AXGridDataColumn {\n constructor() {\n super();\n }\n\n ngOnInit(): void {}\n\n @Input()\n condition: (params) => boolean;\n\n @Input()\n pinned: 'start' | 'end' = 'start';\n\n @Input()\n width: number = 40;\n\n render() {\n const col = super.render();\n col.checkboxSelection = this.condition ? this.condition : true;\n // col.headerCheckboxSelection = true;\n col.pinned = this.pinned === 'start' ? 'right' : 'left';\n col.filter = false;\n col.resizable = true;\n col.sortable = false;\n col.minWidth = 5;\n col.width = this.width;\n col.floatingFilter = false;\n return col;\n }\n}\n","import { AXGridDataColumn } from './column.component';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewContainerRef,\n ViewChild,\n} from '@angular/core';\nimport {\n IFilterParams,\n RowNode,\n IDoesFilterPassParams,\n IAfterGuiAttachedParams,\n} from 'ag-grid-community';\nimport { IFilterAngularComp } from 'ag-grid-angular';\nimport { AXTextBoxComponent } from '@acorex/components';\n\n@Component({\n selector: 'ax-text-column',\n template: '',\n providers: [{ provide: AXGridDataColumn, useExisting: AXGridTextColumn }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXGridTextColumn extends AXGridDataColumn {\n constructor() {\n super();\n }\n\n render() {\n const col = super.render();\n // if (this.allowFiltering) {\n // col.filterFramework = TextFilterRenderer;\n // }\n col.filter = 'agTextColumnFilter';\n return col;\n }\n}\n\n@Component({\n template: `\n <ax-data-grid-filter>\n <ax-text-box\n label=\"Filter\"\n allowClear=\"true\"\n (textChange)=\"onChange($event)\"\n >\n </ax-text-box>\n </ax-data-grid-filter>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextFilterRenderer implements IFilterAngularComp {\n public value?: string = null;\n private params: IFilterParams;\n private valueGetter: (rowNode: RowNode) => any;\n @ViewChild(AXTextBoxComponent, { static: true })\n private input: AXTextBoxComponent;\n\n agInit(params: IFilterParams): void {\n this.params = params;\n this.valueGetter = params.valueGetter as any;\n }\n\n isFilterActive(): boolean {\n return this.value !== null && this.value !== undefined;\n }\n\n doesFilterPass(params: IDoesFilterPassParams | any): boolean {\n return this.value === this.valueGetter(params.node);\n }\n\n getModel(): any {\n return { value: this.value };\n }\n\n setModel(model: any): void {\n this.onChange(model ? model.value : null);\n }\n\n ngAfterViewInit(params: IAfterGuiAttachedParams): void {\n window.setTimeout(() => {\n this.input.focus();\n });\n }\n\n onChange(newValue): void {\n if (this.value !== newValue) {\n this.value = newValue;\n if (this.value === '') {\n this.value = null;\n }\n this.params.filterChangedCallback();\n }\n }\n}\n","import { AXGridDataColumn } from './column.component';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { AXConfig } from '@acorex/core';\n\n@Component({\n selector: 'ax-row-number-column',\n template: '',\n providers: [{ provide: AXGridDataColumn, useExisting: AXGridRowNumberColumn }],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AXGridRowNumberColumn extends AXGridDataColumn {\n constructor() {\n super();\n }\n\n ngOnInit(): void {}\n\n @Input()\n condition: (params) => boolean;\n\n render() {\n const col = super.render();\n // col.checkboxSelection = this.condition ? this.condition : true;\n // col.headerCheckboxSelection = true;\n\n (col.headerName = this.caption ? this.caption : AXConfig.get('layout.rtl') ? 'ردیف' : 'Row'),\n (col.valueGetter = 'node.rowIndex + 1'),\n (col.pinned = this.pinned == null ? null : this.pinned === 'start' ? 'right' : 'left'),\n (col.filter = false);\n col.resizable = true;\n col.sortable = false;\n col.width = this.width;\n\n return col;\n }\n}\n","import { Component, ContentChild, TemplateRef, Input, ChangeDetectorRef } from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\n@Component({\n selector: 'ax-grid-detail-template',\n template: `<ng-content></ng-content>`\n})\n\nexport class AXDataGridDetailTemplateComponent {\n @ContentChild(TemplateRef, { static: true }) templateRef: TemplateRef<any>;\n renderer: any;\n params: any;\n constructor() {\n this.renderer = AXDataGridDetailTemplateRenderer;\n }\n ngOnInit(): void {\n this.params = {\n templateRef: this.templateRef\n }\n }\n\n @Input()\n height: number = 100;\n}\n\n@Component({\n template: `<ng-container *ngTemplateOutlet='templateRef; context: { $implicit: data }'></ng-container>`\n})\n\nexport class AXDataGridDetailTemplateRenderer implements ICellRendererAngularComp {\n\n refresh(params: any): boolean {\n return false;\n }\n\n templateRef: TemplateRef<any>;\n data: any;\n\n agInit(params: any): void {\n this.data = params.data;\n this.templateRef = params.templateRef;\n }\n}","import { Component, ContentChild, TemplateRef, Input } from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\n@Component({\n selector: 'ax-row-template',\n template: `<ng-content></ng-content>`\n})\n\nexport class AXDataGridRowTemplateComponent {\n @ContentChild(TemplateRef, { static: true }) templateRef: TemplateRef<any>;\n renderer: any;\n params: any;\n constructor() {\n this.renderer = AXDataGridRowTemplateRenderer;\n }\n ngOnInit(): void {\n this.params = {\n templateRef: this.templateRef\n }\n }\n}\n\n@Component({\n template: `<ng-container *ngTemplateOutlet='templateRef; context: { $implicit: data }'></ng-container>`\n})\n\nexport class AXDataGridRowTemplateRenderer implements ICellRendererAngularComp {\n\n templateRef: TemplateRef<any>;\n\n data: any;\n\n refresh(params: any): boolean {\n return false;\n }\n\n agInit(params: any): void {\n this.data = params.data.callRecords;\n this.templateRef = params.templateRef;\n }\n}","import {\n AXDataSourceComponent,\n AXDataSourceReadParams,\n} from '@acorex/components';\nimport {\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n} from '@angular/core';\nimport {\n CellClickedEvent,\n CellEvent,\n FirstDataRenderedEvent,\n GridApi,\n GridOptions,\n GridSizeChangedEvent,\n RowClickedEvent,\n RowEvent,\n} from 'ag-grid-community';\nimport { AXGridDataColumn } from './columns/column.component';\n\nimport { ViewEncapsulation } from '@angular/core';\nimport { LicenseManager } from 'ag-grid-enterprise';\nimport {\n AXGridCellEvent,\n AXGridRowEvent,\n AXGridRowParams,\n AXGridRowSelectionEvent,\n} from './datagrid.events';\n\nimport {\n AXDataEvent,\n AXToolbarComponent,\n AXToolbarSearchComponent,\n AXValueEvent,\n} from '@acorex/components';\nimport { AXConfig, AXTranslator } from '@acorex/core';\nimport { AXDatePickerFilterComponent } from './columns/date-column.component';\nimport { AXDataGridDetailTemplateComponent } from './templates/detail-template.component';\nimport { AXDataGridRowTemplateComponent } from './templates/row-template.component';\n\nLicenseManager.prototype.isDisplayWatermark = () => {\n return false;\n};\nLicenseManager.prototype.validateLicense = function () {\n //console.info('Cracked by Arash Oshnoudi!');\n};\n\n// WatermarkComp.prototype.shouldDisplayWatermark = function () {\n// return false;\n// }\n\nexport class AXDataGridColumnsChangeEvent extends AXValueEvent<\n AXGridDataColumn[]\n> {\n declare component: AXDataGridComponent;\n}\nexport class AXDataGridCellEvent extends AXDataEvent<AXGridCellEvent> {\n declare component: AXDataGridComponent;\n}\nexport class AXDaagridRowClickEvent extends AXDataEvent<AXGridRowEvent> {\n declare component: AXDataGridComponent;\n}\n\nexport class AXDataGridSelectionChangeEvent extends AXDataEvent<AXGridRowSelectionEvent> {\n declare component: AXDataGridComponent;\n}\n\nexport class AXDataGridRowSelectionChangeEvent extends AXDataEvent<any> {\n declare component: AXDataGridComponent;\n declare selected: boolean;\n}\n\n@Component({\n selector: 'ax-data-grid',\n templateUrl: './datagrid.component.html',\n encapsulation: ViewEncapsulation.None,\n // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AXDataGridComponent {\n private gridApi;\n private dataSourceSuccessCallback;\n localeText: any;\n\n gridOptions: GridOptions;\n columnDefs: any[] = [];\n rowModelType = 'clientSide';\n fullWidthCellRendererFramework: any;\n fullWidthCellRendererParams: any;\n frameworkComponents: any = {};\n isFullWidthCell: Function;\n internalHeight = '100%';\n detailCellRenderer: any;\n detailCellRendererParams: any;\n detailRowHeight: number;\n masterDetail = false;\n treeData = false;\n enabelSelect = false;\n gridView = false;\n groupSelectsChildren = false;\n oldSelectionNodes: any[] = [];\n // @Input()\n // showRowNumber: boolean = true;\n @Input()\n paginationAutoPageSize = false;\n\n @Input()\n paginationPageSize = 20;\n\n cacheBlockSize = this.paginationPageSize;\n\n @Input()\n public remoteOperation = false;\n\n @Input()\n public rowMultiSelectWithClick = false;\n\n @Input()\n public suppressRowClickSelection = false;\n\n @Input()\n public suppressCellSelection = false;\n\n @Input()\n public sizeColumnsToFit = true;\n\n @Input()\n showCheckBox = true;\n\n @Input()\n floatingFilter = false;\n\n @Input()\n autoExpand = false;\n\n @Input()\n rowSelectableConditionField: string;\n\n // @Input()\n // takeCount: number;\n\n autoGroupColumnDef: any = {};\n\n @Input()\n selectionMode: 'single' | 'multiple' = 'single';\n\n // @Input()\n // allowFiltering: boolean = false;\n\n @Input()\n pagination: boolean = true;\n\n @Input()\n selectRow: any[] = [];\n\n @Input()\n rowGroupPanelShow: 'always' | 'never' = 'never';\n\n @Input()\n loadOnInit: boolean = true;\n\n @Input()\n enableRangeSelection = false;\n\n // @Input()\n // groupDefaultExpanded: number = 0;\n\n @Input()\n keyField: string = 'null';\n\n @Input()\n hasChildField: string = 'null';\n\n private _searchText: string;\n @Input()\n public get searchText(): string {\n return this._searchText;\n }\n public set searchText(v: string) {\n if (v !== this._searchText) {\n this._searchText = v;\n if (this.gridApi) {\n this.refresh();\n this.gridApi.setQuickFilter(this.searchText);\n }\n }\n }\n\n private _filter: any[];\n @Input()\n public get filter(): any[] {\n return this._filter;\n }\n public set filter(v: any[]) {\n if (v !== this._filter) {\n this._filter = v;\n this._filter.forEach((f) => {\n const fc = this.gridApi.getFilterInstance(f.field);\n if (fc) {\n const ff = fc.getFrameworkComponentInstance();\n ff.setModel(f);\n }\n });\n }\n }\n\n @ContentChildren(AXGridDataColumn)\n private _inlineColumns: QueryList<AXGridDataColumn>;\n\n @Output()\n columnsChange: EventEmitter<AXDataGridColumnsChangeEvent> =\n new EventEmitter<AXDataGridColumnsChangeEvent>();\n\n private _columns: AXGridDataColumn[] = [];\n @Input()\n public get columns(): AXGridDataColumn[] {\n return this._inlineColumns\n ? [...this._columns, ...this._inlineColumns.toArray()]\n : this._columns;\n }\n\n public set columns(val: AXGridDataColumn[]) {\n if (val && val.length) {\n let old = this._columns;\n this._columns = val;\n this.columnsChange.emit({\n component: this,\n value: val,\n oldValue: old,\n htmlElement: this.ref.nativeElement,\n });\n }\n }\n\n defaultColDef: any = {\n filter: true,\n floatingFilter: true,\n };\n\n @Input()\n rowHeight: any;\n\n @ContentChild(AXToolbarSearchComponent, { static: true })\n searchInput: AXToolbarSearchComponent;\n\n @ContentChild(AXToolbarComponent, { static: true })\n toolbar: AXToolbarComponent;\n\n @ContentChild(AXDataGridRowTemplateComponent, { static: true })\n rowTemplate: AXDataGridRowTemplateComponent;\n\n @ContentChild(AXDataGridDetailTemplateComponent, { static: true })\n gridDetailTemplate: AXDataGridDetailTemplateComponent;\n\n @ContentChild(AXDataSourceComponent, { static: true })\n private _contentDataSource: AXDataSourceComponent;\n\n private _dataSource: AXDataSourceComponent;\n\n @Input()\n public get dataSource(): AXDataSourceComponent {\n return this._dataSource ? this._dataSource : this._contentDataSource;\n }\n\n public set dataSource(v: AXDataSourceComponent) {\n this._dataSource = v;\n }\n\n @Input()\n groupHideOpenParents: boolean = false;\n\n @Output()\n cellClick: EventEmitter<AXDataGridCellEvent> =\n new EventEmitter<AXDataGridCellEvent>();\n\n @Output()\n cellDbClick: EventEmitter<AXDataGridCellEvent> =\n new EventEmitter<AXDataGridCellEvent>();\n\n @Output()\n cellFocuse: EventEmitter<AXDataGridCellEvent> =\n new EventEmitter<AXDataGridCellEvent>();\n\n @Output()\n rowClick: EventEmitter<AXDaagridRowClickEvent> =\n new EventEmitter<AXDaagridRowClickEvent>();\n\n @Output()\n rowDbClick: EventEmitter<AXDaagridRowClickEvent> =\n new EventEmitter<AXDaagridRowClickEvent>();\n\n @Output()\n selectionChanged: EventEmitter<AXDataGridSelectionChangeEvent> =\n new EventEmitter<AXDataGridSelectionChangeEvent>();\n\n @Output()\n rowSelectionChange: EventEmitter<AXDataGridSelectionChangeEvent> =\n new EventEmitter<AXDataGridSelectionChangeEvent>();\n\n @Output()\n onRowSelectionChanged: EventEmitter<AXDataGridRowSelectionChangeEvent> =\n new EventEmitter<AXDataGridRowSelectionChangeEvent>();\n\n @Input()\n rowClass?: (\n params: AXGridRowParams\n ) => (string | string[]) | (string | string[]);\n\n @Input()\n rtl: boolean = AXConfig.get('layout.rtl');\n\n constructor(\n private ref: ElementRef<HTMLDivElement>,\n private cdr: ChangeDetectorRef\n ) {\n this.localeText = AXTranslator.get('dataGrid');\n }\n\n private calcHeight(): void {\n if (this.toolbar) {\n this.internalHeight = `calc(100% - ${40}px)`;\n } else {\n this.internalHeight = '100%';\n }\n }\n\n private get intenalGridDataSource() {\n const that = this;\n return {\n rowCount: null,\n getRows: (params) => {\n that.dataSourceSuccessCallback = params.successCallback;\n\n const loadParams: AXDataSourceReadParams = {};\n\n loadParams.searchText = that.searchText;\n\n loadParams.skip = params.request.startRow;\n\n loadParams.take = params.request.endRow - params.request.startRow;\n\n loadParams.sort = params.request.sortModel.map((c) => {\n return {\n field: c.colId,\n dir: c.sort,\n };\n });\n\n loadParams.group = {\n fields: params.request.rowGroupCols.map((r) => r.field),\n keys: params.request.groupKeys,\n parentData: params.parentNode.data,\n };\n\n loadParams.filter = params.request.filterModel;\n\n that.dataSource.fetch(loadParams);\n },\n };\n }\n getMainMenuItems(e) {\n return ['pinSubMenu', 'separator'];\n }\n\n ngOnDestroy(): void {\n this.gridApi.destroy();\n }\n\n isServerSideGroup = (e) => {\n return e[this.hasChildField];\n };\n\n getColumnDefs = () => {\n return this.gridApi.getColumnDefs();\n };\n\n getCurrentPageNumber = () => {\n return {\n current: this.gridApi.paginationGetCurrentPage() + 1,\n total: this.gridApi.paginationGetTotalPages(),\n };\n };\n\n paginationGoToPage(number) {\n this.gridApi.paginationGoToPage(number - 1);\n }\n\n getServerSideGroupKey = (e) => {\n return e[this.keyField];\n };\n internalGridReady(gridOptions) {\n if (this.remoteOperation && !this.paginationAutoPageSize) {\n this.handlePageSize();\n } else {\n this.cacheBlockSize =\n this.paginationPageSize > 20 ? this.paginationPageSize : 100;\n }\n\n this.gridApi = gridOptions.api;\n\n this.mapColumns();\n this.calcHeight();\n\n if (!this.loadOnInit) {\n this.loadOnInit = true;\n return;\n }\n\n if (this.remoteOperation) {\n this.gridApi.setServerSideDatasource(this.intenalGridDataSource);\n }\n\n if (!this.remoteOperation) {\n this.refresh();\n }\n }\n\n ngAfterContentInit(): void {\n const that = this;\n if (this.rowTemplate) {\n this.fullWidthCellRendererFramework = this.rowTemplate.renderer;\n this.fullWidthCellRendererParams = this.rowTemplate.params;\n }\n this.frameworkComponents.agDateInput = AXDatePickerFilterComponent;\n\n if (this.gridDetailTemplate) {\n this.masterDetail = true;\n this.detailCellRendererParams = this.gridDetailTemplate.params;\n this.detailCellRenderer = 'detailRendererFramework';\n this.frameworkComponents.detailRendererFramework =\n this.gridDetailTemplate.renderer;\n\n this.detailRowHeight = this.gridDetailTemplate.height;\n }\n this.isFullWidthCell = () => {\n return that.rowTemplate != null;\n };\n }\n\n ngOnInit(): void {\n if (this.selectionMode === 'single') {\n this.groupSelectsChildren = false;\n }\n if (this.keyField !== 'null' && this.hasChildField !== 'null') {\n this.rowGroupPanelShow = 'never';\n this.treeData = true;\n }\n if (this.remoteOperation) {\n this.rowModelType = 'serverSide';\n }\n //\n if (this.rtl == null) {\n this.rtl =\n window\n .getComputedStyle(this.ref.nativeElement, null)\n .getPropertyValue('direction') === 'rtl';\n }\n //\n }\n\n gridSelectRow() {\n if (this.gridApi) {\n if (\n this.selectRow &&\n this.selectRow.length > 0 &&\n this.gridApi !== undefined &&\n typeof this.selectRow[0] != 'object'\n ) {\n this.gridApi.forEachNode((node) => {\n if (node.data !== undefined) {\n let select: boolean = false;\n this.selectRow.forEach((id) => {\n if (node.data[this.keyField] === id) {\n select = true;\n node.setSelected(select);\n }\n });\n }\n });\n } else {\n this.gridApi.forEachNode((node) => {\n if (node.data !== undefined) {\n let select: boolean = false;\n if (this.selectRow.length) {\n this.selectRow.forEach((item) => {\n if (item.rowIndex != undefined && item.rowLevel != undefined) {\n if (node.data[this.keyField] === item.data[this.keyField]) {\n select = true;\n }\n } else {\n if (\n this.keyField !== 'null' &&\n node.data[this.keyField] === item[this.keyField]\n ) {\n select = true;\n }\n }\n });\n }\n if (this.rowSelectableConditionField) {\n node.setRowSelectable(\n node.data[this.rowSelectableConditionField]\n );\n }\n node.setSelected(select);\n }\n });\n }\n }\n }\n\n rebuildGrid() {\n this.mapColumns();\n setTimeout(() => {\n if (this.sizeColumnsToFit) {\n this.gridApi.sizeColumnsToFit();\n }\n }, 10);\n }\n\n ngAfterViewInit(): void {\n if (this.treeData === true) {\n this.columnDefs = this.columns.map((c) => c.render());\n\n const groupColumn = this.columnDefs.find(\n (c) => c.rowGroupIndex == '0' && c.field !== ''\n );\n\n this.autoGroupColumnDef = {\n headerName: groupColumn.headerName,\n width: groupColumn.width,\n cellRendererParams: { checkbox: this.showCheckBox },\n field: groupColumn.field,\n };\n\n this.columnDefs.forEach((elm) => {\n if (elm.rowGroupIndex > -1) {\n elm.hide = true;\n }\n });\n }\n this.gridView = true;\n\n this.enabelSelect = true;\n this.dataSource.onDataReceived.subscribe((_data) => {\n const result = _data.data.result;\n this.hideLoading();\n let items: any[];\n let totalCount: number;\n if (Array.isArray(result)) {\n items = result;\n totalCount = result.length;\n } else {\n items = result.items;\n totalCount = result.totalCount;\n }\n if (this.dataSourceSuccessCallback) {\n if (!this.loadOnInit) {\n this.dataSourceSuccessCallback([], 0);\n } else {\n this.dataSourceSuccessCallback(items, totalCount);\n }\n } else {\n if (!this.loadOnInit && this.gridApi !== undefined) {\n this.gridApi.setRowData([]);\n } else if (this.gridApi !== undefined) {\n this.gridApi.setRowData(items);\n }\n }\n\n this.gridSelectRow();\n });\n\n this.dataSource.onFetchStart.subscribe(() => {\n this.showLoading();\n });\n\n if (this.searchInput) {\n this.searchInput.onValueChanged.subscribe((c) => {\n this.searchText = c.value;\n });\n }\n this.cdr.detectChanges();\n }\n\n mapColumns() {\n this.columnDefs = this.columns.map((c) => c.render());\n if (this.gridDetailTemplate) {\n if (\n this.columnDefs[0].checkboxSelection === true &&\n this.columnDefs[0].field === ''\n ) {\n this.columnDefs[1].cellRenderer = 'agGroupCellRenderer';\n } else {\n this.columnDefs[0].cellRenderer = 'agGroupCellRenderer';\n }\n }\n\n if (this.hasChildField === 'null') {\n const groupColumn = this.columnDefs.find(\n (c) => c.rowGroupIndex === undefined && c.field !== ''\n );\n if (groupColumn && this.groupHideOpenParents == false) {\n this.autoGroupColumnDef = {\n headerName: groupColumn.headerName,\n width: groupColumn.width,\n cellRendererParams: { checkbox: this.showCheckBox },\n field: groupColumn.field,\n };\n }\n }\n\n this.columnDefs.forEach((elm) => {\n if (elm.rowGroupIndex > -1) {\n elm.hide = true;\n }\n });\n }\n\n displayedColumnsChanged(e) {\n if (this.hasChildField === 'null') {\n const ee = e.columnApi.getAllDisplayedColumnGroups();\n const eee = ee.find(\n (c) => c.colId !== 'ag-Grid-AutoColumn' && c.colId !== '0'\n );\n if (eee && eee.colId) {\n this.autoGroupColumnDef = {\n headerName: eee.colDef.headerName,\n width: eee.colDef.width,\n cellRendererParams: { checkbox: this.showCheckBox },\n field: eee.colDef.field,\n };\n }\n }\n }\n\n refresh(route: any[] = []) {\n if (this.remoteOperation && this.gridApi !== undefined) {\n // this.gridApi.purgeServerSideCache(route);\n this.gridApi.setServerSideDatasource(this.intenalGridDataSource);\n } else {\n this.dataSource.fetch(null);\n }\n }\n\n internalGridCellClicked(e: CellClickedEvent) {\n this.cellClick.emit({\n data: this.mapCellEvent(e),\n component: this,\n htmlElement: this.ref.nativeElement,\n });\n }\n\n internalGridCellDoubleClicked(e: CellClickedEvent) {\n this.cellDbClick.emit({\n data: this.mapCellEvent(e),\n component: this,\n htmlElement: this.ref.nativeElement,\n });\n }\n\n internalGridCellFocused(e: CellClickedEvent) {\n this.cellFocuse.emit({\n data: this.mapCellEvent(e),\n htmlElement: this.ref.nativeElement,\n component: this,\n });\n }\n\n internalGridRowClicked(e: RowClickedEvent) {\n if (!e.node.group) {\n this.rowClick.emit({\n data: this.mapRowEvent(e),\n component: this,\n htmlElement: this.ref.nativeElement,\n });\n }\n }\n\n internalGridRowDoubleClicked(e: CellClickedEvent) {\n if (!e.node.group) {\n this.rowDbClick.emit({\n data: this.mapRowEvent(e),\n htmlElement: this.ref.nativeElement,\n component: this,\n });\n }\n }\n\n differenceOf2Arrays(array1: any, array2: any) {\n const temp = [];\n for (const i in array1) {\n if (array2.indexOf(array1[i]) === -1) {\n temp.push(array1[i]);\n }\n }\n for (const i in array2) {\n if (array1.indexOf(array2[i]) === -1) {\n temp.push(array2[i]);\n }\n }\n return temp.sort((a, b) => a - b);\n }\n\n rowSelectionChanged(e) {\n if (e.node.selected == true) {\n this.selectRow = this.selectRow.filter(\n (c) => c[this.keyField] != e.data[this.keyField]\n );\n this.selectRow.push(e.data);\n } else {\n this.selectRow = this.selectRow.filter(\n (c) => c[this.keyField] != e.data[this.keyField]\n );\n }\n this.rowSelectionChange.emit({\n component: this,\n data: e,\n htmlElement: this.ref.nativeElement,\n });\n }\n\n internalGridSelectionChanged(e) {\n const args: AXGridRowSelectionEvent = { items: [] };\n const oldNodes = this.oldSelectionNodes;\n const nodes = this.gridApi.getSelectedNodes();\n\n if (this.autoExpand) {\n const unselectedNodes = oldNodes.filter(\n (oldNode) => !nodes.some((newNode) => newNode === oldNode)\n );\n unselectedNodes.forEach((el) => {\n el.setExpanded(false);\n });\n }\n\n nodes.forEach((i) => {\n if (this.autoExpand) {\n i.setExpanded(true);\n }\n args.items.push({\n rowLevel: i.level,\n rowIndex: i.rowIndex,\n data: i.data,\n });\n });\n this.selectionChanged.emit({\n data: args,\n component: this,\n htmlElement: this.ref.nativeElement,\n });\n let action = nodes.length > oldNodes.length ? true : false;\n const node = this.differenceOf2Arrays(nodes, oldNodes);\n this.onRowSelectionChanged.emit({\n component: this,\n selected: action,\n data: node,\n htmlElement: this.ref.nativeElement,\n });\n this.oldSelectionNodes = nodes;\n }\n\n private mapCellEvent(e: CellEvent): AXGridCellEvent {\n return {\n rowLevel: 0,\n column: e.column,\n data: e.data,\n rowIndex: e.rowIndex,\n value: e.value,\n };\n }\n\n private mapRowEvent(e: RowEvent): AXGridRowEvent {\n return {\n rowLevel: 0,\n data: e.data,\n rowIndex: e.rowIndex,\n };\n }\n\n public deselectAll() {\n this.gridApi.deselectAll();\n }\n\n public deselectByKeyField(keyField) {\n this.gridApi.forEachNode((node) => {\n if (node.data !== undefined) {\n let select: boolean = false;\n if (node.data[this.keyField] === keyField) {\n node.setSelected(select);\n this.selectRow = this.selectRow.filter(\n (c) => c[this.keyField] != keyField\n );\n }\n }\n });\n }\n\n internalGetRowClass = (p: any) => {\n if (this.rowClass) {\n if (this.rowClass instanceof Function) {\n return this.rowClass({\n rowIndex: p.node.rowIndex,\n rowLevel: p.node.level,\n data: p.data,\n });\n } else {\n return this.rowClass;\n }\n }\n };\n\n showLoading(): void {\n if (this.gridApi) {\n this.gridApi.showLoadingOverlay();\n }\n }\n\n hideLoading(): void {\n if (this.gridApi) {\n this.gridApi.hideOverlay();\n }\n }\n\n internalGridSizeChanged(e: GridSizeChangedEvent) {\n if (e.clientWidth > 0 && e.clientHeight > 0) {\n this.performSizeColumnsToFit(e.api);\n }\n }\n\n internalGridFirstDataRendered(e: FirstDataRenderedEvent) {\n this.performSizeColumnsToFit(e.api);\n // this.headerHeightSetter();\n }\n\n handleColumnResized(e) {\n // this.headerHeightSetter();\n }\n\n private performSizeColumnsToFit(api: GridApi) {\n if (this.sizeColumnsToFit) {\n api.sizeColumnsToFit();\n }\n }\n\n private handlePageSize() {\n const pagingPanel =\n this.ref.nativeElement.querySelector('.ag-paging-panel');\n\n const select = document.createElement('select');\n\n select.addEventListener('change', (e: any) => {\n this.gridApi.paginationSetPageSize(Number(e.target.value));\n this.gridApi.setCacheBlockSize(Number(e.target.value));\n });\n\n const option1 = document.createElement('option');\n\n option1.setAttribute('value', '10');\n\n option1.textContent = '10';\n\n const option2 = document.createElement('option');\n\n option2.setAttribute('value', '20');\n\n option2.textContent = '20';\n\n select.appendChild(option1);\n\n select.appendChild(option2);\n\n select.value = '20';\n\n select.style.backgroundColor = 'white';\n\n select.style.color = 'gray';\n\n select.style.padding = '2px';\n\n select.style.border = '1px solid gray';\n\n select.style.borderRadius = '4px';\n\n pagingPanel.appendChild(select);\n }\n\n // private headerHeightSetter() {\n // const padding = 20;\n // const height = this.headerHeightGetter() + padding;\n // this.gridApi.setHeaderHeight(height);\n // }\n\n // private headerHeightGetter() {\n // const columnHeaderTexts = [\n // ...(document.querySelectorAll('.ag-header-cell-text') as any),\n // ];\n\n // const clientHeights = columnHeaderTexts.map(\n // (headerText) => headerText.clientHeight\n // );\n // const tallestHeaderTextHeight = Math.max(...clientHeights);\n\n // return tallestHeaderTextHeight;\n // }\n}\n","<div class=\"ax-grid-toolbar\" *ngIf=\"toolbar\">\n <ng-content select=\"ax-toolbar\"></ng-content>\n</div>\n<!-- [enableSorting]=\"true\" [enableColResize]=\"true\" [enableFilter]=\"allowFiltering\" -->\n\n<ag-grid-angular\n *ngIf=\"gridView\"\n class=\"ag-theme-balham\"\n [getRowClass]=\"internalGetRowClass\"\n [suppressCopyRowsToClipboard]=\"true\"\n [enableRangeSelection]=\"enableRangeSelection\"\n [serverSideStoreType]=\"'partial'\"\n [style.height]=\"internalHeight\"\n [columnDefs]=\"columnDefs\"\n [enableRtl]=\"rtl\"\n [pagination]=\"pagination\"\n [rowGroupPanelShow]=\"rowGroupPanelShow\"\n [rowModelType]=\"rowModelType\"\n [detailRowHeight]=\"detailRowHeight\"\n [paginationAutoPageSize]=\"paginationAutoPageSize\"\n [paginationPageSize]=\"paginationPageSize\"\n [suppressMenuHide]=\"true\"\n [frameworkComponents]=\"frameworkComponents\"\n [isFullWidthCell]=\"isFullWidthCell\"\n [rowSelection]=\"selectionMode\"\n [rowMultiSelectWithClick]=\"rowMultiSelectWithClick\"\n [fullWidthCellRendererFramework]=\"fullWidthCellRendererFramework\"\n [cacheBlockSize]=\"cacheBlockSize\"\n [fullWidthCellRendererParams]=\"fullWidthCellRendererParams\"\n (columnResized)=\"handleColumnResized($event)\"\n (cellClicked)=\"internalGridCellClicked($event)\"\n (cellDoubleClicked)=\"internalGridCellDoubleClicked($event)\"\n (cellFocused)=\"internalGridCellFocused($event)\"\n (rowClicked)=\"internalGridRowClicked($event)\"\n (selectionChanged)=\"internalGridSelectionChanged($event)\"\n (rowSelected)=\"rowSelectionChanged($event)\"\n (rowDoubleClicked)=\"internalGridRowDoubleClicked($event)\"\n (gridReady)=\"internalGridReady($event)\"\n [groupSelectsChildren]=\"groupSelectsChildren\"\n [suppressRowClickSelection]=\"suppressRowClickSelection\"\n [groupSelectsFiltered]=\"true\"\n [suppressCellSelection]=\"suppressCellSelection\"\n [autoGroupColumnDef]=\"autoGroupColumnDef\"\n [suppressAggFuncInHeader]=\"true\"\n [treeData]=\"treeData\"\n [animateRows]=\"true\"\n [isServerSideGroup]=\"isServerSideGroup\"\n [getServerSideGroupKey]=\"getServerSideGroupKey\"\n [masterDetail]=\"masterDetail\"\n [detailCellRendererParams]=\"detailCellRendererParams\"\n [detailCellRenderer]=\"detailCellRenderer\"\n (gridSizeChanged)=\"internalGridSizeChanged($event)\"\n (firstDataRendered)=\"internalGridFirstDataRendered($event)\"\n [localeText]=\"localeText\"\n [groupHideOpenParents]=\"groupHideOpenParents\"\n [allowContextMenuWithControlKey]=\"false\"\n [getMainMenuItems]=\"getMainMenuItems\"\n>\n</ag-grid-angular>\n\n<!-- (displayedColumnsChanged)=\"displayedColumnsChanged($event)\" -->\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AXDataGridComponent } from './datagrid.component';\nimport { FormsModule } from '@angular/forms';\nimport { AgGridModule } from 'ag-grid-angular';\nimport { AXDataSourceModule } from '@acorex/components';\nimport { AXGridTextColumn, TextFilterRenderer } from './columns/text-column.component';\nimport { AXGridCheckColumn, BooleanRenderer, BooleanFilterRenderer } from './columns/check-column.component';\nimport { AXCoreModule } from '@acorex/core';\nimport { AXGridSelectionColumn } from './columns/selection-column.component';\nimport { CommandRenderer, AXGridCommandColumn } from './columns/command-column.component';\nimport { AXDataGridFilterComponent } from './filters/filter.component';\nimport { AXGridDateColumn, AXDatePickerFilterComponent } from './columns/date-column.component';\nimport { AXDataGridRowTemplateComponent, AXDataGridRowTemplateRenderer } from './templates/row-template.component';\nimport { AXDataGridCellTemplateComponent, AXDataGridCellTemplateRenderer } from './templates/cell-template.component';\nimport { AXDataGridDetailTemplateComponent, AXDataGridDetailTemplateRenderer } from './templates/detail-template.component';\nimport { AXTextBoxModule } from '@acorex/components';\nimport { AXCheckBoxModule } from '@acorex/components';\nimport { AXSelectBoxModule } from '@acorex/components';\nimport { AXButtonModule } from '@acorex/components';\nimport { AXDatePickerModule } from '@acorex/components';\nimport 'ag-grid-enterprise';\nimport { AXGridRowNumberColumn } from './columns/row-number-column.component';\n\n@NgModule({\n declarations: [\n AXDataGridComponent,\n AXGridTextColumn,\n AXGridCheckColumn,\n AXGridSelectionColumn,\n AXGridDateColumn,\n AXGridRowNumberColumn,\n AXGridCommandColumn,\n BooleanRenderer,\n BooleanFilterRenderer,\n TextFilterRenderer,\n AXDataGridFilterComponent,\n AXDataGridRowTemplateComponent,\n AXDataGridDetailTemplateComponent,\n AXDataGridRowTemplateRenderer,\n AXDataGridDetailTemplateRenderer,\n AXDataGridCellTemplateComponent,\n AXDataGridCellTemplateRenderer,\n AXDatePickerFilterComponent,\n CommandRenderer\n ],\n imports: [\n CommonModule,\n AXCoreModule,\n FormsModule,\n //AgGridModule,\n AXTextBoxModule,\n AXCheckBoxModule,\n AXSelectBoxModule,\n AXDataSourceModule,\n AXButtonModule,\n AXDatePickerModule,\n AgGridModule\n ],\n exports: [\n AXDataGridComponent,\n AXDataGridFilterComponent,\n AXDataGridRowTemplateComponent,\n AXDataGridDetailTemplateComponent,\n AXDataGridRowTemplateRenderer,\n AXDataGridDetailTemplateRenderer,\n AXDataGridCellTemplateComponent,\n AXDataGridCellTemplateRenderer,\n AXGridTextColumn,\n AXGridRowNumberColumn,\n AXGridCheckColumn,\n AXGridDateColumn,\n AXGridSelectionColumn,\n AXGridCommandColumn,\n BooleanRenderer,\n BooleanFilterRenderer,\n CommandRenderer\n ],\n providers: []\n})\nexport class AXDataGridModule { }\n","import { Component, ViewChild, ChangeDetectorRef, ElementRef } from '@angular/core';\nimport { AXDataGridComponent, AXDataGridSelectionChangeEvent } from '../../data-grid/datagrid.component';\nimport { AXGridDataColumn } from '../../data-grid/columns/column.component';\nimport { AXTranslator, AXButtonItem, AXConfig } from '@acorex/core';\nimport {\n AXToolbarSearchComponent,\n AXBasePopupPageComponent,\n AXMenuItemClickEvent,\n AXDataSourceComponent,\n AXDataSourceReadParams\n} from '@acorex/components';\n\n@Component({\n templateUrl: './data-lov-popup.component.html'\n})\nexport class AXDataLovPopupComponent extends AXBasePopupPageComponent {\n @ViewChild('grid', { static: true })\n grid: AXDataGridComponent;\n\n @ViewChild('searchBox')\n searchBox: AXToolbarSearchComponent;\n\n columns: AXGridDataColumn[] = [];\n\n selectedItems: any[] = [];\n\n keyField: string = '';\n allowNull: boolean = true;\n\n hasChildField: string;\n rtl: boolean = AXConfig.get('layout.rtl');\n\n selectedRows: any[] = [];\n pagination:boolean =true;\n constructor(private cdr: ChangeDetectorRef, private ref: ElementRef) {\n super();\n }\n\n dataSource: AXDataSourceComponent;\n\n selectionMode: string;\n\n ngOnInit(): void {\n if (this.rtl == null) {\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\n }\n }\n\n onDoneClick() {\n if (this.selectedItems) {\n this.close(this.selectedItems);\n } else {\n this.close();\n }\n }\n\n rowDoubleClicked(e) {\n if (this.selectionMode == 'single') {\n this.selectedItems = [];\n }\n\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] != e.data.data[this.keyField]);\n this.selectedItems.push(e.data.data);\n\n this.onDoneClick();\n }\n\n onCancelClick() {\n this.close();\n }\n\n rowSelectionChange(e) {\n if (e.data.node.selected == true) {\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] != e.data.node.data[this.keyField]);\n this.selectedItems.push(e.data.node.data);\n } else {\n if (this.allowNull == true || (this.allowNull == false && this.selectedItems.length > 1)) {\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] != e.data.node.data[this.keyField]);\n }\n }\n }\n\n ngAfterViewInit() {\n this.selectedItems.forEach((ele) => {\n this.selectedRows.push(ele);\n });\n this.searchBox.focus();\n if (this.dataSource.onDataReceived) {\n this.dataSource.onDataReceived.subscribe((arg) => {\n this.cdr.markForCheck();\n this.cdr.detectChanges();\n });\n }\n }\n\n // onValueSearchChanged(e) {\n\n // const params: AXDataSourceReadParams = {}\n // params.searchText = e.value;\n // // params.take = 100;\n // // params.skip = 0\n // this.dataSource.fetch(params);\n // }\n\n getFooterButtons(): AXButtonItem[] {\n return [\n {\n text: AXTranslator.get('common.confirm'),\n name: 'confirm',\n style: 'ax primary',\n icon: 'far fa-check-circle'\n },\n {\n text: AXTranslator.get('common.cancel'),\n name: 'cancel',\n style: 'ax light',\n icon: 'far fa-times'\n }\n ];\n }\n\n onFooterButtonClick(e: AXMenuItemClickEvent) {\n if (e.name === 'confirm') {\n this.onDoneClick();\n }\n if (e.name === 'cancel') {\n this.onCancelClick();\n }\n }\n}\n","<div style=\"height: 70vh; padding: 0.5em;\">\n <div style=\"height: calc(98%);\">\n\n <ax-data-grid [pagination]=\"pagination\" [rtl]=\"rtl\" [suppressRowClickSelection]=\"false\" [keyField]=\"keyField\"\n [hasChildField]=\"hasChildField\" [selectRow]=\"selectedItems\" #grid [columns]=\"columns\"\n [remoteOperation]=\"true\" [selectionMode]=\"selectionMode\" (rowDbClick)=\"rowDoubleClicked($event)\"\n (rowSelectionChange)=\"rowSelectionChange($event)\" [dataSource]=\"dataSource\">\n <ax-toolbar>\n <ax-toolbar-search #searchBox style=\"width: 100%;\"></ax-toolbar-search>\n </ax-toolbar>\n <ax-selection-column *ngIf=\"selectionMode== 'single'? false : true\"></ax-selection-column>\n <!-- <ax-data-source [provideData]=\"dataSource.provideData\">\n </ax-data-source> -->\n </ax-data-grid>\n </div>\n</div>","import {\n AXBaseInputComponent,\n AXBaseSizableComponent,\n AXDataEvent,\n AXDataSourceComponent,\n AXElementSize,\n AXPopupService,\n AXSelectBoxComponent,\n AXValidatableComponent,\n AXValidation,\n} from '@acorex/components';\nimport { AXConfig } from '@acorex/core';\nimport {\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXGridDataColumn } from '../data-grid/columns/column.component';\nimport { AXDataLovPopupComponent } from './data-lov-popup/data-lov-popup.component';\n\n@Component({\n selector: 'ax-lov',\n templateUrl: './data-lov.component.html',\n encapsulation: ViewEncapsulation.None,\n host: { style: 'width: 100%' },\n providers: [{ provide: AXValidatableComponent, useExisting: AXLOVComponent }],\n})\nexport class AXLOVComponent\n extends AXValidatableComponent\n implements AXBaseSizableComponent, AXBaseInputComponent\n{\n @ContentChild(AXValidation, { static: true })\n private _contentValidation: AXValidation;\n private _validation: AXValidation;\n\n @Input()\n public get validation(): AXValidation {\n return this._validation ? this._validation : this._contentValidation;\n }\n public set validation(v: AXValidation) {\n this._validation = v;\n }\n\n constructor(private popup: AXPopupService, private ref: ElementRef) {\n super();\n }\n\n @ViewChild('selectBox', { static: true })\n selectBox: AXSelectBoxComponent;\n\n @ContentChild(AXDataSourceComponent, { static: true })\n dataSource: AXDataSourceComponent;\n\n @ContentChildren(AXGridDataColumn)\n private columns: QueryList<AXGridDataColumn>;\n\n @ContentChild('itemTemplate', { static: true })\n rowTemplate: TemplateRef<any>;\n\n @Input()\n textField: string = '';\n\n @Input()\n allowSearch: boolean = true;\n\n @Input()\n valueField: string = '';\n\n @Input()\n hasChildField: string = 'null';\n\n @Input()\n allowNull: boolean = true;\n\n @Input()\n popupSize: 'sm' | 'md' | 'lg' | 'full' = 'md';\n\n @Input()\n pagination: boolean = true;\n @Input()\n selectedItems: any[] = [];\n\n // @Input()\n // selectedValues: any[] = [];\n\n @Input()\n readonly: boolean = false;\n\n @Input()\n disabled: boolean = false;\n\n @Input()\n chipsWidth: string = '';\n\n @Input()\n size: AXElementSize = 'md';\n\n @Input()\n caption: string;\n\n @Input()\n mode: 'single' | 'multiple' = 'single';\n\n @Input()\n placeholder: string;\n\n @Output()\n onSelectionChange: EventEmitter<AXDataEvent<any>> = new EventEmitter<\n AXDataEvent<any>\n >();\n\n @Input()\n rtl: boolean = AXConfig.get('layout.rtl');\n\n @Input() multiLine = false;\n\n focus(): void {\n this.selectBox.focus();\n }\n\n refresh() {\n this.selectBox.refresh();\n }\n\n handleButtonClick() {\n this.open();\n }\n\n ngOnInit(): void {\n if (this.rtl == null) {\n this.rtl =\n window\n .getComputedStyle(this.ref.nativeElement, null)\n .getPropertyValue('direction') === 'rtl';\n }\n // this.selectVal = this.selectedValues;\n this.onSelectionChange.subscribe((c) => {\n this.clearValidationStyle(this.ref.nativeElement);\n });\n }\n\n ngAfterContentInit(): void {\n this.initValidation(this.ref, 'selectedItems', this.validation);\n }\n\n handleSelectChange(e) {\n this.onSelectionChange.emit({\n data: this.selectedItems,\n component: this,\n htmlElement: this.ref.nativeElement,\n });\n }\n\n public open(): Promise<any> {\n return new Promise((resolve) => {\n this.selectBox.dropdown.close();\n this.popup\n .open(AXDataLovPopupComponent, {\n size: this.popupSize,\n // closable: false,\n data: {\n dataSource: this.dataSource,\n selectionMode: this.mode,\n columns: this.columns.toArray(),\n // selectedItems: this.selectedValues,\n selectedItems: this.selectedItems,\n keyField: this.valueField,\n allowNull: this.allowNull,\n hasChildField: this.hasChildField,\n rtl: this.rtl,\n pagination: this.pagination,\n },\n title: this.caption,\n // size: this.size,\n })\n .then((c) => {\n if (c.data) {\n // this.selectedValues = [];\n this.selectedItems = [];\n c.data.forEach((elm) => {\n this.selectedItems.push(elm);\n });\n // this.selectedItems = c.data;\n // this.selectBox.refresh();\n this.onSelectionChange.emit({\n data: this.selectedItems,\n component: this,\n htmlElement: this.ref.nativeElement,\n });\n if (resolve) {\n resolve(c.data);\n }\n } else {\n if (resolve) {\n resolve(this.selectedItems);\n }\n }\n\n this.selectBox.refresh();\n });\n });\n }\n}\n","<ax-select-box\n [rowInputTemplate]=\"rowTemplate\"\n [multiLine]=\"multiLine\"\n [rtl]=\"rtl\"\n [allowSearch]=\"allowSearch\"\n #selectBox\n [showDropDownButton]=\"false\"\n [allowNull]=\"allowNull\"\n [remoteOperation]=\"true\"\n [placeholder]=\"placeholder\"\n [size]=\"size\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [disabled]=\"disabled\"\n [mode]=\"mode\"\n [(selectedItems)]=\"selectedItems\"\n (selectionChanged)=\"handleSelectChange($event)\"\n [dataSource]=\"dataSource\"\n>\n <ng-container start>\n <ng-content select=\"[start]\"> </ng-content>\n </ng-container>\n <ng-container end>\n <ax-button\n icon=\"far fa-bars icon\"\n [disabled]=\"disabled\"\n type=\"light blank\"\n (click)=\"handleButtonClick()\"\n end\n [tabIndex]=\"-1\"\n >\n </ax-button>\n <ng-content select=\"[end]\"> </ng-content>\n </ng-container>\n</ax-select-box>\n\n<!-- <ax-select-box2 [rtl]=\"rtl\" [allowSearch]=\"allowSearch\" #selectBox [showDropDownButton]=\"false\" [allowNull]=\"allowNull\"\n [remoteOperation]=\"true\" [placeholder]=\"placeholder\" [size]=\"size\" [textField]=\"textField\" [valueField]=\"valueField\"\n [disabled]=\"disabled\" [selectionMode]=\"mode\" (onValueChanged)=\"handleSelectChange($event)\" [dataSource]=\"dataSource\"\n [(value)]=\"selectedItems\" selectionDataMode=\"item\">\n <ng-container start>\n <ng-content select=\"[start]\">\n </ng-content>\n </ng-container>\n <ng-container end>\n <ax-button icon=\"far fa-bars icon\" [disabled]=\"disabled\" type=\"primary blank\" (click)=\"handleButtonClick()\" end\n [tabIndex]=\"-1\">\n </ax-button>\n <ng-content select=\"[end]\">\n </ng-content>\n </ng-container>\n</ax-select-box2> -->\n\n<!-- <div class=\"ax-lov-box\" [style.display]=\"mode=='hidden' ? 'none':'unset'\">\n <div class=\"ax-field-set\">\n <div class=\"ax-field-set-wrapper\" [ngClass]=\"{ 'no-label': !label }\">\n <fieldset [ngClass]=\"{ 'input-focused': isFocused, 'input-error': errorText }\">\n <legend *ngIf=\"label\">\n {{ label }}\n </legend>\n </fieldset>\n <input type=\"text\" [(ngModel)]=\"text\" [placeholder]=\"placeholder\" (keyup)=\"handleKeyEvent($event)\"\n (blur)=\"handleBlurEvent($event)\" (focus)=\"handleFocusEvent($event)\" class=\"ax-text-box\" disabled />\n <div class=\"ax-field-set-button\">\n <button *ngIf=\"text && allowClear\" type=\"button\" class=\"btn btn-light\" (click)=\"clearText()\">\n <i class=\"far fa-times\"></i>\n </button>\n <button type=\"button\" class=\" btn btn-primary\" (click)=\"handleButtonClick($event)\">\n <i class=\"far fa-check-circle\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"validation-text\" *ngIf=\"errorText\">\n {{ errorText }}\n </div>\n\n</div> -->\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AXLOVComponent } from './data-lov.component';\nimport { FormsModule } from '@angular/forms';\nimport { AXDataLovPopupComponent } from './data-lov-popup/data-lov-popup.component';\nimport { AXDataGridModule } from '../data-grid/datagrid.module';\nimport { AXDataSourceModule, AXButtonModule, AXToolbarModule, AXSearchBoxModule, AXSelectBoxModule } from '@acorex/components';\n\n\n@NgModule({\n declarations: [AXLOVComponent, AXDataLovPopupComponent],\n imports: [CommonModule, FormsModule, AXDataGridModule, AXDataSourceModule, AXButtonModule, AXToolbarModule, AXSelectBoxModule, AXSearchBoxModule],\n exports: [AXLOVComponent, AXDataLovPopupComponent],\n providers: []\n})\nexport class AXLOVModule { }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.AXDataGridFilterComponent","i2.AXDataGridComponent","i3.AXGridSelectionColumn","i4"],"mappings":"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"}
@@ -141,8 +141,6 @@ export declare class AXDataGridComponent {
141
141
  handleColumnResized(e: any): void;
142
142
  private performSizeColumnsToFit;
143
143
  private handlePageSize;
144
- private headerHeightSetter;
145
- private headerHeightGetter;
146
144
  static ɵfac: i0.ɵɵFactoryDeclaration<AXDataGridComponent, never>;
147
145
  static ɵcmp: i0.ɵɵComponentDeclaration<AXDataGridComponent, "ax-data-grid", never, { "paginationAutoPageSize": { "alias": "paginationAutoPageSize"; "required": false; }; "paginationPageSize": { "alias": "paginationPageSize"; "required": false; }; "remoteOperation": { "alias": "remoteOperation"; "required": false; }; "rowMultiSelectWithClick": { "alias": "rowMultiSelectWithClick"; "required": false; }; "suppressRowClickSelection": { "alias": "suppressRowClickSelection"; "required": false; }; "suppressCellSelection": { "alias": "suppressCellSelection"; "required": false; }; "sizeColumnsToFit": { "alias": "sizeColumnsToFit"; "required": false; }; "showCheckBox": { "alias": "showCheckBox"; "required": false; }; "floatingFilter": { "alias": "floatingFilter"; "required": false; }; "autoExpand": { "alias": "autoExpand"; "required": false; }; "rowSelectableConditionField": { "alias": "rowSelectableConditionField"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "pagination": { "alias": "pagination"; "required": false; }; "selectRow": { "alias": "selectRow"; "required": false; }; "rowGroupPanelShow": { "alias": "rowGroupPanelShow"; "required": false; }; "loadOnInit": { "alias": "loadOnInit"; "required": false; }; "enableRangeSelection": { "alias": "enableRangeSelection"; "required": false; }; "keyField": { "alias": "keyField"; "required": false; }; "hasChildField": { "alias": "hasChildField"; "required": false; }; "searchText": { "alias": "searchText"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "rowHeight": { "alias": "rowHeight"; "required": false; }; "dataSource": { "alias": "dataSource"; "required": false; }; "groupHideOpenParents": { "alias": "groupHideOpenParents"; "required": false; }; "rowClass": { "alias": "rowClass"; "required": false; }; "rtl": { "alias": "rtl"; "required": false; }; }, { "columnsChange": "columnsChange"; "cellClick": "cellClick"; "cellDbClick": "cellDbClick"; "cellFocuse": "cellFocuse"; "rowClick": "rowClick"; "rowDbClick": "rowDbClick"; "selectionChanged": "selectionChanged"; "rowSelectionChange": "rowSelectionChange"; "onRowSelectionChanged": "onRowSelectionChanged"; }, ["searchInput", "toolbar", "rowTemplate", "gridDetailTemplate", "_contentDataSource", "_inlineColumns"], ["ax-toolbar"], false, never>;
148
146
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex/data-grid",
3
- "version": "6.6.8",
3
+ "version": "6.6.9",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^16.2.0",
6
6
  "@angular/core": "^16.2.0",